tapline-host 1.4.0 → 1.6.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 (122) hide show
  1. package/dist/accounts.d.ts +72 -0
  2. package/dist/accounts.js +208 -0
  3. package/dist/accounts.js.map +1 -0
  4. package/dist/actionlog.d.ts +20 -0
  5. package/dist/actionlog.js.map +1 -1
  6. package/dist/animations.d.ts +39 -0
  7. package/dist/animations.js +124 -0
  8. package/dist/animations.js.map +1 -0
  9. package/dist/api.d.ts +43 -0
  10. package/dist/api.js +154 -0
  11. package/dist/api.js.map +1 -0
  12. package/dist/audit.d.ts +3 -0
  13. package/dist/audit.js +1 -1
  14. package/dist/audit.js.map +1 -1
  15. package/dist/bin.d.ts +2 -0
  16. package/dist/bin.js +19 -0
  17. package/dist/bin.js.map +1 -0
  18. package/dist/brief.d.ts +41 -0
  19. package/dist/brief.js +78 -0
  20. package/dist/brief.js.map +1 -0
  21. package/dist/cli.d.ts +41 -1
  22. package/dist/cli.js +100 -53
  23. package/dist/cli.js.map +1 -1
  24. package/dist/conditions.d.ts +36 -0
  25. package/dist/conditions.js +67 -0
  26. package/dist/conditions.js.map +1 -0
  27. package/dist/confirm.d.ts +21 -2
  28. package/dist/confirm.js +39 -6
  29. package/dist/confirm.js.map +1 -1
  30. package/dist/dispatch.d.ts +27 -0
  31. package/dist/dispatch.js +114 -0
  32. package/dist/dispatch.js.map +1 -0
  33. package/dist/doctor.d.ts +5 -0
  34. package/dist/doctor.js +20 -0
  35. package/dist/doctor.js.map +1 -1
  36. package/dist/drive.d.ts +184 -0
  37. package/dist/drive.js +908 -0
  38. package/dist/drive.js.map +1 -0
  39. package/dist/elicit.d.ts +90 -0
  40. package/dist/elicit.js +179 -0
  41. package/dist/elicit.js.map +1 -0
  42. package/dist/format.d.ts +16 -0
  43. package/dist/format.js +81 -24
  44. package/dist/format.js.map +1 -1
  45. package/dist/images.d.ts +35 -0
  46. package/dist/images.js +76 -6
  47. package/dist/images.js.map +1 -1
  48. package/dist/inspect.d.ts +1 -0
  49. package/dist/journey.d.ts +276 -0
  50. package/dist/journey.js +368 -0
  51. package/dist/journey.js.map +1 -0
  52. package/dist/journeyexport.d.ts +58 -0
  53. package/dist/journeyexport.js +318 -0
  54. package/dist/journeyexport.js.map +1 -0
  55. package/dist/journeygif.d.ts +62 -0
  56. package/dist/journeygif.js +192 -0
  57. package/dist/journeygif.js.map +1 -0
  58. package/dist/journeyreport.d.ts +202 -0
  59. package/dist/journeyreport.js +666 -0
  60. package/dist/journeyreport.js.map +1 -0
  61. package/dist/mapcmd.d.ts +200 -0
  62. package/dist/mapcmd.js +412 -0
  63. package/dist/mapcmd.js.map +1 -0
  64. package/dist/mapfile.d.ts +155 -0
  65. package/dist/mapfile.js +575 -0
  66. package/dist/mapfile.js.map +1 -0
  67. package/dist/mcp.d.ts +14 -11
  68. package/dist/mcp.js +50 -318
  69. package/dist/mcp.js.map +1 -1
  70. package/dist/media.d.ts +88 -0
  71. package/dist/media.js +263 -0
  72. package/dist/media.js.map +1 -0
  73. package/dist/nochange.d.ts +77 -0
  74. package/dist/nochange.js +77 -0
  75. package/dist/nochange.js.map +1 -0
  76. package/dist/places.d.ts +239 -0
  77. package/dist/places.js +823 -0
  78. package/dist/places.js.map +1 -0
  79. package/dist/policy.d.ts +18 -0
  80. package/dist/policy.js +52 -0
  81. package/dist/policy.js.map +1 -1
  82. package/dist/protocol.d.ts +27 -1
  83. package/dist/protocol.js +25 -0
  84. package/dist/protocol.js.map +1 -1
  85. package/dist/reflexes.d.ts +59 -0
  86. package/dist/reflexes.js +133 -0
  87. package/dist/reflexes.js.map +1 -0
  88. package/dist/report.d.ts +32 -2
  89. package/dist/report.js +154 -9
  90. package/dist/report.js.map +1 -1
  91. package/dist/routes.d.ts +115 -0
  92. package/dist/routes.js +287 -0
  93. package/dist/routes.js.map +1 -0
  94. package/dist/run.d.ts +28 -1
  95. package/dist/run.js +32 -3
  96. package/dist/run.js.map +1 -1
  97. package/dist/runtime.d.ts +60 -0
  98. package/dist/runtime.js +255 -0
  99. package/dist/runtime.js.map +1 -0
  100. package/dist/script.d.ts +114 -10
  101. package/dist/script.js +30 -2
  102. package/dist/script.js.map +1 -1
  103. package/dist/server.d.ts +48 -2
  104. package/dist/server.js +88 -13
  105. package/dist/server.js.map +1 -1
  106. package/dist/thincall.d.ts +13 -0
  107. package/dist/thincall.js +335 -0
  108. package/dist/thincall.js.map +1 -0
  109. package/dist/tool-text-data.d.ts +10 -5
  110. package/dist/tool-text-data.js +11 -6
  111. package/dist/tool-text-data.js.map +1 -1
  112. package/dist/tool-text.d.ts +1 -1
  113. package/dist/tools.d.ts +585 -5
  114. package/dist/tools.js +2926 -185
  115. package/dist/tools.js.map +1 -1
  116. package/dist/uxcheck.d.ts +103 -0
  117. package/dist/uxcheck.js +128 -0
  118. package/dist/uxcheck.js.map +1 -0
  119. package/package.json +3 -2
  120. package/skills/tapline/SKILL.md +57 -11
  121. package/skills/tapline/references/personas.md +45 -0
  122. package/skills/tapline/references/setup.md +6 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive.js","sourceRoot":"","sources":["../src/drive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AAEzF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAiF,MAAM,aAAa,CAAC;AACxJ,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAsD,MAAM,eAAe,CAAC;AACpH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAkB,MAAM,aAAa,CAAC;AAyBlG,oFAAoF;AACpF,SAAS,SAAS,CAAC,IAAe;IAChC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACtK,CAAC;AAED,8FAA8F;AAC9F,SAAS,QAAQ,CAAC,IAAkB,EAAE,EAAoB,EAAE,IAAY;IACtE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACvJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,IAAkB,EAAE,EAAyC,EAAE,OAAoB;IACtH,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,IAAI,OAAO,CAAC,EAAE,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAChE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3G,CAAC;IACD,IAAI,OAAO,CAAC,EAAE,KAAK,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACtD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACrD,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACnF,kGAAkG;IAClG,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;IACrH,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IACnI,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAkB,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1J,OAAO;QACL,EAAE,EAAE,MAAM;QACV,KAAK;QACL,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpG,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;KACnE,CAAC;AACJ,CAAC;AAwFD,oFAAoF;AACpF,MAAM,UAAU,cAAc,CAAC,IAAe;IAC5C,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;QAAE,OAAO,4DAA4D,CAAC;IAChI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK;QAAE,OAAO,2EAA2E,CAAC;IAC/J,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6BAA6B;AAE7B,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IAC7C,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;SACtI,QAAQ,EAAE;SACV,KAAK,CAAC,SAAS,CAAC;CACpB,CAAC,CAAC;AAEH,qHAAqH;AACrH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC5C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IACpC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;IACxD,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1J,CAAC;AAED,WAAW;AAEX,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,GAAW,EAAE,IAAY,EAAU,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAChG,MAAM,OAAO,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE5E,SAAS,WAAW,CAAC,MAAsB,EAAE,KAAwB,EAAE,IAAI,GAAG,KAAK;IACjF,mGAAmG;IACnG,IAAI,IAAI;QAAE,OAAO,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,kHAAkH;IAClH,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK,CAAC;IAC1E,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1D,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,CAAC;IACnC,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,sDAAsD;AACtD,SAAS,SAAS,CAAC,IAAa,EAAE,IAAI,GAAG,KAAK;IAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACtB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,KAAK;YACR,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;QAC5D,KAAK,YAAY;YACf,OAAO,aAAa,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;QACnE,KAAK,QAAQ;YACX,OAAO,SAAS,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;QAC/D,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QACnE;YACE,OAAO,eAAe,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,OAAe,EAAkB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;AACnG,MAAM,MAAM,GAAG,CAAC,OAAe,EAAkB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAEpH,SAAS,WAAW,CAAC,MAAsB,EAAE,KAAe;IAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IACtC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC5D,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AAC9G,CAAC;AAED,2BAA2B;AAE3B,MAAM,OAAO,GAAG,oCAAoC,CAAC;AAIrD,SAAS,MAAM,CAAC,MAAmC;IACjD,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;IAC1D,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAC/D,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5D,IAAI,OAAO,MAAM,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IACtG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,MAA8B;IACnE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AACzE,CAAC;AAED,+GAA+G;AAC/G,SAAS,KAAK,CAAC,IAAU,EAAE,MAA8B,EAAE,KAAwB,EAAE,IAAI,GAAG,KAAK;IAC/F,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,KAAK,CAAC;QACX,KAAK,YAAY,CAAC;QAClB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,wBAAwB,EAAE,CAAC;YAC9E,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,uEAAuE,EAAE,CAAC;YAC5H,kIAAkI;YAClI,IAAI,IAAoC,CAAC;YACzC,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;gBACzB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;gBAC1E,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC;YAClB,CAAC;;gBAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,wBAAwB,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;YACnG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;QAC7L,CAAC;QACD,KAAK,MAAM;YACT,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAChE,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,sBAAsB,EAAE,CAAC;YAC9E,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,kBAAkB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACzF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;QACxF,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YACjD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,8BAA8B,EAAE,CAAC;YAC5I,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxI,CAAC;QACD;YACE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,0BAA0B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACtE,CAAC;AACH,CAAC;AAED,2HAA2H;AAC3H,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAoB,EAAS,EAAE,CAAC,CAAC;IACvD,EAAE,EAAE,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;IACvF,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;IACvF,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;IACnF,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;CACpF,CAAC,CAAC;AAEH,6EAA6E;AAC7E,SAAS,YAAY,CAAC,OAAoB;IACxC,MAAM,KAAK,GAAkC,EAAE,CAAC;IAChD,qFAAqF;IACrF,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC;QAC7E,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAC3E,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3F,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE;QAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC3F,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IACvF,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACvE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;IAChF,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+CAA+C;AAE/C,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAE9F,SAAS,YAAY,CAAC,CAAS,EAAE,CAAS;IACxC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChG,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,KAAK,CAAC,CAAS,EAAE,CAAS;IACjC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACvF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAoC,EACpC,QAAuB,EACvB,IAAiF,EACjF,IAAI,GAAG,KAAK;IAEZ,MAAM,KAAK,GAAmC,EAAE,CAAC;IACjD,8HAA8H;IAC9H,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3E,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,CAAC,OAAoB,EAAW,EAAE,CAC/C,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IACjL,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpH,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,CAAC,OAAO,EAAE,EAAE,CACV,MAAM,CAAC,OAAO,CAAC;QACf,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAClC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC9G,CAAC;IACF,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrE,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,OAAoB,EAAU,EAAE;IACjD,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI;QAAE,OAAO,MAAM,OAAO,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;AAC3G,CAAC,CAAC;AAeF,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5G,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,4IAA4I;AAC5I,MAAM,YAAY,GAAwB,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;AAEvG,SAAS,YAAY,CAAC,IAAY,EAAE,OAAe,EAAE,GAAQ,EAAE,IAAY;IACzE,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,2BAA2B,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,OAAO,4BAA4B,CAAC;IACpJ,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;AACtF,CAAC;AAID,yHAAyH;AACzH,KAAK,UAAU,OAAO,CAAC,GAAkB,EAAE,GAAQ,EAAE,IAAY,EAAE,GAAiB,EAAE,MAAc;IAClG,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IACD,IAAI,KAAK;QAAE,OAAO,YAAY,CAAC,gBAAgB,EAAE,4DAA4D,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1H,OAAO,MAAM,CAAC,WAAW,EAAE,yCAAyC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,OAAe;IAChD,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,yBAAyB,CAAC;IAC3D,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,iDAAiD,CAAC;IACnF,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,2DAA2D,CAAC;IACzF,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,4BAA4B,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAC;AAC9H,CAAC;AAED,qFAAqF;AACrF,SAAS,aAAa,CAAC,MAAsB,EAAE,IAAY;IACzD,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IACtC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC5D,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AAChG,CAAC;AAED,8CAA8C;AAC9C,SAAS,eAAe,CAAC,MAAsB,EAAE,KAAe;IAC9D,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;IACtC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC5D,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AACpG,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAkB,EAAE,IAAe,EAAE,EAAiB;IAClF,MAAM,KAAK,GAAG,IAAI,CAAC,IAA0B,CAAC;IAC9C,+EAA+E;IAC/E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC;IACvC,CAAC;IACD,OAAO,SAAS,CAAC,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACzG,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAkB,EAAE,IAAe,EAAE,EAAkB;IACxF,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACvE,CAAC;AAED,2GAA2G;AAC3G,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,IAAe,EAAE,EAA6B;IACjF,qEAAqE;IACrE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IACzG,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAc,EAAE,IAAI,CAAC,CAAC;IACzD,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,oBAAoB,IAAI,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;IAC7H,OAAO,eAAe,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAkB,EAAE,IAAe,EAAE,EAA6B,EAAE,KAAc;IACzG,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1G,CAAC;AACH,CAAC;AAED,yGAAyG;AACzG,MAAM,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;AAEpD,kGAAkG;AAClG,SAAS,UAAU,CAAC,MAAc,EAAE,IAAY;IAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;IAC1D,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACd,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,GAAG,EAAE;QACV,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG;YAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtF,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,UAAU,IAAI,4EAA4E,CAAC;AAE3I,KAAK,UAAU,MAAM,CAAC,GAAkB,EAAE,IAAe,EAAE,EAA6B,EAAE,KAAc;IACtG,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IACpB,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IACzB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,OAAe,EAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACjI,6FAA6F;IAC7F,MAAM,QAAQ,GAAG,CAAC,IAAY,EAA2B,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjI,IAAI,EAAE,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC,aAAa,EAAE,mJAAmJ,CAAC,CAAC;IACjL,CAAC;IAED,qGAAqG;IACrG,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChI,IAAI,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,WAAW,EAAE,mBAAmB,EAAE,0BAA0B,CAAC,CAAC;IACtH,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;IAEzF,6FAA6F;IAC7F,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,IAAI,GAAiB,KAAK,CAAC,KAAK,CAAC;IACrC,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC;QACjC,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACjG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAClF,CAAC;IAED,cAAc;IACd,MAAM,OAAO,GAAgB,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACtH,0EAA0E;IAC1E,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;IAChC,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,OAAO,IAAI,IAAI;QAAE,OAAO,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACxF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,UAAU,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC1G,CAAC;IACD,2FAA2F;IAC3F,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;YAAE,SAAS;QAC9D,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAClF,IAAI,CAAC,KAAK,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACxE,CAAC;IAED,SAAS;IACT,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,EAAc;QACtB,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;QACjB,OAAO,EAAE,EAAc;QACvB,WAAW,EAAE,CAAC;QACd,OAAO,EAAE,EAAc;QACvB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;KACZ,CAAC;IACF,oFAAoF;IACpF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,KAAK,GAAyB,IAAI,CAAC,QAAQ,CAAC;IAChD,IAAI,OAA6B,CAAC;IAClC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,0BAA0B,IAAI,8BAA8B,CAAC,CAAC;IAEzK,MAAM,MAAM,GAAW,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAC1D,oDAAoD;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC;QAClH,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;QAC1G,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,SAAS,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3J,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;IAChG,CAAC,CAAC;IAEF,SAAS,CAAC;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM;YACjC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAClC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,iCAAiC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,6BAA6B,CAAC;gBAChH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,oBAAoB,OAAO,EAAE,CAAC,EAAE,CAAC;YAClG,CAAC;YACD,MAAM,GAAG,GAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACpD,MAAM,QAAQ,GAAG,KAAK,IAAsB,EAAE;gBAC5C,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACnE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnB,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACnC,IAAI,KAAK,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAC9B,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC;gBACtB,OAAO,GAAG,SAAS,CAAC;gBACpB,KAAK,GAAG,IAAI,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;YAEF,+GAA+G;YAC/G,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI,EAAE,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO,MAAM,CAAC,WAAW,EAAE,6BAA6B,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzH,OAAO,GAAG,SAAS,CAAC;gBACpB,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAChE,IAAI,KAAK,KAAK,IAAI;oBAAE,OAAO,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACtG,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3D,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;oBACrG,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpD,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,6BAA6B,CAAC;oBAC7J,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACnI,CAAC;gBACD,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBAChC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC3C,IAAI,OAAO,KAAK,IAAI;oBAAE,OAAO,MAAM,CAAC,WAAW,EAAE,6DAA6D,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAClI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBACzB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;oBAAE,OAAO,MAAM,CAAC,WAAW,EAAE,oCAAoC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC1H,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,OAAO,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAEvE,wDAAwD;YACxD,IAAI,OAAgC,CAAC;YACrC,IAAI,QAA2D,CAAC;YAChE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;gBAC7B,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ;oBAAE,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;qBACnE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC7B,IAAI,MAAM,QAAQ,EAAE,EAAE,CAAC;wBACrB,CAAC,EAAE,CAAC;wBACJ,SAAS;oBACX,CAAC;oBACD,OAAO,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBACnD,CAAC;gBACD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;oBAC7D,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBACnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;wBAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;yBAChE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;wBAAE,OAAO,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;yBACjG,CAAC;wBACJ,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;wBAC1J,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;4BACnB,IAAI,MAAM,QAAQ,EAAE,EAAE,CAAC;gCACrB,CAAC,EAAE,CAAC;gCACJ,SAAS;4BACX,CAAC;4BACD,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;4BAC5C,OAAO,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC7E,CAAC;wBACD,OAAO,GAAG,KAAK,CAAC;wBAChB,QAAQ,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC3E,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,GAAG,SAAS,CAAC;YACpB,KAAK,GAAG,IAAI,CAAC;YAEb,sEAAsE;YACtE,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACpD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAG,WAAW,EAAE,IAAI,CAAC;YACnC,MAAM,SAAS,GAAG,QAAQ,KAAK,SAAS,IAAI,WAAW,EAAE,OAAO,KAAK,IAAI,IAAI,WAAW,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC/K,MAAM,QAAQ,GAAG,SAAS,EAAE,EAAE,KAAK,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACjI,MAAM,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7F,0FAA0F;YAC1F,MAAM,QAAQ,GAAG,SAAS,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAE5I,MAAM,OAAO,GAAG,OAAO,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/F,0GAA0G;YAC1G,MAAM,MAAM,GACV,OAAO,KAAK,IAAI;gBACd,CAAC,CAAC,IAAI,IAAI,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ;oBACzC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACpD,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;gBAC5C,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;YACnB,MAAM,KAAK,GAAG,SAAS,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAChF,MAAM,IAAI,GAAc;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM;gBACN,GAAG,CAAC,SAAS,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzC,GAAG,CAAC,SAAS,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrG,SAAS;gBACT,EAAE,EAAE,OAAO;aACZ,CAAC;YACF,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;gBAChK,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChH,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,aAAa,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACjK,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7B,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,QAAQ,EAAE,CAAC,EAAE,CAAC;oBACzE,CAAC,EAAE,CAAC;oBACJ,SAAS;gBACX,CAAC;gBACD,iFAAiF;gBACjF,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;oBAAE,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClJ,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtC,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;wBAAE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC9E,OAAO,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC3F,CAAC;gBACD,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;oBAAE,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtG,MAAM,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,UAAU,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC;gBACjF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC,EAAE,CAAC;YACzG,CAAC;YACD,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrC,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxD,IAAI,OAAO;gBAAE,GAAG,CAAC,KAAK,EAAE,CAAC;iBACpB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK;gBAAE,GAAG,CAAC,IAAI,EAAE,CAAC;;gBACzC,GAAG,CAAC,MAAM,EAAE,CAAC;YAElB,+EAA+E;YAC/E,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC,WAAW,EAAE,6DAA6D,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAClI,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;gBAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC9D,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC1B,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5C,oGAAoG;gBACpG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;oBAAE,OAAO,MAAM,CAAC,WAAW,EAAE,0BAA0B,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAClH,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,WAAW,IAAI,CAAC,OAAO,IAAI,EAAE,KAAK,MAAM,CAAC;oBAAE,OAAO,MAAM,CAAC,WAAW,EAAE,oCAAoC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAClL,sFAAsF;gBACtF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpK,IAAI,OAAO,IAAI,KAAK;oBAAE,OAAO,MAAM,CAAC,WAAW,EAAE,oCAAoC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACzG,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBACnC,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;wBAAE,SAAS;oBACrG,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBACnF,IAAI,CAAC,KAAK,CAAC,EAAE;wBAAE,OAAO,MAAM,CAAC,WAAW,EAAE,oCAAoC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;oBAClG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC;gBACD,GAAG,CAAC,OAAO,EAAE,CAAC;gBACd,IAAI,OAAO;oBAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;oBAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,GAAG,KAAK,CAAC;gBACb,qDAAqD;gBACrD,WAAW,CAAC,KAAK,EAAE,CAAC;gBACpB,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,CAAC;YACD,8EAA8E;YAC9E,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,OAAO,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC3D,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;gBAC9H,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;YACrJ,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAE,GAAG,CAAC,WAAW,EAAE,CAAC;gBAC7C,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC;YAChD,CAAC;YACD,IAAI,OAAO;gBAAE,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;gBAC/B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,SAAS,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACzF,0HAA0H;YAC1H,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC1D,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACd,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC;oBACtB,OAAO,GAAG,SAAS,CAAC;oBACpB,KAAK,GAAG,IAAI,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,SAAS;YAAE,SAAS;QACxB,MAAM;IACR,CAAC;IAED,0BAA0B;IAC1B,uCAAuC;IACvC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACxJ,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9D,oDAAoD;IACpD,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACjG,MAAM,OAAO,GAAG,GAAG,EAAE,IAAI,GAAG,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IACtE,MAAM,IAAI,GAAG,cAAc,OAAO,GAAG,IAAI,GAAG,CAAC;IAC7C,MAAM,KAAK,GAAG;QACZ,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iCAAiC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC;QAC5G,GAAG,GAAG,CAAC,OAAO;QACd,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,2BAA2B,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;KAChC,CAAC;IACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC9F,CAAC;AAED,SAAS,UAAU,CAAC,IAAa,EAAE,OAAgB,EAAE,GAAW,EAAE,OAAiB;IACjF,IAAI,OAAO;QAAE,OAAO;IACpB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,+FAA+F;AAC/F,KAAK,UAAU,SAAS,CAAC,GAAkB,EAAE,KAAwB;IACnE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;AACvC,CAAC;AAED,4HAA4H;AAC5H,KAAK,UAAU,QAAQ,CAAC,GAAkB,EAAE,MAA+B,EAAE,KAAa;IACxF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAC1B,IAAI,QAAiC,CAAC;IACtC,SAAS,CAAC;QACR,IAAI,KAAK,GAAkB,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,GAAG,EAAE,CAAC;QACb,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACrB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC;YAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACrB,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;gBACnI,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC;YAC1E,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;;YAAM,QAAQ,GAAG,SAAS,CAAC;QAC5B,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,KAAK;YAAE,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAClK,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,gCAAgC;AAEhC,SAAS,YAAY,CAAC,IAAe,EAAE,GAAW,EAAE,IAAkB,EAAE,EAAyC,EAAE,IAAa;IAC9H,MAAM,IAAI,GAAa,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;QACpB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;QAChB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;QAClH,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;KAC5E,CAAC,CAAC,CAAC;IACJ,OAAO,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;AACjF,CAAC;AACD,KAAK,UAAU,kBAAkB,CAC/B,GAAkB,EAClB,KAAiC,EACjC,IAAkB,EAClB,MAA6C,EAC7C,EAA2B,EAC3B,IAAe;IAEf,IAAI,KAAK,KAAK,eAAe,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,QAAQ,CAAC;QAC7D,oDAAoD;QACpD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC;QACjD,MAAM,OAAO,GAAG,mEAAmE,KAAK,uBAAuB,CAAC;QAChH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,oBAAoB,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;IACzF,CAAC;IACD,MAAM,OAAO,GACX,EAAE,KAAK,MAAM;QACX,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,sGAAsG;QACtH,CAAC,CAAC,GAAG,CAAC,IAAI;YACR,CAAC,CAAC,mBAAmB,MAAM,CAAC,IAAI,qDAAqD;YACrF,CAAC,CAAC,qBAAqB,IAAI,EAAE,IAAI,IAAI,MAAM,OAAO,MAAM,CAAC,IAAI,qDAAqD,CAAC;IACzH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,oBAAoB,OAAO,EAAE,CAAC,EAAE,CAAC;AAClG,CAAC;AAcD,MAAM,aAAa,GAAG,0BAA0B,CAAC;AAEjD,oEAAoE;AACpE,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAI,IAA2B,CAAC,IAAI,CAAC;QAChD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QACxC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;gBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;AACrB,CAAC;AAID,gHAAgH;AAChH,MAAM,OAAO,GAAG,CAAC,KAA6E,EAAkB,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAEnL;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAkB,EAAE,EAAiB,EAAE,IAAY,EAAE,MAA8B,EAAE,OAA2B,EAAE,aAAsB;IAC5J,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,IAAI,0BAA0B,EAAE,CAAC;IACxH,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAChE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,OAAO,4BAA4B,KAAK,CAAC,IAAI,yDAAyD,EAAE,CAAC;IACxK,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACnF,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACxF,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACjF,wHAAwH;IACxH,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC1F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAkB,EAAE,EAAiB,EAAE,IAAe;IACrF,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClF,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAA0B,CAAC;IAC7C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC;IACvC,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,OAAO,IAAI,CAAC,mBAAmB,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,uBAAuB,CAAC,CAAC;IAC5H,CAAC;IACD,8FAA8F;IAC9F,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IACxD,IAAI,UAAU,GAAa,EAAE,CAAC;IAC9B,IAAI,YAAwC,CAAC;IAC7C,MAAM,GAAG,GAAG;QACV,IAAI,EAAE,KAAK,IAA4B,EAAE;YACvC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAChD,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAa,EAA0D,EAAE;YACvF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YACnI,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC1B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACtB,CAAC;YACD,oFAAoF;YACpF,YAAY,GAAG,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YAC7K,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAChD,CAAC;QACD,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;KACxD,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,qBAAqB,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/F,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,YAAY,IAAI,MAAM,CAAC,SAAS,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3G,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC;IAErC,qCAAqC;IACrC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;IACzB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,GAAW,EAAkB,EAAE,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC,GAAG,EAAE,oBAAoB,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACpH,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,0DAA0D,KAAK,CAAC,IAAI,iBAAiB,CAAC,CAAC;QACrH,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,IAAI,CACT,GAAG,CAAC,IAAI;gBACN,CAAC,CAAC,aAAa,KAAK,CAAC,IAAI,gDAAgD;gBACzE,CAAC,CAAC,aAAa,KAAK,CAAC,IAAI,+BAA+B,GAAG,CAAC,KAAK,CAAC,IAAI,YAAY,MAAM,aAAa,CACxG,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,IAAI,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;IACxC,MAAM,OAAO,GAAG,GAAG,KAAK,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IACtI,MAAM,IAAI,GAAG,WAAW,KAAK,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,GAAG,CAAC;IACnF,MAAM,IAAI,GAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IAC7H,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,IAAmB,EAAE,KAAa,EAAE,QAAiB;IAC7F,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5C,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,uBAAuB,KAAK,4CAA4C,KAAK,4BAA4B,EAAE,CAAC;IACrJ,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChJ,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,IAAI,OAAO,KAAK,qDAAqD,EAAE,CAAC;AACpI,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * AGENT-TOOLS 1.13 §11.3: the host's own dialog for a person's OK, through MCP elicitation. The dialog is drawn by
