@atlasauth/emulator-core 0.2.0 → 0.3.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 (244) hide show
  1. package/dist/custom-html.d.ts +57 -0
  2. package/dist/custom-html.js +491 -0
  3. package/dist/custom-html.js.map +1 -0
  4. package/dist/engine.d.ts +1 -1
  5. package/dist/engine.js +4 -0
  6. package/dist/engine.js.map +1 -1
  7. package/dist/error-catalog.js +8 -0
  8. package/dist/error-catalog.js.map +1 -1
  9. package/dist/event-gate.js +60 -2
  10. package/dist/event-gate.js.map +1 -1
  11. package/dist/generic.js +5 -1
  12. package/dist/generic.js.map +1 -1
  13. package/dist/handlers/access-signals.d.ts +48 -0
  14. package/dist/handlers/access-signals.js +76 -0
  15. package/dist/handlers/access-signals.js.map +1 -0
  16. package/dist/handlers/approvals.js +54 -1
  17. package/dist/handlers/approvals.js.map +1 -1
  18. package/dist/handlers/authz-data.d.ts +2 -0
  19. package/dist/handlers/authz-data.js +627 -0
  20. package/dist/handlers/authz-data.js.map +1 -0
  21. package/dist/handlers/authz-layers.d.ts +229 -0
  22. package/dist/handlers/authz-layers.js +786 -0
  23. package/dist/handlers/authz-layers.js.map +1 -0
  24. package/dist/handlers/authz-state.d.ts +80 -0
  25. package/dist/handlers/authz-state.js +175 -0
  26. package/dist/handlers/authz-state.js.map +1 -0
  27. package/dist/handlers/authz.js +240 -177
  28. package/dist/handlers/authz.js.map +1 -1
  29. package/dist/handlers/billing.d.ts +99 -1
  30. package/dist/handlers/billing.js +556 -77
  31. package/dist/handlers/billing.js.map +1 -1
  32. package/dist/handlers/cedar-ext.d.ts +35 -0
  33. package/dist/handlers/cedar-ext.js +174 -0
  34. package/dist/handlers/cedar-ext.js.map +1 -0
  35. package/dist/handlers/cedar.d.ts +146 -0
  36. package/dist/handlers/cedar.js +689 -0
  37. package/dist/handlers/cedar.js.map +1 -0
  38. package/dist/handlers/connections.d.ts +4 -1
  39. package/dist/handlers/connections.js +267 -38
  40. package/dist/handlers/connections.js.map +1 -1
  41. package/dist/handlers/control.js +6 -1
  42. package/dist/handlers/control.js.map +1 -1
  43. package/dist/handlers/device.js +18 -1
  44. package/dist/handlers/device.js.map +1 -1
  45. package/dist/handlers/emu3-misc.d.ts +38 -0
  46. package/dist/handlers/emu3-misc.js +1056 -0
  47. package/dist/handlers/emu3-misc.js.map +1 -0
  48. package/dist/handlers/emu4-actions-access.d.ts +46 -0
  49. package/dist/handlers/emu4-actions-access.js +107 -0
  50. package/dist/handlers/emu4-actions-access.js.map +1 -0
  51. package/dist/handlers/emu4-actions-catalog-extra.d.ts +3 -0
  52. package/dist/handlers/emu4-actions-catalog-extra.js +204 -0
  53. package/dist/handlers/emu4-actions-catalog-extra.js.map +1 -0
  54. package/dist/handlers/emu4-actions-catalog.d.ts +3 -0
  55. package/dist/handlers/emu4-actions-catalog.js +143 -0
  56. package/dist/handlers/emu4-actions-catalog.js.map +1 -0
  57. package/dist/handlers/emu4-actions-def.d.ts +50 -0
  58. package/dist/handlers/emu4-actions-def.js +250 -0
  59. package/dist/handlers/emu4-actions-def.js.map +1 -0
  60. package/dist/handlers/emu4-actions-sandbox.d.ts +36 -0
  61. package/dist/handlers/emu4-actions-sandbox.js +318 -0
  62. package/dist/handlers/emu4-actions-sandbox.js.map +1 -0
  63. package/dist/handlers/emu4-actions-typegen.d.ts +5 -0
  64. package/dist/handlers/emu4-actions-typegen.js +73 -0
  65. package/dist/handlers/emu4-actions-typegen.js.map +1 -0
  66. package/dist/handlers/emu4-actions.d.ts +2 -0
  67. package/dist/handlers/emu4-actions.js +506 -0
  68. package/dist/handlers/emu4-actions.js.map +1 -0
  69. package/dist/handlers/emu4-authz-trust.d.ts +40 -0
  70. package/dist/handlers/emu4-authz-trust.js +488 -0
  71. package/dist/handlers/emu4-authz-trust.js.map +1 -0
  72. package/dist/handlers/emu4-authz.d.ts +2 -0
  73. package/dist/handlers/emu4-authz.js +752 -0
  74. package/dist/handlers/emu4-authz.js.map +1 -0
  75. package/dist/handlers/emu4-billing-core.d.ts +23 -0
  76. package/dist/handlers/emu4-billing-core.js +22 -0
  77. package/dist/handlers/emu4-billing-core.js.map +1 -0
  78. package/dist/handlers/emu4-billing-x.d.ts +2 -0
  79. package/dist/handlers/emu4-billing-x.js +489 -0
  80. package/dist/handlers/emu4-billing-x.js.map +1 -0
  81. package/dist/handlers/emu4-billing.d.ts +14 -0
  82. package/dist/handlers/emu4-billing.js +846 -0
  83. package/dist/handlers/emu4-billing.js.map +1 -0
  84. package/dist/handlers/emu4-clones.d.ts +2 -0
  85. package/dist/handlers/emu4-clones.js +322 -0
  86. package/dist/handlers/emu4-clones.js.map +1 -0
  87. package/dist/handlers/emu4-compliance.d.ts +8 -0
  88. package/dist/handlers/emu4-compliance.js +39 -0
  89. package/dist/handlers/emu4-compliance.js.map +1 -0
  90. package/dist/handlers/emu4-config.d.ts +14 -0
  91. package/dist/handlers/emu4-config.js +148 -0
  92. package/dist/handlers/emu4-config.js.map +1 -0
  93. package/dist/handlers/emu4-cookies.d.ts +8 -0
  94. package/dist/handlers/emu4-cookies.js +248 -0
  95. package/dist/handlers/emu4-cookies.js.map +1 -0
  96. package/dist/handlers/emu4-erasure.d.ts +2 -0
  97. package/dist/handlers/emu4-erasure.js +587 -0
  98. package/dist/handlers/emu4-erasure.js.map +1 -0
  99. package/dist/handlers/emu4-federation.d.ts +8 -0
  100. package/dist/handlers/emu4-federation.js +18 -0
  101. package/dist/handlers/emu4-federation.js.map +1 -0
  102. package/dist/handlers/emu4-journey-math.d.ts +42 -0
  103. package/dist/handlers/emu4-journey-math.js +99 -0
  104. package/dist/handlers/emu4-journey-math.js.map +1 -0
  105. package/dist/handlers/emu4-messaging.d.ts +21 -0
  106. package/dist/handlers/emu4-messaging.js +595 -0
  107. package/dist/handlers/emu4-messaging.js.map +1 -0
  108. package/dist/handlers/emu4-minors.d.ts +7 -0
  109. package/dist/handlers/emu4-minors.js +408 -0
  110. package/dist/handlers/emu4-minors.js.map +1 -0
  111. package/dist/handlers/emu4-oauth-audit.d.ts +5 -0
  112. package/dist/handlers/emu4-oauth-audit.js +17 -0
  113. package/dist/handlers/emu4-oauth-audit.js.map +1 -0
  114. package/dist/handlers/emu4-oauth-auth.d.ts +83 -0
  115. package/dist/handlers/emu4-oauth-auth.js +363 -0
  116. package/dist/handlers/emu4-oauth-auth.js.map +1 -0
  117. package/dist/handlers/emu4-oauth-delivery.d.ts +68 -0
  118. package/dist/handlers/emu4-oauth-delivery.js +207 -0
  119. package/dist/handlers/emu4-oauth-delivery.js.map +1 -0
  120. package/dist/handlers/emu4-oauth-keys.d.ts +11 -0
  121. package/dist/handlers/emu4-oauth-keys.js +268 -0
  122. package/dist/handlers/emu4-oauth-keys.js.map +1 -0
  123. package/dist/handlers/emu4-oauth-pub.d.ts +36 -0
  124. package/dist/handlers/emu4-oauth-pub.js +420 -0
  125. package/dist/handlers/emu4-oauth-pub.js.map +1 -0
  126. package/dist/handlers/emu4-oauth.d.ts +10 -0
  127. package/dist/handlers/emu4-oauth.js +23 -0
  128. package/dist/handlers/emu4-oauth.js.map +1 -0
  129. package/dist/handlers/emu4-policies.d.ts +2 -0
  130. package/dist/handlers/emu4-policies.js +408 -0
  131. package/dist/handlers/emu4-policies.js.map +1 -0
  132. package/dist/handlers/emu4-region.d.ts +2 -0
  133. package/dist/handlers/emu4-region.js +189 -0
  134. package/dist/handlers/emu4-region.js.map +1 -0
  135. package/dist/handlers/emu4-saml.d.ts +12 -0
  136. package/dist/handlers/emu4-saml.js +532 -0
  137. package/dist/handlers/emu4-saml.js.map +1 -0
  138. package/dist/handlers/emu4-shared.d.ts +44 -0
  139. package/dist/handlers/emu4-shared.js +90 -0
  140. package/dist/handlers/emu4-shared.js.map +1 -0
  141. package/dist/handlers/emu4-snapshots.d.ts +38 -0
  142. package/dist/handlers/emu4-snapshots.js +231 -0
  143. package/dist/handlers/emu4-snapshots.js.map +1 -0
  144. package/dist/handlers/emu4-sns.d.ts +9 -0
  145. package/dist/handlers/emu4-sns.js +21 -0
  146. package/dist/handlers/emu4-sns.js.map +1 -0
  147. package/dist/handlers/emu4-trust-binding.d.ts +27 -0
  148. package/dist/handlers/emu4-trust-binding.js +344 -0
  149. package/dist/handlers/emu4-trust-binding.js.map +1 -0
  150. package/dist/handlers/emu4-trust.d.ts +35 -0
  151. package/dist/handlers/emu4-trust.js +543 -0
  152. package/dist/handlers/emu4-trust.js.map +1 -0
  153. package/dist/handlers/fga-engine.d.ts +78 -0
  154. package/dist/handlers/fga-engine.js +663 -0
  155. package/dist/handlers/fga-engine.js.map +1 -0
  156. package/dist/handlers/hooks.js +13 -0
  157. package/dist/handlers/hooks.js.map +1 -1
  158. package/dist/handlers/index.js +14 -1
  159. package/dist/handlers/index.js.map +1 -1
  160. package/dist/handlers/machines.js +6 -0
  161. package/dist/handlers/machines.js.map +1 -1
  162. package/dist/handlers/messaging.d.ts +3 -1
  163. package/dist/handlers/messaging.js +455 -48
  164. package/dist/handlers/messaging.js.map +1 -1
  165. package/dist/handlers/oauth-adv.d.ts +191 -0
  166. package/dist/handlers/oauth-adv.js +1305 -0
  167. package/dist/handlers/oauth-adv.js.map +1 -0
  168. package/dist/handlers/oauth-flows.d.ts +25 -1
  169. package/dist/handlers/oauth-flows.js +111 -50
  170. package/dist/handlers/oauth-flows.js.map +1 -1
  171. package/dist/handlers/oauth.d.ts +24 -3
  172. package/dist/handlers/oauth.js +245 -60
  173. package/dist/handlers/oauth.js.map +1 -1
  174. package/dist/handlers/orgs.js +6 -0
  175. package/dist/handlers/orgs.js.map +1 -1
  176. package/dist/handlers/platform.d.ts +5 -0
  177. package/dist/handlers/platform.js +33 -15
  178. package/dist/handlers/platform.js.map +1 -1
  179. package/dist/handlers/scim.d.ts +2 -0
  180. package/dist/handlers/scim.js +198 -11
  181. package/dist/handlers/scim.js.map +1 -1
  182. package/dist/handlers/sessions.d.ts +2 -0
  183. package/dist/handlers/sessions.js +24 -16
  184. package/dist/handlers/sessions.js.map +1 -1
  185. package/dist/handlers/users.js +3 -0
  186. package/dist/handlers/users.js.map +1 -1
  187. package/dist/jwe.d.ts +18 -0
  188. package/dist/jwe.js +101 -0
  189. package/dist/jwe.js.map +1 -0
  190. package/dist/jws.js +2 -0
  191. package/dist/jws.js.map +1 -1
  192. package/dist/messaging-callbacks.d.ts +100 -0
  193. package/dist/messaging-callbacks.js +767 -0
  194. package/dist/messaging-callbacks.js.map +1 -0
  195. package/dist/openapi.js +41 -1
  196. package/dist/openapi.js.map +1 -1
  197. package/dist/parity-emu3-authz.d.ts +3 -0
  198. package/dist/parity-emu3-authz.js +61 -0
  199. package/dist/parity-emu3-authz.js.map +1 -0
  200. package/dist/parity-emu3-billing.d.ts +3 -0
  201. package/dist/parity-emu3-billing.js +25 -0
  202. package/dist/parity-emu3-billing.js.map +1 -0
  203. package/dist/parity-emu3-messaging.d.ts +3 -0
  204. package/dist/parity-emu3-messaging.js +27 -0
  205. package/dist/parity-emu3-messaging.js.map +1 -0
  206. package/dist/parity-emu3-misc.d.ts +2 -0
  207. package/dist/parity-emu3-misc.js +63 -0
  208. package/dist/parity-emu3-misc.js.map +1 -0
  209. package/dist/parity-emu3-oauth.d.ts +2 -0
  210. package/dist/parity-emu3-oauth.js +39 -0
  211. package/dist/parity-emu3-oauth.js.map +1 -0
  212. package/dist/parity-emu4-actions.d.ts +2 -0
  213. package/dist/parity-emu4-actions.js +38 -0
  214. package/dist/parity-emu4-actions.js.map +1 -0
  215. package/dist/parity-emu4-authz.d.ts +3 -0
  216. package/dist/parity-emu4-authz.js +68 -0
  217. package/dist/parity-emu4-authz.js.map +1 -0
  218. package/dist/parity-emu4-billing.d.ts +6 -0
  219. package/dist/parity-emu4-billing.js +44 -0
  220. package/dist/parity-emu4-billing.js.map +1 -0
  221. package/dist/parity-emu4-compliance.d.ts +2 -0
  222. package/dist/parity-emu4-compliance.js +92 -0
  223. package/dist/parity-emu4-compliance.js.map +1 -0
  224. package/dist/parity-emu4-federation.d.ts +2 -0
  225. package/dist/parity-emu4-federation.js +33 -0
  226. package/dist/parity-emu4-federation.js.map +1 -0
  227. package/dist/parity-emu4-messaging.d.ts +3 -0
  228. package/dist/parity-emu4-messaging.js +42 -0
  229. package/dist/parity-emu4-messaging.js.map +1 -0
  230. package/dist/parity-emu4-oauth.d.ts +2 -0
  231. package/dist/parity-emu4-oauth.js +55 -0
  232. package/dist/parity-emu4-oauth.js.map +1 -0
  233. package/dist/parity-emu4-trust.d.ts +2 -0
  234. package/dist/parity-emu4-trust.js +41 -0
  235. package/dist/parity-emu4-trust.js.map +1 -0
  236. package/dist/parity-routes.js +19 -1
  237. package/dist/parity-routes.js.map +1 -1
  238. package/dist/sns-cert.d.ts +9 -0
  239. package/dist/sns-cert.js +101 -0
  240. package/dist/sns-cert.js.map +1 -0
  241. package/dist/tokens.d.ts +69 -4
  242. package/dist/tokens.js +164 -38
  243. package/dist/tokens.js.map +1 -1
  244. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-adv.js","sourceRoot":"","sources":["../../src/handlers/oauth-adv.ts"],"names":[],"mappings":";;;AAyGA,8CAMC;AAMD,0BAMC;AAGD,wBAKC;AACD,4BAIC;AAGD,oCAqBC;AAID,oEAkBC;AAcD,oDAQC;AAeD,gCAGC;AAED,4BAEC;AACD,0BAEC;AAGD,oDAuBC;AA4BD,8CAmDC;AAmCD,0CAoDC;AAGD,kDAOC;AAID,4CA0lBC;AAuFD,wCAiFC;AAGD,gDAIC;AA1rCD,gDAAuD;AACvD,sCAA0C;AAC1C,gCAA8C;AAE9C,oCAAuC;AACvC,mCAA+H;AAC/H,uCAAwC;AACxC,uDAA2M;AAC3M,qDAAqD;AACrD,+DAAiE;AAgBpD,QAAA,QAAQ,GAAY,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AA+CxE,QAAA,GAAG,GAAG,IAAA,qBAAW,EAAC,GAAQ,EAAE,CAAC,CAAC;IACzC,GAAG,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,EAAE;IACpK,OAAO,EAAE,IAAI,GAAG,EAAE;IAClB,QAAQ,EAAE,IAAI,GAAG,EAAE;IACnB,EAAE,EAAE,EAAE;IACN,IAAI,EAAE,IAAI,GAAG,EAAE;IACf,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE;CAC5D,CAAC,CAAC,CAAC;AAEJ,MAAM,QAAQ,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACrE,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AACnD,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;AACxC,QAAA,uBAAuB,GAAG,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;AAClE,QAAA,gBAAgB,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;AACnG,QAAA,mBAAmB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACrH,MAAM,SAAS,GAAG,6CAA6C,CAAC;AACnD,QAAA,cAAc,GAAG,SAAS,CAAC;AACxC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAE9C,uEAAuE;AAE1D,QAAA,wBAAwB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;AACrI,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAQ/C,4FAA4F;AAC5F,SAAgB,iBAAiB,CAAC,KAAgC;IAChE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpH,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,kBAAkB,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;AAC9K,CAAC;AACD,sFAAsF;AAC/E,MAAM,mBAAmB,GAAG,CAAC,EAAsB,EAAE,IAAY,EAAW,EAAE,CAAC,CAAC,EAAE,CAAC,kBAAkB,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,CAAC,CAAC;AAA9I,QAAA,mBAAmB,uBAA2H;AACpJ,MAAM,mBAAmB,GAAG,CAAC,MAAW,EAAY,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAA3J,QAAA,mBAAmB,uBAAwI;AAExK,8IAA8I;AAC9I,SAAgB,OAAO,CAAC,CAAS,EAAE,WAAmB,EAAE,MAA0C,EAAE,KAAc,EAAE,IAAmB;IACrI,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAA4B,CAAC;IACrG,IAAI,KAAK,IAAI,IAAI,KAAK,UAAU;QAAE,CAAC,CAAC,IAAI,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;;QAC9E,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO;YAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtB,CAAC;AAED,yGAAyG;AACzG,SAAgB,MAAM,CAAC,CAAS,EAAE,MAAc;IAC9C,MAAM,CAAC,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC1B,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,CAAC,GAAG;QAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,GAAG,CAAC;AACb,CAAC;AACD,SAAgB,QAAQ,CAAC,CAAS,EAAE,GAAuB,EAAE,QAAgB,EAAE,MAAqB;IAClG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;QAAE,OAAO;IAC5B,MAAM,EAAE,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;QAAE,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AACpG,CAAC;AAED,2GAA2G;AACpG,KAAK,UAAU,YAAY,CAAC,CAAS,EAAE,CAAsJ;IAClM,MAAM,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;IACxC,MAAM,MAAM,GAAuC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACrF,IAAI,IAAwB,CAAC;IAC7B,IAAI,EAAE,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,IAAA,iBAAS,EAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACrE,IAAI,EAAE,CAAC,kBAAkB,EAAE,CAAC;QAC1B,qGAAqG;QACrG,IAAI,WAA+B,CAAC;QACpC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,MAAM,IAAA,kBAAU,EAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnG,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC;YACtB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvH,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,KAAK,EAAE,CAAS,EAAE,EAAE,CAAC,IAAA,2BAAa,EAAC,CAAC,MAAM,IAAA,oBAAM,EAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAChF,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,CAAC,QAAQ,GAAG,MAAM,IAAA,kBAAU,EAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjN,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9E,CAAC;AAED,sEAAsE;AAEtE,SAAgB,4BAA4B,CAAC,GAAY,EAAE,SAAmB;IAC5E,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC3F,IAAI,MAAM,GAAY,GAAG,CAAC;IAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,uDAAuD,EAAE,CAAC;IACrI,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,uDAAuD,EAAE,CAAC;QACvJ,MAAM,IAAI,GAAI,EAAU,CAAC,IAAI,CAAC;QAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,2DAA2D,EAAE,CAAC;QAClI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,gDAAgD,IAAI,GAAG,EAAE,CAAC;IACxH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACrC,CAAC;AAQD,MAAM,MAAM,GAAG,CAAC,CAAU,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACpN,MAAM,MAAM,GAAG,CAAC,KAAgB,EAAa,EAAE;IAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEF,SAAgB,oBAAoB,CAAC,MAAe,EAAE,OAAgB;IACpE,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,EAAE,CAAC;IAC3E,MAAM,KAAK,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,EAAE,CAAC;IAC1E,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAChI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,gEAAgE,EAAE,CAAC;IACpL,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,gEAAgE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;IACnK,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,qDAAqD,MAAM,GAAG,EAAE,CAAC;IACnK,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;AAClD,CAAC;AACD,MAAM,MAAM,GAAG,CAAC,GAAY,EAAE,GAAY,EAAW,EAAE;IACrD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvG,CAAC,CAAC;AACF,SAAS,UAAU,CAAC,MAAc,EAAE,GAAY,EAAE,GAAY;IAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AAC9I,CAAC;AACD,MAAM,SAAS,GAAG,CAAC,CAAU,EAAW,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAEtF,6GAA6G;AAC7G,SAAgB,UAAU,CAAC,CAAS,EAAE,EAAU,EAAE,QAAgB,EAAE,MAAc;IAChF,MAAM,CAAC,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtG,CAAC;AACD,6GAA6G;AAC7G,SAAgB,QAAQ,CAAC,EAAwC,EAAE,CAAsB,EAAE,KAAe,EAAE,OAAyB;IACnI,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3F,CAAC;AACD,SAAgB,OAAO,CAAC,CAAS,EAAE,EAA+C,EAAE,QAAgB,EAAE,MAAc;IAClH,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,OAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,qEAAqE,CAAC,CAAC,CAAC,IAAI,CAAC;AACtK,CAAC;AAED,gHAAgH;AAChH,SAAgB,oBAAoB,CAAC,CAAS,EAAE,KAAY,EAAE,EAAwC;IACpG,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAY,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;IAC7E,MAAM,CAAC,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC;IACjB,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAY,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,MAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;QACvM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACvB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,OAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;IACrF,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAC1B,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC;IAClB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IACvB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS;QAAE,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AACD,sGAAsG;AACtG,SAAS,WAAW,CAAC,CAAS,EAAE,CAAU;IACxC,KAAK,MAAM,CAAC,IAAI,IAAA,UAAE,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO;YAAE,SAAS;QAChD,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,CAAU,EAAO,EAAE,CAAC,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,EAAE;IACd,SAAS,EAAE,CAAC,CAAC,QAAQ;IACrB,MAAM,EAAE,CAAC,CAAC,MAAM;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5C,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,QAAQ,EAAE,CAAC,CAAC,QAAQ;IACpB,UAAU,EAAE,CAAC,CAAC,SAAS;IACvB,UAAU,EAAE,CAAC,CAAC,SAAS;CACxB,CAAC,CAAC;AAEH,sEAAsE;AAEzD,QAAA,qBAAqB,GAAG,CAAC,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,yBAAyB,EAAE,UAAU,CAAC,CAAC;AAE7N,MAAM,EAAE,GAAG,CAAC,KAA2E,EAAE,WAAmB,EAAU,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;AAE7J,iIAAiI;AAC1H,KAAK,UAAU,iBAAiB,CAAC,CAAS,EAAE,MAAW,EAAE,KAAgD;IAC9G,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IACzC,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;IACxB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;YAAE,OAAO,EAAE,CAAC,qBAAqB,EAAE,oDAAoD,CAAC,CAAC;QACxL,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,uDAAuD,EAAE,EAAE,CAAC,CAAC;YAC9H,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,EAAE,CAAC,qBAAqB,EAAE,uCAAuC,CAAC,CAAC;YACvF,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI;gBAAE,OAAO,EAAE,CAAC,qBAAqB,EAAE,gDAAgD,CAAC,CAAC;YACzH,GAAG,GAAG,IAAI,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC,qBAAqB,EAAE,uCAAuC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC,iBAAiB,EAAE,6BAA6B,CAAC,CAAC;IACtE,6HAA6H;IAC7H,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAA,gDAA8B,EAAC,CAAC,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC,wBAAwB,EAAE,sDAAsD,CAAC,CAAC;QACxG,GAAG,GAAG,KAAK,CAAC;IACd,CAAC;SAAM,IAAI,MAAM,CAAC,6BAA6B,EAAE,CAAC;QAChD,OAAO,EAAE,CAAC,wBAAwB,EAAE,yFAAyF,CAAC,CAAC;IACjI,CAAC;IACD,MAAM,CAAC,GAAG,IAAA,eAAS,EAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC,wBAAwB,EAAE,kCAAkC,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACvC,IAAI,CAAC,2BAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC,wBAAwB,EAAE,iEAAiE,CAAC,CAAC;IAC/I,IAAI,MAAM,CAAC,0BAA0B,IAAI,MAAM,CAAC,0BAA0B,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC,wBAAwB,EAAE,qEAAqE,CAAC,CAAC;IAC/L,IAAI,IAAI,GAAU,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/F,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC,wBAAwB,EAAE,iEAAiE,CAAC,CAAC;IAC1H,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAA,eAAS,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAE,MAAM;IACrE,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;IACpB,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC,wBAAwB,EAAE,uCAAuC,CAAC,CAAC;IACnM,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9E,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,wBAAwB,EAAE,8CAA8C,CAAC,CAAC;IACpI,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC,wBAAwB,EAAE,4CAA4C,CAAC,CAAC;IAC7H,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,wBAAwB,EAAE,8CAA8C,CAAC,CAAC;IAChJ,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AACjC,CAAC;AAED,uEAAuE;AAEvE,MAAM,OAAO,GAAG,CAAC,CAAS,EAAW,EAAE;IACrC,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AACF,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,OAAO,CAAC;AACxF,gIAAgI;AAChI,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,WAAoB,EAAW,EAAE;IACnE,IAAI,CAAM,CAAC;IACX,IAAI,CAAC;QACH,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7F,OAAO,WAAW,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACpI,CAAC,CAAC;AACF,MAAM,WAAW,GAAG,CAAC,GAAW,EAAW,EAAE;IAC3C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC;IAC3H,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AACF,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAElE,iJAAiJ;AACjJ,SAAgB,eAAe,CAAC,IAAS;IACvC,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAc,EAAE,OAAO,EAAE,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,IAAI,CAAC,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;aAC3B,CAAC;YACJ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE;gBAAE,OAAO,GAAG,CAAC,2DAA2D,CAAC,CAAC;YACrK,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACvB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;oBAAE,OAAO,GAAG,CAAC,yCAAyC,CAAC,CAAC;gBAC5H,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;oBAAE,OAAO,GAAG,CAAC,iEAAiE,CAAC,CAAC;YACrH,CAAC;YACD,GAAG,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE;YAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;aACnE,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI;YAAE,OAAO,GAAG,CAAC,yCAAyC,CAAC,CAAC;;YACtL,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACpC,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ;QAAE,OAAO,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACjF,IAAI,IAAI,CAAC,0BAA0B,KAAK,SAAS,EAAE,CAAC;QAClD,MAAM,CAAC,GAAG,IAAI,CAAC,0BAA0B,CAAC;QAC1C,IAAI,CAAC,KAAK,IAAI;YAAE,GAAG,CAAC,0BAA0B,GAAG,IAAI,CAAC;aACjD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,2BAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC,8CAA8C,2BAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;YAC3J,GAAG,CAAC,0BAA0B,GAAG,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,IAAI,CAAC,6BAA6B,KAAK,SAAS,EAAE,CAAC;QACrD,IAAI,OAAO,IAAI,CAAC,6BAA6B,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC,sDAAsD,CAAC,CAAC;QAChI,GAAG,CAAC,6BAA6B,GAAG,IAAI,CAAC,6BAA6B,CAAC;IACzE,CAAC;IACD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;YAAE,OAAO,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACrK,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3H,IAAI,CAAC,gCAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,OAAO,GAAG,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC;YAC1F,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QAC7B,IAAI,EAAE,KAAK,IAAI;YAAE,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC;aACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC,kEAAkE,CAAC,CAAC;;YAClL,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC;IAC7B,CAAC;IACD,MAAM,KAAK,GAAG,IAAA,wCAAsB,EAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAClC,CAAC;AAED,gHAAgH;AAChH,SAAgB,mBAAmB,CAAC,aAAuB,EAAE,UAAoB;IAC/E,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAAE,OAAO,kBAAkB,EAAE,4CAA4C,CAAC;QAClJ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,kBAAkB,EAAE,kCAAkC,CAAC;IACjK,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,sEAAsE;AAEtE,SAAgB,gBAAgB;IAC9B,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,WAAmB,EAAE,UAAkC,EAAE,EAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1N,MAAM,QAAQ,GAAG,CAAC,CAAe,EAAsB,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAE7I,mIAAmI;IACnI,MAAM,SAAS,GAAG,CAAC,CAAe,EAAsC,EAAE;QACxE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,yBAAyB,IAAI,MAAM,CAAC,yBAAyB,KAAK,MAAM;YAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,oCAAoC,CAAC,EAAE,CAAC;QACrN,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,CAAM,EAAO,EAAE,CAAC,CAAC;QACnC,SAAS,EAAE,CAAC,CAAC,EAAE;QACf,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;QACpD,wBAAwB,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,cAAc,EAAE,IAAA,2BAAmB,EAAC,CAAC,CAAC;QACtC,0BAA0B,EAAE,CAAC,CAAC,WAAW;QACzC,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACzC,WAAW,EAAE,CAAC,CAAC,IAAI;QACnB,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,0BAA0B,EAAE,CAAC,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrG,GAAG,CAAC,CAAC,CAAC,6BAA6B,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,6BAA6B,EAAE,CAAC,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5H,GAAG,IAAA,8BAAY,EAAC,CAAC,CAAC;KACnB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,GAAQ,EAAQ,EAAE;QAC/C,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,IAAA,UAAE,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAE;gBAAE,IAAA,mBAAW,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC,CAAC;IAEF,oBAAoB;IACpB,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;IACpD,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,OAAe,EAAE,UAAkC,EAAE,EAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5K,MAAM,OAAO,GAAG,CAAC,CAAS,EAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IAClR,MAAM,QAAQ,GAAG,CAAC,CAAM,EAAiD,EAAE;QACzE,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG;YAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,4CAA4C,CAAC,EAAE,CAAC;QAC1K,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;gBAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACvN,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,oDAAoD,CAAC,EAAE,CAAC;QAC7N,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAa,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IACvO,CAAC,CAAC;IACF,8GAA8G;IAC9G,MAAM,KAAK,GAAG,KAAK,EAAE,CAAe,EAAuE,EAAE;QAC3G,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,uCAAuC,CAAC,EAAE,CAAC;QACnG,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,kBAAkB,EAAE,8BAA8B,KAAK,aAAa,oBAAoB,GAAG,EAAE,CAAC,CAAC;QACtM,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,GAAG,EAAE,4DAA4D,CAAC,EAAE,CAAC;QAC7H,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC,CAAC,IAAA,UAAE,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/G,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,GAAG,EAAE,wDAAwD,CAAC,EAAE,CAAC;QAC9I,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,oBAAoB,EAAE,GAAG,EAAE,uBAAuB,oBAAoB,SAAS,CAAC,EAAE,CAAC;QAC5J,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,GAAG,EAAE,iBAAiB,CAAC,EAAE,CAAC;QACpG,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM;YAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,GAAG,EAAE,oDAAoD,CAAC,EAAE,CAAC;QAC3I,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IACzC,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAe,EAA4D,EAAE;QACnG,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,OAAO,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,mBAAmB,CAAC,EAAE,CAAC;IACtI,CAAC,CAAC;IAEF,OAAO;QACL,yBAAyB;QACzB;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,0BAA0B;YACnC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,MAAM,GAAG,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC;gBAC9B,KAAK,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,8BAA8B,EAAE,aAAa,CAAU,EAAE,CAAC;oBACjG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;wBAAE,SAAS;oBACtC,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS;wBAAE,MAAM,IAAI,sBAAa,CAAC,mBAAmB,EAAE,GAAG,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;oBACnH,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC;gBACD,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC;gBACjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;wBAAE,MAAM,IAAI,sBAAa,CAAC,mBAAmB,EAAE,wDAAwD,EAAE,6BAA6B,CAAC,CAAC;oBAC7M,GAAG,CAAC,2BAA2B,GAAG,KAAK,CAAC;gBAC1C,CAAC;gBACD,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC;gBACrD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;wBAAE,MAAM,IAAI,sBAAa,CAAC,mBAAmB,EAAE,sFAAsF,EAAE,mCAAmC,CAAC,CAAC;oBACjN,GAAG,CAAC,iCAAiC,GAAG,GAAG,CAAC;gBAC9C,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC;YAC9B,CAAC;SACF;QACD,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;QAC1H;YACE,mIAAmI;YACnI,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,6BAA6B;YACtC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,MAAM,GAAG,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxE,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,sBAAa,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;gBACpE,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;oBAAE,MAAM,IAAI,sBAAa,CAAC,mBAAmB,EAAE,kCAAkC,CAAC,CAAC;gBACvN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9C,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YAChC,CAAC;SACF;QAED,gEAAgE;QAChE;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,iCAAiC;YAC1C,KAAK,EAAE,oBAAoB;YAC3B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;SACtL;QACD;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,iCAAiC;YAC1C,KAAK,EAAE,qBAAqB;YAC5B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACnB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,IAAI,sBAAa,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjF,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC;oBAAE,MAAM,CAAC,CAAC,yDAAyD,EAAE,aAAa,CAAC,CAAC;gBAClN,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAU,EAAE,EAAU,EAAE,GAAW,EAAiB,EAAE;oBAC5E,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;wBAAE,OAAO,IAAI,CAAC;oBACrD,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;wBAAE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACnG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC,CAAC;gBACF,MAAM,GAAG,GAAG,GAAG,CAAC,oBAAoB,EAAE,EAAE,EAAE,GAAG,GAAG,KAAK,EAAE,2EAA2E,CAAC,CAAC;gBACpI,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,oDAAoD,CAAC,CAAC;gBACpG,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACrK,IAAI,KAAK,KAAK,SAAS;oBAAE,MAAM,CAAC,CAAC,iDAAiD,EAAE,OAAO,CAAC,CAAC;gBAC7F,IAAI,OAAO,GAAoB,IAAI,CAAC;gBACpC,IAAI,CAAC,CAAC,mBAAmB,KAAK,SAAS,IAAI,CAAC,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;oBAC1E,MAAM,EAAE,GAAG,CAAC,oBAAoB,EAAE,eAAe,EAAE,8CAA8C,EAAE,UAAU,CAAC,CAAC;oBAC/G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;wBAAE,MAAM,CAAC,CAAC,oDAAoD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;oBAC1Q,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBACxD,CAAC;gBACD,IAAI,CAAC,CAAC,oBAAoB,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,oBAAoB,KAAK,SAAS;oBAAE,MAAM,CAAC,CAAC,6CAA6C,EAAE,sBAAsB,CAAC,CAAC;gBACxK,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,qDAAqD,CAAC,CAAC;gBACxG,IAAI,UAAU,KAAK,IAAI,IAAI,CAAC,KAAK;oBAAE,MAAM,CAAC,CAAC,8CAA8C,EAAE,aAAa,CAAC,CAAC;gBAC1G,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,IAAA,mBAAW,EAAC,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC,oBAAoB,KAAK,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;gBACpY,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC7B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,yEAAyE,EAAE,EAAE,CAAC;YAC7J,CAAC;SACF;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,qCAAqC;YAC9C,KAAK,EAAE,qBAAqB;YAC5B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,MAAM,GAAG,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtD,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,sBAAa,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;gBAChF,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBACvC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7C,CAAC;SACF;QAED,+CAA+C;QAC/C;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,kBAAkB;YAC3B,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACnB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACnB,MAAM,CAAC,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,eAAe,EAAE,yDAAyD,CAAC,CAAC;gBAC9H,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;gBAClB,sGAAsG;gBACtG,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,IAAI,IAAA,2BAAS,EAAC,CAAC,CAAC,CAAC,0BAA0B,EAAE,CAAC;oBACrF,IAAI,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ;wBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,4BAA4B,EAAE,oDAAoD,CAAC,CAAC;oBACtJ,MAAM,IAAI,GAAG,MAAM,IAAA,yCAAuB,EAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBACvE,IAAI,CAAC,IAAI,CAAC,EAAE;wBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBACzD,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrC,CAAC;gBACD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,CAAC,EAAE,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,CAAC,CAAC;gBACxH,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,sBAAsB,EAAE,qEAAqE,CAAC,CAAC;gBACvM,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,yCAAyC,CAAC,CAAC;gBACzM,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,KAAK,QAAQ,CAAC;gBAClD,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,0BAA0B,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC;gBAC/I,IAAI,CAAC,8BAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,yCAAyC,CAAC,CAAC;gBAC3H,MAAM,QAAQ,GAAG,MAAM,KAAK,MAAM,CAAC;gBACnC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxE,MAAM,YAAY,GAAG,IAAA,oCAAkB,EAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACtF,IAAI,YAAY;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,YAAY,CAAC,CAAC;gBAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACrE,IAAI,MAAM;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,sBAAsB,EAAE,yBAAyB,MAAM,iDAAiD,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACpL,6EAA6E;gBAC7E,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAc,EAAC,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,aAAa,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChL,IAAI,CAAC,OAAO,CAAC,EAAE;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC9E,IAAI,qBAAqB,CAAC,CAAC,EAAE,SAAS,CAAC;oBAAE,OAAO,MAAM,CAAC,gEAAgE,CAAC,CAAC;gBACzH,MAAM,SAAS,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACpH,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7E,IAAI,aAAa,CAAC,MAAM;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,sBAAsB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxH,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC7E,MAAM,UAAU,GAAa,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;gBAC3L,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjH,IAAI,aAAa,CAAC,MAAM;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,4BAA4B,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9H,MAAM,aAAa,GAAG,IAAA,2BAAmB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtD,MAAM,SAAS,GAAG,mBAAmB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;gBACjE,IAAI,SAAS;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,SAAS,CAAC,CAAC;gBACtE,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,+BAA+B,CAAC;gBAClI,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtE,IAAI,UAAU,GAAa,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,yBAAyB,KAAK,SAAS,EAAE,CAAC;oBACjD,MAAM,CAAC,GAAG,IAAI,CAAC,yBAAyB,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;wBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,wDAAwD,CAAC,CAAC;oBACvK,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3C,IAAI,GAAG;wBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,iFAAiF,GAAG,EAAE,CAAC,CAAC;oBAC7I,UAAU,GAAG,CAAC,CAAC;gBACjB,CAAC;gBACD,IAAI,UAAU,GAAa,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;oBAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;oBACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,qFAAqF,CAAC,CAAC;oBACvP,UAAU,GAAG,CAAC,CAAC;gBACjB,CAAC;gBACD,MAAM,SAAS,GAAG,CAAC,CAAuD,EAA6B,EAAE;oBACvG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC9E,CAAC,CAAC;gBACF,MAAM,GAAG,GAAG,SAAS,CAAC,wBAAwB,CAAC,CAAC;gBAChD,IAAI,GAAG,KAAK,SAAS;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,6EAA6E,CAAC,CAAC;gBAClJ,MAAM,GAAG,GAAG,SAAS,CAAC,yBAAyB,CAAC,CAAC;gBACjD,IAAI,GAAG,KAAK,SAAS;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,8EAA8E,CAAC,CAAC;gBACnJ,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC1B,sHAAsH;gBACtH,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5F,IAAI,GAAG,EAAE,CAAC;oBACR,MAAM,QAAQ,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBACjH,IAAI,QAAQ;wBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,cAAc,QAAQ,qCAAqC,CAAC,CAAC;oBACvH,MAAM,QAAQ,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC1G,IAAI,QAAQ;wBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,sBAAsB,EAAE,gBAAgB,QAAQ,kBAAkB,CAAC,CAAC;oBACnG,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU;wBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,+CAA+C,GAAG,CAAC,UAAU,WAAW,CAAC,CAAC;gBAClQ,CAAC;gBACD,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,IAAI,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC;wBAAE,OAAO,MAAM,CAAC,mEAAmE,CAAC,CAAC;oBACpO,GAAG,CAAC,QAAQ,EAAE,CAAC;oBACf,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACvB,CAAC;gBACD,MAAM,EAAE,GAAG,UAAU,IAAA,mBAAW,EAAC,EAAE,CAAC,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAG,QAAQ,IAAI,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,IAAA,mBAAW,EAAC,EAAE,CAAC,EAAE,CAAC;gBAChG,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,iCAAiC,CAAC;gBACpD,MAAM,aAAa,GAAG,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClE,MAAM,GAAG,GAAG,SAAS,IAAA,mBAAW,EAAC,EAAE,CAAC,EAAE,CAAC;gBACvC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;oBACnC,EAAE;oBACF,IAAI;oBACJ,aAAa,EAAE,IAAI;oBACnB,cAAc,EAAE,MAAM;oBACtB,WAAW,EAAE,UAAU;oBACvB,WAAW,EAAE,MAAM;oBACnB,WAAW,EAAE,KAAK;oBAClB,yBAAyB,EAAE,UAAU;oBACrC,oBAAoB,EAAE,UAAU;oBAChC,sBAAsB,EAAE,GAAG;oBAC3B,uBAAuB,EAAE,GAAG;oBAC5B,QAAQ,EAAE,IAAI;oBACd,MAAM;oBACN,iBAAiB,EAAE,aAAa;oBAChC,yBAAyB,EAAE,GAAG;oBAC9B,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,IAAI;oBACzB,OAAO,EAAE,IAAI;oBACb,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;oBACzB,GAAG,OAAO,CAAC,KAAK;oBAChB,UAAU,EAAE,GAAG;oBACf,UAAU,EAAE,GAAG;iBAChB,CAAC,CAAC;gBACH,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBACnH,OAAO;oBACL,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,QAAQ;oBACjB,IAAI,EAAE;wBACJ,EAAE;wBACF,GAAG,UAAU,CAAC,GAAG,CAAC;wBAClB,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;wBAC3C,yBAAyB,EAAE,UAAU;wBACrC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClE,mCAAmC,EAAE,IAAI,CAAC,mCAAmC,KAAK,IAAI;wBACtF,oCAAoC,EAAE,IAAI,CAAC,oCAAoC,KAAK,IAAI;wBACxF,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC/C,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC5C,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC1C,MAAM,EAAE,UAAU;wBAClB,yBAAyB,EAAE,GAAG;wBAC9B,uBAAuB,EAAE,GAAG,CAAC,CAAC,MAAM,oBAAoB,EAAE,EAAE;qBAC7D;iBACF,CAAC;YACJ,CAAC;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,4BAA4B;YACrC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACvB,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,CAAC;YAC3G,CAAC;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,4BAA4B;YACrC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACnB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACnB,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,OAAO,IAAI,CAAC;oBAAE,OAAO,CAAC,CAAC,KAAK,CAAC;gBACjC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;gBACxB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;gBACpB,MAAM,KAAK,GAAQ,EAAE,CAAC;gBACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;oBAC3F,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC;oBAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;wBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,sBAAsB,EAAE,gFAAgF,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC/O,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC7B,CAAC;gBACD,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;oBAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;gBACnG,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;oBAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACtE,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,sCAAsC,CAAC,CAAC;gBAC5O,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM,KAAK,GAAG,IAAA,oCAAkB,EAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC/K,IAAI,KAAK;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;gBAC9D,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;oBACvG,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAc,EAAC,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EAAE,aAAa,EAAE,CAAC,KAAK,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAa,EAAE,mBAAmB,EAAE,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,IAAA,kCAAiB,EAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;oBACnU,IAAI,CAAC,OAAO,CAAC,EAAE;wBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC9E,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAClD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,wBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzE,IAAI,OAAO,CAAC,MAAM;wBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,sBAAsB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC5G,IAAI,GAAG,CAAC,MAAM;wBAAE,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;gBAC7C,CAAC;gBACD,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAA,2BAAmB,EAAC,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;gBACtG,IAAI,OAAO;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,yBAAyB,EAAE,OAAO,CAAC,CAAC;gBAClE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC5D,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACtI,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,CAAC;YAChF,CAAC;SACF;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,4BAA4B;YACrC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,OAAO,IAAI,CAAC;oBAAE,OAAO,CAAC,CAAC,KAAK,CAAC;gBACjC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBACrH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YACzB,CAAC;SACF;QACD;YACE,yHAAyH;YACzH,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,mCAAmC;YAC5C,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACnB,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,OAAO,IAAI,CAAC;oBAAE,OAAO,CAAC,CAAC,KAAK,CAAC;gBACjC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;gBACxB,IAAI,MAAM,CAAC,WAAW,KAAK,MAAM;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,iBAAiB,EAAE,sCAAsC,CAAC,CAAC;gBAC/G,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iCAAiC,CAAC;gBACzD,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;gBACvC,MAAM,CAAC,cAAc,GAAG,GAAG,GAAG,UAAU,CAAC;gBACzC,MAAM,CAAC,MAAM,GAAG,QAAQ,IAAA,mBAAW,EAAC,EAAE,CAAC,EAAE,CAAC;gBAC1C,MAAM,CAAC,iBAAiB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7D,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;gBACxB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACnM,CAAC;SACF;QAED,mDAAmD;QACnD,GAAI,CAAC,KAAK,EAAE,MAAM,CAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAY,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEzI,yBAAyB;QACzB,GACE;YACE,CAAC,KAAK,EAAE,iBAAiB,CAAC;YAC1B,CAAC,QAAQ,EAAE,kBAAkB,CAAC;YAC9B,CAAC,OAAO,EAAE,kBAAkB,CAAC;SAEhC,CAAC,GAAG,CACH,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAY,EAAE,CAAC,CAAC;YAC/B,MAAM;YACN,OAAO,EAAE,oBAAoB;YAC7B,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACnB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACnB,MAAM,SAAS,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/F,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;gBAC1C,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,kBAAkB,EAAE,GAAG,MAAM,WAAW,KAAK,GAAG,EAAE,CAAC,CAAC;gBAC3I,IAAI,CAAC,SAAS;oBAAE,OAAO,GAAG,CAAC,GAAG,EAAE,iBAAiB,EAAE,4CAA4C,CAAC,CAAC;gBACjG,MAAM,GAAG,GAAG,MAAM,IAAA,0BAAkB,EAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAE,EAAE,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC;gBACtE,IAAI,OAAO,IAAI,GAAG;oBAAE,OAAO,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBAClE,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;gBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAE,OAAO,GAAG,CAAC,GAAG,EAAE,oBAAoB,EAAE,8BAA8B,MAAM,SAAS,CAAC,CAAC;gBACtH,MAAM,CAAC,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChD,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACnD,oFAAoF;gBACpF,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC;oBAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;gBACpL,IAAI,MAAM,KAAK,KAAK;oBAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;gBAC1E,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACxB,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;oBACrB,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;oBAC5B,KAAK,MAAM,CAAC,IAAI,IAAA,UAAE,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;wBACtC,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO;4BAAE,SAAS;wBAChD,IAAA,mBAAW,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAClB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;oBACnJ,CAAC;oBACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;gBAC5C,CAAC;gBACD,6DAA6D;gBAC7D,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,MAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrK,MAAM,OAAO,GAAG,CAAC,CAAC,qBAAqB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,qBAAmC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC3J,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,CAAC;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,iBAAiB,EAAE,sEAAsE,CAAC,CAAC;gBACxM,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC;gBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,IAAI,KAAK,CAAC,MAAM;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,iBAAiB,EAAE,8HAA8H,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxM,IAAI,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC;gBAC5B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;oBACpD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,iBAAiB,EAAE,0EAA0E,CAAC,CAAC;oBAC/J,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;gBAChD,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,iBAAiB,EAAE,2DAA2D,CAAC,CAAC;gBACnH,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9B,CAAC,CAAC,OAAO,GAAG,WAAW,CAAC;gBACxB,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACb,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC5B,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClB,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;YACtD,CAAC;SACF,CAAC,CACH;QAED,gBAAgB;QAChB;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,iCAAiC;YAC1C,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAAE,OAAO,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,uCAAuC,CAAC,CAAC;gBACxF,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;gBACrB,OAAO;oBACL,OAAO,EAAE,EAAE,eAAe,EAAE,sBAAsB,EAAE;oBACpD,IAAI,EAAE;wBACJ,MAAM,EAAE,GAAG;wBACX,sBAAsB,EAAE,GAAG,GAAG,mBAAmB;wBACjD,cAAc,EAAE,GAAG,GAAG,eAAe;wBACrC,QAAQ,EAAE,GAAG,GAAG,wBAAwB;wBACxC,sBAAsB,EAAE,GAAG,GAAG,oBAAoB;wBAClD,mBAAmB,EAAE,GAAG,GAAG,gBAAgB;wBAC3C,8BAA8B,EAAE,GAAG,GAAG,0BAA0B;wBAChE,mBAAmB,EAAE,GAAG,GAAG,wBAAwB;wBACnD,2BAA2B,EAAE,GAAG,GAAG,oBAAoB;wBACvD,qBAAqB,EAAE,CAAC,SAAS,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,eAAe,CAAC;wBAC/F,sBAAsB,EAAE,EAAE;wBAC1B,sBAAsB,EAAE,CAAC,QAAQ,CAAC;wBAClC,kBAAkB,EAAE,CAAC,eAAe,EAAE,mBAAmB,CAAC;wBAC1D,8BAA8B,EAAE,CAAC,eAAe,EAAE,mBAAmB,CAAC;wBACtE,gBAAgB,EAAE,CAAC,oBAAoB,CAAC;wBACxC,wBAAwB,EAAE,CAAC,MAAM,CAAC;wBAClC,wBAAwB,EAAE,CAAC,OAAO,CAAC;wBACnC,gCAAgC,EAAE,CAAC,MAAM,CAAC;wBAC1C,uBAAuB,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;wBAC/C,qCAAqC,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC;wBACvG,6CAA6C,EAAE,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC;wBAC/G,GAAG,CAAC,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,GAAG,GAAG,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAChG;iBACF,CAAC;YACJ,CAAC;SACF;QACD;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,0BAA0B;YACnC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACnB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACnB,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,OAAO,IAAI,EAAE;oBAAE,OAAO,EAAE,CAAC,KAAK,CAAC;gBACnC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,OAAO,IAAI,CAAC;oBAAE,OAAO,CAAC,CAAC,KAAK,CAAC;gBACjC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAY,CAAC,CAAC;gBACnM,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,4BAA4B,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;YAChH,CAAC;SACF;QACD;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,0BAA0B;YACnC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACnB,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,OAAO,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9I,CAAC;SACF;QACD,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,8BAA8B,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QAC1L;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,8BAA8B;YACvC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACnB,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,OAAO,IAAI,CAAC;oBAAE,OAAO,CAAC,CAAC,KAAK,CAAC;gBACjC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,OAAO,IAAI,CAAC;oBAAE,OAAO,CAAC,CAAC,KAAK,CAAC;gBACjC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC9B,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,CAAC;SACF;QACD;YACE,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,8BAA8B;YACvC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACnB,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,OAAO,IAAI,CAAC;oBAAE,OAAO,CAAC,CAAC,KAAK,CAAC;gBACjC,IAAA,WAAG,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACvC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YACzB,CAAC;SACF;QACD;YACE,qFAAqF;YACrF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,wBAAwB;YACjC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACnB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACnB,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,OAAO,IAAI,EAAE;oBAAE,OAAO,EAAE,CAAC,KAAK,CAAC;gBACnC,MAAM,GAAG,GAAY,CAAC,CAAC,IAAI,CAAC;gBAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;oBAAE,OAAO,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,4CAA4C,CAAC,CAAC;gBAC5H,MAAM,KAAK,GAA8D,EAAE,CAAC;gBAC5E,KAAK,MAAM,CAAC,IAAI,IAAa,EAAE,CAAC;oBAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC/F,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE;wBAAE,OAAO,MAAM,CAAC,GAAG,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAC;oBAC7G,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC;oBAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;wBAAE,OAAO,MAAM,CAAC,GAAG,EAAE,eAAe,EAAE,gDAAgD,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;oBACzL,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,EAAE,eAAe,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAa,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpF,CAAC;gBACD,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,EAAE,CAAC,CAAC;gBAC/B,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,iBAAiB,EAAE,CAAC,CAAC;gBAChH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;YAC3C,CAAC;SACF;QACD;YACE,qMAAqM;YACrM,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,oBAAoB;YAC7B,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAAE,OAAO,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,uCAAuC,CAAC,CAAC;gBACxF,MAAM,GAAG,GAAG,CAAC,CAAS,EAAS,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,2CAA2C,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;gBACtH,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,CAAC;gBAC5E,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO;oBAAE,OAAO,GAAG,CAAC,oCAAoC,CAAC,CAAC;gBAChF,MAAM,UAAU,GAAa,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;gBAC/D,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC7G,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAAE,OAAO,GAAG,CAAC,gFAAgF,CAAC,CAAC;gBAC9I,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC3C,MAAM,CAAC,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;oBAAE,OAAO,GAAG,CAAC,4EAA4E,CAAC,CAAC;gBACjI,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;gBAChD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI;oBAAE,OAAO,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAC3F,MAAM,EAAE,GAAG,CAAC,CAAqC,EAAS,EAAE;oBAC1D,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC5B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;wBAAE,IAAI,CAAC,KAAK,SAAS;4BAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACtF,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,CAAC;gBAC3F,CAAC,CAAC;gBACF,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACvC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAClD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,IAAK,CAAC,CAAC,MAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,UAAE,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAA,UAAE,EAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpP,IAAI,CAAC,IAAI;oBAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,gBAAgB,EAAE,sEAAsE,CAAC,CAAC;gBACtH,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,MAAM;oBAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC9F,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAClC,MAAM,IAAI,GAAG,IAAA,mBAAW,EAAC,EAAE,CAAC,CAAC;gBAC7B,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,iBAAiB,EAAE,CAAC,CAAC;gBACtG,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACrC,CAAC;SACF;KACF,CAAC;IAEF,SAAS,UAAU,CAAC,CAAS,EAAE,CAAM;QACnC,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAChL,OAAO,EAAE,MAAM,EAAE,4BAA4B,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,CAAC,CAAC,kBAAkB,EAAE,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;IACze,CAAC;AACH,CAAC;AAED,MAAM,eAAe,GAAG,8DAA8D,CAAC;AACvF,MAAM,mBAAmB,GAAG,+CAA+C,CAAC;AAC5E,MAAM,iBAAiB,GAAG,CAAC,GAAG,MAAM,CAAC;AACrC,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,qBAAqB,GAAG,CAAC,CAAM,EAAE,SAA6B,EAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC;AACnI,MAAM,UAAU,GAAG,CAAC,CAAM,EAAO,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;AAExG,wEAAwE;AAExE,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC1G,MAAM,IAAI,GAAG,CAAC,IAAY,EAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,8BAA8B,IAAI,gBAAgB,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,EAAE,CAAC,CAAC;AACvR,MAAM,YAAY,GAAG,CAAC,MAAW,EAAsB,EAAE;IACvD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IACvB,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC;IAClF,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC,CAAC;AAEF;;;;;GAKG;AACH,KAAK,UAAU,MAAM,CAAC,CAAe;IACnC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC;IACjB,MAAM,KAAK,GAAG,CAAC,CAAS,EAAsB,EAAE;QAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IAC/B,IAAI,IAA4D,CAAC;IACjE,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC;YAAE,IAAI,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;YACtL,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,MAAM,QAAQ,GAAG,IAAI,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAClH,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC,gEAAgE,CAAC,CAAC;IACtG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,+GAA+G;IAC/G,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;QAAE,IAAI,CAAC,MAAM,IAAA,4BAAU,EAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChI,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC;IAC9C,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG;QAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClE,KAAK,MAAM,CAAC,IAAI,IAAA,UAAE,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,OAAO;YAAE,IAAA,mBAAW,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnH,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,CAAC,UAAU,CACtB,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO;YAAE,OAAO;QAC9B,sEAAsE;QACtE,IAAI,EAAE,CAAC,sBAAsB;YAAE,MAAM,IAAA,8CAAwB,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACvG,IAAI,EAAE,CAAC,uBAAuB,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC;YAC9C,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IACF,IAAI,EAAsB,CAAC;IAC3B,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,KAAK,KAAK,SAAS;YAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5D,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IACD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,CAAC;IACxG,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,mCAAmC,EAAE,CAAC,CAAC,CAAC,+CAA+C,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,2BAA2B,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxQ,CAAC;AAED,yEAAyE;AAEzE,iGAAiG;AAC1F,KAAK,UAAU,cAAc,CAAC,CAAe,EAAE,MAAW;IAC/D,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnB,MAAM,CAAC,GAAG,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACrB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACpB,MAAM,CAAC,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,CAAS,EAAE,QAAa,EAAE,EAAE,EAAE,CAAC,IAAA,YAAI,EAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACvG,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC,GAAG,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;IACzG,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,4DAA4D,CAAC,CAAC;IAC5G,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,GAAG;QAAE,OAAO,OAAO,EAAE,CAAC;IACzD,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,GAAG,EAAE,iBAAiB,EAAE,gDAAgD,CAAC,CAAC;IAChK,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,IAAI,eAAe,CAAC;IAC1D,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM,KAAK,eAAe,IAAI,MAAM,KAAK,mBAAmB;QAAE,OAAO,CAAC,CAAC,GAAG,EAAE,iBAAiB,EAAE,iCAAiC,CAAC,CAAC;IAC1J,IAAI,MAAM,GAAuB,MAAM,CAAC,MAAM,CAAC;IAC/C,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YAClB,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,cAAc,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC;QACvK,MAAM,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/F,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC,GAAG,EAAE,gBAAgB,EAAE,mDAAmD,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,IAAA,mBAAW,EAAC,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,iBAAiB,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,0CAA0C,EAAE;YACrE,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,0CAA0C,EAAE,kBAAkB,EAAE,CAAC,eAAe,EAAE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7M,GAAG,CAAC,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,MAAM,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1G,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC,GAAG,EAAE,gBAAgB,EAAE,mDAAmD,CAAC,CAAC;IAC/H,MAAM,IAAI,GAAG,CAAC,CAAS,EAAY,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1I,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC;QAClB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1I,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,EAAE,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,8IAA8I;IAC9I,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAA,UAAE,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7K,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,WAAoB,EAAE,CAAC;gBAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC3C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;oBAAE,SAAS;gBACnD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,eAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjF,IAAI,CAAC,KAAK,CAAC,MAAM;oBAAE,SAAS;gBAC5B,QAAQ,GAAG,IAAI,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC,GAAG,EAAE,gBAAgB,EAAE,gEAAgE,CAAC,CAAC;IACrH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAChJ,gDAAgD;IAChD,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,MAAM,IAAA,kBAAU,EAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;IAClP,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,GAAG,IAAA,mBAAW,EAAC,EAAE,CAAC,CAAC;QACtB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAClI,CAAC;AAED,8HAA8H;AACvH,KAAK,UAAU,kBAAkB,CAAC,CAAe,EAAE,MAAW;IACnE,IAAI,IAAA,kBAAU,EAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,oBAAoB,CAAC;QAAE,OAAO,IAAA,YAAI,EAAC,GAAG,EAAE,eAAe,EAAE,+DAA+D,CAAC,CAAC;IACzK,MAAM,CAAC,GAAG,MAAM,IAAA,kBAAU,EAAC,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACtI,OAAO,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACrI,CAAC;AACM,MAAM,UAAU,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,IAAA,WAAG,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;AAA5D,QAAA,UAAU,cAAkD"}
@@ -1,5 +1,27 @@
1
1
  import type { Engine, Reply, RouteContext, RouteDef } from '../engine';
2
2
  import type { Obj } from '../openapi';
3
+ import { type AuthExt } from './oauth-adv';
4
+ export interface CibaRec {
5
+ id: string;
6
+ clientId: string;
7
+ userId: string;
8
+ scope: string[];
9
+ bindingMessage: string | null;
10
+ expiresAt: number;
11
+ interval: number;
12
+ lastPoll: number;
13
+ status: 'pending' | 'approved' | 'denied' | 'used';
14
+ /** The client's delivery mode when the request was made. */
15
+ mode: 'poll' | 'ping' | 'push';
16
+ /** A push request that expired undecided was announced to the client (`expired_token`). */
17
+ expiredNotified?: boolean;
18
+ notificationToken: string | null;
19
+ createdAt: number;
20
+ }
21
+ /** The CIBA requests of this engine (the delivery sweep announces expired push requests). */
22
+ export declare const cibaRecords: (e: Engine) => Map<string, CibaRec>;
23
+ /** The scopes a user holds a remembered consent for at a client, if any. */
24
+ export declare const heldConsent: (e: Engine, userId: string, clientId: string) => Set<string> | undefined;
3
25
  export declare const resetOAuthFlows: (_e: Engine) => void;