3
+ * the host and answered by the person; nothing the model writes can answer it.
4
+ */
5
+ export declare const OK_FIELD = "answer";
6
+ export declare const OK_ALLOW = "Allow once";
7
+ export declare const OK_DENY = "Don't allow";
8
+ /**
9
+ * The one form field: required, no default, so a host that accepts an empty form still can't produce an allow.
10
+ * Don't allow comes first, so a host that fills in the first choice by itself denies.
11
+ */
12
+ export interface ElicitSchema {
13
+ type: "object";
14
+ properties: Record<string, {
15
+ type: "string";
16
+ title: string;
17
+ enum: string[];
18
+ }>;
19
+ required: string[];
20
+ }
21
+ export declare const OK_SCHEMA: ElicitSchema;
22
+ /** AGENT-TOOLS 1.13 §11.5: the one field of a needs-a-person dialog. Can't now is first, as Don't allow is for an OK. */
23
+ export declare const DONE_FIELD = "answer";
24
+ export declare const DONE = "Done";
25
+ export declare const CANT_NOW = "Can't now";
26
+ export declare const DONE_SCHEMA: ElicitSchema;
27
+ export interface ElicitAnswer {
28
+ action: "accept" | "decline" | "cancel";
29
+ content?: Record<string, unknown>;
30
+ }
31
+ export interface ElicitClient {
32
+ /** True when the client said at initialize that it can show a form dialog. */
33
+ canShowForm(): boolean;
34
+ elicit(message: string, schema: ElicitSchema, signal: AbortSignal): Promise<ElicitAnswer>;
35
+ }
36
+ /** A person's OK is asked for up to this long, as long as the live view's request lives (§11.3). */
37
+ export declare const DIALOG_TTL_MS = 120000;
38
+ /** `unavailable`: the client answered an error before any choice (for example method not found): there is no dialog. */
39
+ export type OkAnswer = "allow" | "deny" | "aborted" | "unavailable";
40
+ export declare class Dialogs {
41
+ private readonly client;
42
+ private tail;
43
+ private readonly disabled;
44
+ private readonly ttlMs;
45
+ constructor(client: ElicitClient | undefined, options?: {
46
+ disabled?: boolean;
47
+ ttlMs?: number;
48
+ });
49
+ /** False with `--no-dialog`, with no client, or when the client can't show a form. */
50
+ available(): boolean;
51
+ /**
52
+ * Asks the person. One dialog at a time: a second request waits behind the first. `aborted` when the signal
53
+ * fired (the live view answered first) or the time ran out; only an accepted "Allow once" is `allow`.
54
+ */
55
+ askOk(caption: string, signal?: AbortSignal): Promise<OkAnswer>;
56
+ /**
57
+ * §11.5: tells the person what to do and waits for Done. Only an accepted "Done" is `done`; Can't now, a decline and
58
+ * a cancel are `cant`. `aborted` and `unavailable` are as for `askOk`.
59
+ */
60
+ askDone(message: string, signal?: AbortSignal): Promise<DoneAnswer>;
61
+ private queued;
62
+ private ask;
63
+ }
64
+ export type DoneAnswer = "done" | "cant" | "aborted" | "unavailable";
65
+ /** What `askDone` (the helper) tells its caller. `cleared` also covers the person saying Done: the caller checks again. */
66
+ export type MomentOutcome = "cleared" | "cant" | "expired" | "cancelled" | "no_dialog";
67
+ /**
68
+ * AGENT-TOOLS 1.13 §11.5: one needs-a-person moment. Tells the person through the dialog and waits until `cleared()`
69
+ * is true (then closes its own dialog), the person says Done (`cleared`: the caller checks the screen again) or
70
+ * Can't now, or the time runs out. Nothing a model writes can answer it. No dialog at all: `no_dialog`, at once.
71
+ */
72
+ export declare function askDone(dialogs: Dialogs, message: string, cleared: () => Promise<boolean> | boolean, options?: {
73
+ ttlMs?: number;
74
+ pollMs?: number;
75
+ signal?: AbortSignal;
76
+ }): Promise<MomentOutcome>;
77
+ /** App text as the dialog may show it: no control characters, no quote that could end ours, cut to 80 characters. */
78
+ export declare function plainText(value: string, max?: number): string;
79
+ /**
80
+ * The question, in the tool's own words: the policy word, the tool, the element's quoted text (or its role) and the
81
+ * app. Text from the app is cut and cleaned, so it can't write the question (§11.3).
82
+ * `Allow: tap "Delete trip" in Wayfare? (policy word "Delete")`
83
+ */
84
+ export declare function okCaption(v: {
85
+ word: string;
86
+ tool: string;
87
+ role: string;
88
+ text?: string;
89
+ app: string;
90
+ }): string;
package/dist/elicit.js ADDED
@@ -0,0 +1,179 @@
1
+ /**
2
+ * AGENT-TOOLS 1.13 §11.3: the host's own dialog for a person's OK, through MCP elicitation. The dialog is drawn by
3
+ * the host and answered by the person; nothing the model writes can answer it.
4
+ */
5
+ export const OK_FIELD = "answer";
6
+ export const OK_ALLOW = "Allow once";
7
+ export const OK_DENY = "Don't allow";
8
+ export const OK_SCHEMA = {
9
+ type: "object",
10
+ properties: { [OK_FIELD]: { type: "string", title: "Allow this touch?", enum: [OK_DENY, OK_ALLOW] } },
11
+ required: [OK_FIELD],
12
+ };
13
+ /** AGENT-TOOLS 1.13 §11.5: the one field of a needs-a-person dialog. Can't now is first, as Don't allow is for an OK. */
14
+ export const DONE_FIELD = "answer";
15
+ export const DONE = "Done";
16
+ export const CANT_NOW = "Can't now";
17
+ export const DONE_SCHEMA = {
18
+ type: "object",
19
+ properties: { [DONE_FIELD]: { type: "string", title: "Has it been done?", enum: [CANT_NOW, DONE] } },
20
+ required: [DONE_FIELD],
21
+ };
22
+ /** A person's OK is asked for up to this long, as long as the live view's request lives (§11.3). */
23
+ export const DIALOG_TTL_MS = 120_000;
24
+ export class Dialogs {
25
+ client;
26
+ tail = Promise.resolve();
27
+ disabled;
28
+ ttlMs;
29
+ constructor(client, options = {}) {
30
+ this.client = client;
31
+ this.disabled = options.disabled === true;
32
+ this.ttlMs = options.ttlMs ?? DIALOG_TTL_MS;
33
+ }
34
+ /** False with `--no-dialog`, with no client, or when the client can't show a form. */
35
+ available() {
36
+ return !this.disabled && this.client !== undefined && this.client.canShowForm();
37
+ }
38
+ /**
39
+ * Asks the person. One dialog at a time: a second request waits behind the first. `aborted` when the signal
40
+ * fired (the live view answered first) or the time ran out; only an accepted "Allow once" is `allow`.
41
+ */
42
+ askOk(caption, signal) {
43
+ return this.queued(async () => {
44
+ const answer = await this.ask(caption, OK_SCHEMA, signal);
45
+ if (answer === "aborted" || answer === "unavailable")
46
+ return answer;
47
+ return answer.action === "accept" && answer.content?.[OK_FIELD] === OK_ALLOW ? "allow" : "deny";
48
+ });
49
+ }
50
+ /**
51
+ * §11.5: tells the person what to do and waits for Done. Only an accepted "Done" is `done`; Can't now, a decline and
52
+ * a cancel are `cant`. `aborted` and `unavailable` are as for `askOk`.
53
+ */
54
+ askDone(message, signal) {
55
+ return this.queued(async () => {
56
+ const answer = await this.ask(message, DONE_SCHEMA, signal);
57
+ if (answer === "aborted" || answer === "unavailable")
58
+ return answer;
59
+ return answer.action === "accept" && answer.content?.[DONE_FIELD] === DONE ? "done" : "cant";
60
+ });
61
+ }
62
+ queued(run) {
63
+ const result = this.tail.then(run, run);
64
+ this.tail = result;
65
+ return result;
66
+ }
67
+ async ask(message, schema, signal) {
68
+ const client = this.client;
69
+ if (client === undefined || !this.available() || signal?.aborted === true)
70
+ return "aborted";
71
+ const own = new AbortController();
72
+ const stop = () => own.abort();
73
+ signal?.addEventListener("abort", stop, { once: true });
74
+ const timer = setTimeout(stop, this.ttlMs);
75
+ timer.unref?.();
76
+ // A client that ignores the abort must not hold the queue: the race ends the wait itself.
77
+ const gone = new Promise((resolve) => own.signal.addEventListener("abort", () => resolve("aborted"), { once: true }));
78
+ try {
79
+ const answer = await Promise.race([client.elicit(message, schema, own.signal), gone]);
80
+ return answer === "aborted" || own.signal.aborted ? "aborted" : answer;
81
+ }
82
+ catch {
83
+ // An error before any answer means this client has no dialog; a real decline or cancel is a result, not an error.
84
+ return own.signal.aborted ? "aborted" : "unavailable";
85
+ }
86
+ finally {
87
+ clearTimeout(timer);
88
+ signal?.removeEventListener("abort", stop);
89
+ }
90
+ }
91
+ }
92
+ /** Read again later: the signal may have fired since the first look. */
93
+ function isAborted(signal) {
94
+ return signal?.aborted === true;
95
+ }
96
+ /**
97
+ * AGENT-TOOLS 1.13 §11.5: one needs-a-person moment. Tells the person through the dialog and waits until `cleared()`
98
+ * is true (then closes its own dialog), the person says Done (`cleared`: the caller checks the screen again) or
99
+ * Can't now, or the time runs out. Nothing a model writes can answer it. No dialog at all: `no_dialog`, at once.
100
+ */
101
+ export async function askDone(dialogs, message, cleared, options = {}) {
102
+ if (!dialogs.available())
103
+ return "no_dialog";
104
+ const signal = options.signal;
105
+ if (signal?.aborted === true)
106
+ return "cancelled";
107
+ const check = async () => {
108
+ try {
109
+ return await cleared();
110
+ }
111
+ catch {
112
+ return false;
113
+ }
114
+ };
115
+ const first = await check();
116
+ // The caller may have cancelled while the first check ran.
117
+ if (isAborted(signal))
118
+ return "cancelled";
119
+ if (first)
120
+ return "cleared";
121
+ const own = new AbortController();
122
+ const stopOwn = () => own.abort();
123
+ signal?.addEventListener("abort", stopOwn, { once: true });
124
+ let outcome;
125
+ const finish = (value) => {
126
+ if (outcome === undefined)
127
+ outcome = value;
128
+ own.abort();
129
+ };
130
+ const ended = new Promise((resolve) => own.signal.addEventListener("abort", () => resolve(), { once: true }));
131
+ const timer = setTimeout(() => finish("expired"), options.ttlMs ?? DIALOG_TTL_MS);
132
+ timer.unref?.();
133
+ let polling = false;
134
+ const poll = setInterval(() => {
135
+ if (polling || outcome !== undefined)
136
+ return;
137
+ polling = true;
138
+ void check().then((now) => {
139
+ polling = false;
140
+ if (now)
141
+ finish("cleared");
142
+ });
143
+ }, options.pollMs ?? 500);
144
+ poll.unref?.();
145
+ void dialogs.askDone(message, own.signal).then((answer) => {
146
+ if (answer === "done")
147
+ finish("cleared");
148
+ else if (answer === "cant")
149
+ finish("cant");
150
+ else if (answer === "unavailable")
151
+ finish("no_dialog");
152
+ });
153
+ await ended;
154
+ clearTimeout(timer);
155
+ clearInterval(poll);
156
+ signal?.removeEventListener("abort", stopOwn);
157
+ return outcome ?? (isAborted(signal) ? "cancelled" : "expired");
158
+ }
159
+ const NOT_SHOWN = new RegExp("[\u0000-\u001f\u007f-\u009f\u00ad\u200b-\u200f\u2028-\u202e\u2060-\u2069\ufeff]", "g");
160
+ /** App text as the dialog may show it: no control characters, no quote that could end ours, cut to 80 characters. */
161
+ export function plainText(value, max = 80) {
162
+ const clean = value.replace(NOT_SHOWN, "").replace(/"/g, "'").trim();
163
+ const letters = [...clean];
164
+ return letters.length > max ? `${letters.slice(0, max - 1).join("")}…` : clean;
165
+ }
166
+ const VERBS = { tap: "tap", long_press: "long press", toggle: "toggle", swipe: "swipe" };
167
+ /**
168
+ * The question, in the tool's own words: the policy word, the tool, the element's quoted text (or its role) and the
169
+ * app. Text from the app is cut and cleaned, so it can't write the question (§11.3).
170
+ * `Allow: tap "Delete trip" in Wayfare? (policy word "Delete")`
171
+ */
172
+ export function okCaption(v) {
173
+ const verb = VERBS[v.tool] ?? v.tool.replace(/_/g, " ");
174
+ const text = v.text === undefined ? "" : plainText(v.text);
175
+ const what = text !== "" ? `"${text}"` : `the ${plainText(v.role, 30) || "element"}`;
176
+ const app = plainText(v.app) || "the app";
177
+ return `Allow: ${verb} ${what} in ${app}? (policy word "${plainText(v.word)}")`;
178
+ }
179
+ //# sourceMappingURL=elicit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elicit.js","sourceRoot":"","sources":["../src/elicit.ts"],"names":[],"mappings":"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"}
package/dist/format.d.ts CHANGED
@@ -14,6 +14,7 @@ export declare function actionsOf(element: Pick<TreeElement, "actions">): string
14
14
  export declare function formatElement(element: TreeElement, options?: {
15
15
  actions?: boolean;
16
16
  frame?: boolean;
17
+ eyes?: boolean;
17
18
  }): string;
18
19
  /** Rule 3: an old value over 40 characters, cut to what changed plus 12 characters each side. */
19
20
  export declare function shortWas(old: string, now: string, keep?: number, context?: number): string;
@@ -26,7 +27,12 @@ export declare function describeElement(element: TreeElement): string;
26
27
  export declare function formatTree(tree: TreeResult, app?: {
27
28
  name: string;
28
29
  id?: string;
30
+ }, options?: {
31
+ eyes?: boolean;
32
+ place?: string;
29
33
  }): string;
34
+ /** The off-screen count as a line of its own, for a brief new-screen answer: `(+41 below, +2 above)`; none when there is nothing off screen. */
35
+ export declare function offScreenLine(tree: TreeResult, eyes?: boolean): string[];
30
36
  /**
31
37
  * The off-screen lines that follow a full list, under `Changes off screen:`. Only for a full list that came because most of the
32
38
  * same screen changed: on another screen, or with nothing listed, the old off-screen elements are
@@ -39,7 +45,17 @@ export declare function formatOffScreenAfterList(tree: TreeResult): string[];
39
45
  */
40
46
  export declare function formatChanges(tree: TreeResult, options?: {
41
47
  alertGone?: boolean;
48
+ eyes?: boolean;
42
49
  }): string | null;
50
+ /** The change block in its parts, for a brief answer: the label, the header lines (never cut) and the change lines. */
51
+ export declare function changeParts(tree: TreeResult, options?: {
52
+ alertGone?: boolean;
53
+ eyes?: boolean;
54
+ }): {
55
+ label: string;
56
+ header: string[];
57
+ changes: string[];
58
+ } | null;
43
59
  /**
44
60
  * Lines for open alerts, the keyboard and requests in flight: things that block or explain the
45
61
  * screen, in §3.2's order. `keyboard` is the keyboard line's word: by default `shown` while it is up
package/dist/format.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { ANIMATIONS_LINE } from "./animations.js";
1
2
  /** How much of a text a line shows (AGENT-TOOLS v1.5). */
2
3
  const MAX_TEXT = 200;
3
4
  /**
@@ -112,15 +113,20 @@ export function formatElement(element, options = {}) {
112
113
  parts.push(kind);
113
114
  const text = element.text ?? "";
114
115
  const label = element.label ?? "";
115
- if (text !== "")
116
- parts.push(quoteText(element));
117
- else if (label !== "")
118
- parts.push(quote(label));
119
- if (text !== "" && label !== "" && label.toLowerCase() !== text.toLowerCase()) {
120
- parts.push(`label=${quote(label)}`);
116
+ if (options.eyes === true) {
117
+ parts.push(...userEyesName(kind, text, label, quoteText(element)));
121
118
  }
122
- if (element.testID !== null && element.testID !== undefined && element.testID !== "") {
123
- parts.push(`id=${element.testID}`);
119
+ else {
120
+ if (text !== "")
121
+ parts.push(quoteText(element));
122
+ else if (label !== "")
123
+ parts.push(quote(label));
124
+ if (text !== "" && label !== "" && label.toLowerCase() !== text.toLowerCase()) {
125
+ parts.push(`label=${quote(label)}`);
126
+ }
127
+ if (element.testID !== null && element.testID !== undefined && element.testID !== "") {
128
+ parts.push(`id=${element.testID}`);
129
+ }
124
130
  }
125
131
  if (element.value !== null && element.value !== undefined && element.value !== "") {
126
132
  parts.push(`value=${formatValue(element.value)}`);
@@ -144,9 +150,23 @@ export function formatElement(element, options = {}) {
144
150
  parts.push(`[${actions.join(", ")}]`);
145
151
  return parts.join(" ");
146
152
  }
153
+ /**
154
+ * What a person sees of an element's name (AGENT-TOOLS 1.12 §17.1): its visible text. A button, tab or link with none
155
+ * is `(icon only)`, and its accessibility label stands apart as `(VoiceOver: "…")`. Ids never show; a label that is
156
+ * not the visible text is not on the glass (an input's label is left out too: its placeholder shows).
157
+ */
158
+ function userEyesName(kind, text, label, quotedText) {
159
+ if (text !== "")
160
+ return [quotedText];
161
+ const tappable = kind === "button" || kind === "tab" || kind === "link";
162
+ const parts = tappable ? ["(icon only)"] : [];
163
+ if (label !== "" && kind !== "input")
164
+ parts.push(`(VoiceOver: ${quote(label)})`);
165
+ return parts;
166
+ }
147
167
  /** A `~` line's element (§13 rule 2): its position and actions only when they are among what changed. */
148
- function changedLine(element, was) {
149
- return formatElement(element, { frame: "frame" in was, actions: "actions" in was });
168
+ function changedLine(element, was, eyes = false) {
169
+ return formatElement(element, { frame: "frame" in was, actions: "actions" in was, eyes });
150
170
  }
151
171
  /** Rule 3: an old value over 40 characters, cut to what changed plus 12 characters each side. */
152
172
  export function shortWas(old, now, keep = 40, context = 12) {
@@ -189,26 +209,40 @@ const MAX_ELEMENTS = 200;
189
209
  * The whole screen as text (AGENT-TOOLS §3.2): the screen line, the app, route, alert and network
190
210
  * lines, then one line per element in tree order, up to 200.
191
211
  */
192
- export function formatTree(tree, app) {
212
+ export function formatTree(tree, app, options = {}) {
213
+ const eyes = options.eyes === true;
193
214
  const screen = tree.screen;
194
215
  const size = screen
195
216
  ? `${Math.round(screen.width)}x${Math.round(screen.height)} pt${screen.scale !== undefined ? ` @${screen.scale}x` : ""}`
196
217
  : "unknown size";
197
218
  const count = tree.elements.length;
198
- const lines = [`Screen ${size} · ${count} element${count === 1 ? "" : "s"}${formatOffScreen(tree.offScreen)}`];
219
+ const lines = [`Screen ${size} · ${count} element${count === 1 ? "" : "s"}${eyes ? formatGlassMore(tree.glass) : formatOffScreen(tree.offScreen)}`];
199
220
  if (app !== undefined)
200
221
  lines.push(`App: ${app.name}${app.id !== undefined ? ` (${app.id})` : ""}`);
201
- const route = formatRoute(tree.route);
222
+ // A route name is the app's own naming, not on the glass: a user's eyes don't get it (tree.route stays for the journey's measures).
223
+ const route = eyes ? null : formatRoute(tree.route);
202
224
  if (route !== null)
203
225
  lines.push(route);
226
+ // `Place:` (AGENT-TOOLS 1.13 §18.1) is a line of the header, after the route.
227
+ if (options.place !== undefined)
228
+ lines.push(options.place);
204
229
  lines.push(...formatStatus(tree));
205
230
  if (count === 0)
206
231
  return [...lines, "(nothing visible; the app may still be loading)"].join("\n");
207
- lines.push(...tree.elements.slice(0, MAX_ELEMENTS).map((element) => formatElement(element)));
232
+ lines.push(...tree.elements.slice(0, MAX_ELEMENTS).map((element) => formatElement(element, { eyes })));
208
233
  if (count > MAX_ELEMENTS)
209
234
  lines.push(`(+${count - MAX_ELEMENTS} more below; scroll)`);
210
235
  return lines.join("\n");
211
236
  }
237
+ /** In a user's eyes: ` (more below)` only where a view can really scroll further, no counts (AGENT-TOOLS 1.12 §17.1). */
238
+ function formatGlassMore(glass) {
239
+ const parts = [];
240
+ if (glass?.moreBelow === true)
241
+ parts.push("more below");
242
+ if (glass?.moreAbove === true)
243
+ parts.push("more above");
244
+ return parts.length > 0 ? ` (${parts.join(", ")})` : "";
245
+ }
212
246
  /** What lies off screen, for the screen line: ` (+41 below, +2 above)`, or nothing. Left and right aren't counted. */
213
247
  function formatOffScreen(offScreen) {
214
248
  const parts = [];
@@ -220,12 +254,21 @@ function formatOffScreen(offScreen) {
220
254
  }
221
255
  return parts.length > 0 ? ` (${parts.join(", ")})` : "";
222
256
  }
257
+ /** The off-screen count as a line of its own, for a brief new-screen answer: `(+41 below, +2 above)`; none when there is nothing off screen. */
258
+ export function offScreenLine(tree, eyes = false) {
259
+ const counts = (eyes ? formatGlassMore(tree.glass) : formatOffScreen(tree.offScreen)).trim();
260
+ return counts === "" ? [] : [counts];
261
+ }
223
262
  /** A gone element as `<role> "<name>"`. It omits the ref and position on purpose: neither means anything now. */
224
- function describeGone(element) {
263
+ function describeGone(element, eyes = false) {
225
264
  const kind = roleOf(element);
226
265
  const text = element.text ?? "";
227
266
  const label = element.label ?? "";
228
267
  const id = element.testID ?? "";
268
+ if (eyes) {
269
+ const seen = userEyesName(kind, text, label, quoteText(element)).join(" ");
270
+ return [kind, seen].filter((part) => part !== null && part !== "").join(" ") || "element";
271
+ }
229
272
  const rest = text !== "" ? quoteText(element) : label !== "" ? quote(label) : id !== "" ? `id=${id}` : "";
230
273
  const line = [kind, rest].filter((part) => part !== null && part !== "").join(" ");
231
274
  return line !== "" ? line : "element";
@@ -294,6 +337,12 @@ const MAX_MOVED_LINES = 5;
294
337
  * route, or most elements new or gone) and the full list reads better.
295
338
  */
296
339
  export function formatChanges(tree, options = {}) {
340
+ const parts = changeParts(tree, options);
341
+ return parts === null ? null : [parts.label, ...parts.header, ...parts.changes].join("\n");
342
+ }
343
+ /** The change block in its parts, for a brief answer: the label, the header lines (never cut) and the change lines. */
344
+ export function changeParts(tree, options = {}) {
345
+ const eyes = options.eyes === true;
297
346
  const changes = tree.changes;
298
347
  if (changes === undefined || !changes.sameRoute)
299
348
  return null;
@@ -311,22 +360,27 @@ export function formatChanges(tree, options = {}) {
311
360
  const alertGone = options.alertGone === true && (tree.alerts ?? []).length === 0;
312
361
  if (alertGone)
313
362
  header.unshift("Alert: gone");
314
- const lines = ["Same screen. Changes:", ...header];
315
- const statusLines = lines.length;
363
+ const lines = [];
316
364
  for (const ref of changes.added) {
317
365
  const element = byRef.get(ref);
318
366
  if (element !== undefined)
319
- lines.push(`+ ${formatElement(element)}`);
367
+ lines.push(`+ ${formatElement(element, { eyes })}`);
320
368
  }
321
369
  for (const element of changes.removed)
322
- lines.push(`- ${describeGone(element)}`);
370
+ lines.push(`- ${describeGone(element, eyes)}`);
323
371
  for (const { ref, was } of changes.changed) {
324
372
  const element = byRef.get(ref);
325
373
  if (element === undefined)
326
374
  continue;
327
- lines.push(`~ ${changedLine(element, was)} (was ${formatBefore(was, element)})`);
375
+ // In a user's eyes a label that changed is not on the glass: only what shows is a change.
376
+ const shown = eyes ? Object.fromEntries(Object.entries(was).filter(([key]) => key !== "label")) : was;
377
+ if (eyes && Object.keys(shown).length === 0)
378
+ continue;
379
+ lines.push(`~ ${changedLine(element, shown, eyes)} (was ${formatBefore(shown, element)})`);
328
380
  }
329
- lines.push(...formatOffScreenChanges(changes));
381
+ // What changed out of view is not on the glass, so a user's eyes leave it out.
382
+ if (!eyes)
383
+ lines.push(...formatOffScreenChanges(changes));
330
384
  if (changes.moved.length > MAX_MOVED_LINES) {
331
385
  lines.push(`↕ ${changes.moved.length} elements moved`);
332
386
  }
@@ -334,13 +388,13 @@ export function formatChanges(tree, options = {}) {
334
388
  for (const ref of changes.moved) {
335
389
  const element = byRef.get(ref);
336
390
  if (element !== undefined)
337
- lines.push(`↕ ${formatElement(element)}`);
391
+ lines.push(`↕ ${formatElement(element, { eyes })}`);
338
392
  }
339
393
  }
340
394
  // A closed alert is itself a change, and so is the keyboard coming or going.
341
- if (lines.length === statusLines && !alertGone && changes.keyboard == null)
395
+ if (lines.length === 0 && !alertGone && changes.keyboard == null)
342
396
  lines.push("No visible change.");
343
- return lines.join("\n");
397
+ return { label: "Same screen. Changes:", header, changes: lines };
344
398
  }
345
399
  /**
346
400
  * Lines for open alerts, the keyboard and requests in flight: things that block or explain the
@@ -365,6 +419,9 @@ export function formatStatus(tree, keyboard = tree.keyboard === true ? "shown" :
365
419
  const busy = tree.network?.inFlight ?? 0;
366
420
  if (busy > 0)
367
421
  lines.push(`Network: ${busy} request${busy === 1 ? "" : "s"} in flight`);
422
+ // Said in every answer while fast animations are on (PLAN-1.6 F4).
423
+ if (tree.animations === "fast")
424
+ lines.push(ANIMATIONS_LINE);
368
425
  return lines;
369
426
  }
370
427
  /** `Network: 3g (Tapline).` — the same line the `network` command answers with and every header carries. */