4
26
  /** Claim a DPoP proof's jti once inside its window; false when it was already used. */
5
27
  export declare function claimDpopJti(e: Engine, jkt: string, jti: string, ttlMs: number): boolean;
@@ -22,7 +44,9 @@ export declare function consentGate(e: Engine, a: {
22
44
  nonce: string | null;
23
45
  state?: string;
24
46
  prompt: string | null;
25
- }): Reply | null;
47
+ ext?: AuthExt;
48
+ force?: boolean;
49
+ }): Promise<Reply | null>;
26
50
  /** `device_code` and `ciba` grants. Returns undefined for any other grant type. */
27
51
  export declare function extensionGrant(c: RouteContext, client: Obj, type: string, cnf: Obj | undefined): Promise<Reply | undefined>;
28
52
  export declare function oauthFlowHandlers(): RouteDef[];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resetOAuthFlows = void 0;
3
+ exports.resetOAuthFlows = exports.heldConsent = exports.cibaRecords = void 0;
4
4
  exports.claimDpopJti = claimDpopJti;
5
5
  exports.resolveRequestUri = resolveRequestUri;
6
6
  exports.consentGate = consentGate;
@@ -9,7 +9,11 @@ exports.oauthFlowHandlers = oauthFlowHandlers;
9
9
  const errors_1 = require("../errors");
10
10
  const store_1 = require("../store");
11
11
  const oauth_1 = require("./oauth");
12
+ const oauth_adv_1 = require("./oauth-adv");
12
13
  const support_1 = require("./support");
14
+ const emu4_oauth_auth_1 = require("./emu4-oauth-auth");
15
+ const emu4_oauth_pub_1 = require("./emu4-oauth-pub");
16
+ const emu4_oauth_delivery_1 = require("./emu4-oauth-delivery");
13
17
  /**
14
18
  * The OAuth provider's interactive and out-of-band flows, on top of the core in `oauth.ts`: the consent screen (built-in
15
19
  * `/oauth2/authorize/consent` and the delegated `/v1/oauth_consent_requests` challenge), pushed authorization requests
@@ -25,6 +29,12 @@ const DEVICE_TTL_S = 600;
25
29
  const POLL_INTERVAL_S = 5;
26
30
  const USER_CODE_ALPHABET = 'BCDFGHJKLMNPQRSTVWXZ';
27
31
  const flows = (0, support_1.engineState)(() => ({ par: new Map(), consents: new Map(), remembered: new Map(), devices: new Map(), ciba: new Map(), dpopSeen: new Map() }));
32
+ /** The CIBA requests of this engine (the delivery sweep announces expired push requests). */
33
+ const cibaRecords = (e) => flows(e).ciba;
34
+ exports.cibaRecords = cibaRecords;
35
+ /** The scopes a user holds a remembered consent for at a client, if any. */
36
+ const heldConsent = (e, userId, clientId) => flows(e).remembered.get(`${userId}|${clientId}`);
37
+ exports.heldConsent = heldConsent;
28
38
  const resetOAuthFlows = (_e) => undefined; // state lives in engineState, which engine.reset clears
29
39
  exports.resetOAuthFlows = resetOAuthFlows;
30
40
  /** Claim a DPoP proof's jti once inside its window; false when it was already used. */
@@ -40,13 +50,6 @@ function claimDpopJti(e, jkt, jti, ttlMs) {
40
50
  seen.set(key, now + ttlMs);
41
51
  return true;
42
52
  }
43
- const redirectTo = (uri, params) => {
44
- const u = new URL(uri);
45
- for (const [k, v] of Object.entries(params))
46
- if (v !== undefined)
47
- u.searchParams.set(k, v);
48
- return u.toString();
49
- };
50
53
  const found = (location) => ({ status: 302, headers: { location, 'cache-control': 'no-store' } });
51
54
  /** The user a flow acts for: an explicit id or email, else the one the emulator signs in, else the only user. */
52
55
  function resolveUser(e, hint, allowSole = true) {
@@ -73,18 +76,22 @@ function resolveRequestUri(e, query) {
73
76
  // ── consent ──────────────────────────────────────────────────────────
74
77
  const rememberKey = (userId, clientId) => `${userId}|${clientId}`;
75
78
  /** Where an authorize request must stop for the user's consent, or null when it can proceed (first-party client, consent not required, or already remembered). */
76
- function consentGate(e, a) {
79
+ async function consentGate(e, a) {
77
80
  const { client, user, scope, prompt } = a;
78
- const forced = prompt === 'consent';
81
+ const forced = prompt === 'consent' || a.force === true;
82
+ const ext = a.ext ?? oauth_adv_1.CODE_EXT;
79
83
  if (client.first_party === true || !(client.require_consent === true || forced))
80
84
  return null;
81
85
  const held = flows(e).remembered.get(rememberKey(user.id, client.id));
82
86
  if (!forced && held && scope.every((s) => held.has(s)))
83
87
  return null;
88
+ // One consent for a verified publisher's other apps (openid, email and profile only).
89
+ if (!forced && (0, emu4_oauth_pub_1.publisherDecision)(e, client, user.id, scope).skipConsent)
90
+ return null;
84
91
  if (prompt === 'none')
85
- return found(redirectTo(a.redirectUri, { error: 'consent_required', error_description: 'The user has not consented to these scopes.', state: a.state, iss: e.issuer }));
92
+ return (0, emu4_oauth_auth_1.authReply)(e, client, a.redirectUri, (0, oauth_adv_1.authUrl)(e, a.redirectUri, { error: 'consent_required', error_description: 'The user has not consented to these scopes.', state: a.state, iss: e.issuer }, !!(0, oauth_adv_1.parseResponseType)(ext.rt)?.frontChannelTokens, ext.mode), ext.mode);
86
93
  const id = `consent_${(0, store_1.randomToken)(24)}`;
87
- flows(e).consents.set(id, { id, clientId: client.id, userId: user.id, scope, redirectUri: a.redirectUri, challenge: a.challenge, nonce: a.nonce, state: a.state, expiresAt: e.clock.now() + CONSENT_TTL_MS, status: 'pending' });
94
+ flows(e).consents.set(id, { id, clientId: client.id, userId: user.id, scope, redirectUri: a.redirectUri, challenge: a.challenge, nonce: a.nonce, state: a.state, ext, expiresAt: e.clock.now() + CONSENT_TTL_MS, status: 'pending' });
88
95
  return found(`${e.issuer}/oauth2/authorize/consent?consent_token=${id}`);
89
96
  }
90
97
  function liveConsent(e, id) {
@@ -94,8 +101,8 @@ function liveConsent(e, id) {
94
101
  return c;
95
102
  }
96
103
  /** Answer a consent request; returns the URL to send the browser to. The scopes granted are always a subset of what was asked. */
97
- function settleConsent(e, c, d) {
98
- const back = (p) => redirectTo(c.redirectUri, { ...p, state: c.state, iss: e.issuer });
104
+ async function settleConsent(e, c, d) {
105
+ const back = (p) => (0, oauth_adv_1.authUrl)(e, c.redirectUri, { ...p, state: c.state, iss: e.issuer }, !!(0, oauth_adv_1.parseResponseType)(c.ext.rt)?.frontChannelTokens, c.ext.mode);
99
106
  const client = e.db.oauthClients.get(c.clientId);
100
107
  if (!client || client.deleted) {
101
108
  c.status = 'rejected';
@@ -115,7 +122,7 @@ function settleConsent(e, c, d) {
115
122
  const key = rememberKey(c.userId, c.clientId);
116
123
  flows(e).remembered.set(key, new Set([...(flows(e).remembered.get(key) ?? []), ...grant]));
117
124
  }
118
- return back({ code: (0, oauth_1.issueCode)(e, { client, userId: c.userId, scope: grant, redirectUri: c.redirectUri, challenge: c.challenge, nonce: c.nonce }) });
125
+ return (0, oauth_adv_1.completeAuth)(e, { client, userId: c.userId, scope: grant, redirectUri: c.redirectUri, challenge: c.challenge, nonce: c.nonce, state: c.state, ext: c.ext });
119
126
  }
120
127
  // ── extension grants on /oauth2/token ────────────────────────────────
121
128
  const pendingErr = (error, description) => (0, oauth_1.fail)(400, error, description);
@@ -129,6 +136,9 @@ async function extensionGrant(c, client, type, cnf) {
129
136
  const rec = isDevice ? flows(e).devices.get(String(c.body.device_code ?? '')) : flows(e).ciba.get(String(c.body.auth_req_id ?? ''));
130
137
  if (!rec || rec.clientId !== client.id || rec.status === 'used')
131
138
  return (0, oauth_1.fail)(400, 'invalid_grant', isDevice ? 'The device_code is invalid.' : 'The auth_req_id is invalid.');
139
+ // CIBA 10.3: a push-mode client is sent the tokens and never polls.
140
+ if (!isDevice && rec.mode === 'push')
141
+ return (0, oauth_1.fail)(400, 'invalid_request', 'This request uses push delivery; the tokens are sent to the client notification endpoint.');
132
142
  if (rec.expiresAt <= now)
133
143
  return pendingErr('expired_token', 'The request expired.');
134
144
  if (rec.status === 'denied') {
@@ -167,8 +177,8 @@ function scopeFor(client, asked) {
167
177
  }
168
178
  function oauthFlowHandlers() {
169
179
  const cibaView = (r) => ({ id: r.id, scope: r.scope, binding_message: r.bindingMessage, created_at: r.createdAt, expires_at: r.expiresAt });
170
- const requireClient = (e, c, needGrant) => {
171
- const auth = (0, oauth_1.authenticateClient)(e, c);
180
+ const requireClient = async (e, c, needGrant) => {
181
+ const auth = await (0, oauth_1.authenticateClient)(e, c);
172
182
  if ('error' in auth)
173
183
  return auth;
174
184
  if (needGrant && !auth.client.grant_types.includes(needGrant))
@@ -181,13 +191,28 @@ function oauthFlowHandlers() {
181
191
  method: 'POST',
182
192
  pattern: '/oauth2/par',
183
193
  public: true,
184
- handler: (c) => {
194
+ handler: async (c) => {
185
195
  const e = c.engine;
186
- const auth = requireClient(e, c);
196
+ const auth = await requireClient(e, c);
187
197
  if ('error' in auth)
188
198
  return auth.error;
189
199
  const client = auth.client;
190
- const b = c.body;
200
+ const b = { ...c.body };
201
+ let rarRaw = b.authorization_details;
202
+ // A signed request object supersedes the body parameters (RFC 9101).
203
+ if (b.request) {
204
+ const loaded = await (0, oauth_adv_1.loadRequestObject)(e, client, { request: String(b.request) });
205
+ if (!loaded.ok)
206
+ return (0, oauth_1.fail)(400, loaded.error === 'invalid_request' ? 'invalid_request' : 'invalid_request_object', loaded.description);
207
+ for (const k of oauth_adv_1.REQUEST_OBJECT_PARAMS)
208
+ if (typeof loaded.claims[k] === 'string')
209
+ b[k] = loaded.claims[k];
210
+ if (loaded.claims.authorization_details !== undefined)
211
+ rarRaw = loaded.claims.authorization_details;
212
+ delete b.request;
213
+ }
214
+ else if (client.require_signed_request_object === true)
215
+ return (0, oauth_1.fail)(400, 'invalid_request', 'This client must send a signed request object.');
191
216
  if (b.request_uri)
192
217
  return (0, oauth_1.fail)(400, 'invalid_request', 'request_uri is not allowed here.');
193
218
  if (b.client_id && b.client_id !== client.id)
@@ -195,20 +220,31 @@ function oauthFlowHandlers() {
195
220
  const redirectUri = typeof b.redirect_uri === 'string' ? b.redirect_uri : undefined;
196
221
  if (!redirectUri || !client.redirect_uris.includes(redirectUri))
197
222
  return (0, oauth_1.fail)(400, 'invalid_request', 'The redirect_uri does not match a registered URI.');
198
- if (b.response_type !== 'code')
199
- return (0, oauth_1.fail)(400, 'unsupported_response_type', 'Only response_type=code is supported.');
223
+ const rt = (0, oauth_adv_1.parseResponseType)(b.response_type);
224
+ if (!rt)
225
+ return (0, oauth_1.fail)(400, 'unsupported_response_type', 'The response_type is not supported.');
226
+ if (!(0, oauth_adv_1.clientResponseTypes)(client).includes(rt.canonical))
227
+ return (0, oauth_1.fail)(400, 'unauthorized_client', 'This client is not registered for this response_type.');
200
228
  const asked = (0, oauth_1.splitScope)(b.scope ?? 'openid');
201
229
  const outside = asked.filter((s) => !client.allowed_scopes.includes(s) && !['openid', 'profile', 'email', 'offline_access'].includes(s));
202
230
  if (outside.length)
203
231
  return (0, oauth_1.fail)(400, 'invalid_scope', `Scope not allowed: ${outside.join(' ')}.`);
204
232
  if (b.code_challenge && (b.code_challenge_method ?? 'plain') !== 'S256')
205
233
  return (0, oauth_1.fail)(400, 'invalid_request', 'code_challenge_method must be S256.');
206
- if (!b.code_challenge && client.auth_method === 'none')
234
+ if (!b.code_challenge && rt.code && client.auth_method === 'none')
207
235
  return (0, oauth_1.fail)(400, 'invalid_request', 'A public client must use PKCE (code_challenge).');
236
+ const rar = (0, oauth_adv_1.validateAuthorizationDetails)(rarRaw, (0, oauth_adv_1.adv)(e).cfg.authorization_details_types);
237
+ if (!rar.ok)
238
+ return (0, oauth_1.fail)(400, 'invalid_authorization_details', rar.message);
239
+ const gm = (0, oauth_adv_1.parseGrantManagement)(b.grant_management_action, b.grant_id);
240
+ if (!gm.ok)
241
+ return (0, oauth_1.fail)(400, 'invalid_request', gm.message);
208
242
  const params = {};
209
243
  for (const [k, v] of Object.entries(b))
210
244
  if (typeof v === 'string' && !['client_secret', 'client_id'].includes(k))
211
245
  params[k] = v;
246
+ if (rar.value)
247
+ params.authorization_details = JSON.stringify(rar.value);
212
248
  const uri = `urn:ietf:params:oauth:request_uri:${(0, store_1.randomToken)(24)}`;
213
249
  flows(e).par.set(uri, { clientId: client.id, params, expiresAt: e.clock.now() + PAR_TTL_MS, used: false });
214
250
  return { status: 201, body: { request_uri: uri, expires_in: PAR_TTL_MS / 1000 }, headers: { 'cache-control': 'no-store' } };
@@ -223,20 +259,21 @@ function oauthFlowHandlers() {
223
259
  const e = c.engine;
224
260
  const r = liveConsent(e, c.query.get('consent_token'));
225
261
  const client = e.db.oauthClients.get(r.clientId);
226
- return { body: { object: 'oauth_consent_screen', consent_token: r.id, client: { id: client.id, name: client.name }, user_id: r.userId, requested_scope: r.scope, expires_at: r.expiresAt } };
262
+ const pub = (0, emu4_oauth_pub_1.publisherDecision)(e, client, r.userId, r.scope);
263
+ return { body: { object: 'oauth_consent_screen', consent_token: r.id, client: { id: client.id, name: client.name, ...(pub.publisherName ? { published_by: pub.publisherName } : {}) }, user_id: r.userId, requested_scope: r.scope, expires_at: r.expiresAt } };
227
264
  },
228
265
  },
229
266
  {
230
267
  method: 'POST',
231
268
  pattern: '/oauth2/authorize/consent',
232
269
  public: true,
233
- handler: (c) => {
270
+ handler: async (c) => {
234
271
  const e = c.engine;
235
272
  const r = liveConsent(e, typeof c.body.consent_token === 'string' ? c.body.consent_token : null);
236
273
  const approve = c.body.decision === 'approve';
237
274
  if (!approve && c.body.decision !== 'deny')
238
275
  throw new errors_1.EmulatorError('VALIDATION_FAILED', 'decision must be approve or deny.', 'decision');
239
- return found(settleConsent(e, r, { approve }));
276
+ return (0, emu4_oauth_auth_1.authReply)(e, e.db.oauthClients.get(r.clientId), r.redirectUri, await settleConsent(e, r, { approve }), r.ext.mode);
240
277
  },
241
278
  },
242
279
  // ── consent: the delegated challenge (a customer's own consent page) ──
@@ -253,21 +290,21 @@ function oauthFlowHandlers() {
253
290
  {
254
291
  method: 'PUT',
255
292
  pattern: '/v1/oauth_consent_requests/accept',
256
- handler: (c) => {
293
+ handler: async (c) => {
257
294
  const e = c.engine;
258
295
  const r = liveConsent(e, c.query.get('consent_challenge'));
259
296
  if (c.body.grant_scope !== undefined && (!Array.isArray(c.body.grant_scope) || c.body.grant_scope.some((s) => typeof s !== 'string')))
260
297
  throw new errors_1.EmulatorError('VALIDATION_FAILED', 'grant_scope must be a list of scopes.', 'grant_scope');
261
- return { body: { object: 'oauth_consent_redirect', redirect_to: settleConsent(e, r, { approve: true, grant: c.body.grant_scope, remember: c.body.remember }) } };
298
+ return { body: { object: 'oauth_consent_redirect', redirect_to: await settleConsent(e, r, { approve: true, grant: c.body.grant_scope, remember: c.body.remember }) } };
262
299
  },
263
300
  },
264
301
  {
265
302
  method: 'PUT',
266
303
  pattern: '/v1/oauth_consent_requests/reject',
267
- handler: (c) => {
304
+ handler: async (c) => {
268
305
  const e = c.engine;
269
306
  const r = liveConsent(e, c.query.get('consent_challenge'));
270
- return { body: { object: 'oauth_consent_redirect', redirect_to: settleConsent(e, r, { approve: false, error: c.body.error, description: c.body.error_description }) } };
307
+ return { body: { object: 'oauth_consent_redirect', redirect_to: await settleConsent(e, r, { approve: false, error: c.body.error, description: c.body.error_description }) } };
271
308
  },
272
309
  },
273
310
  // ── device authorization ──
@@ -275,9 +312,9 @@ function oauthFlowHandlers() {
275
312
  method: 'POST',
276
313
  pattern: '/oauth2/device_authorization',
277
314
  public: true,
278
- handler: (c) => {
315
+ handler: async (c) => {
279
316
  const e = c.engine;
280
- const auth = requireClient(e, c, DEVICE_GRANT);
317
+ const auth = await requireClient(e, c, DEVICE_GRANT);
281
318
  if ('error' in auth)
282
319
  return auth.error;
283
320
  const scope = scopeFor(auth.client, c.body.scope);
@@ -334,18 +371,33 @@ function oauthFlowHandlers() {
334
371
  method: 'POST',
335
372
  pattern: '/oauth2/backchannel_authentication',
336
373
  public: true,
337
- handler: (c) => {
374
+ handler: async (c) => {
338
375
  const e = c.engine;
339
- const auth = requireClient(e, c, CIBA_GRANT);
376
+ const auth = await requireClient(e, c, CIBA_GRANT);
340
377
  if ('error' in auth)
341
378
  return auth.error;
342
379
  const client = auth.client;
343
380
  if (client.auth_method === 'none')
344
381
  return (0, oauth_1.fail)(400, 'invalid_client', 'CIBA requires a confidential client.');
345
- const scope = scopeFor(client, c.body.scope);
382
+ // A signed authentication request carries the parameters in a JWT (OpenID CIBA 7.1.1).
383
+ let body = { ...c.body };
384
+ if (body.request) {
385
+ const loaded = await (0, oauth_adv_1.loadRequestObject)(e, client, { request: String(body.request) });
386
+ if (!loaded.ok)
387
+ return (0, oauth_1.fail)(400, 'invalid_request_object', loaded.description);
388
+ for (const k of ['scope', 'login_hint', 'id_token_hint', 'binding_message', 'user_code', 'client_notification_token', 'acr_values'])
389
+ if (typeof loaded.claims[k] === 'string')
390
+ body[k] = loaded.claims[k];
391
+ if (loaded.claims.requested_expiry !== undefined)
392
+ body.requested_expiry = String(loaded.claims.requested_expiry);
393
+ delete body.request;
394
+ }
395
+ else if (client.require_signed_request_object === true)
396
+ return (0, oauth_1.fail)(400, 'invalid_request', 'This client must send a signed authentication request.');
397
+ const scope = scopeFor(client, body.scope);
346
398
  if ('error' in scope)
347
399
  return scope.error;
348
- const hint = typeof c.body.login_hint === 'string' ? c.body.login_hint : '';
400
+ const hint = typeof body.login_hint === 'string' ? body.login_hint : '';
349
401
  if (!hint)
350
402
  return (0, oauth_1.fail)(400, 'invalid_request', 'login_hint is required.');
351
403
  const user = resolveUser(e, hint, false);
@@ -353,26 +405,27 @@ function oauthFlowHandlers() {
353
405
  return (0, oauth_1.fail)(400, 'unknown_user_id', 'No user matches the login_hint.');
354
406
  if (user.banned)
355
407
  return (0, oauth_1.fail)(400, 'access_denied', 'The user is banned.');
356
- const binding = c.body.binding_message;
408
+ const binding = body.binding_message;
357
409
  if (binding !== undefined && (typeof binding !== 'string' || binding.length > 64 || !/^[\x20-\x7e]*$/.test(binding)))
358
410
  return (0, oauth_1.fail)(400, 'invalid_binding_message', 'binding_message is up to 64 printable characters.');
359
- const expiry = c.body.requested_expiry === undefined ? 120 : Number(c.body.requested_expiry);
411
+ const expiry = body.requested_expiry === undefined ? 120 : Number(body.requested_expiry);
360
412
  if (!Number.isInteger(expiry) || expiry < 1 || expiry > 3600)
361
413
  return (0, oauth_1.fail)(400, 'invalid_request', 'requested_expiry is a whole number of seconds from 1 to 3600.');
362
414
  const mode = client.backchannel_token_delivery_mode ?? 'poll';
363
415
  let token = null;
364
- if (mode === 'ping') {
365
- const t = c.body.client_notification_token;
416
+ if (mode !== 'poll') {
417
+ const t = body.client_notification_token;
418
+ // The notification token is the bearer secret of the client's callback: at least 128 bits (22 base64url characters).
366
419
  if (typeof t !== 'string' || t.length < 22 || t.length > 1024 || !/^[\x21-\x7e]+$/.test(t))
367
- return (0, oauth_1.fail)(400, 'invalid_request', 'client_notification_token is required (22 to 1024 printable characters) for ping.');
420
+ return (0, oauth_1.fail)(400, 'invalid_request', 'client_notification_token is required (22 to 1024 printable characters) for ping and push.');
368
421
  if (!client.backchannel_client_notification_endpoint)
369
422
  return (0, oauth_1.fail)(400, 'invalid_request', 'This client has no notification endpoint registered.');
370
423
  token = t;
371
424
  }
372
425
  const now = e.clock.now();
373
- const rec = { id: `ciba_${(0, store_1.randomToken)(24)}`, clientId: client.id, userId: user.id, scope, bindingMessage: binding ?? null, expiresAt: now + expiry * 1000, interval: POLL_INTERVAL_S, lastPoll: 0, status: 'pending', notificationToken: token, createdAt: now };
426
+ const rec = { id: `ciba_${(0, store_1.randomToken)(24)}`, clientId: client.id, userId: user.id, scope, bindingMessage: binding ?? null, expiresAt: now + expiry * 1000, interval: POLL_INTERVAL_S, lastPoll: 0, status: 'pending', mode, notificationToken: token, createdAt: now };
374
427
  flows(e).ciba.set(rec.id, rec);
375
- return { body: { auth_req_id: rec.id, expires_in: expiry, ...(mode === 'poll' ? { interval: POLL_INTERVAL_S } : {}) }, headers: { 'cache-control': 'no-store' } };
428
+ return { body: { auth_req_id: rec.id, expires_in: expiry, ...(mode === 'push' ? {} : { interval: POLL_INTERVAL_S }) }, headers: { 'cache-control': 'no-store' } };
376
429
  },
377
430
  },
378
431
  {
@@ -403,15 +456,23 @@ function oauthFlowHandlers() {
403
456
  const approve = c.body.decision === 'approve';
404
457
  rec.status = approve ? 'approved' : 'denied';
405
458
  const client = e.db.oauthClients.get(rec.clientId);
406
- if (client?.backchannel_token_delivery_mode === 'ping' && client.backchannel_client_notification_endpoint && rec.notificationToken) {
407
- try {
408
- await (e.options.fetch ?? fetch)(client.backchannel_client_notification_endpoint, { method: 'POST', headers: { 'content-type': 'application/json', authorization: `Bearer ${rec.notificationToken}` }, body: JSON.stringify({ auth_req_id: rec.id }) });
409
- }
410
- catch {
411
- /* a failed ping leaves the request pollable */
459
+ if (rec.mode !== 'poll' && client?.backchannel_client_notification_endpoint && rec.notificationToken) {
460
+ // Ping carries only the auth_req_id; push carries the token response (or the refusal) itself and is spent by it (CIBA 10.2, 10.3).
461
+ let payload = { auth_req_id: rec.id };
462
+ if (rec.mode === 'push') {
463
+ if (!approve)
464
+ payload = { auth_req_id: rec.id, error: 'access_denied', error_description: 'The user denied the request.' };
465
+ else {
466
+ rec.status = 'used';
467
+ const grant = { id: e.db.newId('oag'), clientId: client.id, userId: rec.userId, scope: rec.scope, revoked: false, jtis: new Set() };
468
+ (0, oauth_1.st)(e).grants.set(grant.id, grant);
469
+ payload = { auth_req_id: rec.id, ...(await (0, oauth_1.issueTokens)(e, client, grant, null, e.clock.now())) };
470
+ }
412
471
  }
472
+ // Queued with the real retry schedule: a failing endpoint is retried as the clock advances; a failed ping leaves the request pollable.
473
+ await (0, emu4_oauth_delivery_1.enqueueCiba)(e, { kind: rec.mode === 'push' ? 'ciba_push' : 'ciba_ping', clientId: client.id, requestId: rec.id, endpoint: client.backchannel_client_notification_endpoint, token: rec.notificationToken, payload });
413
474
  }
414
- return { body: { object: 'backchannel_request', id: rec.id, status: rec.status } };
475
+ return { body: { object: 'backchannel_request', id: rec.id, status: approve ? 'approved' : 'denied' } };
415
476
  },
416
477
  },
417
478
  ];