@syncfusion/ej2-office-common 35.1.37 → 35.1.43

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 (226) hide show
  1. package/dist/ej2-office-common.umd.min.js +2 -2
  2. package/dist/ej2-office-common.umd.min.js.map +1 -1
  3. package/dist/es6/ej2-office-common.es2015.js +5421 -6017
  4. package/dist/es6/ej2-office-common.es2015.js.map +1 -1
  5. package/dist/es6/ej2-office-common.es5.js +6270 -7203
  6. package/dist/es6/ej2-office-common.es5.js.map +1 -1
  7. package/dist/global/ej2-office-common.min.js +2 -2
  8. package/dist/global/ej2-office-common.min.js.map +1 -1
  9. package/dist/global/index.d.ts +1 -1
  10. package/office-common.js +4 -0
  11. package/package.json +11 -7
  12. package/src/index.d.ts +3 -17
  13. package/src/index.js +3 -18
  14. package/src/office-common/features/index.d.ts +6 -0
  15. package/src/office-common/features/index.js +6 -0
  16. package/src/office-common/features/mathml/index.d.ts +25 -0
  17. package/src/office-common/features/mathml/index.js +22 -0
  18. package/src/office-common/features/mathml/latex/latex-generator.d.ts +8 -0
  19. package/src/office-common/features/mathml/latex/latex-generator.js +357 -0
  20. package/src/office-common/features/mathml/latex/latex-parser.d.ts +87 -0
  21. package/src/office-common/features/mathml/latex/latex-parser.js +1206 -0
  22. package/src/office-common/features/mathml/latex/latex-symbols.d.ts +13 -0
  23. package/src/office-common/features/mathml/latex/latex-symbols.js +681 -0
  24. package/src/office-common/features/mathml/math-settings.d.ts +54 -0
  25. package/src/office-common/features/mathml/math-settings.js +174 -0
  26. package/src/office-common/features/mathml/office-math/adapter.d.ts +59 -0
  27. package/src/office-common/features/mathml/office-math/adapter.js +6 -0
  28. package/src/office-common/features/mathml/office-math/basic.d.ts +91 -0
  29. package/src/office-common/features/mathml/office-math/basic.js +93 -0
  30. package/src/office-common/features/mathml/office-math/break.d.ts +30 -0
  31. package/src/office-common/features/mathml/office-math/break.js +75 -0
  32. package/src/office-common/features/mathml/office-math/collection.d.ts +104 -0
  33. package/src/office-common/features/mathml/office-math/collection.js +170 -0
  34. package/src/office-common/features/mathml/office-math/entity.d.ts +12 -0
  35. package/src/office-common/features/mathml/office-math/entity.js +3 -0
  36. package/src/office-common/features/mathml/office-math/enums.d.ts +97 -0
  37. package/src/office-common/features/mathml/office-math/enums.js +108 -0
  38. package/src/office-common/features/mathml/office-math/format.d.ts +28 -0
  39. package/src/office-common/features/mathml/office-math/format.js +90 -0
  40. package/src/office-common/features/mathml/office-math/function-base.d.ts +27 -0
  41. package/src/office-common/features/mathml/office-math/function-base.js +69 -0
  42. package/src/office-common/features/mathml/office-math/function-collection.d.ts +29 -0
  43. package/src/office-common/features/mathml/office-math/function-collection.js +76 -0
  44. package/src/office-common/features/mathml/office-math/functions-basic.d.ts +118 -0
  45. package/src/office-common/features/mathml/office-math/functions-basic.js +331 -0
  46. package/src/office-common/features/mathml/office-math/functions-multi.d.ts +156 -0
  47. package/src/office-common/features/mathml/office-math/functions-multi.js +407 -0
  48. package/src/office-common/features/mathml/office-math/index.d.ts +27 -0
  49. package/src/office-common/features/mathml/office-math/index.js +25 -0
  50. package/src/office-common/features/mathml/office-math/keys.d.ts +6 -0
  51. package/src/office-common/features/mathml/office-math/keys.js +20 -0
  52. package/src/office-common/features/mathml/office-math/math-clone.d.ts +20 -0
  53. package/src/office-common/features/mathml/office-math/math-clone.js +203 -0
  54. package/src/office-common/features/mathml/office-math/math-collection.d.ts +19 -0
  55. package/src/office-common/features/mathml/office-math/math-collection.js +41 -0
  56. package/src/office-common/features/mathml/office-math/math-equality.d.ts +21 -0
  57. package/src/office-common/features/mathml/office-math/math-equality.js +115 -0
  58. package/src/office-common/features/mathml/office-math/math-paragraph.d.ts +58 -0
  59. package/src/office-common/features/mathml/office-math/math-paragraph.js +126 -0
  60. package/src/office-common/features/mathml/office-math/math-traversal.d.ts +23 -0
  61. package/src/office-common/features/mathml/office-math/math-traversal.js +95 -0
  62. package/src/office-common/features/mathml/office-math/matrix-collections.d.ts +54 -0
  63. package/src/office-common/features/mathml/office-math/matrix-collections.js +113 -0
  64. package/src/office-common/features/mathml/office-math/matrix-column.d.ts +43 -0
  65. package/src/office-common/features/mathml/office-math/matrix-column.js +96 -0
  66. package/src/office-common/features/mathml/office-math/matrix-row.d.ts +38 -0
  67. package/src/office-common/features/mathml/office-math/matrix-row.js +71 -0
  68. package/src/office-common/features/mathml/office-math/matrix.d.ts +62 -0
  69. package/src/office-common/features/mathml/office-math/matrix.js +158 -0
  70. package/src/office-common/features/mathml/office-math/office-math.d.ts +55 -0
  71. package/src/office-common/features/mathml/office-math/office-math.js +116 -0
  72. package/src/office-common/features/mathml/office-math/owner-holder.d.ts +42 -0
  73. package/src/office-common/features/mathml/office-math/owner-holder.js +87 -0
  74. package/src/office-common/features/mathml/office-math/property-store.d.ts +66 -0
  75. package/src/office-common/features/mathml/office-math/property-store.js +99 -0
  76. package/src/office-common/features/mathml/office-math/run-element.d.ts +31 -0
  77. package/src/office-common/features/mathml/office-math/run-element.js +97 -0
  78. package/src/office-common/features/mathml/office-math/unknown-element.d.ts +37 -0
  79. package/src/office-common/features/mathml/office-math/unknown-element.js +62 -0
  80. package/src/office-common/features/mathml/office-math/xml-equal.d.ts +13 -0
  81. package/src/office-common/features/mathml/office-math/xml-equal.js +24 -0
  82. package/src/office-common/features/mathml/parse/office-math-parser.d.ts +24 -0
  83. package/src/office-common/features/mathml/parse/office-math-parser.js +396 -0
  84. package/src/office-common/features/mathml/parse/office-math-properties.d.ts +165 -0
  85. package/src/office-common/features/mathml/parse/office-math-properties.js +432 -0
  86. package/src/office-common/features/mathml/parse/parse-options.d.ts +22 -0
  87. package/src/office-common/features/mathml/parse/parse-options.js +3 -0
  88. package/src/office-common/features/mathml/serialize/office-math-properties-writer.d.ts +38 -0
  89. package/src/office-common/features/mathml/serialize/office-math-properties-writer.js +267 -0
  90. package/src/office-common/features/mathml/serialize/office-math-serializer.d.ts +23 -0
  91. package/src/office-common/features/mathml/serialize/office-math-serializer.js +306 -0
  92. package/src/office-common/features/mathml/serialize/omml-writer.d.ts +123 -0
  93. package/src/office-common/features/mathml/serialize/omml-writer.js +135 -0
  94. package/src/office-common/index.d.ts +10 -0
  95. package/src/office-common/index.js +10 -0
  96. package/.eslintrc.json +0 -263
  97. package/.prettierrc.json +0 -5
  98. package/api-extractor.json +0 -35
  99. package/core.js +0 -4
  100. package/encryption.js +0 -4
  101. package/features.js +0 -4
  102. package/global.json +0 -6
  103. package/nuget.config +0 -7
  104. package/src/all.d.ts +0 -41
  105. package/src/all.js +0 -38
  106. package/src/features/index.d.ts +0 -11
  107. package/src/features/index.js +0 -11
  108. package/src/features/mathml/index.d.ts +0 -30
  109. package/src/features/mathml/index.js +0 -22
  110. package/src/features/mathml/math-factory.d.ts +0 -26
  111. package/src/features/mathml/math-factory.js +0 -568
  112. package/src/features/mathml/model/controls.d.ts +0 -896
  113. package/src/features/mathml/model/controls.js +0 -1541
  114. package/src/features/mathml/model/math-element.d.ts +0 -173
  115. package/src/features/mathml/model/math-element.js +0 -315
  116. package/src/features/mathml/model/roots.d.ts +0 -82
  117. package/src/features/mathml/model/roots.js +0 -177
  118. package/src/features/mathml/parse/math-parser.d.ts +0 -43
  119. package/src/features/mathml/parse/math-parser.js +0 -636
  120. package/src/features/mathml/serialize/math-serializer.d.ts +0 -34
  121. package/src/features/mathml/serialize/math-serializer.js +0 -749
  122. package/tsconfig.build.json +0 -13
  123. package/tsconfig.harness.json +0 -32
  124. package/tslint.json +0 -111
  125. /package/src/{core → office-common/core}/index.d.ts +0 -0
  126. /package/src/{core → office-common/core}/index.js +0 -0
  127. /package/src/{core → office-common/core}/xml/index.d.ts +0 -0
  128. /package/src/{core → office-common/core}/xml/index.js +0 -0
  129. /package/src/{core → office-common/core}/xml/model.d.ts +0 -0
  130. /package/src/{core → office-common/core}/xml/model.js +0 -0
  131. /package/src/{encryption → office-common/encryption}/agile-constants.d.ts +0 -0
  132. /package/src/{encryption → office-common/encryption}/agile-constants.js +0 -0
  133. /package/src/{encryption → office-common/encryption}/agile-encryption-info.d.ts +0 -0
  134. /package/src/{encryption → office-common/encryption}/agile-encryption-info.js +0 -0
  135. /package/src/{encryption → office-common/encryption}/agile-password.d.ts +0 -0
  136. /package/src/{encryption → office-common/encryption}/agile-password.js +0 -0
  137. /package/src/{encryption → office-common/encryption}/cfb-reader.d.ts +0 -0
  138. /package/src/{encryption → office-common/encryption}/cfb-reader.js +0 -0
  139. /package/src/{encryption → office-common/encryption}/crypto-primitives.d.ts +0 -0
  140. /package/src/{encryption → office-common/encryption}/crypto-primitives.js +0 -0
  141. /package/src/{encryption → office-common/encryption}/decrypt-encrypted-package.d.ts +0 -0
  142. /package/src/{encryption → office-common/encryption}/decrypt-encrypted-package.js +0 -0
  143. /package/src/{encryption → office-common/encryption}/encryption-info-xml.d.ts +0 -0
  144. /package/src/{encryption → office-common/encryption}/encryption-info-xml.js +0 -0
  145. /package/src/{encryption → office-common/encryption}/errors.d.ts +0 -0
  146. /package/src/{encryption → office-common/encryption}/errors.js +0 -0
  147. /package/src/{encryption → office-common/encryption}/index.d.ts +0 -0
  148. /package/src/{encryption → office-common/encryption}/index.js +0 -0
  149. /package/src/{features → office-common/features}/diagrams/constants.d.ts +0 -0
  150. /package/src/{features → office-common/features}/diagrams/constants.js +0 -0
  151. /package/src/{features → office-common/features}/diagrams/diagram-data-model.d.ts +0 -0
  152. /package/src/{features → office-common/features}/diagrams/diagram-data-model.js +0 -0
  153. /package/src/{features → office-common/features}/diagrams/diagram-parsers.d.ts +0 -0
  154. /package/src/{features → office-common/features}/diagrams/diagram-parsers.js +0 -0
  155. /package/src/{features → office-common/features}/diagrams/diagram-serializers.d.ts +0 -0
  156. /package/src/{features → office-common/features}/diagrams/diagram-serializers.js +0 -0
  157. /package/src/{features → office-common/features}/diagrams/diagram-views.d.ts +0 -0
  158. /package/src/{features → office-common/features}/diagrams/diagram-views.js +0 -0
  159. /package/src/{features → office-common/features}/diagrams/element-tree.d.ts +0 -0
  160. /package/src/{features → office-common/features}/diagrams/element-tree.js +0 -0
  161. /package/src/{features → office-common/features}/diagrams/errors.d.ts +0 -0
  162. /package/src/{features → office-common/features}/diagrams/errors.js +0 -0
  163. /package/src/{features → office-common/features}/diagrams/index.d.ts +0 -0
  164. /package/src/{features → office-common/features}/diagrams/index.js +0 -0
  165. /package/src/{features → office-common/features}/diagrams/smart-art-catalog.d.ts +0 -0
  166. /package/src/{features → office-common/features}/diagrams/smart-art-catalog.js +0 -0
  167. /package/src/{features → office-common/features}/diagrams/smart-art-diagram.d.ts +0 -0
  168. /package/src/{features → office-common/features}/diagrams/smart-art-diagram.js +0 -0
  169. /package/src/{features → office-common/features}/ink/constants.d.ts +0 -0
  170. /package/src/{features → office-common/features}/ink/constants.js +0 -0
  171. /package/src/{features → office-common/features}/ink/index.d.ts +0 -0
  172. /package/src/{features → office-common/features}/ink/index.js +0 -0
  173. /package/src/{features → office-common/features}/ink/ink-effects.d.ts +0 -0
  174. /package/src/{features → office-common/features}/ink/ink-effects.js +0 -0
  175. /package/src/{features → office-common/features}/ink/ink-model.d.ts +0 -0
  176. /package/src/{features → office-common/features}/ink/ink-model.js +0 -0
  177. /package/src/{features → office-common/features}/ink/ink-parser.d.ts +0 -0
  178. /package/src/{features → office-common/features}/ink/ink-parser.js +0 -0
  179. /package/src/{features → office-common/features}/ink/ink-serializer.d.ts +0 -0
  180. /package/src/{features → office-common/features}/ink/ink-serializer.js +0 -0
  181. /package/src/{features → office-common/features}/ink/ink-units.d.ts +0 -0
  182. /package/src/{features → office-common/features}/ink/ink-units.js +0 -0
  183. /package/src/{features → office-common/features}/ink/ink-xml.d.ts +0 -0
  184. /package/src/{features → office-common/features}/ink/ink-xml.js +0 -0
  185. /package/src/{features → office-common/features}/ink/trace-codec.d.ts +0 -0
  186. /package/src/{features → office-common/features}/ink/trace-codec.js +0 -0
  187. /package/src/{features → office-common/features}/mathml/constants.d.ts +0 -0
  188. /package/src/{features → office-common/features}/mathml/constants.js +0 -0
  189. /package/src/{features → office-common/features}/mathml/errors.d.ts +0 -0
  190. /package/src/{features → office-common/features}/mathml/errors.js +0 -0
  191. /package/src/{features → office-common/features}/mathml/model/enums.d.ts +0 -0
  192. /package/src/{features → office-common/features}/mathml/model/enums.js +0 -0
  193. /package/src/{features → office-common/features}/mathml/openxml.d.ts +0 -0
  194. /package/src/{features → office-common/features}/mathml/openxml.js +0 -0
  195. /package/src/{features → office-common/features}/smart-art/diagram-xml.d.ts +0 -0
  196. /package/src/{features → office-common/features}/smart-art/diagram-xml.js +0 -0
  197. /package/src/{features → office-common/features}/smart-art/errors.d.ts +0 -0
  198. /package/src/{features → office-common/features}/smart-art/errors.js +0 -0
  199. /package/src/{features → office-common/features}/smart-art/index.d.ts +0 -0
  200. /package/src/{features → office-common/features}/smart-art/index.js +0 -0
  201. /package/src/{features → office-common/features}/smart-art/minimal-samples.d.ts +0 -0
  202. /package/src/{features → office-common/features}/smart-art/minimal-samples.js +0 -0
  203. /package/src/{features → office-common/features}/smart-art/mutators.d.ts +0 -0
  204. /package/src/{features → office-common/features}/smart-art/mutators.js +0 -0
  205. /package/src/{features → office-common/features}/smart-art/namespaces.d.ts +0 -0
  206. /package/src/{features → office-common/features}/smart-art/namespaces.js +0 -0
  207. /package/src/{features → office-common/features}/smart-art/package-graph.d.ts +0 -0
  208. /package/src/{features → office-common/features}/smart-art/package-graph.js +0 -0
  209. /package/src/{features → office-common/features}/smart-art/parse-colors.d.ts +0 -0
  210. /package/src/{features → office-common/features}/smart-art/parse-colors.js +0 -0
  211. /package/src/{features → office-common/features}/smart-art/parse-data.d.ts +0 -0
  212. /package/src/{features → office-common/features}/smart-art/parse-data.js +0 -0
  213. /package/src/{features → office-common/features}/smart-art/parse-layout.d.ts +0 -0
  214. /package/src/{features → office-common/features}/smart-art/parse-layout.js +0 -0
  215. /package/src/{features → office-common/features}/smart-art/parse-rel-ids.d.ts +0 -0
  216. /package/src/{features → office-common/features}/smart-art/parse-rel-ids.js +0 -0
  217. /package/src/{features → office-common/features}/smart-art/parse-style.d.ts +0 -0
  218. /package/src/{features → office-common/features}/smart-art/parse-style.js +0 -0
  219. /package/src/{features → office-common/features}/smart-art/point-text.d.ts +0 -0
  220. /package/src/{features → office-common/features}/smart-art/point-text.js +0 -0
  221. /package/src/{features → office-common/features}/smart-art/register.d.ts +0 -0
  222. /package/src/{features → office-common/features}/smart-art/register.js +0 -0
  223. /package/src/{features → office-common/features}/smart-art/serialize.d.ts +0 -0
  224. /package/src/{features → office-common/features}/smart-art/serialize.js +0 -0
  225. /package/src/{features → office-common/features}/smart-art/types.d.ts +0 -0
  226. /package/src/{features → office-common/features}/smart-art/types.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-office-common.es2015.js","sources":["../src/es6/features/ink/constants.js","../src/es6/features/ink/ink-effects.js","../src/es6/features/ink/trace-codec.js","../src/es6/features/ink/ink-model.js","../src/es6/core/xml/model.js","../src/es6/features/ink/ink-units.js","../src/es6/features/ink/ink-xml.js","../src/es6/features/ink/ink-parser.js","../src/es6/features/ink/ink-serializer.js","../src/es6/features/mathml/constants.js","../src/es6/features/mathml/model/enums.js","../src/es6/features/mathml/errors.js","../src/es6/features/mathml/model/math-element.js","../src/es6/features/mathml/model/roots.js","../src/es6/features/mathml/model/controls.js","../src/es6/features/mathml/openxml.js","../src/es6/features/mathml/parse/math-parser.js","../src/es6/features/mathml/serialize/math-serializer.js","../src/es6/features/mathml/math-factory.js","../src/es6/encryption/agile-constants.js","../src/es6/encryption/errors.js","../src/es6/encryption/crypto-primitives.js","../src/es6/encryption/encryption-info-xml.js","../src/es6/encryption/agile-encryption-info.js","../src/es6/encryption/agile-password.js","../src/es6/encryption/cfb-reader.js","../src/es6/encryption/decrypt-encrypted-package.js","../src/es6/encryption/index.js","../src/es6/index.js"],"sourcesContent":["/**\n * Cited InkML / Wordprocessing ink constants.\n *\n * Sources:\n * - W3C InkML 1.0 §1 / namespace declaration\n * - ECMA-376 Part 1 content types; [MS-ODRAWXML] §2.1.4 ink part\n * - ECMA-376-1 §17.3.3.2 / [MS-ODRAWXML] §2.1.4 customXml relationship for ink source\n * - [MS-ODRAWXML] §2.15 WordprocessingML 2010 namespace\n * - [MS-ODRAWXML] §2.2.7.6 `wordprocessingInk` graphicData URI\n */\n/**\n * InkML namespace URI.\n *\n * Source: W3C InkML 1.0 (`http://www.w3.org/2003/InkML`).\n *\n * @public\n */\nexport const INKML_NAMESPACE = 'http://www.w3.org/2003/InkML';\n/**\n * Content type for an InkML part.\n *\n * Source: [MS-ODRAWXML] §2.1.4 / Office content-type vocabulary —\n * `application/inkml+xml`.\n *\n * @public\n */\nexport const INK_CONTENT_TYPE = 'application/inkml+xml';\n/**\n * Relationship type used by Word documents to bind the ink source part.\n *\n * Source: ECMA-376-1 §17.3.3.2; [MS-ODRAWXML] §2.1.4 —\n * `…/relationships/customXml` (internal target mode).\n *\n * @public\n */\nexport const INK_SOURCE_RELATIONSHIP_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml';\n/**\n * WordprocessingML 2010 namespace (`w14:`).\n *\n * Source: [MS-ODRAWXML] §2.15 —\n * `http://schemas.microsoft.com/office/word/2010/wordml`.\n *\n * @public\n */\nexport const WORDML_2010_NAMESPACE = 'http://schemas.microsoft.com/office/word/2010/wordml';\n/**\n * DrawingML `a:graphicData/@uri` value for wordprocessing ink content.\n *\n * Source: [MS-ODRAWXML] §2.2.7.6 —\n * `http://schemas.microsoft.com/office/word/2010/wordprocessingInk`.\n *\n * @public\n */\nexport const WORDPROCESSING_INK_URI = 'http://schemas.microsoft.com/office/word/2010/wordprocessingInk';\n","/**\n * Effect → characteristic color mapping used when serializing ink brushes.\n *\n * Values are cited from the approved cross-repo ink specification\n * (`ej2-docx/docs/specs/ink-dom-parse-serialize.md`, Internal semantic model —\n * Effects → color), cross-checked against [MS-ODRAWXML] ink effect tokens.\n *\n * `'none'` and `'pencil'` do not override stroke color.\n */\n/**\n * Characteristic colors for non-default ink visual effects.\n *\n * | Effect | Color | Notes |\n * |---|---|---|\n * | bronze | `#BB5B18` | cited characteristic color |\n * | silver | `#B4C3DA` | cited characteristic color |\n * | gold | `#CC912C` | cited characteristic color |\n * | roseGold | `#EEB3A6` | cited characteristic color |\n * | ocean | `#0B868D` | cited characteristic color |\n * | lava | `#DA0C07` | cited characteristic color |\n * | rainbow | `#FF4E00` | cited characteristic color |\n * | galaxy | `#AE198D` | cited characteristic color |\n *\n * @public\n */\nexport const INK_EFFECT_COLORS = Object.freeze({\n bronze: '#BB5B18',\n silver: '#B4C3DA',\n gold: '#CC912C',\n roseGold: '#EEB3A6',\n ocean: '#0B868D',\n lava: '#DA0C07',\n rainbow: '#FF4E00',\n galaxy: '#AE198D',\n});\n/**\n * Resolve the characteristic color for an effect, if any.\n *\n * Returns `undefined` for `'none'` / `'pencil'` (no color override).\n *\n * @public\n */\nexport function inkEffectColor(effect) {\n return INK_EFFECT_COLORS[effect];\n}\n","/**\n * Pure InkML trace codec (W3C InkML §3.2.1 via [MS-ODRAWXML] §1.2.1 / §2.1.4).\n *\n * Decodes differential-prefix packet text into absolute channel rows and plane\n * points; encodes points as absolute `\"x y, x y, …\"` text. No XML dependency.\n */\nconst PREFIX_ABSOLUTE = '!';\nconst PREFIX_FIRST_DIFF = \"'\";\nconst PREFIX_SECOND_DIFF = '\"';\n/**\n * Tokenize a single channel value, stripping an optional InkML prefix.\n * Source: W3C InkML §3.2.1 — `!` absolute, `'` first difference, `\"` second difference.\n */\nfunction splitPrefix(token) {\n if (token.length === 0) {\n return { prefix: undefined, raw: token };\n }\n const head = token.charAt(0);\n if (head === PREFIX_ABSOLUTE) {\n return { prefix: 'absolute', raw: token.slice(1) };\n }\n if (head === PREFIX_FIRST_DIFF) {\n return { prefix: 'first', raw: token.slice(1) };\n }\n if (head === PREFIX_SECOND_DIFF) {\n return { prefix: 'second', raw: token.slice(1) };\n }\n return { prefix: undefined, raw: token };\n}\nfunction parseNumber(raw) {\n if (raw.length === 0) {\n return undefined;\n }\n const n = Number(raw);\n return Number.isFinite(n) ? n : undefined;\n}\n/**\n * Decode InkML trace text into absolute channel rows and X/Y plane points.\n *\n * Rules (W3C InkML §3.2.1):\n * - Packets are comma-separated.\n * - Channel values are whitespace-separated.\n * - A `!` / `'` / `\"` prefix before a value switches interpretation for the\n * **rest of that packet** (absolute, first-difference, second-difference).\n * - First differences apply against the previous packet's same-channel value.\n * - Second differences accumulate per channel across packets.\n * - Default channel order when no context is supplied: X then Y.\n * - Extra channels are tolerated; reduction uses the first two as X/Y when\n * present. A row missing X or Y does not produce a plane point.\n *\n * Empty / whitespace-only input yields zero packets and zero points (guarded).\n *\n * @public\n */\nexport function decodeTrace(traceText) {\n const trimmed = traceText.trim();\n if (trimmed.length === 0) {\n return {\n channelRows: [],\n points: [],\n stats: { packetCount: 0, channelValueCount: 0, pointCount: 0 },\n };\n }\n const packetStrings = trimmed.split(',');\n const channelRows = [];\n const points = [];\n let channelValueCount = 0;\n // Previous absolute channel values (for first-difference).\n let previous = [];\n // Running second-difference deltas per channel (mutated in place per index).\n const secondDelta = [];\n // Default mode between packets is absolute until a prefix appears.\n let defaultMode = 'absolute';\n for (const packetString of packetStrings) {\n const tokens = packetString.trim().split(/\\s+/).filter((t) => t.length > 0);\n if (tokens.length === 0) {\n // Empty packet (e.g. trailing comma) — skip without inventing channels.\n continue;\n }\n let mode = defaultMode;\n const row = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token === undefined) {\n continue;\n }\n const { prefix, raw } = splitPrefix(token);\n if (prefix !== undefined) {\n mode = prefix;\n // Prefix mode persists for subsequent packets until another prefix.\n defaultMode = prefix;\n }\n const value = parseNumber(raw);\n channelValueCount += 1;\n if (value === undefined) {\n // Malformed token: skip channel slot (best-effort; no invented number).\n continue;\n }\n let absolute;\n if (mode === 'absolute') {\n absolute = value;\n // Reset second-diff accumulator for this channel when absolute is used.\n secondDelta[i] = 0;\n }\n else if (mode === 'first') {\n const base = (previous[i] != null ? previous[i] : 0);\n absolute = base + value;\n secondDelta[i] = value;\n }\n else {\n // second difference: accumulate delta, then add to previous absolute\n const prevDelta = (secondDelta[i] != null ? secondDelta[i] : 0);\n const newDelta = prevDelta + value;\n secondDelta[i] = newDelta;\n const base = (previous[i] != null ? previous[i] : 0);\n absolute = base + newDelta;\n }\n row[i] = absolute;\n }\n channelRows.push(row);\n previous = row.slice();\n const x = row[0];\n const y = row[1];\n if (x !== undefined && y !== undefined) {\n points.push({ x, y });\n }\n }\n return {\n channelRows,\n points,\n stats: {\n packetCount: channelRows.length,\n channelValueCount,\n pointCount: points.length,\n },\n };\n}\n/**\n * Encode plane points as absolute InkML trace text (`\"x y, x y, …\"`).\n *\n * Always absolute (no differential prefixes). Generated from points only —\n * never from stored markup (DOM mandate).\n *\n * @public\n */\nexport function encodeTrace(points) {\n if (points.length === 0) {\n return '';\n }\n return points.map((p) => `${formatCoord(p.x)} ${formatCoord(p.y)}`).join(', ');\n}\nfunction formatCoord(n) {\n // Prefer compact integer form when exact; otherwise default number string.\n if (Number.isInteger(n)) {\n return String(n);\n }\n return String(n);\n}\n/**\n * Compute axis-aligned bounds over plane points.\n * Empty input returns a zero box (min=max=0) so callers can branch on count.\n *\n * @public\n */\nexport function computeInkBounds(points) {\n const first = points[0];\n if (first === undefined) {\n return { minX: 0, minY: 0, maxX: 0, maxY: 0 };\n }\n let minX = first.x;\n let minY = first.y;\n let maxX = minX;\n let maxY = minY;\n for (let i = 1; i < points.length; i++) {\n const p = points[i];\n if (p === undefined) {\n continue;\n }\n if (p.x < minX)\n minX = p.x;\n if (p.y < minY)\n minY = p.y;\n if (p.x > maxX)\n maxX = p.x;\n if (p.y > maxY)\n maxY = p.y;\n }\n return { minX, minY, maxX, maxY };\n}\n/**\n * Uniform scale of decoded strokes into an extent **without re-zeroing**.\n *\n * scale = min(extent.w / (maxX−minX), extent.h / (maxY−minY)) when the span\n * is positive; origin of the coordinate system is preserved (decoded path).\n * Degenerate (zero-span) axes map to the extent origin for that axis only.\n *\n * Source: cross-repo ink spec § Parser behavior — uniform scale for decoded\n * strokes.\n *\n * @public\n */\nexport function scalePointsUniform(points, extent) {\n if (points.length === 0) {\n return [];\n }\n const bounds = computeInkBounds(points);\n const spanX = bounds.maxX - bounds.minX;\n const spanY = bounds.maxY - bounds.minY;\n const scaleX = spanX > 0 ? extent.width / spanX : 0;\n const scaleY = spanY > 0 ? extent.height / spanY : 0;\n const scale = spanX > 0 && spanY > 0\n ? Math.min(scaleX, scaleY)\n : spanX > 0\n ? scaleX\n : spanY > 0\n ? scaleY\n : 0;\n return points.map((p) => ({\n x: p.x * scale,\n y: p.y * scale,\n }));\n}\n/**\n * Stretch-to-fit scale for **authored** strokes: re-zero to minX/minY, then\n * stretch independently to the extent.\n *\n * Source: cross-repo ink spec § Parser behavior — authored strokes re-zero\n * and stretch to the extent.\n *\n * @public\n */\nexport function scalePointsStretch(points, extent) {\n if (points.length === 0) {\n return [];\n }\n const bounds = computeInkBounds(points);\n const spanX = bounds.maxX - bounds.minX;\n const spanY = bounds.maxY - bounds.minY;\n const scaleX = spanX > 0 ? extent.width / spanX : 0;\n const scaleY = spanY > 0 ? extent.height / spanY : 0;\n return points.map((p) => ({\n x: spanX > 0 ? (p.x - bounds.minX) * scaleX : 0,\n y: spanY > 0 ? (p.y - bounds.minY) * scaleY : 0,\n }));\n}\n","/**\n * Ink DOM model and authoring API (office-common).\n *\n * Contract: `docs/specs/ink-shared-codec.md` / cross-repo\n * `ej2-docx/docs/specs/ink-dom-parse-serialize.md` § Internal semantic model,\n * § Mutation behavior.\n *\n * Trace-group decision (TASK-9002): `OfficeInk.traces` is flat document-order.\n * Nested `traceGroup` structure is reserved for TASK-9003 via an optional\n * internal ordered tree field (`traceTree`) that 9003 may populate; when\n * absent, serialize emits a flat sequence of traces. Consumers of 9002 only\n * see the flat `traces` array.\n */\nimport { computeInkBounds, scalePointsStretch, scalePointsUniform } from './trace-codec';\n/** Marker used by {@link isOfficeInk}. */\nconst OFFICE_INK_BRAND = Symbol.for('@syncfusion/ej2-office-common.OfficeInk');\n/** Default authored brush size (spec mutation §): 1.42pt × 1.42pt. */\nconst DEFAULT_AUTHORED_BRUSH_SIZE = 1.42;\nconst DEFAULT_AUTHORED_COLOR = '#000000';\nconst DEFAULT_AUTHORED_UNITS = 'pt';\nconst DEFAULT_CONTEXT_REF = '#ctx0';\nfunction isInkEffectType(value) {\n return (value === 'none' ||\n value === 'pencil' ||\n value === 'rainbow' ||\n value === 'galaxy' ||\n value === 'lava' ||\n value === 'ocean' ||\n value === 'roseGold' ||\n value === 'gold' ||\n value === 'silver' ||\n value === 'bronze');\n}\nfunction cloneBrush(source, id) {\n const next = {\n color: source.color,\n size: { width: source.size.width, height: source.size.height },\n units: source.units,\n inkEffect: source.inkEffect,\n ignorePressure: source.ignorePressure,\n id,\n };\n if (source.tip !== undefined) {\n next.tip = source.tip;\n }\n if (source.rasterOp !== undefined) {\n next.rasterOp = source.rasterOp;\n }\n if (source.anchorX !== undefined) {\n next.anchorX = source.anchorX;\n }\n if (source.anchorY !== undefined) {\n next.anchorY = source.anchorY;\n }\n if (source.scaleFactor !== undefined) {\n next.scaleFactor = source.scaleFactor;\n }\n if (source.transparency !== undefined) {\n next.transparency = source.transparency;\n }\n if (source.antiAliased !== undefined) {\n next.antiAliased = source.antiAliased;\n }\n if (source.fitToCurve !== undefined) {\n next.fitToCurve = source.fitToCurve;\n }\n return next;\n}\nfunction cloneContext(source) {\n const next = {\n id: source.id,\n channels: source.channels.map((ch) => {\n const c = { name: ch.name };\n if (ch.type !== undefined) {\n c.type = ch.type;\n }\n if (ch.min !== undefined) {\n c.min = ch.min;\n }\n if (ch.max !== undefined) {\n c.max = ch.max;\n }\n if (ch.units !== undefined) {\n c.units = ch.units;\n }\n return c;\n }),\n };\n if (source.inkSourceId !== undefined) {\n next.inkSourceId = source.inkSourceId;\n }\n return next;\n}\nfunction defaultAuthoredBrush(id) {\n return {\n color: DEFAULT_AUTHORED_COLOR,\n size: { width: DEFAULT_AUTHORED_BRUSH_SIZE, height: DEFAULT_AUTHORED_BRUSH_SIZE },\n units: DEFAULT_AUTHORED_UNITS,\n inkEffect: 'none',\n ignorePressure: true,\n id,\n };\n}\nfunction applyBrushPartial(target, partial) {\n if (partial.color !== undefined) {\n target.color = partial.color;\n }\n if (partial.size !== undefined) {\n target.size = {\n width: partial.size.width,\n height: partial.size.height,\n };\n }\n if (partial.units !== undefined) {\n target.units = partial.units;\n }\n if (partial.inkEffect !== undefined && isInkEffectType(partial.inkEffect)) {\n target.inkEffect = partial.inkEffect;\n }\n if (partial.ignorePressure !== undefined) {\n target.ignorePressure = partial.ignorePressure;\n }\n if (partial.tip !== undefined) {\n target.tip = partial.tip;\n }\n if (partial.rasterOp !== undefined) {\n target.rasterOp = partial.rasterOp;\n }\n if (partial.anchorX !== undefined) {\n target.anchorX = partial.anchorX;\n }\n if (partial.anchorY !== undefined) {\n target.anchorY = partial.anchorY;\n }\n if (partial.scaleFactor !== undefined) {\n target.scaleFactor = partial.scaleFactor;\n }\n}\n/**\n * Allocate the next `#br{N}` key that does not collide with existing brushes.\n */\nfunction allocateBrushId(brushes) {\n const used = new Set(brushes.map((b) => b.id));\n let n = 0;\n for (;;) {\n const id = `#br${String(n)}`;\n if (!used.has(id)) {\n return id;\n }\n n += 1;\n }\n}\nfunction brandInk(ink) {\n const internal = ink;\n Object.defineProperty(internal, OFFICE_INK_BRAND, {\n value: true,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return internal;\n}\n/**\n * Build a branded ink from parsed InkML state (`scaleMode: 'decoded'`).\n *\n * @private\n */\nexport function createDecodedInk(init) {\n return brandInk(Object.assign({ traces: init.traces, brushes: init.brushes, scaleMode: 'decoded' }, (init.contexts !== undefined ? { contexts: init.contexts } : {}), (init.traceTree !== undefined ? { traceTree: init.traceTree } : {})));\n}\n/**\n * Allocate a fresh, empty ink DOM for authoring.\n *\n * Empty traces; no brushes until the first {@link addInkTrace}. Scale mode\n * is `'authored'` (stretch-to-fit for {@link inkPathPoints}).\n *\n * @private\n */\nexport function createInk() {\n return brandInk({\n traces: [],\n brushes: [],\n scaleMode: 'authored',\n });\n}\n/**\n * Add a trace to an ink DOM.\n *\n * Brush selection (spec mutation §):\n * - If `brush` partial is provided, clone previous brush (or default) then\n * apply the partial onto a **new** brush id.\n * - Else if a previous trace exists, clone that trace's brush under a new id.\n * - Else allocate the default black `1.42pt × 1.42pt` authored brush as `#br0`.\n *\n * Returns the new trace. Mutates `ink` in place (traces/brushes arrays grow).\n *\n * @private\n */\nexport function addInkTrace(ink, points, brush) {\n if (!isOfficeInk(ink)) {\n throw new TypeError('addInkTrace: expected OfficeInk from createInk/cloneInk');\n }\n const internal = ink;\n const pointCopy = points.map((p) => ({ x: p.x, y: p.y }));\n let sourceBrush;\n const lastTrace = internal.traces[internal.traces.length - 1];\n if (lastTrace !== undefined) {\n sourceBrush = internal.brushes.find((b) => b.id === lastTrace.brushRef);\n }\n const newId = allocateBrushId(internal.brushes);\n const newBrush = sourceBrush !== undefined\n ? cloneBrush(sourceBrush, newId)\n : defaultAuthoredBrush(newId);\n if (brush !== undefined) {\n applyBrushPartial(newBrush, brush);\n }\n internal.brushes.push(newBrush);\n const trace = {\n points: pointCopy,\n brushRef: newBrush.id,\n contextRef: DEFAULT_CONTEXT_REF,\n };\n const traceIndex = internal.traces.length;\n internal.traces.push(trace);\n // Keep ordered tree in sync so serializeInkXml (tree-preferring) emits new traces.\n if (internal.traceTree !== undefined) {\n internal.traceTree = [...internal.traceTree, { kind: 'trace', traceIndex }];\n }\n return trace;\n}\n/**\n * Deep-copy an ink DOM (independent traces, points, brushes, and contexts).\n *\n * @private\n */\nexport function cloneInk(ink) {\n if (!isOfficeInk(ink)) {\n throw new TypeError('cloneInk: expected OfficeInk from createInk/cloneInk');\n }\n const internal = ink;\n const brushes = internal.brushes.map((b) => cloneBrush(b, b.id));\n const traces = internal.traces.map((t) => {\n const copy = {\n points: t.points.map((p) => ({ x: p.x, y: p.y })),\n brushRef: t.brushRef,\n contextRef: t.contextRef,\n };\n if (t.timeOffset !== undefined) {\n copy.timeOffset = t.timeOffset;\n }\n return copy;\n });\n const next = {\n traces,\n brushes,\n scaleMode: internal.scaleMode,\n };\n if (internal.contexts !== undefined) {\n next.contexts = internal.contexts.map(cloneContext);\n }\n if (internal.traceTree !== undefined) {\n next.traceTree = cloneTraceTree(internal.traceTree);\n }\n return brandInk(next);\n}\nfunction cloneTraceTree(nodes) {\n return nodes.map((n) => {\n if (n.kind === 'trace') {\n return { kind: 'trace', traceIndex: n.traceIndex };\n }\n return { kind: 'group', children: cloneTraceTree(n.children) };\n });\n}\n/**\n * Convert ink traces into plane point paths scaled to a drawing extent.\n *\n * Authored ink (`scaleMode === 'authored'`, default from {@link createInk})\n * uses stretch-to-fit (re-zero). Decoded ink uses uniform scale (no re-zero).\n * Bounds are computed over **all** points in the ink, then each path is scaled\n * with the same transform.\n *\n * @private\n */\nexport function inkPathPoints(ink, extent) {\n if (!isOfficeInk(ink)) {\n throw new TypeError('inkPathPoints: expected OfficeInk from createInk/cloneInk');\n }\n const internal = ink;\n const allPoints = [];\n for (const t of internal.traces) {\n for (const p of t.points) {\n allPoints.push(p);\n }\n }\n if (allPoints.length === 0) {\n return internal.traces.map(() => []);\n }\n // Build a single scaled cloud, then slice back per trace by index.\n const scaledAll = internal.scaleMode === 'decoded'\n ? scalePointsUniform(allPoints, extent)\n : scalePointsStretch(allPoints, extent);\n let offset = 0;\n const paths = [];\n for (const t of internal.traces) {\n const slice = scaledAll.slice(offset, offset + t.points.length);\n offset += t.points.length;\n paths.push([...slice]);\n }\n return paths;\n}\n/**\n * Type guard for {@link OfficeInk} instances produced by this module.\n *\n * @private\n */\nexport function isOfficeInk(value) {\n if (value === null || typeof value !== 'object') {\n return false;\n }\n return value[OFFICE_INK_BRAND] === true;\n}\n/**\n * Mark an ink as authored or decoded (uniform scale path).\n * Hosts and tests use this to select the scale mode for bounds/path computation.\n *\n * @private\n */\nexport function setInkScaleMode(ink, mode) {\n if (!isOfficeInk(ink)) {\n throw new TypeError('setInkScaleMode: expected OfficeInk');\n }\n ink.scaleMode = mode;\n}\nexport { computeInkBounds };\n","/**\n * Minimal Open XML element tree model shared by office-common codecs.\n *\n * Shape matches the application-repo OpenXml tree (`ej2-docx` `src/core/xml/model.ts`)\n * so ink parse/serialize can accept host-supplied trees without a second DOM type.\n *\n * This module does **not** parse raw bytes — callers supply an element tree.\n */\n/**\n * XML namespace URI (`xml:`).\n *\n * @public\n */\nexport const XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace';\n/**\n * XMLNS namespace URI (`xmlns:`).\n *\n * @public\n */\nexport const XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/';\n","/**\n * Length unit conversion for ink brush width/height.\n *\n * Formulas match Compression.Base `OfficeParser.GetPointValue` (unit→pt) and\n * `OfficeSerializer.ConvertPointsToUnit` (pt→unit). EMU factor: 12700 EMU/pt\n * (DrawingML).\n */\n/**\n * DrawingML EMUs per point (OfficeParser / OfficeSerializer).\n *\n * @public\n */\nexport const EMUS_PER_POINT = 12700;\n/**\n * Convert a numeric length in `units` to points.\n * Result is rounded to 2 decimal places (GetPointValue parity).\n *\n * @public\n */\nexport function unitValueToPoints(value, units) {\n const u = ((units != null ? units : 'cm')).trim().toLowerCase();\n let points;\n switch (u) {\n case 'pt':\n points = value;\n break;\n case 'mm':\n points = (value / 25.4) * 72;\n break;\n case 'px':\n points = (value / 4) * 3;\n break;\n case 'in':\n points = value * 72;\n break;\n case 'cm':\n points = (value / 2.54) * 72;\n break;\n case 'emu':\n points = value / EMUS_PER_POINT;\n break;\n default:\n // Unknown unit: treat as EMU-less raw → cm (GetPointValue else branch uses EMU)\n points = value / EMUS_PER_POINT;\n break;\n }\n return round2(points);\n}\n/**\n * Convert points to the target unit (ConvertPointsToUnit).\n * Default / unknown unit → cm.\n *\n * @public\n */\nexport function pointsToUnit(points, units) {\n const u = ((units != null ? units : 'cm')).trim().toLowerCase();\n switch (u) {\n case 'pt':\n return points;\n case 'mm':\n return (points * 25.4) / 72;\n case 'px':\n return (points * 96) / 72;\n case 'in':\n return points / 72;\n case 'cm':\n return (points * 2.54) / 72;\n case 'emu':\n return points * EMUS_PER_POINT;\n default:\n return (points * 2.54) / 72;\n }\n}\n/**\n * Format a unit magnitude with invariant 3-decimal style (`\"0.###\"`).\n *\n * @public\n */\nexport function formatUnitValue(value) {\n if (!Number.isFinite(value)) {\n return '0';\n }\n // Trim trailing zeros after up to 3 decimal places (InvariantCulture \"0.###\").\n const fixed = value.toFixed(3);\n if (!(fixed.indexOf('.') !== -1)) {\n return fixed;\n }\n return fixed.replace(/\\.?0+$/, '');\n}\nfunction round2(n) {\n return Math.round(n * 100) / 100;\n}\n","/**\n * Small OpenXml element helpers scoped to InkML serialization.\n */\nimport { XML_NAMESPACE, XMLNS_NAMESPACE } from '../../core/xml/model';\nimport { INKML_NAMESPACE } from './constants';\nconst INK_PREFIX = 'inkml';\n/** Build an InkML-namespaced element. */\nexport function inkElement(localName, attributes = [], children = [], namespaceDeclarations = []) {\n return { kind: 'element',\n namespaceUri: INKML_NAMESPACE,\n localName,\n prefix: INK_PREFIX,\n attributes,\n namespaceDeclarations,\n children,\n };\n}\n/** Plain attribute (no namespace). */\nexport function attr(localName, value) {\n return { namespaceUri: '', localName, prefix: '', value };\n}\n/** `xml:id` attribute. */\nexport function xmlIdAttr(id) {\n return {\n namespaceUri: XML_NAMESPACE,\n localName: 'id',\n prefix: 'xml',\n value: id,\n };\n}\n/** Text node. */\nexport function textNode(value) {\n return { kind: 'text', value };\n}\n/** `xmlns:inkml` declaration for the ink root. */\nexport function inkmlNamespaceDecl() {\n return { prefix: INK_PREFIX, namespaceUri: INKML_NAMESPACE };\n}\n/** Read attribute by local name (optional namespace filter). */\nexport function getAttr(el, localName, namespaceUri) {\n for (const a of el.attributes) {\n if (a.localName !== localName) {\n continue;\n }\n if (namespaceUri !== undefined && a.namespaceUri !== namespaceUri) {\n continue;\n }\n return a.value;\n }\n // xml:id may appear as prefixed without namespace resolution in hand-built trees\n if (localName === 'id') {\n for (const a of el.attributes) {\n if (a.localName === 'id' && (a.prefix === 'xml' || a.namespaceUri === XML_NAMESPACE)) {\n return a.value;\n }\n }\n }\n return undefined;\n}\n/** Concatenate descendant text of an element. */\nexport function elementText(el) {\n let out = '';\n for (const child of el.children) {\n if (child.kind === 'text') {\n out += child.value;\n }\n else {\n out += elementText(child);\n }\n }\n return out;\n}\n/** Direct element children in document order (optional namespace filter). */\nexport function elementChildren(el, localName, namespaceUri = INKML_NAMESPACE) {\n const result = [];\n for (const child of el.children) {\n if (child.kind !== 'element') {\n continue;\n }\n if (namespaceUri !== '' && child.namespaceUri !== namespaceUri && child.namespaceUri !== '') {\n // Allow empty namespaceUri for hand-built / defaulted fixtures when local names match InkML.\n if (child.namespaceUri !== INKML_NAMESPACE && namespaceUri === INKML_NAMESPACE) {\n // still accept un-namespaced ink fixtures if localName matches\n if (localName !== undefined && child.localName !== localName) {\n continue;\n }\n if (localName === undefined) {\n // only accept if it looks like ink content (caller filters)\n }\n }\n }\n if (localName !== undefined && child.localName !== localName) {\n continue;\n }\n if (namespaceUri === INKML_NAMESPACE &&\n child.namespaceUri !== INKML_NAMESPACE &&\n child.namespaceUri !== '') {\n continue;\n }\n result.push(child);\n }\n return result;\n}\n/** Whether an element is in the InkML namespace (or un-namespaced fixture). */\nexport function isInkMlElement(el) {\n return el.namespaceUri === INKML_NAMESPACE || el.namespaceUri === '';\n}\nexport { XML_NAMESPACE, XMLNS_NAMESPACE, INKML_NAMESPACE, INK_PREFIX };\n","/**\n * InkML element-tree → {@link OfficeInk} parser ([MS-ODRAWXML] §2.1.4).\n *\n * The caller supplies an OpenXml element tree; this module never reads bytes\n * and never expands entities. Count guards are surfaced via\n * {@link getLastInkParseDiagnostics} for consumer limits policy.\n */\nimport { XML_NAMESPACE } from '../../core/xml/model';\nimport { INKML_NAMESPACE } from './constants';\nimport { createDecodedInk } from './ink-model';\nimport { unitValueToPoints } from './ink-units';\nimport { elementText, getAttr, isInkMlElement } from './ink-xml';\nimport { decodeTrace } from './trace-codec';\n/**\n * Diagnostic code for untokenizable / empty-result malformed traces.\n *\n * @public\n */\nexport const DIAG_INVALID_INK_TRACE = 'content/invalid-ink-trace';\nconst RECOGNIZED_CHANNELS = new Set(['X', 'Y', 'Z', 'S', 'T', 'SN', 'F', 'TP', 'BP', 'OTx', 'OTy', 'OA', 'OE', 'OR', 'RP', 'RR', 'RY', 'TW', 'TH', 'TC']);\nconst RECOGNIZED_CHANNEL_UNITS = new Set(['dev', 'in', 'cm', 'deg', 'rad', 's', 'lb', 'g']);\n/** §2.1.4 ignore-list local names (skipped, never persisted). */\nconst IGNORE_LOCAL_NAMES = new Set(['timestamp', 'canvas', 'canvasTransform', 'mapping', 'bind', 'table', 'matrix', 'traceView', 'annotation', 'annotationXML', 'channelProperty', 'traceProperty', 'brushPropertyRef', 'intermittentInfo', 'latency', 'sampleRate', 'sampleRateExact', 'srcRef', 'channelRef']);\nconst BRUSH_PROP_NAMES = new Set(['width', 'height', 'color', 'transparency', 'tip', 'rasterop', 'antialiased', 'fittocurve', 'ignorepressure', 'inkeffects', 'anchorx', 'anchory', 'scalefactor']);\nconst EFFECT_TOKENS = new Map([\n ['none', 'none'],\n ['pencil', 'pencil'],\n ['rainbow', 'rainbow'],\n ['galaxy', 'galaxy'],\n ['lava', 'lava'],\n ['ocean', 'ocean'],\n ['rosegold', 'roseGold'],\n ['gold', 'gold'],\n ['silver', 'silver'],\n ['bronze', 'bronze'],\n]);\n/** Parse defaults ([MS-ODRAWXML] §2.1.4 / OfficeParser). */\nconst DEFAULT_WIDTH_CM = 0.053;\nconst DEFAULT_HEIGHT_CM = 0.001;\nconst DEFAULT_COLOR = '#000000';\nconst DEFAULT_TIP = 'ellipse';\nconst DEFAULT_RASTER_OP = 'copyPen';\nconst DEFAULT_CONTEXT_REF = '#ctx0';\nlet lastDiagnostics = {\n items: [],\n traceCount: 0,\n packetCount: 0,\n pointCount: 0,\n channelValueCount: 0\n};\n/**\n * Diagnostics from the most recent {@link parseInkXml} invocation.\n *\n * @public\n */\nexport function getLastInkParseDiagnostics() {\n return lastDiagnostics;\n}\n/**\n * Parse an InkML `ink` root element tree into a branded {@link OfficeInk}.\n *\n * Source: [MS-ODRAWXML] §2.1.4; W3C InkML 1.0; `docs/specs/ink-shared-codec.md`.\n *\n * @public\n */\nexport function parseInkXml(root) {\n const diagnostics = [];\n let packetCount = 0;\n let pointCount = 0;\n let channelValueCount = 0;\n const brushes = [];\n const contexts = [];\n const traces = [];\n const treeRoots = [];\n if (!isInkRoot(root)) {\n lastDiagnostics = {\n items: diagnostics,\n traceCount: 0,\n packetCount: 0,\n pointCount: 0,\n channelValueCount: 0\n };\n return createDecodedInk({\n traces: [],\n brushes: []\n });\n }\n // First pass: definitions (at most one considered; extras ignored after first)\n let sawDefinitions = false;\n for (const child of root.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n const name = child.localName;\n if (IGNORE_LOCAL_NAMES.has(name)) {\n continue;\n }\n if (name === 'definitions') {\n if (sawDefinitions) {\n continue;\n }\n sawDefinitions = true;\n parseDefinitions(child, brushes, contexts);\n }\n }\n // Second pass: traces / groups in document order (C# only walks root children)\n for (const child of root.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n const name = child.localName;\n if (IGNORE_LOCAL_NAMES.has(name) || name === 'definitions') {\n continue;\n }\n if (name === 'trace') {\n const { trace, node, stats, diagnostic } = parseTraceElement(child, traces.length);\n traces.push(trace);\n treeRoots.push(node);\n packetCount += stats.packetCount;\n pointCount += stats.pointCount;\n channelValueCount += stats.channelValueCount;\n if (diagnostic !== undefined) {\n diagnostics.push(diagnostic);\n }\n }\n else if (name === 'traceGroup') {\n const group = parseTraceGroup(child, traces, diagnostics, s => {\n packetCount += s.packetCount;\n pointCount += s.pointCount;\n channelValueCount += s.channelValueCount;\n });\n if (group.children.length > 0) {\n treeRoots.push(group);\n }\n }\n }\n lastDiagnostics = {\n items: diagnostics,\n traceCount: traces.length,\n packetCount,\n pointCount,\n channelValueCount\n };\n return createDecodedInk(Object.assign({ traces,\n brushes }, (contexts.length > 0 ? {\n contexts\n } : {}), (traces.length > 0 ? {\n traceTree: treeRoots\n } : {})));\n}\nfunction isInkRoot(el) {\n if (el.localName !== 'ink') {\n return false;\n }\n return isInkMlElement(el) || el.namespaceUri === INKML_NAMESPACE;\n}\nfunction parseDefinitions(def, brushes, contexts) {\n for (const child of def.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n if (IGNORE_LOCAL_NAMES.has(child.localName)) {\n continue;\n }\n if (child.localName === 'brush') {\n brushes.push(parseBrush(child));\n }\n else if (child.localName === 'context') {\n const ctx = parseContext(child);\n if (ctx !== undefined) {\n contexts.push(ctx);\n }\n }\n // context only under definitions (already here); ignore elsewhere handled by root walk\n }\n}\nfunction parseContext(el) {\n const rawId = readXmlId(el);\n if (rawId === undefined || rawId.length === 0) {\n // Still accept context without id using a synthetic key? Spec requires id for inkSource;\n // skip malformed context without id.\n return undefined;\n }\n const id = ensureHash(rawId);\n let inkSourceId;\n const channels = [];\n for (const child of el.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n if (IGNORE_LOCAL_NAMES.has(child.localName)) {\n continue;\n }\n if (child.localName === 'inkSource') {\n const srcId = readXmlId(child);\n if (srcId !== undefined && srcId.length > 0) {\n inkSourceId = srcId;\n }\n // Walk inkSource for nested traceFormat as Office often nests it here\n collectChannelsFrom(child, channels);\n }\n else if (child.localName === 'traceFormat') {\n collectChannelsFrom(child, channels);\n }\n }\n const ctx = {\n id,\n channels\n };\n if (inkSourceId !== undefined) {\n ctx.inkSourceId = inkSourceId;\n }\n return ctx;\n}\nfunction collectChannelsFrom(el, channels) {\n for (const child of el.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n if (child.localName === 'traceFormat') {\n collectChannelsFrom(child, channels);\n continue;\n }\n if (child.localName !== 'channel') {\n continue;\n }\n const name = function () {\n var _nc = getAttr(child, 'name');\n return _nc != null ? _nc : '';\n }();\n if (!RECOGNIZED_CHANNELS.has(name)) {\n continue;\n }\n const ch = {\n name\n };\n const type = getAttr(child, 'type');\n if (type !== undefined) {\n ch.type = type;\n }\n const min = getAttr(child, 'min');\n if (min !== undefined) {\n ch.min = min;\n }\n const max = getAttr(child, 'max');\n if (max !== undefined) {\n ch.max = max;\n }\n const units = getAttr(child, 'units');\n if (units !== undefined && RECOGNIZED_CHANNEL_UNITS.has(units)) {\n ch.units = units;\n }\n else if (units !== undefined) {\n // Preserve units string even if outside short list (cm always recognized)\n ch.units = units;\n }\n // orientation / respectTo ignored\n channels.push(ch);\n }\n}\nfunction parseBrush(el) {\n const rawId = function () {\n var _nc = readXmlId(el);\n return _nc != null ? _nc : '';\n }();\n const id = ensureHash(rawId.length > 0 ? rawId : 'br0');\n // Defaults (parse §2.1.4) — size stored in points after unit conversion\n let widthPt = unitValueToPoints(DEFAULT_WIDTH_CM, 'cm');\n let heightPt = unitValueToPoints(DEFAULT_HEIGHT_CM, 'cm');\n let units = 'cm';\n let color = DEFAULT_COLOR;\n let tip = DEFAULT_TIP;\n let rasterOp = DEFAULT_RASTER_OP;\n let ignorePressure = false;\n let inkEffect = 'none';\n let anchorX;\n let anchorY;\n let scaleFactor;\n let transparency;\n let antiAliased;\n let fitToCurve;\n let sawWidth = false;\n let sawHeight = false;\n for (const child of el.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n if (child.localName !== 'brushProperty') {\n continue;\n }\n const nameRaw = getAttr(child, 'name');\n if (nameRaw === undefined) {\n continue;\n }\n const name = nameRaw.trim().toLowerCase();\n if (!BRUSH_PROP_NAMES.has(name)) {\n // Unknown property name → whole property dropped\n continue;\n }\n const valueRaw = function () {\n var _nc = getAttr(child, 'value');\n return _nc != null ? _nc : '';\n }();\n const unitsAttr = getAttr(child, 'units');\n switch (name) {\n case 'width':\n {\n const n = parseLengthNumber(valueRaw);\n if (n !== undefined) {\n const u = unitsAttr != null ? unitsAttr : 'cm';\n widthPt = unitValueToPoints(n, u);\n if (!sawHeight) {\n units = u;\n }\n sawWidth = true;\n units = u;\n }\n break;\n }\n case 'height':\n {\n const n = parseLengthNumber(valueRaw);\n if (n !== undefined) {\n const u = unitsAttr != null ? unitsAttr : units;\n heightPt = unitValueToPoints(n, u);\n sawHeight = true;\n if (unitsAttr !== undefined) {\n units = unitsAttr;\n }\n }\n break;\n }\n case 'color':\n {\n const hex = normalizeColor(valueRaw);\n if (hex !== undefined) {\n color = hex;\n }\n break;\n }\n case 'tip':\n {\n if (valueRaw.length > 0) {\n tip = valueRaw;\n }\n break;\n }\n case 'rasterop':\n {\n if (valueRaw.length > 0) {\n rasterOp = valueRaw;\n }\n break;\n }\n case 'ignorepressure':\n {\n ignorePressure = parseBoolish(valueRaw);\n break;\n }\n case 'inkeffects':\n {\n const token = valueRaw.trim().toLowerCase().replace(/[_\\s-]/g, '');\n const mapped = EFFECT_TOKENS.get(token);\n if (mapped !== undefined) {\n inkEffect = mapped;\n }\n break;\n }\n case 'anchorx':\n {\n anchorX = valueRaw;\n break;\n }\n case 'anchory':\n {\n anchorY = valueRaw;\n break;\n }\n case 'scalefactor':\n {\n scaleFactor = valueRaw;\n break;\n }\n case 'transparency':\n {\n const n = Number(valueRaw);\n if (Number.isFinite(n)) {\n transparency = n;\n }\n break;\n }\n case 'antialiased':\n {\n antiAliased = parseBoolish(valueRaw);\n break;\n }\n case 'fittocurve':\n {\n fitToCurve = parseBoolish(valueRaw);\n break;\n }\n default:\n break;\n }\n }\n // If neither width nor height units seen, keep cm (default source unit)\n if (!sawWidth && !sawHeight) {\n units = 'cm';\n }\n const brush = {\n id,\n color,\n size: {\n width: widthPt,\n height: heightPt\n },\n units,\n inkEffect,\n ignorePressure,\n tip,\n rasterOp\n };\n if (anchorX !== undefined) {\n brush.anchorX = anchorX;\n }\n if (anchorY !== undefined) {\n brush.anchorY = anchorY;\n }\n if (scaleFactor !== undefined) {\n brush.scaleFactor = scaleFactor;\n }\n if (transparency !== undefined) {\n brush.transparency = transparency;\n }\n if (antiAliased !== undefined) {\n brush.antiAliased = antiAliased;\n }\n if (fitToCurve !== undefined) {\n brush.fitToCurve = fitToCurve;\n }\n return brush;\n}\nfunction parseTraceElement(el, traceIndex) {\n const brushRefRaw = function () {\n var _nc = getAttr(el, 'brushRef');\n return _nc != null ? _nc : '';\n }();\n const contextRefRaw = function () {\n var _nc = getAttr(el, 'contextRef');\n return _nc != null ? _nc : '';\n }();\n const timeOffset = getAttr(el, 'timeOffset');\n const text = elementText(el).trim();\n const decoded = decodeTrace(text);\n let diagnostic;\n // Malformed: non-empty text that produced zero points → diagnostic\n if (text.length > 0 && decoded.points.length === 0) {\n diagnostic = {\n code: DIAG_INVALID_INK_TRACE,\n message: 'malformed or untokenizable ink trace text',\n traceIndex\n };\n }\n const trace = {\n points: decoded.points.map(p => ({\n x: p.x,\n y: p.y\n })),\n brushRef: brushRefRaw.length > 0 ? ensureHash(brushRefRaw.replace(/^#/, '')) : '',\n contextRef: contextRefRaw.length > 0 ? ensureHash(contextRefRaw.replace(/^#/, '')) : DEFAULT_CONTEXT_REF\n };\n // Preserve brushRef as given with hash; empty string means unset\n if (brushRefRaw.length > 0) {\n trace.brushRef = brushRefRaw.startsWith('#') ? brushRefRaw : ensureHash(brushRefRaw);\n }\n if (timeOffset !== undefined) {\n trace.timeOffset = timeOffset;\n }\n return {\n trace,\n node: {\n kind: 'trace',\n traceIndex\n },\n stats: {\n packetCount: decoded.stats.packetCount,\n pointCount: decoded.stats.pointCount,\n channelValueCount: decoded.stats.channelValueCount\n },\n diagnostic\n };\n}\nfunction parseTraceGroup(el, traces, diagnostics, onStats) {\n const children = [];\n for (const child of el.children) {\n if (child.kind !== 'element' || !isInkMlElement(child)) {\n continue;\n }\n if (IGNORE_LOCAL_NAMES.has(child.localName)) {\n // annotationXML / annotation: ignored per §2.1.4 (decision: do not retain)\n continue;\n }\n if (child.localName === 'trace') {\n const { trace, node, stats, diagnostic } = parseTraceElement(child, traces.length);\n traces.push(trace);\n children.push(node);\n onStats(stats);\n if (diagnostic !== undefined) {\n diagnostics.push(diagnostic);\n }\n }\n else if (child.localName === 'traceGroup') {\n const nested = parseTraceGroup(child, traces, diagnostics, onStats);\n if (nested.children.length > 0) {\n children.push(nested);\n }\n }\n }\n return {\n kind: 'group',\n children\n };\n}\nfunction readXmlId(el) {\n const fromNs = getAttr(el, 'id', XML_NAMESPACE);\n if (fromNs !== undefined) {\n return fromNs;\n }\n return getAttr(el, 'id');\n}\nfunction ensureHash(id) {\n return id.startsWith('#') ? id : `#${id}`;\n}\nfunction parseLengthNumber(raw) {\n let s = raw.trim();\n if (s.length === 0) {\n return undefined;\n }\n // GetPointValue: leading `.` → `0.`\n if (s.startsWith('.')) {\n s = `0${s}`;\n }\n const n = Number(s);\n return Number.isFinite(n) ? n : undefined;\n}\nfunction normalizeColor(raw) {\n let s = raw.trim();\n if (s.length === 0) {\n return undefined;\n }\n if (!s.startsWith('#')) {\n s = `#${s}`;\n }\n // Accept #RGB or #RRGGBB\n if (/^#[0-9A-Fa-f]{6}$/.test(s) || /^#[0-9A-Fa-f]{3}$/.test(s)) {\n if (s.length === 4) {\n const r = s.charAt(1);\n const g = s.charAt(2);\n const b = s.charAt(3);\n return `#${r}${r}${g}${g}${b}${b}`.toUpperCase();\n }\n return s.toUpperCase();\n }\n return undefined;\n}\nfunction parseBoolish(raw) {\n const s = raw.trim().toLowerCase();\n return s === '1' || s === 'true';\n}\n","/**\n * {@link OfficeInk} → InkML element tree serializer ([MS-ODRAWXML] §2.1.4).\n *\n * Trace text is always {@link encodeTrace} from points — never stored XML text.\n * Brush property order matches `docs/specs/ink-shared-codec.md` / TASK-9003.\n */\nimport { isOfficeInk } from './ink-model';\nimport { inkEffectColor } from './ink-effects';\nimport { formatUnitValue, pointsToUnit } from './ink-units';\nimport { attr, inkElement, inkmlNamespaceDecl, textNode, xmlIdAttr, } from './ink-xml';\nimport { encodeTrace } from './trace-codec';\nconst DEFAULT_CONTEXT_ID = 'ctx0';\nconst DEFAULT_CONTEXT_REF = '#ctx0';\nconst DEFAULT_INK_SOURCE_ID = 'inkSrc0';\nconst CHANNEL_MIN = '-2.14748E9';\nconst CHANNEL_MAX = '2.14748E9';\nconst CHANNEL_UNITS = 'cm';\n/**\n * Serialize an {@link OfficeInk} DOM to an InkML `ink` root element.\n *\n * Source: [MS-ODRAWXML] §2.1.4; `docs/specs/ink-shared-codec.md` Serializer behavior.\n *\n * @private\n */\nexport function serializeInkXml(ink) {\n if (!isOfficeInk(ink)) {\n throw new TypeError('serializeInkXml: expected OfficeInk from parseInkXml/createInk');\n }\n const children = [];\n const definitionsChildren = [];\n const needsContext = ink.traces.some((t) => t.contextRef === DEFAULT_CONTEXT_REF || t.contextRef === '' || t.contextRef === `#${DEFAULT_CONTEXT_ID}`) || ink.traces.length > 0;\n const contexts = (ink.contexts != null ? ink.contexts : []);\n // Emit each known context; ensure default #ctx0 when referenced/needed\n let hasDefaultContext = false;\n for (const ctx of contexts) {\n definitionsChildren.push(serializeContext(ctx));\n const bare = stripHash(ctx.id);\n if (bare === DEFAULT_CONTEXT_ID) {\n hasDefaultContext = true;\n }\n }\n if (needsContext && !hasDefaultContext) {\n definitionsChildren.push(serializeContext(defaultContext()));\n }\n // Brushes sorted by id (string key order)\n const sortedBrushes = [...ink.brushes].sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));\n for (const brush of sortedBrushes) {\n definitionsChildren.push(serializeBrush(brush));\n }\n if (definitionsChildren.length > 0) {\n children.push(inkElement('definitions', [], definitionsChildren));\n }\n // Traces / groups\n if (ink.traceTree !== undefined && ink.traceTree.length > 0) {\n for (const node of ink.traceTree) {\n children.push(...serializeTreeNode(node, ink.traces));\n }\n }\n else {\n for (const trace of ink.traces) {\n children.push(serializeTrace(trace));\n }\n }\n return inkElement('ink', [], children, [inkmlNamespaceDecl()]);\n}\nfunction defaultContext() {\n return {\n id: DEFAULT_CONTEXT_REF,\n inkSourceId: DEFAULT_INK_SOURCE_ID,\n channels: [\n {\n name: 'X',\n type: 'integer',\n min: CHANNEL_MIN,\n max: CHANNEL_MAX,\n units: CHANNEL_UNITS,\n },\n {\n name: 'Y',\n type: 'integer',\n min: CHANNEL_MIN,\n max: CHANNEL_MAX,\n units: CHANNEL_UNITS,\n },\n ],\n };\n}\nfunction serializeContext(ctx) {\n const idBare = stripHash(ctx.id);\n const inkSourceId = stripHash((ctx.inkSourceId != null ? ctx.inkSourceId : DEFAULT_INK_SOURCE_ID));\n const channels = ctx.channels.length > 0\n ? ctx.channels\n : defaultContext().channels;\n const channelEls = channels.map((ch) => serializeChannel(ch));\n const traceFormat = inkElement('traceFormat', [], channelEls);\n const inkSource = inkElement('inkSource', [xmlIdAttr(inkSourceId)], [traceFormat]);\n return inkElement('context', [xmlIdAttr(idBare)], [inkSource]);\n}\nfunction serializeChannel(ch) {\n const attrs = [attr('name', ch.name)];\n if (ch.type !== undefined) {\n attrs.push(attr('type', ch.type));\n }\n if (ch.min !== undefined) {\n attrs.push(attr('min', ch.min));\n }\n if (ch.max !== undefined) {\n attrs.push(attr('max', ch.max));\n }\n if (ch.units !== undefined) {\n attrs.push(attr('units', ch.units));\n }\n return inkElement('channel', attrs, []);\n}\nfunction serializeBrush(brush) {\n const idBare = stripHash(brush.id);\n const props = [];\n const units = brush.units.length > 0 ? brush.units : 'cm';\n // Size is stored in points after parse; authoring may use pt units with pt values.\n // ConvertPointsToUnit always treats size as points → target units.\n const widthOut = pointsToUnit(brush.size.width, units);\n const heightOut = pointsToUnit(brush.size.height, units);\n props.push(brushProperty('width', formatUnitValue(widthOut), units), brushProperty('height', formatUnitValue(heightOut), units));\n const color = resolveBrushColor(brush);\n props.push(brushProperty('color', color.startsWith('#') ? color : `#${color}`));\n // Effect-specific series (TASK-9003 / shared-codec)\n // Always emit ignorePressure. Non-none effects emit inkEffects so parse→serialize→parse\n // preserves the effect token (including pencil, which has no color override).\n const effect = brush.inkEffect;\n props.push(brushProperty('ignorePressure', brush.ignorePressure ? '1' : '0'));\n if (effect !== 'pencil' && brush.rasterOp !== undefined && brush.rasterOp.length > 0) {\n props.push(brushProperty('tip', (brush.tip != null ? brush.tip : 'ellipse')));\n props.push(brushProperty('rasterOp', brush.rasterOp));\n }\n if (effect !== 'none') {\n props.push(brushProperty('inkEffects', effectToken(effect)));\n if (effect !== 'pencil') {\n props.push(brushProperty('anchorX', (brush.anchorX != null ? brush.anchorX : '0')));\n props.push(brushProperty('anchorY', (brush.anchorY != null ? brush.anchorY : '0')));\n props.push(brushProperty('scaleFactor', (brush.scaleFactor != null ? brush.scaleFactor : '0.5')));\n }\n }\n return inkElement('brush', [xmlIdAttr(idBare)], props);\n}\nfunction brushProperty(name, value, units) {\n const attrs = [attr('name', name), attr('value', value)];\n if (units !== undefined) {\n attrs.push(attr('units', units));\n }\n return inkElement('brushProperty', attrs, []);\n}\nfunction resolveBrushColor(brush) {\n const effectHex = inkEffectColor(brush.inkEffect);\n if (effectHex !== undefined) {\n return effectHex.toUpperCase();\n }\n return brush.color.toUpperCase();\n}\nfunction effectToken(effect) {\n // Prefer camelCase for roseGold (spec token); others lowercase\n if (effect === 'roseGold') {\n return 'roseGold';\n }\n return effect;\n}\nfunction serializeTreeNode(node, traces) {\n if (node.kind === 'trace') {\n const t = traces[node.traceIndex];\n if (t === undefined) {\n return [];\n }\n return [serializeTrace(t)];\n }\n const kids = [];\n for (const child of node.children) {\n kids.push(...serializeTreeNode(child, traces));\n }\n return [inkElement('traceGroup', [], kids)];\n}\nfunction serializeTrace(trace) {\n const attrs = [];\n const contextRef = trace.contextRef.length > 0 ? ensureHash(trace.contextRef) : DEFAULT_CONTEXT_REF;\n attrs.push(attr('contextRef', contextRef));\n if (trace.brushRef.length > 0) {\n attrs.push(attr('brushRef', ensureHash(trace.brushRef)));\n }\n if (trace.timeOffset !== undefined) {\n attrs.push(attr('timeOffset', trace.timeOffset));\n }\n const text = encodeTrace(trace.points);\n const children = text.length > 0 ? [textNode(text)] : [];\n return inkElement('trace', attrs, children);\n}\nfunction stripHash(id) {\n return id.startsWith('#') ? id.slice(1) : id;\n}\nfunction ensureHash(id) {\n return id.startsWith('#') ? id : `#${id}`;\n}\n","/**\n * Cited Office Math Markup Language (OMML) constants.\n *\n * Sources:\n * - ECMA-376 Part 1 §22.1 (Office Math)\n * - ECMA-376 Part 4 Annex A.8.1 `shared-math.xsd`\n * - ECMA-376 Part 1 WordprocessingML transitional namespace\n * - W3C XML 1.0 `xml:` namespace (xml:space on m:t)\n */\n/**\n * Office Math namespace URI (`m:`).\n *\n * Source: ECMA-376-1 §22.1 /\n * `http://schemas.openxmlformats.org/officeDocument/2006/math`.\n *\n * @public\n */\nexport const MATH_NAMESPACE = 'http://schemas.openxmlformats.org/officeDocument/2006/math';\n/**\n * Preferred math prefix candidates for save-scoped registry.\n * First unused candidate wins: `m`, then `m1`, `m2`, …\n *\n * Source: mathml-spec §1.9 / §9.3.\n *\n * @public\n */\nexport const MATH_PREFIX_FALLBACKS = ['m', 'm1', 'm2', 'm3', 'm4', 'm5'];\n/**\n * WordprocessingML transitional namespace (`w:`).\n *\n * Used when bridging `w:rPr` / run content under `m:r` and `m:ctrlPr`\n * (ECMA-376-4 Annex A.8.1 `CT_R` / `CT_CtrlPr`).\n *\n * Source: ECMA-376-1 —\n * `http://schemas.openxmlformats.org/wordprocessingml/2006/main`.\n *\n * @public\n */\nexport const WML_TRANSITIONAL_NAMESPACE = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main';\n/**\n * XML namespace used by `xml:space` on `m:t` (same policy as `w:t`).\n *\n * Source: W3C XML 1.0 — `http://www.w3.org/XML/1998/namespace`.\n *\n * @public\n */\nexport const XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace';\n","/**\n * Schema-exact Office Math simple-type unions.\n *\n * Source: ECMA-376 Part 1 §22.1.3 / Part 4 Annex A.8.1 `shared-math.xsd`.\n * Serializer emits only these tokens — never synthesize members.\n */\n/** Members of {@link MathJc}. */\nexport const MATH_JC_VALUES = ['left', 'right', 'center', 'centerGroup'];\n/** Members of {@link MathFractionType}. */\nexport const MATH_FTYPE_VALUES = ['bar', 'skw', 'lin', 'noBar'];\n/** Members of {@link MathShape} — centered|match only. */\nexport const MATH_SHP_VALUES = ['centered', 'match'];\n/** Members of {@link MathLimLoc}. */\nexport const MATH_LIMLOC_VALUES = ['undOvr', 'subSup'];\n/** Members of {@link MathTopBot}. */\nexport const MATH_TOPBOT_VALUES = ['top', 'bot'];\n/** Members of {@link MathBreakBin}. */\nexport const MATH_BREAKBIN_VALUES = ['before', 'after', 'repeat'];\n/** Members of {@link MathBreakBinSub}. */\nexport const MATH_BREAKBINSUB_VALUES = ['--', '-+', '+-'];\n/** Members of {@link MathScript}. */\nexport const MATH_SCRIPT_VALUES = [\n 'roman',\n 'script',\n 'fraktur',\n 'double-struck',\n 'sans-serif',\n 'monospace',\n];\n/** Members of {@link MathStyle}. */\nexport const MATH_STYLE_VALUES = ['p', 'b', 'i', 'bi'];\n/** Members of {@link MathSpacingRule}. */\nexport const MATH_SPACING_RULE_VALUES = [0, 1, 2, 3, 4];\n/** Parse ST_Jc; undefined when not a known token. */\nexport function parseMathJc(value) {\n return (MATH_JC_VALUES.indexOf(value) !== -1) ? value : undefined;\n}\n/** Parse ST_FType. */\nexport function parseMathFractionType(value) {\n return (MATH_FTYPE_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_Shp. */\nexport function parseMathShape(value) {\n return (MATH_SHP_VALUES.indexOf(value) !== -1) ? value : undefined;\n}\n/** Parse ST_LimLoc. */\nexport function parseMathLimLoc(value) {\n return (MATH_LIMLOC_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_TopBot. */\nexport function parseMathTopBot(value) {\n return (MATH_TOPBOT_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_BreakBin. */\nexport function parseMathBreakBin(value) {\n return (MATH_BREAKBIN_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_BreakBinSub. */\nexport function parseMathBreakBinSub(value) {\n return (MATH_BREAKBINSUB_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_Script. */\nexport function parseMathScript(value) {\n return (MATH_SCRIPT_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_Style. */\nexport function parseMathStyle(value) {\n return (MATH_STYLE_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/**\n * ST_Integer2 range −2..2 (argSz).\n *\n * Source: ECMA-376-1 §22.1.3.5.\n */\nexport function isInteger2(value) {\n return Number.isInteger(value) && value >= -2 && value <= 2;\n}\n/**\n * ST_Integer255 range 1..255.\n *\n * Source: ECMA-376-1 §22.1.3.6.\n */\nexport function isInteger255(value) {\n return Number.isInteger(value) && value >= 1 && value <= 255;\n}\n/**\n * ST_UnSignedInteger ≥ 0.\n *\n * Source: ECMA-376-1 §22.1.3.14.\n */\nexport function isUnSignedInteger(value) {\n return Number.isInteger(value) && value >= 0;\n}\n/**\n * ST_SpacingRule 0..4.\n *\n * Source: ECMA-376-1 §22.1.3.11.\n */\nexport function isSpacingRule(value) {\n return Number.isInteger(value) && value >= 0 && value <= 4;\n}\n/** Parse OnOff-style val attribute (`1`/`true`/`on` → true). */\nexport function parseOnOff(value) {\n if (value === undefined) {\n return undefined;\n }\n const v = value.toLowerCase();\n if (v === '1' || v === 'true' || v === 'on') {\n return true;\n }\n if (v === '0' || v === 'false' || v === 'off') {\n return false;\n }\n return undefined;\n}\n/** Emit OnOff as `'1'` / `'0'`. */\nexport function emitOnOff(value) {\n return value ? '1' : '0';\n}\n","/**\n * Typed mathml errors (mathml-spec Errors section).\n *\n * Common-owned; docx-js passes them through untouched.\n */\n/**\n * Schema violation detected on author/serialize of a typed math tree.\n *\n * Source: mathml-spec Errors section —\n * `elementPath` dotted model path (e.g. `'oMath.f.den'`),\n * `constraintKind` one of child-order | enum-value | required-child | value-range.\n *\n * @private\n * Internal error contract between the mathml model, parser, and serializer;\n * not part of the public authoring API.\n */\nexport class MathmlValidationError extends Error {\n constructor(message, elementPath, constraintKind) {\n super(message);\n this.name = 'MathmlValidationError';\n this.elementPath = elementPath;\n this.constraintKind = constraintKind;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n/**\n * Mutation attempted on a preserve-only (degraded) math equation.\n *\n * Source: mathml-spec §8b — malformed load degrades; later mutate throws.\n *\n * @private\n * Internal error contract between the mathml model, parser, and serializer;\n * not part of the public authoring API.\n */\nexport class MathmlReadOnlyError extends Error {\n constructor(message = 'Math equation is preserve-only and cannot be mutated') {\n super(message);\n /**\n * Always `true` — the equation is locked in preserve-only mode and mutations are blocked.\n */\n this.isPreserveOnly = true;\n this.name = 'MathmlReadOnlyError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","/**\n * MathElement base hierarchy for OMML typed DOM.\n *\n * Source: mathml-spec §7; ECMA-376-4 Annex A.8.1.\n */\nimport { MathmlReadOnlyError, MathmlValidationError } from '../errors';\nimport { isInteger2 } from './enums';\n/**\n * Abstract base for every OMML model node.\n *\n * @public\n */\nexport class MathElement {\n constructor() {\n /** When true, mutation is blocked (preserve-only degradation). */\n this._preserveOnly = false;\n }\n /**\n * Whether this node is locked in preserve-only mode (mutations blocked; original OpenXML is re-emitted).\n *\n * @private\n * Framework/parser state used for round-trip fidelity and host dirty tracking.\n */\n get preserveOnly() {\n return this._preserveOnly;\n }\n /**\n * Captured original OpenXML tree when the node is preserve-only or cannot be fully represented.\n *\n * @private\n * Used by the serializer and hosts to round-trip unmodified structure.\n */\n get preservedXml() {\n return this._preservedXml;\n }\n /**\n * Registers an internal mutation callback for change tracking and document synchronization.\n *\n * @private\n * Hosts (for example docx `MathInline`) inject dirty tracking; not part of the authoring API.\n */\n setMutationListener(listener) {\n this._onMutate = listener;\n }\n /**\n * Marks this node preserve-only and stores the original OpenXML for round-trip preservation.\n *\n * @private\n * Used by the OMML parser for structural degradation and by document hosts to bubble a\n * child-level preserve-only lock up to the equation root.\n */\n markPreserveOnly(xml) {\n this._preserveOnly = true;\n this._preservedXml = xml;\n }\n /**\n * Attach preserved XML without locking mutation (UnknownMathElement).\n *\n * @private\n */\n attachPreservedXml(xml) {\n this._preservedXml = xml;\n }\n /** Guard + notify after a successful mutation. */\n notifyMutated() {\n if (this._preserveOnly) {\n throw new MathmlReadOnlyError();\n }\n this._onMutate == null ? void 0 : this._onMutate();\n }\n /** Throw if preserve-only before a mutation begins. */\n assertMutable() {\n if (this._preserveOnly) {\n throw new MathmlReadOnlyError();\n }\n }\n}\n/**\n * Math text leaf (`m:t`) — literal character content inside a math run.\n *\n * Source: ECMA-376-1 §22.1.2.116 `CT_Text` — UTF-8 passthrough, no substitution.\n *\n * @public\n */\nexport class MathText extends MathElement {\n constructor(value = '', xmlSpace) {\n super();\n /**\n * Math element type for this text leaf (`t`).\n */\n this.type = 't';\n this._value = value;\n this._xmlSpace = xmlSpace;\n }\n /**\n * Raw text content of this math text element (full UTF-8, no substitution).\n */\n get value() {\n return this._value;\n }\n set value(next) {\n this.assertMutable();\n this._value = next;\n this.notifyMutated();\n }\n /**\n * Optional `xml:space` on `m:t` (`default` | `preserve`), same policy as Word `w:t`.\n *\n * @private\n * Serialization attribute for whitespace fidelity; prefer setting text via {@link value}.\n */\n get xmlSpace() {\n return this._xmlSpace;\n }\n set xmlSpace(next) {\n this.assertMutable();\n this._xmlSpace = next;\n this.notifyMutated();\n }\n}\n/**\n * Argument container that holds ordered math elements inside a larger structure.\n *\n * @public\n */\nexport class MathArgument extends MathElement {\n constructor(properties = {}, item = [], ctrlPr) {\n super();\n /**\n * Discriminator for this math argument container.\n *\n * @public\n */\n this.type = 'arg';\n if (properties.argSz !== undefined && !isInteger2(properties.argSz)) {\n throw new MathmlValidationError(`argSz must be an integer in −2..2 (ST_Integer2), got ${String(properties.argSz)}`, 'arg.argPr.argSz', 'value-range');\n }\n this._properties = Object.freeze(Object.assign({}, properties));\n this._item = [...item];\n this._ctrlPr = ctrlPr;\n }\n /**\n * Gets or sets argument properties such as script size.\n *\n * @throws MathmlValidationError when script size is outside the allowed integer range.\n *\n * @public\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n if (next.argSz !== undefined && !isInteger2(next.argSz)) {\n throw new MathmlValidationError(`argSz must be an integer in −2..2 (ST_Integer2), got ${String(next.argSz)}`, 'arg.argPr.argSz', 'value-range');\n }\n this._properties = Object.freeze(Object.assign({}, next));\n this.notifyMutated();\n }\n /**\n * Gets or sets the ordered math elements inside this argument.\n *\n * @public\n */\n get item() {\n return this._item;\n }\n set item(next) {\n this.assertMutable();\n this._item = [...next];\n this.notifyMutated();\n }\n /**\n * Opaque control properties (`m:ctrlPr`) carried on the argument, when present.\n *\n * @private\n * Wire-fidelity carrier for WML run properties; not part of the public authoring API.\n */\n get ctrlPr() {\n return this._ctrlPr;\n }\n /**\n * @private\n */\n set ctrlPr(next) {\n this.assertMutable();\n this._ctrlPr = next;\n this.notifyMutated();\n }\n /**\n * Appends one math element at the end of {@link MathArgument.item}.\n */\n appendItem(child) {\n this.assertMutable();\n this._item.push(child);\n this.notifyMutated();\n return child;\n }\n}\n/**\n * Escape hatch for unrecognized `m:*` elements.\n *\n * Source: mathml-spec §8.5 — re-serializes verbatim.\n *\n * @public\n */\nexport class UnknownMathElement extends MathElement {\n constructor(localName, xml) {\n super();\n this.type = 'unknown';\n this.localName = localName;\n this.attachPreservedXml(xml);\n }\n}\n/**\n * Convenience: build MathArgument from a list of elements.\n *\n * @private\n */\nexport function mathArg(...elements) {\n return new MathArgument({}, elements);\n}\n","/**\n * Math root containers: `m:oMathPara`, `m:oMath`.\n *\n * Source: ECMA-376-4 Annex A.8.1 `CT_OMathPara`, `CT_OMath`.\n */\nimport { MathElement } from './math-element';\nimport { MathmlValidationError } from '../errors';\n/**\n * Display-math paragraph (`m:oMathPara`) — a block of one or more office-math equations.\n *\n * Child sequence: `oMathParaPr?`, `oMath` (1..∞).\n *\n * @public\n */\nexport class MathParagraph extends MathElement {\n constructor(properties = {}, equations = []) {\n super();\n /**\n * Math element type for this root (`oMathPara`).\n */\n this.type = 'oMathPara';\n this._properties = Object.freeze(Object.assign({}, properties));\n this._equations = [...equations];\n }\n /**\n * Paragraph-level math configuration (`m:oMathParaPr`), such as justification (`m:jc`).\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = Object.freeze(Object.assign({}, next));\n this.notifyMutated();\n }\n /**\n * Ordered office-math equations in this paragraph (`m:oMath`), each a {@link MathOMath}.\n * At least one equation is required on serialize.\n */\n get equations() {\n return this._equations;\n }\n /**\n * Replaces the ordered `m:oMath` equations in this paragraph.\n */\n setEquations(next) {\n this.assertMutable();\n this._equations = [...next];\n this.notifyMutated();\n }\n /**\n * Appends one office-math equation (`m:oMath`) at the end of this paragraph.\n */\n appendEquation(equation) {\n this.assertMutable();\n this._equations.push(equation);\n this.notifyMutated();\n }\n /**\n * Validates that this paragraph has at least one `m:oMath` before serialization.\n *\n * @private\n * Called by the OMML serializer; not part of the public authoring API.\n */\n assertSerializable(path = 'oMathPara') {\n if (this._equations.length < 1) {\n throw new MathmlValidationError('m:oMathPara requires at least one m:oMath (CT_OMathPara)', path, 'required-child');\n }\n }\n}\n/**\n * Inline office-math root (`m:oMath`) — one equation body of math elements.\n *\n * Child sequence: `EG_OMathElements` (0..∞).\n *\n * @public\n */\nexport class MathOMath extends MathElement {\n constructor(children = []) {\n super();\n /**\n * Math element type for this root (`oMath`).\n */\n this.type = 'oMath';\n this._children = [...children];\n }\n /**\n * Ordered math children of this equation (`EG_OMathElements`).\n */\n get children() {\n return this._children;\n }\n /**\n * Replaces the ordered math children of this equation.\n */\n setChildren(next) {\n this.assertMutable();\n this._children = [...next];\n this.notifyMutated();\n }\n /**\n * Appends one math element at the end of this equation.\n */\n appendChild(child) {\n this.assertMutable();\n this._children.push(child);\n this.notifyMutated();\n }\n}\n","/**\n * Typed OMML control classes (EG_OMathMathElements).\n *\n * Source: ECMA-376-4 Annex A.8.1; mathml-spec §7 / §11.2.\n * Constructors take props bag + fixed-sequence children (no boolean traps).\n */\nimport { MathmlValidationError } from '../errors';\nimport { MathArgument, MathElement, MathText } from './math-element';\n// ─── Helpers ─────────────────────────────────────────────────────────────────\nfunction freezeProps(props) {\n return Object.freeze(Object.assign({}, props));\n}\nfunction asArg(value) {\n return value instanceof MathArgument ? value : new MathArgument({}, value);\n}\nfunction requireArgs(path, count, args) {\n for (let i = 0; i < count; i++) {\n if (args[i] === undefined) {\n throw new MathmlValidationError(`Missing required argument at position ${String(i)}`, path, 'required-child');\n }\n }\n}\n// ─── Controls ────────────────────────────────────────────────────────────────\n/**\n * Accent math structure — a base expression with a combining accent character.\n *\n * @public\n */\nexport class MathAccent extends MathElement {\n constructor(properties = {}, base = []) {\n super();\n /**\n * Discriminator for this math control kind.\n *\n * @public\n */\n this.type = 'acc';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n }\n /**\n * Gets or sets accent configuration such as the accent character.\n *\n * @public\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Gets or sets the base mathematical expression under the accent.\n *\n * @public\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Over/under bar structure (`m:bar`) — a base expression with a bar accent.\n *\n * Child sequence: `barPr?`, `e`.\n *\n * @public\n */\nexport class MathBar extends MathElement {\n constructor(properties = {}, base = []) {\n super();\n /**\n * Math element type for this control (`bar`).\n */\n this.type = 'bar';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n }\n /**\n * Bar configuration (`m:barPr`), such as bar position (`pos`).\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression under the bar (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Layout box structure (`m:box`) — groups a base for operator emulation and breaks.\n *\n * Child sequence: `boxPr?`, `e`.\n *\n * @public\n */\nexport class MathBox extends MathElement {\n constructor(properties = {}, base = []) {\n super();\n /**\n * Math element type for this control (`box`).\n */\n this.type = 'box';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n }\n /**\n * Box configuration (`m:boxPr`), such as operator emulation and break flags.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression inside the box (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Border box structure (`m:borderBox`) — a base expression with optional borders and strikes.\n *\n * Child sequence: `borderBoxPr?`, `e`.\n *\n * @public\n */\nexport class MathBorderBox extends MathElement {\n constructor(properties = {}, base = []) {\n super();\n /**\n * Math element type for this control (`borderBox`).\n */\n this.type = 'borderBox';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n }\n /**\n * Border-box configuration (`m:borderBoxPr`), such as hidden sides and strike flags.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression inside the border box (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Delimiter structure (`m:d`) — one or more arguments between begin/end characters.\n *\n * Child sequence: `dPr?`, `e` (1..∞).\n *\n * @public\n */\nexport class MathDelimiter extends MathElement {\n constructor(properties = {}, elements = []) {\n super();\n /**\n * Math element type for this control (`d`).\n */\n this.type = 'd';\n this._properties = freezeProps(properties);\n this._elements = elements.map(e => asArg(e));\n }\n /**\n * Delimiter configuration (`m:dPr`), such as begin/end characters and grow.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Ordered delimiter arguments (`m:e`), each an {@link MathArgument}.\n */\n get elements() {\n return this._elements;\n }\n /**\n * Replaces the ordered delimiter arguments (`m:e`) in document order.\n */\n set elements(next) {\n this.assertMutable();\n this._elements = [...next];\n this.notifyMutated();\n }\n /**\n * Validates that this delimiter has at least one argument before serialization.\n *\n * @private\n * Called by the OMML serializer; not part of the public authoring API.\n */\n assertSerializable(path = 'd') {\n if (this._elements.length < 1) {\n throw new MathmlValidationError('m:d requires at least one m:e (CT_D)', path, 'required-child');\n }\n }\n}\n/**\n * Equation array structure (`m:eqArr`) — stacked equation rows as arguments.\n *\n * Child sequence: `eqArrPr?`, `e` (1..∞).\n *\n * @public\n */\nexport class MathEquationArray extends MathElement {\n constructor(properties = {}, elements = []) {\n super();\n /**\n * Math element type for this control (`eqArr`).\n */\n this.type = 'eqArr';\n this._properties = freezeProps(properties);\n this._elements = elements.map(e => asArg(e));\n }\n /**\n * Equation-array configuration (`m:eqArrPr`), such as base justification and distribution.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Ordered equation-array rows (`m:e`), each an {@link MathArgument}.\n */\n get elements() {\n return this._elements;\n }\n /**\n * Replaces the ordered equation-array rows (`m:e`) in document order.\n */\n set elements(next) {\n this.assertMutable();\n this._elements = [...next];\n this.notifyMutated();\n }\n /**\n * Validates that this equation array has at least one row before serialization.\n *\n * @private\n * Called by the OMML serializer; not part of the public authoring API.\n */\n assertSerializable(path = 'eqArr') {\n if (this._elements.length < 1) {\n throw new MathmlValidationError('m:eqArr requires at least one m:e (CT_EqArr)', path, 'required-child');\n }\n }\n}\n/**\n * Fraction math structure — numerator over denominator with optional fraction style.\n *\n * @public\n */\nexport class MathFraction extends MathElement {\n constructor(properties = {}, numerator = [], denominator = []) {\n super();\n /**\n * Discriminator for this math control kind.\n *\n * @public\n */\n this.type = 'f';\n this._properties = freezeProps(properties);\n this._numerator = asArg(numerator);\n this._denominator = asArg(denominator);\n }\n /**\n * Gets or sets fraction configuration such as bar, skewed, linear, or no-bar style.\n *\n * @public\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Gets or sets the numerator of the fraction.\n *\n * @public\n */\n get numerator() {\n return this._numerator;\n }\n set numerator(next) {\n this.assertMutable();\n this._numerator = next;\n this.notifyMutated();\n }\n /**\n * Gets or sets the denominator of the fraction.\n *\n * @public\n */\n get denominator() {\n return this._denominator;\n }\n set denominator(next) {\n this.assertMutable();\n this._denominator = next;\n this.notifyMutated();\n }\n}\n/**\n * Function-apply structure (`m:func`) — function name applied to a base expression.\n *\n * Child sequence: `funcPr?`, `fName`, `e`.\n *\n * @public\n */\nexport class MathFunction extends MathElement {\n constructor(properties = {}, name = [], base = []) {\n super();\n /**\n * Math element type for this control (`func`).\n */\n this.type = 'func';\n this._properties = freezeProps(properties);\n this._name = asArg(name);\n this._base = asArg(base);\n }\n /**\n * Function-apply configuration (`m:funcPr`).\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Function name argument (`m:fName`), for example `sin` or `log`.\n */\n get name() {\n return this._name;\n }\n set name(next) {\n this.assertMutable();\n this._name = next;\n this.notifyMutated();\n }\n /**\n * Base mathematical expression the function applies to (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Group-character structure (`m:groupChr`) — a base with a grouping character above or below.\n *\n * Child sequence: `groupChrPr?`, `e`.\n *\n * @public\n */\nexport class MathGroupCharacter extends MathElement {\n constructor(properties = {}, base = []) {\n super();\n /**\n * Math element type for this control (`groupChr`).\n */\n this.type = 'groupChr';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n }\n /**\n * Group-character configuration (`m:groupChrPr`), such as character and position.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression under the group character (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Lower-limit structure (`m:limLow`) — a base expression with a limit below it.\n *\n * Child sequence: `limLowPr?`, `e`, `lim`.\n *\n * @public\n */\nexport class MathLimitLower extends MathElement {\n constructor(properties = {}, base = [], lim = []) {\n super();\n /**\n * Math element type for this control (`limLow`).\n */\n this.type = 'limLow';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n this._lim = asArg(lim);\n }\n /**\n * Lower-limit configuration (`m:limLowPr`).\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression above the lower limit (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n /**\n * Lower-limit argument drawn beneath the base (`m:lim`).\n */\n get lim() {\n return this._lim;\n }\n set lim(next) {\n this.assertMutable();\n this._lim = next;\n this.notifyMutated();\n }\n}\n/**\n * Upper-limit structure (`m:limUpp`) — a base expression with a limit above it.\n *\n * Child sequence: `limUppPr?`, `e`, `lim`.\n *\n * @public\n */\nexport class MathLimitUpper extends MathElement {\n constructor(properties = {}, base = [], lim = []) {\n super();\n /**\n * Math element type for this control (`limUpp`).\n */\n this.type = 'limUpp';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n this._lim = asArg(lim);\n }\n /**\n * Upper-limit configuration (`m:limUppPr`).\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression below the upper limit (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n /**\n * Upper-limit argument drawn above the base (`m:lim`).\n */\n get lim() {\n return this._lim;\n }\n set lim(next) {\n this.assertMutable();\n this._lim = next;\n this.notifyMutated();\n }\n}\n/**\n * Matrix row (`m:mr`) — one row of matrix cell arguments.\n *\n * Child sequence: `e` (1..∞).\n *\n * @public\n */\nexport class MathMatrixRow extends MathElement {\n constructor(elements = []) {\n super();\n /**\n * Math element type for this control (`mr`).\n */\n this.type = 'mr';\n this._elements = elements.map(e => asArg(e));\n }\n /**\n * Ordered cell arguments in this matrix row (`m:e`), each an {@link MathArgument}.\n */\n get elements() {\n return this._elements;\n }\n /**\n * Replaces the ordered cell arguments (`m:e`) in this matrix row.\n */\n setElements(next) {\n this.assertMutable();\n this._elements = [...next];\n this.notifyMutated();\n }\n /**\n * Validates that this matrix row has at least one cell before serialization.\n *\n * @private\n * Called by the OMML serializer; not part of the public authoring API.\n */\n assertSerializable(path = 'mr') {\n if (this._elements.length < 1) {\n throw new MathmlValidationError('m:mr requires at least one m:e (CT_MR)', path, 'required-child');\n }\n }\n}\n/**\n * Matrix structure (`m:m`) — a grid of matrix rows.\n *\n * Child sequence: `mPr?`, `mr` (1..∞).\n *\n * @public\n */\nexport class MathMatrix extends MathElement {\n constructor(properties = {}, rows = []) {\n super();\n /**\n * Math element type for this control (`m`).\n */\n this.type = 'm';\n this._properties = freezeProps(properties);\n this._rows = [...rows];\n }\n /**\n * Matrix configuration (`m:mPr`), such as base justification and placeholder visibility.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Ordered matrix rows (`m:mr`), each a {@link MathMatrixRow}.\n */\n get rows() {\n return this._rows;\n }\n /**\n * Replaces the ordered matrix rows (`m:mr`) in document order.\n */\n setRows(next) {\n this.assertMutable();\n this._rows = [...next];\n this.notifyMutated();\n }\n /**\n * Validates that this matrix has at least one row (and each row is valid) before serialization.\n *\n * @private\n * Called by the OMML serializer; not part of the public authoring API.\n */\n assertSerializable(path = 'm') {\n if (this._rows.length < 1) {\n throw new MathmlValidationError('m:m requires at least one m:mr (CT_M)', path, 'required-child');\n }\n this._rows.forEach((row, i) => row.assertSerializable(`${path}.mr[${String(i)}]`));\n }\n}\n/**\n * N-ary operator structure (`m:nary`) — integral, sum, product, and similar operators.\n *\n * Child sequence: `naryPr?`, `sub`, `sup`, `e`.\n *\n * @public\n */\nexport class MathNaryOperator extends MathElement {\n constructor(properties = {}, sub = [], sup = [], base = []) {\n super();\n /**\n * Math element type for this control (`nary`).\n */\n this.type = 'nary';\n this._properties = freezeProps(properties);\n this._sub = asArg(sub);\n this._sup = asArg(sup);\n this._base = asArg(base);\n }\n /**\n * N-ary operator configuration (`m:naryPr`), such as operator character, limit location, and hide flags.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Lower (subscript) limit of the n-ary operator (`m:sub`).\n */\n get subscript() {\n return this._sub;\n }\n set subscript(next) {\n this.assertMutable();\n this._sub = next;\n this.notifyMutated();\n }\n /**\n * Upper (superscript) limit of the n-ary operator (`m:sup`).\n */\n get superscript() {\n return this._sup;\n }\n set superscript(next) {\n this.assertMutable();\n this._sup = next;\n this.notifyMutated();\n }\n /**\n * Base mathematical expression the n-ary operator applies to (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Phantom structure (`m:phant`) — layout spacing from content that may be hidden.\n *\n * Child sequence: `phantPr?`, `e`.\n *\n * @public\n */\nexport class MathPhantom extends MathElement {\n constructor(properties = {}, base = []) {\n super();\n /**\n * Math element type for this control (`phant`).\n */\n this.type = 'phant';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n }\n /**\n * Phantom configuration (`m:phantPr`), such as show and zero-width/ascender/descender flags.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression used for phantom layout (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Radical structure (`m:rad`) — square root or nth-root with optional degree.\n *\n * Child sequence: `radPr?`, `deg`, `e`.\n *\n * @public\n */\nexport class MathRadical extends MathElement {\n constructor(properties = {}, deg = [], base = []) {\n super();\n /**\n * Math element type for this control (`rad`).\n */\n this.type = 'rad';\n this._properties = freezeProps(properties);\n this._deg = asArg(deg);\n this._base = asArg(base);\n }\n /**\n * Radical configuration (`m:radPr`), such as whether the degree is hidden.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Degree argument of the radical (`m:deg`), for example the index of an nth root.\n */\n get deg() {\n return this._deg;\n }\n set deg(next) {\n this.assertMutable();\n this._deg = next;\n this.notifyMutated();\n }\n /**\n * Radicand — the expression under the radical sign (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Pre-sub-superscript structure (`m:sPre`) — scripts placed before the base.\n *\n * Child sequence: `sPrePr?`, `sub`, `sup`, `e`.\n *\n * @public\n */\nexport class MathPreSubSuperscript extends MathElement {\n constructor(properties = {}, sub = [], sup = [], base = []) {\n super();\n /**\n * Math element type for this control (`sPre`).\n */\n this.type = 'sPre';\n this._properties = freezeProps(properties);\n this._sub = asArg(sub);\n this._sup = asArg(sup);\n this._base = asArg(base);\n }\n /**\n * Pre-script configuration (`m:sPrePr`), such as script alignment.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Subscript argument placed before the base (`m:sub`).\n */\n get sub() {\n return this._sub;\n }\n set sub(next) {\n this.assertMutable();\n this._sub = next;\n this.notifyMutated();\n }\n /**\n * Superscript argument placed before the base (`m:sup`).\n */\n get sup() {\n return this._sup;\n }\n set sup(next) {\n this.assertMutable();\n this._sup = next;\n this.notifyMutated();\n }\n /**\n * Base mathematical expression after the pre-scripts (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n}\n/**\n * Subscript structure (`m:sSub`) — a base with a subscript.\n *\n * Child sequence: `sSubPr?`, `e`, `sub`.\n *\n * @public\n */\nexport class MathSubscript extends MathElement {\n constructor(properties = {}, base = [], sub = []) {\n super();\n /**\n * Math element type for this control (`sSub`).\n */\n this.type = 'sSub';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n this._sub = asArg(sub);\n }\n /**\n * Subscript configuration (`m:sSubPr`), such as script alignment.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression carrying the subscript (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n /**\n * Subscript argument (`m:sub`).\n */\n get subscript() {\n return this._sub;\n }\n set subscript(next) {\n this.assertMutable();\n this._sub = next;\n this.notifyMutated();\n }\n}\n/**\n * Sub-superscript structure (`m:sSubSup`) — a base with both subscript and superscript.\n *\n * Child sequence: `sSubSupPr?`, `e`, `sub`, `sup`.\n *\n * @public\n */\nexport class MathSubSuperscript extends MathElement {\n constructor(properties = {}, base = [], sub = [], sup = []) {\n super();\n /**\n * Math element type for this control (`sSubSup`).\n */\n this.type = 'sSubSup';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n this._sub = asArg(sub);\n this._sup = asArg(sup);\n }\n /**\n * Sub-superscript configuration (`m:sSubSupPr`), such as script alignment.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression carrying both scripts (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n /**\n * Subscript argument (`m:sub`).\n */\n get subscript() {\n return this._sub;\n }\n set subscript(next) {\n this.assertMutable();\n this._sub = next;\n this.notifyMutated();\n }\n /**\n * Superscript argument (`m:sup`).\n */\n get superscript() {\n return this._sup;\n }\n set superscript(next) {\n this.assertMutable();\n this._sup = next;\n this.notifyMutated();\n }\n}\n/**\n * Superscript structure (`m:sSup`) — a base with a superscript.\n *\n * Child sequence: `sSupPr?`, `e`, `sup`.\n *\n * @public\n */\nexport class MathSuperscript extends MathElement {\n constructor(properties = {}, base = [], sup = []) {\n super();\n /**\n * Math element type for this control (`sSup`).\n */\n this.type = 'sSup';\n this._properties = freezeProps(properties);\n this._base = asArg(base);\n this._sup = asArg(sup);\n }\n /**\n * Superscript configuration (`m:sSupPr`), such as script alignment.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Base mathematical expression carrying the superscript (`m:e`).\n */\n get base() {\n return this._base;\n }\n set base(next) {\n this.assertMutable();\n this._base = next;\n this.notifyMutated();\n }\n /**\n * Superscript argument (`m:sup`).\n */\n get superscript() {\n return this._sup;\n }\n set superscript(next) {\n this.assertMutable();\n this._sup = next;\n this.notifyMutated();\n }\n}\n/**\n * Math run (`m:r`) — text and optional opaque WML run content inside an equation.\n *\n * Child sequence: `rPr?`, optional `w:rPr`, then (`m:t` | WML run content)*.\n * The constructor accepts a string (single {@link MathText}) or a children list.\n *\n * @public\n */\nexport class MathRun extends MathElement {\n constructor(textOrChildren = [], properties = {}, wRPr, opaqueChildren = []) {\n super();\n /**\n * Math element type for this control (`r`).\n */\n this.type = 'r';\n this._properties = freezeProps(properties);\n this._wRPr = wRPr;\n this._opaqueChildren = [...opaqueChildren];\n if (typeof textOrChildren === 'string') {\n this._children = [new MathText(textOrChildren)];\n }\n else {\n this._children = [...textOrChildren];\n }\n }\n /**\n * Math run configuration (`m:rPr`), such as literal/normal flags, script, and style.\n */\n get properties() {\n return this._properties;\n }\n set properties(next) {\n this.assertMutable();\n this._properties = freezeProps(next);\n this.notifyMutated();\n }\n /**\n * Optional WordprocessingML run properties (`w:rPr`) nested under this math run.\n *\n * @private\n * Opaque WML carrier for round-trip; not part of the public MathML authoring API.\n */\n get wRPr() {\n return this._wRPr;\n }\n /**\n * @private\n *\n */\n set wRPr(next) {\n this.assertMutable();\n this._wRPr = next;\n this.notifyMutated();\n }\n /**\n * Ordered math children of this run (typically {@link MathText} nodes).\n */\n get children() {\n return this._children;\n }\n /**\n * Opaque non-math WML run-content siblings preserved in order with math texts.\n *\n * @private\n * Used by parse/serialize for round-trip fidelity; not part of the public authoring API.\n */\n get opaqueChildren() {\n return this._opaqueChildren;\n }\n /**\n * Replaces the ordered math children of this run.\n */\n setChildren(next) {\n this.assertMutable();\n this._children = [...next];\n this.notifyMutated();\n }\n /**\n * Concatenated text of all {@link MathText} children (full UTF-8 passthrough).\n * Assigning a value replaces children with a single {@link MathText}.\n */\n get text() {\n return this._children.filter((c) => c.type === 't').map(t => t.value).join('');\n }\n set text(next) {\n this.assertMutable();\n this._children = [new MathText(next)];\n this.notifyMutated();\n }\n}\n// Suppress unused helper warning while keeping for serializer validation hooks.\nvoid requireArgs;\n","/**\n * Local structural OpenXml element-tree contract for mathml parse/serialize.\n *\n * office-common has no shared `src/core/xml` yet (TASK-9002/9003). This\n * mirrors ej2-docx `src/core/xml/model.ts` so TASK-9011 can pass the same\n * tree shape across the boundary. Unify when core XML lands.\n *\n * These types are part of the public `@syncfusion/ej2-office-common/mathml` surface\n * (parse/serialize boundary). Keep them public under stripInternal builds —\n * never tag this module as internal.\n */\n/** Create an immutable element node. */\nexport function createElement(namespaceUri, localName, prefix, options) {\n return { kind: 'element',\n namespaceUri,\n localName,\n prefix,\n attributes: function () {\n var _nc = options == null ? void 0 : options.attributes;\n return _nc != null ? _nc : [];\n }(),\n namespaceDeclarations: function () {\n var _nc = options == null ? void 0 : options.namespaceDeclarations;\n return _nc != null ? _nc : [];\n }(),\n children: function () {\n var _nc = options == null ? void 0 : options.children;\n return _nc != null ? _nc : [];\n }()\n };\n}\n/** Create a text node. */\nexport function createText(value) {\n return {\n kind: 'text',\n value\n };\n}\n/** Filter element children only. */\nexport function childElements(element) {\n return element.children.filter((c) => c.kind === 'element');\n}\n/** Read the first matching attribute value by local name (any namespace). */\nexport function attrValue(element, localName) {\n return function () {\n var _om = element.attributes.find(a => a.localName === localName);\n return _om == null ? void 0 : _om.value;\n }();\n}\n/** Read attribute value restricted to a namespace URI. */\nexport function attrValueNs(element, namespaceUri, localName) {\n return function () {\n var _om = element.attributes.find(a => a.namespaceUri === namespaceUri && a.localName === localName);\n return _om == null ? void 0 : _om.value;\n }();\n}\n/** Concatenate direct text-node children. */\nexport function textContent(element) {\n let out = '';\n for (const child of element.children) {\n if (child.kind === 'text') {\n out += child.value;\n }\n }\n return out;\n}\n","/**\n * Tolerant OMML element-tree → typed Math* DOM parser.\n *\n * Source: mathml-spec §8; ECMA-376-4 Annex A.8.1.\n * Never throws on load. Unknown m:* → UnknownMathElement.\n * Malformed required structure → markPreserveOnly + optional diagnostic.\n */\nimport { MATH_NAMESPACE, WML_TRANSITIONAL_NAMESPACE, XML_NAMESPACE } from '../constants';\nimport { attrValue, attrValueNs, childElements, textContent } from '../openxml';\nimport { parseMathFractionType, parseMathJc, parseMathLimLoc, parseMathScript, parseMathShape, parseMathStyle, parseMathTopBot, parseOnOff, isInteger2 } from '../model/enums';\nimport { MathArgument, MathText, UnknownMathElement } from '../model/math-element';\nimport { MathOMath, MathParagraph } from '../model/roots';\nimport { MathAccent, MathBar, MathBorderBox, MathBox, MathDelimiter, MathEquationArray, MathFraction, MathFunction, MathGroupCharacter, MathLimitLower, MathLimitUpper, MathMatrix, MathMatrixRow, MathNaryOperator, MathPhantom, MathPreSubSuperscript, MathRadical, MathRun, MathSubscript, MathSubSuperscript, MathSuperscript } from '../model/controls';\nfunction isMathNs(el) {\n return el.namespaceUri === MATH_NAMESPACE;\n}\nfunction findChild(parent, localName) {\n return childElements(parent).find(c => isMathNs(c) && c.localName === localName);\n}\nfunction findChildren(parent, localName) {\n return childElements(parent).filter(c => isMathNs(c) && c.localName === localName);\n}\nfunction readVal(el) {\n if (!el) {\n return undefined;\n }\n return attrValue(el, 'val');\n}\nfunction readOnOffChild(pr, localName) {\n if (!pr) {\n return undefined;\n }\n const child = findChild(pr, localName);\n if (!child) {\n return undefined;\n }\n // Presence with no val → true (OOXML OnOff default when empty element present).\n const v = attrValue(child, 'val');\n if (v === undefined) {\n return true;\n }\n return parseOnOff(v);\n}\nfunction readStringChild(pr, localName) {\n if (!pr) {\n return undefined;\n }\n return readVal(findChild(pr, localName));\n}\nfunction parseCtrlPr(pr) {\n if (!pr) {\n return undefined;\n }\n return findChild(pr, 'ctrlPr');\n}\nfunction degrade(xml, path, message, options, fallback) {\n (function () {\n var _oc = options == null ? void 0 : options.onDiagnostic;\n return _oc == null ? void 0 : _oc({\n path,\n message,\n localName: xml.localName\n });\n })();\n fallback.markPreserveOnly(xml);\n return fallback;\n}\nfunction parseArgPr(argPr) {\n if (!argPr) {\n return {};\n }\n const argSzEl = findChild(argPr, 'argSz');\n const raw = readVal(argSzEl);\n if (raw === undefined) {\n return {};\n }\n const n = Number(raw);\n if (!Number.isFinite(n) || !isInteger2(n)) {\n return {};\n }\n return {\n argSz: n\n };\n}\n/**\n * Parse `CT_OMathArg` (`m:e`, `m:num`, `m:den`, `m:sub`, …).\n */\nfunction parseArgument(el, options) {\n if (!el) {\n return new MathArgument();\n }\n const argPr = findChild(el, 'argPr');\n const props = parseArgPr(argPr);\n const ctrlPr = findChild(el, 'ctrlPr');\n const children = [];\n for (const child of childElements(el)) {\n if (!isMathNs(child)) {\n continue;\n }\n if (child.localName === 'argPr' || child.localName === 'ctrlPr') {\n continue;\n }\n children.push(parseOne(child, options));\n }\n return new MathArgument(props, children, ctrlPr);\n}\nfunction parseManyArgs(parent, localName, options) {\n return findChildren(parent, localName).map(c => parseArgument(c, options));\n}\n// ─── Property bag parsers ────────────────────────────────────────────────────\n// Bind optionals to locals before spreads so exactOptionalPropertyTypes never\n// sees `T | undefined` under a present key.\nfunction parseAccentPr(pr) {\n const chr = readStringChild(pr, 'chr');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (chr !== undefined ? {\n chr\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseBarPr(pr) {\n const posRaw = readStringChild(pr, 'pos');\n const pos = posRaw !== undefined ? parseMathTopBot(posRaw) : undefined;\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (pos !== undefined ? {\n pos\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseBoxPr(pr) {\n const isOperatorEmulated = readOnOffChild(pr, 'opEmu');\n const isNoBreak = readOnOffChild(pr, 'noBreak');\n const isDifferential = readOnOffChild(pr, 'diff');\n const isAligned = readOnOffChild(pr, 'aln');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (isOperatorEmulated !== undefined ? {\n isOperatorEmulated\n } : {}), (isNoBreak !== undefined ? {\n isNoBreak\n } : {}), (isDifferential !== undefined ? {\n isDifferential\n } : {}), (isAligned !== undefined ? {\n isAligned\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\n/** OMML local name → public boolean property on `MathBorderBoxProperties`. */\nconst BORDER_BOX_ONOFF = [['hideTop', 'isTopHidden'], ['hideBot', 'isBottomHidden'], ['hideLeft', 'isLeftHidden'], ['hideRight', 'isRightHidden'], ['strikeH', 'hasHorizontalStrike'], ['strikeV', 'hasVerticalStrike'], ['strikeBLTR', 'hasBottomLeftToTopRightStrike'], ['strikeTLBR', 'hasTopLeftToBottomRightStrike']];\nfunction parseBorderBoxPr(pr) {\n const out = {};\n for (const [xmlName, apiName] of BORDER_BOX_ONOFF) {\n const v = readOnOffChild(pr, xmlName);\n if (v !== undefined) {\n out[apiName] = v;\n }\n }\n const ctrl = parseCtrlPr(pr);\n if (ctrl !== undefined) {\n out.ctrlPr = ctrl;\n }\n return out;\n}\nfunction parseDelimiterPr(pr) {\n const begChr = readStringChild(pr, 'begChr');\n const sepChr = readStringChild(pr, 'sepChr');\n const endChr = readStringChild(pr, 'endChr');\n const canGrow = readOnOffChild(pr, 'grow');\n const shpRaw = readStringChild(pr, 'shp');\n const shp = shpRaw !== undefined ? parseMathShape(shpRaw) : undefined;\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (begChr !== undefined ? {\n begChr\n } : {}), (sepChr !== undefined ? {\n sepChr\n } : {}), (endChr !== undefined ? {\n endChr\n } : {}), (canGrow !== undefined ? {\n canGrow\n } : {}), (shp !== undefined ? {\n shp\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseEqArrPr(pr) {\n const baseJc = readStringChild(pr, 'baseJc');\n const hasMaxDistance = readOnOffChild(pr, 'maxDist');\n const hasObjectDistance = readOnOffChild(pr, 'objDist');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (baseJc !== undefined ? {\n baseJc\n } : {}), (hasMaxDistance !== undefined ? {\n hasMaxDistance\n } : {}), (hasObjectDistance !== undefined ? {\n hasObjectDistance\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseFractionPr(pr) {\n const typeRaw = readStringChild(pr, 'type');\n const type = typeRaw !== undefined ? parseMathFractionType(typeRaw) : undefined;\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (type !== undefined ? {\n type\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseFunctionPr(pr) {\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseGroupChrPr(pr) {\n const chr = readStringChild(pr, 'chr');\n const posRaw = readStringChild(pr, 'pos');\n const pos = posRaw !== undefined ? parseMathTopBot(posRaw) : undefined;\n const vertRaw = readStringChild(pr, 'vertJc');\n const vertJc = vertRaw !== undefined ? parseMathTopBot(vertRaw) : undefined;\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (chr !== undefined ? {\n chr\n } : {}), (pos !== undefined ? {\n pos\n } : {}), (vertJc !== undefined ? {\n vertJc\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseLimitPr(pr) {\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseMatrixPr(pr) {\n const baseJc = readStringChild(pr, 'baseJc');\n const isPlaceholderHidden = readOnOffChild(pr, 'plcHide');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (baseJc !== undefined ? {\n baseJc\n } : {}), (isPlaceholderHidden !== undefined ? {\n isPlaceholderHidden\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseNaryPr(pr) {\n const chr = readStringChild(pr, 'chr');\n const limRaw = readStringChild(pr, 'limLoc');\n const limLoc = limRaw !== undefined ? parseMathLimLoc(limRaw) : undefined;\n const canGrow = readOnOffChild(pr, 'grow');\n const isSubscriptHidden = readOnOffChild(pr, 'subHide');\n const isSuperscriptHidden = readOnOffChild(pr, 'supHide');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (chr !== undefined ? {\n chr\n } : {}), (limLoc !== undefined ? {\n limLoc\n } : {}), (canGrow !== undefined ? {\n canGrow\n } : {}), (isSubscriptHidden !== undefined ? {\n isSubscriptHidden\n } : {}), (isSuperscriptHidden !== undefined ? {\n isSuperscriptHidden\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parsePhantPr(pr) {\n const isShown = readOnOffChild(pr, 'show');\n const isZeroWidth = readOnOffChild(pr, 'zeroWid');\n const isZeroAscender = readOnOffChild(pr, 'zeroAsc');\n const isZeroDescender = readOnOffChild(pr, 'zeroDesc');\n const isTransparent = readOnOffChild(pr, 'transp');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (isShown !== undefined ? {\n isShown\n } : {}), (isZeroWidth !== undefined ? {\n isZeroWidth\n } : {}), (isZeroAscender !== undefined ? {\n isZeroAscender\n } : {}), (isZeroDescender !== undefined ? {\n isZeroDescender\n } : {}), (isTransparent !== undefined ? {\n isTransparent\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseRadPr(pr) {\n const isDegreeHidden = readOnOffChild(pr, 'degHide');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (isDegreeHidden !== undefined ? {\n isDegreeHidden\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseScriptPr(pr) {\n const isScriptAligned = readOnOffChild(pr, 'alnScr');\n const ctrlPr = parseCtrlPr(pr);\n return Object.assign({}, (isScriptAligned !== undefined ? {\n isScriptAligned\n } : {}), (ctrlPr !== undefined ? {\n ctrlPr\n } : {}));\n}\nfunction parseRunPr(pr) {\n if (!pr) {\n return {};\n }\n const isLiteral = readOnOffChild(pr, 'lit');\n const isNormal = readOnOffChild(pr, 'nor');\n const scrRaw = readStringChild(pr, 'scr');\n const styRaw = readStringChild(pr, 'sty');\n const scr = scrRaw !== undefined ? parseMathScript(scrRaw) : undefined;\n const sty = styRaw !== undefined ? parseMathStyle(styRaw) : undefined;\n const isAligned = readOnOffChild(pr, 'aln');\n const brkRaw = readStringChild(pr, 'brk');\n const brkNum = brkRaw !== undefined ? Number(brkRaw) : undefined;\n const brk = brkNum !== undefined && Number.isFinite(brkNum) ? brkNum : undefined;\n return Object.assign({}, (isLiteral !== undefined ? {\n isLiteral\n } : {}), (isNormal !== undefined ? {\n isNormal\n } : {}), (scr !== undefined ? {\n scr\n } : {}), (sty !== undefined ? {\n sty\n } : {}), (isAligned !== undefined ? {\n isAligned\n } : {}), (brk !== undefined ? {\n brk\n } : {}));\n}\n// ─── Element dispatch ────────────────────────────────────────────────────────\nfunction parseText(el) {\n const space = attrValueNs(el, XML_NAMESPACE, 'space');\n const xmlSpace = space === 'preserve' || space === 'default' ? space : undefined;\n return new MathText(textContent(el), xmlSpace);\n}\nfunction parseRun(el, options) {\n const rPr = findChild(el, 'rPr');\n const props = parseRunPr(rPr);\n let wRPr;\n const children = [];\n const opaque = [];\n for (const child of childElements(el)) {\n if (isMathNs(child) && child.localName === 'rPr') {\n continue;\n }\n if (child.namespaceUri === WML_TRANSITIONAL_NAMESPACE && child.localName === 'rPr') {\n wRPr = child;\n continue;\n }\n if (isMathNs(child) && child.localName === 't') {\n children.push(parseText(child));\n continue;\n }\n if (isMathNs(child)) {\n children.push(parseOne(child, options));\n continue;\n }\n // Non-math run content — preserve opaque.\n opaque.push(child);\n }\n return new MathRun(children, props, wRPr, opaque);\n}\nfunction parseMatrixRow(el, options) {\n return new MathMatrixRow(parseManyArgs(el, 'e', options));\n}\nfunction parseOne(el, options) {\n if (!isMathNs(el)) {\n return new UnknownMathElement(el.localName, el);\n }\n switch (el.localName) {\n case 'oMathPara':\n return parseOMathPara(el, options);\n case 'oMath':\n return parseOMath(el, options);\n case 't':\n return parseText(el);\n case 'r':\n return parseRun(el, options);\n case 'acc':\n {\n const pr = findChild(el, 'accPr');\n return new MathAccent(parseAccentPr(pr), parseArgument(findChild(el, 'e'), options));\n }\n case 'bar':\n {\n const pr = findChild(el, 'barPr');\n return new MathBar(parseBarPr(pr), parseArgument(findChild(el, 'e'), options));\n }\n case 'box':\n {\n const pr = findChild(el, 'boxPr');\n return new MathBox(parseBoxPr(pr), parseArgument(findChild(el, 'e'), options));\n }\n case 'borderBox':\n {\n const pr = findChild(el, 'borderBoxPr');\n return new MathBorderBox(parseBorderBoxPr(pr), parseArgument(findChild(el, 'e'), options));\n }\n case 'd':\n {\n const pr = findChild(el, 'dPr');\n const elements = parseManyArgs(el, 'e', options);\n if (elements.length < 1) {\n return degrade(el, 'd', 'm:d missing required m:e', options, new MathDelimiter(parseDelimiterPr(pr), []));\n }\n return new MathDelimiter(parseDelimiterPr(pr), elements);\n }\n case 'eqArr':\n {\n const pr = findChild(el, 'eqArrPr');\n const elements = parseManyArgs(el, 'e', options);\n if (elements.length < 1) {\n return degrade(el, 'eqArr', 'm:eqArr missing required m:e', options, new MathEquationArray(parseEqArrPr(pr), []));\n }\n return new MathEquationArray(parseEqArrPr(pr), elements);\n }\n case 'f':\n {\n const pr = findChild(el, 'fPr');\n const num = findChild(el, 'num');\n const den = findChild(el, 'den');\n if (!num || !den) {\n return degrade(el, 'f', 'm:f missing required m:num and/or m:den', options, new MathFraction(parseFractionPr(pr), parseArgument(num, options), parseArgument(den, options)));\n }\n return new MathFraction(parseFractionPr(pr), parseArgument(num, options), parseArgument(den, options));\n }\n case 'func':\n {\n const pr = findChild(el, 'funcPr');\n return new MathFunction(parseFunctionPr(pr), parseArgument(findChild(el, 'fName'), options), parseArgument(findChild(el, 'e'), options));\n }\n case 'groupChr':\n {\n const pr = findChild(el, 'groupChrPr');\n return new MathGroupCharacter(parseGroupChrPr(pr), parseArgument(findChild(el, 'e'), options));\n }\n case 'limLow':\n {\n const pr = findChild(el, 'limLowPr');\n return new MathLimitLower(parseLimitPr(pr), parseArgument(findChild(el, 'e'), options), parseArgument(findChild(el, 'lim'), options));\n }\n case 'limUpp':\n {\n const pr = findChild(el, 'limUppPr');\n return new MathLimitUpper(parseLimitPr(pr), parseArgument(findChild(el, 'e'), options), parseArgument(findChild(el, 'lim'), options));\n }\n case 'm':\n {\n const pr = findChild(el, 'mPr');\n const rows = findChildren(el, 'mr').map(r => parseMatrixRow(r, options));\n if (rows.length < 1) {\n return degrade(el, 'm', 'm:m missing required m:mr', options, new MathMatrix(parseMatrixPr(pr), []));\n }\n return new MathMatrix(parseMatrixPr(pr), rows);\n }\n case 'mr':\n return parseMatrixRow(el, options);\n case 'nary':\n {\n const pr = findChild(el, 'naryPr');\n // CT_Nary order: naryPr?, sub, sup, e\n return new MathNaryOperator(parseNaryPr(pr), parseArgument(findChild(el, 'sub'), options), parseArgument(findChild(el, 'sup'), options), parseArgument(findChild(el, 'e'), options));\n }\n case 'phant':\n {\n const pr = findChild(el, 'phantPr');\n return new MathPhantom(parsePhantPr(pr), parseArgument(findChild(el, 'e'), options));\n }\n case 'rad':\n {\n const pr = findChild(el, 'radPr');\n return new MathRadical(parseRadPr(pr), parseArgument(findChild(el, 'deg'), options), parseArgument(findChild(el, 'e'), options));\n }\n case 'sPre':\n {\n const pr = findChild(el, 'sPrePr');\n // CT_SPre: sPrePr?, sub, sup, e\n return new MathPreSubSuperscript(parseScriptPr(pr), parseArgument(findChild(el, 'sub'), options), parseArgument(findChild(el, 'sup'), options), parseArgument(findChild(el, 'e'), options));\n }\n case 'sSub':\n {\n const pr = findChild(el, 'sSubPr');\n return new MathSubscript(parseScriptPr(pr), parseArgument(findChild(el, 'e'), options), parseArgument(findChild(el, 'sub'), options));\n }\n case 'sSubSup':\n {\n const pr = findChild(el, 'sSubSupPr');\n return new MathSubSuperscript(parseScriptPr(pr), parseArgument(findChild(el, 'e'), options), parseArgument(findChild(el, 'sub'), options), parseArgument(findChild(el, 'sup'), options));\n }\n case 'sSup':\n {\n const pr = findChild(el, 'sSupPr');\n return new MathSuperscript(parseScriptPr(pr), parseArgument(findChild(el, 'e'), options), parseArgument(findChild(el, 'sup'), options));\n }\n default:\n return new UnknownMathElement(el.localName, el);\n }\n}\nfunction parseOMath(el, options) {\n const children = [];\n for (const child of childElements(el)) {\n if (!isMathNs(child)) {\n // Non-math under oMath — wrap unknown.\n children.push(new UnknownMathElement(child.localName, child));\n continue;\n }\n children.push(parseOne(child, options));\n }\n return new MathOMath(children);\n}\nfunction parseOMathPara(el, options) {\n const pr = findChild(el, 'oMathParaPr');\n const jcRaw = pr ? readStringChild(pr, 'jc') : undefined;\n const jc = jcRaw !== undefined ? parseMathJc(jcRaw) : undefined;\n const props = Object.assign({}, (jc !== undefined ? {\n jc\n } : {}));\n const equations = findChildren(el, 'oMath').map(o => parseOMath(o, options));\n if (equations.length < 1) {\n return degrade(el, 'oMathPara', 'm:oMathPara missing required m:oMath', options, new MathParagraph(props, []));\n }\n return new MathParagraph(props, equations);\n}\n/**\n * Parse a single OMML root element (`m:oMathPara`, `m:oMath`, or any EG_OMathElements member)\n * into a typed {@link MathElement}.\n *\n * Tolerant: never throws. Unknown / malformed nodes degrade rather than abort.\n *\n * @public\n */\nexport function parseMathElement(root, options) {\n return parseOne(root, options);\n}\n/**\n * Parse zero or more sibling math roots (e.g. multiple `m:oMath` under a paragraph host).\n *\n * @public\n */\nexport function parseMathElements(roots, options) {\n return roots.map(r => parseMathElement(r, options));\n}\n","/**\n * Strict typed Math* DOM → OMML OpenXml element-tree serializer.\n *\n * Source: mathml-spec §9; ECMA-376-4 Annex A.8.1.\n * Throws {@link MathmlValidationError} on schema violations (typed path).\n * Preserve-only / unknown nodes re-emit `preservedXml` verbatim.\n */\nimport { MATH_NAMESPACE, MATH_PREFIX_FALLBACKS, XML_NAMESPACE } from '../constants';\nimport { MathmlValidationError } from '../errors';\nimport { createElement, createText } from '../openxml';\nimport { MATH_FTYPE_VALUES, MATH_JC_VALUES, MATH_LIMLOC_VALUES, MATH_SCRIPT_VALUES, MATH_SHP_VALUES, MATH_STYLE_VALUES, MATH_TOPBOT_VALUES, isInteger2, isInteger255 } from '../model/enums';\nimport { UnknownMathElement } from '../model/math-element';\nfunction resolvePrefix(options) {\n if ((options == null ? void 0 : options.prefix) !== undefined && options.prefix.length > 0) {\n return options.prefix;\n }\n const reserved = new Set(function () {\n var _nc = options == null ? void 0 : options.reservedPrefixes;\n return _nc != null ? _nc : [];\n }());\n for (const candidate of MATH_PREFIX_FALLBACKS) {\n if (!reserved.has(candidate)) {\n return candidate;\n }\n }\n return 'm999';\n}\nfunction needsXmlSpacePreserve(value) {\n if (value.length === 0) {\n return true;\n }\n const first = value[0];\n const last = value[value.length - 1];\n return first === ' ' || first === '\\t' || first === '\\n' || first === '\\r' || last === ' ' || last === '\\t' || last === '\\n' || last === '\\r';\n}\nfunction emitOnOff(value) {\n // ECMA-376 OnOffType — prefer canonical '1' / '0'.\n return value ? '1' : '0';\n}\nfunction mEl(ctx, localName, children = [], attributes = []) {\n return createElement(MATH_NAMESPACE, localName, ctx.prefix, {\n attributes,\n children\n });\n}\nfunction valAttr(value) {\n return {\n namespaceUri: '',\n localName: 'val',\n prefix: '',\n value\n };\n}\nfunction valEl(ctx, localName, value) {\n return mEl(ctx, localName, [], [valAttr(value)]);\n}\nfunction onOffEl(ctx, localName, value) {\n return mEl(ctx, localName, [], [valAttr(emitOnOff(value))]);\n}\nfunction pushCtrlPr(children, ctrlPr) {\n if (ctrlPr !== undefined) {\n children.push(ctrlPr);\n }\n}\nfunction assertInUnion(value, allowed, path, label) {\n if (!(allowed.indexOf(value) !== -1)) {\n throw new MathmlValidationError(`Illegal ${label} token '${value}' (not in schema enum)`, path, 'enum-value');\n }\n}\n/**\n * Serialize a MathArgument as a named CT_OMathArg element\n * (`e` | `num` | `den` | `sub` | `sup` | `lim` | `deg` | `fName`).\n */\nfunction emitArg(ctx, localName, arg) {\n const childPath = `${ctx.path}.${localName}`;\n const kids = [];\n const argSz = arg.properties.argSz;\n if (argSz !== undefined) {\n if (!isInteger2(argSz)) {\n throw new MathmlValidationError(`argSz must be an integer in −2..2 (ST_Integer2), got ${String(argSz)}`, `${childPath}.argPr.argSz`, 'value-range');\n }\n kids.push(mEl(ctx, 'argPr', [valEl(ctx, 'argSz', String(argSz))]));\n }\n for (let i = 0; i < arg.item.length; i++) {\n const child = arg.item[i];\n if (child === undefined) {\n continue;\n }\n kids.push(serializeNode(child, {\n prefix: ctx.prefix,\n path: `${childPath}[${String(i)}]`\n }));\n }\n pushCtrlPr(kids, arg.ctrlPr);\n return mEl(ctx, localName, kids);\n}\nfunction emitText(ctx, node) {\n const attrs = [];\n let space = node.xmlSpace;\n if (space === undefined && needsXmlSpacePreserve(node.value)) {\n space = 'preserve';\n }\n if (space !== undefined) {\n attrs.push({\n namespaceUri: XML_NAMESPACE,\n localName: 'space',\n prefix: 'xml',\n value: space\n });\n }\n return mEl(ctx, 't', [createText(node.value)], attrs);\n}\nfunction emitRunPr(ctx, run) {\n const p = run.properties;\n const kids = [];\n if (p.isLiteral !== undefined) {\n kids.push(onOffEl(ctx, 'lit', p.isLiteral));\n }\n if (p.isNormal !== undefined) {\n kids.push(onOffEl(ctx, 'nor', p.isNormal));\n }\n if (p.scr !== undefined) {\n assertInUnion(p.scr, MATH_SCRIPT_VALUES, `${ctx.path}.rPr.scr`, 'ST_Script');\n kids.push(valEl(ctx, 'scr', p.scr));\n }\n if (p.sty !== undefined) {\n assertInUnion(p.sty, MATH_STYLE_VALUES, `${ctx.path}.rPr.sty`, 'ST_Style');\n kids.push(valEl(ctx, 'sty', p.sty));\n }\n if (p.brk !== undefined) {\n if (!isInteger255(p.brk) && !(Number.isInteger(p.brk) && p.brk === 0)) {\n // ST_Integer255 is 1..255; allow 0 as present break index edge (Word).\n if (!Number.isInteger(p.brk) || p.brk < 0 || p.brk > 255) {\n throw new MathmlValidationError(`brk must be an integer in 0..255, got ${String(p.brk)}`, `${ctx.path}.rPr.brk`, 'value-range');\n }\n }\n kids.push(valEl(ctx, 'brk', String(p.brk)));\n }\n if (p.isAligned !== undefined) {\n kids.push(onOffEl(ctx, 'aln', p.isAligned));\n }\n if (kids.length === 0) {\n return undefined;\n }\n return mEl(ctx, 'rPr', kids);\n}\nfunction emitRun(ctx, run) {\n const kids = [];\n const rPr = emitRunPr(ctx, run);\n if (rPr !== undefined) {\n kids.push(rPr);\n }\n if (run.wRPr !== undefined) {\n kids.push(run.wRPr);\n }\n for (let i = 0; i < run.children.length; i++) {\n const child = run.children[i];\n if (child === undefined) {\n continue;\n }\n kids.push(serializeNode(child, {\n prefix: ctx.prefix,\n path: `${ctx.path}.r[${String(i)}]`\n }));\n }\n for (const opaque of run.opaqueChildren) {\n kids.push(opaque);\n }\n return mEl(ctx, 'r', kids);\n}\nfunction emitAccent(ctx, node) {\n const kids = [];\n const prKids = [];\n if (node.properties.chr !== undefined) {\n prKids.push(valEl(ctx, 'chr', node.properties.chr));\n }\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'accPr', prKids));\n }\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'acc', kids);\n}\nfunction emitBar(ctx, node) {\n const kids = [];\n const prKids = [];\n if (node.properties.pos !== undefined) {\n assertInUnion(node.properties.pos, MATH_TOPBOT_VALUES, `${ctx.path}.barPr.pos`, 'ST_TopBot');\n prKids.push(valEl(ctx, 'pos', node.properties.pos));\n }\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'barPr', prKids));\n }\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'bar', kids);\n}\nfunction emitBox(ctx, node) {\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.isOperatorEmulated !== undefined) {\n prKids.push(onOffEl(ctx, 'opEmu', p.isOperatorEmulated));\n }\n if (p.isNoBreak !== undefined) {\n prKids.push(onOffEl(ctx, 'noBreak', p.isNoBreak));\n }\n if (p.isDifferential !== undefined) {\n prKids.push(onOffEl(ctx, 'diff', p.isDifferential));\n }\n if (p.isAligned !== undefined) {\n prKids.push(onOffEl(ctx, 'aln', p.isAligned));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'boxPr', prKids));\n }\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'box', kids);\n}\n/** Public API boolean → OMML OnOff local name for `m:borderBoxPr`. */\nconst BORDER_BOX_ONOFF_EMIT = [['isTopHidden', 'hideTop'], ['isBottomHidden', 'hideBot'], ['isLeftHidden', 'hideLeft'], ['isRightHidden', 'hideRight'], ['hasHorizontalStrike', 'strikeH'], ['hasVerticalStrike', 'strikeV'], ['hasBottomLeftToTopRightStrike', 'strikeBLTR'], ['hasTopLeftToBottomRightStrike', 'strikeTLBR']];\nfunction emitBorderBox(ctx, node) {\n const kids = [];\n const prKids = [];\n const p = node.properties;\n for (const [apiName, xmlName] of BORDER_BOX_ONOFF_EMIT) {\n const v = p[apiName];\n if (typeof v === 'boolean') {\n prKids.push(onOffEl(ctx, xmlName, v));\n }\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'borderBoxPr', prKids));\n }\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'borderBox', kids);\n}\nfunction emitDelimiter(ctx, node) {\n node.assertSerializable(ctx.path);\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.begChr !== undefined) {\n prKids.push(valEl(ctx, 'begChr', p.begChr));\n }\n if (p.sepChr !== undefined) {\n prKids.push(valEl(ctx, 'sepChr', p.sepChr));\n }\n if (p.endChr !== undefined) {\n prKids.push(valEl(ctx, 'endChr', p.endChr));\n }\n if (p.canGrow !== undefined) {\n prKids.push(onOffEl(ctx, 'grow', p.canGrow));\n }\n if (p.shp !== undefined) {\n assertInUnion(p.shp, MATH_SHP_VALUES, `${ctx.path}.dPr.shp`, 'ST_Shp');\n prKids.push(valEl(ctx, 'shp', p.shp));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'dPr', prKids));\n }\n for (const el of node.elements) {\n kids.push(emitArg(ctx, 'e', el));\n }\n return mEl(ctx, 'd', kids);\n}\nfunction emitEqArr(ctx, node) {\n node.assertSerializable(ctx.path);\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.baseJc !== undefined) {\n prKids.push(valEl(ctx, 'baseJc', p.baseJc));\n }\n if (p.hasMaxDistance !== undefined) {\n prKids.push(onOffEl(ctx, 'maxDist', p.hasMaxDistance));\n }\n if (p.hasObjectDistance !== undefined) {\n prKids.push(onOffEl(ctx, 'objDist', p.hasObjectDistance));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'eqArrPr', prKids));\n }\n for (const el of node.elements) {\n kids.push(emitArg(ctx, 'e', el));\n }\n return mEl(ctx, 'eqArr', kids);\n}\nfunction emitFraction(ctx, node) {\n const kids = [];\n const prKids = [];\n if (node.properties.type !== undefined) {\n assertInUnion(node.properties.type, MATH_FTYPE_VALUES, `${ctx.path}.fPr.type`, 'ST_FType');\n prKids.push(valEl(ctx, 'type', node.properties.type));\n }\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'fPr', prKids));\n }\n // CT_F order: fPr?, num, den (OMML local names unchanged)\n kids.push(emitArg(ctx, 'num', node.numerator));\n kids.push(emitArg(ctx, 'den', node.denominator));\n return mEl(ctx, 'f', kids);\n}\nfunction emitFunction(ctx, node) {\n const kids = [];\n const prKids = [];\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'funcPr', prKids));\n }\n // CT_Func: funcPr?, fName, e (OMML local name fName unchanged)\n kids.push(emitArg(ctx, 'fName', node.name));\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'func', kids);\n}\nfunction emitGroupChr(ctx, node) {\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.chr !== undefined) {\n prKids.push(valEl(ctx, 'chr', p.chr));\n }\n if (p.pos !== undefined) {\n assertInUnion(p.pos, MATH_TOPBOT_VALUES, `${ctx.path}.groupChrPr.pos`, 'ST_TopBot');\n prKids.push(valEl(ctx, 'pos', p.pos));\n }\n if (p.vertJc !== undefined) {\n assertInUnion(p.vertJc, MATH_TOPBOT_VALUES, `${ctx.path}.groupChrPr.vertJc`, 'ST_TopBot');\n prKids.push(valEl(ctx, 'vertJc', p.vertJc));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'groupChrPr', prKids));\n }\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'groupChr', kids);\n}\nfunction emitLimLow(ctx, node) {\n const kids = [];\n const prKids = [];\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'limLowPr', prKids));\n }\n // CT_LimLow: limLowPr?, e, lim\n kids.push(emitArg(ctx, 'e', node.base));\n kids.push(emitArg(ctx, 'lim', node.lim));\n return mEl(ctx, 'limLow', kids);\n}\nfunction emitLimUpp(ctx, node) {\n const kids = [];\n const prKids = [];\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'limUppPr', prKids));\n }\n // CT_LimUpp: limUppPr?, e, lim\n kids.push(emitArg(ctx, 'e', node.base));\n kids.push(emitArg(ctx, 'lim', node.lim));\n return mEl(ctx, 'limUpp', kids);\n}\nfunction emitMatrixRow(ctx, node) {\n node.assertSerializable(ctx.path);\n const kids = [];\n for (const el of node.elements) {\n kids.push(emitArg(ctx, 'e', el));\n }\n return mEl(ctx, 'mr', kids);\n}\nfunction emitMatrix(ctx, node) {\n node.assertSerializable(ctx.path);\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.baseJc !== undefined) {\n prKids.push(valEl(ctx, 'baseJc', p.baseJc));\n }\n if (p.isPlaceholderHidden !== undefined) {\n prKids.push(onOffEl(ctx, 'plcHide', p.isPlaceholderHidden));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'mPr', prKids));\n }\n for (let i = 0; i < node.rows.length; i++) {\n const row = node.rows[i];\n if (row === undefined) {\n continue;\n }\n kids.push(emitMatrixRow({\n prefix: ctx.prefix,\n path: `${ctx.path}.mr[${String(i)}]`\n }, row));\n }\n return mEl(ctx, 'm', kids);\n}\nfunction emitNary(ctx, node) {\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.chr !== undefined) {\n prKids.push(valEl(ctx, 'chr', p.chr));\n }\n if (p.limLoc !== undefined) {\n assertInUnion(p.limLoc, MATH_LIMLOC_VALUES, `${ctx.path}.naryPr.limLoc`, 'ST_LimLoc');\n prKids.push(valEl(ctx, 'limLoc', p.limLoc));\n }\n if (p.canGrow !== undefined) {\n prKids.push(onOffEl(ctx, 'grow', p.canGrow));\n }\n if (p.isSubscriptHidden !== undefined) {\n prKids.push(onOffEl(ctx, 'subHide', p.isSubscriptHidden));\n }\n if (p.isSuperscriptHidden !== undefined) {\n prKids.push(onOffEl(ctx, 'supHide', p.isSuperscriptHidden));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'naryPr', prKids));\n }\n // CT_Nary order: naryPr?, sub, sup, e\n kids.push(emitArg(ctx, 'sub', node.subscript));\n kids.push(emitArg(ctx, 'sup', node.superscript));\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'nary', kids);\n}\nfunction emitPhant(ctx, node) {\n const kids = [];\n const prKids = [];\n const p = node.properties;\n if (p.isShown !== undefined) {\n prKids.push(onOffEl(ctx, 'show', p.isShown));\n }\n if (p.isZeroWidth !== undefined) {\n prKids.push(onOffEl(ctx, 'zeroWid', p.isZeroWidth));\n }\n if (p.isZeroAscender !== undefined) {\n prKids.push(onOffEl(ctx, 'zeroAsc', p.isZeroAscender));\n }\n if (p.isZeroDescender !== undefined) {\n prKids.push(onOffEl(ctx, 'zeroDesc', p.isZeroDescender));\n }\n if (p.isTransparent !== undefined) {\n prKids.push(onOffEl(ctx, 'transp', p.isTransparent));\n }\n pushCtrlPr(prKids, p.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'phantPr', prKids));\n }\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'phant', kids);\n}\nfunction emitRad(ctx, node) {\n const kids = [];\n const prKids = [];\n if (node.properties.isDegreeHidden !== undefined) {\n prKids.push(onOffEl(ctx, 'degHide', node.properties.isDegreeHidden));\n }\n pushCtrlPr(prKids, node.properties.ctrlPr);\n if (prKids.length > 0) {\n kids.push(mEl(ctx, 'radPr', prKids));\n }\n // CT_Rad: radPr?, deg, e\n kids.push(emitArg(ctx, 'deg', node.deg));\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'rad', kids);\n}\nfunction emitScriptPr(ctx, prName, isScriptAligned, ctrlPr) {\n const prKids = [];\n if (isScriptAligned !== undefined) {\n prKids.push(onOffEl(ctx, 'alnScr', isScriptAligned));\n }\n pushCtrlPr(prKids, ctrlPr);\n if (prKids.length === 0) {\n return undefined;\n }\n return mEl(ctx, prName, prKids);\n}\nfunction emitSPre(ctx, node) {\n const kids = [];\n const pr = emitScriptPr(ctx, 'sPrePr', node.properties.isScriptAligned, node.properties.ctrlPr);\n if (pr !== undefined) {\n kids.push(pr);\n }\n // CT_SPre: sPrePr?, sub, sup, e\n kids.push(emitArg(ctx, 'sub', node.sub));\n kids.push(emitArg(ctx, 'sup', node.sup));\n kids.push(emitArg(ctx, 'e', node.base));\n return mEl(ctx, 'sPre', kids);\n}\nfunction emitSSub(ctx, node) {\n const kids = [];\n const pr = emitScriptPr(ctx, 'sSubPr', node.properties.isScriptAligned, node.properties.ctrlPr);\n if (pr !== undefined) {\n kids.push(pr);\n }\n // CT_SSub: sSubPr?, e, sub\n kids.push(emitArg(ctx, 'e', node.base));\n kids.push(emitArg(ctx, 'sub', node.subscript));\n return mEl(ctx, 'sSub', kids);\n}\nfunction emitSSubSup(ctx, node) {\n const kids = [];\n const pr = emitScriptPr(ctx, 'sSubSupPr', node.properties.isScriptAligned, node.properties.ctrlPr);\n if (pr !== undefined) {\n kids.push(pr);\n }\n // CT_SSubSup: sSubSupPr?, e, sub, sup\n kids.push(emitArg(ctx, 'e', node.base));\n kids.push(emitArg(ctx, 'sub', node.subscript));\n kids.push(emitArg(ctx, 'sup', node.superscript));\n return mEl(ctx, 'sSubSup', kids);\n}\nfunction emitSSup(ctx, node) {\n const kids = [];\n const pr = emitScriptPr(ctx, 'sSupPr', node.properties.isScriptAligned, node.properties.ctrlPr);\n if (pr !== undefined) {\n kids.push(pr);\n }\n // CT_SSup: sSupPr?, e, sup\n kids.push(emitArg(ctx, 'e', node.base));\n kids.push(emitArg(ctx, 'sup', node.superscript));\n return mEl(ctx, 'sSup', kids);\n}\nfunction emitOMath(ctx, node) {\n const kids = [];\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (child === undefined) {\n continue;\n }\n kids.push(serializeNode(child, {\n prefix: ctx.prefix,\n path: `${ctx.path}[${String(i)}]`\n }));\n }\n return mEl(ctx, 'oMath', kids);\n}\nfunction emitOMathPara(ctx, node) {\n node.assertSerializable(ctx.path);\n const kids = [];\n if (node.properties.jc !== undefined) {\n assertInUnion(node.properties.jc, MATH_JC_VALUES, `${ctx.path}.oMathParaPr.jc`, 'ST_Jc');\n kids.push(mEl(ctx, 'oMathParaPr', [valEl(ctx, 'jc', node.properties.jc)]));\n }\n for (let i = 0; i < node.equations.length; i++) {\n const eq = node.equations[i];\n if (eq === undefined) {\n continue;\n }\n kids.push(emitOMath({\n prefix: ctx.prefix,\n path: `${ctx.path}.oMath[${String(i)}]`\n }, eq));\n }\n return mEl(ctx, 'oMathPara', kids);\n}\nfunction serializeNode(node, ctx) {\n // Preserve-only degradation / unknown: re-emit captured XML verbatim.\n if (node.preserveOnly) {\n if (node.preservedXml === undefined) {\n throw new MathmlValidationError('preserve-only node missing preservedXml', ctx.path, 'required-child');\n }\n return node.preservedXml;\n }\n if (node instanceof UnknownMathElement) {\n if (node.preservedXml === undefined) {\n throw new MathmlValidationError('unknown math node missing preservedXml', ctx.path, 'required-child');\n }\n return node.preservedXml;\n }\n switch (node.type) {\n case 'oMathPara':\n return emitOMathPara(ctx, node);\n case 'oMath':\n return emitOMath(ctx, node);\n case 't':\n return emitText(ctx, node);\n case 'r':\n return emitRun(ctx, node);\n case 'acc':\n return emitAccent(ctx, node);\n case 'bar':\n return emitBar(ctx, node);\n case 'box':\n return emitBox(ctx, node);\n case 'borderBox':\n return emitBorderBox(ctx, node);\n case 'd':\n return emitDelimiter(ctx, node);\n case 'eqArr':\n return emitEqArr(ctx, node);\n case 'f':\n return emitFraction(ctx, node);\n case 'func':\n return emitFunction(ctx, node);\n case 'groupChr':\n return emitGroupChr(ctx, node);\n case 'limLow':\n return emitLimLow(ctx, node);\n case 'limUpp':\n return emitLimUpp(ctx, node);\n case 'm':\n return emitMatrix(ctx, node);\n case 'mr':\n return emitMatrixRow(ctx, node);\n case 'nary':\n return emitNary(ctx, node);\n case 'phant':\n return emitPhant(ctx, node);\n case 'rad':\n return emitRad(ctx, node);\n case 'sPre':\n return emitSPre(ctx, node);\n case 'sSub':\n return emitSSub(ctx, node);\n case 'sSubSup':\n return emitSSubSup(ctx, node);\n case 'sSup':\n return emitSSup(ctx, node);\n case 'arg':\n // Arguments are only emitted via emitArg with a schema local name.\n throw new MathmlValidationError('MathArgument cannot be serialized as a root; use a named CT_OMathArg slot', ctx.path, 'child-order');\n case 'unknown':\n // Handled above via instanceof; keep exhaustive.\n if (node.preservedXml !== undefined) {\n return node.preservedXml;\n }\n throw new MathmlValidationError('unknown math node missing preservedXml', ctx.path, 'required-child');\n default:\n {\n const _exhaustive = node.type;\n throw new MathmlValidationError(`Unhandled math kind: ${String(_exhaustive)}`, ctx.path, 'required-child');\n }\n }\n}\n/**\n * Serialize a typed math node to an OpenXml element tree.\n *\n * Source: mathml-spec §9 — strict schema order; preserve-only re-emits XML.\n *\n * @public\n */\nexport function mathElementToOpenXml(node, options) {\n const prefix = resolvePrefix(options);\n return serializeNode(node, {\n prefix,\n path: node.type\n });\n}\n","/**\n * Deep clone and semantic equality for typed Math* DOM.\n *\n * Source: mathml-spec §4b / §10b; TASK-9010 §6 —\n * clone re-invokes constructors; preserved XML never travels with the clone\n * (UnknownMathElement keeps an internal content channel via constructor XML).\n * mathEqual compares shape, text, measures, enumerations (ignores listener).\n */\nimport { MathArgument, MathText, UnknownMathElement, } from './model/math-element';\nimport { MathOMath, MathParagraph } from './model/roots';\nimport { MathAccent, MathBar, MathBorderBox, MathBox, MathDelimiter, MathEquationArray, MathFraction, MathFunction, MathGroupCharacter, MathLimitLower, MathLimitUpper, MathMatrix, MathMatrixRow, MathNaryOperator, MathPhantom, MathPreSubSuperscript, MathRadical, MathRun, MathSubscript, MathSubSuperscript, MathSuperscript, } from './model/controls';\n/** Deep-clone an OpenXml element tree (immutable structural copy). */\nfunction cloneOpenXmlElement(el) {\n return { kind: 'element',\n namespaceUri: el.namespaceUri,\n localName: el.localName,\n prefix: el.prefix,\n attributes: el.attributes.map((a) => ({\n namespaceUri: a.namespaceUri,\n localName: a.localName,\n prefix: a.prefix,\n value: a.value,\n })),\n namespaceDeclarations: el.namespaceDeclarations.map((n) => ({\n prefix: n.prefix,\n namespaceUri: n.namespaceUri,\n })),\n children: el.children.map(cloneOpenXmlChild),\n };\n}\nfunction cloneOpenXmlChild(child) {\n if (child.kind === 'text') {\n const t = { kind: 'text', value: child.value };\n return t;\n }\n return cloneOpenXmlElement(child);\n}\nfunction cloneCtrlPr(ctrlPr) {\n return ctrlPr === undefined ? undefined : cloneOpenXmlElement(ctrlPr);\n}\n/** Clone property bags that may carry opaque ctrlPr OpenXml. */\nfunction cloneAccentProps(p) {\n return Object.assign({}, (p.chr !== undefined ? { chr: p.chr } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneBarProps(p) {\n return Object.assign({}, (p.pos !== undefined ? { pos: p.pos } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneBoxProps(p) {\n return Object.assign({}, (p.isOperatorEmulated !== undefined ? { isOperatorEmulated: p.isOperatorEmulated } : {}), (p.isNoBreak !== undefined ? { isNoBreak: p.isNoBreak } : {}), (p.isDifferential !== undefined ? { isDifferential: p.isDifferential } : {}), (p.isAligned !== undefined ? { isAligned: p.isAligned } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneBorderBoxProps(p) {\n return Object.assign({}, (p.isTopHidden !== undefined ? { isTopHidden: p.isTopHidden } : {}), (p.isBottomHidden !== undefined ? { isBottomHidden: p.isBottomHidden } : {}), (p.isLeftHidden !== undefined ? { isLeftHidden: p.isLeftHidden } : {}), (p.isRightHidden !== undefined ? { isRightHidden: p.isRightHidden } : {}), (p.hasHorizontalStrike !== undefined ? { hasHorizontalStrike: p.hasHorizontalStrike } : {}), (p.hasVerticalStrike !== undefined ? { hasVerticalStrike: p.hasVerticalStrike } : {}), (p.hasBottomLeftToTopRightStrike !== undefined\n ? { hasBottomLeftToTopRightStrike: p.hasBottomLeftToTopRightStrike }\n : {}), (p.hasTopLeftToBottomRightStrike !== undefined\n ? { hasTopLeftToBottomRightStrike: p.hasTopLeftToBottomRightStrike }\n : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneDelimiterProps(p) {\n return Object.assign({}, (p.begChr !== undefined ? { begChr: p.begChr } : {}), (p.sepChr !== undefined ? { sepChr: p.sepChr } : {}), (p.endChr !== undefined ? { endChr: p.endChr } : {}), (p.canGrow !== undefined ? { canGrow: p.canGrow } : {}), (p.shp !== undefined ? { shp: p.shp } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneEqArrProps(p) {\n return Object.assign({}, (p.baseJc !== undefined ? { baseJc: p.baseJc } : {}), (p.hasMaxDistance !== undefined ? { hasMaxDistance: p.hasMaxDistance } : {}), (p.hasObjectDistance !== undefined ? { hasObjectDistance: p.hasObjectDistance } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneFractionProps(p) {\n return Object.assign({}, (p.type !== undefined ? { type: p.type } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneFunctionProps(p) {\n return Object.assign({}, (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneGroupChrProps(p) {\n return Object.assign({}, (p.chr !== undefined ? { chr: p.chr } : {}), (p.pos !== undefined ? { pos: p.pos } : {}), (p.vertJc !== undefined ? { vertJc: p.vertJc } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneLimitProps(p) {\n return Object.assign({}, (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneMatrixProps(p) {\n return Object.assign({}, (p.baseJc !== undefined ? { baseJc: p.baseJc } : {}), (p.isPlaceholderHidden !== undefined ? { isPlaceholderHidden: p.isPlaceholderHidden } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneNaryProps(p) {\n return Object.assign({}, (p.chr !== undefined ? { chr: p.chr } : {}), (p.limLoc !== undefined ? { limLoc: p.limLoc } : {}), (p.canGrow !== undefined ? { canGrow: p.canGrow } : {}), (p.isSubscriptHidden !== undefined ? { isSubscriptHidden: p.isSubscriptHidden } : {}), (p.isSuperscriptHidden !== undefined ? { isSuperscriptHidden: p.isSuperscriptHidden } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction clonePhantomProps(p) {\n return Object.assign({}, (p.isShown !== undefined ? { isShown: p.isShown } : {}), (p.isZeroWidth !== undefined ? { isZeroWidth: p.isZeroWidth } : {}), (p.isZeroAscender !== undefined ? { isZeroAscender: p.isZeroAscender } : {}), (p.isZeroDescender !== undefined ? { isZeroDescender: p.isZeroDescender } : {}), (p.isTransparent !== undefined ? { isTransparent: p.isTransparent } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneRadicalProps(p) {\n return Object.assign({}, (p.isDegreeHidden !== undefined ? { isDegreeHidden: p.isDegreeHidden } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneScriptProps(p) {\n return Object.assign({}, (p.isScriptAligned !== undefined ? { isScriptAligned: p.isScriptAligned } : {}), (p.ctrlPr !== undefined ? { ctrlPr: cloneCtrlPr(p.ctrlPr) } : {}));\n}\nfunction cloneRunProps(p) {\n return Object.assign({}, (p.isLiteral !== undefined ? { isLiteral: p.isLiteral } : {}), (p.isNormal !== undefined ? { isNormal: p.isNormal } : {}), (p.scr !== undefined ? { scr: p.scr } : {}), (p.sty !== undefined ? { sty: p.sty } : {}), (p.isAligned !== undefined ? { isAligned: p.isAligned } : {}), (p.brk !== undefined ? { brk: p.brk } : {}));\n}\nfunction cloneArgProps(p) {\n return Object.assign({}, (p.argSz !== undefined ? { argSz: p.argSz } : {}));\n}\nfunction cloneParaProps(p) {\n return Object.assign({}, (p.jc !== undefined ? { jc: p.jc } : {}));\n}\n/**\n * Deep-clone a math element via constructor re-invocation.\n * Preserved XML and preserve-only lock do **not** travel with the clone\n * (task §6 / spec §10b). UnknownMathElement reconstructs from a deep-cloned\n * OpenXml content channel.\n *\n * @private\n */\nexport function cloneMathElement(node) {\n switch (node.type) {\n case 't': {\n const t = node;\n return new MathText(t.value, t.xmlSpace);\n }\n case 'arg': {\n const a = node;\n return new MathArgument(cloneArgProps(a.properties), a.item.map(cloneMathElement), cloneCtrlPr(a.ctrlPr));\n }\n case 'oMathPara': {\n const p = node;\n return new MathParagraph(cloneParaProps(p.properties), p.equations.map((eq) => cloneMathElement(eq)));\n }\n case 'oMath': {\n const o = node;\n return new MathOMath(o.children.map(cloneMathElement));\n }\n case 'unknown': {\n const u = node;\n // Internal content channel only — deep-clone OpenXml, no preserveOnly lock.\n const xml = u.preservedXml;\n if (xml === undefined) {\n // Fallback empty unknown shell (should not occur for parser-built nodes).\n return new UnknownMathElement(u.localName, { kind: 'element',\n namespaceUri: '',\n localName: u.localName,\n prefix: '',\n attributes: [],\n namespaceDeclarations: [],\n children: [],\n });\n }\n return new UnknownMathElement(u.localName, cloneOpenXmlElement(xml));\n }\n case 'r': {\n const r = node;\n return new MathRun(r.children.map(cloneMathElement), cloneRunProps(r.properties), r.wRPr === undefined ? undefined : cloneOpenXmlElement(r.wRPr), r.opaqueChildren.map(cloneOpenXmlElement));\n }\n case 'acc': {\n const n = node;\n return new MathAccent(cloneAccentProps(n.properties), cloneMathElement(n.base));\n }\n case 'bar': {\n const n = node;\n return new MathBar(cloneBarProps(n.properties), cloneMathElement(n.base));\n }\n case 'box': {\n const n = node;\n return new MathBox(cloneBoxProps(n.properties), cloneMathElement(n.base));\n }\n case 'borderBox': {\n const n = node;\n return new MathBorderBox(cloneBorderBoxProps(n.properties), cloneMathElement(n.base));\n }\n case 'd': {\n const n = node;\n return new MathDelimiter(cloneDelimiterProps(n.properties), n.elements.map((e) => cloneMathElement(e)));\n }\n case 'eqArr': {\n const n = node;\n return new MathEquationArray(cloneEqArrProps(n.properties), n.elements.map((e) => cloneMathElement(e)));\n }\n case 'f': {\n const n = node;\n return new MathFraction(cloneFractionProps(n.properties), cloneMathElement(n.numerator), cloneMathElement(n.denominator));\n }\n case 'func': {\n const n = node;\n return new MathFunction(cloneFunctionProps(n.properties), cloneMathElement(n.name), cloneMathElement(n.base));\n }\n case 'groupChr': {\n const n = node;\n return new MathGroupCharacter(cloneGroupChrProps(n.properties), cloneMathElement(n.base));\n }\n case 'limLow': {\n const n = node;\n return new MathLimitLower(cloneLimitProps(n.properties), cloneMathElement(n.base), cloneMathElement(n.lim));\n }\n case 'limUpp': {\n const n = node;\n return new MathLimitUpper(cloneLimitProps(n.properties), cloneMathElement(n.base), cloneMathElement(n.lim));\n }\n case 'm': {\n const n = node;\n return new MathMatrix(cloneMatrixProps(n.properties), n.rows.map((row) => cloneMathElement(row)));\n }\n case 'mr': {\n const n = node;\n return new MathMatrixRow(n.elements.map((e) => cloneMathElement(e)));\n }\n case 'nary': {\n const n = node;\n return new MathNaryOperator(cloneNaryProps(n.properties), cloneMathElement(n.subscript), cloneMathElement(n.superscript), cloneMathElement(n.base));\n }\n case 'phant': {\n const n = node;\n return new MathPhantom(clonePhantomProps(n.properties), cloneMathElement(n.base));\n }\n case 'rad': {\n const n = node;\n return new MathRadical(cloneRadicalProps(n.properties), cloneMathElement(n.deg), cloneMathElement(n.base));\n }\n case 'sPre': {\n const n = node;\n return new MathPreSubSuperscript(cloneScriptProps(n.properties), cloneMathElement(n.sub), cloneMathElement(n.sup), cloneMathElement(n.base));\n }\n case 'sSub': {\n const n = node;\n return new MathSubscript(cloneScriptProps(n.properties), cloneMathElement(n.base), cloneMathElement(n.subscript));\n }\n case 'sSubSup': {\n const n = node;\n return new MathSubSuperscript(cloneScriptProps(n.properties), cloneMathElement(n.base), cloneMathElement(n.subscript), cloneMathElement(n.superscript));\n }\n case 'sSup': {\n const n = node;\n return new MathSuperscript(cloneScriptProps(n.properties), cloneMathElement(n.base), cloneMathElement(n.superscript));\n }\n default: {\n // Exhaustiveness: every MathElementType handled above.\n const _exhaustive = node.type;\n void _exhaustive;\n throw new Error(`cloneMathElement: unhandled kind`);\n }\n }\n}\nfunction openXmlEqual(a, b) {\n if (a === undefined && b === undefined) {\n return true;\n }\n if (a === undefined || b === undefined) {\n return false;\n }\n if (a.namespaceUri !== b.namespaceUri ||\n a.localName !== b.localName ||\n a.prefix !== b.prefix ||\n a.attributes.length !== b.attributes.length ||\n a.namespaceDeclarations.length !== b.namespaceDeclarations.length ||\n a.children.length !== b.children.length) {\n return false;\n }\n for (let i = 0; i < a.attributes.length; i++) {\n const aa = a.attributes[i];\n const bb = b.attributes[i];\n if (aa.namespaceUri !== bb.namespaceUri ||\n aa.localName !== bb.localName ||\n aa.prefix !== bb.prefix ||\n aa.value !== bb.value) {\n return false;\n }\n }\n for (let i = 0; i < a.namespaceDeclarations.length; i++) {\n const aa = a.namespaceDeclarations[i];\n const bb = b.namespaceDeclarations[i];\n if (aa.prefix !== bb.prefix || aa.namespaceUri !== bb.namespaceUri) {\n return false;\n }\n }\n for (let i = 0; i < a.children.length; i++) {\n const ca = a.children[i];\n const cb = b.children[i];\n if (ca.kind !== cb.kind) {\n return false;\n }\n if (ca.kind === 'text' && cb.kind === 'text') {\n if (ca.value !== cb.value) {\n return false;\n }\n }\n else if (ca.kind === 'element' && cb.kind === 'element') {\n if (!openXmlEqual(ca, cb)) {\n return false;\n }\n }\n else {\n return false;\n }\n }\n return true;\n}\nfunction openXmlListEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!openXmlEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}\nfunction propsEqual(a, b, ctrlPrKey = 'ctrlPr') {\n const keys = new Set([...Object.keys(a), ...Object.keys(b)]);\n for (const key of keys) {\n if (key === ctrlPrKey) {\n if (!openXmlEqual(a[key], b[key])) {\n return false;\n }\n continue;\n }\n if (a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n}\nfunction elementsEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!mathEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}\n/**\n * Semantic equality of two math trees (shape, text, measures, enumerations).\n * Ignores mutation listeners. Compares preserve-only flag so degraded nodes\n * do not silently equal clean typed peers.\n *\n * @private\n */\nexport function mathEqual(a, b) {\n if (a.type !== b.type) {\n return false;\n }\n if (a.preserveOnly !== b.preserveOnly) {\n return false;\n }\n switch (a.type) {\n case 't': {\n const ta = a;\n const tb = b;\n return ta.value === tb.value && ta.xmlSpace === tb.xmlSpace;\n }\n case 'arg': {\n const aa = a;\n const bb = b;\n return (propsEqual(aa.properties, bb.properties) &&\n openXmlEqual(aa.ctrlPr, bb.ctrlPr) &&\n elementsEqual(aa.item, bb.item));\n }\n case 'oMathPara': {\n const pa = a;\n const pb = b;\n return (propsEqual(pa.properties, pb.properties) &&\n elementsEqual(pa.equations, pb.equations));\n }\n case 'oMath': {\n const oa = a;\n const ob = b;\n return elementsEqual(oa.children, ob.children);\n }\n case 'unknown': {\n const ua = a;\n const ub = b;\n return ua.localName === ub.localName && openXmlEqual(ua.preservedXml, ub.preservedXml);\n }\n case 'r': {\n const ra = a;\n const rb = b;\n return (propsEqual(ra.properties, rb.properties) &&\n openXmlEqual(ra.wRPr, rb.wRPr) &&\n elementsEqual(ra.children, rb.children) &&\n openXmlListEqual(ra.opaqueChildren, rb.opaqueChildren));\n }\n case 'acc': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base));\n }\n case 'bar': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base));\n }\n case 'box': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base));\n }\n case 'borderBox': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base));\n }\n case 'd': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n elementsEqual(na.elements, nb.elements));\n }\n case 'eqArr': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n elementsEqual(na.elements, nb.elements));\n }\n case 'f': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.numerator, nb.numerator) &&\n mathEqual(na.denominator, nb.denominator));\n }\n case 'func': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.name, nb.name) &&\n mathEqual(na.base, nb.base));\n }\n case 'groupChr': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base));\n }\n case 'limLow': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base) &&\n mathEqual(na.lim, nb.lim));\n }\n case 'limUpp': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base) &&\n mathEqual(na.lim, nb.lim));\n }\n case 'm': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n elementsEqual(na.rows, nb.rows));\n }\n case 'mr': {\n const na = a;\n const nb = b;\n return elementsEqual(na.elements, nb.elements);\n }\n case 'nary': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.subscript, nb.subscript) &&\n mathEqual(na.superscript, nb.superscript) &&\n mathEqual(na.base, nb.base));\n }\n case 'phant': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base));\n }\n case 'rad': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.deg, nb.deg) &&\n mathEqual(na.base, nb.base));\n }\n case 'sPre': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.sub, nb.sub) &&\n mathEqual(na.sup, nb.sup) &&\n mathEqual(na.base, nb.base));\n }\n case 'sSub': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base) &&\n mathEqual(na.subscript, nb.subscript));\n }\n case 'sSubSup': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base) &&\n mathEqual(na.subscript, nb.subscript) &&\n mathEqual(na.superscript, nb.superscript));\n }\n case 'sSup': {\n const na = a;\n const nb = b;\n return (propsEqual(na.properties, nb.properties) &&\n mathEqual(na.base, nb.base) &&\n mathEqual(na.superscript, nb.superscript));\n }\n default: {\n const _exhaustive = a.type;\n void _exhaustive;\n return false;\n }\n }\n}\n","/*\n * Agile OFFCRYPTO constants cited from local [MS-OFFCRYPTO].\n *\n * @remarks\n * Never invent algorithm URIs, element names, or block keys. All values below\n * are taken from `specs/microsoft/[MS-OFFCRYPTO].md` §2.3.4.10–§2.3.4.15.\n * Re-exported from the encryption public surface for fixture / host harness use.\n *\n * @packageDocumentation\n */\n/**\n * EncryptionVersionInfo major for Agile: `0x0004` ([MS-OFFCRYPTO] §2.3.4.10).\n *\n * @public\n */\nexport const AGILE_VERSION_MAJOR = 0x0004;\n/**\n * EncryptionVersionInfo minor for Agile: `0x0004` ([MS-OFFCRYPTO] §2.3.4.10).\n *\n * @public\n */\nexport const AGILE_VERSION_MINOR = 0x0004;\n/** Reserved field after version MUST be 0x00000040 (§2.3.4.10). */\nexport const AGILE_RESERVED = 0x00000040;\n/** EncryptionInfo XML target namespace (§2.3.4.10). */\nexport const AGILE_ENCRYPTION_NS = 'http://schemas.microsoft.com/office/2006/encryption';\n/** PasswordKeyEncryptor URI on keyEncryptor (§2.3.4.10). */\nexport const PASSWORD_KEY_ENCRYPTOR_URI = 'http://schemas.microsoft.com/office/2006/keyEncryptor/password';\n/** PasswordKeyEncryptor element namespace (§2.3.4.10). */\nexport const PASSWORD_KEY_ENCRYPTOR_NS = 'http://schemas.microsoft.com/office/2006/keyEncryptor/password';\n/**\n * Block key for encryptedVerifierHashInput (§2.3.4.13).\n * Bytes: fe a7 d2 76 3b 4b 9e 79.\n */\nexport const BLOCK_KEY_VERIFIER_INPUT = Uint8Array.of(0xfe, 0xa7, 0xd2, 0x76, 0x3b, 0x4b, 0x9e, 0x79);\n/**\n * Block key for encryptedVerifierHashValue (§2.3.4.13).\n * Bytes: d7 aa 0f 6d 30 61 34 4e.\n */\nexport const BLOCK_KEY_VERIFIER_HASH = Uint8Array.of(0xd7, 0xaa, 0x0f, 0x6d, 0x30, 0x61, 0x34, 0x4e);\n/**\n * Block key for encryptedKeyValue (§2.3.4.13).\n * Bytes: 14 6e 0b e7 ab ac d0 d6.\n */\nexport const BLOCK_KEY_ENCRYPTOR_KEY = Uint8Array.of(0x14, 0x6e, 0x0b, 0xe7, 0xab, 0xac, 0xd0, 0xd6);\n/**\n * Block key for encryptedHmacKey (§2.3.4.14).\n * Bytes: 5f b2 ad 01 0c b9 e1 f6.\n */\nexport const BLOCK_KEY_HMAC_KEY = Uint8Array.of(0x5f, 0xb2, 0xad, 0x01, 0x0c, 0xb9, 0xe1, 0xf6);\n/**\n * Block key for encryptedHmacValue (§2.3.4.14).\n * Bytes: a0 67 7f 02 b2 2c 84 33.\n */\nexport const BLOCK_KEY_HMAC_VALUE = Uint8Array.of(0xa0, 0x67, 0x7f, 0x02, 0xb2, 0x2c, 0x84, 0x33);\n/** EncryptedPackage segment size in bytes (§2.3.4.15). */\nexport const ENCRYPTED_PACKAGE_SEGMENT_SIZE = 4096;\n/** CFB root stream names for OFFCRYPTO (§2.3.4.4, §2.3.4.10). */\nexport const STREAM_ENCRYPTION_INFO = 'EncryptionInfo';\nexport const STREAM_ENCRYPTED_PACKAGE = 'EncryptedPackage';\n/** Maximum spinCount from ST_SpinCount (§2.3.4.10). */\nexport const MAX_SPIN_COUNT = 10000000;\n/**\n * Standard Encryption EncryptionVersionInfo minor version (§2.3.4.5).\n * Major is 2, 3, or 4 with minor 0x0002 — explicitly unsupported in Phase 6.\n */\nexport const STANDARD_ENCRYPTION_VERSION_MINOR = 0x0002;\n/** Key padding byte when Hfinal is shorter than keyBits/8 (§2.3.4.11). */\nexport const KEY_PAD_BYTE = 0x36;\n/** IV padding byte when IV is shorter than blockSize (§2.3.4.12). */\nexport const IV_PAD_BYTE = 0x36;\n","/**\n * Encryption-related error types shared across Office libraries.\n *\n * @remarks\n * Messages must never include the consumer password or key material.\n * Citation: [MS-OFFCRYPTO] §1.3.3.4, §2.3.4.4–§2.3.4.15.\n */\nconst ONE_KIB = 1024;\nconst ONE_MIB = ONE_KIB * 1024;\nconst ONE_GIB = ONE_MIB * 1024;\n/**\n * Default decrypt limits aligned with typical Office package security defaults.\n */\nexport const DEFAULT_DECRYPT_SECURITY_LIMITS = Object.freeze({\n totalUncompressedBytes: 1 * ONE_GIB,\n singlePartUncompressedBytes: 256 * ONE_MIB,\n xmlNestingDepth: 256,\n xmlAttributesPerElement: 4096,\n textNodeLengthBytes: 32 * ONE_MIB,\n});\n/**\n * Builds effective decrypt limits from optional caller overrides.\n */\nexport function resolveDecryptLimits(overrides) {\n if (overrides === undefined) {\n return DEFAULT_DECRYPT_SECURITY_LIMITS;\n }\n const xmlNestingDepth = (overrides.xmlNestingDepth != null ? overrides.xmlNestingDepth : DEFAULT_DECRYPT_SECURITY_LIMITS.xmlNestingDepth);\n const xmlAttributesPerElement = (overrides.xmlAttributesPerElement != null ? overrides.xmlAttributesPerElement : DEFAULT_DECRYPT_SECURITY_LIMITS.xmlAttributesPerElement);\n const textNodeLengthBytes = (overrides.textNodeLengthBytes != null ? overrides.textNodeLengthBytes : DEFAULT_DECRYPT_SECURITY_LIMITS.textNodeLengthBytes);\n const resolved = Object.assign({ totalUncompressedBytes: (overrides.totalUncompressedBytes != null ? overrides.totalUncompressedBytes : DEFAULT_DECRYPT_SECURITY_LIMITS.totalUncompressedBytes), singlePartUncompressedBytes: (overrides.singlePartUncompressedBytes != null ? overrides.singlePartUncompressedBytes : DEFAULT_DECRYPT_SECURITY_LIMITS.singlePartUncompressedBytes) }, (xmlNestingDepth === undefined ? {} : { xmlNestingDepth }), (xmlAttributesPerElement === undefined ? {} : { xmlAttributesPerElement }), (textNodeLengthBytes === undefined ? {} : { textNodeLengthBytes }));\n return Object.freeze(resolved);\n}\nexport class PackageLimitError extends Error {\n constructor(limit, options = {}) {\n const partSuffix = options.partName === undefined ? '' : ` (part: ${options.partName})`;\n const actualSuffix = options.actual === undefined ? '' : `; actual value: ${String(options.actual)}`;\n super(`Package security limit exceeded: ${limit}${partSuffix}${actualSuffix}`);\n this.name = 'PackageLimitError';\n this.limit = limit;\n this.partName = options.partName;\n this.actual = options.actual;\n // ES5 / AMD emit: restore prototype so `instanceof` works in browsers.\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n/**\n * Raised when the package is encrypted and cannot be opened as supplied.\n */\nexport class EncryptedPackageError extends Error {\n constructor(message) {\n super(message);\n this.name = 'EncryptedPackageError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n/**\n * Raised when a consumer-supplied password fails OFFCRYPTO verification.\n */\nexport class InvalidPasswordError extends Error {\n constructor(message = 'Invalid password') {\n super(message);\n this.name = 'InvalidPasswordError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n/**\n * Raised when the package uses a recognized encryption method this build does not decrypt.\n */\nexport class UnsupportedEncryptionError extends Error {\n constructor(message = 'Unsupported encryption method') {\n super(message);\n this.name = 'UnsupportedEncryptionError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","/*\n * Hash / HMAC / AES-CBC primitives for Agile OFFCRYPTO.\n *\n * @remarks\n * [MS-OFFCRYPTO] §2.3.4.11–§2.3.4.15 pads AES-CBC plaintexts with **0x00** to\n * `blockSize`, not PKCS #7. Node's Web Crypto `AES-CBC` decrypt expects PKCS #7\n * and rejects Office ciphertexts. This module therefore uses the **Node.js\n * built-in** `node:crypto` (`createHash`, `createHmac`, `createDecipheriv` with\n * `setAutoPadding(false)`). That is a platform API, not a new npm dependency\n * (ADR / dependencies policy). No third-party crypto packages.\n *\n * Supported for v1: AES-128/192/256 + CBC; SHA-1 / SHA-256 / SHA-384 / SHA-512.\n * Symbols re-exported from the encryption package entry are public; keep\n * `@private`\n * only on helpers that are not part of that surface.\n *\n * @packageDocumentation\n */\nimport { UnsupportedEncryptionError } from './errors';\nimport { IV_PAD_BYTE, KEY_PAD_BYTE } from './agile-constants';\nfunction __nodeCrypto() {\n try {\n return require('crypto');\n }\n catch (e) {\n throw new Error('Node crypto is required for Agile encryption');\n }\n}\nconst { createCipheriv, createDecipheriv, createHash, createHmac } = __nodeCrypto();\nconst HASH_TO_NODE = {\n 'SHA-1': 'sha1',\n SHA256: 'sha256',\n SHA384: 'sha384',\n SHA512: 'sha512',\n};\nconst HASH_DIGEST_BYTES = {\n 'SHA-1': 20,\n SHA256: 32,\n SHA384: 48,\n SHA512: 64,\n};\n/**\n * Maps OFFCRYPTO hashAlgorithm attribute to an internal name.\n *\n * @throws {UnsupportedEncryptionError} When the algorithm is not in the v1 set.\n */\nexport function resolveHashAlgorithm(name) {\n switch (name) {\n case 'SHA-1':\n case 'SHA1':\n return 'SHA-1';\n case 'SHA256':\n return 'SHA256';\n case 'SHA384':\n return 'SHA384';\n case 'SHA512':\n return 'SHA512';\n default:\n throw new UnsupportedEncryptionError(`Unsupported OFFCRYPTO hashAlgorithm: ${sanitizeAlgToken(name)}`);\n }\n}\n/**\n * Validates cipherAlgorithm + cipherChaining for v1 (AES + CBC only).\n *\n * @throws {UnsupportedEncryptionError} When not AES/CBC.\n */\nexport function assertSupportedCipher(cipherAlgorithm, cipherChaining) {\n if (cipherAlgorithm !== 'AES') {\n throw new UnsupportedEncryptionError(`Unsupported OFFCRYPTO cipherAlgorithm: ${sanitizeAlgToken(cipherAlgorithm)}`);\n }\n if (cipherChaining !== 'ChainingModeCBC') {\n throw new UnsupportedEncryptionError(`Unsupported OFFCRYPTO cipherChaining: ${sanitizeAlgToken(cipherChaining)}`);\n }\n}\n/**\n * Validates AES keyBits (128 / 192 / 256).\n *\n * @throws {UnsupportedEncryptionError} When key length is not a supported AES size.\n */\nexport function assertAesKeyBits(keyBits) {\n if (keyBits !== 128 && keyBits !== 192 && keyBits !== 256) {\n throw new UnsupportedEncryptionError(`Unsupported OFFCRYPTO AES keyBits: ${String(keyBits)}`);\n }\n}\n/** Digest length in bytes for a resolved hash algorithm. */\nexport function hashDigestLength(hash) {\n return HASH_DIGEST_BYTES[hash];\n}\n/** One-shot hash. */\nexport function hashBytes(hash, data) {\n const h = createHash(HASH_TO_NODE[hash]);\n h.update(data);\n return new Uint8Array(h.digest());\n}\n/** HMAC over message with key (DataIntegrity §2.3.4.14). */\nexport function hmacBytes(hash, key, message) {\n const h = createHmac(HASH_TO_NODE[hash], Buffer.from(key));\n h.update(message);\n return new Uint8Array(h.digest());\n}\n/**\n * Concatenates byte arrays.\n *\n * @public\n */\nexport function concatBytes(...parts) {\n let total = 0;\n for (const p of parts) {\n total += p.byteLength;\n }\n const out = new Uint8Array(total);\n let offset = 0;\n for (const p of parts) {\n out.set(p, offset);\n offset += p.byteLength;\n }\n return out;\n}\n/**\n * Encodes a JavaScript string as UTF-16LE (Unicode password bytes, §2.3.4.11).\n */\nexport function encodePasswordUtf16Le(password) {\n const out = new Uint8Array(password.length * 2);\n for (let i = 0; i < password.length; i++) {\n const code = password.charCodeAt(i);\n out[i * 2] = code & 0xff;\n out[i * 2 + 1] = (code >>> 8) & 0xff;\n }\n return out;\n}\n/**\n * Password-based encryption key (§2.3.4.11).\n *\n * H0 = H(salt + password); Hn = H(iterator LE u32 + Hn-1) for spinCount iterations;\n * Hfinal = H(Hn + blockKey); pad/truncate to keyBits/8 with 0x36.\n */\nexport function deriveAgileKey(hash, salt, passwordUtf16Le, spinCount, blockKey, keyBits) {\n let hn = hashBytes(hash, concatBytes(salt, passwordUtf16Le));\n const iterator = new Uint8Array(4);\n const iteratorView = new DataView(iterator.buffer);\n for (let i = 0; i < spinCount; i++) {\n iteratorView.setUint32(0, i, true);\n hn = hashBytes(hash, concatBytes(iterator, hn));\n }\n const hfinal = hashBytes(hash, concatBytes(hn, blockKey));\n return padOrTruncate(hfinal, keyBits / 8, KEY_PAD_BYTE);\n}\n/**\n * Initialization vector (§2.3.4.12).\n *\n * With blockKey: IV = H(keySalt + blockKey); without: IV = keySalt.\n * Pad/truncate to blockSize with 0x36.\n */\nexport function deriveAgileIv(hash, keySalt, blockKey, blockSize) {\n const raw = blockKey === undefined ? keySalt : hashBytes(hash, concatBytes(keySalt, blockKey));\n return padOrTruncate(raw, blockSize, IV_PAD_BYTE);\n}\n/**\n * AES-CBC decrypt with zero padding (no PKCS #7 strip).\n *\n * @param key - AES key (16/24/32 bytes).\n * @param iv - IV of blockSize bytes (AES block is 16; OFFCRYPTO blockSize is 16 for AES).\n * @param ciphertext - Length MUST be a multiple of 16.\n * @returns Plaintext of the same length as ciphertext (including zero pad).\n */\nexport function aesCbcDecrypt(key, iv, ciphertext) {\n if (ciphertext.byteLength === 0) {\n return new Uint8Array(0);\n }\n if (ciphertext.byteLength % 16 !== 0) {\n throw new UnsupportedEncryptionError('OFFCRYPTO AES-CBC ciphertext length is not block-aligned');\n }\n if (iv.byteLength !== 16) {\n throw new UnsupportedEncryptionError('OFFCRYPTO AES-CBC IV must be 16 bytes');\n }\n const algo = aesAlgorithmName(key.byteLength);\n const decipher = createDecipheriv(algo, Buffer.from(key), Buffer.from(iv));\n decipher.setAutoPadding(false);\n const part1 = decipher.update(Buffer.from(ciphertext));\n const part2 = decipher.final();\n if (part2.byteLength === 0) {\n return new Uint8Array(part1);\n }\n const out = new Uint8Array(part1.byteLength + part2.byteLength);\n out.set(part1, 0);\n out.set(part2, part1.byteLength);\n return out;\n}\n/**\n * AES-CBC encrypt with zero padding (no PKCS #7).\n *\n * @remarks\n * Used by test fixture builders and host encrypt harnesses. Same zero-pad\n * rules as decrypt ([MS-OFFCRYPTO] §2.3.4.13 / §2.3.4.15).\n *\n * @public\n */\nexport function aesCbcEncrypt(key, iv, plaintext) {\n if (iv.byteLength !== 16) {\n throw new UnsupportedEncryptionError('OFFCRYPTO AES-CBC IV must be 16 bytes');\n }\n const blockSize = 16;\n const paddedLen = plaintext.byteLength === 0\n ? blockSize\n : Math.ceil(plaintext.byteLength / blockSize) * blockSize;\n const padded = new Uint8Array(paddedLen);\n padded.set(plaintext, 0);\n // remaining bytes stay 0x00 (Agile zero-pad, §2.3.4.13 / §2.3.4.15).\n const algo = aesAlgorithmName(key.byteLength);\n const cipher = createCipheriv(algo, Buffer.from(key), Buffer.from(iv));\n cipher.setAutoPadding(false);\n const part1 = cipher.update(Buffer.from(padded));\n const part2 = cipher.final();\n if (part2.byteLength === 0) {\n return new Uint8Array(part1);\n }\n const out = new Uint8Array(part1.byteLength + part2.byteLength);\n out.set(part1, 0);\n out.set(part2, part1.byteLength);\n return out;\n}\n/**\n * Constant-time comparison of two equal-length buffers.\n * Returns false when lengths differ (not constant-time on length).\n */\nexport function timingSafeEqual(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n let diff = 0;\n for (let i = 0; i < a.byteLength; i++) {\n // Lengths already equal; index is in range. Avoid non-null assertions.\n const left = (a[i] != null ? a[i] : 0);\n const right = (b[i] != null ? b[i] : 0);\n diff |= left ^ right;\n }\n return diff === 0;\n}\nfunction padOrTruncate(data, size, padByte) {\n if (data.byteLength === size) {\n return data;\n }\n if (data.byteLength > size) {\n return data.subarray(0, size);\n }\n const out = new Uint8Array(size);\n out.set(data, 0);\n out.fill(padByte, data.byteLength);\n return out;\n}\nfunction aesAlgorithmName(keyBytes) {\n switch (keyBytes) {\n case 16:\n return 'aes-128-cbc';\n case 24:\n return 'aes-192-cbc';\n case 32:\n return 'aes-256-cbc';\n default:\n throw new UnsupportedEncryptionError('Unsupported AES key length');\n }\n}\n/** Strip control chars so algorithm tokens cannot smuggle secrets into messages. */\nfunction sanitizeAlgToken(token) {\n const cleaned = token.replace(/[^\\w.\\-:/+]/g, '').slice(0, 64);\n return cleaned.length > 0 ? cleaned : '(unrecognized)';\n}\n","/*\n * Minimal attribute-oriented XML element parser for OFFCRYPTO EncryptionInfo.\n *\n * @remarks\n * EncryptionInfo XML is a small attribute-heavy tree (encryption / keyData /\n * dataIntegrity / keyEncryptors). This parser intentionally does **not** pull a\n * full OOXML DOM. It supports nested elements, attributes, default namespaces,\n * and rejects DOCTYPE / entity expansion.\n *\n * @private\n */\nimport { EncryptedPackageError, PackageLimitError, } from './errors';\nconst DEFAULT_XML_NESTING = 256;\nconst DEFAULT_XML_ATTRS = 4096;\nconst DEFAULT_TEXT_NODE = 32 * 1024 * 1024;\n/**\n * Parses EncryptionInfo UTF-8 XML into a single root element tree.\n *\n * @throws {EncryptedPackageError} Malformed XML.\n * @throws {PackageLimitError} Nesting / attribute / text limits.\n */\nexport function parseEncryptionInfoXml(xmlText, limits, partName = 'EncryptionInfo') {\n if (/<!DOCTYPE/i.test(xmlText) || /<!ENTITY/i.test(xmlText)) {\n throw new EncryptedPackageError('EncryptionInfo XML must not contain DTD or entities');\n }\n const maxDepth = (limits.xmlNestingDepth != null ? limits.xmlNestingDepth : DEFAULT_XML_NESTING);\n const maxAttrs = (limits.xmlAttributesPerElement != null ? limits.xmlAttributesPerElement : DEFAULT_XML_ATTRS);\n const maxText = (limits.textNodeLengthBytes != null ? limits.textNodeLengthBytes : DEFAULT_TEXT_NODE);\n let i = 0;\n const length = xmlText.length;\n const skipWs = () => {\n while (i < length) {\n const c = xmlText.charCodeAt(i);\n if (c === 0x20 || c === 0x09 || c === 0x0a || c === 0x0d) {\n i += 1;\n }\n else {\n break;\n }\n }\n };\n const peek = () => (i < length ? xmlText[i] : '');\n const startsWith = (s) => xmlText.startsWith(s, i);\n const readName = () => {\n const start = i;\n while (i < length) {\n const c = xmlText[i];\n if (/[A-Za-z0-9:_.-]/.test(c)) {\n i += 1;\n }\n else {\n break;\n }\n }\n if (i === start) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: expected name');\n }\n return xmlText.slice(start, i);\n };\n const decodeEntities = (raw) => raw\n .replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&quot;/g, '\"')\n .replace(/&apos;/g, \"'\")\n .replace(/&amp;/g, '&');\n const readAttrValue = () => {\n const quote = peek();\n if (quote !== '\"' && quote !== \"'\") {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: attribute value');\n }\n i += 1;\n const start = i;\n while (i < length && xmlText[i] !== quote) {\n i += 1;\n if (i - start > maxText) {\n throw new PackageLimitError('textNodeLengthBytes', { partName, actual: i - start });\n }\n }\n if (i >= length) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unclosed attribute');\n }\n const value = xmlText.slice(start, i);\n i += 1; // closing quote\n return decodeEntities(value);\n };\n const resolveQName = (qName, nsStack, isAttr) => {\n const colon = qName.indexOf(':');\n const prefix = colon === -1 ? '' : qName.slice(0, colon);\n const localName = colon === -1 ? qName : qName.slice(colon + 1);\n if (isAttr && prefix === '') {\n return { localName, namespaceUri: '' };\n }\n if (prefix === 'xmlns') {\n return { localName, namespaceUri: 'http://www.w3.org/2000/xmlns/' };\n }\n for (let s = nsStack.length - 1; s >= 0; s--) {\n const uri = nsStack[s].get(prefix);\n if (uri !== undefined) {\n return { localName, namespaceUri: uri };\n }\n }\n return { localName, namespaceUri: '' };\n };\n const parseElement = (nsStack, depth) => {\n if (depth > maxDepth) {\n throw new PackageLimitError('xmlNestingDepth', { partName, actual: depth });\n }\n if (peek() !== '<') {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: expected element');\n }\n i += 1; // <\n if (peek() === '/') {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unexpected end tag');\n }\n // Skip processing instructions / comments / XML declaration at this level via caller.\n const rawName = readName();\n skipWs();\n const pendingAttrs = [];\n let selfClosing = false;\n const localNs = new Map();\n while (i < length && peek() !== '>' && peek() !== '/') {\n const attrName = readName();\n skipWs();\n if (peek() !== '=') {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: expected =');\n }\n i += 1;\n skipWs();\n const attrValue = readAttrValue();\n skipWs();\n if (attrName === 'xmlns') {\n localNs.set('', attrValue);\n }\n else if (attrName.startsWith('xmlns:')) {\n localNs.set(attrName.slice(6), attrValue);\n }\n else {\n pendingAttrs.push({ qName: attrName, value: attrValue });\n }\n if (pendingAttrs.length > maxAttrs) {\n throw new PackageLimitError('xmlAttributesPerElement', {\n partName,\n actual: pendingAttrs.length,\n });\n }\n }\n if (startsWith('/>')) {\n selfClosing = true;\n i += 2;\n }\n else if (peek() === '>') {\n i += 1;\n }\n else {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: element tag');\n }\n const childNsStack = [...nsStack, localNs];\n const nameResolved = resolveQName(rawName, childNsStack, false);\n const attributes = pendingAttrs.map((a) => {\n const r = resolveQName(a.qName, childNsStack, true);\n return { localName: r.localName, namespaceUri: r.namespaceUri, value: a.value };\n });\n if (selfClosing) {\n return { kind: 'element',\n localName: nameResolved.localName,\n namespaceUri: nameResolved.namespaceUri,\n attributes,\n children: [],\n };\n }\n const children = [];\n for (;;) {\n skipWs();\n if (i >= length) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unclosed element');\n }\n if (startsWith('</')) {\n i += 2;\n const endName = readName();\n skipWs();\n if (peek() !== '>') {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: end tag');\n }\n i += 1;\n if (endName !== rawName) {\n throw new EncryptedPackageError(`EncryptionInfo XML is invalid: mismatched end tag ${endName}`);\n }\n break;\n }\n if (startsWith('<!--')) {\n const end = xmlText.indexOf('-->', i + 4);\n if (end < 0) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unclosed comment');\n }\n i = end + 3;\n continue;\n }\n if (startsWith('<?')) {\n const end = xmlText.indexOf('?>', i + 2);\n if (end < 0) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unclosed PI');\n }\n i = end + 2;\n continue;\n }\n if (peek() === '<') {\n children.push(parseElement(childNsStack, depth + 1));\n continue;\n }\n // Text node — EncryptionInfo does not need text content; skip with limit.\n const textStart = i;\n while (i < length && peek() !== '<') {\n i += 1;\n if (i - textStart > maxText) {\n throw new PackageLimitError('textNodeLengthBytes', {\n partName,\n actual: i - textStart,\n });\n }\n }\n }\n return { kind: 'element',\n localName: nameResolved.localName,\n namespaceUri: nameResolved.namespaceUri,\n attributes,\n children,\n };\n };\n // Skip BOM / XML declaration / leading comments.\n skipWs();\n if (startsWith('\\uFEFF')) {\n i += 1;\n skipWs();\n }\n while (startsWith('<?') || startsWith('<!--')) {\n if (startsWith('<?')) {\n const end = xmlText.indexOf('?>', i + 2);\n if (end < 0) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unclosed declaration');\n }\n i = end + 2;\n }\n else {\n const end = xmlText.indexOf('-->', i + 4);\n if (end < 0) {\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: unclosed comment');\n }\n i = end + 3;\n }\n skipWs();\n }\n const root = parseElement([new Map()], 1);\n skipWs();\n if (i < length) {\n // Allow trailing whitespace only (already skipped); anything else is junk.\n throw new EncryptedPackageError('EncryptionInfo XML is invalid: trailing content');\n }\n return root;\n}\n","/*\n * Parse EncryptionInfo stream for Agile encryption ([MS-OFFCRYPTO] §2.3.4.10).\n *\n * @remarks\n * Binary header: VersionMajor, VersionMinor (2 bytes each LE), Reserved (4 bytes LE),\n * then UTF-8 XML. Agile is **4.4** with Reserved **0x00000040**.\n * Standard Encryption (minor version 2) is explicitly unsupported.\n *\n * @private\n */\nimport { AGILE_ENCRYPTION_NS, AGILE_RESERVED, AGILE_VERSION_MAJOR, AGILE_VERSION_MINOR, MAX_SPIN_COUNT, PASSWORD_KEY_ENCRYPTOR_URI, STANDARD_ENCRYPTION_VERSION_MINOR, } from './agile-constants';\nimport { assertAesKeyBits, assertSupportedCipher, resolveHashAlgorithm, } from './crypto-primitives';\nimport { EncryptedPackageError, UnsupportedEncryptionError, } from './errors';\nimport { parseEncryptionInfoXml } from './encryption-info-xml';\nfunction __gt() {\n // Prefer Node global; fall back to browser window. Avoid @types/node.\n var g = (function () {\n try {\n // eslint-disable-next-line no-new-func\n return Function('return this')();\n }\n catch (e) {\n return {};\n }\n })();\n return g || {};\n}\nconst HEADER_BYTES = 8;\n/**\n * Parses EncryptionInfo stream bytes into an Agile model.\n *\n * @throws {UnsupportedEncryptionError} Standard Encryption or unknown version/alg.\n * @throws {EncryptedPackageError} Truncated or missing required Agile fields.\n */\nexport function parseAgileEncryptionInfo(encryptionInfo, limits) {\n if (encryptionInfo.byteLength < HEADER_BYTES + 1) {\n throw new EncryptedPackageError('EncryptionInfo stream is truncated');\n }\n const view = new DataView(encryptionInfo.buffer, encryptionInfo.byteOffset, encryptionInfo.byteLength);\n const versionMajor = view.getUint16(0, true);\n const versionMinor = view.getUint16(2, true);\n const reserved = view.getUint32(4, true);\n // Standard Encryption: major 2|3|4, minor 2 ([MS-OFFCRYPTO] §2.3.4.5).\n if (versionMinor === STANDARD_ENCRYPTION_VERSION_MINOR &&\n (versionMajor === 2 || versionMajor === 3 || versionMajor === 4)) {\n throw new UnsupportedEncryptionError('OFFCRYPTO Standard Encryption (EncryptionInfo minor version 2) is not supported; Agile (4.4) only');\n }\n if (versionMajor !== AGILE_VERSION_MAJOR || versionMinor !== AGILE_VERSION_MINOR) {\n throw new UnsupportedEncryptionError(`Unsupported EncryptionInfo version ${String(versionMajor)}.${String(versionMinor)}`);\n }\n if (reserved !== AGILE_RESERVED) {\n throw new UnsupportedEncryptionError(`Unsupported EncryptionInfo reserved field 0x${reserved.toString(16)}`);\n }\n const xmlBytes = encryptionInfo.subarray(HEADER_BYTES);\n const xmlText = utf8Decode(xmlBytes);\n let root;\n try {\n root = parseEncryptionInfoXml(xmlText, limits, 'EncryptionInfo');\n }\n catch (err) {\n if (err instanceof EncryptedPackageError || err instanceof UnsupportedEncryptionError) {\n throw err;\n }\n if (err instanceof Error && err.name === 'PackageLimitError') {\n throw err;\n }\n const msg = err instanceof Error ? err.message : 'XML parse failed';\n throw new EncryptedPackageError(`EncryptionInfo XML is invalid: ${msg}`);\n }\n if (root.localName !== 'encryption' || root.namespaceUri !== AGILE_ENCRYPTION_NS) {\n // Accept default-ns resolution failures only when localName matches and NS empty\n // after serializers omit xmlns on root (rare); still require encryption localName.\n if (root.localName !== 'encryption') {\n throw new EncryptedPackageError('EncryptionInfo root element is not encryption');\n }\n if (root.namespaceUri !== '' && root.namespaceUri !== AGILE_ENCRYPTION_NS) {\n throw new EncryptedPackageError('EncryptionInfo root element is not encryption');\n }\n }\n const keyDataEl = findChild(root, AGILE_ENCRYPTION_NS, 'keyData');\n const dataIntegrityEl = findChildOptional(root, AGILE_ENCRYPTION_NS, 'dataIntegrity');\n const keyEncryptorsEl = findChild(root, AGILE_ENCRYPTION_NS, 'keyEncryptors');\n const keyData = parseKeyData(keyDataEl);\n const dataIntegrity = dataIntegrityEl === undefined ? undefined : parseDataIntegrity(dataIntegrityEl);\n const passwordKeyEncryptor = parsePasswordKeyEncryptor(keyEncryptorsEl);\n return { keyData, dataIntegrity, passwordKeyEncryptor };\n}\nfunction parseKeyData(el) {\n const saltSize = requirePositiveIntAttr(el, 'saltSize');\n const blockSize = requirePositiveIntAttr(el, 'blockSize');\n const keyBits = requirePositiveIntAttr(el, 'keyBits');\n const hashSize = requirePositiveIntAttr(el, 'hashSize');\n const cipherAlgorithm = requireAttr(el, 'cipherAlgorithm');\n const cipherChaining = requireAttr(el, 'cipherChaining');\n const hashAlgorithmRaw = requireAttr(el, 'hashAlgorithm');\n const saltValue = requireBase64Attr(el, 'saltValue');\n assertSupportedCipher(cipherAlgorithm, cipherChaining);\n assertAesKeyBits(keyBits);\n const hashAlgorithm = resolveHashAlgorithm(hashAlgorithmRaw);\n if (blockSize !== 16) {\n throw new UnsupportedEncryptionError(`Unsupported OFFCRYPTO blockSize: ${String(blockSize)} (AES requires 16)`);\n }\n if (saltValue.byteLength !== saltSize) {\n throw new EncryptedPackageError('keyData saltValue length does not match saltSize');\n }\n return {\n saltSize,\n blockSize,\n keyBits,\n hashSize,\n cipherAlgorithm,\n cipherChaining,\n hashAlgorithm,\n saltValue,\n };\n}\nfunction parseDataIntegrity(el) {\n return {\n encryptedHmacKey: requireBase64Attr(el, 'encryptedHmacKey'),\n encryptedHmacValue: requireBase64Attr(el, 'encryptedHmacValue'),\n };\n}\nfunction parsePasswordKeyEncryptor(keyEncryptorsEl) {\n const encryptorEls = keyEncryptorsEl.children.filter((c) => c.kind === 'element' && c.localName === 'keyEncryptor');\n if (encryptorEls.length === 0) {\n throw new EncryptedPackageError('EncryptionInfo has no keyEncryptor');\n }\n let passwordEl;\n for (const ke of encryptorEls) {\n const uri = getAttr(ke, 'uri');\n if (uri === PASSWORD_KEY_ENCRYPTOR_URI) {\n passwordEl = findEncryptedKey(ke);\n break;\n }\n if (uri !== undefined && uri.length > 0) {\n throw new UnsupportedEncryptionError('OFFCRYPTO certificate (or non-password) keyEncryptor is not supported');\n }\n }\n if (passwordEl === undefined) {\n throw new UnsupportedEncryptionError('OFFCRYPTO EncryptionInfo has no password keyEncryptor');\n }\n const spinCount = requireNonNegativeIntAttr(passwordEl, 'spinCount');\n if (spinCount > MAX_SPIN_COUNT) {\n throw new EncryptedPackageError(`OFFCRYPTO spinCount exceeds maximum allowed (${String(MAX_SPIN_COUNT)})`);\n }\n const saltSize = requirePositiveIntAttr(passwordEl, 'saltSize');\n const blockSize = requirePositiveIntAttr(passwordEl, 'blockSize');\n const keyBits = requirePositiveIntAttr(passwordEl, 'keyBits');\n const hashSize = requirePositiveIntAttr(passwordEl, 'hashSize');\n const cipherAlgorithm = requireAttr(passwordEl, 'cipherAlgorithm');\n const cipherChaining = requireAttr(passwordEl, 'cipherChaining');\n const hashAlgorithmRaw = requireAttr(passwordEl, 'hashAlgorithm');\n const saltValue = requireBase64Attr(passwordEl, 'saltValue');\n const encryptedVerifierHashInput = requireBase64Attr(passwordEl, 'encryptedVerifierHashInput');\n const encryptedVerifierHashValue = requireBase64Attr(passwordEl, 'encryptedVerifierHashValue');\n const encryptedKeyValue = requireBase64Attr(passwordEl, 'encryptedKeyValue');\n assertSupportedCipher(cipherAlgorithm, cipherChaining);\n assertAesKeyBits(keyBits);\n const hashAlgorithm = resolveHashAlgorithm(hashAlgorithmRaw);\n if (blockSize !== 16) {\n throw new UnsupportedEncryptionError(`Unsupported password keyEncryptor blockSize: ${String(blockSize)}`);\n }\n if (saltValue.byteLength !== saltSize) {\n throw new EncryptedPackageError('encryptedKey saltValue length does not match saltSize');\n }\n return {\n spinCount,\n saltSize,\n blockSize,\n keyBits,\n hashSize,\n cipherAlgorithm,\n cipherChaining,\n hashAlgorithm,\n saltValue,\n encryptedVerifierHashInput,\n encryptedVerifierHashValue,\n encryptedKeyValue,\n };\n}\nfunction findEncryptedKey(keyEncryptor) {\n for (const child of keyEncryptor.children) {\n if (child.kind !== 'element') {\n continue;\n }\n if (child.localName === 'encryptedKey') {\n return child;\n }\n }\n return undefined;\n}\nfunction findChild(parent, ns, localName) {\n const el = findChildOptional(parent, ns, localName);\n if (el === undefined) {\n throw new EncryptedPackageError(`EncryptionInfo missing element ${localName}`);\n }\n return el;\n}\nfunction findChildOptional(parent, ns, localName) {\n for (const child of parent.children) {\n if (child.kind !== 'element') {\n continue;\n }\n if (child.localName === localName && (child.namespaceUri === ns || child.namespaceUri === '')) {\n return child;\n }\n }\n for (const child of parent.children) {\n if (child.kind === 'element' && child.localName === localName) {\n return child;\n }\n }\n return undefined;\n}\nfunction getAttr(el, localName) {\n for (const a of el.attributes) {\n if (a.localName === localName) {\n return a.value;\n }\n }\n return undefined;\n}\nfunction requireAttr(el, localName) {\n const v = getAttr(el, localName);\n if (v === undefined || v.length === 0) {\n throw new EncryptedPackageError(`EncryptionInfo missing attribute ${localName}`);\n }\n return v;\n}\nfunction requirePositiveIntAttr(el, localName) {\n const raw = requireAttr(el, localName);\n const n = Number.parseInt(raw, 10);\n if (!Number.isFinite(n) || n <= 0) {\n throw new EncryptedPackageError(`EncryptionInfo attribute ${localName} is invalid`);\n }\n return n;\n}\nfunction requireNonNegativeIntAttr(el, localName) {\n const raw = requireAttr(el, localName);\n const n = Number.parseInt(raw, 10);\n if (!Number.isFinite(n) || n < 0) {\n throw new EncryptedPackageError(`EncryptionInfo attribute ${localName} is invalid`);\n }\n return n;\n}\nfunction requireBase64Attr(el, localName) {\n const raw = requireAttr(el, localName);\n try {\n return base64Decode(raw);\n }\n catch (_a) {\n throw new EncryptedPackageError(`EncryptionInfo attribute ${localName} is not valid base64`);\n }\n}\nfunction base64Decode(value) {\n const normalized = value.replace(/\\s+/g, '');\n if (typeof __gt().atob === 'function') {\n const bin = __gt().atob(normalized);\n const out = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) {\n out[i] = bin.charCodeAt(i);\n }\n return out;\n }\n return new Uint8Array(Buffer.from(normalized, 'base64'));\n}\nfunction utf8Decode(bytes) {\n return new TextDecoder('utf-8', { fatal: true }).decode(bytes);\n}\n","/*\n * Password key encryptor verifier and intermediate key ([MS-OFFCRYPTO] §2.3.4.13).\n *\n * @remarks\n * 1. Derive key with blockKey `BLOCK_KEY_VERIFIER_INPUT`; decrypt encryptedVerifierHashInput.\n * 2. Hash the decrypted verifier input; derive key with `BLOCK_KEY_VERIFIER_HASH`;\n * decrypt encryptedVerifierHashValue; compare first hashSize bytes → else InvalidPasswordError.\n * 3. Derive key with `BLOCK_KEY_ENCRYPTED_KEY`; decrypt encryptedKeyValue → intermediate key\n * (truncated to keyBits/8).\n *\n * Integrity HMAC failure uses the same InvalidPasswordError (fail-closed; do not\n * distinguish wrong password vs tampered package in the public message).\n *\n * @private\n */\nimport { InvalidPasswordError } from './errors';\nimport { BLOCK_KEY_ENCRYPTOR_KEY, BLOCK_KEY_VERIFIER_HASH, BLOCK_KEY_VERIFIER_INPUT, } from './agile-constants';\nimport { aesCbcDecrypt, deriveAgileIv, deriveAgileKey, encodePasswordUtf16Le, hashBytes, timingSafeEqual, } from './crypto-primitives';\n/**\n * Verifies the password and returns the secret key used to decrypt EncryptedPackage\n * (decrypted encryptedKeyValue, truncated to keyBits/8).\n *\n * @throws {InvalidPasswordError} When verifier hash does not match.\n */\nexport function unlockIntermediateKey(password, encryptor) {\n const passwordBytes = encodePasswordUtf16Le(password);\n const { hashAlgorithm, saltValue, spinCount, keyBits, blockSize, hashSize } = encryptor;\n // --- verifier hash input ---\n const keyVerifierInput = deriveAgileKey(hashAlgorithm, saltValue, passwordBytes, spinCount, BLOCK_KEY_VERIFIER_INPUT, keyBits);\n const ivVerifierInput = deriveAgileIv(hashAlgorithm, saltValue, undefined, blockSize);\n const verifierInputPadded = aesCbcDecrypt(keyVerifierInput, ivVerifierInput, encryptor.encryptedVerifierHashInput);\n // §2.3.4.13: verifier input is saltSize random bytes (zero-padded to blockSize on encrypt).\n if (verifierInputPadded.byteLength < encryptor.saltSize) {\n throw new InvalidPasswordError();\n }\n const verifierInput = verifierInputPadded.subarray(0, encryptor.saltSize);\n const verifierHashComputed = hashBytes(hashAlgorithm, verifierInput);\n // --- verifier hash value ---\n const keyVerifierHash = deriveAgileKey(hashAlgorithm, saltValue, passwordBytes, spinCount, BLOCK_KEY_VERIFIER_HASH, keyBits);\n const ivVerifierHash = deriveAgileIv(hashAlgorithm, saltValue, undefined, blockSize);\n const verifierHashDecrypted = aesCbcDecrypt(keyVerifierHash, ivVerifierHash, encryptor.encryptedVerifierHashValue);\n const expectedLen = Math.min(hashSize, verifierHashComputed.byteLength, verifierHashDecrypted.byteLength);\n if (expectedLen <= 0) {\n throw new InvalidPasswordError();\n }\n if (!timingSafeEqual(verifierHashComputed.subarray(0, expectedLen), verifierHashDecrypted.subarray(0, expectedLen))) {\n throw new InvalidPasswordError();\n }\n // --- encrypted key value → intermediate / secret key ---\n const keyEncryptedKey = deriveAgileKey(hashAlgorithm, saltValue, passwordBytes, spinCount, BLOCK_KEY_ENCRYPTOR_KEY, keyBits);\n const ivEncryptedKey = deriveAgileIv(hashAlgorithm, saltValue, undefined, blockSize);\n const decryptedKey = aesCbcDecrypt(keyEncryptedKey, ivEncryptedKey, encryptor.encryptedKeyValue);\n const keyLen = keyBits / 8;\n if (decryptedKey.byteLength < keyLen) {\n throw new InvalidPasswordError();\n }\n return decryptedKey.subarray(0, keyLen);\n}\n","/*\n * Minimal OLE Compound File Binary (CFB) reader for OFFCRYPTO streams.\n *\n * @remarks\n * Reads only what is required to extract root storage streams named\n * `EncryptionInfo` and `EncryptedPackage` ([MS-OFFCRYPTO] §2.3.4.4,\n * §2.3.4.10). Layout fields follow the well-known CFB header / FAT /\n * directory structure used by ECMA-376 encrypted packages. This is **not** a\n * full [MS-CFB] implementation — no local MS-CFB corpus is present under\n * `specs/`; only the subset needed for named-stream extraction is coded.\n *\n * Fail closed on truncated headers, broken FAT chains, or missing streams.\n *\n * @private\n */\nimport { EncryptedPackageError } from './errors';\nimport { STREAM_ENCRYPTED_PACKAGE, STREAM_ENCRYPTION_INFO } from './agile-constants';\n/** OLE CFB header signature ([MS-CFB]). */\nconst OLE_CFB_SIGNATURE = Object.freeze([0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1]);\n/** Sector size shift for 512-byte sectors (common default). */\nconst SECTOR_SHIFT_512 = 9;\n/** Sector size shift for 4096-byte sectors. */\nconst SECTOR_SHIFT_4096 = 12;\nconst ENDOFCHAIN = 0xfffffffe;\nconst FREESECT = 0xffffffff;\nconst FATSECT = 0xfffffffd;\nconst DIFSECT = 0xfffffffc;\nconst DIR_ENTRY_SIZE = 128;\nconst MAX_DIR_ENTRIES = 65536;\nconst MAX_FAT_SECTORS = 1048576;\n/**\n * Extracts `\\EncryptionInfo` and `\\EncryptedPackage` from an OFFCRYPTO CFB.\n *\n * @param input - Entire OLE compound-file bytes.\n * @throws {EncryptedPackageError} When structure is incomplete or streams missing.\n */\nexport function readOffCryptoStreams(input) {\n if (input.byteLength < 512) {\n throw new EncryptedPackageError('OFFCRYPTO package is truncated (CFB header)');\n }\n for (let i = 0; i < OLE_CFB_SIGNATURE.length; i++) {\n if (input[i] !== OLE_CFB_SIGNATURE[i]) {\n throw new EncryptedPackageError('Package is not a valid OLE compound file');\n }\n }\n const view = new DataView(input.buffer, input.byteOffset, input.byteLength);\n const sectorShift = view.getUint16(30, true);\n if (sectorShift !== SECTOR_SHIFT_512 && sectorShift !== SECTOR_SHIFT_4096) {\n throw new EncryptedPackageError('Unsupported CFB sector size');\n }\n const sectorSize = 1 << sectorShift;\n const miniSectorShift = view.getUint16(32, true);\n if (miniSectorShift !== 6) {\n // Standard mini-sector is 64 bytes; refuse unknown layouts.\n throw new EncryptedPackageError('Unsupported CFB mini-sector size');\n }\n const miniSectorSize = 1 << miniSectorShift;\n const miniStreamCutoff = view.getUint32(56, true);\n const firstDirSector = view.getUint32(48, true);\n const firstMiniFatSector = view.getUint32(60, true);\n const miniFatSectorCount = view.getUint32(64, true);\n const fatSectorCount = view.getUint32(44, true);\n const firstDifatSector = view.getUint32(68, true);\n const difatSectorCount = view.getUint32(72, true);\n if (fatSectorCount > MAX_FAT_SECTORS) {\n throw new EncryptedPackageError('CFB FAT is unreasonably large');\n }\n const difat = [];\n for (let i = 0; i < 109; i++) {\n const sect = view.getUint32(76 + i * 4, true);\n if (sect !== FREESECT) {\n difat.push(sect);\n }\n }\n let difatSect = firstDifatSector;\n for (let n = 0; n < difatSectorCount; n++) {\n if (difatSect === ENDOFCHAIN || difatSect === FREESECT) {\n break;\n }\n const offset = sectorOffset(difatSect, sectorSize);\n ensureRange(input, offset, sectorSize);\n const entriesPerSector = sectorSize / 4 - 1;\n for (let i = 0; i < entriesPerSector; i++) {\n const sect = view.getUint32(offset + i * 4, true);\n if (sect !== FREESECT) {\n difat.push(sect);\n }\n }\n difatSect = view.getUint32(offset + entriesPerSector * 4, true);\n }\n if (difat.length < fatSectorCount) {\n throw new EncryptedPackageError('CFB DIFAT is truncated');\n }\n const fat = [];\n for (let i = 0; i < fatSectorCount; i++) {\n const fatSect = difat[i];\n if (fatSect === undefined) {\n throw new EncryptedPackageError('CFB DIFAT is truncated');\n }\n const offset = sectorOffset(fatSect, sectorSize);\n ensureRange(input, offset, sectorSize);\n const entries = sectorSize / 4;\n for (let j = 0; j < entries; j++) {\n fat.push(view.getUint32(offset + j * 4, true));\n }\n }\n const directoryBytes = readChain(input, view, fat, firstDirSector, sectorSize, undefined);\n if (directoryBytes.byteLength < DIR_ENTRY_SIZE) {\n throw new EncryptedPackageError('CFB directory is empty');\n }\n const entryCount = Math.min(Math.floor(directoryBytes.byteLength / DIR_ENTRY_SIZE), MAX_DIR_ENTRIES);\n const dirView = new DataView(directoryBytes.buffer, directoryBytes.byteOffset, directoryBytes.byteLength);\n const entries = [];\n for (let i = 0; i < entryCount; i++) {\n const base = i * DIR_ENTRY_SIZE;\n const nameLength = dirView.getUint16(base + 64, true);\n // nameLength includes the terminating null (2 bytes) when non-zero.\n const charCount = nameLength >= 2 ? Math.floor((nameLength - 2) / 2) : 0;\n let name = '';\n for (let c = 0; c < charCount && c < 32; c++) {\n name += String.fromCharCode(dirView.getUint16(base + c * 2, true));\n }\n const objectType = dirView.getUint8(base + 66);\n const childId = dirView.getUint32(base + 76, true);\n const startSector = dirView.getUint32(base + 116, true);\n // Stream size is 8 bytes LE; OFFCRYPTO streams fit in lower 32 bits for our limits.\n const streamSizeLow = dirView.getUint32(base + 120, true);\n const streamSizeHigh = dirView.getUint32(base + 124, true);\n if (streamSizeHigh !== 0) {\n throw new EncryptedPackageError('OFFCRYPTO stream exceeds supported size');\n }\n entries.push({\n name,\n objectType,\n startSector,\n streamSize: streamSizeLow,\n childId,\n });\n }\n const root = entries[0];\n if (root === undefined || root.objectType !== 5) {\n throw new EncryptedPackageError('CFB root storage is missing');\n }\n // Collect names under root via sibling tree walk (left/right/child).\n const found = new Map();\n const visited = new Set();\n const walk = (id) => {\n if (id > 0xfffffffa || id >= entries.length || visited.has(id)) {\n return;\n }\n visited.add(id);\n const e = entries[id];\n if (e === undefined) {\n return;\n }\n const left = dirView.getUint32(id * DIR_ENTRY_SIZE + 68, true);\n const right = dirView.getUint32(id * DIR_ENTRY_SIZE + 72, true);\n walk(left);\n if (e.objectType === 2 /* stream */) {\n found.set(e.name, e);\n }\n walk(right);\n if (e.objectType === 1 /* storage */ || e.objectType === 5 /* root */) {\n walk(e.childId);\n }\n };\n walk(root.childId);\n const infoEntry = found.get(STREAM_ENCRYPTION_INFO);\n const pkgEntry = found.get(STREAM_ENCRYPTED_PACKAGE);\n if (infoEntry === undefined || pkgEntry === undefined) {\n throw new EncryptedPackageError('OFFCRYPTO streams EncryptionInfo and/or EncryptedPackage are missing');\n }\n let miniFat;\n let miniStream;\n const readStream = (entry) => {\n if (entry.streamSize === 0) {\n return new Uint8Array(0);\n }\n if (entry.streamSize < miniStreamCutoff && entry !== root) {\n if (miniFat === undefined) {\n miniFat = readMiniFat(input, view, fat, firstMiniFatSector, miniFatSectorCount, sectorSize);\n // Root stream size may be larger than mini data; chain until end.\n miniStream = readChain(input, view, fat, root.startSector, sectorSize, undefined);\n }\n if (miniStream === undefined) {\n throw new EncryptedPackageError('CFB mini-stream is unavailable');\n }\n return readMiniChain(miniStream, miniFat, entry.startSector, miniSectorSize, entry.streamSize);\n }\n return readChain(input, view, fat, entry.startSector, sectorSize, entry.streamSize);\n };\n return {\n encryptionInfo: readStream(infoEntry),\n encryptedPackage: readStream(pkgEntry),\n };\n}\nfunction sectorOffset(sectorIndex, sectorSize) {\n // Sector 0 starts after the 512-byte header for 512-byte sectors; for 4096,\n // header occupies the first sector region — offset is still (sector+1)*size\n // relative to file start for standard CFB.\n return (sectorIndex + 1) * sectorSize;\n}\nfunction ensureRange(input, offset, length) {\n if (offset < 0 || length < 0 || offset + length > input.byteLength) {\n throw new EncryptedPackageError('OFFCRYPTO package is truncated (CFB sector)');\n }\n}\nfunction readChain(input, view, fat, startSector, sectorSize, maxBytes) {\n if (startSector === ENDOFCHAIN || startSector === FREESECT) {\n return new Uint8Array(0);\n }\n const chunks = [];\n let total = 0;\n let sector = startSector;\n let guard = 0;\n const maxGuard = fat.length + 2;\n while (sector !== ENDOFCHAIN && sector !== FREESECT) {\n if (guard++ > maxGuard) {\n throw new EncryptedPackageError('CFB FAT chain is cyclic or unbounded');\n }\n if (sector === FATSECT || sector === DIFSECT) {\n throw new EncryptedPackageError('CFB FAT chain contains reserved sector');\n }\n if (sector < 0 || sector >= fat.length) {\n // Allow reading last data sector without FAT entry for short files: still need bounds.\n const offsetTry = sectorOffset(sector, sectorSize);\n if (offsetTry + sectorSize > input.byteLength && offsetTry >= input.byteLength) {\n throw new EncryptedPackageError('CFB FAT chain sector out of range');\n }\n }\n const offset = sectorOffset(sector, sectorSize);\n ensureRange(input, offset, Math.min(sectorSize, input.byteLength - offset));\n const take = Math.min(sectorSize, input.byteLength - offset);\n const slice = input.subarray(offset, offset + take);\n chunks.push(slice);\n total += slice.byteLength;\n if (maxBytes !== undefined && total >= maxBytes) {\n break;\n }\n if (sector >= fat.length) {\n throw new EncryptedPackageError('CFB FAT chain sector out of range');\n }\n const nextSector = fat[sector];\n if (nextSector === undefined) {\n throw new EncryptedPackageError('CFB FAT chain sector out of range');\n }\n sector = nextSector;\n }\n const out = concat(chunks);\n if (maxBytes !== undefined) {\n if (out.byteLength < maxBytes) {\n throw new EncryptedPackageError('OFFCRYPTO stream data is truncated');\n }\n return out.subarray(0, maxBytes);\n }\n return out;\n}\nfunction readMiniFat(input, view, fat, firstMiniFatSector, miniFatSectorCount, sectorSize) {\n if (miniFatSectorCount === 0 || firstMiniFatSector === ENDOFCHAIN) {\n return [];\n }\n const bytes = readChain(input, view, fat, firstMiniFatSector, sectorSize, miniFatSectorCount * sectorSize);\n const dv = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const entries = [];\n for (let i = 0; i + 4 <= bytes.byteLength; i += 4) {\n entries.push(dv.getUint32(i, true));\n }\n return entries;\n}\nfunction readMiniChain(miniStream, miniFat, startSector, miniSectorSize, streamSize) {\n const chunks = [];\n let total = 0;\n let sector = startSector;\n let guard = 0;\n const maxGuard = miniFat.length + 2;\n while (sector !== ENDOFCHAIN && sector !== FREESECT && total < streamSize) {\n if (guard++ > maxGuard) {\n throw new EncryptedPackageError('CFB mini-FAT chain is cyclic or unbounded');\n }\n const offset = sector * miniSectorSize;\n if (offset >= miniStream.byteLength) {\n throw new EncryptedPackageError('CFB mini-stream is truncated');\n }\n const take = Math.min(miniSectorSize, miniStream.byteLength - offset, streamSize - total);\n chunks.push(miniStream.subarray(offset, offset + take));\n total += take;\n if (sector >= miniFat.length) {\n throw new EncryptedPackageError('CFB mini-FAT sector out of range');\n }\n const nextMini = miniFat[sector];\n if (nextMini === undefined) {\n throw new EncryptedPackageError('CFB mini-FAT sector out of range');\n }\n sector = nextMini;\n }\n const out = concat(chunks);\n if (out.byteLength < streamSize) {\n throw new EncryptedPackageError('OFFCRYPTO mini-stream data is truncated');\n }\n return out.subarray(0, streamSize);\n}\nfunction concat(chunks) {\n let total = 0;\n for (const c of chunks) {\n total += c.byteLength;\n }\n const out = new Uint8Array(total);\n let offset = 0;\n for (const c of chunks) {\n out.set(c, offset);\n offset += c.byteLength;\n }\n return out;\n}\n","/*\n * Decrypt EncryptedPackage stream ([MS-OFFCRYPTO] §2.3.4.4, §2.3.4.15)\n * and optional DataIntegrity HMAC (§2.3.4.14).\n *\n * @remarks\n * Layout: 8-byte little-endian StreamSize (u64) + encrypted payload.\n * Payload is segmented in 4096-byte blocks; each segment uses blockKey =\n * segment number as LE u32 with KeyData.saltValue for the IV\n * (§2.3.4.12 / §2.3.4.15). Secret key is the intermediate key from the\n * password key encryptor.\n *\n * DataIntegrity: decrypt encryptedHmacKey with blockKey BLOCK_KEY_HMAC_KEY\n * and KeyData; decrypt encryptedHmacValue with BLOCK_KEY_HMAC_VALUE; HMAC\n * the **entire** EncryptedPackage stream (including StreamSize prefix)\n * with KeyData.hashAlgorithm; compare → fail closed as InvalidPasswordError.\n *\n * @private\n */\nimport { EncryptedPackageError, InvalidPasswordError, PackageLimitError, } from './errors';\nimport { BLOCK_KEY_HMAC_KEY, BLOCK_KEY_HMAC_VALUE, ENCRYPTED_PACKAGE_SEGMENT_SIZE, } from './agile-constants';\nimport { aesCbcDecrypt, deriveAgileIv, hashDigestLength, hmacBytes, timingSafeEqual, } from './crypto-primitives';\nconst STREAM_SIZE_BYTES = 8;\n/**\n * Decrypts EncryptedPackage ciphertext to plain OPC ZIP bytes.\n *\n * @param encryptedPackage - Full EncryptedPackage stream bytes.\n * @param secretKey - Intermediate key from password unlock (keyBits/8).\n * @param keyData - KeyData from EncryptionInfo.\n * @param dataIntegrity - Optional integrity structure.\n * @param limits - Security limits (single-part / total uncompressed caps).\n *\n * @throws {PackageLimitError} When StreamSize or ciphertext exceeds limits.\n * @throws {InvalidPasswordError} When DataIntegrity HMAC fails (fail-closed).\n * @throws {EncryptedPackageError} When stream structure is invalid.\n */\nexport function decryptEncryptedPackageStream(encryptedPackage, secretKey, keyData, dataIntegrity, limits) {\n if (encryptedPackage.byteLength < STREAM_SIZE_BYTES) {\n throw new EncryptedPackageError('EncryptedPackage stream is truncated');\n }\n // Hard cap ciphertext before any crypto work.\n const maxCipher = Math.max(limits.singlePartUncompressedBytes, limits.totalUncompressedBytes);\n if (encryptedPackage.byteLength >\n maxCipher + STREAM_SIZE_BYTES + ENCRYPTED_PACKAGE_SEGMENT_SIZE) {\n throw new PackageLimitError('singlePartUncompressedBytes', {\n actual: encryptedPackage.byteLength,\n });\n }\n const view = new DataView(encryptedPackage.buffer, encryptedPackage.byteOffset, encryptedPackage.byteLength);\n // StreamSize is u64 LE; JS safe integer covers realistic packages under limits.\n const streamSizeLow = view.getUint32(0, true);\n const streamSizeHigh = view.getUint32(4, true);\n if (streamSizeHigh !== 0) {\n throw new PackageLimitError('singlePartUncompressedBytes', {\n actual: Number.MAX_SAFE_INTEGER,\n });\n }\n const streamSize = streamSizeLow;\n if (streamSize > limits.singlePartUncompressedBytes) {\n throw new PackageLimitError('singlePartUncompressedBytes', { actual: streamSize });\n }\n if (streamSize > limits.totalUncompressedBytes) {\n throw new PackageLimitError('totalUncompressedBytes', { actual: streamSize });\n }\n const ciphertext = encryptedPackage.subarray(STREAM_SIZE_BYTES);\n if (ciphertext.byteLength === 0 && streamSize > 0) {\n throw new EncryptedPackageError('EncryptedPackage has StreamSize but no ciphertext');\n }\n // DataIntegrity over entire EncryptedPackage including StreamSize (§2.3.4.14).\n if (dataIntegrity !== undefined) {\n verifyDataIntegrity(encryptedPackage, secretKey, keyData, dataIntegrity);\n }\n const plain = decryptSegments(ciphertext, secretKey, keyData);\n if (plain.byteLength < streamSize) {\n throw new EncryptedPackageError('Decrypted EncryptedPackage is shorter than StreamSize');\n }\n return plain.subarray(0, streamSize);\n}\nfunction decryptSegments(ciphertext, secretKey, keyData) {\n const segmentSize = ENCRYPTED_PACKAGE_SEGMENT_SIZE;\n const blockSize = keyData.blockSize;\n const out = new Uint8Array(ciphertext.byteLength);\n let outOffset = 0;\n let segmentIndex = 0;\n let offset = 0;\n while (offset < ciphertext.byteLength) {\n const remaining = ciphertext.byteLength - offset;\n // Last segment may be shorter but must still be block-aligned (zero-pad encrypt).\n const segmentLen = remaining > segmentSize ? segmentSize : remaining;\n // If not last full logical segment and remaining > segmentSize we took segmentSize.\n // Ciphertext of each segment is rounded up to blockSize on encrypt; remaining should\n // already be multiple of blockSize for every piece.\n if (segmentLen % blockSize !== 0) {\n // Pad expectation: encryptor wrote full blocks; tolerate by rounding down if corrupt.\n throw new EncryptedPackageError('EncryptedPackage segment is not block-aligned');\n }\n const segmentCt = ciphertext.subarray(offset, offset + segmentLen);\n const blockKey = segmentBlockKey(segmentIndex);\n const iv = deriveAgileIv(keyData.hashAlgorithm, keyData.saltValue, blockKey, blockSize);\n const segmentPt = aesCbcDecrypt(secretKey, iv, segmentCt);\n out.set(segmentPt, outOffset);\n outOffset += segmentPt.byteLength;\n offset += segmentLen;\n segmentIndex += 1;\n }\n return out.subarray(0, outOffset);\n}\nfunction segmentBlockKey(segmentIndex) {\n const buf = new Uint8Array(4);\n new DataView(buf.buffer).setUint32(0, segmentIndex >>> 0, true);\n return buf;\n}\n/**\n * §2.3.4.14 DataIntegrity verification.\n *\n * Fail-closed: HMAC mismatch → InvalidPasswordError (same public class as wrong\n * password; do not leak integrity vs password distinction).\n */\nfunction verifyDataIntegrity(encryptedPackage, secretKey, keyData, dataIntegrity) {\n const { hashAlgorithm, saltValue, blockSize } = keyData;\n const ivHmacKey = deriveAgileIv(hashAlgorithm, saltValue, BLOCK_KEY_HMAC_KEY, blockSize);\n const hmacKeyDecrypted = aesCbcDecrypt(secretKey, ivHmacKey, dataIntegrity.encryptedHmacKey);\n // HMAC key length is hash digest size; truncated after decrypt (zero-padded block).\n const digestLen = hashDigestLength(hashAlgorithm);\n if (hmacKeyDecrypted.byteLength < digestLen) {\n throw new InvalidPasswordError();\n }\n const hmacKey = hmacKeyDecrypted.subarray(0, digestLen);\n const ivHmacValue = deriveAgileIv(hashAlgorithm, saltValue, BLOCK_KEY_HMAC_VALUE, blockSize);\n const hmacValueDecrypted = aesCbcDecrypt(secretKey, ivHmacValue, dataIntegrity.encryptedHmacValue);\n if (hmacValueDecrypted.byteLength < digestLen) {\n throw new InvalidPasswordError();\n }\n const expectedHmac = hmacValueDecrypted.subarray(0, digestLen);\n const actualHmac = hmacBytes(hashAlgorithm, hmacKey, encryptedPackage);\n if (!timingSafeEqual(actualHmac.subarray(0, digestLen), expectedHmac)) {\n throw new InvalidPasswordError();\n }\n}\n","/**\n * Shared OFFCRYPTO Agile password decrypt for Office Open XML packages.\n *\n * @remarks\n * Implements [MS-OFFCRYPTO] Agile EncryptionInfo (4.4) + password keyEncryptor\n * + AES-CBC EncryptedPackage segment decrypt. Consumed by PowerPoint and other\n * Office libraries via `@syncfusion/ej2-office-common`.\n *\n * @packageDocumentation\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { parseAgileEncryptionInfo } from './agile-encryption-info';\nimport { unlockIntermediateKey } from './agile-password';\nimport { readOffCryptoStreams } from './cfb-reader';\nimport { decryptEncryptedPackageStream } from './decrypt-encrypted-package';\nimport { DEFAULT_DECRYPT_SECURITY_LIMITS, resolveDecryptLimits, } from './errors';\n/** OLE CFB header signature used by ECMA-376 OFFCRYPTO packages ([MS-CFB]). */\nconst OLE_CFB_SIGNATURE = Object.freeze([0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1]);\n/**\n * Returns whether `input` begins with the OLE compound-file signature used by\n * ECMA-376 OFFCRYPTO packages.\n *\n * @param input - Entire package bytes.\n * @returns `true` when the CFB signature matches.\n *\n * @public\n */\nexport function isOffCryptoPackage(input) {\n const bytes = input instanceof Uint8Array ? input : new Uint8Array(input);\n if (bytes.byteLength < OLE_CFB_SIGNATURE.length) {\n return false;\n }\n for (let i = 0; i < OLE_CFB_SIGNATURE.length; i++) {\n if (bytes[i] !== OLE_CFB_SIGNATURE[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Decrypts an OFFCRYPTO OLE CFB package to OPC ZIP bytes.\n *\n * @param input - Entire encrypted package bytes (CFB).\n * @param password - Consumer password (never logged; not retained).\n * @param limits - Decrypt size / XML guards (duck-types broader SecurityLimits).\n * @returns Decrypted OPC package bytes.\n *\n * @public\n */\nexport function decryptOffCryptoPackage(input, password, limits = DEFAULT_DECRYPT_SECURITY_LIMITS) {\n return __awaiter(this, void 0, void 0, function* () {\n const resolved = resolveDecryptLimits(limits);\n const streams = readOffCryptoStreams(input);\n const info = parseAgileEncryptionInfo(streams.encryptionInfo, resolved);\n const secretKey = unlockIntermediateKey(password, info.passwordKeyEncryptor);\n return decryptEncryptedPackageStream(streams.encryptedPackage, secretKey, info.keyData, info.dataIntegrity, resolved);\n });\n}\nexport { DEFAULT_DECRYPT_SECURITY_LIMITS, EncryptedPackageError, InvalidPasswordError, PackageLimitError, resolveDecryptLimits, UnsupportedEncryptionError, } from './errors';\n// Re-export internals needed by test fixtures / host encrypt harnesses.\nexport { AGILE_ENCRYPTION_NS, AGILE_RESERVED, AGILE_VERSION_MAJOR, AGILE_VERSION_MINOR, BLOCK_KEY_ENCRYPTOR_KEY, BLOCK_KEY_HMAC_KEY, BLOCK_KEY_HMAC_VALUE, BLOCK_KEY_VERIFIER_HASH, BLOCK_KEY_VERIFIER_INPUT, ENCRYPTED_PACKAGE_SEGMENT_SIZE, PASSWORD_KEY_ENCRYPTOR_NS, PASSWORD_KEY_ENCRYPTOR_URI, STREAM_ENCRYPTED_PACKAGE, STREAM_ENCRYPTION_INFO, } from './agile-constants';\nexport { aesCbcDecrypt, aesCbcEncrypt, concatBytes, deriveAgileIv, deriveAgileKey, encodePasswordUtf16Le, hashBytes, hashDigestLength, hmacBytes, timingSafeEqual, } from './crypto-primitives';\n","/**\n * Shared OOXML codecs and domain models for EJ2 Office JavaScript libraries.\n * Consume from git / local workspace; not published to npm.\n *\n * Feature modules are added incrementally (ink, mathml, encryption, …). Root\n * entry re-exports the public surface as features land, including the OFFCRYPTO\n * Agile decrypt surface from ./encryption.\n *\n * @packageDocumentation\n */\n/**\n * Package identity string for consumers proving resolution (TASK-9001).\n *\n * @public\n */\nexport const OFFICE_COMMON_PACKAGE_NAME = '@syncfusion/ej2-office-common';\nexport { INKML_NAMESPACE, INK_CONTENT_TYPE, INK_SOURCE_RELATIONSHIP_TYPE, WORDML_2010_NAMESPACE, WORDPROCESSING_INK_URI, INK_EFFECT_COLORS, inkEffectColor, computeInkBounds, decodeTrace, encodeTrace, scalePointsStretch, scalePointsUniform, addInkTrace, cloneInk, createInk, inkPathPoints, isOfficeInk, DIAG_INVALID_INK_TRACE, getLastInkParseDiagnostics, parseInkXml, serializeInkXml, EMUS_PER_POINT, formatUnitValue, pointsToUnit, unitValueToPoints, } from './features/ink/index';\n// ─── mathml (OMML) public surface — @syncfusion/ej2-office-common/mathml ──────────────────\nexport { MATH_NAMESPACE, MATH_PREFIX_FALLBACKS, WML_TRANSITIONAL_NAMESPACE, XML_NAMESPACE, MATH_BREAKBIN_VALUES, MATH_BREAKBINSUB_VALUES, MATH_FTYPE_VALUES, MATH_JC_VALUES, MATH_LIMLOC_VALUES, MATH_SCRIPT_VALUES, MATH_SHP_VALUES, MATH_SPACING_RULE_VALUES, MATH_STYLE_VALUES, MATH_TOPBOT_VALUES, emitOnOff, isInteger2, isInteger255, isSpacingRule, isUnSignedInteger, parseMathBreakBin, parseMathBreakBinSub, parseMathFractionType, parseMathJc, parseMathLimLoc, parseMathScript, parseMathShape, parseMathStyle, parseMathTopBot, parseOnOff, MathArgument, MathElement, MathText, UnknownMathElement, mathArg, MathOMath, MathParagraph, MathAccent, MathBar, MathBorderBox, MathBox, MathDelimiter, MathEquationArray, MathFraction, MathFunction, MathGroupCharacter, MathLimitLower, MathLimitUpper, MathMatrix, MathMatrixRow, MathNaryOperator, MathPhantom, MathPreSubSuperscript, MathRadical, MathRun, MathSubscript, MathSubSuperscript, MathSuperscript, parseMathElement, parseMathElements, mathElementToOpenXml, cloneMathElement, mathEqual, attrValue, attrValueNs, childElements, createElement, createText, textContent, } from './features/mathml/index';\nexport { decryptOffCryptoPackage, isOffCryptoPackage, DEFAULT_DECRYPT_SECURITY_LIMITS, EncryptedPackageError, InvalidPasswordError, PackageLimitError, resolveDecryptLimits, UnsupportedEncryptionError, \n// fixture / advanced crypto surface\nAGILE_ENCRYPTION_NS, AGILE_RESERVED, AGILE_VERSION_MAJOR, AGILE_VERSION_MINOR, BLOCK_KEY_ENCRYPTOR_KEY, BLOCK_KEY_HMAC_KEY, BLOCK_KEY_HMAC_VALUE, BLOCK_KEY_VERIFIER_HASH, BLOCK_KEY_VERIFIER_INPUT, ENCRYPTED_PACKAGE_SEGMENT_SIZE, PASSWORD_KEY_ENCRYPTOR_NS, PASSWORD_KEY_ENCRYPTOR_URI, STREAM_ENCRYPTED_PACKAGE, STREAM_ENCRYPTION_INFO, aesCbcDecrypt, aesCbcEncrypt, concatBytes, deriveAgileIv, deriveAgileKey, encodePasswordUtf16Le, hashBytes, hashDigestLength, hmacBytes, timingSafeEqual, } from './encryption/index';\n"],"names":["DEFAULT_CONTEXT_REF","ensureHash","XML_NAMESPACE","emitOnOff","findChild","getAttr","this","OLE_CFB_SIGNATURE"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,eAAe,GAAG,+BAA+B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,gBAAgB,GAAG,wBAAwB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,4BAA4B,GAAG,gFAAgF;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,qBAAqB,GAAG,uDAAuD;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,sBAAsB,GAAG;;ACrDtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAY,MAAC,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/C,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,QAAQ,EAAE,SAAS;AACvB,IAAI,KAAK,EAAE,SAAS;AACpB,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,MAAM,EAAE,SAAS;AACrB,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,cAAc,CAAC,MAAM,EAAE;AACvC,IAAI,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC;;AC5CD;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,QAAQ,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACjD,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,IAAI,IAAI,KAAK,eAAe,EAAE;AAClC,QAAQ,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3D,KAAK;AACL,IAAI,IAAI,IAAI,KAAK,iBAAiB,EAAE;AACpC,QAAQ,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,KAAK;AACL,IAAI,IAAI,IAAI,KAAK,kBAAkB,EAAE;AACrC,QAAQ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,KAAK;AACL,IAAI,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC7C,CAAC;AACD,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC9C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,WAAW,CAAC,SAAS,EAAE;AACvC,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;AACrC,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,QAAQ,OAAO;AACf,YAAY,WAAW,EAAE,EAAE;AAC3B,YAAY,MAAM,EAAE,EAAE;AACtB,YAAY,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;AAC1E,SAAS,CAAC;AACV,KAAK;AACL,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7C,IAAI,MAAM,WAAW,GAAG,EAAE,CAAC;AAC3B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC9B;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,CAAC;AACtB;AACA,IAAI,MAAM,WAAW,GAAG,EAAE,CAAC;AAC3B;AACA,IAAI,IAAI,WAAW,GAAG,UAAU,CAAC;AACjC,IAAI,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;AAC9C,QAAQ,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpF,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC;AACA,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,IAAI,GAAG,WAAW,CAAC;AAC/B,QAAQ,MAAM,GAAG,GAAG,EAAE,CAAC;AACvB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACpC,YAAY,IAAI,KAAK,KAAK,SAAS,EAAE;AACrC,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;AACvD,YAAY,IAAI,MAAM,KAAK,SAAS,EAAE;AACtC,gBAAgB,IAAI,GAAG,MAAM,CAAC;AAC9B;AACA,gBAAgB,WAAW,GAAG,MAAM,CAAC;AACrC,aAAa;AACb,YAAY,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AAC3C,YAAY,iBAAiB,IAAI,CAAC,CAAC;AACnC,YAAY,IAAI,KAAK,KAAK,SAAS,EAAE;AACrC;AACA,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,IAAI,QAAQ,CAAC;AACzB,YAAY,IAAI,IAAI,KAAK,UAAU,EAAE;AACrC,gBAAgB,QAAQ,GAAG,KAAK,CAAC;AACjC;AACA,gBAAgB,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC,aAAa;AACb,iBAAiB,IAAI,IAAI,KAAK,OAAO,EAAE;AACvC,gBAAgB,MAAM,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,gBAAgB,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC;AACxC,gBAAgB,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AACvC,aAAa;AACb,iBAAiB;AACjB;AACA,gBAAgB,MAAM,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAChF,gBAAgB,MAAM,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;AACnD,gBAAgB,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC1C,gBAAgB,MAAM,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,gBAAgB,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAAC;AAC3C,aAAa;AACb,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC9B,SAAS;AACT,QAAQ,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAQ,QAAQ,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;AAC/B,QAAQ,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACzB,QAAQ,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACzB,QAAQ,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE;AAChD,YAAY,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAClC,SAAS;AACT,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,WAAW;AACnB,QAAQ,MAAM;AACd,QAAQ,KAAK,EAAE;AACf,YAAY,WAAW,EAAE,WAAW,CAAC,MAAM;AAC3C,YAAY,iBAAiB;AAC7B,YAAY,UAAU,EAAE,MAAM,CAAC,MAAM;AACrC,SAAS;AACT,KAAK,CAAC;AACN,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,WAAW,CAAC,MAAM,EAAE;AACpC,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnF,CAAC;AACD,SAAS,WAAW,CAAC,CAAC,EAAE;AACxB;AACA,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AAC7B,QAAQ,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE;AACzC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACtD,KAAK;AACL,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AACpB,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,KAAK,SAAS,EAAE;AAC7B,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AACtB,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AACtB,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AACtB,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AACtB,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACtC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE;AACnD,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5C,IAAI,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;AACxD,IAAI,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;AACzD,IAAI,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC;AACxC,UAAU,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;AAClC,UAAU,KAAK,GAAG,CAAC;AACnB,cAAc,MAAM;AACpB,cAAc,KAAK,GAAG,CAAC;AACvB,kBAAkB,MAAM;AACxB,kBAAkB,CAAC,CAAC;AACpB,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAC9B,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK;AACtB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK;AACtB,KAAK,CAAC,CAAC,CAAC;AACR,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE;AACnD,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5C,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC5C,IAAI,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;AACxD,IAAI,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;AACzD,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAC9B,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC;AACvD,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC;AACvD,KAAK,CAAC,CAAC,CAAC;AACR,CAAC;;ACpPD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AACA;AACA,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;AAC/E;AACA,MAAM,2BAA2B,GAAG,IAAI,CAAC;AACzC,MAAM,sBAAsB,GAAG,SAAS,CAAC;AACzC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AACpC,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,IAAI,QAAQ,KAAK,KAAK,MAAM;AAC5B,QAAQ,KAAK,KAAK,QAAQ;AAC1B,QAAQ,KAAK,KAAK,SAAS;AAC3B,QAAQ,KAAK,KAAK,QAAQ;AAC1B,QAAQ,KAAK,KAAK,MAAM;AACxB,QAAQ,KAAK,KAAK,OAAO;AACzB,QAAQ,KAAK,KAAK,UAAU;AAC5B,QAAQ,KAAK,KAAK,MAAM;AACxB,QAAQ,KAAK,KAAK,QAAQ;AAC1B,QAAQ,KAAK,KAAK,QAAQ,EAAE;AAC5B,CAAC;AACD,SAAS,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE;AAChC,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,KAAK,EAAE,MAAM,CAAC,KAAK;AAC3B,QAAQ,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;AACtE,QAAQ,KAAK,EAAE,MAAM,CAAC,KAAK;AAC3B,QAAQ,SAAS,EAAE,MAAM,CAAC,SAAS;AACnC,QAAQ,cAAc,EAAE,MAAM,CAAC,cAAc;AAC7C,QAAQ,EAAE;AACV,KAAK,CAAC;AACN,IAAI,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE;AAClC,QAAQ,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;AACvC,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;AACtC,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;AACtC,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACtC,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE;AAC3C,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAChD,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;AACzC,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,SAAS,YAAY,CAAC,MAAM,EAAE;AAC9B,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,EAAE,EAAE,MAAM,CAAC,EAAE;AACrB,QAAQ,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK;AAC9C,YAAY,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACxC,YAAY,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,EAAE;AACvC,gBAAgB,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;AACjC,aAAa;AACb,YAAY,IAAI,EAAE,CAAC,GAAG,KAAK,SAAS,EAAE;AACtC,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;AAC/B,aAAa;AACb,YAAY,IAAI,EAAE,CAAC,GAAG,KAAK,SAAS,EAAE;AACtC,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;AAC/B,aAAa;AACb,YAAY,IAAI,EAAE,CAAC,KAAK,KAAK,SAAS,EAAE;AACxC,gBAAgB,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;AACnC,aAAa;AACb,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS,CAAC;AACV,KAAK,CAAC;AACN,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE;AAC1C,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAC9C,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,SAAS,oBAAoB,CAAC,EAAE,EAAE;AAClC,IAAI,OAAO;AACX,QAAQ,KAAK,EAAE,sBAAsB;AACrC,QAAQ,IAAI,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,2BAA2B,EAAE;AACzF,QAAQ,KAAK,EAAE,sBAAsB;AACrC,QAAQ,SAAS,EAAE,MAAM;AACzB,QAAQ,cAAc,EAAE,IAAI;AAC5B,QAAQ,EAAE;AACV,KAAK,CAAC;AACN,CAAC;AACD,SAAS,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE;AAC5C,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;AACrC,QAAQ,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;AACpC,QAAQ,MAAM,CAAC,IAAI,GAAG;AACtB,YAAY,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;AACrC,YAAY,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;AACvC,SAAS,CAAC;AACV,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;AACrC,QAAQ,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC/E,QAAQ,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AAC7C,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE;AAC9C,QAAQ,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AACvD,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE;AACnC,QAAQ,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE;AACxC,QAAQ,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAC3C,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;AACvC,QAAQ,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;AACvC,QAAQ,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE;AAC3C,QAAQ,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AACjD,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA,SAAS,eAAe,CAAC,OAAO,EAAE;AAClC,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,SAAS;AACb,QAAQ,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC3B,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,KAAK;AACL,CAAC;AACD,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC;AACzB,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,gBAAgB,EAAE;AACtD,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,UAAU,EAAE,KAAK;AACzB,QAAQ,YAAY,EAAE,KAAK;AAC3B,QAAQ,QAAQ,EAAE,KAAK;AACvB,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,gBAAgB,CAAC,IAAI,EAAE;AACvC,IAAI,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAChP,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,SAAS,GAAG;AAC5B,IAAI,OAAO,QAAQ,CAAC;AACpB,QAAQ,MAAM,EAAE,EAAE;AAClB,QAAQ,OAAO,EAAE,EAAE;AACnB,QAAQ,SAAS,EAAE,UAAU;AAC7B,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;AAChD,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3B,QAAQ,MAAM,IAAI,SAAS,CAAC,yDAAyD,CAAC,CAAC;AACvF,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC;AACzB,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClE,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE;AACjC,QAAQ,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC;AAChF,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACpD,IAAI,MAAM,QAAQ,GAAG,WAAW,KAAK,SAAS;AAC9C,UAAU,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC;AACxC,UAAU,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACtC,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpC,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,MAAM,EAAE,SAAS;AACzB,QAAQ,QAAQ,EAAE,QAAQ,CAAC,EAAE;AAC7B,QAAQ,UAAU,EAAE,mBAAmB;AACvC,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC;AACA,IAAI,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE;AAC1C,QAAQ,QAAQ,CAAC,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;AACpF,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,QAAQ,CAAC,GAAG,EAAE;AAC9B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3B,QAAQ,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;AACpF,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC;AACzB,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrE,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAC9C,QAAQ,MAAM,IAAI,GAAG;AACrB,YAAY,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7D,YAAY,QAAQ,EAAE,CAAC,CAAC,QAAQ;AAChC,YAAY,UAAU,EAAE,CAAC,CAAC,UAAU;AACpC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE;AACxC,YAAY,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;AAC3C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,IAAI,GAAG;AACjB,QAAQ,MAAM;AACd,QAAQ,OAAO;AACf,QAAQ,SAAS,EAAE,QAAQ,CAAC,SAAS;AACrC,KAAK,CAAC;AACN,IAAI,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE;AACzC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE;AAC1C,QAAQ,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AACD,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAC5B,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;AAChC,YAAY,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;AAC/D,SAAS;AACT,QAAQ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AACvE,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE;AAC3C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3B,QAAQ,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAC;AACzF,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC;AACzB,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC;AACzB,IAAI,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE;AACrC,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AAClC,YAAY,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,SAAS;AACT,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,QAAQ,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7C,KAAK;AACL;AACA,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,KAAK,SAAS;AACtD,UAAU,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC;AAC/C,UAAU,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;AACnB,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE;AACrC,QAAQ,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACxE,QAAQ,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAC/B,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,WAAW,CAAC,KAAK,EAAE;AACnC,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;AAC5C,CAAC;;AChUD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,aAAa,GAAG,sCAAsC,CAAC;;ACbpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAY,MAAC,cAAc,GAAG,KAAK,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE;AAChD,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpE,IAAI,IAAI,MAAM,CAAC;AACf,IAAI,QAAQ,CAAC;AACb,QAAQ,KAAK,IAAI;AACjB,YAAY,MAAM,GAAG,KAAK,CAAC;AAC3B,YAAY,MAAM;AAClB,QAAQ,KAAK,IAAI;AACjB,YAAY,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AACzC,YAAY,MAAM;AAClB,QAAQ,KAAK,IAAI;AACjB,YAAY,MAAM,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,YAAY,MAAM;AAClB,QAAQ,KAAK,IAAI;AACjB,YAAY,MAAM,GAAG,KAAK,GAAG,EAAE,CAAC;AAChC,YAAY,MAAM;AAClB,QAAQ,KAAK,IAAI;AACjB,YAAY,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;AACzC,YAAY,MAAM;AAClB,QAAQ,KAAK,KAAK;AAClB,YAAY,MAAM,GAAG,KAAK,GAAG,cAAc,CAAC;AAC5C,YAAY,MAAM;AAClB,QAAQ;AACR;AACA,YAAY,MAAM,GAAG,KAAK,GAAG,cAAc,CAAC;AAC5C,YAAY,MAAM;AAClB,KAAK;AACL,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE;AAC5C,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACpE,IAAI,QAAQ,CAAC;AACb,QAAQ,KAAK,IAAI;AACjB,YAAY,OAAO,MAAM,CAAC;AAC1B,QAAQ,KAAK,IAAI;AACjB,YAAY,OAAO,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;AACxC,QAAQ,KAAK,IAAI;AACjB,YAAY,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC;AACtC,QAAQ,KAAK,IAAI;AACjB,YAAY,OAAO,MAAM,GAAG,EAAE,CAAC;AAC/B,QAAQ,KAAK,IAAI;AACjB,YAAY,OAAO,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;AACxC,QAAQ,KAAK,KAAK;AAClB,YAAY,OAAO,MAAM,GAAG,cAAc,CAAC;AAC3C,QAAQ;AACR,YAAY,OAAO,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;AACxC,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,eAAe,CAAC,KAAK,EAAE;AACvC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACjC,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL;AACA,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACtC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AACD,SAAS,MAAM,CAAC,CAAC,EAAE;AACnB,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACrC,CAAC;;AC3FD;AACA;AACA;AACA,AAEA,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B;AACA,AAAO,SAAS,UAAU,CAAC,SAAS,EAAE,UAAU,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,qBAAqB,GAAG,EAAE,EAAE;AAClG,IAAI,OAAO,EAAE,IAAI,EAAE,SAAS;AAC5B,QAAQ,YAAY,EAAE,eAAe;AACrC,QAAQ,SAAS;AACjB,QAAQ,MAAM,EAAE,UAAU;AAC1B,QAAQ,UAAU;AAClB,QAAQ,qBAAqB;AAC7B,QAAQ,QAAQ;AAChB,KAAK,CAAC;AACN,CAAC;AACD;AACA,AAAO,SAAS,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;AACvC,IAAI,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AAC9D,CAAC;AACD;AACA,AAAO,SAAS,SAAS,CAAC,EAAE,EAAE;AAC9B,IAAI,OAAO;AACX,QAAQ,YAAY,EAAE,aAAa;AACnC,QAAQ,SAAS,EAAE,IAAI;AACvB,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,KAAK,EAAE,EAAE;AACjB,KAAK,CAAC;AACN,CAAC;AACD;AACA,AAAO,SAAS,QAAQ,CAAC,KAAK,EAAE;AAChC,IAAI,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC;AACD;AACA,AAAO,SAAS,kBAAkB,GAAG;AACrC,IAAI,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AACjE,CAAC;AACD;AACA,AAAO,SAAS,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE;AACrD,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AACnC,QAAQ,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE;AACvC,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,EAAE;AAC3E,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC;AACvB,KAAK;AACL;AACA,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE;AAC5B,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AACvC,YAAY,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,KAAK,CAAC,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,YAAY,KAAK,aAAa,CAAC,EAAE;AAClG,gBAAgB,OAAO,CAAC,CAAC,KAAK,CAAC;AAC/B,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;AACD;AACA,AAAO,SAAS,WAAW,CAAC,EAAE,EAAE;AAChC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAE;AACrC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AACnC,YAAY,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;AAC/B,SAAS;AACT,aAAa;AACb,YAAY,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AACtC,SAAS;AACT,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD,AA+BA;AACA,AAAO,SAAS,cAAc,CAAC,EAAE,EAAE;AACnC,IAAI,OAAO,EAAE,CAAC,YAAY,KAAK,eAAe,IAAI,EAAE,CAAC,YAAY,KAAK,EAAE,CAAC;AACzE,CAAC;;AC1GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAMA;AACA;AACA;AACA;AACA;AACA,AAAY,MAAC,sBAAsB,GAAG,2BAA2B,CAAC;AAClE,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1J,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5F;AACA,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AACjT,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AACpM,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;AAC9B,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;AACpB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;AACpB,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;AACtB,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;AAC5B,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;AACpB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,CAAC,CAAC,CAAC;AACH;AACA,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,aAAa,GAAG,SAAS,CAAC;AAChC,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,iBAAiB,GAAG,SAAS,CAAC;AACpC,MAAMA,qBAAmB,GAAG,OAAO,CAAC;AACpC,IAAI,eAAe,GAAG;AACtB,IAAI,KAAK,EAAE,EAAE;AACb,IAAI,UAAU,EAAE,CAAC;AACjB,IAAI,WAAW,EAAE,CAAC;AAClB,IAAI,UAAU,EAAE,CAAC;AACjB,IAAI,iBAAiB,EAAE,CAAC;AACxB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,0BAA0B,GAAG;AAC7C,IAAI,OAAO,eAAe,CAAC;AAC3B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,WAAW,CAAC,IAAI,EAAE;AAClC,IAAI,MAAM,WAAW,GAAG,EAAE,CAAC;AAC3B,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC;AACxB,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC;AACvB,IAAI,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC9B,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC;AACzB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;AAC1B,QAAQ,eAAe,GAAG;AAC1B,YAAY,KAAK,EAAE,WAAW;AAC9B,YAAY,UAAU,EAAE,CAAC;AACzB,YAAY,WAAW,EAAE,CAAC;AAC1B,YAAY,UAAU,EAAE,CAAC;AACzB,YAAY,iBAAiB,EAAE,CAAC;AAChC,SAAS,CAAC;AACV,QAAQ,OAAO,gBAAgB,CAAC;AAChC,YAAY,MAAM,EAAE,EAAE;AACtB,YAAY,OAAO,EAAE,EAAE;AACvB,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,IAAI,cAAc,GAAG,KAAK,CAAC;AAC/B,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAChE,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;AACrC,QAAQ,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC1C,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,IAAI,KAAK,aAAa,EAAE;AACpC,YAAY,IAAI,cAAc,EAAE;AAChC,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,cAAc,GAAG,IAAI,CAAC;AAClC,YAAY,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACvD,SAAS;AACT,KAAK;AACL;AACA,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAChE,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;AACrC,QAAQ,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,aAAa,EAAE;AACpE,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE;AAC9B,YAAY,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/F,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,YAAY,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,YAAY,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC;AAC7C,YAAY,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC;AAC3C,YAAY,iBAAiB,IAAI,KAAK,CAAC,iBAAiB,CAAC;AACzD,YAAY,IAAI,UAAU,KAAK,SAAS,EAAE;AAC1C,gBAAgB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7C,aAAa;AACb,SAAS;AACT,aAAa,IAAI,IAAI,KAAK,YAAY,EAAE;AACxC,YAAY,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,IAAI;AAC3E,gBAAgB,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC;AAC7C,gBAAgB,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC;AAC3C,gBAAgB,iBAAiB,IAAI,CAAC,CAAC,iBAAiB,CAAC;AACzD,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,gBAAgB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,eAAe,GAAG;AACtB,QAAQ,KAAK,EAAE,WAAW;AAC1B,QAAQ,UAAU,EAAE,MAAM,CAAC,MAAM;AACjC,QAAQ,WAAW;AACnB,QAAQ,UAAU;AAClB,QAAQ,iBAAiB;AACzB,KAAK,CAAC;AACN,IAAI,OAAO,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM;AAClD,QAAQ,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG;AAC1C,QAAQ,QAAQ;AAChB,KAAK,GAAG,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG;AAClC,QAAQ,SAAS,EAAE,SAAS;AAC5B,KAAK,GAAG,EAAE,EAAE,CAAC,CAAC;AACd,CAAC;AACD,SAAS,SAAS,CAAC,EAAE,EAAE;AACvB,IAAI,IAAI,EAAE,CAAC,SAAS,KAAK,KAAK,EAAE;AAChC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,YAAY,KAAK,eAAe,CAAC;AACrE,CAAC;AACD,SAAS,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE;AAClD,IAAI,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE;AACtC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAChE,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AACrD,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,EAAE;AACzC,YAAY,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;AAChD,YAAY,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;AAC5C,YAAY,IAAI,GAAG,KAAK,SAAS,EAAE;AACnC,gBAAgB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL,CAAC;AACD,SAAS,YAAY,CAAC,EAAE,EAAE;AAC1B,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAChC,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACnD;AACA;AACA,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AACjC,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAE;AACrC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAChE,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AACrD,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW,EAAE;AAC7C,YAAY,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;AAC3C,YAAY,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACzD,gBAAgB,WAAW,GAAG,KAAK,CAAC;AACpC,aAAa;AACb;AACA,YAAY,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjD,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,SAAS,KAAK,aAAa,EAAE;AACpD,YAAY,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjD,SAAS;AACT,KAAK;AACL,IAAI,MAAM,GAAG,GAAG;AAChB,QAAQ,EAAE;AACV,QAAQ,QAAQ;AAChB,KAAK,CAAC;AACN,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE;AACnC,QAAQ,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;AACtC,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD,SAAS,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC3C,IAAI,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAE;AACrC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAChE,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,aAAa,EAAE;AAC/C,YAAY,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjD,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;AAC3C,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,YAAY;AACjC,YAAY,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC7C,YAAY,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1C,SAAS,EAAE,CAAC;AACZ,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC5C,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,MAAM,EAAE,GAAG;AACnB,YAAY,IAAI;AAChB,SAAS,CAAC;AACV,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;AAChC,YAAY,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC;AAC3B,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC1C,QAAQ,IAAI,GAAG,KAAK,SAAS,EAAE;AAC/B,YAAY,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;AACzB,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC1C,QAAQ,IAAI,GAAG,KAAK,SAAS,EAAE;AAC/B,YAAY,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;AACzB,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC9C,QAAQ,IAAI,KAAK,KAAK,SAAS,IAAI,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACxE,YAAY,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,SAAS;AACT,aAAa,IAAI,KAAK,KAAK,SAAS,EAAE;AACtC;AACA,YAAY,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,SAAS;AACT;AACA,QAAQ,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,KAAK;AACL,CAAC;AACD,SAAS,UAAU,CAAC,EAAE,EAAE;AACxB,IAAI,MAAM,KAAK,GAAG,YAAY;AAC9B,QAAQ,IAAI,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAChC,QAAQ,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AACtC,KAAK,EAAE,CAAC;AACR,IAAI,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;AAC5D;AACA,IAAI,IAAI,OAAO,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAC5D,IAAI,IAAI,QAAQ,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAC9D,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC;AACrB,IAAI,IAAI,KAAK,GAAG,aAAa,CAAC;AAC9B,IAAI,IAAI,GAAG,GAAG,WAAW,CAAC;AAC1B,IAAI,IAAI,QAAQ,GAAG,iBAAiB,CAAC;AACrC,IAAI,IAAI,cAAc,GAAG,KAAK,CAAC;AAC/B,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC;AAC3B,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,IAAI,YAAY,CAAC;AACrB,IAAI,IAAI,WAAW,CAAC;AACpB,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,QAAQ,GAAG,KAAK,CAAC;AACzB,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC;AAC1B,IAAI,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAE;AACrC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAChE,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,eAAe,EAAE;AACjD,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC/C,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE;AACnC,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACzC;AACA,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,YAAY;AACrC,YAAY,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC9C,YAAY,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1C,SAAS,EAAE,CAAC;AACZ,QAAQ,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClD,QAAQ,QAAQ,IAAI;AACpB,YAAY,KAAK,OAAO;AACxB,gBAAgB;AAChB,oBAAoB,MAAM,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC1D,oBAAoB,IAAI,CAAC,KAAK,SAAS,EAAE;AACzC,wBAAwB,MAAM,CAAC,GAAG,SAAS,IAAI,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AACvE,wBAAwB,OAAO,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,wBAAwB,IAAI,CAAC,SAAS,EAAE;AACxC,4BAA4B,KAAK,GAAG,CAAC,CAAC;AACtC,yBAAyB;AACzB,wBAAwB,QAAQ,GAAG,IAAI,CAAC;AACxC,wBAAwB,KAAK,GAAG,CAAC,CAAC;AAClC,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,YAAY,KAAK,QAAQ;AACzB,gBAAgB;AAChB,oBAAoB,MAAM,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC1D,oBAAoB,IAAI,CAAC,KAAK,SAAS,EAAE;AACzC,wBAAwB,MAAM,CAAC,GAAG,SAAS,IAAI,IAAI,GAAG,SAAS,GAAG,KAAK,CAAC;AACxE,wBAAwB,QAAQ,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,wBAAwB,SAAS,GAAG,IAAI,CAAC;AACzC,wBAAwB,IAAI,SAAS,KAAK,SAAS,EAAE;AACrD,4BAA4B,KAAK,GAAG,SAAS,CAAC;AAC9C,yBAAyB;AACzB,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,YAAY,KAAK,OAAO;AACxB,gBAAgB;AAChB,oBAAoB,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;AACzD,oBAAoB,IAAI,GAAG,KAAK,SAAS,EAAE;AAC3C,wBAAwB,KAAK,GAAG,GAAG,CAAC;AACpC,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,YAAY,KAAK,KAAK;AACtB,gBAAgB;AAChB,oBAAoB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,wBAAwB,GAAG,GAAG,QAAQ,CAAC;AACvC,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,YAAY,KAAK,UAAU;AAC3B,gBAAgB;AAChB,oBAAoB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,wBAAwB,QAAQ,GAAG,QAAQ,CAAC;AAC5C,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,YAAY,KAAK,gBAAgB;AACjC,gBAAgB;AAChB,oBAAoB,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC5D,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,YAAY,KAAK,YAAY;AAC7B,gBAAgB;AAChB,oBAAoB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACvF,oBAAoB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5D,oBAAoB,IAAI,MAAM,KAAK,SAAS,EAAE;AAC9C,wBAAwB,SAAS,GAAG,MAAM,CAAC;AAC3C,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,YAAY,KAAK,SAAS;AAC1B,gBAAgB;AAChB,oBAAoB,OAAO,GAAG,QAAQ,CAAC;AACvC,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,YAAY,KAAK,SAAS;AAC1B,gBAAgB;AAChB,oBAAoB,OAAO,GAAG,QAAQ,CAAC;AACvC,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,YAAY,KAAK,aAAa;AAC9B,gBAAgB;AAChB,oBAAoB,WAAW,GAAG,QAAQ,CAAC;AAC3C,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,YAAY,KAAK,cAAc;AAC/B,gBAAgB;AAChB,oBAAoB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/C,oBAAoB,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC5C,wBAAwB,YAAY,GAAG,CAAC,CAAC;AACzC,qBAAqB;AACrB,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,YAAY,KAAK,aAAa;AAC9B,gBAAgB;AAChB,oBAAoB,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzD,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,YAAY,KAAK,YAAY;AAC7B,gBAAgB;AAChB,oBAAoB,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AACxD,oBAAoB,MAAM;AAC1B,iBAAiB;AACjB,AAEA,SAAS;AACT,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,EAAE;AACjC,QAAQ,KAAK,GAAG,IAAI,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,EAAE;AACV,QAAQ,KAAK;AACb,QAAQ,IAAI,EAAE;AACd,YAAY,KAAK,EAAE,OAAO;AAC1B,YAAY,MAAM,EAAE,QAAQ;AAC5B,SAAS;AACT,QAAQ,KAAK;AACb,QAAQ,SAAS;AACjB,QAAQ,cAAc;AACtB,QAAQ,GAAG;AACX,QAAQ,QAAQ;AAChB,KAAK,CAAC;AACN,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE;AAC/B,QAAQ,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE;AAC/B,QAAQ,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE;AACnC,QAAQ,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,YAAY,KAAK,SAAS,EAAE;AACpC,QAAQ,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE;AACnC,QAAQ,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE;AAClC,QAAQ,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AACtC,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,CAAC;AACD,SAAS,iBAAiB,CAAC,EAAE,EAAE,UAAU,EAAE;AAC3C,IAAI,MAAM,WAAW,GAAG,YAAY;AACpC,QAAQ,IAAI,GAAG,GAAG,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AAC1C,QAAQ,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AACtC,KAAK,EAAE,CAAC;AACR,IAAI,MAAM,aAAa,GAAG,YAAY;AACtC,QAAQ,IAAI,GAAG,GAAG,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AAC5C,QAAQ,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AACtC,KAAK,EAAE,CAAC;AACR,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AACjD,IAAI,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACxC,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,IAAI,UAAU,CAAC;AACnB;AACA,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACxD,QAAQ,UAAU,GAAG;AACrB,YAAY,IAAI,EAAE,sBAAsB;AACxC,YAAY,OAAO,EAAE,2CAA2C;AAChE,YAAY,UAAU;AACtB,SAAS,CAAC;AACV,KAAK;AACL,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK;AACzC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,SAAS,CAAC,CAAC;AACX,QAAQ,QAAQ,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE;AACzF,QAAQ,UAAU,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAGA,qBAAmB;AAChH,KAAK,CAAC;AACN;AACA,IAAI,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,QAAQ,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAC7F,KAAK;AACL,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE;AAClC,QAAQ,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;AACtC,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,KAAK;AACb,QAAQ,IAAI,EAAE;AACd,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,UAAU;AACtB,SAAS;AACT,QAAQ,KAAK,EAAE;AACf,YAAY,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW;AAClD,YAAY,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;AAChD,YAAY,iBAAiB,EAAE,OAAO,CAAC,KAAK,CAAC,iBAAiB;AAC9D,SAAS;AACT,QAAQ,UAAU;AAClB,KAAK,CAAC;AACN,CAAC;AACD,SAAS,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE;AAC3D,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAE;AACrC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAChE,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AACrD;AACA,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,EAAE;AACzC,YAAY,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/F,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3B,YAAY,IAAI,UAAU,KAAK,SAAS,EAAE;AAC1C,gBAAgB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7C,aAAa;AACb,SAAS;AACT,aAAa,IAAI,KAAK,CAAC,SAAS,KAAK,YAAY,EAAE;AACnD,YAAY,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAChF,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,gBAAgB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,OAAO;AACrB,QAAQ,QAAQ;AAChB,KAAK,CAAC;AACN,CAAC;AACD,SAAS,SAAS,CAAC,EAAE,EAAE;AACvB,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;AACpD,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE;AAC9B,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AACD,SAAS,UAAU,CAAC,EAAE,EAAE;AACxB,IAAI,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AACD,SAAS,iBAAiB,CAAC,GAAG,EAAE;AAChC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AACvB,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC3B,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC9C,CAAC;AACD,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AACvB,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC5B,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpB,KAAK;AACL;AACA,IAAI,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACpE,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClC,YAAY,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC7D,SAAS;AACT,QAAQ,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/B,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;AACD,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACvC,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,CAAC;AACrC,CAAC;;ACxjBD;AACA;AACA;AACA;AACA;AACA;AACA,AAKA,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAMA,qBAAmB,GAAG,OAAO,CAAC;AACpC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AACxC,MAAM,WAAW,GAAG,YAAY,CAAC;AACjC,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,eAAe,CAAC,GAAG,EAAE;AACrC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;AAC3B,QAAQ,MAAM,IAAI,SAAS,CAAC,gEAAgE,CAAC,CAAC;AAC9F,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACnC,IAAI,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAKA,qBAAmB,IAAI,CAAC,CAAC,UAAU,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACnL,IAAI,MAAM,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;AAChE;AACA,IAAI,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAClC,IAAI,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;AAChC,QAAQ,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,QAAQ,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACvC,QAAQ,IAAI,IAAI,KAAK,kBAAkB,EAAE;AACzC,YAAY,iBAAiB,GAAG,IAAI,CAAC;AACrC,SAAS;AACT,KAAK;AACL,IAAI,IAAI,YAAY,IAAI,CAAC,iBAAiB,EAAE;AAC5C,QAAQ,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AACrE,KAAK;AACL;AACA,IAAI,MAAM,aAAa,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpG,IAAI,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE;AACvC,QAAQ,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,QAAQ,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC1E,KAAK;AACL;AACA,IAAI,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACjE,QAAQ,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE;AAC1C,YAAY,QAAQ,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAClE,SAAS;AACT,KAAK;AACL,SAAS;AACT,QAAQ,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE;AACxC,YAAY,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,SAAS;AACT,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;AACnE,CAAC;AACD,SAAS,cAAc,GAAG;AAC1B,IAAI,OAAO;AACX,QAAQ,EAAE,EAAEA,qBAAmB;AAC/B,QAAQ,WAAW,EAAE,qBAAqB;AAC1C,QAAQ,QAAQ,EAAE;AAClB,YAAY;AACZ,gBAAgB,IAAI,EAAE,GAAG;AACzB,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,GAAG,EAAE,WAAW;AAChC,gBAAgB,GAAG,EAAE,WAAW;AAChC,gBAAgB,KAAK,EAAE,aAAa;AACpC,aAAa;AACb,YAAY;AACZ,gBAAgB,IAAI,EAAE,GAAG;AACzB,gBAAgB,IAAI,EAAE,SAAS;AAC/B,gBAAgB,GAAG,EAAE,WAAW;AAChC,gBAAgB,GAAG,EAAE,WAAW;AAChC,gBAAgB,KAAK,EAAE,aAAa;AACpC,aAAa;AACb,SAAS;AACT,KAAK,CAAC;AACN,CAAC;AACD,SAAS,gBAAgB,CAAC,GAAG,EAAE;AAC/B,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACrC,IAAI,MAAM,WAAW,GAAG,SAAS,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI,GAAG,GAAG,CAAC,WAAW,GAAG,qBAAqB,EAAE,CAAC;AACvG,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC5C,UAAU,GAAG,CAAC,QAAQ;AACtB,UAAU,cAAc,EAAE,CAAC,QAAQ,CAAC;AACpC,IAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE,IAAI,MAAM,WAAW,GAAG,UAAU,CAAC,aAAa,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;AAClE,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AACvF,IAAI,OAAO,UAAU,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;AACnE,CAAC;AACD,SAAS,gBAAgB,CAAC,EAAE,EAAE;AAC9B,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,EAAE;AAC/B,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,GAAG,KAAK,SAAS,EAAE;AAC9B,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,GAAG,KAAK,SAAS,EAAE;AAC9B,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,SAAS,EAAE;AAChC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AACD,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACvC,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;AAC9D;AACA;AACA,IAAI,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3D,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC7D,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACrI,IAAI,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC3C,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF;AACA;AACA;AACA,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;AACnC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,KAAK,CAAC,cAAc,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAClF,IAAI,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1F,QAAQ,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,SAAS,EAAE,CAAC,CAAC;AACtF,QAAQ,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9D,KAAK;AACL,IAAI,IAAI,MAAM,KAAK,MAAM,EAAE;AAC3B,QAAQ,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrE,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE;AACjC,YAAY,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC;AAChG,YAAY,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC;AAChG,YAAY,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,WAAW,GAAG,KAAK,EAAE,CAAC,CAAC;AAC9G,SAAS;AACT,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC;AACD,SAAS,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AAC3C,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7D,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;AAClD,CAAC;AACD,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,IAAI,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACtD,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE;AACjC,QAAQ,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;AACvC,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AACrC,CAAC;AACD,SAAS,WAAW,CAAC,MAAM,EAAE;AAC7B;AACA,IAAI,IAAI,MAAM,KAAK,UAAU,EAAE;AAC/B,QAAQ,OAAO,UAAU,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE;AACzC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;AAC/B,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1C,QAAQ,IAAI,CAAC,KAAK,SAAS,EAAE;AAC7B,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,QAAQ,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACvD,KAAK;AACL,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC;AACD,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,GAAGC,YAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAGD,qBAAmB,CAAC;AACxG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;AAC/C,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAEC,YAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjE,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE;AACxC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACzD,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3C,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AAC7D,IAAI,OAAO,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AACD,SAAS,SAAS,CAAC,EAAE,EAAE;AACvB,IAAI,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACjD,CAAC;AACD,SAASA,YAAU,CAAC,EAAE,EAAE;AACxB,IAAI,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;;ACtMD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAY,MAAC,cAAc,GAAG,4DAA4D,CAAC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAY,MAAC,qBAAqB,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAY,MAAC,0BAA0B,GAAG,8DAA8D,CAAC;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAY,MAACC,eAAa,GAAG,sCAAsC;;AC9CnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAY,MAAC,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACzE;AACA,AAAY,MAAC,iBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAChE;AACA,AAAY,MAAC,eAAe,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACrD;AACA,AAAY,MAAC,kBAAkB,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACvD;AACA,AAAY,MAAC,kBAAkB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjD;AACA,AAAY,MAAC,oBAAoB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAClE;AACA,AAAY,MAAC,uBAAuB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1D;AACA,AAAY,MAAC,kBAAkB,GAAG;AAClC,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,eAAe;AACnB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,CAAC,CAAC;AACF;AACA,AAAY,MAAC,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACvD;AACA,AAAY,MAAC,wBAAwB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxD;AACA,AAAO,SAAS,WAAW,CAAC,KAAK,EAAE;AACnC,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;AACtE,CAAC;AACD;AACA,AAAO,SAAS,qBAAqB,CAAC,KAAK,EAAE;AAC7C,IAAI,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACnD,UAAU,KAAK;AACf,UAAU,SAAS,CAAC;AACpB,CAAC;AACD;AACA,AAAO,SAAS,cAAc,CAAC,KAAK,EAAE;AACtC,IAAI,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;AACvE,CAAC;AACD;AACA,AAAO,SAAS,eAAe,CAAC,KAAK,EAAE;AACvC,IAAI,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpD,UAAU,KAAK;AACf,UAAU,SAAS,CAAC;AACpB,CAAC;AACD;AACA,AAAO,SAAS,eAAe,CAAC,KAAK,EAAE;AACvC,IAAI,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpD,UAAU,KAAK;AACf,UAAU,SAAS,CAAC;AACpB,CAAC;AACD;AACA,AAAO,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACzC,IAAI,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtD,UAAU,KAAK;AACf,UAAU,SAAS,CAAC;AACpB,CAAC;AACD;AACA,AAAO,SAAS,oBAAoB,CAAC,KAAK,EAAE;AAC5C,IAAI,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzD,UAAU,KAAK;AACf,UAAU,SAAS,CAAC;AACpB,CAAC;AACD;AACA,AAAO,SAAS,eAAe,CAAC,KAAK,EAAE;AACvC,IAAI,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpD,UAAU,KAAK;AACf,UAAU,SAAS,CAAC;AACpB,CAAC;AACD;AACA,AAAO,SAAS,cAAc,CAAC,KAAK,EAAE;AACtC,IAAI,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACnD,UAAU,KAAK;AACf,UAAU,SAAS,CAAC;AACpB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,UAAU,CAAC,KAAK,EAAE;AAClC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,YAAY,CAAC,KAAK,EAAE;AACpC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC;AACjE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACzC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACjD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,aAAa,CAAC,KAAK,EAAE;AACrC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC/D,CAAC;AACD;AACA,AAAO,SAAS,UAAU,CAAC,KAAK,EAAE;AAClC,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;AAClC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AACjD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,EAAE;AACnD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;AACD;AACA,AAAO,SAAS,SAAS,CAAC,KAAK,EAAE;AACjC,IAAI,OAAO,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;AAC7B,CAAC;;ACpID;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,qBAAqB,SAAS,KAAK,CAAC;AACjD,IAAI,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE;AACtD,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;AAC5C,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACvC,QAAQ,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AAC7C,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1D,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,mBAAmB,SAAS,KAAK,CAAC;AAC/C,IAAI,WAAW,CAAC,OAAO,GAAG,sDAAsD,EAAE;AAClF,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACnC,QAAQ,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;AAC1C,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1D,KAAK;AACL,CAAC;;AC5CD;AACA;AACA;AACA;AACA;AACA,AAEA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AACnC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,QAAQ,EAAE;AAClC,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,GAAG,EAAE;AAC1B,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAClC,QAAQ,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,GAAG,EAAE;AAC5B,QAAQ,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;AACjC,KAAK;AACL;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AAChC,YAAY,MAAM,IAAI,mBAAmB,EAAE,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC3D,KAAK;AACL;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AAChC,YAAY,MAAM,IAAI,mBAAmB,EAAE,CAAC;AAC5C,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,QAAQ,SAAS,WAAW,CAAC;AAC1C,IAAI,WAAW,CAAC,KAAK,GAAG,EAAE,EAAE,QAAQ,EAAE;AACtC,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAClC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;AACpB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAC3B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;AACvB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC9B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,YAAY,SAAS,WAAW,CAAC;AAC9C,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE;AACpD,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAC1B,QAAQ,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAC7E,YAAY,MAAM,IAAI,qBAAqB,CAAC,CAAC,qDAAqD,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;AAClK,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;AACxE,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC9B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACjE,YAAY,MAAM,IAAI,qBAAqB,CAAC,CAAC,qDAAqD,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;AAC5J,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,MAAM,GAAG;AACjB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;AACrB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,UAAU,CAAC,KAAK,EAAE;AACtB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,kBAAkB,SAAS,WAAW,CAAC;AACpD,IAAI,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE;AAChC,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AAC9B,QAAQ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AACnC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AACrC,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,OAAO,CAAC,GAAG,QAAQ,EAAE;AACrC,IAAI,OAAO,IAAI,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;;AC7ND;AACA;AACA;AACA;AACA;AACA,AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,aAAa,SAAS,WAAW,CAAC;AAC/C,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE;AACjD,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;AAChC,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;AACxE,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;AACzC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,cAAc,CAAC,QAAQ,EAAE;AAC7B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,IAAI,GAAG,WAAW,EAAE;AAC3C,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,YAAY,MAAM,IAAI,qBAAqB,CAAC,0DAA0D,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAChI,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,SAAS,SAAS,WAAW,CAAC;AAC3C,IAAI,WAAW,CAAC,QAAQ,GAAG,EAAE,EAAE;AAC/B,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AAC5B,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;;AC5GD;AACA;AACA;AACA;AACA;AACA;AACA,AAEA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AACnD,CAAC;AACD,SAAS,KAAK,CAAC,KAAK,EAAE;AACtB,IAAI,OAAO,KAAK,YAAY,YAAY,GAAG,KAAK,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/E,CAAC;AACD,AAOA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,UAAU,SAAS,WAAW,CAAC;AAC5C,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE;AAC5C,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAC1B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE;AAC5C,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAC1B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE;AAC5C,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAC1B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,aAAa,SAAS,WAAW,CAAC;AAC/C,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE;AAC5C,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;AAChC,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,aAAa,SAAS,WAAW,CAAC;AAC/C,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE;AAChD,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;AACvB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,IAAI,GAAG,GAAG,EAAE;AACnC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,YAAY,MAAM,IAAI,qBAAqB,CAAC,sCAAsC,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAC5G,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,iBAAiB,SAAS,WAAW,CAAC;AACnD,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE;AAChD,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AAC5B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;AACvB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,IAAI,GAAG,OAAO,EAAE;AACvC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,YAAY,MAAM,IAAI,qBAAqB,CAAC,8CAA8C,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACpH,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,YAAY,SAAS,WAAW,CAAC;AAC9C,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE;AACnE,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAC/C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE;AACxB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC/B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACjC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,YAAY,SAAS,WAAW,CAAC;AAC9C,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE;AACvD,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,kBAAkB,SAAS,WAAW,CAAC;AACpD,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE;AAC5C,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;AAC/B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,cAAc,SAAS,WAAW,CAAC;AAChD,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE;AACtD,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,GAAG,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,cAAc,SAAS,WAAW,CAAC;AAChD,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE;AACtD,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,GAAG,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,aAAa,SAAS,WAAW,CAAC;AAC/C,IAAI,WAAW,CAAC,QAAQ,GAAG,EAAE,EAAE;AAC/B,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,IAAI,GAAG,IAAI,EAAE;AACpC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,YAAY,MAAM,IAAI,qBAAqB,CAAC,wCAAwC,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAC9G,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,UAAU,SAAS,WAAW,CAAC;AAC5C,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE;AAC5C,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,IAAI,GAAG,GAAG,EAAE;AACnC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAY,MAAM,IAAI,qBAAqB,CAAC,uCAAuC,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAC7G,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,gBAAgB,SAAS,WAAW,CAAC;AAClD,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE;AAChE,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE;AACxB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,WAAW,SAAS,WAAW,CAAC;AAC7C,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE;AAC5C,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;AAC5B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,WAAW,SAAS,WAAW,CAAC;AAC7C,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE;AACtD,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAC1B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,GAAG,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,qBAAqB,SAAS,WAAW,CAAC;AACvD,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE;AAChE,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,GAAG,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,GAAG,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,aAAa,SAAS,WAAW,CAAC;AAC/C,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE;AACtD,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE;AACxB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,kBAAkB,SAAS,WAAW,CAAC;AACpD,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE;AAChE,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AAC9B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE;AACxB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,eAAe,SAAS,WAAW,CAAC;AACjD,IAAI,WAAW,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE;AACtD,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AAC3B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,IAAI,CAAC;AACzB,KAAK;AACL,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,OAAO,SAAS,WAAW,CAAC;AACzC,IAAI,WAAW,CAAC,cAAc,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,EAAE,EAAE;AACjF,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AACnD,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;AACnD,QAAQ,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE;AAChD,YAAY,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5D,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;AACjD,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC;AAC1B,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC;AAC9B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC;AACpC,KAAK;AACL;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvF,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;;ACnmCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;AACxE,IAAI,OAAO,EAAE,IAAI,EAAE,SAAS;AAC5B,QAAQ,YAAY;AACpB,QAAQ,SAAS;AACjB,QAAQ,MAAM;AACd,QAAQ,UAAU,EAAE,YAAY;AAChC,YAAY,IAAI,GAAG,GAAG,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;AACpE,YAAY,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1C,SAAS,EAAE;AACX,QAAQ,qBAAqB,EAAE,YAAY;AAC3C,YAAY,IAAI,GAAG,GAAG,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC;AAC/E,YAAY,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1C,SAAS,EAAE;AACX,QAAQ,QAAQ,EAAE,YAAY;AAC9B,YAAY,IAAI,GAAG,GAAG,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;AAClE,YAAY,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1C,SAAS,EAAE;AACX,KAAK,CAAC;AACN,CAAC;AACD;AACA,AAAO,SAAS,UAAU,CAAC,KAAK,EAAE;AAClC,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,MAAM;AACpB,QAAQ,KAAK;AACb,KAAK,CAAC;AACN,CAAC;AACD;AACA,AAAO,SAAS,aAAa,CAAC,OAAO,EAAE;AACvC,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAChE,CAAC;AACD;AACA,AAAO,SAAS,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE;AAC9C,IAAI,OAAO,YAAY;AACvB,QAAQ,IAAI,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AAC1E,QAAQ,OAAO,GAAG,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AAChD,KAAK,EAAE,CAAC;AACR,CAAC;AACD;AACA,AAAO,SAAS,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE;AAC9D,IAAI,OAAO,YAAY;AACvB,QAAQ,IAAI,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AAC7G,QAAQ,OAAO,GAAG,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AAChD,KAAK,EAAE,CAAC;AACR,CAAC;AACD;AACA,AAAO,SAAS,WAAW,CAAC,OAAO,EAAE;AACrC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1C,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AACnC,YAAY,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;AAC/B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;;ACjED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAMA,SAAS,QAAQ,CAAC,EAAE,EAAE;AACtB,IAAI,OAAO,EAAE,CAAC,YAAY,KAAK,cAAc,CAAC;AAC9C,CAAC;AACD,SAAS,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE;AACtC,IAAI,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AACrF,CAAC;AACD,SAAS,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE;AACzC,IAAI,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AACvF,CAAC;AACD,SAAS,OAAO,CAAC,EAAE,EAAE;AACrB,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AACD,SAAS,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE;AACvC,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL;AACA,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE;AACzB,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE;AACxC,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AAC7C,CAAC;AACD,SAAS,WAAW,CAAC,EAAE,EAAE;AACzB,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC;AACD,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;AACxD,IAAI,CAAC,YAAY;AACjB,QAAQ,IAAI,GAAG,GAAG,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;AAClE,QAAQ,OAAO,GAAG,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;AAC1C,YAAY,IAAI;AAChB,YAAY,OAAO;AACnB,YAAY,SAAS,EAAE,GAAG,CAAC,SAAS;AACpC,SAAS,CAAC,CAAC;AACX,KAAK,GAAG,CAAC;AACT,IAAI,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACnC,IAAI,OAAO,QAAQ,CAAC;AACpB,CAAC;AACD,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC9C,IAAI,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACjC,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;AAC3B,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;AAC/C,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,KAAK,EAAE,CAAC;AAChB,KAAK,CAAC;AACN,CAAC;AACD;AACA;AACA;AACA,SAAS,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE;AACpC,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,QAAQ,OAAO,IAAI,YAAY,EAAE,CAAC;AAClC,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACzC,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AACpC,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC3C,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;AAC3C,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC9B,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE;AACzE,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AACD,SAAS,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE;AACnD,IAAI,OAAO,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/E,CAAC;AACD;AACA;AACA;AACA,SAAS,aAAa,CAAC,EAAE,EAAE;AAC3B,IAAI,MAAM,GAAG,GAAG,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC3C,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,KAAK,SAAS,GAAG;AAClD,QAAQ,GAAG;AACX,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD,SAAS,UAAU,CAAC,EAAE,EAAE;AACxB,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,MAAM,GAAG,GAAG,MAAM,KAAK,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAC3E,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,KAAK,SAAS,GAAG;AAClD,QAAQ,GAAG;AACX,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD,SAAS,UAAU,CAAC,EAAE,EAAE;AACxB,IAAI,MAAM,kBAAkB,GAAG,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC3D,IAAI,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACpD,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACtD,IAAI,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChD,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,kBAAkB,KAAK,SAAS,GAAG;AACjE,QAAQ,kBAAkB;AAC1B,KAAK,GAAG,EAAE,IAAI,SAAS,KAAK,SAAS,GAAG;AACxC,QAAQ,SAAS;AACjB,KAAK,GAAG,EAAE,IAAI,cAAc,KAAK,SAAS,GAAG;AAC7C,QAAQ,cAAc;AACtB,KAAK,GAAG,EAAE,IAAI,SAAS,KAAK,SAAS,GAAG;AACxC,QAAQ,SAAS;AACjB,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD;AACA,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,CAAC,YAAY,EAAE,+BAA+B,CAAC,EAAE,CAAC,YAAY,EAAE,+BAA+B,CAAC,CAAC,CAAC;AAC3T,SAAS,gBAAgB,CAAC,EAAE,EAAE;AAC9B,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,gBAAgB,EAAE;AACvD,QAAQ,MAAM,CAAC,GAAG,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,KAAK,SAAS,EAAE;AAC7B,YAAY,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC7B,SAAS;AACT,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACjC,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;AAC5B,QAAQ,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD,SAAS,gBAAgB,CAAC,EAAE,EAAE;AAC9B,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACjD,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACjD,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACjD,IAAI,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/C,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,MAAM,GAAG,GAAG,MAAM,KAAK,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAC1E,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,KAAK,SAAS,GAAG;AACrD,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,IAAI,OAAO,KAAK,SAAS,GAAG;AACtC,QAAQ,OAAO;AACf,KAAK,GAAG,EAAE,IAAI,GAAG,KAAK,SAAS,GAAG;AAClC,QAAQ,GAAG;AACX,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD,SAAS,YAAY,CAAC,EAAE,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACjD,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACzD,IAAI,MAAM,iBAAiB,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5D,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,KAAK,SAAS,GAAG;AACrD,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,IAAI,cAAc,KAAK,SAAS,GAAG;AAC7C,QAAQ,cAAc;AACtB,KAAK,GAAG,EAAE,IAAI,iBAAiB,KAAK,SAAS,GAAG;AAChD,QAAQ,iBAAiB;AACzB,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD,SAAS,eAAe,CAAC,EAAE,EAAE;AAC7B,IAAI,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAChD,IAAI,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;AACpF,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,KAAK,SAAS,GAAG;AACnD,QAAQ,IAAI;AACZ,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD,SAAS,eAAe,CAAC,EAAE,EAAE;AAC7B,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,KAAK,SAAS,GAAG;AACrD,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD,SAAS,eAAe,CAAC,EAAE,EAAE;AAC7B,IAAI,MAAM,GAAG,GAAG,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC3C,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,MAAM,GAAG,GAAG,MAAM,KAAK,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAC3E,IAAI,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAClD,IAAI,MAAM,MAAM,GAAG,OAAO,KAAK,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;AAChF,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,KAAK,SAAS,GAAG;AAClD,QAAQ,GAAG;AACX,KAAK,GAAG,EAAE,IAAI,GAAG,KAAK,SAAS,GAAG;AAClC,QAAQ,GAAG;AACX,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD,SAAS,YAAY,CAAC,EAAE,EAAE;AAC1B,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,KAAK,SAAS,GAAG;AACrD,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD,SAAS,aAAa,CAAC,EAAE,EAAE;AAC3B,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACjD,IAAI,MAAM,mBAAmB,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC9D,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,KAAK,SAAS,GAAG;AACrD,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,IAAI,mBAAmB,KAAK,SAAS,GAAG;AAClD,QAAQ,mBAAmB;AAC3B,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD,SAAS,WAAW,CAAC,EAAE,EAAE;AACzB,IAAI,MAAM,GAAG,GAAG,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC3C,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACjD,IAAI,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAC9E,IAAI,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/C,IAAI,MAAM,iBAAiB,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5D,IAAI,MAAM,mBAAmB,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC9D,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,KAAK,SAAS,GAAG;AAClD,QAAQ,GAAG;AACX,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,IAAI,OAAO,KAAK,SAAS,GAAG;AACtC,QAAQ,OAAO;AACf,KAAK,GAAG,EAAE,IAAI,iBAAiB,KAAK,SAAS,GAAG;AAChD,QAAQ,iBAAiB;AACzB,KAAK,GAAG,EAAE,IAAI,mBAAmB,KAAK,SAAS,GAAG;AAClD,QAAQ,mBAAmB;AAC3B,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD,SAAS,YAAY,CAAC,EAAE,EAAE;AAC1B,IAAI,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/C,IAAI,MAAM,WAAW,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACtD,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACzD,IAAI,MAAM,eAAe,GAAG,cAAc,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AAC3D,IAAI,MAAM,aAAa,GAAG,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACvD,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,KAAK,SAAS,GAAG;AACtD,QAAQ,OAAO;AACf,KAAK,GAAG,EAAE,IAAI,WAAW,KAAK,SAAS,GAAG;AAC1C,QAAQ,WAAW;AACnB,KAAK,GAAG,EAAE,IAAI,cAAc,KAAK,SAAS,GAAG;AAC7C,QAAQ,cAAc;AACtB,KAAK,GAAG,EAAE,IAAI,eAAe,KAAK,SAAS,GAAG;AAC9C,QAAQ,eAAe;AACvB,KAAK,GAAG,EAAE,IAAI,aAAa,KAAK,SAAS,GAAG;AAC5C,QAAQ,aAAa;AACrB,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD,SAAS,UAAU,CAAC,EAAE,EAAE;AACxB,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACzD,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,cAAc,KAAK,SAAS,GAAG;AAC7D,QAAQ,cAAc;AACtB,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD,SAAS,aAAa,CAAC,EAAE,EAAE;AAC3B,IAAI,MAAM,eAAe,GAAG,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzD,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,eAAe,KAAK,SAAS,GAAG;AAC9D,QAAQ,eAAe;AACvB,KAAK,GAAG,EAAE,IAAI,MAAM,KAAK,SAAS,GAAG;AACrC,QAAQ,MAAM;AACd,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD,SAAS,UAAU,CAAC,EAAE,EAAE;AACxB,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChD,IAAI,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/C,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,MAAM,GAAG,GAAG,MAAM,KAAK,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAC3E,IAAI,MAAM,GAAG,GAAG,MAAM,KAAK,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAC1E,IAAI,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChD,IAAI,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC9C,IAAI,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AACrE,IAAI,MAAM,GAAG,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;AACrF,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,SAAS,KAAK,SAAS,GAAG;AACxD,QAAQ,SAAS;AACjB,KAAK,GAAG,EAAE,IAAI,QAAQ,KAAK,SAAS,GAAG;AACvC,QAAQ,QAAQ;AAChB,KAAK,GAAG,EAAE,IAAI,GAAG,KAAK,SAAS,GAAG;AAClC,QAAQ,GAAG;AACX,KAAK,GAAG,EAAE,IAAI,GAAG,KAAK,SAAS,GAAG;AAClC,QAAQ,GAAG;AACX,KAAK,GAAG,EAAE,IAAI,SAAS,KAAK,SAAS,GAAG;AACxC,QAAQ,SAAS;AACjB,KAAK,GAAG,EAAE,IAAI,GAAG,KAAK,SAAS,GAAG;AAClC,QAAQ,GAAG;AACX,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,CAAC;AACD;AACA,SAAS,SAAS,CAAC,EAAE,EAAE;AACvB,IAAI,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,EAAEA,eAAa,EAAE,OAAO,CAAC,CAAC;AAC1D,IAAI,MAAM,QAAQ,GAAG,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;AACrF,IAAI,OAAO,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC;AACD,SAAS,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE;AAC/B,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACrC,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAClC,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;AAC3C,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE;AAC1D,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,YAAY,KAAK,0BAA0B,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE;AAC5F,YAAY,IAAI,GAAG,KAAK,CAAC;AACzB,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,GAAG,EAAE;AACxD,YAAY,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAY,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AACpD,YAAY,SAAS;AACrB,SAAS;AACT;AACA,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AACD,SAAS,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE;AACrC,IAAI,OAAO,IAAI,aAAa,CAAC,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9D,CAAC;AACD,SAAS,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE;AAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AACvB,QAAQ,OAAO,IAAI,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,QAAQ,EAAE,CAAC,SAAS;AACxB,QAAQ,KAAK,WAAW;AACxB,YAAY,OAAO,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/C,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC3C,QAAQ,KAAK,GAAG;AAChB,YAAY,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC;AACjC,QAAQ,KAAK,GAAG;AAChB,YAAY,OAAO,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AACzC,QAAQ,KAAK,KAAK;AAClB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAClD,gBAAgB,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACrG,aAAa;AACb,QAAQ,KAAK,KAAK;AAClB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAClD,gBAAgB,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/F,aAAa;AACb,QAAQ,KAAK,KAAK;AAClB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAClD,gBAAgB,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/F,aAAa;AACb,QAAQ,KAAK,WAAW;AACxB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;AACxD,gBAAgB,OAAO,IAAI,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3G,aAAa;AACb,QAAQ,KAAK,GAAG;AAChB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChD,gBAAgB,MAAM,QAAQ,GAAG,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACjE,gBAAgB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,oBAAoB,OAAO,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9H,iBAAiB;AACjB,gBAAgB,OAAO,IAAI,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACzE,aAAa;AACb,QAAQ,KAAK,OAAO;AACpB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACpD,gBAAgB,MAAM,QAAQ,GAAG,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACjE,gBAAgB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,oBAAoB,OAAO,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,OAAO,EAAE,IAAI,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACtI,iBAAiB;AACjB,gBAAgB,OAAO,IAAI,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACzE,aAAa;AACb,QAAQ,KAAK,GAAG;AAChB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChD,gBAAgB,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACjD,gBAAgB,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACjD,gBAAgB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AAClC,oBAAoB,OAAO,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,yCAAyC,EAAE,OAAO,EAAE,IAAI,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACjM,iBAAiB;AACjB,gBAAgB,OAAO,IAAI,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AACvH,aAAa;AACb,QAAQ,KAAK,MAAM;AACnB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnD,gBAAgB,OAAO,IAAI,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACzJ,aAAa;AACb,QAAQ,KAAK,UAAU;AACvB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;AACvD,gBAAgB,OAAO,IAAI,kBAAkB,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/G,aAAa;AACb,QAAQ,KAAK,QAAQ;AACrB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AACrD,gBAAgB,OAAO,IAAI,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACtJ,aAAa;AACb,QAAQ,KAAK,QAAQ;AACrB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AACrD,gBAAgB,OAAO,IAAI,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACtJ,aAAa;AACb,QAAQ,KAAK,GAAG;AAChB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAChD,gBAAgB,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACzF,gBAAgB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,oBAAoB,OAAO,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,2BAA2B,EAAE,OAAO,EAAE,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACzH,iBAAiB;AACjB,gBAAgB,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/D,aAAa;AACb,QAAQ,KAAK,IAAI;AACjB,YAAY,OAAO,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/C,QAAQ,KAAK,MAAM;AACnB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnD;AACA,gBAAgB,OAAO,IAAI,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACrM,aAAa;AACb,QAAQ,KAAK,OAAO;AACpB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACpD,gBAAgB,OAAO,IAAI,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACrG,aAAa;AACb,QAAQ,KAAK,KAAK;AAClB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAClD,gBAAgB,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACjJ,aAAa;AACb,QAAQ,KAAK,MAAM;AACnB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnD;AACA,gBAAgB,OAAO,IAAI,qBAAqB,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5M,aAAa;AACb,QAAQ,KAAK,MAAM;AACnB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnD,gBAAgB,OAAO,IAAI,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACtJ,aAAa;AACb,QAAQ,KAAK,SAAS;AACtB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACtD,gBAAgB,OAAO,IAAI,kBAAkB,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACzM,aAAa;AACb,QAAQ,KAAK,MAAM;AACnB,YAAY;AACZ,gBAAgB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnD,gBAAgB,OAAO,IAAI,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACxJ,aAAa;AACb,QAAQ;AACR,YAAY,OAAO,IAAI,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC5D,KAAK;AACL,CAAC;AACD,SAAS,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE;AACjC,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAC;AACxB,IAAI,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;AAC3C,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC9B;AACA,YAAY,QAAQ,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1E,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,OAAO,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AACD,SAAS,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE;AACrC,IAAI,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;AAC5C,IAAI,MAAM,KAAK,GAAG,EAAE,GAAG,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC;AAC7D,IAAI,MAAM,EAAE,GAAG,KAAK,KAAK,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;AACpE,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,SAAS,GAAG;AACxD,QAAQ,EAAE;AACV,KAAK,GAAG,EAAE,EAAE,CAAC;AACb,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACjF,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,QAAQ,OAAO,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,sCAAsC,EAAE,OAAO,EAAE,IAAI,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AACvH,KAAK;AACL,IAAI,OAAO,IAAI,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE;AAChD,IAAI,OAAO,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE;AAClD,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACxD,CAAC;;AC1iBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAKA,SAAS,aAAa,CAAC,OAAO,EAAE;AAChC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,MAAM,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAChG,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC;AAC9B,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,YAAY;AACzC,QAAQ,IAAI,GAAG,GAAG,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;AACtE,QAAQ,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AACtC,KAAK,EAAE,CAAC,CAAC;AACT,IAAI,KAAK,MAAM,SAAS,IAAI,qBAAqB,EAAE;AACnD,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACtC,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,qBAAqB,CAAC,KAAK,EAAE;AACtC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3B,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,IAAI,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC;AAClJ,CAAC;AACD,SAASC,WAAS,CAAC,KAAK,EAAE;AAC1B;AACA,IAAI,OAAO,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;AAC7B,CAAC;AACD,SAAS,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE;AAC7D,IAAI,OAAO,aAAa,CAAC,cAAc,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE;AAChE,QAAQ,UAAU;AAClB,QAAQ,QAAQ;AAChB,KAAK,CAAC,CAAC;AACP,CAAC;AACD,SAAS,OAAO,CAAC,KAAK,EAAE;AACxB,IAAI,OAAO;AACX,QAAQ,YAAY,EAAE,EAAE;AACxB,QAAQ,SAAS,EAAE,KAAK;AACxB,QAAQ,MAAM,EAAE,EAAE;AAClB,QAAQ,KAAK;AACb,KAAK,CAAC;AACN,CAAC;AACD,SAAS,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE;AACtC,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AACD,SAAS,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE;AACxC,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,OAAO,CAACA,WAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AACD,SAAS,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE;AACtC,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE;AAC9B,QAAQ,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,KAAK;AACL,CAAC;AACD,SAAS,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;AACpD,IAAI,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1C,QAAQ,MAAM,IAAI,qBAAqB,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AACtH,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE;AACtC,IAAI,MAAM,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AACjD,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;AACvC,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AAChC,YAAY,MAAM,IAAI,qBAAqB,CAAC,CAAC,qDAAqD,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC;AAChK,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACvC,YAAY,MAAM,EAAE,GAAG,CAAC,MAAM;AAC9B,YAAY,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AACD,SAAS,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;AAC7B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAClE,QAAQ,KAAK,GAAG,UAAU,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,KAAK,CAAC,IAAI,CAAC;AACnB,YAAY,YAAY,EAAED,eAAa;AACvC,YAAY,SAAS,EAAE,OAAO;AAC9B,YAAY,MAAM,EAAE,KAAK;AACzB,YAAY,KAAK,EAAE,KAAK;AACxB,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC1D,CAAC;AACD,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE;AAC7B,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;AAC7B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE;AACnC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE;AAClC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;AAC7B,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAC;AACrF,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;AAC7B,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;AACnF,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;AAC7B,QAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE;AAC/E;AACA,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE;AACtE,gBAAgB,MAAM,IAAI,qBAAqB,CAAC,CAAC,sCAAsC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,CAAC;AAChJ,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE;AACnC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AACD,SAAS,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;AAC3B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpC,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClD,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACvC,YAAY,MAAM,EAAE,GAAG,CAAC,MAAM;AAC9B,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE;AAC7C,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AACD,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;AAC/B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS,EAAE;AAC3C,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/C,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AACD,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE;AAC5B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS,EAAE;AAC3C,QAAQ,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;AACrG,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/C,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AACD,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE;AAC5B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,IAAI,IAAI,CAAC,CAAC,kBAAkB,KAAK,SAAS,EAAE;AAC5C,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACjE,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE;AACnC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1D,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,EAAE;AACxC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE;AACnC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AACD;AACA,MAAM,qBAAqB,GAAG,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,EAAE,CAAC,mBAAmB,EAAE,SAAS,CAAC,EAAE,CAAC,+BAA+B,EAAE,YAAY,CAAC,EAAE,CAAC,+BAA+B,EAAE,YAAY,CAAC,CAAC,CAAC;AAChU,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AAClC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,qBAAqB,EAAE;AAC5D,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;AAC7B,QAAQ,IAAI,OAAO,CAAC,KAAK,SAAS,EAAE;AACpC,YAAY,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AACD,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AAClC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AAChC,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AAChC,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AAChC,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE;AACjC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;AAC7B,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC/E,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AACD,SAAS,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE;AAC9B,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AAChC,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,EAAE;AACxC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AAC/D,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAC3C,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AACD,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;AACjC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5C,QAAQ,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC;AACnG,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/C,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACrD,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AACD,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;AACjC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/C,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AACD,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;AACjC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;AAC7B,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;AAC7B,QAAQ,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC;AAC5F,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AAChC,QAAQ,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,WAAW,CAAC,CAAC;AAClG,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AACD,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;AAC/B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/C,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAChD,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AACD,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;AAC/B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/C,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAChD,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AACD,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AAClC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AACD,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;AAC/B,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AAChC,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,mBAAmB,KAAK,SAAS,EAAE;AAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,IAAI,GAAG,KAAK,SAAS,EAAE;AAC/B,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,YAAY,MAAM,EAAE,GAAG,CAAC,MAAM;AAC9B,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AACjB,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AACD,SAAS,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;AAC7B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;AAC7B,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AAChC,QAAQ,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC,CAAC;AAC9F,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE;AACjC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAC3C,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,mBAAmB,KAAK,SAAS,EAAE;AAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AACD,SAAS,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE;AAC9B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9B,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE;AACjC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,EAAE;AACrC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,EAAE;AACxC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;AAC/D,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,eAAe,KAAK,SAAS,EAAE;AACzC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AACjE,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,aAAa,KAAK,SAAS,EAAE;AACvC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AACD,SAAS,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE;AAC5B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,KAAK,SAAS,EAAE;AACtD,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/C,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7C,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AACD,SAAS,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE;AAC5D,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,eAAe,KAAK,SAAS,EAAE;AACvC,QAAQ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC/B,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AACD,SAAS,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;AAC7B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACpG,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE;AAC1B,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AACD,SAAS,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;AAC7B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACpG,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE;AAC1B,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AACD,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE;AAChC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACvG,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE;AAC1B,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACrD,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AACD,SAAS,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE;AAC7B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACpG,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE;AAC1B,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,KAAK;AACL;AACA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACrD,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AACD,SAAS,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE;AAC9B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;AACvC,YAAY,MAAM,EAAE,GAAG,CAAC,MAAM;AAC9B,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AACD,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE;AAClC,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,SAAS,EAAE;AAC1C,QAAQ,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;AACjG,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrC,QAAQ,IAAI,EAAE,KAAK,SAAS,EAAE;AAC9B,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,YAAY,MAAM,EAAE,GAAG,CAAC,MAAM;AAC9B,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAChB,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AACD,SAAS,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE;AAClC;AACA,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;AAC3B,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;AAC7C,YAAY,MAAM,IAAI,qBAAqB,CAAC,yCAAyC,EAAE,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACnH,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,IAAI,YAAY,kBAAkB,EAAE;AAC5C,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;AAC7C,YAAY,MAAM,IAAI,qBAAqB,CAAC,wCAAwC,EAAE,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAClH,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;AACjC,KAAK;AACL,IAAI,QAAQ,IAAI,CAAC,IAAI;AACrB,QAAQ,KAAK,WAAW;AACxB,YAAY,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5C,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxC,QAAQ,KAAK,GAAG;AAChB,YAAY,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,QAAQ,KAAK,GAAG;AAChB,YAAY,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACtC,QAAQ,KAAK,KAAK;AAClB,YAAY,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC,QAAQ,KAAK,KAAK;AAClB,YAAY,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACtC,QAAQ,KAAK,KAAK;AAClB,YAAY,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACtC,QAAQ,KAAK,WAAW;AACxB,YAAY,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5C,QAAQ,KAAK,GAAG;AAChB,YAAY,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5C,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxC,QAAQ,KAAK,GAAG;AAChB,YAAY,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC3C,QAAQ,KAAK,MAAM;AACnB,YAAY,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC3C,QAAQ,KAAK,UAAU;AACvB,YAAY,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC3C,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC,QAAQ,KAAK,GAAG;AAChB,YAAY,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzC,QAAQ,KAAK,IAAI;AACjB,YAAY,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5C,QAAQ,KAAK,MAAM;AACnB,YAAY,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxC,QAAQ,KAAK,KAAK;AAClB,YAAY,OAAO,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACtC,QAAQ,KAAK,MAAM;AACnB,YAAY,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,QAAQ,KAAK,MAAM;AACnB,YAAY,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,QAAQ,KAAK,SAAS;AACtB,YAAY,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1C,QAAQ,KAAK,MAAM;AACnB,YAAY,OAAO,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,QAAQ,KAAK,KAAK;AAClB;AACA,YAAY,MAAM,IAAI,qBAAqB,CAAC,2EAA2E,EAAE,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AAClJ,QAAQ,KAAK,SAAS;AACtB;AACA,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;AACjD,gBAAgB,OAAO,IAAI,CAAC,YAAY,CAAC;AACzC,aAAa;AACb,YAAY,MAAM,IAAI,qBAAqB,CAAC,wCAAwC,EAAE,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAClH,QAAQ;AACR,YAAY;AACZ,gBAAgB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;AAC9C,gBAAgB,MAAM,IAAI,qBAAqB,CAAC,CAAC,qBAAqB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAC3H,aAAa;AACb,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE;AACpD,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;AAC1C,IAAI,OAAO,aAAa,CAAC,IAAI,EAAE;AAC/B,QAAQ,MAAM;AACd,QAAQ,IAAI,EAAE,IAAI,CAAC,IAAI;AACvB,KAAK,CAAC,CAAC;AACP,CAAC;;AC9oBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAGA;AACA,SAAS,mBAAmB,CAAC,EAAE,EAAE;AACjC,IAAI,OAAO,EAAE,IAAI,EAAE,SAAS;AAC5B,QAAQ,YAAY,EAAE,EAAE,CAAC,YAAY;AACrC,QAAQ,SAAS,EAAE,EAAE,CAAC,SAAS;AAC/B,QAAQ,MAAM,EAAE,EAAE,CAAC,MAAM;AACzB,QAAQ,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAC9C,YAAY,YAAY,EAAE,CAAC,CAAC,YAAY;AACxC,YAAY,SAAS,EAAE,CAAC,CAAC,SAAS;AAClC,YAAY,MAAM,EAAE,CAAC,CAAC,MAAM;AAC5B,YAAY,KAAK,EAAE,CAAC,CAAC,KAAK;AAC1B,SAAS,CAAC,CAAC;AACX,QAAQ,qBAAqB,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACpE,YAAY,MAAM,EAAE,CAAC,CAAC,MAAM;AAC5B,YAAY,YAAY,EAAE,CAAC,CAAC,YAAY;AACxC,SAAS,CAAC,CAAC;AACX,QAAQ,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACpD,KAAK,CAAC;AACN,CAAC;AACD,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AAC/B,QAAQ,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;AACvD,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL,IAAI,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AACD,SAAS,WAAW,CAAC,MAAM,EAAE;AAC7B,IAAI,OAAO,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC1E,CAAC;AACD;AACA,SAAS,gBAAgB,CAAC,CAAC,EAAE;AAC7B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAC7I,CAAC;AACD,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAC7I,CAAC;AACD,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,kBAAkB,KAAK,SAAS,GAAG,EAAE,kBAAkB,EAAE,CAAC,CAAC,kBAAkB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AACtY,CAAC;AACD,SAAS,mBAAmB,CAAC,CAAC,EAAE;AAChC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,KAAK,SAAS,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,aAAa,KAAK,SAAS,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,mBAAmB,KAAK,SAAS,GAAG,EAAE,mBAAmB,EAAE,CAAC,CAAC,mBAAmB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,iBAAiB,KAAK,SAAS,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,6BAA6B,KAAK,SAAS;AACriB,UAAU,EAAE,6BAA6B,EAAE,CAAC,CAAC,6BAA6B,EAAE;AAC5E,UAAU,EAAE,IAAI,CAAC,CAAC,6BAA6B,KAAK,SAAS;AAC7D,UAAU,EAAE,6BAA6B,EAAE,CAAC,CAAC,6BAA6B,EAAE;AAC5E,UAAU,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAClF,CAAC;AACD,SAAS,mBAAmB,CAAC,CAAC,EAAE;AAChC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AACxW,CAAC;AACD,SAAS,eAAe,CAAC,CAAC,EAAE;AAC5B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,iBAAiB,KAAK,SAAS,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAC3T,CAAC;AACD,SAAS,kBAAkB,CAAC,CAAC,EAAE;AAC/B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAChJ,CAAC;AACD,SAAS,kBAAkB,CAAC,CAAC,EAAE;AAC/B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAChG,CAAC;AACD,SAAS,kBAAkB,CAAC,CAAC,EAAE;AAC/B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAChP,CAAC;AACD,SAAS,eAAe,CAAC,CAAC,EAAE;AAC5B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAChG,CAAC;AACD,SAAS,gBAAgB,CAAC,CAAC,EAAE;AAC7B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,mBAAmB,KAAK,SAAS,GAAG,EAAE,mBAAmB,EAAE,CAAC,CAAC,mBAAmB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AACnP,CAAC;AACD,SAAS,cAAc,CAAC,CAAC,EAAE;AAC3B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,iBAAiB,KAAK,SAAS,GAAG,EAAE,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,mBAAmB,KAAK,SAAS,GAAG,EAAE,mBAAmB,EAAE,CAAC,CAAC,mBAAmB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAChb,CAAC;AACD,SAAS,iBAAiB,CAAC,CAAC,EAAE;AAC9B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,KAAK,SAAS,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,eAAe,KAAK,SAAS,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,aAAa,KAAK,SAAS,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AACxc,CAAC;AACD,SAAS,iBAAiB,CAAC,CAAC,EAAE;AAC9B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,cAAc,KAAK,SAAS,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AAC9K,CAAC;AACD,SAAS,gBAAgB,CAAC,CAAC,EAAE;AAC7B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,eAAe,KAAK,SAAS,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;AACjL,CAAC;AACD,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;AAC9V,CAAC;AACD,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;AAChF,CAAC;AACD,SAAS,cAAc,CAAC,CAAC,EAAE;AAC3B,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,SAAS,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;AACvE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,gBAAgB,CAAC,IAAI,EAAE;AACvC,IAAI,QAAQ,IAAI,CAAC,IAAI;AACrB,QAAQ,KAAK,GAAG,EAAE;AAClB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrD,SAAS;AACT,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACtH,SAAS;AACT,QAAQ,KAAK,WAAW,EAAE;AAC1B,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClH,SAAS;AACT,QAAQ,KAAK,OAAO,EAAE;AACtB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,KAAK,SAAS,EAAE;AACxB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B;AACA,YAAY,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC;AACvC,YAAY,IAAI,GAAG,KAAK,SAAS,EAAE;AACnC;AACA,gBAAgB,OAAO,IAAI,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS;AAC5E,oBAAoB,YAAY,EAAE,EAAE;AACpC,oBAAoB,SAAS,EAAE,CAAC,CAAC,SAAS;AAC1C,oBAAoB,MAAM,EAAE,EAAE;AAC9B,oBAAoB,UAAU,EAAE,EAAE;AAClC,oBAAoB,qBAAqB,EAAE,EAAE;AAC7C,oBAAoB,QAAQ,EAAE,EAAE;AAChC,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,YAAY,OAAO,IAAI,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;AACjF,SAAS;AACT,QAAQ,KAAK,GAAG,EAAE;AAClB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACzM,SAAS;AACT,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5F,SAAS;AACT,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtF,SAAS;AACT,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtF,SAAS;AACT,QAAQ,KAAK,WAAW,EAAE;AAC1B,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClG,SAAS;AACT,QAAQ,KAAK,GAAG,EAAE;AAClB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpH,SAAS;AACT,QAAQ,KAAK,OAAO,EAAE;AACtB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpH,SAAS;AACT,QAAQ,KAAK,GAAG,EAAE;AAClB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACtI,SAAS;AACT,QAAQ,KAAK,MAAM,EAAE;AACrB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1H,SAAS;AACT,QAAQ,KAAK,UAAU,EAAE;AACzB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtG,SAAS;AACT,QAAQ,KAAK,QAAQ,EAAE;AACvB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxH,SAAS;AACT,QAAQ,KAAK,QAAQ,EAAE;AACvB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxH,SAAS;AACT,QAAQ,KAAK,GAAG,EAAE;AAClB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9G,SAAS;AACT,QAAQ,KAAK,IAAI,EAAE;AACnB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,SAAS;AACT,QAAQ,KAAK,MAAM,EAAE;AACrB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChK,SAAS;AACT,QAAQ,KAAK,OAAO,EAAE;AACtB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9F,SAAS;AACT,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACvH,SAAS;AACT,QAAQ,KAAK,MAAM,EAAE;AACrB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACzJ,SAAS;AACT,QAAQ,KAAK,MAAM,EAAE;AACrB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9H,SAAS;AACT,QAAQ,KAAK,SAAS,EAAE;AACxB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AACpK,SAAS;AACT,QAAQ,KAAK,MAAM,EAAE;AACrB,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC;AAC3B,YAAY,OAAO,IAAI,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAClI,SAAS;AACT,QAAQ,SAAS;AACjB;AACA,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1C,AACA,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC;AAChE,SAAS;AACT,KAAK;AACL,CAAC;AACD,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5B,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE;AAC5C,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE;AAC5C,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,YAAY;AACzC,QAAQ,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;AACnC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AAC7B,QAAQ,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM;AACnD,QAAQ,CAAC,CAAC,qBAAqB,CAAC,MAAM,KAAK,CAAC,CAAC,qBAAqB,CAAC,MAAM;AACzE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE;AACjD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClD,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACnC,QAAQ,IAAI,EAAE,CAAC,YAAY,KAAK,EAAE,CAAC,YAAY;AAC/C,YAAY,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS;AACzC,YAAY,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;AACnC,YAAY,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,EAAE;AACnC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7D,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC9C,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC9C,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,YAAY,KAAK,EAAE,CAAC,YAAY,EAAE;AAC5E,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE;AACjC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE;AACtD,YAAY,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,EAAE;AACvC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS;AACT,aAAa,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,EAAE;AACjE,YAAY,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;AACvC,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,SAAS;AACT,aAAa;AACb,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAChC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;AAC/B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,QAAQ,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,QAAQ,EAAE;AAChD,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,IAAI,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AAC5B,QAAQ,IAAI,GAAG,KAAK,SAAS,EAAE;AAC/B,YAAY,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC/C,gBAAgB,OAAO,KAAK,CAAC;AAC7B,aAAa;AACb,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE;AAC/B,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;AAC7B,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;AAC/B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;AAChC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE;AAC3B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,YAAY,EAAE;AAC3C,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,QAAQ,CAAC,CAAC,IAAI;AAClB,QAAQ,KAAK,GAAG,EAAE;AAClB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,OAAO,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,QAAQ,CAAC;AACxE,SAAS;AACT,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC;AAClD,gBAAgB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACjD,SAAS;AACT,QAAQ,KAAK,WAAW,EAAE;AAC1B,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE;AAC3D,SAAS;AACT,QAAQ,KAAK,OAAO,EAAE;AACtB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,OAAO,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC3D,SAAS;AACT,QAAQ,KAAK,SAAS,EAAE;AACxB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,OAAO,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS,IAAI,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;AACnG,SAAS;AACT,QAAQ,KAAK,GAAG,EAAE;AAClB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;AAC9C,gBAAgB,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC;AACvD,gBAAgB,gBAAgB,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE;AACxE,SAAS;AACT,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,SAAS;AACT,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,SAAS;AACT,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,SAAS;AACT,QAAQ,KAAK,WAAW,EAAE;AAC1B,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,SAAS;AACT,QAAQ,KAAK,GAAG,EAAE;AAClB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE;AACzD,SAAS;AACT,QAAQ,KAAK,OAAO,EAAE;AACtB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE;AACzD,SAAS;AACT,QAAQ,KAAK,GAAG,EAAE;AAClB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC;AACrD,gBAAgB,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE;AAC3D,SAAS;AACT,QAAQ,KAAK,MAAM,EAAE;AACrB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;AAC3C,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,SAAS;AACT,QAAQ,KAAK,UAAU,EAAE;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,SAAS;AACT,QAAQ,KAAK,QAAQ,EAAE;AACvB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;AAC3C,gBAAgB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;AAC3C,SAAS;AACT,QAAQ,KAAK,QAAQ,EAAE;AACvB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;AAC3C,gBAAgB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;AAC3C,SAAS;AACT,QAAQ,KAAK,GAAG,EAAE;AAClB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACjD,SAAS;AACT,QAAQ,KAAK,IAAI,EAAE;AACnB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,OAAO,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC3D,SAAS;AACT,QAAQ,KAAK,MAAM,EAAE;AACrB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC;AACrD,gBAAgB,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC;AACzD,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,SAAS;AACT,QAAQ,KAAK,OAAO,EAAE;AACtB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,SAAS;AACT,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;AACzC,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,SAAS;AACT,QAAQ,KAAK,MAAM,EAAE;AACrB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;AACzC,gBAAgB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;AACzC,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7C,SAAS;AACT,QAAQ,KAAK,MAAM,EAAE;AACrB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;AAC3C,gBAAgB,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE;AACvD,SAAS;AACT,QAAQ,KAAK,SAAS,EAAE;AACxB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;AAC3C,gBAAgB,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC;AACrD,gBAAgB,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE;AAC3D,SAAS;AACT,QAAQ,KAAK,MAAM,EAAE;AACrB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM,EAAE,GAAG,CAAC,CAAC;AACzB,YAAY,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;AAC5D,gBAAgB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;AAC3C,gBAAgB,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE;AAC3D,SAAS;AACT,QAAQ,SAAS;AACjB,YAAY,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC;AACvC,AACA,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,CAAC;;AClgBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAY,MAAC,mBAAmB,GAAG,MAAM,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA,AAAY,MAAC,mBAAmB,GAAG,MAAM,CAAC;AAC1C;AACA,AAAY,MAAC,cAAc,GAAG,UAAU,CAAC;AACzC;AACA,AAAY,MAAC,mBAAmB,GAAG,qDAAqD,CAAC;AACzF;AACA,AAAY,MAAC,0BAA0B,GAAG,gEAAgE,CAAC;AAC3G;AACA,AAAY,MAAC,yBAAyB,GAAG,gEAAgE,CAAC;AAC1G;AACA;AACA;AACA;AACA,AAAY,MAAC,wBAAwB,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtG;AACA;AACA;AACA;AACA,AAAY,MAAC,uBAAuB,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrG;AACA;AACA;AACA;AACA,AAAY,MAAC,uBAAuB,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrG;AACA;AACA;AACA;AACA,AAAY,MAAC,kBAAkB,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAChG;AACA;AACA;AACA;AACA,AAAY,MAAC,oBAAoB,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAClG;AACA,AAAY,MAAC,8BAA8B,GAAG,IAAI,CAAC;AACnD;AACA,AAAY,MAAC,sBAAsB,GAAG,gBAAgB,CAAC;AACvD,AAAY,MAAC,wBAAwB,GAAG,kBAAkB,CAAC;AAC3D;AACA,AAAO,MAAM,cAAc,GAAG,QAAQ,CAAC;AACvC;AACA;AACA;AACA;AACA,AAAO,MAAM,iCAAiC,GAAG,MAAM,CAAC;AACxD;AACA,AAAO,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC;AACA,AAAO,MAAM,WAAW,GAAG,IAAI,CAAC;;ACtEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;AAC/B,MAAM,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;AAC/B;AACA;AACA;AACA,AAAY,MAAC,+BAA+B,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7D,IAAI,sBAAsB,EAAE,CAAC,GAAG,OAAO;AACvC,IAAI,2BAA2B,EAAE,GAAG,GAAG,OAAO;AAC9C,IAAI,eAAe,EAAE,GAAG;AACxB,IAAI,uBAAuB,EAAE,IAAI;AACjC,IAAI,mBAAmB,EAAE,EAAE,GAAG,OAAO;AACrC,CAAC,CAAC,CAAC;AACH;AACA;AACA;AACA,AAAO,SAAS,oBAAoB,CAAC,SAAS,EAAE;AAChD,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE;AACjC,QAAQ,OAAO,+BAA+B,CAAC;AAC/C,KAAK;AACL,IAAI,MAAM,eAAe,IAAI,SAAS,CAAC,eAAe,IAAI,IAAI,GAAG,SAAS,CAAC,eAAe,GAAG,+BAA+B,CAAC,eAAe,CAAC,CAAC;AAC9I,IAAI,MAAM,uBAAuB,IAAI,SAAS,CAAC,uBAAuB,IAAI,IAAI,GAAG,SAAS,CAAC,uBAAuB,GAAG,+BAA+B,CAAC,uBAAuB,CAAC,CAAC;AAC9K,IAAI,MAAM,mBAAmB,IAAI,SAAS,CAAC,mBAAmB,IAAI,IAAI,GAAG,SAAS,CAAC,mBAAmB,GAAG,+BAA+B,CAAC,mBAAmB,CAAC,CAAC;AAC9J,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC,sBAAsB,IAAI,IAAI,GAAG,SAAS,CAAC,sBAAsB,GAAG,+BAA+B,CAAC,sBAAsB,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC,2BAA2B,IAAI,IAAI,GAAG,SAAS,CAAC,2BAA2B,GAAG,+BAA+B,CAAC,2BAA2B,CAAC,EAAE,GAAG,eAAe,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,uBAAuB,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,mBAAmB,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,mBAAmB,EAAE,EAAE,CAAC;AACvkB,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AACD,AAAO,MAAM,iBAAiB,SAAS,KAAK,CAAC;AAC7C,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AACrC,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChG,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,GAAG,EAAE,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7G,QAAQ,KAAK,CAAC,CAAC,iCAAiC,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AACvF,QAAQ,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;AACxC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AACzC,QAAQ,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AACrC;AACA,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1D,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA,AAAO,MAAM,qBAAqB,SAAS,KAAK,CAAC;AACjD,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;AAC5C,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1D,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA,AAAO,MAAM,oBAAoB,SAAS,KAAK,CAAC;AAChD,IAAI,WAAW,CAAC,OAAO,GAAG,kBAAkB,EAAE;AAC9C,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;AAC3C,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1D,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA,AAAO,MAAM,0BAA0B,SAAS,KAAK,CAAC;AACtD,IAAI,WAAW,CAAC,OAAO,GAAG,+BAA+B,EAAE;AAC3D,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;AACjD,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1D,KAAK;AACL,CAAC;;AC3ED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAEA,SAAS,YAAY,GAAG;AACxB,IAAI,IAAI;AACR,QAAQ,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,OAAO,CAAC,EAAE;AACd,QAAQ,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AACxE,KAAK;AACL,CAAC;AACD,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,CAAC;AACpF,MAAM,YAAY,GAAG;AACrB,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,CAAC,CAAC;AACF,MAAM,iBAAiB,GAAG;AAC1B,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,MAAM,EAAE,EAAE;AACd,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,oBAAoB,CAAC,IAAI,EAAE;AAC3C,IAAI,QAAQ,IAAI;AAChB,QAAQ,KAAK,OAAO,CAAC;AACrB,QAAQ,KAAK,MAAM;AACnB,YAAY,OAAO,OAAO,CAAC;AAC3B,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,QAAQ,CAAC;AAC5B,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,QAAQ,CAAC;AAC5B,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,QAAQ,CAAC;AAC5B,QAAQ;AACR,YAAY,MAAM,IAAI,0BAA0B,CAAC,CAAC,qCAAqC,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnH,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,qBAAqB,CAAC,eAAe,EAAE,cAAc,EAAE;AACvE,IAAI,IAAI,eAAe,KAAK,KAAK,EAAE;AACnC,QAAQ,MAAM,IAAI,0BAA0B,CAAC,CAAC,uCAAuC,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5H,KAAK;AACL,IAAI,IAAI,cAAc,KAAK,iBAAiB,EAAE;AAC9C,QAAQ,MAAM,IAAI,0BAA0B,CAAC,CAAC,sCAAsC,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1H,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,gBAAgB,CAAC,OAAO,EAAE;AAC1C,IAAI,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,EAAE;AAC/D,QAAQ,MAAM,IAAI,0BAA0B,CAAC,CAAC,mCAAmC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACtG,KAAK;AACL,CAAC;AACD;AACA,AAAO,SAAS,gBAAgB,CAAC,IAAI,EAAE;AACvC,IAAI,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AACD;AACA,AAAO,SAAS,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;AACtC,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnB,IAAI,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACtC,CAAC;AACD;AACA,AAAO,SAAS,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE;AAC9C,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtB,IAAI,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACtC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,WAAW,CAAC,GAAG,KAAK,EAAE;AACtC,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AAC3B,QAAQ,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC;AAC9B,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACtC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;AACnB,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AAC3B,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3B,QAAQ,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC;AAC/B,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD;AACA;AACA;AACA,AAAO,SAAS,qBAAqB,CAAC,QAAQ,EAAE;AAChD,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5C,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACjC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC;AAC7C,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC1F,IAAI,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;AACjE,IAAI,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,IAAI,MAAM,YAAY,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;AACxC,QAAQ,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3C,QAAQ,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AACxD,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC9D,IAAI,OAAO,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;AAC5D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;AAClE,IAAI,MAAM,GAAG,GAAG,QAAQ,KAAK,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACnG,IAAI,OAAO,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AACtD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE;AACnD,IAAI,IAAI,UAAU,CAAC,UAAU,KAAK,CAAC,EAAE;AACrC,QAAQ,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,UAAU,CAAC,UAAU,GAAG,EAAE,KAAK,CAAC,EAAE;AAC1C,QAAQ,MAAM,IAAI,0BAA0B,CAAC,0DAA0D,CAAC,CAAC;AACzG,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,EAAE;AAC9B,QAAQ,MAAM,IAAI,0BAA0B,CAAC,uCAAuC,CAAC,CAAC;AACtF,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClD,IAAI,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/E,IAAI,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACnC,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3D,IAAI,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnC,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;AAChC,QAAQ,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;AACpE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACtB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACrC,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE;AAClD,IAAI,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,EAAE;AAC9B,QAAQ,MAAM,IAAI,0BAA0B,CAAC,uCAAuC,CAAC,CAAC;AACtF,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC;AACzB,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,KAAK,CAAC;AAChD,UAAU,SAAS;AACnB,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;AAClE,IAAI,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;AAC7C,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC7B;AACA,IAAI,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClD,IAAI,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACjC,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACrD,IAAI,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;AACjC,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;AAChC,QAAQ,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;AACpE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACtB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACrC,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD;AACA;AACA;AACA;AACA,AAAO,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;AACtC,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,EAAE;AACvC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;AACjB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;AAC3C;AACA,QAAQ,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,QAAQ,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,QAAQ,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC;AAC7B,KAAK;AACL,IAAI,OAAO,IAAI,KAAK,CAAC,CAAC;AACtB,CAAC;AACD,SAAS,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;AAC5C,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AACrC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACrB,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACvC,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD,SAAS,gBAAgB,CAAC,QAAQ,EAAE;AACpC,IAAI,QAAQ,QAAQ;AACpB,QAAQ,KAAK,EAAE;AACf,YAAY,OAAO,aAAa,CAAC;AACjC,QAAQ,KAAK,EAAE;AACf,YAAY,OAAO,aAAa,CAAC;AACjC,QAAQ,KAAK,EAAE;AACf,YAAY,OAAO,aAAa,CAAC;AACjC,QAAQ;AACR,YAAY,MAAM,IAAI,0BAA0B,CAAC,4BAA4B,CAAC,CAAC;AAC/E,KAAK;AACL,CAAC;AACD;AACA,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACjC,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnE,IAAI,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,gBAAgB,CAAC;AAC3D,CAAC;;AC1QD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AACA,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,gBAAgB,EAAE;AACrF,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACjE,QAAQ,MAAM,IAAI,qBAAqB,CAAC,qDAAqD,CAAC,CAAC;AAC/F,KAAK;AACL,IAAI,MAAM,QAAQ,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI,GAAG,MAAM,CAAC,eAAe,GAAG,mBAAmB,CAAC,CAAC;AACrG,IAAI,MAAM,QAAQ,IAAI,MAAM,CAAC,uBAAuB,IAAI,IAAI,GAAG,MAAM,CAAC,uBAAuB,GAAG,iBAAiB,CAAC,CAAC;AACnH,IAAI,MAAM,OAAO,IAAI,MAAM,CAAC,mBAAmB,IAAI,IAAI,GAAG,MAAM,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,CAAC;AAC1G,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,IAAI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAClC,IAAI,MAAM,MAAM,GAAG,MAAM;AACzB,QAAQ,OAAO,CAAC,GAAG,MAAM,EAAE;AAC3B,YAAY,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5C,YAAY,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;AACtE,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACvB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,aAAa;AACb,SAAS;AACT,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACtD,IAAI,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,IAAI,MAAM,QAAQ,GAAG,MAAM;AAC3B,QAAQ,MAAM,KAAK,GAAG,CAAC,CAAC;AACxB,QAAQ,OAAO,CAAC,GAAG,MAAM,EAAE;AAC3B,YAAY,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC3C,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACvB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,KAAK,EAAE;AACzB,YAAY,MAAM,IAAI,qBAAqB,CAAC,8CAA8C,CAAC,CAAC;AAC5F,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvC,KAAK,CAAC;AACN,IAAI,MAAM,cAAc,GAAG,CAAC,GAAG,KAAK,GAAG;AACvC,SAAS,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AAC9B,SAAS,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;AAC9B,SAAS,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;AAChC,SAAS,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;AAChC,SAAS,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAChC,IAAI,MAAM,aAAa,GAAG,MAAM;AAChC,QAAQ,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;AAC7B,QAAQ,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE;AAC5C,YAAY,MAAM,IAAI,qBAAqB,CAAC,gDAAgD,CAAC,CAAC;AAC9F,SAAS;AACT,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,QAAQ,MAAM,KAAK,GAAG,CAAC,CAAC;AACxB,QAAQ,OAAO,CAAC,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;AACnD,YAAY,CAAC,IAAI,CAAC,CAAC;AACnB,YAAY,IAAI,CAAC,GAAG,KAAK,GAAG,OAAO,EAAE;AACrC,gBAAgB,MAAM,IAAI,iBAAiB,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;AACpG,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,MAAM,EAAE;AACzB,YAAY,MAAM,IAAI,qBAAqB,CAAC,mDAAmD,CAAC,CAAC;AACjG,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9C,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,QAAQ,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;AACrC,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK;AACrD,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACzC,QAAQ,MAAM,MAAM,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjE,QAAQ,MAAM,SAAS,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACxE,QAAQ,IAAI,MAAM,IAAI,MAAM,KAAK,EAAE,EAAE;AACrC,YAAY,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;AACnD,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,OAAO,EAAE;AAChC,YAAY,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,+BAA+B,EAAE,CAAC;AAChF,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,YAAY,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/C,YAAY,IAAI,GAAG,KAAK,SAAS,EAAE;AACnC,gBAAgB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;AACxD,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;AAC/C,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,KAAK,KAAK;AAC7C,QAAQ,IAAI,KAAK,GAAG,QAAQ,EAAE;AAC9B,YAAY,MAAM,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACxF,SAAS;AACT,QAAQ,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE;AAC5B,YAAY,MAAM,IAAI,qBAAqB,CAAC,iDAAiD,CAAC,CAAC;AAC/F,SAAS;AACT,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,QAAQ,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE;AAC5B,YAAY,MAAM,IAAI,qBAAqB,CAAC,mDAAmD,CAAC,CAAC;AACjG,SAAS;AACT;AACA,QAAQ,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;AACnC,QAAQ,MAAM,EAAE,CAAC;AACjB,QAAQ,MAAM,YAAY,GAAG,EAAE,CAAC;AAChC,QAAQ,IAAI,WAAW,GAAG,KAAK,CAAC;AAChC,QAAQ,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AAClC,QAAQ,OAAO,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE;AAC/D,YAAY,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC;AACxC,YAAY,MAAM,EAAE,CAAC;AACrB,YAAY,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE;AAChC,gBAAgB,MAAM,IAAI,qBAAqB,CAAC,2CAA2C,CAAC,CAAC;AAC7F,aAAa;AACb,YAAY,CAAC,IAAI,CAAC,CAAC;AACnB,YAAY,MAAM,EAAE,CAAC;AACrB,YAAY,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;AAC9C,YAAY,MAAM,EAAE,CAAC;AACrB,YAAY,IAAI,QAAQ,KAAK,OAAO,EAAE;AACtC,gBAAgB,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC3C,aAAa;AACb,iBAAiB,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACpD,gBAAgB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1D,aAAa;AACb,iBAAiB;AACjB,gBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AACzE,aAAa;AACb,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,QAAQ,EAAE;AAChD,gBAAgB,MAAM,IAAI,iBAAiB,CAAC,yBAAyB,EAAE;AACvE,oBAAoB,QAAQ;AAC5B,oBAAoB,MAAM,EAAE,YAAY,CAAC,MAAM;AAC/C,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAC9B,YAAY,WAAW,GAAG,IAAI,CAAC;AAC/B,YAAY,CAAC,IAAI,CAAC,CAAC;AACnB,SAAS;AACT,aAAa,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE;AACjC,YAAY,CAAC,IAAI,CAAC,CAAC;AACnB,SAAS;AACT,aAAa;AACb,YAAY,MAAM,IAAI,qBAAqB,CAAC,4CAA4C,CAAC,CAAC;AAC1F,SAAS;AACT,QAAQ,MAAM,YAAY,GAAG,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC;AACnD,QAAQ,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;AACxE,QAAQ,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACnD,YAAY,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AAChE,YAAY,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5F,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,OAAO,EAAE,IAAI,EAAE,SAAS;AACpC,gBAAgB,SAAS,EAAE,YAAY,CAAC,SAAS;AACjD,gBAAgB,YAAY,EAAE,YAAY,CAAC,YAAY;AACvD,gBAAgB,UAAU;AAC1B,gBAAgB,QAAQ,EAAE,EAAE;AAC5B,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,SAAS;AACjB,YAAY,MAAM,EAAE,CAAC;AACrB,YAAY,IAAI,CAAC,IAAI,MAAM,EAAE;AAC7B,gBAAgB,MAAM,IAAI,qBAAqB,CAAC,iDAAiD,CAAC,CAAC;AACnG,aAAa;AACb,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAClC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACvB,gBAAgB,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;AAC3C,gBAAgB,MAAM,EAAE,CAAC;AACzB,gBAAgB,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE;AACpC,oBAAoB,MAAM,IAAI,qBAAqB,CAAC,wCAAwC,CAAC,CAAC;AAC9F,iBAAiB;AACjB,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACvB,gBAAgB,IAAI,OAAO,KAAK,OAAO,EAAE;AACzC,oBAAoB,MAAM,IAAI,qBAAqB,CAAC,CAAC,kDAAkD,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACpH,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;AACpC,gBAAgB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,gBAAgB,IAAI,GAAG,GAAG,CAAC,EAAE;AAC7B,oBAAoB,MAAM,IAAI,qBAAqB,CAAC,iDAAiD,CAAC,CAAC;AACvG,iBAAiB;AACjB,gBAAgB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAC5B,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAClC,gBAAgB,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,gBAAgB,IAAI,GAAG,GAAG,CAAC,EAAE;AAC7B,oBAAoB,MAAM,IAAI,qBAAqB,CAAC,4CAA4C,CAAC,CAAC;AAClG,iBAAiB;AACjB,gBAAgB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAC5B,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE;AAChC,gBAAgB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACrE,gBAAgB,SAAS;AACzB,aAAa;AACb;AACA,YAAY,MAAM,SAAS,GAAG,CAAC,CAAC;AAChC,YAAY,OAAO,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,KAAK,GAAG,EAAE;AACjD,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACvB,gBAAgB,IAAI,CAAC,GAAG,SAAS,GAAG,OAAO,EAAE;AAC7C,oBAAoB,MAAM,IAAI,iBAAiB,CAAC,qBAAqB,EAAE;AACvE,wBAAwB,QAAQ;AAChC,wBAAwB,MAAM,EAAE,CAAC,GAAG,SAAS;AAC7C,qBAAqB,CAAC,CAAC;AACvB,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,EAAE,IAAI,EAAE,SAAS;AAChC,YAAY,SAAS,EAAE,YAAY,CAAC,SAAS;AAC7C,YAAY,YAAY,EAAE,YAAY,CAAC,YAAY;AACnD,YAAY,UAAU;AACtB,YAAY,QAAQ;AACpB,SAAS,CAAC;AACV,KAAK,CAAC;AACN;AACA,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC9B,QAAQ,CAAC,IAAI,CAAC,CAAC;AACf,QAAQ,MAAM,EAAE,CAAC;AACjB,KAAK;AACL,IAAI,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;AACnD,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAC9B,YAAY,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,YAAY,IAAI,GAAG,GAAG,CAAC,EAAE;AACzB,gBAAgB,MAAM,IAAI,qBAAqB,CAAC,qDAAqD,CAAC,CAAC;AACvG,aAAa;AACb,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACxB,SAAS;AACT,aAAa;AACb,YAAY,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,YAAY,IAAI,GAAG,GAAG,CAAC,EAAE;AACzB,gBAAgB,MAAM,IAAI,qBAAqB,CAAC,iDAAiD,CAAC,CAAC;AACnG,aAAa;AACb,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACxB,SAAS;AACT,QAAQ,MAAM,EAAE,CAAC;AACjB,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,IAAI,CAAC,GAAG,MAAM,EAAE;AACpB;AACA,QAAQ,MAAM,IAAI,qBAAqB,CAAC,iDAAiD,CAAC,CAAC;AAC3F,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;;AClQD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAIA,SAAS,IAAI,GAAG;AAChB;AACA,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY;AACzB,QAAQ,IAAI;AACZ;AACA,YAAY,OAAO,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,KAAK,GAAG,CAAC;AACT,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;AACnB,CAAC;AACD,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,wBAAwB,CAAC,cAAc,EAAE,MAAM,EAAE;AACjE,IAAI,IAAI,cAAc,CAAC,UAAU,GAAG,YAAY,GAAG,CAAC,EAAE;AACtD,QAAQ,MAAM,IAAI,qBAAqB,CAAC,oCAAoC,CAAC,CAAC;AAC9E,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;AAC3G,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACjD,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACjD,IAAI,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7C;AACA,IAAI,IAAI,YAAY,KAAK,iCAAiC;AAC1D,SAAS,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;AAC1E,QAAQ,MAAM,IAAI,0BAA0B,CAAC,mGAAmG,CAAC,CAAC;AAClJ,KAAK;AACL,IAAI,IAAI,YAAY,KAAK,mBAAmB,IAAI,YAAY,KAAK,mBAAmB,EAAE;AACtF,QAAQ,MAAM,IAAI,0BAA0B,CAAC,CAAC,mCAAmC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACnI,KAAK;AACL,IAAI,IAAI,QAAQ,KAAK,cAAc,EAAE;AACrC,QAAQ,MAAM,IAAI,0BAA0B,CAAC,CAAC,4CAA4C,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACrH,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC3D,IAAI,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACzC,IAAI,IAAI,IAAI,CAAC;AACb,IAAI,IAAI;AACR,QAAQ,IAAI,GAAG,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,OAAO,GAAG,EAAE;AAChB,QAAQ,IAAI,GAAG,YAAY,qBAAqB,IAAI,GAAG,YAAY,0BAA0B,EAAE;AAC/F,YAAY,MAAM,GAAG,CAAC;AACtB,SAAS;AACT,QAAQ,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE;AACtE,YAAY,MAAM,GAAG,CAAC;AACtB,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,GAAG,GAAG,CAAC,OAAO,GAAG,kBAAkB,CAAC;AAC5E,QAAQ,MAAM,IAAI,qBAAqB,CAAC,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,mBAAmB,EAAE;AACtF;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,EAAE;AAC7C,YAAY,MAAM,IAAI,qBAAqB,CAAC,+CAA+C,CAAC,CAAC;AAC7F,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,KAAK,mBAAmB,EAAE;AACnF,YAAY,MAAM,IAAI,qBAAqB,CAAC,+CAA+C,CAAC,CAAC;AAC7F,SAAS;AACT,KAAK;AACL,IAAI,MAAM,SAAS,GAAGE,WAAS,CAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;AACtE,IAAI,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAC;AAC1F,IAAI,MAAM,eAAe,GAAGA,WAAS,CAAC,IAAI,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAC;AAClF,IAAI,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAC5C,IAAI,MAAM,aAAa,GAAG,eAAe,KAAK,SAAS,GAAG,SAAS,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;AAC1G,IAAI,MAAM,oBAAoB,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;AAC5E,IAAI,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC;AAC5D,CAAC;AACD,SAAS,YAAY,CAAC,EAAE,EAAE;AAC1B,IAAI,MAAM,QAAQ,GAAG,sBAAsB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AAC5D,IAAI,MAAM,SAAS,GAAG,sBAAsB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AAC9D,IAAI,MAAM,OAAO,GAAG,sBAAsB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC1D,IAAI,MAAM,QAAQ,GAAG,sBAAsB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;AAC5D,IAAI,MAAM,eAAe,GAAG,WAAW,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAC/D,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;AAC7D,IAAI,MAAM,gBAAgB,GAAG,WAAW,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;AAC9D,IAAI,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACzD,IAAI,qBAAqB,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;AAC3D,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC9B,IAAI,MAAM,aAAa,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AACjE,IAAI,IAAI,SAAS,KAAK,EAAE,EAAE;AAC1B,QAAQ,MAAM,IAAI,0BAA0B,CAAC,CAAC,iCAAiC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACxH,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,UAAU,KAAK,QAAQ,EAAE;AAC3C,QAAQ,MAAM,IAAI,qBAAqB,CAAC,kDAAkD,CAAC,CAAC;AAC5F,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,QAAQ;AAChB,QAAQ,SAAS;AACjB,QAAQ,OAAO;AACf,QAAQ,QAAQ;AAChB,QAAQ,eAAe;AACvB,QAAQ,cAAc;AACtB,QAAQ,aAAa;AACrB,QAAQ,SAAS;AACjB,KAAK,CAAC;AACN,CAAC;AACD,SAAS,kBAAkB,CAAC,EAAE,EAAE;AAChC,IAAI,OAAO;AACX,QAAQ,gBAAgB,EAAE,iBAAiB,CAAC,EAAE,EAAE,kBAAkB,CAAC;AACnE,QAAQ,kBAAkB,EAAE,iBAAiB,CAAC,EAAE,EAAE,oBAAoB,CAAC;AACvE,KAAK,CAAC;AACN,CAAC;AACD,SAAS,yBAAyB,CAAC,eAAe,EAAE;AACpD,IAAI,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC;AACxH,IAAI,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,QAAQ,MAAM,IAAI,qBAAqB,CAAC,oCAAoC,CAAC,CAAC;AAC9E,KAAK;AACL,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE;AACnC,QAAQ,MAAM,GAAG,GAAGC,SAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACvC,QAAQ,IAAI,GAAG,KAAK,0BAA0B,EAAE;AAChD,YAAY,UAAU,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC9C,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,YAAY,MAAM,IAAI,0BAA0B,CAAC,uEAAuE,CAAC,CAAC;AAC1H,SAAS;AACT,KAAK;AACL,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE;AAClC,QAAQ,MAAM,IAAI,0BAA0B,CAAC,uDAAuD,CAAC,CAAC;AACtG,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,yBAAyB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACzE,IAAI,IAAI,SAAS,GAAG,cAAc,EAAE;AACpC,QAAQ,MAAM,IAAI,qBAAqB,CAAC,CAAC,6CAA6C,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnH,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACpE,IAAI,MAAM,SAAS,GAAG,sBAAsB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACtE,IAAI,MAAM,OAAO,GAAG,sBAAsB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAClE,IAAI,MAAM,QAAQ,GAAG,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACpE,IAAI,MAAM,eAAe,GAAG,WAAW,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AACvE,IAAI,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;AACrE,IAAI,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AACtE,IAAI,MAAM,SAAS,GAAG,iBAAiB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACjE,IAAI,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC;AACnG,IAAI,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,UAAU,EAAE,4BAA4B,CAAC,CAAC;AACnG,IAAI,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;AACjF,IAAI,qBAAqB,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;AAC3D,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC9B,IAAI,MAAM,aAAa,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AACjE,IAAI,IAAI,SAAS,KAAK,EAAE,EAAE;AAC1B,QAAQ,MAAM,IAAI,0BAA0B,CAAC,CAAC,6CAA6C,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAClH,KAAK;AACL,IAAI,IAAI,SAAS,CAAC,UAAU,KAAK,QAAQ,EAAE;AAC3C,QAAQ,MAAM,IAAI,qBAAqB,CAAC,uDAAuD,CAAC,CAAC;AACjG,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,SAAS;AACjB,QAAQ,QAAQ;AAChB,QAAQ,SAAS;AACjB,QAAQ,OAAO;AACf,QAAQ,QAAQ;AAChB,QAAQ,eAAe;AACvB,QAAQ,cAAc;AACtB,QAAQ,aAAa;AACrB,QAAQ,SAAS;AACjB,QAAQ,0BAA0B;AAClC,QAAQ,0BAA0B;AAClC,QAAQ,iBAAiB;AACzB,KAAK,CAAC;AACN,CAAC;AACD,SAAS,gBAAgB,CAAC,YAAY,EAAE;AACxC,IAAI,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,QAAQ,EAAE;AAC/C,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AACtC,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,cAAc,EAAE;AAChD,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;AACD,SAASD,WAAS,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE;AAC1C,IAAI,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;AACxD,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE;AAC1B,QAAQ,MAAM,IAAI,qBAAqB,CAAC,CAAC,+BAA+B,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACvF,KAAK;AACL,IAAI,OAAO,EAAE,CAAC;AACd,CAAC;AACD,SAAS,iBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE;AAClD,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE;AACzC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AACtC,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,KAAK,KAAK,CAAC,YAAY,KAAK,EAAE,IAAI,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,EAAE;AACvG,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE;AACzC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;AACvE,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;AACD,SAASC,SAAO,CAAC,EAAE,EAAE,SAAS,EAAE;AAChC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;AACnC,QAAQ,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE;AACvC,YAAY,OAAO,CAAC,CAAC,KAAK,CAAC;AAC3B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;AACD,SAAS,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE;AACpC,IAAI,MAAM,CAAC,GAAGA,SAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACrC,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,QAAQ,MAAM,IAAI,qBAAqB,CAAC,CAAC,iCAAiC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACzF,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,sBAAsB,CAAC,EAAE,EAAE,SAAS,EAAE;AAC/C,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC3C,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACvC,QAAQ,MAAM,IAAI,qBAAqB,CAAC,CAAC,yBAAyB,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5F,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,yBAAyB,CAAC,EAAE,EAAE,SAAS,EAAE;AAClD,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC3C,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AACtC,QAAQ,MAAM,IAAI,qBAAqB,CAAC,CAAC,yBAAyB,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5F,KAAK;AACL,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD,SAAS,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE;AAC1C,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC3C,IAAI,IAAI;AACR,QAAQ,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,OAAO,EAAE,EAAE;AACf,QAAQ,MAAM,IAAI,qBAAqB,CAAC,CAAC,yBAAyB,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACrG,KAAK;AACL,CAAC;AACD,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjD,IAAI,IAAI,OAAO,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE;AAC3C,QAAQ,MAAM,GAAG,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC5C,QAAQ,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC/C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7D,CAAC;AACD,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,IAAI,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;;AC5QD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAGA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE;AAC3D,IAAI,MAAM,aAAa,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;AAC1D,IAAI,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;AAC5F;AACA,IAAI,MAAM,gBAAgB,GAAG,cAAc,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,wBAAwB,EAAE,OAAO,CAAC,CAAC;AACnI,IAAI,MAAM,eAAe,GAAG,aAAa,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC1F,IAAI,MAAM,mBAAmB,GAAG,aAAa,CAAC,gBAAgB,EAAE,eAAe,EAAE,SAAS,CAAC,0BAA0B,CAAC,CAAC;AACvH;AACA,IAAI,IAAI,mBAAmB,CAAC,UAAU,GAAG,SAAS,CAAC,QAAQ,EAAE;AAC7D,QAAQ,MAAM,IAAI,oBAAoB,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC9E,IAAI,MAAM,oBAAoB,GAAG,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACzE;AACA,IAAI,MAAM,eAAe,GAAG,cAAc,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC;AACjI,IAAI,MAAM,cAAc,GAAG,aAAa,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACzF,IAAI,MAAM,qBAAqB,GAAG,aAAa,CAAC,eAAe,EAAE,cAAc,EAAE,SAAS,CAAC,0BAA0B,CAAC,CAAC;AACvH,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,oBAAoB,CAAC,UAAU,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC;AAC9G,IAAI,IAAI,WAAW,IAAI,CAAC,EAAE;AAC1B,QAAQ,MAAM,IAAI,oBAAoB,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE;AACzH,QAAQ,MAAM,IAAI,oBAAoB,EAAE,CAAC;AACzC,KAAK;AACL;AACA,IAAI,MAAM,eAAe,GAAG,cAAc,CAAC,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC;AACjI,IAAI,MAAM,cAAc,GAAG,aAAa,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACzF,IAAI,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,EAAE,cAAc,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;AACrG,IAAI,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;AAC/B,IAAI,IAAI,YAAY,CAAC,UAAU,GAAG,MAAM,EAAE;AAC1C,QAAQ,MAAM,IAAI,oBAAoB,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;;ACzDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAEA;AACA,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1F;AACA,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B;AACA,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,UAAU,GAAG,UAAU,CAAC;AAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,OAAO,GAAG,UAAU,CAAC;AAC3B,MAAM,OAAO,GAAG,UAAU,CAAC;AAC3B,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,eAAe,GAAG,KAAK,CAAC;AAC9B,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,oBAAoB,CAAC,KAAK,EAAE;AAC5C,IAAI,IAAI,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE;AAChC,QAAQ,MAAM,IAAI,qBAAqB,CAAC,6CAA6C,CAAC,CAAC;AACvF,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvD,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAC,CAAC,EAAE;AAC/C,YAAY,MAAM,IAAI,qBAAqB,CAAC,0CAA0C,CAAC,CAAC;AACxF,SAAS;AACT,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAChF,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACjD,IAAI,IAAI,WAAW,KAAK,gBAAgB,IAAI,WAAW,KAAK,iBAAiB,EAAE;AAC/E,QAAQ,MAAM,IAAI,qBAAqB,CAAC,6BAA6B,CAAC,CAAC;AACvE,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,CAAC,IAAI,WAAW,CAAC;AACxC,IAAI,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACrD,IAAI,IAAI,eAAe,KAAK,CAAC,EAAE;AAC/B;AACA,QAAQ,MAAM,IAAI,qBAAqB,CAAC,kCAAkC,CAAC,CAAC;AAC5E,KAAK;AACL,IAAI,MAAM,cAAc,GAAG,CAAC,IAAI,eAAe,CAAC;AAChD,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACtD,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACpD,IAAI,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACxD,IAAI,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACxD,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACpD,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACtD,IAAI,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AACtD,IAAI,IAAI,cAAc,GAAG,eAAe,EAAE;AAC1C,QAAQ,MAAM,IAAI,qBAAqB,CAAC,+BAA+B,CAAC,CAAC;AACzE,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;AACrB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;AAClC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACtD,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;AAC/B,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,SAAS;AACT,KAAK;AACL,IAAI,IAAI,SAAS,GAAG,gBAAgB,CAAC;AACrC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAQ,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,QAAQ,EAAE;AAChE,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3D,QAAQ,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC/C,QAAQ,MAAM,gBAAgB,GAAG,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;AACpD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE;AACnD,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9D,YAAY,IAAI,IAAI,KAAK,QAAQ,EAAE;AACnC,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,aAAa;AACb,SAAS;AACT,QAAQ,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,gBAAgB,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc,EAAE;AACvC,QAAQ,MAAM,IAAI,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;AAC7C,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE;AACnC,YAAY,MAAM,IAAI,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACzD,QAAQ,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC/C,QAAQ,MAAM,OAAO,GAAG,UAAU,GAAG,CAAC,CAAC;AACvC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3D,SAAS;AACT,KAAK;AACL,IAAI,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAC9F,IAAI,IAAI,cAAc,CAAC,UAAU,GAAG,cAAc,EAAE;AACpD,QAAQ,MAAM,IAAI,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;AAClE,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,GAAG,cAAc,CAAC,EAAE,eAAe,CAAC,CAAC;AACzG,IAAI,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;AAC9G,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;AACzC,QAAQ,MAAM,IAAI,GAAG,CAAC,GAAG,cAAc,CAAC;AACxC,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9D;AACA,QAAQ,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACjF,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC;AACtB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACtD,YAAY,IAAI,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/E,SAAS;AACT,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;AACvD,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AAC3D,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAChE;AACA,QAAQ,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AAClE,QAAQ,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;AACnE,QAAQ,IAAI,cAAc,KAAK,CAAC,EAAE;AAClC,YAAY,MAAM,IAAI,qBAAqB,CAAC,yCAAyC,CAAC,CAAC;AACvF,SAAS;AACT,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,YAAY,IAAI;AAChB,YAAY,UAAU;AACtB,YAAY,WAAW;AACvB,YAAY,UAAU,EAAE,aAAa;AACrC,YAAY,OAAO;AACnB,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;AACrD,QAAQ,MAAM,IAAI,qBAAqB,CAAC,6BAA6B,CAAC,CAAC;AACvE,KAAK;AACL;AACA,IAAI,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,IAAI,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AAC9B,IAAI,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK;AACzB,QAAQ,IAAI,EAAE,GAAG,UAAU,IAAI,EAAE,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACxE,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACxB,QAAQ,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,KAAK,SAAS,EAAE;AAC7B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,cAAc,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACvE,QAAQ,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,GAAG,cAAc,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;AACxE,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,eAAe;AAC7C,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC;AACpB,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,CAAC,kBAAkB,CAAC,CAAC,UAAU,KAAK,CAAC,aAAa;AAC/E,YAAY,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC5B,SAAS;AACT,KAAK,CAAC;AACN,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvB,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACxD,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACzD,IAAI,IAAI,SAAS,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC3D,QAAQ,MAAM,IAAI,qBAAqB,CAAC,sEAAsE,CAAC,CAAC;AAChH,KAAK;AACL,IAAI,IAAI,OAAO,CAAC;AAChB,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK;AAClC,QAAQ,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;AACpC,YAAY,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,UAAU,GAAG,gBAAgB,IAAI,KAAK,KAAK,IAAI,EAAE;AACnE,YAAY,IAAI,OAAO,KAAK,SAAS,EAAE;AACvC,gBAAgB,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC;AAC5G;AACA,gBAAgB,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAClG,aAAa;AACb,YAAY,IAAI,UAAU,KAAK,SAAS,EAAE;AAC1C,gBAAgB,MAAM,IAAI,qBAAqB,CAAC,gCAAgC,CAAC,CAAC;AAClF,aAAa;AACb,YAAY,OAAO,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAC3G,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAC5F,KAAK,CAAC;AACN,IAAI,OAAO;AACX,QAAQ,cAAc,EAAE,UAAU,CAAC,SAAS,CAAC;AAC7C,QAAQ,gBAAgB,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC9C,KAAK,CAAC;AACN,CAAC;AACD,SAAS,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE;AAC/C;AACA;AACA;AACA,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC,IAAI,UAAU,CAAC;AAC1C,CAAC;AACD,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;AAC5C,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE;AACxE,QAAQ,MAAM,IAAI,qBAAqB,CAAC,6CAA6C,CAAC,CAAC;AACvF,KAAK;AACL,CAAC;AACD,SAAS,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE;AACxE,IAAI,IAAI,WAAW,KAAK,UAAU,IAAI,WAAW,KAAK,QAAQ,EAAE;AAChE,QAAQ,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,MAAM,GAAG,WAAW,CAAC;AAC7B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AACpC,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,QAAQ,EAAE;AACzD,QAAQ,IAAI,KAAK,EAAE,GAAG,QAAQ,EAAE;AAChC,YAAY,MAAM,IAAI,qBAAqB,CAAC,sCAAsC,CAAC,CAAC;AACpF,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO,EAAE;AACtD,YAAY,MAAM,IAAI,qBAAqB,CAAC,wCAAwC,CAAC,CAAC;AACtF,SAAS;AACT,QAAQ,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;AAChD;AACA,YAAY,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC/D,YAAY,IAAI,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE;AAC5F,gBAAgB,MAAM,IAAI,qBAAqB,CAAC,mCAAmC,CAAC,CAAC;AACrF,aAAa;AACb,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACxD,QAAQ,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;AACpF,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC;AACrE,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AAC5D,QAAQ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,QAAQ,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC;AAClC,QAAQ,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,IAAI,QAAQ,EAAE;AACzD,YAAY,MAAM;AAClB,SAAS;AACT,QAAQ,IAAI,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;AAClC,YAAY,MAAM,IAAI,qBAAqB,CAAC,mCAAmC,CAAC,CAAC;AACjF,SAAS;AACT,QAAQ,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AACvC,QAAQ,IAAI,UAAU,KAAK,SAAS,EAAE;AACtC,YAAY,MAAM,IAAI,qBAAqB,CAAC,mCAAmC,CAAC,CAAC;AACjF,SAAS;AACT,QAAQ,MAAM,GAAG,UAAU,CAAC;AAC5B,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE;AAChC,QAAQ,IAAI,GAAG,CAAC,UAAU,GAAG,QAAQ,EAAE;AACvC,YAAY,MAAM,IAAI,qBAAqB,CAAC,oCAAoC,CAAC,CAAC;AAClF,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD,SAAS,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE;AAC3F,IAAI,IAAI,kBAAkB,KAAK,CAAC,IAAI,kBAAkB,KAAK,UAAU,EAAE;AACvE,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,GAAG,UAAU,CAAC,CAAC;AAC/G,IAAI,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AAC9E,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC;AACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;AACvD,QAAQ,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC;AACD,SAAS,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE;AACrF,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,MAAM,GAAG,WAAW,CAAC;AAC7B,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AACxC,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,GAAG,UAAU,EAAE;AAC/E,QAAQ,IAAI,KAAK,EAAE,GAAG,QAAQ,EAAE;AAChC,YAAY,MAAM,IAAI,qBAAqB,CAAC,2CAA2C,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC;AAC/C,QAAQ,IAAI,MAAM,IAAI,UAAU,CAAC,UAAU,EAAE;AAC7C,YAAY,MAAM,IAAI,qBAAqB,CAAC,8BAA8B,CAAC,CAAC;AAC5E,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC,CAAC;AAClG,QAAQ,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAChE,QAAQ,KAAK,IAAI,IAAI,CAAC;AACtB,QAAQ,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;AACtC,YAAY,MAAM,IAAI,qBAAqB,CAAC,kCAAkC,CAAC,CAAC;AAChF,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACzC,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE;AACpC,YAAY,MAAM,IAAI,qBAAqB,CAAC,kCAAkC,CAAC,CAAC;AAChF,SAAS;AACT,QAAQ,MAAM,GAAG,QAAQ,CAAC;AAC1B,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,IAAI,IAAI,GAAG,CAAC,UAAU,GAAG,UAAU,EAAE;AACrC,QAAQ,MAAM,IAAI,qBAAqB,CAAC,yCAAyC,CAAC,CAAC;AACnF,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC;AACD,SAAS,MAAM,CAAC,MAAM,EAAE;AACxB,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AAC5B,QAAQ,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC;AAC9B,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AACtC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;AACnB,IAAI,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;AAC5B,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3B,QAAQ,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC;AAC/B,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;;ACzTD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAGA,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,6BAA6B,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE;AAC3G,IAAI,IAAI,gBAAgB,CAAC,UAAU,GAAG,iBAAiB,EAAE;AACzD,QAAQ,MAAM,IAAI,qBAAqB,CAAC,sCAAsC,CAAC,CAAC;AAChF,KAAK;AACL;AACA,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,2BAA2B,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAClG,IAAI,IAAI,gBAAgB,CAAC,UAAU;AACnC,QAAQ,SAAS,GAAG,iBAAiB,GAAG,8BAA8B,EAAE;AACxE,QAAQ,MAAM,IAAI,iBAAiB,CAAC,6BAA6B,EAAE;AACnE,YAAY,MAAM,EAAE,gBAAgB,CAAC,UAAU;AAC/C,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACjH;AACA,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAClD,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnD,IAAI,IAAI,cAAc,KAAK,CAAC,EAAE;AAC9B,QAAQ,MAAM,IAAI,iBAAiB,CAAC,6BAA6B,EAAE;AACnE,YAAY,MAAM,EAAE,MAAM,CAAC,gBAAgB;AAC3C,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,aAAa,CAAC;AACrC,IAAI,IAAI,UAAU,GAAG,MAAM,CAAC,2BAA2B,EAAE;AACzD,QAAQ,MAAM,IAAI,iBAAiB,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AAC3F,KAAK;AACL,IAAI,IAAI,UAAU,GAAG,MAAM,CAAC,sBAAsB,EAAE;AACpD,QAAQ,MAAM,IAAI,iBAAiB,CAAC,wBAAwB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AACtF,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AACpE,IAAI,IAAI,UAAU,CAAC,UAAU,KAAK,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE;AACvD,QAAQ,MAAM,IAAI,qBAAqB,CAAC,mDAAmD,CAAC,CAAC;AAC7F,KAAK;AACL;AACA,IAAI,IAAI,aAAa,KAAK,SAAS,EAAE;AACrC,QAAQ,mBAAmB,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AACjF,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAClE,IAAI,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;AACvC,QAAQ,MAAM,IAAI,qBAAqB,CAAC,uDAAuD,CAAC,CAAC;AACjG,KAAK;AACL,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACzC,CAAC;AACD,SAAS,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE;AACzD,IAAI,MAAM,WAAW,GAAG,8BAA8B,CAAC;AACvD,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AACxC,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACtD,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC;AACzB,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC;AACnB,IAAI,OAAO,MAAM,GAAG,UAAU,CAAC,UAAU,EAAE;AAC3C,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC;AACzD;AACA,QAAQ,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;AAC7E;AACA;AACA;AACA,QAAQ,IAAI,UAAU,GAAG,SAAS,KAAK,CAAC,EAAE;AAC1C;AACA,YAAY,MAAM,IAAI,qBAAqB,CAAC,+CAA+C,CAAC,CAAC;AAC7F,SAAS;AACT,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;AAC3E,QAAQ,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;AACvD,QAAQ,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAChG,QAAQ,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;AAClE,QAAQ,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACtC,QAAQ,SAAS,IAAI,SAAS,CAAC,UAAU,CAAC;AAC1C,QAAQ,MAAM,IAAI,UAAU,CAAC;AAC7B,QAAQ,YAAY,IAAI,CAAC,CAAC;AAC1B,KAAK;AACL,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACtC,CAAC;AACD,SAAS,eAAe,CAAC,YAAY,EAAE;AACvC,IAAI,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;AACpE,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE;AAClF,IAAI,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;AAC5D,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,aAAa,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;AAC7F,IAAI,MAAM,gBAAgB,GAAG,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;AACjG;AACA,IAAI,MAAM,SAAS,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;AACtD,IAAI,IAAI,gBAAgB,CAAC,UAAU,GAAG,SAAS,EAAE;AACjD,QAAQ,MAAM,IAAI,oBAAoB,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC5D,IAAI,MAAM,WAAW,GAAG,aAAa,CAAC,aAAa,EAAE,SAAS,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;AACjG,IAAI,MAAM,kBAAkB,GAAG,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;AACvG,IAAI,IAAI,kBAAkB,CAAC,UAAU,GAAG,SAAS,EAAE;AACnD,QAAQ,MAAM,IAAI,oBAAoB,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACnE,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAC3E,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,EAAE;AAC3E,QAAQ,MAAM,IAAI,oBAAoB,EAAE,CAAC;AACzC,KAAK;AACL,CAAC;;ACzID;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,GAAG,CAACC,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AACzF,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACvJ,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AACF,AAKA;AACA,MAAMC,mBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,kBAAkB,CAAC,KAAK,EAAE;AAC1C,IAAI,MAAM,KAAK,GAAG,KAAK,YAAY,UAAU,GAAG,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9E,IAAI,IAAI,KAAK,CAAC,UAAU,GAAGA,mBAAiB,CAAC,MAAM,EAAE;AACrD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAGA,mBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvD,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAKA,mBAAiB,CAAC,CAAC,CAAC,EAAE;AAC/C,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,+BAA+B,EAAE;AACnG,IAAI,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa;AACxD,QAAQ,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACtD,QAAQ,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACpD,QAAQ,MAAM,IAAI,GAAG,wBAAwB,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAChF,QAAQ,MAAM,SAAS,GAAG,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACrF,QAAQ,OAAO,6BAA6B,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC9H,KAAK,CAAC,CAAC;AACP,CAAC;;AChED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAY,MAAC,0BAA0B,GAAG,+BAA+B;;;;"}
1
+ {"version":3,"file":"ej2-office-common.es2015.js","sources":["../src/es6/office-common/features/mathml/constants.js","../src/es6/office-common/features/mathml/office-math/enums.js","../src/es6/office-common/features/mathml/office-math/property-store.js","../src/es6/office-common/features/mathml/office-math/owner-holder.js","../src/es6/office-common/features/mathml/office-math/xml-equal.js","../src/es6/office-common/features/mathml/office-math/basic.js","../src/es6/office-common/features/mathml/office-math/collection.js","../src/es6/office-common/features/mathml/office-math/keys.js","../src/es6/office-common/features/mathml/office-math/break.js","../src/es6/office-common/features/mathml/office-math/format.js","../src/es6/office-common/features/mathml/office-math/function-base.js","../src/es6/office-common/features/mathml/office-math/run-element.js","../src/es6/office-common/features/mathml/office-math/math-collection.js","../src/es6/office-common/features/mathml/office-math/functions-multi.js","../src/es6/office-common/features/mathml/office-math/matrix-row.js","../src/es6/office-common/features/mathml/office-math/matrix-column.js","../src/es6/office-common/features/mathml/office-math/matrix-collections.js","../src/es6/office-common/features/mathml/office-math/matrix.js","../src/es6/office-common/features/mathml/office-math/function-collection.js","../src/es6/office-common/features/mathml/office-math/office-math.js","../src/es6/office-common/features/mathml/office-math/functions-basic.js","../src/es6/office-common/features/mathml/latex/latex-symbols.js","../src/es6/office-common/features/mathml/latex/latex-parser.js","../src/es6/office-common/features/mathml/latex/latex-generator.js","../src/es6/office-common/features/mathml/office-math/math-paragraph.js","../src/es6/office-common/features/mathml/office-math/unknown-element.js","../src/es6/office-common/features/mathml/office-math/math-traversal.js","../src/es6/office-common/features/mathml/office-math/math-clone.js","../src/es6/office-common/features/mathml/office-math/math-equality.js","../src/es6/office-common/features/mathml/openxml.js","../src/es6/office-common/features/mathml/parse/office-math-properties.js","../src/es6/office-common/features/mathml/parse/office-math-parser.js","../src/es6/office-common/features/mathml/errors.js","../src/es6/office-common/features/mathml/serialize/omml-writer.js","../src/es6/office-common/features/mathml/serialize/office-math-properties-writer.js","../src/es6/office-common/features/mathml/serialize/office-math-serializer.js","../src/es6/office-common/features/mathml/model/enums.js","../src/es6/office-common/features/mathml/math-settings.js"],"sourcesContent":["/**\n * Cited Office Math Markup Language (OMML) constants.\n *\n * Sources:\n * - ECMA-376 Part 1 §22.1 (Office Math)\n * - ECMA-376 Part 4 Annex A.8.1 `shared-math.xsd`\n * - ECMA-376 Part 1 WordprocessingML transitional namespace\n * - W3C XML 1.0 `xml:` namespace (xml:space on m:t)\n */\n/**\n * Office Math namespace URI (`m:`).\n *\n * Source: ECMA-376-1 §22.1 /\n * `http://schemas.openxmlformats.org/officeDocument/2006/math`.\n *\n * @public\n */\nexport const MATH_NAMESPACE = 'http://schemas.openxmlformats.org/officeDocument/2006/math';\n/**\n * Preferred math prefix candidates for save-scoped registry.\n * First unused candidate wins: `m`, then `m1`, `m2`, …\n *\n * Source: mathml-spec §1.9 / §9.3.\n *\n * @public\n */\nexport const MATH_PREFIX_FALLBACKS = ['m', 'm1', 'm2', 'm3', 'm4', 'm5'];\n/**\n * WordprocessingML transitional namespace (`w:`).\n *\n * Used when bridging `w:rPr` / run content under `m:r` and `m:ctrlPr`\n * (ECMA-376-4 Annex A.8.1 `CT_R` / `CT_CtrlPr`).\n *\n * Source: ECMA-376-1 —\n * `http://schemas.openxmlformats.org/wordprocessingml/2006/main`.\n *\n * @public\n */\nexport const WML_TRANSITIONAL_NAMESPACE = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main';\n/**\n * XML namespace used by `xml:space` on `m:t` (same policy as `w:t`).\n *\n * Source: W3C XML 1.0 — `http://www.w3.org/XML/1998/namespace`.\n *\n * @public\n */\nexport const XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace';\n","/**\n * Office Math authoring enumerations.\n *\n * Values mirror the Compression `Syncfusion.Office` Math enums so scratch-level\n * authoring behaves identically to DocIO. OMML token mapping lives in the\n * parser/serializer.\n */\n/** Math paragraph justification. @public */\nexport var MathJustification;\n(function (MathJustification) {\n MathJustification[MathJustification[\"CenterGroup\"] = 0] = \"CenterGroup\";\n MathJustification[MathJustification[\"Center\"] = 1] = \"Center\";\n MathJustification[MathJustification[\"Left\"] = 2] = \"Left\";\n MathJustification[MathJustification[\"Right\"] = 3] = \"Right\";\n})(MathJustification || (MathJustification = {}));\n/** Math script (font family class) of a run. @public */\nexport var MathFontType;\n(function (MathFontType) {\n MathFontType[MathFontType[\"DoubleStruck\"] = 0] = \"DoubleStruck\";\n MathFontType[MathFontType[\"Fraktur\"] = 1] = \"Fraktur\";\n MathFontType[MathFontType[\"Monospace\"] = 2] = \"Monospace\";\n MathFontType[MathFontType[\"Roman\"] = 3] = \"Roman\";\n MathFontType[MathFontType[\"SansSerif\"] = 4] = \"SansSerif\";\n MathFontType[MathFontType[\"Script\"] = 5] = \"Script\";\n})(MathFontType || (MathFontType = {}));\n/** Math run style. @public */\nexport var MathStyleType;\n(function (MathStyleType) {\n MathStyleType[MathStyleType[\"Italic\"] = 0] = \"Italic\";\n MathStyleType[MathStyleType[\"BoldItalic\"] = 1] = \"BoldItalic\";\n MathStyleType[MathStyleType[\"Bold\"] = 2] = \"Bold\";\n MathStyleType[MathStyleType[\"Regular\"] = 3] = \"Regular\";\n})(MathStyleType || (MathStyleType = {}));\n/** Identifies the concrete Math function created by the function factory. @public */\nexport var MathFunctionType;\n(function (MathFunctionType) {\n /** Unrecognized `m:*` element preserved verbatim; never created by the factory. */\n MathFunctionType[MathFunctionType[\"Unknown\"] = 0] = \"Unknown\";\n MathFunctionType[MathFunctionType[\"Accent\"] = 1] = \"Accent\";\n MathFunctionType[MathFunctionType[\"Bar\"] = 2] = \"Bar\";\n MathFunctionType[MathFunctionType[\"BorderBox\"] = 3] = \"BorderBox\";\n MathFunctionType[MathFunctionType[\"Box\"] = 4] = \"Box\";\n MathFunctionType[MathFunctionType[\"Delimiter\"] = 5] = \"Delimiter\";\n MathFunctionType[MathFunctionType[\"EquationArray\"] = 6] = \"EquationArray\";\n MathFunctionType[MathFunctionType[\"Fraction\"] = 7] = \"Fraction\";\n MathFunctionType[MathFunctionType[\"Function\"] = 8] = \"Function\";\n MathFunctionType[MathFunctionType[\"GroupCharacter\"] = 9] = \"GroupCharacter\";\n MathFunctionType[MathFunctionType[\"Limit\"] = 10] = \"Limit\";\n MathFunctionType[MathFunctionType[\"Matrix\"] = 11] = \"Matrix\";\n MathFunctionType[MathFunctionType[\"NArray\"] = 12] = \"NArray\";\n MathFunctionType[MathFunctionType[\"Phantom\"] = 13] = \"Phantom\";\n MathFunctionType[MathFunctionType[\"Radical\"] = 14] = \"Radical\";\n MathFunctionType[MathFunctionType[\"LeftSubSuperscript\"] = 15] = \"LeftSubSuperscript\";\n MathFunctionType[MathFunctionType[\"SubSuperscript\"] = 16] = \"SubSuperscript\";\n MathFunctionType[MathFunctionType[\"RightSubSuperscript\"] = 17] = \"RightSubSuperscript\";\n MathFunctionType[MathFunctionType[\"RunElement\"] = 18] = \"RunElement\";\n})(MathFunctionType || (MathFunctionType = {}));\n/** Delimiter shape. @public */\nexport var MathDelimiterShapeType;\n(function (MathDelimiterShapeType) {\n MathDelimiterShapeType[MathDelimiterShapeType[\"Centered\"] = 0] = \"Centered\";\n MathDelimiterShapeType[MathDelimiterShapeType[\"Match\"] = 1] = \"Match\";\n})(MathDelimiterShapeType || (MathDelimiterShapeType = {}));\n/** Fraction type. @public */\nexport var MathFractionType;\n(function (MathFractionType) {\n MathFractionType[MathFractionType[\"NormalFractionBar\"] = 0] = \"NormalFractionBar\";\n MathFractionType[MathFractionType[\"NoFractionBar\"] = 1] = \"NoFractionBar\";\n MathFractionType[MathFractionType[\"SkewedFractionBar\"] = 2] = \"SkewedFractionBar\";\n MathFractionType[MathFractionType[\"FractionInline\"] = 3] = \"FractionInline\";\n})(MathFractionType || (MathFractionType = {}));\n/** Horizontal alignment of a matrix column. @public */\nexport var MathHorizontalAlignment;\n(function (MathHorizontalAlignment) {\n MathHorizontalAlignment[MathHorizontalAlignment[\"Center\"] = 0] = \"Center\";\n MathHorizontalAlignment[MathHorizontalAlignment[\"Left\"] = 1] = \"Left\";\n MathHorizontalAlignment[MathHorizontalAlignment[\"Right\"] = 2] = \"Right\";\n})(MathHorizontalAlignment || (MathHorizontalAlignment = {}));\n/** Vertical alignment of a matrix or equation array. @public */\nexport var MathVerticalAlignment;\n(function (MathVerticalAlignment) {\n MathVerticalAlignment[MathVerticalAlignment[\"Center\"] = 0] = \"Center\";\n MathVerticalAlignment[MathVerticalAlignment[\"Top\"] = 1] = \"Top\";\n MathVerticalAlignment[MathVerticalAlignment[\"Bottom\"] = 2] = \"Bottom\";\n})(MathVerticalAlignment || (MathVerticalAlignment = {}));\n/** Spacing rule for matrix and equation array spacing. @public */\nexport var SpacingRule;\n(function (SpacingRule) {\n SpacingRule[SpacingRule[\"Single\"] = 0] = \"Single\";\n SpacingRule[SpacingRule[\"OneAndHalf\"] = 1] = \"OneAndHalf\";\n SpacingRule[SpacingRule[\"Double\"] = 2] = \"Double\";\n SpacingRule[SpacingRule[\"Exactly\"] = 3] = \"Exactly\";\n SpacingRule[SpacingRule[\"Multiple\"] = 4] = \"Multiple\";\n})(SpacingRule || (SpacingRule = {}));\n/** Script type of a single sub/superscript function. @public */\nexport var MathScriptType;\n(function (MathScriptType) {\n MathScriptType[MathScriptType[\"Superscript\"] = 0] = \"Superscript\";\n MathScriptType[MathScriptType[\"Subscript\"] = 1] = \"Subscript\";\n})(MathScriptType || (MathScriptType = {}));\n/** Limit type of a limit function. @public */\nexport var MathLimitType;\n(function (MathLimitType) {\n MathLimitType[MathLimitType[\"LowerLimit\"] = 0] = \"LowerLimit\";\n MathLimitType[MathLimitType[\"UpperLimit\"] = 1] = \"UpperLimit\";\n})(MathLimitType || (MathLimitType = {}));\n/** Em constant used by matrix spacing (half-em snapping). */\nexport const MATH_EM = 12;\n","/**\n * Explicit-value tracking for Math properties.\n *\n * Public getters return effective (Compression-compatible) defaults while the\n * store separately remembers which keys were assigned or parsed, so the\n * serializer emits only explicit values.\n */\n/**\n * Reusable keyed property store.\n *\n * @public\n */\nexport class ExplicitPropertyStore {\n constructor() {\n this._values = new Map();\n }\n /**\n * Whether the key was explicitly assigned or parsed.\n *\n * @param key\n */\n hasProperty(key) {\n return this._values.has(key);\n }\n /**\n * Returns the explicit value, or the lazily computed effective default.\n *\n * @param key\n * @param defaultValue\n */\n getProperty(key, defaultValue) {\n return this._values.has(key) ? this._values.get(key) : defaultValue();\n }\n /**\n * Assigns a value and marks it explicit, even when equal to the default.\n *\n * @param key\n * @param value\n */\n setProperty(key, value) {\n this._values.set(key, value);\n this.propertyChanged();\n }\n /**\n * Removes the explicit value so the effective default applies again.\n *\n * @param key\n */\n clearProperty(key) {\n if (this._values.delete(key)) {\n this.propertyChanged();\n }\n }\n /**\n * Whether a property was explicitly set or parsed from source.\n * Serializers use this to emit only explicit values.\n *\n * @param key\n */\n isExplicit(key) {\n return this.hasProperty(key);\n }\n /**\n * Copies every explicit property of `source` into this store, keeping explicitness.\n *\n * @param {ExplicitPropertyStore} source Store to copy from.\n * @returns {void}\n * @private\n */\n copyExplicitFrom(source) {\n source._values.forEach((value, key) => this._values.set(key, value));\n }\n /**\n * Whether both stores hold the same explicit keys with equal values.\n *\n * @param {ExplicitPropertyStore} other Store to compare with.\n * @returns {boolean} True when the explicit properties are identical.\n * @private\n */\n explicitEquals(other) {\n if (this._values.size !== other._values.size) {\n return false;\n }\n let equal = true;\n this._values.forEach((value, key) => {\n if (!other._values.has(key) || other._values.get(key) !== value) {\n equal = false;\n }\n });\n return equal;\n }\n /** Hook invoked after any mutation of the store. */\n propertyChanged() {\n // overridden by owner-aware subclasses\n }\n}\n","/**\n * Base class of every owner-aware Math object.\n */\nimport { ExplicitPropertyStore } from './property-store';\n/**\n * Holds the owner reference, bubbles mutations to the root and tracks explicit properties.\n *\n * @public\n */\nexport class OwnerHolder extends ExplicitPropertyStore {\n constructor(owner) {\n super();\n this._owner = owner;\n }\n /** The containing entity, or `undefined` for a root or detached object. */\n get ownerMathEntity() {\n return this._owner;\n }\n /**\n * Re-parents this object.\n *\n * @param owner\n * @private\n */\n setOwner(owner) {\n this._owner = owner;\n }\n /**\n * True when this object is a matrix row or column, whose arguments are managed by synchronization.\n *\n * @private\n */\n get isMatrixArgumentOwner() {\n return false;\n }\n /**\n * Root-level mutation sink. The Math paragraph overrides it to notify the host.\n *\n * @private\n */\n rootMutated() {\n // no-op unless this object is the root\n }\n /**\n * Notifies the root that something below it changed.\n *\n * @private\n */\n notifyMutated() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let current = this;\n let next = current._owner;\n while (next instanceof OwnerHolder) {\n current = next;\n next = current._owner;\n }\n current.rootMutated();\n }\n propertyChanged() {\n this.notifyMutated();\n }\n}\n","/**\n * Structural equality of preserved XML trees.\n */\n/**\n * Compares two XML nodes structurally (names, attributes, children, text).\n *\n * @param {OpenXmlChild} a First node.\n * @param {OpenXmlChild} b Second node.\n * @returns {boolean} True when both nodes are structurally identical.\n * @private\n */\nexport function xmlEqual(a, b) {\n if (a.kind === 'text' || b.kind === 'text') {\n return a.kind === b.kind && a.value === b.value;\n }\n const x = a;\n const y = b;\n return x.namespaceUri === y.namespaceUri && x.localName === y.localName\n && x.attributes.length === y.attributes.length\n && x.attributes.every((at, i) => at.localName === y.attributes[i].localName\n && at.namespaceUri === y.attributes[i].namespaceUri && at.value === y.attributes[i].value)\n && x.children.length === y.children.length\n && x.children.every((c, i) => xmlEqual(c, y.children[i]));\n}\n","/**\n * Minimal document-agnostic run and format used when no document adapter is supplied.\n */\nimport { xmlEqual } from './xml-equal';\n/**\n * Default character format of the standalone package. Keeps a parsed `m:ctrlPr` verbatim.\n *\n * @public\n */\nexport class BasicRunFormat {\n /**\n * Creates the format.\n *\n * @param {OpenXmlElement} preservedXml Optional original `m:ctrlPr` element.\n */\n constructor(preservedXml) {\n this.preservedXml = preservedXml;\n }\n /**\n * Creates an independent copy.\n *\n * @returns {OfficeRunFormat} The copy.\n */\n clone() {\n return new BasicRunFormat(this.preservedXml);\n }\n /**\n * Value equality with another format.\n *\n * @param {OfficeRunFormat} other The format to compare with.\n * @returns {boolean} True when both keep the same XML.\n */\n equals(other) {\n const peer = other instanceof BasicRunFormat ? other : undefined;\n if (peer === undefined) {\n return false;\n }\n if (this.preservedXml === undefined || peer.preservedXml === undefined) {\n return this.preservedXml === peer.preservedXml;\n }\n return xmlEqual(this.preservedXml, peer.preservedXml);\n }\n}\n/**\n * Default run of the standalone package. Keeps text and non-text children in source order.\n *\n * @public\n */\nexport class BasicRun {\n constructor() {\n /** Run character format. */\n this.characterFormat = new BasicRunFormat();\n /** Ordered run content: text segments and preserved children. */\n this.parts = [];\n }\n /**\n * Concatenated text of all text segments.\n *\n * @returns {string} The run text.\n */\n get text() {\n return this.parts.map((part) => part.kind === 'text' ? part.value : '').join('');\n }\n set text(value) {\n const first = this.parts.map((part) => part.kind).indexOf('text');\n const kept = this.parts.filter((part) => part.kind !== 'text');\n const at = first < 0 ? kept.length : this.parts.slice(0, first).filter((p) => p.kind !== 'text').length;\n kept.splice(at, 0, { kind: 'text', value });\n this.parts.length = 0;\n kept.forEach((part) => this.parts.push(part));\n }\n /**\n * Creates an independent copy of the run.\n *\n * @returns {BasicRun} The copy.\n */\n clone() {\n const copy = new BasicRun();\n copy.characterFormat = this.characterFormat.clone();\n copy.runProperties = this.runProperties;\n this.parts.forEach((part) => copy.parts.push(part));\n return copy;\n }\n}\n","/**\n * Generic owner-aware mutable collection used by every Math collection.\n */\n/**\n * Ordered collection that assigns/detaches owners and notifies the root on change.\n * Items are also reachable by numeric index (`collection[0]`).\n *\n * @public\n */\nexport class OwnedCollection {\n constructor(owner) {\n this.owner = owner;\n this._items = [];\n this._synced = 0;\n }\n /** Number of items. */\n get count() {\n return this._items.length;\n }\n /**\n * Returns the item at `index`.\n *\n * @param index\n */\n getItem(index) {\n this.checkIndex(index, this._items.length - 1);\n return this._items[index];\n }\n /**\n * Inserts an item at `index`; throws when it already belongs to a collection.\n *\n * @param index\n * @param item\n */\n insert(index, item) {\n this.insertItem(index, item);\n }\n /**\n * Removes the item; no-op when it is not in the collection.\n *\n * @param value\n */\n remove(value) {\n const index = this._items.indexOf(value);\n if (index >= 0) {\n this.removeAt(index);\n }\n }\n /**\n * Removes the item at `index`.\n *\n * @param index\n */\n removeAt(index) {\n this.checkIndex(index, this._items.length - 1);\n const removed = this._items.splice(index, 1)[0];\n this.detach(removed);\n this.afterChange();\n }\n /** Removes all items. */\n clear() {\n const removed = this._items.splice(0, this._items.length);\n removed.forEach((item) => this.detach(item));\n this.afterChange();\n }\n /** Iterates the items in order. */\n [Symbol.iterator]() {\n return this._items[Symbol.iterator]();\n }\n /**\n * Snapshot of the items.\n *\n * @private\n */\n toArray() {\n return this._items.slice();\n }\n /**\n * Appends without owner assignment or notification (view/internal use).\n *\n * @param item\n * @private\n */\n pushRaw(item) {\n this._items.push(item);\n this.syncIndexes();\n }\n /**\n * Inserts with owner assignment but without the matrix guard or validation (synchronization use).\n *\n * @param index\n * @param item\n * @private\n */\n insertRaw(index, item) {\n this.attach(item);\n this._items.splice(index, 0, item);\n this.syncIndexes();\n }\n /**\n * Assigns ownership of an item entering the collection.\n *\n * @param item\n */\n attach(item) {\n item.setOwner(this.owner);\n }\n /**\n * Removes by index and detaches without notification (synchronization use).\n *\n * @param index\n * @private\n */\n removeRawAt(index) {\n const removed = this._items.splice(index, 1)[0];\n this.detach(removed);\n this.syncIndexes();\n return removed;\n }\n /**\n * Inserts after validating index and ownership.\n *\n * @param index\n * @param item\n */\n insertItem(index, item) {\n this.checkIndex(index, this._items.length);\n if (this._items.indexOf(item) >= 0 || (item.ownerMathEntity !== undefined && item.ownerMathEntity !== this.owner)) {\n throw new Error('The item already belongs to a Math collection.');\n }\n item.setOwner(this.owner);\n this._items.splice(index, 0, item);\n this.afterChange();\n }\n /** Hook for subclasses after any structural change. */\n afterChange() {\n this.syncIndexes();\n this.owner.notifyMutated();\n }\n /**\n * Detaches a removed item.\n *\n * @param item\n */\n detach(item) {\n item.setOwner(undefined);\n }\n checkIndex(index, max) {\n if (!(index >= 0 && index <= max) || Math.floor(index) !== index) {\n throw new RangeError('Index ' + index + ' is out of range.');\n }\n }\n syncIndexes() {\n const self = this;\n for (let i = this._items.length; i < this._synced; i++) {\n delete self[i];\n }\n for (let i = 0; i < this._items.length; i++) {\n self[i] = this._items[i];\n }\n this._synced = this._items.length;\n }\n}\n","/**\n * Property keys of the Office Math authoring model (same numbering as Compression).\n */\nexport const K = {\n AccentChar: 1, BarTop: 2,\n HideTop: 3, HideBottom: 4, HideRight: 5, HideLeft: 6,\n StrikeBLTR: 7, StrikeTLBR: 8, StrikeVertical: 9, StrikeHorizontal: 10,\n BoxAlign: 11, NoBreak: 12, EnableDifferential: 14, OperatorEmulator: 15,\n AlignAt: 16, BegChar: 17, EndChar: 18, NoRightChar: 19, NoLeftChar: 20,\n SeparatorChar: 21, Grow: 22, Shape: 23,\n EqArrAlign: 24, MaxDist: 25, ObjDist: 26, RowSpacing: 27, RowSpacingRule: 28,\n FractionType: 29, HasAlignTop: 30, GroupChar: 31, HasCharTop: 32,\n MatrixAlign: 33, ColumnWidth: 34, ColumnSpacingRule: 35, ColumnSpacing: 36, ColumnGap: 38, ColumnGapRule: 39, PlaceHoldHidden: 37,\n NAryChar: 41, HasGrow: 42, HideSubscript: 43, HideSuperscript: 44, SubSupLimit: 45,\n Show: 46, Smash: 47, Transparent: 48, ZeroAscent: 49, ZeroDescent: 50, ZeroWidth: 51,\n HideDegree: 51, SkipAlign: 52,\n HasAlignment: 53, HasLiteral: 54, HasNormalText: 55, Script: 56, Style: 57,\n ArgumentSize: 74, AlignPoint: 76, Justification: 77,\n LimitType: 80, ScriptType: 81\n};\n","/**\n * Math break (`m:brk`) and its collection.\n */\nimport { K } from './keys';\nimport { OwnerHolder } from './owner-holder';\nimport { OwnedCollection } from './collection';\n/**\n * Manual line break inside a Math run, box or run format.\n *\n * @public\n */\nexport class OfficeMathBreak extends OwnerHolder {\n /** Alignment point (`m:alnAt`) the next line aligns to. Default 0. */\n get alignAt() {\n return this.getProperty(K.AlignAt, () => 0);\n }\n set alignAt(value) {\n this.setProperty(K.AlignAt, value);\n }\n /** Whether `alignAt` was set or parsed explicitly. */\n get hasExplicitAlignAt() {\n return this.isExplicit(K.AlignAt);\n }\n}\n/**\n * Ordered collection of {@link OfficeMathBreak}.\n *\n * @public\n */\nexport class OfficeMathBreakCollection extends OwnedCollection {\n constructor(owner) {\n super(owner);\n }\n /**\n * Creates a break and appends it, or inserts it at `index`.\n *\n * @param index\n */\n add(index) {\n const item = new OfficeMathBreak(this.owner);\n item.setOwner(undefined);\n this.insertItem(index === undefined ? this.count : index, item);\n return item;\n }\n}\n","/**\n * Math run format (`m:rPr`).\n */\nimport { MathFontType, MathStyleType } from './enums';\nimport { K } from './keys';\nimport { OwnerHolder } from './owner-holder';\n/**\n * Math-specific run properties, separate from Word character formatting (`w:rPr`).\n *\n * @public\n */\nexport class OfficeMathFormat extends OwnerHolder {\n /** Aligns the run (`m:aln`). Default false. */\n get hasAlignment() { return this.getProperty(K.HasAlignment, () => false); }\n set hasAlignment(value) { this.setProperty(K.HasAlignment, value); }\n /** Literal text (`m:lit`). Default false. */\n get hasLiteral() { return this.getProperty(K.HasLiteral, () => false); }\n set hasLiteral(value) { this.setProperty(K.HasLiteral, value); }\n /** Normal text (`m:nor`). Default false. */\n get hasNormalText() { return this.getProperty(K.HasNormalText, () => false); }\n set hasNormalText(value) { this.setProperty(K.HasNormalText, value); }\n /** Math font (`m:scr`). Default roman. */\n get font() { return this.getProperty(K.Script, () => MathFontType.Roman); }\n set font(value) { this.setProperty(K.Script, value); }\n /** Math style (`m:sty`). Default italic. */\n get style() { return this.getProperty(K.Style, () => MathStyleType.Italic); }\n set style(value) { this.setProperty(K.Style, value); }\n /** Optional manual break (`m:brk`). Not created automatically. */\n get break() { return this._break; }\n set break(value) {\n this._break = value;\n if (value !== undefined) {\n value.setOwner(this);\n }\n this.notifyMutated();\n }\n /** Whether any `m:rPr` content must be written. */\n get hasContent() {\n return this._break !== undefined || [K.HasAlignment, K.HasLiteral, K.HasNormalText, K.Script, K.Style]\n .some((key) => this.isExplicit(key));\n }\n}\n","/**\n * Base class of every Math function.\n */\nimport { OwnerHolder } from './owner-holder';\n/**\n * Base of all concrete Math functions.\n *\n * @public\n */\nexport class OfficeMathFunctionBase extends OwnerHolder {\n /**\n * Character format of the function (`m:ctrlPr`). Created from the paragraph default on first access.\n */\n get controlProperties() {\n if (this._controlProperties === undefined) {\n this._controlProperties = this.getDefaultControlProperties();\n }\n return this._controlProperties;\n }\n set controlProperties(value) {\n this._controlProperties = value;\n this.notifyMutated();\n }\n /**\n * Whether control properties exist (assigned, parsed or accessed).\n *\n * @private\n */\n get hasControlProperties() {\n return this._controlProperties !== undefined;\n }\n getDefaultControlProperties() {\n let entity = this.ownerMathEntity;\n while (entity !== undefined && !('defaultMathCharacterFormat' in entity)) {\n entity = entity.ownerMathEntity;\n }\n if (entity === undefined) {\n throw new Error('Math function is not attached to a Math paragraph.');\n }\n return entity.defaultMathCharacterFormat.clone();\n }\n}\n","/**\n * Run element (`m:r`) holding a document-native run.\n */\nimport { MathFunctionType } from './enums';\nimport { OfficeMathFunctionBase } from './function-base';\nimport { OfficeMathFormat } from './format';\nimport { BasicRun } from './basic';\n/**\n * Math run: native document run plus Math format (`m:rPr`).\n *\n * @public\n */\nexport class OfficeMathRunElement extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.RunElement;\n this._mathFormat = new OfficeMathFormat(this);\n }\n /** The native document run. */\n get item() { return this._item; }\n set item(value) {\n this._item = value;\n if (value !== undefined) {\n value.ownerMathRunElement = this;\n }\n this.notifyMutated();\n }\n /**\n * Text of the run (`m:t`). Uses the host adapter when the run is attached to a paragraph\n * that has one, otherwise a standalone run. Empty when no run exists yet.\n *\n * @returns {string} The run text.\n */\n get text() {\n const adapter = this.findAdapter();\n if (this._item === undefined) {\n return '';\n }\n return adapter !== undefined ? adapter.getRunText(this._item) : this._item.text;\n }\n set text(value) {\n const adapter = this.findAdapter();\n if (this._item === undefined) {\n this.item = adapter !== undefined ? adapter.createRun(this) : new BasicRun();\n }\n if (adapter !== undefined) {\n adapter.setRunText(this._item, value);\n this.notifyMutated();\n }\n else {\n this._item.text = value;\n this.notifyMutated();\n }\n }\n findAdapter() {\n let entity = this.ownerMathEntity;\n while (entity !== undefined) {\n const candidate = entity;\n if (candidate.adapter !== undefined) {\n return candidate.adapter;\n }\n entity = entity.ownerMathEntity;\n }\n return undefined;\n }\n /** Math run format (`m:rPr`). */\n get mathFormat() { return this._mathFormat; }\n}\n","/**\n * Collection of equations (`OfficeMath`).\n */\nimport { OwnedCollection } from './collection';\nimport { OfficeMath } from './office-math';\n/**\n * Ordered collection of {@link OfficeMath} equations.\n *\n * @public\n */\nexport class OfficeMathCollection extends OwnedCollection {\n constructor(owner) { super(owner); }\n /**\n * Creates an equation and appends it, or inserts it at `index`.\n *\n * @param index\n */\n add(index) {\n const item = new OfficeMath();\n this.insertItem(index === undefined ? this.count : index, item);\n return item;\n }\n}\n","/**\n * Multi-equation Math functions: delimiter, equation array, fraction, function, limit, n-ary, scripts.\n */\nimport { MathFunctionType, MathDelimiterShapeType, MathFractionType, MathLimitType, MathScriptType, MathVerticalAlignment, SpacingRule } from './enums';\nimport { K } from './keys';\nimport { OfficeMathFunctionBase } from './function-base';\nimport { OfficeMath } from './office-math';\nimport { OfficeMathCollection } from './math-collection';\n/** Delimiter (`m:d`). @public */\nexport class OfficeMathDelimiter extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.Delimiter;\n this._equations = new OfficeMathCollection(this);\n }\n /** Opening character. Default `(`. */\n get beginCharacter() { return this.getProperty(K.BegChar, () => '('); }\n set beginCharacter(value) { this.setProperty(K.BegChar, value); }\n /** Closing character. Default `)`. */\n get endCharacter() { return this.getProperty(K.EndChar, () => ')'); }\n set endCharacter(value) { this.setProperty(K.EndChar, value); }\n /** Separator character. Default `|`. */\n get separator() { return this.getProperty(K.SeparatorChar, () => '|'); }\n set separator(value) { this.setProperty(K.SeparatorChar, value); }\n /** Whether delimiters grow with content. Default true. */\n get isGrow() { return this.getProperty(K.Grow, () => true); }\n set isGrow(value) { this.setProperty(K.Grow, value); }\n /** Delimiter shape. Default centered. */\n get delimiterShape() { return this.getProperty(K.Shape, () => MathDelimiterShapeType.Centered); }\n set delimiterShape(value) { this.setProperty(K.Shape, value); }\n /** Argument equations. */\n get equations() { return this._equations; }\n}\n/**\n * Validates a row spacing value against its rule.\n *\n * @param value\n * @param rule\n * @private\n */\nexport function checkRowSpacing(value, rule) {\n if (rule === SpacingRule.Exactly && (value < 0 || value > 1584)) {\n throw new RangeError('RowSpacing must be between 0 pt and 1584 pt for Exactly spacing rule.');\n }\n if (rule === SpacingRule.Multiple && (value < 0 || value > 132)) {\n throw new RangeError('RowSpacing must be between 0 li and 132 li for Multiple spacing rule.');\n }\n}\n/** Equation array (`m:eqArr`). @public */\nexport class OfficeMathEquationArray extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.EquationArray;\n this._equations = new OfficeMathCollection(this);\n }\n /** Vertical alignment. Default center. */\n get verticalAlignment() { return this.getProperty(K.EqArrAlign, () => MathVerticalAlignment.Center); }\n set verticalAlignment(value) { this.setProperty(K.EqArrAlign, value); }\n /** Expand container. Default false. */\n get expandEquationContainer() { return this.getProperty(K.MaxDist, () => false); }\n set expandEquationContainer(value) { this.setProperty(K.MaxDist, value); }\n /** Expand content. Default false. */\n get expandEquationContent() { return this.getProperty(K.ObjDist, () => false); }\n set expandEquationContent(value) { this.setProperty(K.ObjDist, value); }\n /** Row spacing; unit depends on `rowSpacingRule` (points for Exactly, lines for Multiple). Default 0. */\n get rowSpacing() { return this.getProperty(K.RowSpacing, () => 0); }\n set rowSpacing(value) {\n checkRowSpacing(value, this.rowSpacingRule);\n this.setProperty(K.RowSpacing, value);\n }\n /** Row spacing rule. Default single. */\n get rowSpacingRule() { return this.getProperty(K.RowSpacingRule, () => SpacingRule.Single); }\n set rowSpacingRule(value) { this.setProperty(K.RowSpacingRule, value); }\n /** Row equations. */\n get equations() { return this._equations; }\n}\n/** Fraction (`m:f`). @public */\nexport class OfficeMathFraction extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.Fraction;\n this._denominator = new OfficeMath(this);\n this._numerator = new OfficeMath(this);\n }\n /** Fraction type. Default normal bar. */\n get fractionType() { return this.getProperty(K.FractionType, () => MathFractionType.NormalFractionBar); }\n set fractionType(value) { this.setProperty(K.FractionType, value); }\n /** Numerator. */\n get numerator() { return this._numerator; }\n /** Denominator. */\n get denominator() { return this._denominator; }\n}\n/** Function application (`m:func`). @public */\nexport class OfficeMathFunction extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.Function;\n this._equation = new OfficeMath(this);\n this._functionName = new OfficeMath(this);\n }\n /** Argument equation. */\n get equation() { return this._equation; }\n /** Function name equation. */\n get functionName() { return this._functionName; }\n}\n/** Lower or upper limit (`m:limLow` / `m:limUpp`). @public */\nexport class OfficeMathLimit extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.Limit;\n this._equation = new OfficeMath(this);\n this._limit = new OfficeMath(this);\n }\n /** Lower or upper limit. Default lower. */\n get limitType() { return this.getProperty(K.LimitType, () => MathLimitType.LowerLimit); }\n set limitType(value) { this.setProperty(K.LimitType, value); }\n /** Base equation. */\n get equation() { return this._equation; }\n /** Limit equation. */\n get limit() { return this._limit; }\n}\n/** N-ary operator (`m:nary`). @public */\nexport class OfficeMathNArray extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.NArray;\n this._equation = new OfficeMath(this);\n this._subscript = new OfficeMath(this);\n this._superscript = new OfficeMath(this);\n }\n /** Operator character. Default U+222B. */\n get nArrayCharacter() { return this.getProperty(K.NAryChar, () => String.fromCharCode(8747)); }\n set nArrayCharacter(value) { this.setProperty(K.NAryChar, value); }\n /** Whether the operator grows. Default false. */\n get hasGrow() { return this.getProperty(K.HasGrow, () => false); }\n set hasGrow(value) { this.setProperty(K.HasGrow, value); }\n /** Hides the lower limit. Default false. */\n get hideLowerLimit() { return this.getProperty(K.HideSubscript, () => false); }\n set hideLowerLimit(value) { this.setProperty(K.HideSubscript, value); }\n /** Hides the upper limit. Default false. */\n get hideUpperLimit() { return this.getProperty(K.HideSuperscript, () => false); }\n set hideUpperLimit(value) { this.setProperty(K.HideSuperscript, value); }\n /** Limits as sub/superscript. Default true for the integral character, false otherwise. */\n get subSuperscriptLimit() {\n return this.getProperty(K.SubSupLimit, () => this.nArrayCharacter === String.fromCharCode(8747));\n }\n set subSuperscriptLimit(value) { this.setProperty(K.SubSupLimit, value); }\n /** Operand equation. */\n get equation() { return this._equation; }\n /** Lower limit equation. */\n get subscript() { return this._subscript; }\n /** Upper limit equation. */\n get superscript() { return this._superscript; }\n}\n/** Single subscript or superscript (`m:sSub` / `m:sSup`). @public */\nexport class OfficeMathScript extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.SubSuperscript;\n this._equation = new OfficeMath(this);\n this._script = new OfficeMath(this);\n }\n /** Subscript or superscript. Default superscript. */\n get scriptType() { return this.getProperty(K.ScriptType, () => MathScriptType.Superscript); }\n set scriptType(value) { this.setProperty(K.ScriptType, value); }\n /** Base equation. */\n get equation() { return this._equation; }\n /** Script equation. */\n get script() { return this._script; }\n}\n/** Combined right sub/superscript (`m:sSubSup`). @public */\nexport class OfficeMathRightScript extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.RightSubSuperscript;\n this._equation = new OfficeMath(this);\n this._subscript = new OfficeMath(this);\n this._superscript = new OfficeMath(this);\n }\n /** Align scripts. Default true. */\n get isSkipAlign() { return this.getProperty(K.SkipAlign, () => true); }\n set isSkipAlign(value) { this.setProperty(K.SkipAlign, value); }\n /** Base equation. */\n get equation() { return this._equation; }\n /** Subscript equation. */\n get subscript() { return this._subscript; }\n /** Superscript equation. */\n get superscript() { return this._superscript; }\n}\n/** Left sub/superscript (`m:sPre`). @public */\nexport class OfficeMathLeftScript extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.LeftSubSuperscript;\n this._equation = new OfficeMath(this);\n this._subscript = new OfficeMath(this);\n this._superscript = new OfficeMath(this);\n }\n /** Base equation. */\n get equation() { return this._equation; }\n /** Subscript equation. */\n get subscript() { return this._subscript; }\n /** Superscript equation. */\n get superscript() { return this._superscript; }\n}\n","/**\n * Matrix row.\n */\nimport { OwnerHolder } from './owner-holder';\nimport { OwnedCollection } from './collection';\n/**\n * Cells of a row. Managed by matrix synchronization, so direct mutation is rejected.\n *\n * @public\n */\nexport class OfficeMathMatrixRowArguments extends OwnedCollection {\n constructor(owner) { super(owner); }\n /** Not supported: cells are created when columns are added. */\n add() { throw new Error('Cells are managed by the matrix; add a column instead.'); }\n /** Not supported: cells are managed by the matrix. */\n insert() { throw new Error('Cells are managed by the matrix.'); }\n /** Not supported: cells are managed by the matrix. */\n removeAt() { throw new Error('Cells are managed by the matrix; remove a column instead.'); }\n /** Not supported: cells are managed by the matrix. */\n remove() { throw new Error('Cells are managed by the matrix; remove a column instead.'); }\n /** Not supported: cells are managed by the matrix. */\n clear() { throw new Error('Cells are managed by the matrix; remove columns instead.'); }\n}\n/**\n * Row of a matrix holding one cell per column.\n *\n * @public\n */\nexport class OfficeMathMatrixRow extends OwnerHolder {\n constructor(owner) {\n super(owner);\n this._arguments = new OfficeMathMatrixRowArguments(this);\n }\n /** Cells of the row. */\n get arguments() { return this._arguments; }\n /** Index of the row in its matrix, or -1 when detached. */\n get rowIndex() {\n const matrix = this.ownerMathEntity;\n return matrix === undefined ? -1 : matrix.rowItems.indexOf(this);\n }\n}\n","/**\n * Matrix column.\n */\nimport { OwnerHolder } from './owner-holder';\nimport { MathHorizontalAlignment } from './enums';\nimport { K } from './keys';\n/**\n * Read-only view of the cells of one column.\n *\n * @public\n */\nexport class OfficeMathMatrixColumnArguments {\n constructor(items) {\n this._items = items;\n items.forEach((item, i) => { this[i] = item; });\n }\n /** Number of cells. */\n get count() { return this._items.length; }\n /**\n * Returns the cell at `index`.\n *\n * @param index\n */\n getItem(index) {\n if (!(index >= 0 && index < this._items.length)) {\n throw new RangeError('Index ' + index + ' is out of range.');\n }\n return this._items[index];\n }\n /** Not supported: cells are created when rows are added. */\n add() { throw new Error('Cells are managed by the matrix; add a row instead.'); }\n /** Iterates the cells top to bottom. */\n [Symbol.iterator]() { return this._items[Symbol.iterator](); }\n}\n/**\n * Column of a matrix.\n *\n * @public\n */\nexport class OfficeMathMatrixColumn extends OwnerHolder {\n constructor(owner) { super(owner); }\n /** Horizontal alignment of the column. Default center. */\n get horizontalAlignment() {\n return this.getProperty(K.MatrixAlign, () => MathHorizontalAlignment.Center);\n }\n set horizontalAlignment(value) { this.setProperty(K.MatrixAlign, value); }\n /** Index of the column in its matrix, or -1 when detached. */\n get columnIndex() {\n const matrix = this.ownerMathEntity;\n return matrix === undefined ? -1 : matrix.columns.toArray().indexOf(this);\n }\n /** Cells of this column, one per row. */\n get arguments() {\n const matrix = this.ownerMathEntity;\n const index = this.columnIndex;\n const cells = matrix === undefined ? [] : matrix.rowItems.map((row) => row.arguments.getItem(index));\n return new OfficeMathMatrixColumnArguments(cells);\n }\n}\n","/**\n * Matrix row and column collections that keep rows and columns synchronized.\n */\nimport { OwnedCollection } from './collection';\nimport { OfficeMath } from './office-math';\nimport { OfficeMathMatrixRow } from './matrix-row';\nimport { OfficeMathMatrixColumn } from './matrix-column';\n/**\n * Rows of a matrix. New rows receive one cell per existing column.\n *\n * @public\n */\nexport class OfficeMathMatrixRowCollection extends OwnedCollection {\n constructor(matrix) {\n super(matrix);\n this.matrix = matrix;\n }\n /**\n * Creates a row and appends it, or inserts it at `index`.\n *\n * @param index\n */\n add(index) {\n const row = new OfficeMathMatrixRow();\n const columnCount = this.matrix.columns.count;\n for (let i = 0; i < columnCount; i++) {\n row.arguments.pushRaw(new OfficeMath(row));\n }\n this.insertItem(index === undefined ? this.count : index, row);\n return row;\n }\n afterChange() {\n this.matrix.relink();\n super.afterChange();\n }\n}\n/**\n * Columns of a matrix. Adding or removing a column adds or removes the cell in every row.\n *\n * @public\n */\nexport class OfficeMathMatrixColumnCollection extends OwnedCollection {\n constructor(matrix) {\n super(matrix);\n this.matrix = matrix;\n }\n /**\n * Creates a column and appends it, or inserts it at `index`.\n *\n * @param index\n */\n add(index) {\n const position = index === undefined ? this.count : index;\n const column = new OfficeMathMatrixColumn();\n this.insertItem(position, column);\n return column;\n }\n /**\n * Removes the column and its cell in every row.\n *\n * @param index\n */\n removeAt(index) {\n super.removeAt(index);\n this.matrix.rowItems.forEach((row) => row.arguments.removeRawAt(index));\n this.matrix.relink();\n }\n /** Removes all columns and every cell. */\n clear() {\n super.clear();\n this.matrix.rowItems.forEach((row) => {\n while (row.arguments.count > 0) {\n row.arguments.removeRawAt(row.arguments.count - 1);\n }\n });\n }\n afterChange() {\n this.matrix.relink();\n super.afterChange();\n }\n /**\n * Adds the matching cell to every row once the column is inserted.\n *\n * @param index\n * @param item\n */\n insertItem(index, item) {\n super.insertItem(index, item);\n this.matrix.rowItems.forEach((row) => row.arguments.insertRaw(index, new OfficeMath(row)));\n this.matrix.relink();\n }\n}\n","/**\n * Matrix (`m:m`) function.\n */\nimport { MathFunctionType, MathVerticalAlignment, SpacingRule } from './enums';\nimport { K } from './keys';\nimport { checkRowSpacing } from './functions-multi';\nimport { OfficeMathFunctionBase } from './function-base';\nimport { OfficeMathMatrixRowCollection, OfficeMathMatrixColumnCollection } from './matrix-collections';\n/**\n * Matrix whose rows and columns are kept synchronized: every row always has one cell per column.\n *\n * @public\n */\nexport class OfficeMathMatrix extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.Matrix;\n this._rows = new OfficeMathMatrixRowCollection(this);\n this._columns = new OfficeMathMatrixColumnCollection(this);\n }\n /** Rows of the matrix. */\n get rows() { return this._rows; }\n /** Columns of the matrix. */\n get columns() { return this._columns; }\n /** Vertical alignment. Default center. */\n get verticalAlignment() { return this.getProperty(K.MatrixAlign, () => MathVerticalAlignment.Center); }\n set verticalAlignment(value) { this.setProperty(K.MatrixAlign, value); }\n /** Hides placeholders for empty cells. Default false. */\n get hidePlaceholder() { return this.getProperty(K.PlaceHoldHidden, () => false); }\n set hidePlaceholder(value) { this.setProperty(K.PlaceHoldHidden, value); }\n /** Row spacing; unit depends on `rowSpacingRule`. Default 0. */\n get rowSpacing() { return this.getProperty(K.RowSpacing, () => 0); }\n set rowSpacing(value) {\n checkRowSpacing(value, this.rowSpacingRule);\n this.setProperty(K.RowSpacing, value);\n }\n /** Row spacing rule (`m:rSpRule`). Default single. */\n get rowSpacingRule() { return this.getProperty(K.RowSpacingRule, () => SpacingRule.Single); }\n set rowSpacingRule(value) { this.setProperty(K.RowSpacingRule, value); }\n /** Column gap (`m:cGp`). Default 0. */\n get columnGap() { return this.getProperty(K.ColumnGap, () => 0); }\n set columnGap(value) { this.setProperty(K.ColumnGap, value); }\n /** Column gap rule (`m:cGpRule`). Default single. */\n get columnGapRule() { return this.getProperty(K.ColumnGapRule, () => SpacingRule.Single); }\n set columnGapRule(value) { this.setProperty(K.ColumnGapRule, value); }\n /** DocIO-compatible alias of `hidePlaceholder` (`m:plcHide`). */\n get hidePlaceHolders() { return this.hidePlaceholder; }\n set hidePlaceHolders(value) { this.hidePlaceholder = value; }\n /** DocIO-compatible alias of `columnGapRule` (`m:cGpRule`). */\n get columnSpacingRule() { return this.columnGapRule; }\n set columnSpacingRule(value) { this.columnGapRule = value; }\n /** DocIO-compatible name for the column width (`m:cSp`); shares storage with `columnSpacing`. */\n get columnWidth() { return this.columnSpacing; }\n set columnWidth(value) { this.columnSpacing = value; }\n /** Column spacing (`m:cSp`). Default 0. */\n get columnSpacing() { return this.getProperty(K.ColumnSpacing, () => 0); }\n set columnSpacing(value) { this.setProperty(K.ColumnSpacing, value); }\n /** Column groups: consecutive columns with identical alignment, in order. */\n get columnGroups() {\n const groups = [];\n this._columns.toArray().forEach((column, index) => {\n const last = groups[groups.length - 1];\n if (last !== undefined && last.horizontalAlignment === column.horizontalAlignment) {\n last.count++;\n }\n else {\n groups.push({ startIndex: index, count: 1, horizontalAlignment: column.horizontalAlignment });\n }\n });\n return groups;\n }\n /**\n * Re-links every cell to its row and column after a structural change.\n *\n * @private\n */\n relink() {\n const columns = this._columns.toArray();\n this._rows.toArray().forEach((row) => {\n row.arguments.toArray().forEach((cell, i) => cell.setOwnerColumn(columns[i]));\n });\n }\n /** @private */\n get rowItems() { return this._rows.toArray(); }\n}\n","/**\n * Collection and factory of Math functions.\n */\nimport { OwnedCollection } from './collection';\nimport { MathFunctionType, MathLimitType, MathScriptType } from './enums';\nimport { OfficeMathRunElement } from './run-element';\nimport { OfficeMathAccent, OfficeMathBar, OfficeMathBorderBox, OfficeMathBox, OfficeMathGroupCharacter, OfficeMathPhantom, OfficeMathRadical } from './functions-basic';\nimport { OfficeMathDelimiter, OfficeMathEquationArray, OfficeMathFraction, OfficeMathFunction, OfficeMathLimit, OfficeMathNArray, OfficeMathScript, OfficeMathRightScript, OfficeMathLeftScript } from './functions-multi';\nimport { OfficeMathMatrix } from './matrix';\n/**\n * Creates an unattached function of the given type.\n *\n * @param type\n * @private\n */\nexport function createMathFunction(type) {\n switch (type) {\n case MathFunctionType.Accent: return new OfficeMathAccent();\n case MathFunctionType.Bar: return new OfficeMathBar();\n case MathFunctionType.BorderBox: return new OfficeMathBorderBox();\n case MathFunctionType.Box: return new OfficeMathBox();\n case MathFunctionType.Delimiter: return new OfficeMathDelimiter();\n case MathFunctionType.EquationArray: return new OfficeMathEquationArray();\n case MathFunctionType.Fraction: return new OfficeMathFraction();\n case MathFunctionType.Function: return new OfficeMathFunction();\n case MathFunctionType.GroupCharacter: return new OfficeMathGroupCharacter();\n case MathFunctionType.Limit: return new OfficeMathLimit();\n case MathFunctionType.Matrix: return new OfficeMathMatrix();\n case MathFunctionType.NArray: return new OfficeMathNArray();\n case MathFunctionType.Phantom: return new OfficeMathPhantom();\n case MathFunctionType.Radical: return new OfficeMathRadical();\n case MathFunctionType.LeftSubSuperscript: return new OfficeMathLeftScript();\n case MathFunctionType.SubSuperscript: return new OfficeMathScript();\n case MathFunctionType.RightSubSuperscript: return new OfficeMathRightScript();\n case MathFunctionType.RunElement: return new OfficeMathRunElement();\n default: throw new RangeError('Unknown Math function type: ' + String(type));\n }\n}\n/**\n * Ordered collection of Math functions with a type-based factory.\n *\n * @public\n */\nexport class OfficeMathFunctionCollection extends OwnedCollection {\n constructor(owner) { super(owner); }\n /**\n * Creates a function of the given type and appends it, or inserts it at `index`.\n *\n * @param type\n * @param index\n */\n add(type, index) {\n const item = createMathFunction(type);\n this.insertItem(index === undefined ? this.count : index, item);\n return item;\n }\n}\nexport { MathLimitType, MathScriptType };\n","/**\n * Office Math equation (`m:oMath`): a container of Math functions.\n */\nimport { OwnerHolder } from './owner-holder';\nimport { OfficeMathFunctionCollection } from './function-collection';\nimport { OfficeMathBreakCollection } from './break';\nimport { K } from './keys';\n/**\n * Equation that holds an ordered list of Math functions.\n *\n * @public\n */\nexport class OfficeMath extends OwnerHolder {\n constructor(owner) {\n super(owner);\n this._functions = new OfficeMathFunctionCollection(this);\n this._breaks = new OfficeMathBreakCollection(this);\n }\n /** Manual breaks owned by this equation; a box references one of them. */\n get breaks() { return this._breaks; }\n /** Functions of this equation. */\n get functions() { return this._functions; }\n /**\n * Argument size (`m:argPr/m:argSz`), from -2 to 2. Default 0.\n *\n * @returns {number} The argument size.\n */\n get argumentSize() { return this.getProperty(K.ArgumentSize, () => 0); }\n set argumentSize(value) {\n if (value < -2 || value > 2 || Math.floor(value) !== value) {\n throw new RangeError('ArgumentSize must be an integer between -2 and 2.');\n }\n this.setProperty(K.ArgumentSize, value);\n }\n /**\n * The original `m:ctrlPr` of an argument, kept verbatim for round trips.\n *\n * @returns {OpenXmlElement | undefined} The preserved element, when present.\n * @private\n */\n get preservedControlProperties() { return this._preservedControl; }\n set preservedControlProperties(value) {\n this._preservedControl = value;\n this.notifyMutated();\n }\n /** The nearest enclosing equation, or `undefined` for a top-level equation. */\n get ownerMath() {\n let entity = this.ownerMathEntity;\n while (entity !== undefined) {\n if (entity instanceof OfficeMath) {\n return entity;\n }\n entity = entity.ownerMathEntity;\n }\n return undefined;\n }\n /** The matrix row that owns this cell, or `undefined` when it is not a matrix cell. */\n get ownerRow() {\n const owner = this.ownerMathEntity;\n return owner !== undefined && 'arguments' in owner ? owner : undefined;\n }\n /** The matrix column that contains this cell, or `undefined` when it is not a matrix cell. */\n get ownerColumn() { return this._column; }\n /**\n * @private\n *\n * @param {ColumnLink | undefined} column The column the equation belongs to.\n * @returns {void}\n */\n setOwnerColumn(column) { this._column = column; }\n}\n","/**\n * Single-equation Math functions: accent, bar, border box, box, group character, phantom, radical.\n */\nimport { MathFunctionType } from './enums';\nimport { K } from './keys';\nimport { OfficeMathFunctionBase } from './function-base';\nimport { OfficeMath } from './office-math';\n/** Accent (`m:acc`). @public */\nexport class OfficeMathAccent extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.Accent;\n this._equation = new OfficeMath(this);\n }\n /** Accent character. Default U+0302. */\n get accentCharacter() { return this.getProperty(K.AccentChar, () => String.fromCharCode(770)); }\n set accentCharacter(value) { this.setProperty(K.AccentChar, value); }\n /** Base equation. */\n get equation() { return this._equation; }\n}\n/** Bar (`m:bar`). @public */\nexport class OfficeMathBar extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.Bar;\n this._equation = new OfficeMath(this);\n }\n /** Whether the bar is drawn above the base. Default false. */\n get barTop() { return this.getProperty(K.BarTop, () => false); }\n set barTop(value) { this.setProperty(K.BarTop, value); }\n /** Base equation. */\n get equation() { return this._equation; }\n}\n/** Border box (`m:borderBox`). @public */\nexport class OfficeMathBorderBox extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.BorderBox;\n this._equation = new OfficeMath(this);\n }\n /** Hides the top border. Default false. */\n get hideTop() { return this.getProperty(K.HideTop, () => false); }\n set hideTop(value) { this.setProperty(K.HideTop, value); }\n /** Hides the bottom border. Default false. */\n get hideBottom() { return this.getProperty(K.HideBottom, () => false); }\n set hideBottom(value) { this.setProperty(K.HideBottom, value); }\n /** Hides the left border. Default false. */\n get hideLeft() { return this.getProperty(K.HideLeft, () => false); }\n set hideLeft(value) { this.setProperty(K.HideLeft, value); }\n /** Hides the right border. Default false. */\n get hideRight() { return this.getProperty(K.HideRight, () => false); }\n set hideRight(value) { this.setProperty(K.HideRight, value); }\n /** Diagonal strike from bottom-left to top-right. Default false. */\n get strikeDiagonalUp() { return this.getProperty(K.StrikeBLTR, () => false); }\n set strikeDiagonalUp(value) { this.setProperty(K.StrikeBLTR, value); }\n /** Diagonal strike from top-left to bottom-right. Default false. */\n get strikeDiagonalDown() { return this.getProperty(K.StrikeTLBR, () => false); }\n set strikeDiagonalDown(value) { this.setProperty(K.StrikeTLBR, value); }\n /** Vertical strike. Default false. */\n get strikeVertical() { return this.getProperty(K.StrikeVertical, () => false); }\n set strikeVertical(value) { this.setProperty(K.StrikeVertical, value); }\n /** Horizontal strike. Default false. */\n get strikeHorizontal() { return this.getProperty(K.StrikeHorizontal, () => false); }\n set strikeHorizontal(value) { this.setProperty(K.StrikeHorizontal, value); }\n /** Base equation. */\n get equation() { return this._equation; }\n}\n/** Box (`m:box`). @public */\nexport class OfficeMathBox extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.Box;\n this._equation = new OfficeMath(this);\n }\n /** Operator alignment. Default false. */\n get alignment() { return this.getProperty(K.BoxAlign, () => false); }\n set alignment(value) { this.setProperty(K.BoxAlign, value); }\n /** Differential. Default false. */\n get enableDifferential() { return this.getProperty(K.EnableDifferential, () => false); }\n set enableDifferential(value) { this.setProperty(K.EnableDifferential, value); }\n /** Disallows line breaks inside the box. Default true. */\n get noBreak() { return this.getProperty(K.NoBreak, () => true); }\n set noBreak(value) { this.setProperty(K.NoBreak, value); }\n /** Operator emulator. Default false. */\n get operatorEmulator() { return this.getProperty(K.OperatorEmulator, () => false); }\n set operatorEmulator(value) { this.setProperty(K.OperatorEmulator, value); }\n /** Optional manual break. Not created automatically. */\n get break() { return this._break; }\n set break(value) {\n this._break = value;\n this.notifyMutated();\n }\n /** Base equation. */\n get equation() { return this._equation; }\n}\n/** Group character (`m:groupChr`). @public */\nexport class OfficeMathGroupCharacter extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.GroupCharacter;\n this._equation = new OfficeMath(this);\n }\n /** Whether the group is aligned top. Default true. */\n get hasAlignTop() { return this.getProperty(K.HasAlignTop, () => true); }\n set hasAlignTop(value) { this.setProperty(K.HasAlignTop, value); }\n /** Whether the character is drawn on top. Default false. */\n get hasCharacterTop() { return this.getProperty(K.HasCharTop, () => false); }\n set hasCharacterTop(value) { this.setProperty(K.HasCharTop, value); }\n /** Grouping character. Default U+23DF. */\n get groupCharacter() { return this.getProperty(K.GroupChar, () => String.fromCharCode(9183)); }\n set groupCharacter(value) { this.setProperty(K.GroupChar, value); }\n /** Base equation. */\n get equation() { return this._equation; }\n}\n/** Phantom (`m:phant`). @public */\nexport class OfficeMathPhantom extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.Phantom;\n this._equation = new OfficeMath(this);\n }\n /** Shows the phantom content. Default true. */\n get show() { return this.getProperty(K.Show, () => true); }\n set show(value) { this.setProperty(K.Show, value); }\n /** Transparent. Default false. */\n get transparent() { return this.getProperty(K.Transparent, () => false); }\n set transparent(value) { this.setProperty(K.Transparent, value); }\n /** Zero ascent. Default false. */\n get zeroAscent() { return this.getProperty(K.ZeroAscent, () => false); }\n set zeroAscent(value) { this.setProperty(K.ZeroAscent, value); }\n /** Zero descent. Default false. */\n get zeroDescent() { return this.getProperty(K.ZeroDescent, () => false); }\n set zeroDescent(value) { this.setProperty(K.ZeroDescent, value); }\n /** Zero width. Default false. */\n get zeroWidth() { return this.getProperty(K.ZeroWidth, () => false); }\n set zeroWidth(value) { this.setProperty(K.ZeroWidth, value); }\n /** Smash. Default false. */\n get smash() { return this.getProperty(K.Smash, () => false); }\n set smash(value) { this.setProperty(K.Smash, value); }\n /** Base equation. */\n get equation() { return this._equation; }\n}\n/** Radical (`m:rad`). @public */\nexport class OfficeMathRadical extends OfficeMathFunctionBase {\n constructor(owner) {\n super(owner);\n this.type = MathFunctionType.Radical;\n this._equation = new OfficeMath(this);\n this._degree = new OfficeMath(this);\n }\n /** Hides the degree. Default false. */\n get hideDegree() { return this.getProperty(K.HideDegree, () => false); }\n set hideDegree(value) { this.setProperty(K.HideDegree, value); }\n /** Degree equation. */\n get degree() { return this._degree; }\n /** Radicand equation. */\n get equation() { return this._equation; }\n}\n","/**\n * LaTeX command to Unicode symbol table (parity with compression `LaTeXConverter.GetSymbol`:\n * basic math, Greek, letter-like, operators, arrows, negated, geometry, non-renderable).\n * N-ary operators are intentionally absent; they are handled by the N-ary parser.\n *\n * @private\n */\nconst LATEX_SYMBOLS = {\n '\\\\pm': '\\u00B1',\n '\\\\infty': '\\u221E',\n '\\\\neq': '\\u2260',\n '\\\\times': '\\u00D7',\n '\\\\div': '\\u00F7',\n '\\\\propto': '\\u221D',\n '\\\\ll': '\\u226A',\n '\\\\gg': '\\u226B',\n '\\\\le': '\\u2264',\n '\\\\geq': '\\u2265',\n '\\\\mp': '\\u2213',\n '\\\\cong': '\\u2245',\n '\\\\approx': '\\u2248',\n '\\\\equiv': '\\u2261',\n '\\\\forall': '\\u2200',\n '\\\\complement': '\\u2201',\n '\\\\partial': '\\u2202',\n '\\\\cup': '\\u222A',\n '\\\\cap': '\\u2229',\n '\\\\emptyset': '\\u2205',\n '\\\\degf': '\\u2109',\n '\\\\degc': '\\u2103',\n '\\\\nabla': '\\u2207',\n '\\\\exists': '\\u2203',\n '\\\\nexists': '\\u2204',\n '\\\\in': '\\u2208',\n '\\\\ni': '\\u220B',\n '\\\\gets': '\\u2190',\n '\\\\uparrow': '\\u2191',\n '\\\\rightarrow': '\\u2192',\n '\\\\downarrow': '\\u2193',\n '\\\\leftrightarrow': '\\u2194',\n '\\\\therefore': '\\u2234',\n '\\\\lnot': '\\u00AC',\n '\\\\alpha': '\\u03B1',\n '\\\\beta': '\\u03B2',\n '\\\\gamma': '\\u03B3',\n '\\\\delta': '\\u03B4',\n '\\\\varepsilon': '\\u03B5',\n '\\\\epsilon': '\\u03F5',\n '\\\\theta': '\\u03B8',\n '\\\\vartheta': '\\u03D1',\n '\\\\mu': '\\u03BC',\n '\\\\pi': '\\u03C0',\n '\\\\rho': '\\u03C1',\n '\\\\sigma': '\\u03C3',\n '\\\\tau': '\\u03C4',\n '\\\\varphi': '\\u03C6',\n '\\\\omega': '\\u03C9',\n '\\\\ast': '\\u002A',\n '\\\\bullet': '\\u2219',\n '\\\\vdots': '\\u22EE',\n '\\\\cdots': '\\u22EF',\n '\\\\ddots': '\\u22F1',\n '\\\\aleph': '\\u2135',\n '\\\\beth': '\\u2136',\n '\\\\qed': '\\u220E',\n '\\\\zeta': '\\u03B6',\n '\\\\eta': '\\u03B7',\n '\\\\iota': '\\u03B9',\n '\\\\kappa': '\\u03BA',\n '\\\\lambda': '\\u03BB',\n '\\\\nu': '\\u03BD',\n '\\\\xi': '\\u03BE',\n '\\\\varpi': '\\u03D6',\n '\\\\varrho': '\\u03F1',\n '\\\\varsigma': '\\u03C2',\n '\\\\upsilon': '\\u03C5',\n '\\\\phi': '\\u03D5',\n '\\\\chi': '\\u03C7',\n '\\\\psi': '\\u03C8',\n '\\\\Gamma': '\\u0393',\n '\\\\Delta': '\\u0394',\n '\\\\Theta': '\\u0398',\n '\\\\Lambda': '\\u039B',\n '\\\\Xi': '\\u039E',\n '\\\\Pi': '\\u03A0',\n '\\\\Sigma': '\\u03A3',\n '\\\\Upsilon': '\\u03A5',\n '\\\\Phi': '\\u03A6',\n '\\\\Psi': '\\u03A8',\n '\\\\Omega': '\\u03A9',\n '\\\\mathbb{C}': '\\u0043',\n '\\\\mathcal{g}': '\\u0067',\n '\\\\mathcal{H}': '\\u0048',\n '\\\\mathfrak{H}': '\\u0048',\n '\\\\hbar': '\\u210F',\n '\\\\imath': '\\u0131',\n '\\\\mathfrak{I}': '\\u0049',\n '\\\\varkappa': '\\u03F0',\n '\\\\mathcal{L}': '\\u004C',\n '\\\\ell': '\\u006C',\n '\\\\mathbb{N}': '\\u004E',\n '\\\\wp': '\\u2118',\n '\\\\mathbb{Q}': '\\u0051',\n '\\\\mathcal{R}': '\\u0052',\n '\\\\mathfrak{R}': '\\u0052',\n '\\\\mathbb{R}': '\\u0052',\n '\\\\mathbb{Z}': '\\u005A',\n '\\\\mathcal{B}': '\\u0042',\n '\\\\mathcal{E}': '\\u0045',\n '\\\\mathcal{F}': '\\u0046',\n '\\\\mathcal{M}': '\\u004D',\n '\\\\mathcal{o}': '\\u006F',\n '\\\\gimel': '\\u2137',\n '\\\\daleth': '\\u2138',\n '\\\\circ': '\\u2218',\n '\\\\cdot': '\\u22C5',\n '\\\\uplus': '\\u228E',\n '\\\\sqcap': '\\u2293',\n '\\\\sqcup': '\\u2294',\n '\\\\land': '\\u2227',\n '\\\\vee': '\\u2228',\n '\\\\nless': '\\u226E',\n '\\\\nleq': '\\u2270',\n '\\\\ngt': '\\u226F',\n '\\\\ngeq': '\\u2271',\n '\\\\sim': '\\u223C',\n '\\\\simeq': '\\u2243',\n '\\\\nequiv': '\\u2262',\n '\\\\nsimeq': '\\u2244',\n '\\\\napprox': '\\u2249',\n '\\\\ncong': '\\u2247',\n '\\\\notin': '\\u2209',\n '\\\\subset': '\\u2282',\n '\\\\supset': '\\u2283',\n '\\\\subseteq': '\\u2286',\n '\\\\supseteq': '\\u2287',\n '\\\\prcue': '\\u227A',\n '\\\\succ': '\\u227B',\n '\\\\preccurlyeq': '\\u227C',\n '\\\\succcurlyeq': '\\u227D',\n '\\\\sqsubset': '\\u228F',\n '\\\\sqsupset': '\\u2290',\n '\\\\sqsubseteq': '\\u2291',\n '\\\\sqsupseteq': '\\u2292',\n '\\\\parallel': '\\u2225',\n '\\\\bot': '\\u22A5',\n '\\\\vdash': '\\u22A2',\n '\\\\dashv': '\\u22A3',\n '\\\\bowtie': '\\u22C8',\n '\\\\asymp': '\\u224D',\n '\\\\dotplus': '\\u2214',\n '\\\\dotminus': '\\u2238',\n '\\\\setminus': '\\u2216',\n '\\\\Cap': '\\u22D2',\n '\\\\Cup': '\\u22D3',\n '\\\\boxminus': '\\u229F',\n '\\\\boxtimes': '\\u22A0',\n '\\\\boxdot': '\\u22A1',\n '\\\\boxplus': '\\u229E',\n '\\\\divideontimes': '\\u22C7',\n '\\\\ltimes': '\\u22C9',\n '\\\\rtimes': '\\u22CA',\n '\\\\leftthreetimes': '\\u22CB',\n '\\\\rightthreetimes': '\\u22CC',\n '\\\\curlywedge': '\\u22CF',\n '\\\\curlyvee': '\\u22CE',\n '\\\\odash': '\\u229D',\n '\\\\intercal': '\\u22BA',\n '\\\\oplus': '\\u2295',\n '\\\\ominus': '\\u2296',\n '\\\\otimes': '\\u2297',\n '\\\\oslash': '\\u2298',\n '\\\\odot': '\\u2299',\n '\\\\oast': '\\u229B',\n '\\\\ocirc': '\\u229A',\n '\\\\dag': '\\u2020',\n '\\\\ddag': '\\u2021',\n '\\\\star': '\\u22C6',\n '\\\\diamond': '\\u22C4',\n '\\\\wr': '\\u2240',\n '\\\\triangle': '\\u25B3',\n '\\\\bigwedge': '\\u22C0',\n '\\\\bigvee': '\\u22C1',\n '\\\\bigodot': '\\u2A00',\n '\\\\bigotimes': '\\u2A02',\n '\\\\bigoplus': '\\u2A01',\n '\\\\bigsqcap': '\\u2A05',\n '\\\\bigsqcup': '\\u2A06',\n '\\\\biguplus': '\\u2A04',\n '\\\\bigudot': '\\u2A03',\n '\\\\because': '\\u2235',\n '\\\\lll': '\\u22D8',\n '\\\\ggg': '\\u22D9',\n '\\\\leqq': '\\u2266',\n '\\\\geqq': '\\u2267',\n '\\\\lesssim': '\\u2272',\n '\\\\gtrsim': '\\u2273',\n '\\\\lessdot': '\\u22D6',\n '\\\\gtrdot': '\\u22D7',\n '\\\\lessgtr': '\\u2276',\n '\\\\lesseqgtr': '\\u22DA',\n '\\\\gtrless': '\\u2277',\n '\\\\gtreqless': '\\u22DB',\n '\\\\Doteq': '\\u2251',\n '\\\\fallingdotseq': '\\u2252',\n '\\\\risingdotseq': '\\u2253',\n '\\\\backsim': '\\u223D',\n '\\\\approxeq': '\\u224A',\n '\\\\backsimeq': '\\u22CD',\n '\\\\curlyeqprec': '\\u22DE',\n '\\\\curlyeqsucc': '\\u22DF',\n '\\\\precsim': '\\u227E',\n '\\\\succsim': '\\u227F',\n '\\\\eqless': '\\u22DC',\n '\\\\eqgtr': '\\u22DD',\n '\\\\vartriangleleft': '\\u22B2',\n '\\\\vartriangleright': '\\u22B3',\n '\\\\trianglelefteq': '\\u22B4',\n '\\\\trianglerighteq': '\\u22B5',\n '\\\\models': '\\u22A8',\n '\\\\Subset': '\\u22D0',\n '\\\\Supset': '\\u22D1',\n '\\\\Vdash': '\\u22A9',\n '\\\\Vvdash': '\\u22AA',\n '\\\\eqcirc': '\\u2256',\n '\\\\circeq': '\\u2257',\n '\\\\Deltaeq': '\\u225C',\n '\\\\bumpeq': '\\u224F',\n '\\\\Bumpeq': '\\u224E',\n '\\\\between': '\\u226C',\n '\\\\pitchfork': '\\u22D4',\n '\\\\doteq': '\\u2250',\n '\\\\get': '\\u2190',\n '\\\\updownarrow': '\\u2195',\n '\\\\Leftarrow': '\\u21D0',\n '\\\\Rightarrow': '\\u21D2',\n '\\\\Uparrow': '\\u21D1',\n '\\\\Downarrow': '\\u21D3',\n '\\\\Leftrightarrow': '\\u21D4',\n '\\\\Updownarrow': '\\u21D5',\n '\\\\longleftarrow': '\\u27F5',\n '\\\\longrightarrow': '\\u27F6',\n '\\\\longleftrightarrow': '\\u27F7',\n '\\\\Longleftarrow': '\\u27F8',\n '\\\\Longrightarrow': '\\u27F9',\n '\\\\Longleftrightarrow': '\\u27FA',\n '\\\\nearrow': '\\u2197',\n '\\\\nwarrow': '\\u2196',\n '\\\\searrow': '\\u2198',\n '\\\\swarrow': '\\u2199',\n '\\\\nleftarrow': '\\u219A',\n '\\\\nrightarrow': '\\u219B',\n '\\\\nleftrightarrow': '\\u21AE',\n '\\\\nLeftarrow': '\\u21CD',\n '\\\\nRightarrow': '\\u21CF',\n '\\\\nLeftrightarrow': '\\u21CE',\n '\\\\dashleftarrow': '\\u21E0',\n '\\\\dashrightarrow': '\\u21E2',\n '\\\\mapstoleft': '\\u21A4',\n '\\\\mapsto': '\\u21A6',\n '\\\\longmapstoleft': '\\u27FB',\n '\\\\longmapsto': '\\u27FC',\n '\\\\hookleftarrow': '\\u21A9',\n '\\\\hookrightarrow': '\\u21AA',\n '\\\\leftharpoonup': '\\u21BC',\n '\\\\leftharpoondown': '\\u21BD',\n '\\\\rightharpoonup': '\\u21C0',\n '\\\\rightharpoondown': '\\u21C1',\n '\\\\upharpoonleft': '\\u21BF',\n '\\\\upharpoonright': '\\u21BE',\n '\\\\downharpoonleft': '\\u21C3',\n '\\\\downharpoonright': '\\u21C2',\n '\\\\leftrightharpoons': '\\u21CB',\n '\\\\rlhar': '\\u21CC',\n '\\\\leftleftarrows': '\\u21C7',\n '\\\\rightrightarrows': '\\u21C9',\n '\\\\upuparrows': '\\u21C8',\n '\\\\downdownarrows': '\\u21CA',\n '\\\\leftrightarrows': '\\u21C6',\n '\\\\rightleftarrows': '\\u21C4',\n '\\\\looparrowleft': '\\u21AB',\n '\\\\looparrowright': '\\u21AC',\n '\\\\leftarrowtail': '\\u21A2',\n '\\\\rightarrowtail': '\\u21A3',\n '\\\\Lsh': '\\u21B0',\n '\\\\Rsh': '\\u21B1',\n '\\\\ldsh': '\\u21B2',\n '\\\\rdsh': '\\u21B3',\n '\\\\Lleftarrow': '\\u21DA',\n '\\\\Rrightarrow': '\\u21DB',\n '\\\\twoheadleftarrow': '\\u219E',\n '\\\\twoheadrightarrow': '\\u21A0',\n '\\\\curvearrowleft': '\\u21B6',\n '\\\\curvearrowright': '\\u21B7',\n '\\\\circlearrowleft': '\\u21BA',\n '\\\\circlearrowright': '\\u21BB',\n '\\\\multimap': '\\u22B8',\n '\\\\leftrightwavearrow': '\\u21AD',\n '\\\\leftwavearrow': '\\u219C',\n '\\\\rightwavearrow': '\\u219D',\n '\\\\leftsquigarrow': '\\u21DC',\n '\\\\nsim': '\\u2241',\n '\\\\nasymp': '\\u226D',\n '\\\\lneqq': '\\u2268',\n '\\\\gneqq': '\\u2269',\n '\\\\nprec': '\\u2280',\n '\\\\nsucc': '\\u2281',\n '\\\\npreccurlyeq': '\\u22E0',\n '\\\\nsucccurlyeq': '\\u22E1',\n '\\\\notni': '\\u220C',\n '\\\\nsub': '\\u2284',\n '\\\\nsup': '\\u2285',\n '\\\\nsubseteq': '\\u2288',\n '\\\\nsupseteq': '\\u2289',\n '\\\\supsetneq': '\\u228B',\n '\\\\nsqsubseteq': '\\u22E2',\n '\\\\nsqsupseteq': '\\u22E3',\n '\\\\lnsim': '\\u22E6',\n '\\\\gnsim': '\\u22E7',\n '\\\\precnsim': '\\u22E8',\n '\\\\succnsim': '\\u22E9',\n '\\\\ntriangleleft': '\\u22EA',\n '\\\\ntriangleright': '\\u22EB',\n '\\\\ntrianglelefteq': '\\u22EC',\n '\\\\ntrianglerighteq': '\\u22ED',\n '\\\\nmid': '\\u2224',\n '\\\\nparallel': '\\u2226',\n '\\\\nvdash': '\\u22AC',\n '\\\\nvDash': '\\u22AD',\n '\\\\nVdash': '\\u22AE',\n '\\\\nVDash': '\\u22AF',\n '\\\\rightangle': '\\u221F',\n '\\\\angle': '\\u2220',\n '\\\\angmsd': '\\u2221',\n '\\\\angsph': '\\u2222',\n '\\\\angrtvb': '\\u22BE',\n '\\\\righttriangle': '\\u22BF',\n '\\\\epar': '\\u22D5',\n '\\\\colon': '\\u2236',\n '\\\\Colon': '\\u2237',\n '\\\\;': '\\u2005',\n};\n/**\n * Returns the Unicode symbol for a LaTeX command, or the input unchanged when unknown.\n *\n * @private\n */\nexport function getLatexSymbol(latex) {\n return Object.prototype.hasOwnProperty.call(LATEX_SYMBOLS, latex) ? LATEX_SYMBOLS[latex] : latex;\n}\nconst UNICODE_TO_LATEX = {\n 0x00B1: '\\\\pm',\n 0x221E: '\\\\infty',\n 0x2260: '\\\\neq',\n 0x00D7: '\\\\times',\n 0x00F7: '\\\\div',\n 0x221D: '\\\\propto',\n 0x226A: '\\\\ll',\n 0x226B: '\\\\gg',\n 0x2264: '\\\\le',\n 0x2265: '\\\\geq',\n 0x2213: '\\\\mp',\n 0x2245: '\\\\cong',\n 0x2248: '\\\\approx',\n 0x2261: '\\\\equiv',\n 0x2200: '\\\\forall',\n 0x2201: '\\\\complement',\n 0x2202: '\\\\partial',\n 0x221A: '\\\\sqrt',\n 0x221B: '\\\\cbrt',\n 0x221C: '\\\\qdrt',\n 0x222A: '\\\\cup',\n 0x2229: '\\\\cap',\n 0x2205: '\\\\emptyset',\n 0x2109: '\\\\degf',\n 0x2103: '\\\\degc',\n 0x2207: '\\\\nabla',\n 0x2203: '\\\\exists',\n 0x2204: '\\\\nexists',\n 0x2208: '\\\\in',\n 0x220B: '\\\\ni',\n 0x2190: '\\\\gets',\n 0x2191: '\\\\uparrow',\n 0x2192: '\\\\rightarrow',\n 0x2193: '\\\\downarrow',\n 0x2194: '\\\\leftrightarrow',\n 0x2234: '\\\\therefore',\n 0x00AC: '\\\\lnot',\n 0x03B1: '\\\\alpha',\n 0x03B2: '\\\\beta',\n 0x03B3: '\\\\gamma',\n 0x03B4: '\\\\delta',\n 0x03B5: '\\\\varepsilon',\n 0x03F5: '\\\\epsilon',\n 0x03B8: '\\\\theta',\n 0x03D1: '\\\\vartheta',\n 0x03BC: '\\\\mu',\n 0x03C0: '\\\\pi',\n 0x03C1: '\\\\rho',\n 0x03C3: '\\\\sigma',\n 0x03C4: '\\\\tau',\n 0x03C6: '\\\\varphi',\n 0x03C9: '\\\\omega',\n 0x002A: '\\\\ast',\n 0x2219: '\\\\bullet',\n 0x22EE: '\\\\vdots',\n 0x22EF: '\\\\cdots',\n 0x22F1: '\\\\ddots',\n 0x2135: '\\\\aleph',\n 0x2136: '\\\\beth',\n 0x220E: '\\\\qed',\n 0x03B6: '\\\\zeta',\n 0x03B7: '\\\\eta',\n 0x03B9: '\\\\iota',\n 0x03BA: '\\\\kappa',\n 0x03BB: '\\\\lambda',\n 0x03BD: '\\\\nu',\n 0x03BE: '\\\\xi',\n 0x03D6: '\\\\varpi',\n 0x03F1: '\\\\varrho',\n 0x03C2: '\\\\varsigma',\n 0x03C5: '\\\\upsilon',\n 0x03D5: '\\\\phi',\n 0x03C7: '\\\\chi',\n 0x03C8: '\\\\psi',\n 0x0393: '\\\\Gamma',\n 0x0394: '\\\\Delta',\n 0x0398: '\\\\Theta',\n 0x039B: '\\\\Lambda',\n 0x039E: '\\\\Xi',\n 0x03A0: '\\\\Pi',\n 0x03A3: '\\\\Sigma',\n 0x03A5: '\\\\Upsilon',\n 0x03A6: '\\\\Phi',\n 0x03A8: '\\\\Psi',\n 0x03A9: '\\\\Omega',\n 0x210F: '\\\\hbar',\n 0x0131: '\\\\imath',\n 0x03F0: '\\\\varkappa',\n 0x2118: '\\\\wp',\n 0x2137: '\\\\gimel',\n 0x2138: '\\\\daleth',\n 0x2218: '\\\\circ',\n 0x22C5: '\\\\cdot',\n 0x228E: '\\\\uplus',\n 0x2293: '\\\\sqcap',\n 0x2294: '\\\\sqcup',\n 0x2227: '\\\\land',\n 0x2228: '\\\\vee',\n 0x226E: '\\\\nless',\n 0x2270: '\\\\nleq',\n 0x226F: '\\\\ngt',\n 0x2271: '\\\\ngeq',\n 0x223C: '\\\\sim',\n 0x2243: '\\\\simeq',\n 0x2262: '\\\\nequiv',\n 0x2244: '\\\\nsimeq',\n 0x2249: '\\\\napprox',\n 0x2247: '\\\\ncong',\n 0x2209: '\\\\notin',\n 0x2282: '\\\\subset',\n 0x2283: '\\\\supset',\n 0x2286: '\\\\subseteq',\n 0x2287: '\\\\supseteq',\n 0x227A: '\\\\prcue',\n 0x227B: '\\\\succ',\n 0x227C: '\\\\preccurlyeq',\n 0x227D: '\\\\succcurlyeq',\n 0x228F: '\\\\sqsubset',\n 0x2290: '\\\\sqsupset',\n 0x2291: '\\\\sqsubseteq',\n 0x2292: '\\\\sqsupseteq',\n 0x2225: '\\\\parallel',\n 0x22A5: '\\\\bot',\n 0x22A2: '\\\\vdash',\n 0x22A3: '\\\\dashv',\n 0x22C8: '\\\\bowtie',\n 0x224D: '\\\\asymp',\n 0x2214: '\\\\dotplus',\n 0x2238: '\\\\dotminus',\n 0x2216: '\\\\setminus',\n 0x22D2: '\\\\Cap',\n 0x22D3: '\\\\Cup',\n 0x229F: '\\\\boxminus',\n 0x22A0: '\\\\boxtimes',\n 0x22A1: '\\\\boxdot',\n 0x229E: '\\\\boxplus',\n 0x22C7: '\\\\divideontimes',\n 0x22C9: '\\\\ltimes',\n 0x22CA: '\\\\rtimes',\n 0x22CB: '\\\\leftthreetimes',\n 0x22CC: '\\\\rightthreetimes',\n 0x22CF: '\\\\curlywedge',\n 0x22CE: '\\\\curlyvee',\n 0x229D: '\\\\odash',\n 0x22BA: '\\\\intercal',\n 0x2295: '\\\\oplus',\n 0x2296: '\\\\ominus',\n 0x2297: '\\\\otimes',\n 0x2298: '\\\\oslash',\n 0x2299: '\\\\odot',\n 0x229B: '\\\\oast',\n 0x229A: '\\\\ocirc',\n 0x2020: '\\\\dag',\n 0x2021: '\\\\ddag',\n 0x22C6: '\\\\star',\n 0x22C4: '\\\\diamond',\n 0x2240: '\\\\wr',\n 0x25B3: '\\\\triangle',\n 0x22C0: '\\\\bigwedge',\n 0x22C1: '\\\\bigvee',\n 0x2A00: '\\\\bigodot',\n 0x2A02: '\\\\bigotimes',\n 0x2A01: '\\\\bigoplus',\n 0x2A05: '\\\\bigsqcap',\n 0x2A06: '\\\\bigsqcup',\n 0x2A04: '\\\\biguplus',\n 0x2A03: '\\\\bigudot',\n 0x2235: '\\\\because',\n 0x22D8: '\\\\lll',\n 0x22D9: '\\\\ggg',\n 0x2266: '\\\\leqq',\n 0x2267: '\\\\geqq',\n 0x2272: '\\\\lesssim',\n 0x2273: '\\\\gtrsim',\n 0x22D6: '\\\\lessdot',\n 0x22D7: '\\\\gtrdot',\n 0x2276: '\\\\lessgtr',\n 0x22DA: '\\\\lesseqgtr',\n 0x2277: '\\\\gtrless',\n 0x22DB: '\\\\gtreqless',\n 0x2251: '\\\\Doteq',\n 0x2252: '\\\\fallingdotseq',\n 0x2253: '\\\\risingdotseq',\n 0x223D: '\\\\backsim',\n 0x224A: '\\\\approxeq',\n 0x22CD: '\\\\backsimeq',\n 0x22DE: '\\\\curlyeqprec',\n 0x22DF: '\\\\curlyeqsucc',\n 0x227E: '\\\\precsim',\n 0x227F: '\\\\succsim',\n 0x22DC: '\\\\eqless',\n 0x22DD: '\\\\eqgtr',\n 0x22B2: '\\\\vartriangleleft',\n 0x22B3: '\\\\vartriangleright',\n 0x22B4: '\\\\trianglelefteq',\n 0x22B5: '\\\\trianglerighteq',\n 0x22A8: '\\\\models',\n 0x22D0: '\\\\Subset',\n 0x22D1: '\\\\Supset',\n 0x22A9: '\\\\Vdash',\n 0x22AA: '\\\\Vvdash',\n 0x2256: '\\\\eqcirc',\n 0x2257: '\\\\circeq',\n 0x225C: '\\\\Deltaeq',\n 0x224F: '\\\\bumpeq',\n 0x224E: '\\\\Bumpeq',\n 0x226C: '\\\\between',\n 0x22D4: '\\\\pitchfork',\n 0x2250: '\\\\doteq',\n 0x2195: '\\\\updownarrow',\n 0x21D0: '\\\\Leftarrow',\n 0x21D2: '\\\\Rightarrow',\n 0x21D1: '\\\\Uparrow',\n 0x21D3: '\\\\Downarrow',\n 0x21D4: '\\\\Leftrightarrow',\n 0x21D5: '\\\\Updownarrow',\n 0x27F5: '\\\\longleftarrow',\n 0x27F6: '\\\\longrightarrow',\n 0x27F7: '\\\\longleftrightarrow',\n 0x27F8: '\\\\Longleftarrow',\n 0x27F9: '\\\\Longrightarrow',\n 0x27FA: '\\\\Longleftrightarrow',\n 0x2197: '\\\\nearrow',\n 0x2196: '\\\\nwarrow',\n 0x2198: '\\\\searrow',\n 0x2199: '\\\\swarrow',\n 0x219A: '\\\\nleftarrow',\n 0x219B: '\\\\nrightarrow',\n 0x21AE: '\\\\nleftrightarrow',\n 0x21CD: '\\\\nLeftarrow',\n 0x21CF: '\\\\nRightarrow',\n 0x21CE: '\\\\nLeftrightarrow',\n 0x21E0: '\\\\dashleftarrow',\n 0x21E2: '\\\\dashrightarrow',\n 0x21A4: '\\\\mapstoleft',\n 0x21A6: '\\\\mapsto',\n 0x27FB: '\\\\longmapstoleft',\n 0x27FC: '\\\\longmapsto',\n 0x21A9: '\\\\hookleftarrow',\n 0x21AA: '\\\\hookrightarrow',\n 0x21BC: '\\\\leftharpoonup',\n 0x21BD: '\\\\leftharpoondown',\n 0x21C0: '\\\\rightharpoonup',\n 0x21C1: '\\\\rightharpoondown',\n 0x21BF: '\\\\upharpoonleft',\n 0x21BE: '\\\\upharpoonright',\n 0x21C3: '\\\\downharpoonleft',\n 0x21C2: '\\\\downharpoonright',\n 0x21CB: '\\\\leftrightharpoons',\n 0x21CC: '\\\\rlhar',\n 0x21C7: '\\\\leftleftarrows',\n 0x21C9: '\\\\rightrightarrows',\n 0x21C8: '\\\\upuparrows',\n 0x21CA: '\\\\downdownarrows',\n 0x21C6: '\\\\leftrightarrows',\n 0x21C4: '\\\\rightleftarrows',\n 0x21AB: '\\\\looparrowleft',\n 0x21AC: '\\\\looparrowright',\n 0x21A2: '\\\\leftarrowtail',\n 0x21A3: '\\\\rightarrowtail',\n 0x21B0: '\\\\Lsh',\n 0x21B1: '\\\\Rsh',\n 0x21B2: '\\\\ldsh',\n 0x21B3: '\\\\rdsh',\n 0x21DA: '\\\\Lleftarrow',\n 0x21DB: '\\\\Rrightarrow',\n 0x219E: '\\\\twoheadleftarrow',\n 0x21A0: '\\\\twoheadrightarrow',\n 0x21B6: '\\\\curvearrowleft',\n 0x21B7: '\\\\curvearrowright',\n 0x21BA: '\\\\circlearrowleft',\n 0x21BB: '\\\\circlearrowright',\n 0x22B8: '\\\\multimap',\n 0x21AD: '\\\\leftrightwavearrow',\n 0x219C: '\\\\leftwavearrow',\n 0x219D: '\\\\rightwavearrow',\n 0x21DC: '\\\\leftsquigarrow',\n 0x2241: '\\\\nsim',\n 0x226D: '\\\\nasymp',\n 0x2268: '\\\\lneqq',\n 0x2269: '\\\\gneqq',\n 0x2280: '\\\\nprec',\n 0x2281: '\\\\nsucc',\n 0x22E0: '\\\\npreccurlyeq',\n 0x22E1: '\\\\nsucccurlyeq',\n 0x220C: '\\\\notni',\n 0x2284: '\\\\nsub',\n 0x2285: '\\\\nsup',\n 0x2288: '\\\\nsubseteq',\n 0x2289: '\\\\nsupseteq',\n 0x228B: '\\\\supsetneq',\n 0x22E2: '\\\\nsqsubseteq',\n 0x22E3: '\\\\nsqsupseteq',\n 0x22E6: '\\\\lnsim',\n 0x22E7: '\\\\gnsim',\n 0x22E8: '\\\\precnsim',\n 0x22E9: '\\\\succnsim',\n 0x22EA: '\\\\ntriangleleft',\n 0x22EB: '\\\\ntriangleright',\n 0x22EC: '\\\\ntrianglelefteq',\n 0x22ED: '\\\\ntrianglerighteq',\n 0x2224: '\\\\nmid',\n 0x2226: '\\\\nparallel',\n 0x22AC: '\\\\nvdash',\n 0x22AD: '\\\\nvDash',\n 0x22AE: '\\\\nVdash',\n 0x22AF: '\\\\nVDash',\n 0x221F: '\\\\rightangle',\n 0x2220: '\\\\angle',\n 0x2221: '\\\\angmsd',\n 0x2222: '\\\\angsph',\n 0x22BE: '\\\\angrtvb',\n 0x22BF: '\\\\righttriangle',\n 0x22D5: '\\\\epar',\n 0x2236: '\\\\colon',\n 0x2237: '\\\\Colon',\n};\n/**\n * Returns the LaTeX command for a Unicode symbol (compression `GetSymbolLaTeX`), or undefined.\n * `l` maps to `\\\\ell` only for the script font.\n *\n * @private\n */\nexport function getSymbolLatex(char, isScriptFont) {\n const code = char.charCodeAt(0);\n if (code === 108) {\n return isScriptFont ? '\\\\ell' : undefined;\n }\n return UNICODE_TO_LATEX[code];\n}\n","/**\n * LaTeX → Office Math model parser.\n *\n * Port of compression `LaTeXConverter.ParseMathPara` (Syncfusion.Office MathML).\n * The scanning rules intentionally mirror the .NET implementation (including\n * Microsoft Word's tolerant handling of malformed input, which degrades to plain\n * text runs).\n *\n * @packageDocumentation\n */\nimport { MathFontType, MathFractionType, MathFunctionType, MathHorizontalAlignment, MathLimitType, MathScriptType, MathStyleType } from '../office-math/enums';\nimport { OfficeMathParagraph } from '../office-math/math-paragraph';\nimport { getLatexSymbol } from './latex-symbols';\n// Built at runtime: Unicode property escapes need the `u` flag, which ES5 compile targets reject in literals.\nconst LETTER = new RegExp('^\\\\p{L}$', 'u');\nconst LETTER_OR_DIGIT = new RegExp('^[\\\\p{L}\\\\p{Nd}]$', 'u');\nconst GROUP_START = '{';\nconst GROUP_END = '}';\nconst SQUARE_START = '[';\nconst SQUARE_END = ']';\nconst CONTROL_START = '\\\\';\nconst SPACE = ' ';\nconst MATRIX_ROW_END = '\\\\\\\\';\nconst MATRIX_COL_END = '&';\nconst SUPER = '^';\nconst SUB = '_';\nconst LOW_LIMIT = '\\\\below';\nconst ACCENTS = {\n '\\\\dot': 775, '\\\\ddot': 776, '\\\\dddot': 8411, '\\\\hat': 770, '\\\\widehat': 770, '\\\\check': 780, '\\\\acute': 769,\n '\\\\grave': 768, '\\\\breve': 774, '\\\\widetilde': 771, '\\\\bar': 773, '\\\\vec': 8407, '\\\\hvec': 8401,\n};\nconst FUNCTIONS = ['\\\\sin', '\\\\cos', '\\\\tan', '\\\\cot', '\\\\sec', '\\\\csc', '\\\\sinh', '\\\\cosh', '\\\\tanh', '\\\\coth', '\\\\sech', '\\\\csch',\n '\\\\arcsin', '\\\\arccos', '\\\\arctan', '\\\\log', '\\\\lim', '\\\\min', '\\\\max', '\\\\ln'];\nconst NARY = {\n '\\\\sum': 8721, '\\\\int': 8747, '\\\\iint': 8748, '\\\\iiint': 8749, '\\\\oint': 8750, '\\\\oiint': 8751, '\\\\oiiint': 8752,\n '\\\\cwint': 8753, '\\\\coint': 8754, '\\\\aoint': 8755, '\\\\prod': 8719, '\\\\amalg': 8720, '\\\\bigcap': 8898, '\\\\bigcup': 8899,\n '\\\\bigwedge': 8896, '\\\\bigvee': 8897, '\\\\bigodot': 10752, '\\\\bigotimes': 10754, '\\\\bigoplus': 10753,\n '\\\\biguplus': 10756, '\\\\bigudot': 10755,\n};\nconst DELIMITERS = {\n '\\\\lfloor': '\\u230A', '\\\\rfloor': '\\u230B', '\\\\lceil': '\\u2308', '\\\\rceil': '\\u2309', '\\\\langle': '\\u2329', '\\\\rangle': '\\u232A',\n '.': '', '|': '|', '(': '(', ')': ')', '[': '[', ']': ']', '{': '{', '}': '}',\n};\nconst FONT_COMMANDS = {\n '\\\\mathbb': MathFontType.DoubleStruck, '\\\\mathfrak': MathFontType.Fraktur, '\\\\mathtt': MathFontType.Monospace,\n '\\\\mathsf': MathFontType.SansSerif, '\\\\mathcal': MathFontType.Script, '\\\\mathscr': MathFontType.Script,\n};\nconst STYLE_COMMANDS = {\n '\\\\mathbit': MathStyleType.BoldItalic, '\\\\mathbf': MathStyleType.Bold,\n};\n/** Mutable run accumulated while scanning; merged while formatting is unchanged. */\nclass RunBuf {\n constructor(text, sty, scr, nor) {\n this.text = text;\n this.sty = sty;\n this.scr = scr;\n this.nor = nor;\n }\n}\nfunction finalize(seq, target) {\n seq.forEach(i => (i instanceof RunBuf ? addRun(i, target) : i.make(target)));\n}\nfunction addRun(r, target) {\n const run = target.functions.add(MathFunctionType.RunElement);\n run.text = r.text;\n if (r.sty !== undefined) {\n run.mathFormat.style = r.sty;\n }\n if (r.scr !== undefined) {\n run.mathFormat.font = r.scr;\n }\n if (r.nor) {\n run.mathFormat.hasNormalText = true;\n }\n}\nfunction add(target, type) {\n return target.functions.add(type);\n}\nfunction chr(code) {\n return String.fromCharCode(code);\n}\nfunction nz(value) {\n return value === null ? '' : value;\n}\nfunction hasScriptPair(s) {\n return (s.startsWith(SUB) && s.includes(SUPER)) || (s.startsWith(SUPER) && s.includes(SUB));\n}\nfunction trimBackslash(s) {\n return s.replace(/^\\\\+|\\\\+$/g, '');\n}\n/**\n * Stateful LaTeX scanner/parser. One instance per conversion.\n *\n * @private\n */\nexport class LatexParser {\n constructor() {\n this.latex = '';\n this.pos = 0;\n this.cur = null;\n this.useExisting = false;\n this.current = null;\n this.roots = [];\n this.nor = false;\n }\n /** Appends one `m:oMath` per top-level equation of `latex` to `target`, through its collections and adapter. */\n populate(latex, target) {\n this.latex = latex;\n this.parseEquation();\n target.suspendMutations(() => this.roots.forEach(r => finalize(r, target.maths.add())));\n }\n // ─── Scanner ──────────────────────────────────────────────────────────────\n next() {\n if (this.pos > this.latex.length - 1) {\n return null;\n }\n let el = this.latex[this.pos];\n this.pos++;\n this.cur = el;\n if (el === CONTROL_START) {\n while (this.pos < this.latex.length && (LETTER.test(this.latex[this.pos]) || this.latex[this.pos] === ';')) {\n el += this.latex[this.pos];\n this.pos++;\n }\n this.cur = el;\n }\n return this.cur;\n }\n ensure() {\n if (this.current === null) {\n this.current = [];\n this.roots.push(this.current);\n }\n return this.current;\n }\n sub(text, target) {\n if (text === null) {\n return;\n }\n const saved = { latex: this.latex, current: this.current, pos: this.pos, cur: this.cur, use: this.useExisting };\n this.latex = text;\n this.current = target;\n this.pos = 0;\n this.cur = null;\n this.useExisting = false;\n this.parseEquation();\n this.latex = saved.latex;\n this.current = saved.current;\n this.pos = saved.pos;\n this.cur = saved.cur;\n this.useExisting = saved.use;\n }\n fill(text) {\n const seq = [];\n this.sub(text, seq);\n return seq;\n }\n add(make) {\n this.ensure().push({ make });\n }\n setRun(text) {\n if (text.length === 0) {\n return;\n }\n const seq = this.ensure();\n const t = text.startsWith('\\\\') ? getLatexSymbol(text) : text;\n const last = seq[seq.length - 1];\n if (last instanceof RunBuf && last.sty === this.sty && last.scr === this.scr && last.nor === this.nor) {\n last.text += t;\n }\n else {\n seq.push(new RunBuf(t, this.sty, this.scr, this.nor));\n }\n }\n fallbackRun(startPos) {\n this.setRun(this.latex.substring(startPos, this.pos));\n }\n // ─── Group helpers ────────────────────────────────────────────────────────\n equationString() {\n this.cur = this.next();\n let result = null;\n let valid = false;\n let notInGroup = false;\n if (this.cur === GROUP_START) {\n const g = this.group();\n valid = g.ok;\n result = g.text;\n }\n else {\n notInGroup = true;\n }\n if (notInGroup && this.cur !== null && this.cur.length === 1 && (LETTER_OR_DIGIT.test(this.cur) || this.cur === SPACE)) {\n result = this.cur;\n }\n else if (!valid) {\n result = null;\n }\n return result;\n }\n group() {\n if (this.cur !== GROUP_START) {\n return { ok: false, text: '' };\n }\n let text = '';\n let depth = 1;\n while (depth > 0 && this.pos < this.latex.length) {\n this.cur = this.next();\n if (this.cur === GROUP_START) {\n depth++;\n text += this.cur;\n }\n else if (this.cur === GROUP_END) {\n if (depth !== 1) {\n text += this.cur;\n }\n depth--;\n }\n else if (this.cur === '\\\\left') {\n const d = this.delimiter();\n text += d.text;\n if (!d.ok) {\n return { ok: false, text };\n }\n }\n else {\n text += nz(this.cur);\n }\n }\n return { ok: depth === 0, text };\n }\n squareGroup() {\n if (this.cur !== SQUARE_START) {\n return null;\n }\n let text = '';\n let depth = 1;\n while (depth > 0 && this.pos < this.latex.length) {\n this.cur = this.next();\n if (this.cur === SQUARE_START) {\n depth++;\n text += this.cur;\n }\n else if (this.cur === SQUARE_END) {\n if (depth !== 1) {\n text += this.cur;\n }\n depth--;\n }\n else {\n text += nz(this.cur);\n }\n }\n return text;\n }\n // ─── Main loop ────────────────────────────────────────────────────────────\n parseEquation() {\n while (this.pos < this.latex.length || this.useExisting) {\n if (this.useExisting) {\n this.useExisting = false;\n }\n else {\n this.cur = this.next();\n }\n this.dispatch(nz(this.cur), this.cur);\n }\n }\n dispatch(c, raw) {\n if (raw === null) {\n this.parseDefault();\n }\n else if (ACCENTS[c] !== undefined) {\n this.parseAccent();\n }\n else if (c === '\\\\overline' || c === '\\\\underline') {\n this.parseBar();\n }\n else if (c === '\\\\box') {\n this.parseBox();\n }\n else if (c === '\\\\fbox' || c === '\\\\boxed') {\n this.parseBorderBox();\n }\n else if (c === '\\\\left') {\n this.parseDelimiter();\n }\n else if (c === '\\\\eqarray') {\n this.parseEqArray();\n }\n else if (c === '\\\\frac' || c === '\\\\sfrac' || c === '\\\\binom') {\n this.parseFraction();\n }\n else if (FUNCTIONS.indexOf(c) !== -1) {\n this.parseFunction();\n }\n else if (c === '\\\\overbrace' || c === '\\\\underbrace') {\n this.parseGroupChar();\n }\n else if (c === '\\\\begin') {\n this.parseMatrix();\n }\n else if (NARY[c] !== undefined) {\n this.parseNary();\n }\n else if (c === '\\\\sqrt') {\n this.parseRadical();\n }\n else if (c === GROUP_START) {\n this.parseGroupStart();\n }\n else if (STYLE_COMMANDS[c] !== undefined) {\n this.parseFormat(c, 'sty', STYLE_COMMANDS[c]);\n }\n else if (FONT_COMMANDS[c] !== undefined) {\n this.parseFormat(c, 'scr', FONT_COMMANDS[c]);\n }\n else if (c === '\\\\mathrm') {\n this.parseFormat(c, 'nor', true);\n }\n else {\n this.parseDefault();\n }\n }\n parseDefault() {\n const startPos = this.pos;\n const previous = nz(this.cur);\n this.cur = this.next();\n if (this.cur === SUPER || this.cur === SUB) {\n this.parseScript(previous, startPos - previous.length);\n return;\n }\n if (this.cur !== null) {\n this.useExisting = true;\n }\n if (this.cur === SPACE) {\n if (previous === '\\\\') {\n return;\n }\n if (previous.startsWith('\\\\') && getLatexSymbol(previous) !== previous) {\n this.useExisting = false;\n }\n }\n this.setRun(previous);\n }\n parseFormat(start, kind, value) {\n const laTexPos = this.pos;\n this.cur = this.next();\n if (this.cur !== GROUP_START) {\n this.setRun(start);\n this.useExisting = true;\n return;\n }\n const g = this.group();\n if (!g.ok) {\n this.fallbackRun(laTexPos - start.length);\n return;\n }\n const old = { sty: this.sty, scr: this.scr, nor: this.nor };\n if (kind === 'sty' && this.sty === undefined) {\n this.sty = value;\n }\n else if (kind === 'scr' && this.scr === undefined) {\n this.scr = value;\n }\n else if (kind === 'nor') {\n this.nor = true;\n }\n this.sub(g.text, this.current);\n this.sty = old.sty;\n this.scr = old.scr;\n this.nor = old.nor;\n }\n /** `\\cmd{...}` / `\\cmd x` argument shared by accent, bar, box, border box, group char. */\n oneArg() {\n const at = this.pos;\n const start = nz(this.cur);\n let text = this.equationString();\n if (text === SPACE && this.cur === SPACE) {\n text = this.equationString();\n }\n return { start, at, text };\n }\n parseAccent() {\n const { start, at, text } = this.oneArg();\n if (text === null && this.cur !== null) {\n this.fallbackRun(at - start.length);\n return;\n }\n let chrCode = chr(ACCENTS[start]);\n let body = text;\n if (body && body.startsWith('\\\\bar{') && body.endsWith(GROUP_END) && chrCode === chr(773)) {\n chrCode = chr(831);\n body = body.substring(5, body.length - 1);\n }\n const inner = body ? this.fill(body) : [];\n this.add(t => {\n const f = add(t, MathFunctionType.Accent);\n f.accentCharacter = chrCode;\n finalize(inner, f.equation);\n });\n }\n parseBar() {\n const { start, at, text } = this.oneArg();\n if (text === null && this.cur !== null) {\n this.fallbackRun(at - start.length);\n return;\n }\n this.cur = this.next();\n if (this.cur === SUPER || this.cur === SUB) {\n this.parseScript(`${start}${GROUP_START}${nz(text)}${GROUP_END}`, at);\n return;\n }\n if (this.cur !== null) {\n this.useExisting = true;\n }\n const inner = text ? this.fill(text) : [];\n const pos = start === '\\\\overline' ? 'top' : 'bot';\n this.add(t => {\n const f = add(t, MathFunctionType.Bar);\n f.barTop = pos === 'top';\n finalize(inner, f.equation);\n });\n }\n parseBox() {\n const { start, at, text } = this.oneArg();\n if (text === null && this.cur !== null) {\n this.fallbackRun(at - start.length);\n return;\n }\n const inner = text ? this.fill(text) : [];\n this.add(t => {\n const f = add(t, MathFunctionType.Box);\n f.noBreak = false;\n finalize(inner, f.equation);\n });\n }\n parseBorderBox() {\n const { start, at, text } = this.oneArg();\n if (text === null && this.cur !== null) {\n this.fallbackRun(at - start.length);\n return;\n }\n this.cur = this.next();\n if (this.cur === SUPER || this.cur === SUB) {\n this.parseScript(`${start}${GROUP_START}${nz(text)}${GROUP_END}`, at);\n return;\n }\n if (this.cur !== null) {\n this.useExisting = true;\n }\n const inner = text ? this.fill(text) : [];\n this.add(t => finalize(inner, add(t, MathFunctionType.BorderBox).equation));\n }\n // ─── Delimiter / eqArray ──────────────────────────────────────────────────\n delimiterChar(eq) {\n this.cur = this.next();\n eq.s += nz(this.cur);\n if (this.cur === CONTROL_START) {\n this.cur = this.next();\n eq.s += nz(this.cur);\n }\n const key = nz(this.cur);\n return Object.prototype.hasOwnProperty.call(DELIMITERS, key) ? DELIMITERS[key] : null;\n }\n delimiter() {\n const r = { ok: false, begin: null, end: null, sep: null, list: [], text: '' };\n const eq = { s: nz(this.cur) };\n let depth = 1;\n r.begin = this.delimiterChar(eq);\n if (r.begin === null) {\n r.text = eq.s;\n return r;\n }\n let between = '';\n while (depth > 0 && this.pos < this.latex.length) {\n const el = nz(this.next());\n eq.s += el;\n if (el === '\\\\left') {\n between += el;\n depth++;\n }\n else if (el === '\\\\right') {\n if (depth === 1) {\n r.list.push(between.trim());\n r.end = this.delimiterChar(eq);\n if (r.end === null) {\n r.text = eq.s;\n return r;\n }\n }\n else {\n between += el;\n }\n depth--;\n }\n else if (el === '\\\\middle') {\n if (depth === 1) {\n const mid = this.delimiterChar(eq);\n if (mid === null) {\n r.text = eq.s;\n return r;\n }\n if (r.sep === null) {\n r.sep = mid;\n }\n r.list.push(between.trim());\n between = '';\n }\n else {\n between += el;\n }\n }\n else {\n between += el;\n }\n }\n r.ok = depth === 0;\n r.text = eq.s;\n return r;\n }\n parseDelimiter() {\n const at = this.pos;\n const start = nz(this.cur);\n const d = this.delimiter();\n if (!d.ok) {\n this.setRun(this.latex.substring(at - start.length, this.pos).replace(/\\\\ /g, ' '));\n return;\n }\n this.cur = this.next();\n if (this.cur === SUPER || this.cur === SUB) {\n this.parseScript(d.text, at);\n return;\n }\n if (this.cur !== null) {\n this.useExisting = true;\n }\n const args = d.list.map(e => this.fill(e));\n const props = { begChr: nz(d.begin), endChr: nz(d.end) };\n if (d.sep !== null) {\n props.sepChr = d.sep;\n }\n this.add(t => {\n const f = add(t, MathFunctionType.Delimiter);\n f.beginCharacter = props.begChr;\n f.endCharacter = props.endChr;\n if (props.sepChr !== undefined) {\n f.separator = props.sepChr;\n }\n args.forEach(a => finalize(a, f.equations.add()));\n });\n }\n splitEqArray(text) {\n const list = [];\n let between = '';\n if (text !== null) {\n for (let p = 0; p < text.length; p++) {\n if (text[p] === '@') {\n if (text.substring(p).includes('&') || text.substring(p + 1).includes('@')) {\n list.push(between.trim());\n between = '';\n }\n }\n else {\n between += text[p];\n }\n }\n list.push(between.trim());\n }\n return list;\n }\n parseEqArray() {\n const at = this.pos;\n const start = nz(this.cur);\n const text = this.equationString();\n if (text === null && this.cur !== null) {\n this.fallbackRun(at - start.length);\n return;\n }\n const parts = this.splitEqArray(text).map(e => this.fill(e));\n this.add(t => {\n const f = add(t, MathFunctionType.EquationArray);\n if (parts.length === 0) {\n f.equations.add();\n }\n parts.forEach(p => finalize(p, f.equations.add()));\n });\n }\n // ─── Fraction / function / group char / limit ─────────────────────────────\n parseFraction() {\n const at = this.pos;\n const start = nz(this.cur);\n let num = this.equationString();\n if (this.cur === SPACE && num === SPACE) {\n num = this.equationString();\n }\n let den = '';\n if ((this.cur === SPACE && num === SPACE) || (this.cur === null && num === null)) {\n num = '';\n }\n else {\n den = this.equationString();\n }\n if (num === null || den === null) {\n this.fallbackRun(at - start.length);\n return;\n }\n this.cur = this.next();\n if (this.cur === SUPER || this.cur === SUB) {\n this.parseScript(`${start}${GROUP_START}${num}${GROUP_END}${GROUP_START}${den}${GROUP_END}`, at);\n return;\n }\n if (this.cur !== null) {\n this.useExisting = true;\n }\n if (start === '\\\\binom') {\n this.binomial(num, den);\n return;\n }\n const type = start === '\\\\sfrac' ? MathFractionType.SkewedFractionBar : MathFractionType.NormalFractionBar;\n this.fraction(type, num, den);\n }\n fraction(type, num, den) {\n const n = num !== '' ? this.fill(num) : [];\n const d = den !== '' ? this.fill(den) : [];\n this.add(t => {\n const f = add(t, MathFunctionType.Fraction);\n f.fractionType = type;\n finalize(n, f.numerator);\n finalize(d, f.denominator);\n });\n }\n /** `\\binom{n}{k}`: a parenthesis delimiter around a no-bar fraction (Word's binomial coefficient). */\n binomial(num, den) {\n const n = num !== '' ? this.fill(num) : [];\n const d = den !== '' ? this.fill(den) : [];\n this.add(t => {\n const delimiter = add(t, MathFunctionType.Delimiter);\n delimiter.beginCharacter = '(';\n delimiter.endCharacter = ')';\n const f = add(delimiter.equations.add(), MathFunctionType.Fraction);\n f.fractionType = MathFractionType.NoFractionBar;\n finalize(n, f.numerator);\n finalize(d, f.denominator);\n });\n }\n parseNoFractionBar(numerator, startPos) {\n if (this.cur !== '\\\\atop') {\n return;\n }\n let den = this.equationString();\n if (this.cur === den) {\n den = null;\n }\n if (den === null) {\n this.fallbackRun(startPos);\n return;\n }\n this.fraction(MathFractionType.NoFractionBar, numerator, den);\n }\n parseFunction() {\n const at = this.pos;\n const start = nz(this.cur);\n let body = this.equationString();\n let scriptKind = null;\n let scriptText = null;\n if (this.cur === SUPER || this.cur === SUB || this.cur === LOW_LIMIT) {\n scriptKind = this.cur === SUPER ? 'sup' : this.cur === SUB ? 'sub' : 'limit';\n scriptText = this.equationString();\n if (scriptText === this.cur) {\n body = this.equationString();\n if (body !== null && body === this.cur) {\n body = '';\n this.useExisting = true;\n }\n }\n else {\n body = this.equationString();\n }\n }\n if (body === null) {\n this.fallbackRun(at - start.length);\n return;\n }\n const name = trimBackslash(start);\n const nameSeq = [];\n let make;\n if (scriptKind === 'sup' || scriptKind === 'sub') {\n const base = this.fill(name);\n this.regular(base);\n const script = scriptText !== null ? this.fill(scriptText) : [];\n make = f => {\n const sc = add(f.functionName, MathFunctionType.SubSuperscript);\n sc.scriptType = scriptKind === 'sup' ? MathScriptType.Superscript : MathScriptType.Subscript;\n finalize(base, sc.equation);\n finalize(script, sc.script);\n };\n }\n else if (scriptKind === 'limit') {\n const base = this.fill(name);\n this.regular(base);\n const lim = scriptText !== null ? this.fill(scriptText) : [];\n make = f => {\n const l = add(f.functionName, MathFunctionType.Limit);\n l.limitType = MathLimitType.LowerLimit;\n finalize(base, l.equation);\n finalize(lim, l.limit);\n };\n }\n else {\n const saved = this.current;\n this.current = nameSeq;\n this.setRun(name);\n this.current = saved;\n this.regular(nameSeq);\n make = f => finalize(nameSeq, f.functionName);\n }\n this.ensure();\n const inner = body !== '' ? this.fill(body) : [];\n this.add(t => {\n const f = add(t, MathFunctionType.Function);\n make(f);\n finalize(inner, f.equation);\n });\n }\n regular(seq) {\n const first = seq[0];\n if (first instanceof RunBuf) {\n first.sty = MathStyleType.Regular;\n }\n }\n parseGroupChar() {\n const { start, at, text } = this.oneArg();\n if (text === null && this.cur !== null) {\n this.fallbackRun(at - start.length);\n return;\n }\n const inner = text ? this.fill(text) : [];\n const over = start === '\\\\overbrace';\n this.add(t => {\n const f = add(t, MathFunctionType.GroupCharacter);\n if (over) {\n f.groupCharacter = chr(9182);\n f.hasAlignTop = false;\n f.hasCharacterTop = true;\n }\n finalize(inner, f.equation);\n });\n }\n /** Compares the current element without TypeScript narrowing across mutating calls. */\n isCurrent(value) {\n return this.cur === value;\n }\n parseLimit(equation, startPos) {\n if (!this.isCurrent(LOW_LIMIT)) {\n return;\n }\n let lim = this.equationString();\n if (lim === SPACE && this.isCurrent(SPACE)) {\n lim = this.equationString();\n }\n if (lim === null) {\n this.fallbackRun(startPos);\n return;\n }\n const base = this.fill(equation);\n const limit = lim !== SPACE ? this.fill(lim) : [];\n this.add(t => {\n const f = add(t, MathFunctionType.Limit);\n f.limitType = MathLimitType.LowerLimit;\n finalize(base, f.equation);\n finalize(limit, f.limit);\n });\n }\n // ─── Matrix ───────────────────────────────────────────────────────────────\n parseMatrix() {\n const at = this.pos;\n const start = nz(this.cur);\n this.cur = this.next();\n if (this.cur !== GROUP_START) {\n this.setRun(start);\n this.useExisting = true;\n return;\n }\n const g = this.group();\n const m = g.ok && g.text === 'matrix' ? this.matrixRows() : null;\n if (m === null) {\n this.fallbackRun(at - start.length);\n return;\n }\n this.cur = this.next();\n if (this.cur === SUPER || this.cur === SUB) {\n this.parseScript(this.latex.substring(at - start.length, this.pos - 1), at);\n return;\n }\n if (this.cur !== null) {\n this.useExisting = true;\n }\n const rows = m.rows.map(cols => {\n const cells = [];\n for (let i = 0; i < m.maxCols; i++) {\n cells.push(i < cols.length ? this.fill(cols[i]) : []);\n }\n return cells;\n });\n const columnCount = m.maxCols;\n this.add(t => {\n const f = add(t, MathFunctionType.Matrix);\n for (let i = 0; i < columnCount; i++) {\n f.columns.add().horizontalAlignment = MathHorizontalAlignment.Center;\n }\n rows.forEach(r => {\n const row = f.rows.add();\n r.forEach((c, i) => finalize(c, row.arguments.getItem(i)));\n });\n });\n }\n matrixRows() {\n const rows = [];\n let maxCols = 0;\n let depth = 1;\n let between = '';\n let cols = [];\n const endRow = () => {\n cols.push(between);\n between = '';\n maxCols = Math.max(maxCols, cols.length);\n rows.push(cols);\n cols = [];\n };\n while (depth > 0 && this.pos < this.latex.length) {\n this.cur = this.next();\n while (this.cur === SPACE) {\n this.cur = this.next();\n }\n if (this.cur === CONTROL_START) {\n this.cur = this.next();\n if (this.cur === CONTROL_START) {\n this.cur += CONTROL_START;\n }\n }\n const c = this.cur;\n if (c === '\\\\begin') {\n between += c;\n const startEl = nz((this.cur = this.next()));\n const g = this.group();\n if (g.ok && g.text === 'matrix') {\n depth++;\n }\n between += startEl + g.text + nz(this.cur);\n }\n else if (c === '\\\\end') {\n const startEl = c + nz((this.cur = this.next()));\n const g = this.group();\n if (g.ok && g.text === 'matrix' && depth === 1) {\n if (cols.length !== 0 || between !== '') {\n endRow();\n }\n depth--;\n }\n else if (depth === 1) {\n return null;\n }\n else {\n between += startEl + g.text + nz(this.cur);\n }\n }\n else if (c === MATRIX_COL_END) {\n if (depth === 1) {\n cols.push(between);\n between = '';\n }\n else {\n between += c;\n }\n }\n else if (c === MATRIX_ROW_END) {\n if (depth === 1) {\n endRow();\n }\n else {\n between += c;\n }\n }\n else {\n between += nz(c);\n }\n }\n return depth === 0 ? { rows, maxCols } : null;\n }\n // ─── N-ary ────────────────────────────────────────────────────────────────\n parseNary() {\n const at = this.pos;\n const start = nz(this.cur);\n let eq = this.equationString();\n let subText = null;\n let supText = null;\n for (let i = 0; i < 2; i++) {\n if (eq === SPACE && this.cur === SPACE) {\n eq = this.equationString();\n }\n else {\n break;\n }\n }\n if (this.cur === SUB) {\n subText = this.equationString();\n }\n else if (this.cur === SUPER) {\n supText = this.equationString();\n }\n if (subText !== null) {\n eq = this.equationString();\n if (this.cur === SUPER) {\n supText = this.equationString();\n }\n }\n else if (supText !== null) {\n eq = this.equationString();\n if (this.cur === SUB) {\n subText = this.equationString();\n }\n }\n if (subText !== null && supText !== null) {\n eq = this.equationString();\n }\n if (eq !== null) {\n eq = this.naryTail(eq);\n }\n if (eq === null && this.cur !== null) {\n this.fallbackRun(at - start.length);\n return;\n }\n const sub = subText !== null ? this.fill(subText) : [];\n const sup = supText !== null ? this.fill(supText) : [];\n const base = eq !== SPACE ? this.fill(eq) : [];\n const character = chr(NARY[start]);\n this.add(t => {\n const f = add(t, MathFunctionType.NArray);\n f.nArrayCharacter = character;\n if (subText === null) {\n f.hideLowerLimit = true;\n }\n if (supText === null) {\n f.hideUpperLimit = true;\n }\n if (subText === null && supText === null) {\n f.subSuperscriptLimit = false;\n }\n finalize(sub, f.subscript);\n finalize(sup, f.superscript);\n finalize(base, f.equation);\n });\n }\n /** Greedily absorbs trailing script groups into the N-ary operand (mirrors compression). */\n naryTail(first) {\n let eq = first;\n let isLeft = false;\n if (this.cur === GROUP_END && hasScriptPair(eq)) {\n eq = GROUP_START + eq + GROUP_END;\n isLeft = true;\n }\n let part = this.equationString();\n let check = true;\n if (part !== null && isLeft) {\n eq += GROUP_START + part + GROUP_END;\n }\n else if (part === null && (this.cur === SUPER || this.cur === SUB)) {\n eq += this.cur + GROUP_START + nz(this.equationString()) + GROUP_END;\n }\n else if (part !== null && hasScriptPair(part)) {\n eq += GROUP_START + part + GROUP_END;\n }\n else {\n this.useExisting = true;\n check = false;\n if (part !== null && this.cur !== part) {\n this.cur = part;\n }\n }\n while (check) {\n part = this.equationString();\n if (part === null && (this.cur === SUPER || this.cur === SUB)) {\n eq += this.cur + GROUP_START + nz(this.equationString()) + GROUP_END;\n }\n else if (part !== null && hasScriptPair(part)) {\n eq += GROUP_START + part + GROUP_END;\n }\n else {\n this.useExisting = true;\n check = false;\n }\n }\n return eq;\n }\n // ─── Radical ──────────────────────────────────────────────────────────────\n parseRadical() {\n const at = this.pos;\n const start = nz(this.cur);\n this.cur = this.next();\n if (this.cur === SPACE) {\n this.cur = this.next();\n }\n const degree = this.squareGroup();\n if (degree !== null) {\n this.cur = this.next();\n }\n let equation = null;\n let valid = false;\n let notInGroup = false;\n if (this.cur === GROUP_START) {\n const g = this.group();\n valid = g.ok;\n equation = g.text;\n }\n else {\n notInGroup = true;\n }\n if (notInGroup && this.cur !== null && this.cur.length === 1 && (LETTER_OR_DIGIT.test(this.cur) || this.cur === SPACE)) {\n equation = this.cur;\n }\n if (!(notInGroup || valid)) {\n this.fallbackRun(at - start.length);\n return;\n }\n this.cur = this.next();\n if (this.cur === SUPER || this.cur === SUB) {\n this.parseScript(this.latex.substring(at - start.length, this.pos - 1), at);\n return;\n }\n if (this.cur !== null) {\n this.useExisting = true;\n }\n const hide = !(degree !== null && equation !== null);\n const deg = !hide ? this.fill(degree) : [];\n let body = [];\n if (equation !== null && equation !== SPACE) {\n body = this.fill(equation);\n }\n else if (equation === null) {\n this.useExisting = true;\n if (degree !== null) {\n this.setRun(`[${degree}]`);\n }\n }\n this.add(t => {\n const f = add(t, MathFunctionType.Radical);\n if (hide) {\n f.hideDegree = true;\n }\n finalize(deg, f.degree);\n finalize(body, f.equation);\n });\n }\n // ─── Groups and scripts ───────────────────────────────────────────────────\n parseGroupStart() {\n const startPos = this.pos - GROUP_START.length;\n const g = this.group();\n if (!g.ok) {\n this.setRun(GROUP_START);\n this.sub(g.text, this.current);\n return;\n }\n if (hasScriptPair(g.text)) {\n this.parseLeftScript(g.text, startPos);\n return;\n }\n this.cur = this.next();\n if (this.cur === SUPER || this.cur === SUB) {\n this.parseScript(g.text, startPos);\n }\n else if (this.cur === LOW_LIMIT) {\n this.parseLimit(g.text, startPos);\n }\n else if (this.cur === '\\\\atop') {\n this.parseNoFractionBar(g.text, startPos);\n }\n else {\n this.sub(g.text, this.current);\n this.useExisting = true;\n }\n }\n parseScript(equation, startPos) {\n if (!(this.cur === SUPER || this.cur === SUB)) {\n return;\n }\n const isSup = this.cur === SUPER;\n const script = this.equationString();\n if (script === null && this.cur !== null) {\n this.fallbackRun(startPos);\n return;\n }\n if (this.cur !== null) {\n this.cur = this.next();\n if ((isSup && this.cur === SUB) || (!isSup && this.cur === SUPER)) {\n this.parseRightScript(equation, script, isSup, startPos);\n return;\n }\n this.useExisting = true;\n }\n this.ensure();\n const base = this.fill(equation);\n const scriptSeq = script ? this.fill(script) : [];\n this.add(t => {\n const f = add(t, MathFunctionType.SubSuperscript);\n f.scriptType = isSup ? MathScriptType.Superscript : MathScriptType.Subscript;\n finalize(base, f.equation);\n finalize(scriptSeq, f.script);\n });\n }\n parseRightScript(equation, first, isSup, startPos) {\n const second = this.equationString();\n if (second === null && this.cur !== null) {\n this.fallbackRun(startPos);\n return;\n }\n const keep = (s) => (s !== null && s !== SPACE ? s : null);\n const base = this.fill(keep(equation));\n const sup = this.fill(keep(isSup ? first : second));\n const sub = this.fill(keep(isSup ? second : first));\n this.add(t => {\n const f = add(t, MathFunctionType.RightSubSuperscript);\n finalize(base, f.equation);\n finalize(sub, f.subscript);\n finalize(sup, f.superscript);\n });\n }\n parseLeftScript(group, startPos) {\n let sub = null;\n let sup = null;\n const saved = { latex: this.latex, pos: this.pos, cur: this.cur };\n this.latex = group;\n this.pos = 1;\n if (group.startsWith(SUB)) {\n sub = this.equationString();\n }\n else {\n sup = this.equationString();\n }\n if (sub !== null) {\n this.cur = this.next();\n if (this.cur === SUPER) {\n sup = this.equationString();\n }\n }\n else if (sup !== null) {\n this.cur = this.next();\n if (this.cur === SUB) {\n sub = this.equationString();\n }\n }\n this.latex = saved.latex;\n this.pos = saved.pos;\n this.cur = saved.cur;\n let eq = null;\n if (sub !== null && sup !== null) {\n eq = this.equationString();\n }\n if (eq === null && this.cur !== null) {\n this.fallbackRun(startPos);\n return;\n }\n const keep = (s) => (s !== SPACE ? s : null);\n const subSeq = this.fill(keep(sub));\n const supSeq = this.fill(keep(sup));\n const base = eq !== null && eq !== SPACE ? this.fill(eq) : [];\n this.add(t => {\n const f = add(t, MathFunctionType.LeftSubSuperscript);\n finalize(subSeq, f.subscript);\n finalize(supSeq, f.superscript);\n finalize(base, f.equation);\n });\n }\n}\n/**\n * Convert a LaTeX equation string to an Office Math paragraph.\n *\n * Mirrors Microsoft Word's \"linear LaTeX\" behavior as implemented by Syncfusion\n * `LaTeXConverter.ParseMathPara`: unsupported or malformed constructs degrade to\n * plain text runs instead of throwing.\n *\n * @param latex - LaTeX source (for example `\\frac{a}{b}` or `\\sqrt[3]{x}`).\n * @returns An {@link OfficeMathParagraph} holding one {@link OfficeMath} per top-level equation.\n * @public\n */\nexport function parseLatexToMath(latex, adapter) {\n const paragraph = new OfficeMathParagraph(adapter);\n parseLatexIntoMathParagraph(latex, paragraph);\n return paragraph;\n}\n/**\n * Appends the equations parsed from a LaTeX string to an existing Math paragraph.\n * Runs are created through the target's document adapter when it has one.\n *\n * @param latex - LaTeX source.\n * @param target - The paragraph to populate; it keeps its identity, owner, adapter and listener.\n * @public\n */\nexport function parseLatexIntoMathParagraph(latex, target) {\n new LatexParser().populate(latex, target);\n}\n","/**\n * Office Math model → LaTeX generator.\n *\n * Port of compression `LaTeXConverter.GetLaTeX` (Math to LaTeX region). Output\n * syntax matches what `parseLatexToMath` accepts. Unsupported element kinds are\n * skipped, as in the .NET implementation.\n *\n * @packageDocumentation\n */\nimport { MathFontType, MathFractionType, MathFunctionType, MathScriptType, MathStyleType } from '../office-math/enums';\nimport { K } from '../office-math/keys';\nimport { OfficeMathParagraph } from '../office-math/math-paragraph';\nimport { getSymbolLatex } from './latex-symbols';\n// Built at runtime: `u`-flag literals are rejected by ES5 compile targets.\nconst LETTER = new RegExp('^\\\\p{L}$', 'u');\nfunction orDefault(value, fallback) {\n return value !== undefined && value !== null ? value : fallback;\n}\nconst ACCENT_COMMANDS = {\n 775: '\\\\dot', 776: '\\\\ddot', 8411: '\\\\dddot', 770: '\\\\widehat', 780: '\\\\check', 768: '\\\\grave', 774: '\\\\breve',\n 771: '\\\\widetilde', 769: '\\\\acute', 773: '\\\\bar', 831: '\\\\bar{\\\\bar', 8407: '\\\\vec', 8401: '\\\\hvec',\n};\nconst NARY_COMMANDS = {\n 8721: '\\\\sum', 8747: '\\\\int', 8748: '\\\\iint', 8749: '\\\\iiint', 8750: '\\\\oint', 8751: '\\\\oiint', 8752: '\\\\oiiint',\n 8753: '\\\\cwint', 8754: '\\\\coint', 8755: '\\\\aoint', 8719: '\\\\prod', 8720: '\\\\amalg', 8898: '\\\\bigcap', 8899: '\\\\bigcup',\n 8896: '\\\\bigwedge', 8897: '\\\\bigvee', 10752: '\\\\bigodot', 10754: '\\\\bigotimes', 10753: '\\\\bigoplus', 10756: '\\\\biguplus',\n 10755: '\\\\bigudot',\n};\nconst DELIMITER_COMMANDS = {\n 40: '(', 91: '[', 123: '{', 41: ')', 93: ']', 125: '}', 124: '|', 9001: '\\\\langle', 8968: '\\\\lceil', 8970: '\\\\lfloor',\n 9002: '\\\\rangle', 8969: '\\\\rceil', 8971: '\\\\rfloor',\n};\nconst FONT_COMMANDS = {\n [MathFontType.DoubleStruck]: '\\\\mathbb', [MathFontType.Fraktur]: '\\\\mathfrak', [MathFontType.Monospace]: '\\\\mathtt',\n [MathFontType.SansSerif]: '\\\\mathsf', [MathFontType.Script]: '\\\\mathscr',\n};\nclass LatexGenerator {\n constructor() {\n this.out = '';\n this.inFunctionName = false;\n }\n generate(equations) {\n for (const eq of equations) {\n this.arg(eq);\n }\n return this.out;\n }\n group(arg) {\n this.out += '{';\n this.arg(arg);\n this.out += '}';\n }\n arg(arg) {\n if (arg) {\n for (let i = 0; i < arg.functions.count; i++) {\n this.element(arg.functions.getItem(i));\n }\n }\n }\n element(el) {\n switch (el.type) {\n case MathFunctionType.RunElement:\n this.run(el);\n break;\n case MathFunctionType.Accent:\n this.accent(el);\n break;\n case MathFunctionType.Bar:\n this.out += el.barTop ? '\\\\overline' : '\\\\underline';\n this.group(el.equation);\n break;\n case MathFunctionType.Box:\n this.out += '\\\\box';\n this.group(el.equation);\n break;\n case MathFunctionType.BorderBox:\n this.out += '\\\\fbox';\n this.group(el.equation);\n break;\n case MathFunctionType.Fraction:\n this.fraction(el);\n break;\n case MathFunctionType.Function:\n this.func(el);\n break;\n case MathFunctionType.Delimiter:\n this.delimiter(el);\n break;\n case MathFunctionType.GroupCharacter:\n this.groupChar(el);\n break;\n case MathFunctionType.Limit:\n this.limit(el);\n break;\n case MathFunctionType.Matrix:\n this.matrix(el);\n break;\n case MathFunctionType.NArray:\n this.nary(el);\n break;\n case MathFunctionType.Radical:\n this.radical(el);\n break;\n case MathFunctionType.SubSuperscript: {\n const s = el;\n this.script(s.equation, s.scriptType === MathScriptType.Subscript ? '_' : '^', s.script);\n break;\n }\n case MathFunctionType.LeftSubSuperscript: {\n const s = el;\n this.out += '{_';\n this.group(s.subscript);\n this.out += '^';\n this.group(s.superscript);\n this.out += '}';\n this.group(s.equation);\n break;\n }\n case MathFunctionType.RightSubSuperscript: {\n const s = el;\n this.group(s.equation);\n this.out += '_';\n this.group(s.subscript);\n this.out += '^';\n this.group(s.superscript);\n break;\n }\n case MathFunctionType.EquationArray: {\n const e = el;\n this.out += '\\\\eqarray{';\n for (let i = 0; i < e.equations.count; i++) {\n if (i > 0) {\n this.out += '@';\n }\n this.arg(e.equations.getItem(i));\n }\n this.out += '}';\n break;\n }\n default: break;\n }\n }\n accent(el) {\n const code = el.accentCharacter.charCodeAt(0);\n this.out += orDefault(ACCENT_COMMANDS[code], '');\n this.group(el.equation);\n if (code === 831) {\n this.out += '}';\n }\n }\n fraction(el) {\n const type = el.fractionType;\n if (type === MathFractionType.NormalFractionBar) {\n this.out += '\\\\frac';\n }\n else if (type === MathFractionType.SkewedFractionBar || type === MathFractionType.FractionInline) {\n this.out += '\\\\sfrac';\n }\n this.group(el.numerator);\n if (type === MathFractionType.NoFractionBar) {\n this.out += '\\\\atop';\n }\n this.group(el.denominator);\n }\n func(el) {\n this.inFunctionName = true;\n this.out += '\\\\';\n this.arg(el.functionName);\n this.inFunctionName = false;\n this.group(el.equation);\n }\n delimiterChar(chr) {\n this.out += chr.length > 0 ? orDefault(DELIMITER_COMMANDS[chr.charCodeAt(0)], '') : '.';\n }\n delimiter(el) {\n this.out += '\\\\left';\n this.delimiterChar(el.beginCharacter);\n this.out += ' ';\n for (let i = 0; i < el.equations.count; i++) {\n this.arg(el.equations.getItem(i));\n if (i < el.equations.count - 1) {\n this.out += '\\\\middle';\n this.delimiterChar(el.separator);\n this.out += ' ';\n }\n }\n this.out += '\\\\right';\n this.delimiterChar(el.endCharacter);\n }\n groupChar(el) {\n const code = el.groupCharacter.charCodeAt(0);\n if (code === 9182) {\n this.out += '\\\\overbrace';\n }\n else if (code === 9183) {\n this.out += '\\\\underbrace';\n }\n this.group(el.equation);\n }\n limit(el) {\n if (!this.inFunctionName) {\n this.out += '{';\n }\n this.arg(el.equation);\n if (!this.inFunctionName) {\n this.out += '}';\n }\n this.out += '\\\\below';\n this.group(el.limit);\n }\n matrix(el) {\n this.out += '\\\\begin{matrix}';\n for (const row of el.rowItems) {\n const count = row.arguments.count;\n for (let i = 0; i < count; i++) {\n this.arg(row.arguments.getItem(i));\n if (i !== count - 1) {\n this.out += '&';\n }\n }\n this.out += '\\\\\\\\';\n }\n this.out += '\\\\end{matrix}';\n }\n nary(el) {\n this.out += orDefault(NARY_COMMANDS[el.nArrayCharacter.charCodeAt(0)], '');\n if (el.subscript.functions.count > 0) {\n this.out += '_';\n this.group(el.subscript);\n }\n if (el.superscript.functions.count > 0) {\n this.out += '^';\n this.group(el.superscript);\n }\n this.group(el.equation);\n }\n radical(el) {\n this.out += '\\\\sqrt';\n if (el.degree.functions.count > 0) {\n this.out += '[';\n this.arg(el.degree);\n this.out += ']';\n }\n this.group(el.equation);\n }\n script(base, op, script) {\n if (!this.inFunctionName) {\n this.out += '{';\n }\n this.arg(base);\n if (!this.inFunctionName) {\n this.out += '}';\n }\n this.out += op;\n this.group(script);\n }\n run(el) {\n const text = el.text;\n const format = el.mathFormat;\n const sty = format.isExplicit(K.Style) ? format.style : undefined;\n const scr = format.isExplicit(K.Script) ? format.font : undefined;\n const openers = [];\n if (sty === MathStyleType.BoldItalic) {\n openers.push('\\\\mathbit{');\n }\n else if (sty === MathStyleType.Bold) {\n openers.push('\\\\mathbf{');\n }\n if (scr !== undefined && FONT_COMMANDS[scr] !== undefined) {\n openers.push(`${FONT_COMMANDS[scr]}{`);\n }\n if (format.hasNormalText) {\n openers.push('\\\\mathrm{');\n }\n let applied = 0;\n let applyFormats = true;\n let lastSymbol = false;\n for (const ch of text) {\n const symbol = getSymbolLatex(ch, scr === MathFontType.Script);\n if (symbol !== undefined) {\n this.out += '}'.repeat(applied);\n applied = 0;\n applyFormats = true;\n this.out += symbol;\n lastSymbol = true;\n continue;\n }\n if (lastSymbol && LETTER.test(ch)) {\n this.out += ' ';\n }\n lastSymbol = false;\n if (applyFormats) {\n this.out += openers.join('');\n applied = openers.length;\n applyFormats = false;\n }\n this.out += ch;\n }\n this.out += '}'.repeat(applied);\n }\n}\n/**\n * Converts a math paragraph (or a single `m:oMath`) to a LaTeX string.\n *\n * @public\n */\nexport function mathToLatex(math) {\n return new LatexGenerator().generate(math instanceof OfficeMathParagraph ? math.maths.toArray() : [math]);\n}\n","/**\n * Office Math paragraph (`m:oMathPara`): the root of the Math model.\n */\nimport { OwnerHolder } from './owner-holder';\nimport { OfficeMathCollection } from './math-collection';\nimport { MathJustification } from './enums';\nimport { K } from './keys';\nimport { BasicRunFormat } from './basic';\nimport { parseLatexIntoMathParagraph } from '../latex/latex-parser';\nimport { mathToLatex } from '../latex/latex-generator';\n/**\n * Root container of equations. Notifies a host listener on any change below it.\n *\n * @public\n */\nexport class OfficeMathParagraph extends OwnerHolder {\n constructor(adapter) {\n super();\n this._suspended = 0;\n this.adapter = adapter;\n this._maths = new OfficeMathCollection(this);\n }\n /** Equations of the paragraph. */\n get maths() { return this._maths; }\n /** Paragraph justification. Default center-group. */\n get justification() {\n return this.getProperty(K.Justification, () => MathJustification.CenterGroup);\n }\n set justification(value) { this.setProperty(K.Justification, value); }\n /** Whether the justification was set or parsed explicitly. */\n get hasExplicitJustification() { return this.isExplicit(K.Justification); }\n /** Default Math character format used to seed function control properties. */\n get defaultMathCharacterFormat() {\n return this.adapter !== undefined\n ? this.adapter.createDefaultMathCharacterFormat(this)\n : new BasicRunFormat();\n }\n /**\n * LaTeX of the current equations, generated from the live Math tree.\n * Assigning replaces all equations on this same paragraph.\n */\n get latex() { return mathToLatex(this); }\n set latex(value) { this.convertLatexToMath(value); }\n /**\n * Replaces all equations with those parsed from `latex`. The paragraph keeps its identity, owner,\n * adapter and mutation listener; one mutation notification is raised after the replacement.\n * An empty string leaves the paragraph without equations.\n *\n * @param {string} latex The LaTeX source.\n * @returns {void}\n */\n convertLatexToMath(latex) {\n this.suspendMutations(() => {\n this._maths.clear();\n parseLatexIntoMathParagraph(latex, this);\n });\n this.notifyMutated();\n }\n /**\n * Registers a callback invoked after any change in the Math tree.\n *\n * @param {Function} listener The mutation callback, or undefined to clear it.\n * @returns {void}\n */\n setMutationListener(listener) { this._listener = listener; }\n /**\n * Runs `action` without raising mutation notifications, then restores notifications.\n * Used while hydrating the model from XML.\n *\n * @param {Function} action The work to perform silently.\n * @returns {void}\n * @private\n */\n suspendMutations(action) {\n this._suspended++;\n try {\n action();\n }\n finally {\n this._suspended--;\n }\n }\n rootMutated() {\n if (this._suspended === 0 && this._listener !== undefined) {\n this._listener();\n }\n }\n}\n","/**\n * Preservation of unrecognized Math elements.\n */\nimport { MathFunctionType } from './enums';\nimport { OfficeMathFunctionBase } from './function-base';\n/**\n * An unrecognized `m:*` element kept verbatim so a load and save does not lose content.\n *\n * @public\n */\nexport class OfficeMathUnknownElement extends OfficeMathFunctionBase {\n /**\n * Creates the preserved element.\n *\n * @param {string} localName Local name of the element.\n * @param {OpenXmlElement} xml The original element tree.\n * @param {OfficeMathEntity} owner Optional owner.\n */\n constructor(localName, xml, owner) {\n super(owner);\n this.type = MathFunctionType.Unknown;\n this._localName = localName;\n this._xml = xml;\n }\n /**\n * Local name of the preserved element.\n *\n * @returns {string} The local name.\n */\n get localName() { return this._localName; }\n /**\n * The preserved element tree, re-serialized verbatim.\n *\n * @returns {OpenXmlElement} The original element tree.\n */\n get preservedXml() { return this._xml; }\n}\n","/**\n * Structural traversal shared by clone and equality over the Math model.\n */\nimport { MathFunctionType } from './enums';\nimport { OfficeMath } from './office-math';\n/**\n * Lists the child equations of a function in a fixed, schema-like order.\n * Matrix cells are listed row by row.\n *\n * @param {OfficeMathFunctionBase} fn The function to inspect.\n * @returns {OfficeMath[]} Child equations in order.\n * @private\n */\nexport function childEquations(fn) {\n const holder = fn;\n if (fn.type === MathFunctionType.Matrix) {\n const cells = [];\n fn.rowItems.forEach((row) => {\n for (const cell of row.arguments) {\n cells.push(cell);\n }\n });\n return cells;\n }\n const result = [];\n ['equation', 'degree', 'numerator', 'denominator', 'functionName', 'limit', 'script', 'subscript', 'superscript']\n .forEach((name) => {\n const value = holder[name];\n if (value instanceof OfficeMath) {\n result.push(value);\n }\n });\n const list = holder['equations'];\n if (list !== undefined) {\n result.push(...Array.from(list));\n }\n return result;\n}\n/**\n * Returns the manual break owned by a box or run element.\n *\n * @param {OfficeMathFunctionBase} fn The function to inspect.\n * @returns {OfficeMathBreak | undefined} The break, when present.\n * @private\n */\nexport function breakOf(fn) {\n if (fn.type === MathFunctionType.Box) {\n return fn.break;\n }\n if (fn.type === MathFunctionType.RunElement) {\n return fn.mathFormat.break;\n }\n return undefined;\n}\n","/**\n * Deep clone of the Math model.\n */\nimport { MathFunctionType } from './enums';\nimport { OfficeMath } from './office-math';\nimport { OfficeMathParagraph } from './math-paragraph';\nimport { OfficeMathUnknownElement } from './unknown-element';\nimport { OfficeMathBreak } from './break';\nimport { BasicRun } from './basic';\nimport { childEquations } from './math-traversal';\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathBreak} source The source object.\n * @returns {OfficeMathBreak} The result.\n */\nfunction cloneBreak(source) {\n const copy = new OfficeMathBreak();\n copy.copyExplicitFrom(source);\n return copy;\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathRunElement} source The source object.\n * @param {OfficeMathRunElement} target The target to populate.\n * @param {OfficeMathParagraph} root The owning Math paragraph.\n * @returns {void}\n */\nfunction cloneRunContent(source, target, root) {\n target.mathFormat.copyExplicitFrom(source.mathFormat);\n if (source.mathFormat.break !== undefined) {\n target.mathFormat.break = cloneBreak(source.mathFormat.break);\n }\n if (source.item === undefined) {\n return;\n }\n if (root.adapter !== undefined) {\n target.item = root.adapter.cloneRun(source.item);\n }\n else {\n if (source.item instanceof BasicRun) {\n target.item = source.item.clone();\n }\n else {\n const run = new BasicRun();\n run.text = source.text;\n target.item = run;\n }\n }\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathFunctionBase} source The source object.\n * @param {OfficeMathFunctionBase} target The target to populate.\n * @returns {void}\n */\nfunction prepareStructure(source, target) {\n if (source.type === MathFunctionType.Matrix) {\n const from = source;\n const to = target;\n from.columns.toArray().forEach((column) => to.columns.add().copyExplicitFrom(column));\n from.rowItems.forEach((row) => to.rows.add().copyExplicitFrom(row));\n }\n else if (source.type === MathFunctionType.Delimiter || source.type === MathFunctionType.EquationArray) {\n const from = source;\n const to = target;\n for (let i = 0; i < from.equations.count; i++) {\n to.equations.add();\n }\n }\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathFunctionBase} source The source object.\n * @param {OfficeMathFunctionBase} target The target to populate.\n * @returns {void}\n */\nfunction copyFunctionState(source, target) {\n target.copyExplicitFrom(source);\n if (source.hasControlProperties) {\n target.controlProperties = source.controlProperties.clone();\n }\n if (source.type === MathFunctionType.Box && source.break !== undefined) {\n const sourceBreak = source.break;\n const from = source.ownerMathEntity instanceof OfficeMath ? source.ownerMathEntity : undefined;\n const to = target.ownerMathEntity instanceof OfficeMath ? target.ownerMathEntity : undefined;\n const index = from !== undefined ? from.breaks.toArray().indexOf(sourceBreak) : -1;\n target.break = index >= 0 && to !== undefined ? to.breaks.getItem(index) : cloneBreak(sourceBreak);\n }\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathFunctionBase} source The source object.\n * @param {OfficeMath} destination The destination equation.\n * @param {OfficeMathParagraph} root The owning Math paragraph.\n * @returns {void}\n */\nfunction cloneFunctionInto(source, destination, root) {\n if (source instanceof OfficeMathUnknownElement) {\n destination.functions.insert(destination.functions.count, new OfficeMathUnknownElement(source.localName, source.preservedXml));\n return;\n }\n const target = destination.functions.add(source.type);\n copyFunctionState(source, target);\n if (source.type === MathFunctionType.RunElement) {\n cloneRunContent(source, target, root);\n return;\n }\n prepareStructure(source, target);\n const from = childEquations(source);\n const to = childEquations(target);\n from.forEach((child, i) => cloneEquationInto(child, to[i], root));\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMath} source The source object.\n * @param {OfficeMath} target The target to populate.\n * @param {OfficeMathParagraph} root The owning Math paragraph.\n * @returns {void}\n */\nfunction cloneEquationInto(source, target, root) {\n target.copyExplicitFrom(source);\n target.preservedControlProperties = source.preservedControlProperties;\n for (const brk of source.breaks) {\n target.breaks.add().copyExplicitFrom(brk);\n }\n for (const fn of source.functions) {\n cloneFunctionInto(fn, target, root);\n }\n}\n/**\n * Deep-clones an equation as a new, detached equation.\n *\n * @param {OfficeMath} source The equation to clone.\n * @param {OfficeMathParagraph} root Paragraph that supplies the host adapter for the copy.\n * @returns {OfficeMath} An attached copy living under `root`.\n */\nexport function cloneOfficeMath(source, root) {\n const copy = root.maths.add();\n cloneEquationInto(source, copy, root);\n return copy;\n}\n/**\n * Deep-clones a Math paragraph including explicit properties, owners and unknown elements.\n *\n * @param {OfficeMathParagraph} source The paragraph to clone.\n * @returns {OfficeMathParagraph} An independent copy.\n */\nexport function cloneOfficeMathParagraph(source) {\n const copy = new OfficeMathParagraph(source.adapter);\n copy.copyExplicitFrom(source);\n for (const math of source.maths) {\n cloneOfficeMath(math, copy);\n }\n return copy;\n}\n","/**\n * Semantic equality of two Math trees.\n */\nimport { MathFunctionType } from './enums';\nimport { OfficeMathUnknownElement } from './unknown-element';\nimport { childEquations, breakOf } from './math-traversal';\nimport { xmlEqual } from './xml-equal';\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathBreak | undefined} a First object.\n * @param {OfficeMathBreak | undefined} b Second object.\n * @returns {boolean} The result.\n */\nfunction breakEqual(a, b) {\n if (a === undefined || b === undefined) {\n return a === b;\n }\n return a.explicitEquals(b);\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathFunctionBase} a First object.\n * @param {OfficeMathFunctionBase} b Second object.\n * @returns {boolean} The result.\n */\nfunction controlEqual(a, b) {\n if (a.hasControlProperties !== b.hasControlProperties) {\n return false;\n }\n if (!a.hasControlProperties) {\n return true;\n }\n const fa = a.controlProperties;\n return fa.equals === undefined || fa.equals(b.controlProperties);\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathMatrix} a First object.\n * @param {OfficeMathMatrix} b Second object.\n * @returns {boolean} The result.\n */\nfunction matrixShapeEqual(a, b) {\n const ca = a.columns.toArray();\n const cb = b.columns.toArray();\n const ra = a.rowItems;\n const rb = b.rowItems;\n return ca.length === cb.length && ra.length === rb.length\n && ca.every((c, i) => c.explicitEquals(cb[i]))\n && ra.every((r, i) => r.explicitEquals(rb[i]));\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathFunctionBase} a First object.\n * @param {OfficeMathFunctionBase} b Second object.\n * @returns {boolean} The result.\n */\nfunction functionEqual(a, b) {\n if (a.type !== b.type || !a.explicitEquals(b) || !controlEqual(a, b)) {\n return false;\n }\n if (a instanceof OfficeMathUnknownElement) {\n const other = b;\n return a.localName === other.localName && xmlEqual(a.preservedXml, other.preservedXml);\n }\n if (!breakEqual(breakOf(a), breakOf(b))) {\n return false;\n }\n if (a.type === MathFunctionType.RunElement) {\n const ra = a;\n const rb = b;\n return ra.text === rb.text && ra.mathFormat.explicitEquals(rb.mathFormat);\n }\n if (a.type === MathFunctionType.Matrix && !matrixShapeEqual(a, b)) {\n return false;\n }\n const ca = childEquations(a);\n const cb = childEquations(b);\n return ca.length === cb.length && ca.every((c, i) => officeMathEquals(c, cb[i]));\n}\n/**\n * Semantic equality of two equations (shape, text, explicit properties).\n *\n * @param {OfficeMath} a First equation.\n * @param {OfficeMath} b Second equation.\n * @returns {boolean} True when both trees are equal.\n */\nexport function officeMathEquals(a, b) {\n if (!a.explicitEquals(b) || a.functions.count !== b.functions.count || a.breaks.count !== b.breaks.count) {\n return false;\n }\n const bb = b.breaks.toArray();\n if (!a.breaks.toArray().every((x, i) => breakEqual(x, bb[i]))) {\n return false;\n }\n const fb = b.functions.toArray();\n return a.functions.toArray().every((f, i) => functionEqual(f, fb[i]));\n}\n/**\n * Semantic equality of two Math paragraphs.\n *\n * @param {OfficeMathParagraph} a First paragraph.\n * @param {OfficeMathParagraph} b Second paragraph.\n * @returns {boolean} True when both trees are equal.\n */\nexport function officeMathParagraphEquals(a, b) {\n if (!a.explicitEquals(b) || a.maths.count !== b.maths.count) {\n return false;\n }\n const mb = b.maths.toArray();\n return a.maths.toArray().every((m, i) => officeMathEquals(m, mb[i]));\n}\n","/**\n * Local structural OpenXml element-tree contract for mathml parse/serialize.\n *\n * office-common has no shared `src/core/xml` yet (TASK-9002/9003). This\n * mirrors ej2-docx `src/core/xml/model.ts` so TASK-9011 can pass the same\n * tree shape across the boundary. Unify when core XML lands.\n *\n * These types are part of the public `@syncfusion/ej2-office-common/mathml` surface\n * (parse/serialize boundary). Keep them public under stripInternal builds —\n * never tag this module as internal.\n */\n/** Create an immutable element node. */\nexport function createElement(namespaceUri, localName, prefix, options) {\n return { kind: 'element',\n namespaceUri,\n localName,\n prefix,\n attributes: function () {\n var _nc = options == null ? void 0 : options.attributes;\n return _nc != null ? _nc : [];\n }(),\n namespaceDeclarations: function () {\n var _nc = options == null ? void 0 : options.namespaceDeclarations;\n return _nc != null ? _nc : [];\n }(),\n children: function () {\n var _nc = options == null ? void 0 : options.children;\n return _nc != null ? _nc : [];\n }()\n };\n}\n/** Create a text node. */\nexport function createText(value) {\n return {\n kind: 'text',\n value\n };\n}\n/** Filter element children only. */\nexport function childElements(element) {\n return element.children.filter((c) => c.kind === 'element');\n}\n/** Read the first matching attribute value by local name (any namespace). */\nexport function attrValue(element, localName) {\n return function () {\n var _om = element.attributes.find(a => a.localName === localName);\n return _om == null ? void 0 : _om.value;\n }();\n}\n/** Read attribute value restricted to a namespace URI. */\nexport function attrValueNs(element, namespaceUri, localName) {\n return function () {\n var _om = element.attributes.find(a => a.namespaceUri === namespaceUri && a.localName === localName);\n return _om == null ? void 0 : _om.value;\n }();\n}\n/** Concatenate direct text-node children. */\nexport function textContent(element) {\n let out = '';\n for (const child of element.children) {\n if (child.kind === 'text') {\n out += child.value;\n }\n }\n return out;\n}\n","/**\n * Property readers that populate the Office Math model from `m:*Pr` elements.\n *\n * Source: ECMA-376-1 §22.1.2 (shared-math.xsd). Invalid values are ignored so the model default applies.\n */\nimport { MATH_NAMESPACE } from '../constants';\nimport { attrValue, childElements } from '../openxml';\nimport { MathDelimiterShapeType, MathFontType, MathFractionType, MathHorizontalAlignment, MathStyleType, MathVerticalAlignment } from '../office-math/enums';\nimport { OfficeMathBreak } from '../office-math/break';\nimport { OfficeMath } from '../office-math/office-math';\n/**\n * Finds the first `m:` child with the given local name. @private\n *\n * @param {OpenXmlElement | undefined} parent The parent element.\n * @param {string} localName The local name to find.\n * @returns {OpenXmlElement | undefined} The result.\n */\nexport function findMathChild(parent, localName) {\n return parent === undefined ? undefined : childElements(parent)\n .filter((c) => c.namespaceUri === MATH_NAMESPACE && c.localName === localName)[0];\n}\n/**\n * Finds every `m:` child with the given local name. @private\n *\n * @param {OpenXmlElement} parent The parent element.\n * @param {string} localName The local name to find.\n * @returns {OpenXmlElement[]} The result.\n */\nexport function findMathChildren(parent, localName) {\n return childElements(parent).filter((c) => c.namespaceUri === MATH_NAMESPACE && c.localName === localName);\n}\n/**\n * Implementation helper. @private\n *\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @param {string} name The local name of the child element.\n * @returns {string | undefined} The result.\n */\nfunction str(pr, name) {\n const child = findMathChild(pr, name);\n return child === undefined ? undefined : attrValue(child, 'val');\n}\n/**\n * Implementation helper. @private\n *\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @param {string} name The local name of the child element.\n * @returns {boolean | undefined} The result.\n */\nfunction onOff(pr, name) {\n const child = findMathChild(pr, name);\n if (child === undefined) {\n return undefined;\n }\n const raw = attrValue(child, 'val');\n if (raw === undefined) {\n return true;\n }\n const v = raw.toLowerCase();\n return v === '1' || v === 'true' || v === 'on' ? true : v === '0' || v === 'false' || v === 'off' ? false : undefined;\n}\n/**\n * Implementation helper. @private\n *\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @param {string} name The local name of the child element.\n * @returns {number | undefined} The result.\n */\nfunction int(pr, name) {\n const raw = str(pr, name);\n return raw !== undefined && /^\\d+$/.test(raw) ? Number(raw) : undefined;\n}\n/**\n * Implementation helper. @private\n *\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @param {Array<[string, Function]>} table The lookup table of valid values.\n * @returns {void}\n */\nfunction flags(pr, table) {\n table.forEach((entry) => {\n const value = onOff(pr, entry[0]);\n if (value !== undefined) {\n entry[1](value);\n }\n });\n}\n/**\n * Implementation helper. @private\n *\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @param {string} name The local name of the child element.\n * @param {Function} set Callback receiving the parsed value.\n * @returns {void}\n */\nfunction text(pr, name, set) {\n const value = str(pr, name);\n if (value !== undefined) {\n set(value);\n }\n}\n/**\n * Implementation helper. @private\n *\n * @param {string | undefined} value The value to convert.\n * @returns {MathVerticalAlignment | undefined} The result.\n */\nfunction verticalAlignment(value) {\n if (value === 'top') {\n return MathVerticalAlignment.Top;\n }\n if (value === 'bottom') {\n return MathVerticalAlignment.Bottom;\n }\n return value === 'center' ? MathVerticalAlignment.Center : undefined;\n}\n/**\n * Reads `m:brk` of a property container. @private\n *\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @param {OfficeMath} owner Optional owning equation whose break collection creates the break.\n * @returns {OfficeMathBreak | undefined} The result.\n */\nexport function readBreak(pr, owner) {\n const brk = findMathChild(pr, 'brk');\n if (brk === undefined) {\n return undefined;\n }\n const result = owner !== undefined ? owner.breaks.add() : new OfficeMathBreak();\n const raw = attrValue(brk, 'alnAt');\n if (raw !== undefined && /^\\d+$/.test(raw) && Number(raw) >= 1 && Number(raw) <= 255) {\n result.alignAt = Number(raw);\n }\n return result;\n}\nconst FONTS = {\n 'roman': MathFontType.Roman, 'script': MathFontType.Script, 'fraktur': MathFontType.Fraktur,\n 'double-struck': MathFontType.DoubleStruck, 'sans-serif': MathFontType.SansSerif, 'monospace': MathFontType.Monospace\n};\nconst STYLES = {\n p: MathStyleType.Regular, b: MathStyleType.Bold, i: MathStyleType.Italic, bi: MathStyleType.BoldItalic\n};\n/**\n * Applies `m:rPr` to a run format. @private\n *\n * @param {OfficeMathFormat} format The Math run format to populate.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyRunFormat(format, pr) {\n flags(pr, [['lit', (v) => { format.hasLiteral = v; }], ['nor', (v) => { format.hasNormalText = v; }],\n ['aln', (v) => { format.hasAlignment = v; }]]);\n const scr = str(pr, 'scr');\n if (scr !== undefined && FONTS.hasOwnProperty(scr)) {\n format.font = FONTS[scr];\n }\n const sty = str(pr, 'sty');\n if (sty !== undefined && STYLES.hasOwnProperty(sty)) {\n format.style = STYLES[sty];\n }\n const brk = readBreak(pr);\n if (brk !== undefined) {\n format.break = brk;\n }\n}\n/**\n * Applies `m:accPr`. @private\n *\n * @param {OfficeMathAccent} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyAccent(fn, pr) {\n text(pr, 'chr', (v) => { fn.accentCharacter = v; });\n}\n/**\n * Applies `m:barPr`. @private\n *\n * @param {OfficeMathBar} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyBar(fn, pr) {\n const pos = str(pr, 'pos');\n if (pos === 'top' || pos === 'bot') {\n fn.barTop = pos === 'top';\n }\n}\n/**\n * Applies `m:borderBoxPr`. @private\n *\n * @param {OfficeMathBorderBox} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyBorderBox(fn, pr) {\n flags(pr, [['hideTop', (v) => { fn.hideTop = v; }], ['hideBot', (v) => { fn.hideBottom = v; }],\n ['hideLeft', (v) => { fn.hideLeft = v; }], ['hideRight', (v) => { fn.hideRight = v; }],\n ['strikeH', (v) => { fn.strikeHorizontal = v; }], ['strikeV', (v) => { fn.strikeVertical = v; }],\n ['strikeBLTR', (v) => { fn.strikeDiagonalUp = v; }], ['strikeTLBR', (v) => { fn.strikeDiagonalDown = v; }]]);\n}\n/**\n * Applies `m:boxPr`. @private\n *\n * @param {OfficeMathBox} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyBox(fn, pr) {\n flags(pr, [['opEmu', (v) => { fn.operatorEmulator = v; }], ['noBreak', (v) => { fn.noBreak = v; }],\n ['diff', (v) => { fn.enableDifferential = v; }], ['aln', (v) => { fn.alignment = v; }]]);\n const brk = readBreak(pr, fn.ownerMathEntity instanceof OfficeMath ? fn.ownerMathEntity : undefined);\n if (brk !== undefined) {\n fn.break = brk;\n }\n}\n/**\n * Applies `m:dPr`. @private\n *\n * @param {OfficeMathDelimiter} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyDelimiter(fn, pr) {\n text(pr, 'begChr', (v) => { fn.beginCharacter = v; });\n text(pr, 'sepChr', (v) => { fn.separator = v; });\n text(pr, 'endChr', (v) => { fn.endCharacter = v; });\n flags(pr, [['grow', (v) => { fn.isGrow = v; }]]);\n const shp = str(pr, 'shp');\n if (shp === 'centered' || shp === 'match') {\n fn.delimiterShape = shp === 'centered' ? MathDelimiterShapeType.Centered : MathDelimiterShapeType.Match;\n }\n}\n/**\n * Implementation helper. @private\n *\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @param {Function} rule Callback receiving the spacing rule.\n * @param {Function} value Callback receiving the spacing value.\n * @param {string} ruleName The local name of the rule element.\n * @param {string} valueName The local name of the value element.\n * @returns {void}\n */\nfunction spacing(pr, rule, value, ruleName, valueName) {\n const r = int(pr, ruleName);\n if (r !== undefined && r <= 4) {\n rule(r);\n }\n const v = int(pr, valueName);\n if (v !== undefined) {\n try {\n value(v);\n }\n catch (e) {\n if (!(e instanceof RangeError)) {\n throw e;\n }\n }\n }\n}\n/**\n * Applies `m:eqArrPr`. @private\n *\n * @param {OfficeMathEquationArray} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyEquationArray(fn, pr) {\n const align = verticalAlignment(str(pr, 'baseJc'));\n if (align !== undefined) {\n fn.verticalAlignment = align;\n }\n flags(pr, [['maxDist', (v) => { fn.expandEquationContainer = v; }],\n ['objDist', (v) => { fn.expandEquationContent = v; }]]);\n spacing(pr, (v) => { fn.rowSpacingRule = v; }, (v) => { fn.rowSpacing = v; }, 'rSpRule', 'rSp');\n}\nconst FRACTIONS = {\n bar: MathFractionType.NormalFractionBar, noBar: MathFractionType.NoFractionBar,\n skw: MathFractionType.SkewedFractionBar, lin: MathFractionType.FractionInline\n};\n/**\n * Applies `m:fPr`. @private\n *\n * @param {OfficeMathFraction} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyFraction(fn, pr) {\n const type = str(pr, 'type');\n if (type !== undefined && FRACTIONS.hasOwnProperty(type)) {\n fn.fractionType = FRACTIONS[type];\n }\n}\n/**\n * Applies `m:groupChrPr`. @private\n *\n * @param {OfficeMathGroupCharacter} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyGroupCharacter(fn, pr) {\n text(pr, 'chr', (v) => { fn.groupCharacter = v; });\n const pos = str(pr, 'pos');\n if (pos === 'top' || pos === 'bot') {\n fn.hasCharacterTop = pos === 'top';\n }\n const vert = str(pr, 'vertJc');\n if (vert === 'top' || vert === 'bot') {\n fn.hasAlignTop = vert === 'top';\n }\n}\n/**\n * Applies `m:naryPr`. @private\n *\n * @param {OfficeMathNArray} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyNArray(fn, pr) {\n text(pr, 'chr', (v) => { fn.nArrayCharacter = v; });\n const loc = str(pr, 'limLoc');\n if (loc === 'undOvr' || loc === 'subSup') {\n fn.subSuperscriptLimit = loc === 'subSup';\n }\n flags(pr, [['grow', (v) => { fn.hasGrow = v; }], ['subHide', (v) => { fn.hideLowerLimit = v; }],\n ['supHide', (v) => { fn.hideUpperLimit = v; }]]);\n}\n/**\n * Applies `m:phantPr`. @private\n *\n * @param {OfficeMathPhantom} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyPhantom(fn, pr) {\n flags(pr, [['show', (v) => { fn.show = v; }], ['zeroWid', (v) => { fn.zeroWidth = v; }],\n ['zeroAsc', (v) => { fn.zeroAscent = v; }], ['zeroDesc', (v) => { fn.zeroDescent = v; }],\n ['transp', (v) => { fn.transparent = v; }]]);\n}\n/**\n * Applies `m:radPr`. @private\n *\n * @param {OfficeMathRadical} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyRadical(fn, pr) {\n flags(pr, [['degHide', (v) => { fn.hideDegree = v; }]]);\n}\n/**\n * Applies `m:sSubSupPr`. @private\n *\n * @param {OfficeMathRightScript} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyRightScript(fn, pr) {\n flags(pr, [['alnScr', (v) => { fn.isSkipAlign = v; }]]);\n}\n/**\n * Implementation helper. @private\n *\n * @param {string | undefined} value The value to convert.\n * @returns {MathHorizontalAlignment | undefined} The result.\n */\nfunction columnAlignment(value) {\n if (value === 'left') {\n return MathHorizontalAlignment.Left;\n }\n if (value === 'right') {\n return MathHorizontalAlignment.Right;\n }\n return value === 'center' ? MathHorizontalAlignment.Center : undefined;\n}\n/**\n * Applies the scalar settings of `m:mPr` (columns are handled by {@link applyMatrixColumns}). @private\n *\n * @param {OfficeMathMatrix} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @returns {void}\n */\nexport function applyMatrix(fn, pr) {\n const align = verticalAlignment(str(pr, 'baseJc'));\n if (align !== undefined) {\n fn.verticalAlignment = align;\n }\n flags(pr, [['plcHide', (v) => { fn.hidePlaceholder = v; }]]);\n spacing(pr, (v) => { fn.rowSpacingRule = v; }, (v) => { fn.rowSpacing = v; }, 'rSpRule', 'rSp');\n spacing(pr, (v) => { fn.columnGapRule = v; }, (v) => { fn.columnGap = v; }, 'cGpRule', 'cGp');\n const cSp = int(pr, 'cSp');\n if (cSp !== undefined) {\n fn.columnSpacing = cSp;\n }\n}\n/**\n * Creates matrix columns from `m:mcs`, then pads to `cellCount` so every row cell has a column.\n *\n * @param {OfficeMathMatrix} fn The matrix.\n * @param {OpenXmlElement} pr The `m:mPr` element.\n * @param {number} cellCount The widest row, in cells.\n * @returns {void}\n * @private\n */\nexport function applyMatrixColumns(fn, pr, cellCount) {\n const mcs = findMathChild(pr, 'mcs');\n const groups = mcs === undefined ? [] : findMathChildren(mcs, 'mc');\n groups.forEach((mc) => {\n const mcPr = findMathChild(mc, 'mcPr');\n const raw = int(mcPr, 'count');\n const count = raw !== undefined && raw >= 1 && raw <= 255 ? raw : 1;\n const align = columnAlignment(str(mcPr, 'mcJc'));\n for (let i = 0; i < count; i++) {\n const column = fn.columns.add();\n if (align !== undefined) {\n column.horizontalAlignment = align;\n }\n }\n });\n while (fn.columns.count < cellCount) {\n fn.columns.add();\n }\n}\n/**\n * Reads `m:argPr/m:argSz` (ST_Integer2, -2..2). Invalid values are ignored. @private\n *\n * @param {OpenXmlElement | undefined} argPr The `m:argPr` element, if present.\n * @returns {string | undefined} The valid size as text, or undefined.\n */\nexport function readArgumentSize(argPr) {\n const raw = str(argPr, 'argSz');\n return raw !== undefined && /^-?\\d+$/.test(raw) && Math.abs(Number(raw)) <= 2 ? raw : undefined;\n}\n","/**\n * Tolerant OMML → Office Math model parser.\n *\n * Source: ECMA-376-1 §22.1 (shared-math.xsd). Never throws on load: unknown elements and\n * structures missing required children are kept verbatim as {@link OfficeMathUnknownElement}.\n */\nimport { MATH_NAMESPACE, WML_TRANSITIONAL_NAMESPACE, XML_NAMESPACE } from '../constants';\nimport { attrValue, attrValueNs, childElements, textContent } from '../openxml';\nimport { MathFunctionType, MathJustification, MathLimitType, MathScriptType } from '../office-math/enums';\nimport { BasicRun, BasicRunFormat } from '../office-math/basic';\nimport { OfficeMathParagraph } from '../office-math/math-paragraph';\nimport { OfficeMathUnknownElement } from '../office-math/unknown-element';\nimport * as P from './office-math-properties';\n/**\n * Implementation helper. @private\n *\n * @param {MathFunctionType} type The function type.\n * @param {string} pr The property element (`m:*Pr`), if present.\n * @param {string[]} args The argument element names, in order.\n * @param {Fill} [apply] Optional property applier.\n * @returns {Shape} The result.\n */\nfunction shape(type, pr, args, apply) {\n return { type, pr, args, apply };\n}\nconst SHAPES = {\n acc: shape(MathFunctionType.Accent, 'accPr', ['e'], P.applyAccent),\n bar: shape(MathFunctionType.Bar, 'barPr', ['e'], P.applyBar),\n borderBox: shape(MathFunctionType.BorderBox, 'borderBoxPr', ['e'], P.applyBorderBox),\n box: shape(MathFunctionType.Box, 'boxPr', ['e'], P.applyBox),\n f: shape(MathFunctionType.Fraction, 'fPr', ['num', 'den'], P.applyFraction),\n func: shape(MathFunctionType.Function, 'funcPr', ['fName', 'e']),\n groupChr: shape(MathFunctionType.GroupCharacter, 'groupChrPr', ['e'], P.applyGroupCharacter),\n limLow: shape(MathFunctionType.Limit, 'limLowPr', ['e', 'lim']),\n limUpp: shape(MathFunctionType.Limit, 'limUppPr', ['e', 'lim']),\n nary: shape(MathFunctionType.NArray, 'naryPr', ['sub', 'sup', 'e'], P.applyNArray),\n phant: shape(MathFunctionType.Phantom, 'phantPr', ['e'], P.applyPhantom),\n rad: shape(MathFunctionType.Radical, 'radPr', ['deg', 'e'], P.applyRadical),\n sPre: shape(MathFunctionType.LeftSubSuperscript, 'sPrePr', ['sub', 'sup', 'e']),\n sSub: shape(MathFunctionType.SubSuperscript, 'sSubPr', ['e', 'sub']),\n sSubSup: shape(MathFunctionType.RightSubSuperscript, 'sSubSupPr', ['e', 'sub', 'sup'], P.applyRightScript),\n sSup: shape(MathFunctionType.SubSuperscript, 'sSupPr', ['e', 'sup'])\n};\n/**\n * Implementation helper. @private\n *\n * @param {Context} ctx The parse context.\n * @param {OpenXmlElement} xml The source element.\n * @param {string} message The diagnostic message.\n * @returns {void}\n */\nfunction diagnose(ctx, xml, message) {\n if (ctx.options !== undefined && ctx.options.onDiagnostic !== undefined) {\n const diagnostic = { path: xml.localName, message, localName: xml.localName };\n ctx.options.onDiagnostic(diagnostic);\n }\n}\n/**\n * Implementation helper. @private\n *\n * @param {OpenXmlElement} xml The source element.\n * @param {OfficeMath} target The target to populate.\n * @returns {void}\n */\nfunction preserve(xml, target) {\n target.functions.insert(target.functions.count, new OfficeMathUnknownElement(xml.localName, xml));\n}\n/**\n * Implementation helper. @private\n *\n * @param {OpenXmlElement} ctrl The `m:ctrlPr` element.\n * @param {OfficeMathFunctionBase} fn The function being populated.\n * @param {Context} ctx The parse context.\n * @returns {OfficeRunFormat} The result.\n */\nfunction ctrlFormat(ctrl, fn, ctx) {\n return ctx.adapter !== undefined ? ctx.adapter.parseControlProperties(ctrl, fn) : new BasicRunFormat(ctrl);\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMath} target The target to populate.\n * @param {OpenXmlElement | undefined} el The source element.\n * @param {Context} ctx The parse context.\n * @returns {void}\n */\nfunction fillArgument(target, el, ctx) {\n if (el === undefined) {\n return;\n }\n const ctrl = P.findMathChild(el, 'ctrlPr');\n if (ctrl !== undefined) {\n target.preservedControlProperties = ctrl;\n }\n const size = P.readArgumentSize(P.findMathChild(el, 'argPr'));\n if (size !== undefined) {\n target.argumentSize = Number(size);\n }\n fillElements(target, el, ctx);\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMath} target The target to populate.\n * @param {OpenXmlElement} parent The parent element.\n * @param {Context} ctx The parse context.\n * @returns {void}\n */\nfunction fillElements(target, parent, ctx) {\n childElements(parent).forEach((child) => {\n const isMath = child.namespaceUri === MATH_NAMESPACE;\n if (isMath && (child.localName === 'argPr' || child.localName === 'ctrlPr')) {\n return;\n }\n parseFunction(child, target, ctx);\n });\n}\n/**\n * Implementation helper. @private\n *\n * @param {OpenXmlElement} el The source element.\n * @param {OfficeMath} target The target to populate.\n * @param {Context} ctx The parse context.\n * @returns {void}\n */\nfunction parseFunction(el, target, ctx) {\n if (el.namespaceUri !== MATH_NAMESPACE) {\n preserve(el, target);\n return;\n }\n if (el.localName === 'r') {\n parseRun(el, target, ctx);\n return;\n }\n if (el.localName === 'd' || el.localName === 'eqArr') {\n parseList(el, target, ctx);\n return;\n }\n if (el.localName === 'm') {\n parseMatrix(el, target, ctx);\n return;\n }\n const spec = SHAPES.hasOwnProperty(el.localName) ? SHAPES[el.localName] : undefined;\n const args = spec === undefined ? [] : spec.args.map((n) => P.findMathChild(el, n));\n if (spec === undefined || args.some((a) => a === undefined)) {\n if (spec !== undefined) {\n diagnose(ctx, el, 'm:' + el.localName + ' is missing a required child');\n }\n preserve(el, target);\n return;\n }\n const fn = target.functions.add(spec.type);\n const pr = P.findMathChild(el, spec.pr);\n applyCommon(fn, pr, ctx);\n if (spec.apply !== undefined) {\n spec.apply(fn, pr);\n }\n bind(el.localName, fn, args, ctx);\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathFunctionBase} fn The function being populated.\n * @param {OpenXmlElement | undefined} pr The property element (`m:*Pr`), if present.\n * @param {Context} ctx The parse context.\n * @returns {void}\n */\nfunction applyCommon(fn, pr, ctx) {\n const ctrl = P.findMathChild(pr, 'ctrlPr');\n if (ctrl !== undefined) {\n fn.controlProperties = ctrlFormat(ctrl, fn, ctx);\n }\n}\n/**\n * Implementation helper. @private\n *\n * @param {string} name The local name of the child element.\n * @param {OfficeMathFunctionBase} fn The function being populated.\n * @param {OpenXmlElement[]} a First object.\n * @param {Context} ctx The parse context.\n * @returns {void}\n */\nfunction bind(name, fn, a, ctx) {\n const into = (m, i) => fillArgument(m, a[i], ctx);\n switch (fn.type) {\n case MathFunctionType.Fraction:\n into(fn.numerator, 0);\n into(fn.denominator, 1);\n break;\n case MathFunctionType.Function:\n into(fn.functionName, 0);\n into(fn.equation, 1);\n break;\n case MathFunctionType.Limit:\n fn.limitType = name === 'limUpp' ? MathLimitType.UpperLimit : MathLimitType.LowerLimit;\n into(fn.equation, 0);\n into(fn.limit, 1);\n break;\n case MathFunctionType.NArray:\n into(fn.subscript, 0);\n into(fn.superscript, 1);\n into(fn.equation, 2);\n break;\n case MathFunctionType.Radical:\n into(fn.degree, 0);\n into(fn.equation, 1);\n break;\n case MathFunctionType.LeftSubSuperscript:\n into(fn.subscript, 0);\n into(fn.superscript, 1);\n into(fn.equation, 2);\n break;\n case MathFunctionType.SubSuperscript:\n fn.scriptType = name === 'sSub' ? MathScriptType.Subscript : MathScriptType.Superscript;\n into(fn.equation, 0);\n into(fn.script, 1);\n break;\n case MathFunctionType.RightSubSuperscript:\n into(fn.equation, 0);\n into(fn.subscript, 1);\n into(fn.superscript, 2);\n break;\n default:\n into(fn.equation, 0);\n }\n}\n/**\n * Implementation helper. @private\n *\n * @param {OpenXmlElement} el The source element.\n * @param {OfficeMath} target The target to populate.\n * @param {Context} ctx The parse context.\n * @returns {void}\n */\nfunction parseList(el, target, ctx) {\n const items = P.findMathChildren(el, 'e');\n if (items.length < 1) {\n diagnose(ctx, el, 'm:' + el.localName + ' is missing a required m:e');\n preserve(el, target);\n return;\n }\n const isDelimiter = el.localName === 'd';\n const fn = target.functions.add(isDelimiter ? MathFunctionType.Delimiter : MathFunctionType.EquationArray);\n const pr = P.findMathChild(el, isDelimiter ? 'dPr' : 'eqArrPr');\n applyCommon(fn, pr, ctx);\n if (isDelimiter) {\n P.applyDelimiter(fn, pr);\n }\n else {\n P.applyEquationArray(fn, pr);\n }\n const equations = fn.equations;\n items.forEach((item) => fillArgument(equations.add(), item, ctx));\n}\n/**\n * Implementation helper. @private\n *\n * @param {OpenXmlElement} el The source element.\n * @param {OfficeMath} target The target to populate.\n * @param {Context} ctx The parse context.\n * @returns {void}\n */\nfunction parseMatrix(el, target, ctx) {\n const rows = P.findMathChildren(el, 'mr');\n if (rows.length < 1) {\n diagnose(ctx, el, 'm:m is missing a required m:mr');\n preserve(el, target);\n return;\n }\n const matrix = target.functions.add(MathFunctionType.Matrix);\n const pr = P.findMathChild(el, 'mPr');\n applyCommon(matrix, pr, ctx);\n P.applyMatrix(matrix, pr);\n const widest = rows.reduce((max, r) => Math.max(max, P.findMathChildren(r, 'e').length), 0);\n P.applyMatrixColumns(matrix, pr, widest);\n rows.forEach((row) => {\n const created = matrix.rows.add();\n P.findMathChildren(row, 'e').forEach((cell, i) => fillArgument(created.arguments.getItem(i), cell, ctx));\n });\n}\n/**\n * Implementation helper. @private\n *\n * @param {OpenXmlElement} el The source element.\n * @param {OfficeMath} target The target to populate.\n * @param {Context} ctx The parse context.\n * @returns {void}\n */\nfunction parseRun(el, target, ctx) {\n const run = target.functions.add(MathFunctionType.RunElement);\n P.applyRunFormat(run.mathFormat, P.findMathChild(el, 'rPr'));\n if (ctx.adapter !== undefined) {\n ctx.adapter.parseMathRun(el, run);\n return;\n }\n const item = new BasicRun();\n childElements(el).forEach((child) => {\n if (child.namespaceUri === MATH_NAMESPACE && child.localName === 'rPr') {\n return;\n }\n if (child.namespaceUri === WML_TRANSITIONAL_NAMESPACE && child.localName === 'rPr') {\n item.runProperties = child;\n return;\n }\n if (child.namespaceUri === MATH_NAMESPACE && child.localName === 't') {\n const space = attrValueNs(child, XML_NAMESPACE, 'space');\n item.parts.push(space === undefined ? { kind: 'text', value: textContent(child) }\n : { kind: 'text', value: textContent(child), space });\n return;\n }\n item.parts.push({ kind: 'xml', element: child });\n });\n run.item = item;\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathParagraph} paragraph The paragraph being populated.\n * @param {OpenXmlElement} oMath The `m:oMath` element.\n * @param {Context} ctx The parse context.\n * @returns {void}\n */\nfunction fillRoot(paragraph, oMath, ctx) {\n fillElements(paragraph.maths.add(), oMath, ctx);\n}\n/**\n * Parses an `m:oMathPara` (or a bare `m:oMath`) into an {@link OfficeMathParagraph}.\n *\n * Tolerant: never throws. A bare `m:oMath` is wrapped in a paragraph that has no explicit justification.\n * A malformed `m:oMathPara` (foreign children, text, or no `m:oMath`) is preserved verbatim as a single\n * `OfficeMathUnknownElement` and reported through `onDiagnostic`.\n *\n * @param {OpenXmlElement} root The `m:oMathPara` or `m:oMath` element.\n * @param {MathDocumentAdapter} adapter Optional host adapter supplying native runs and formats.\n * @param {ParseMathOptions} options Optional parser options.\n * @returns {OfficeMathParagraph} The populated model.\n * @public\n */\nexport function parseOfficeMathParagraph(root, adapter, options) {\n const paragraph = new OfficeMathParagraph(adapter);\n const ctx = { adapter, options };\n paragraph.suspendMutations(() => {\n if (!isWellFormedRoot(root)) {\n diagnose(ctx, root, 'm:' + root.localName + ' is not a well-formed m:oMath or m:oMathPara; preserved verbatim');\n preserve(root, paragraph.maths.add());\n return;\n }\n if (root.localName === 'oMath') {\n fillRoot(paragraph, root, ctx);\n return;\n }\n const jc = attrValueOf(P.findMathChild(P.findMathChild(root, 'oMathParaPr'), 'jc'));\n if (jc !== undefined && Object.prototype.hasOwnProperty.call(JUSTIFICATION, jc)) {\n paragraph.justification = JUSTIFICATION[jc];\n }\n P.findMathChildren(root, 'oMath').forEach((m) => fillRoot(paragraph, m, ctx));\n });\n return paragraph;\n}\n/**\n * A root is well formed when it is `m:oMath`, or an `m:oMathPara` whose children are an optional\n * `m:oMathParaPr` followed by at least one `m:oMath` and nothing else.\n *\n * @param {OpenXmlElement} root The candidate root element.\n * @returns {boolean} True when the root can be modelled without losing content.\n */\nfunction isWellFormedRoot(root) {\n if (root.namespaceUri !== MATH_NAMESPACE) {\n return false;\n }\n if (root.localName === 'oMath') {\n return true;\n }\n if (root.localName !== 'oMathPara') {\n return false;\n }\n const children = childElements(root).slice();\n const nonMath = children.filter((c) => c.namespaceUri !== MATH_NAMESPACE);\n const others = children.filter((c) => c.namespaceUri === MATH_NAMESPACE\n && c.localName !== 'oMath' && c.localName !== 'oMathParaPr');\n const hasText = root.children.some((c) => c.kind === 'text' && (c.value || '').trim() !== '');\n return nonMath.length === 0 && others.length === 0 && !hasText && P.findMathChildren(root, 'oMath').length > 0;\n}\nconst JUSTIFICATION = {\n left: MathJustification.Left, right: MathJustification.Right,\n center: MathJustification.Center, centerGroup: MathJustification.CenterGroup\n};\n/**\n * Implementation helper. @private\n *\n * @param {OpenXmlElement | undefined} el The source element.\n * @returns {string | undefined} The result.\n */\nfunction attrValueOf(el) {\n return el === undefined ? undefined : attrValue(el, 'val');\n}\n","/**\n * Typed mathml errors (mathml-spec Errors section).\n *\n * Common-owned; docx-js passes them through untouched.\n */\n/**\n * Schema violation detected on author/serialize of a typed math tree.\n *\n * Source: mathml-spec Errors section —\n * `elementPath` dotted model path (e.g. `'oMath.f.den'`),\n * `constraintKind` one of child-order | enum-value | required-child | value-range.\n *\n * @private\n * Internal error contract between the mathml model, parser, and serializer;\n * not part of the public authoring API.\n */\nexport class MathmlValidationError extends Error {\n constructor(message, elementPath, constraintKind) {\n super(message);\n this.name = 'MathmlValidationError';\n this.elementPath = elementPath;\n this.constraintKind = constraintKind;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n/**\n * Mutation attempted on a preserve-only (degraded) math equation.\n *\n * Source: mathml-spec §8b — malformed load degrades; later mutate throws.\n *\n * @private\n * Internal error contract between the mathml model, parser, and serializer;\n * not part of the public authoring API.\n */\nexport class MathmlReadOnlyError extends Error {\n constructor(message = 'Math equation is preserve-only and cannot be mutated') {\n super(message);\n /**\n * Always `true` — the equation is locked in preserve-only mode and mutations are blocked.\n */\n this.isPreserveOnly = true;\n this.name = 'MathmlReadOnlyError';\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n","/**\n * Low-level OMML element builders shared by the Office Math serializer.\n *\n * Source: ECMA-376-1 §22.1 (shared-math.xsd). The schema declares `attributeFormDefault=\"qualified\"`,\n * so `m:val`-style attributes are written in the math namespace, as Word does.\n */\nimport { MATH_NAMESPACE, MATH_PREFIX_FALLBACKS } from '../constants';\nimport { MathmlValidationError } from '../errors';\nimport { createElement } from '../openxml';\n/**\n * Picks the math prefix for a save.\n *\n * @param {SerializeOfficeMathOptions} options The serializer options.\n * @returns {string} The prefix.\n * @private\n */\nexport function resolveMathPrefix(options) {\n if (options !== undefined && options.prefix !== undefined && options.prefix.length > 0) {\n return options.prefix;\n }\n const reserved = options !== undefined && options.reservedPrefixes !== undefined ? options.reservedPrefixes : [];\n const free = MATH_PREFIX_FALLBACKS.filter((p) => reserved.indexOf(p) === -1);\n return free.length > 0 ? free[0] : 'm999';\n}\n/**\n * Creates an `m:` element. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {string} name The local name.\n * @param {ReadonlyArray<OpenXmlChild>} children The children.\n * @param {ReadonlyArray<OpenXmlAttribute>} attributes The attributes.\n * @returns {OpenXmlElement} The element.\n */\nexport function mathElement(ctx, name, children = [], attributes = []) {\n return createElement(MATH_NAMESPACE, name, ctx.prefix, { attributes, children });\n}\n/**\n * Creates a namespace-qualified math attribute. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {string} name The attribute local name.\n * @param {string} value The value.\n * @returns {OpenXmlAttribute} The attribute.\n */\nexport function mathAttribute(ctx, name, value) {\n return { namespaceUri: MATH_NAMESPACE, localName: name, prefix: ctx.prefix, value };\n}\n/**\n * Creates `<m:name m:val=\"value\"/>`. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {string} name The element local name.\n * @param {string} value The value.\n * @returns {OpenXmlElement} The element.\n */\nexport function valueElement(ctx, name, value) {\n return mathElement(ctx, name, [], [mathAttribute(ctx, 'val', value)]);\n}\n/**\n * Creates an on/off element using the canonical `1` / `0`. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {string} name The element local name.\n * @param {boolean} value The value.\n * @returns {OpenXmlElement} The element.\n */\nexport function onOffElement(ctx, name, value) {\n return valueElement(ctx, name, value ? '1' : '0');\n}\n/**\n * Throws a validation error. @private\n *\n * @param {string} message The message.\n * @param {string} path The element path.\n * @param {MathmlConstraintKind} kind The violated constraint.\n * @returns {never} Never returns.\n */\nexport function invalid(message, path, kind) {\n throw new MathmlValidationError(message, path, kind);\n}\n/**\n * Maps an enum value to its OMML token, failing on out-of-range values. @private\n *\n * @param {ReadonlyArray<string>} table Tokens indexed by enum value.\n * @param {number} value The enum value.\n * @param {string} path The element path.\n * @param {string} label The schema type name.\n * @returns {string} The token.\n */\nexport function token(table, value, path, label) {\n const result = table[value];\n return result !== undefined ? result : invalid('Illegal ' + label + ' value ' + String(value), path, 'enum-value');\n}\n/**\n * Asserts an unsigned integer. @private\n *\n * @param {number} value The value.\n * @param {string} path The element path.\n * @returns {string} The decimal text.\n */\nexport function unsigned(value, path) {\n return Number.isInteger(value) && value >= 0 ? String(value) : invalid('Expected an unsigned integer, got ' + String(value), path, 'value-range');\n}\n/**\n * Appends an on/off element for every flag that was explicitly set. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OpenXmlChild[]} out The children being built.\n * @param {ExplicitPropertyStore} store The owner of the properties.\n * @param {FlagEntry[]} entries Entries in schema order.\n * @returns {void}\n */\nexport function writeFlags(ctx, out, store, entries) {\n entries.forEach((e) => { if (store.isExplicit(e[0])) {\n out.push(onOffElement(ctx, e[1], e[2]));\n } });\n}\n/**\n * Appends a value element when the property was explicitly set. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OpenXmlChild[]} out The children being built.\n * @param {ExplicitPropertyStore} store The owner of the property.\n * @param {number} key The property key.\n * @param {string} name The element local name.\n * @param {Function} value Lazily produces the text, so unset properties are never evaluated.\n * @returns {void}\n */\nexport function writeValue(ctx, out, store, key, name, value) {\n if (store.isExplicit(key)) {\n out.push(valueElement(ctx, name, value()));\n }\n}\n","/**\n * Writers that turn explicit Office Math properties into `m:*Pr` children.\n *\n * Source: ECMA-376-1 §22.1.2 (shared-math.xsd). Only explicitly set properties are written, in schema order.\n */\nimport { MathFunctionType } from '../office-math/enums';\nimport { K } from '../office-math/keys';\nimport { invalid, mathAttribute, mathElement, token, unsigned, valueElement, writeFlags, writeValue } from './omml-writer';\nconst FRACTION = ['bar', 'noBar', 'skw', 'lin'];\nconst VERTICAL = ['center', 'top', 'bottom'];\nconst HORIZONTAL = ['center', 'left', 'right'];\nconst SHAPE = ['centered', 'match'];\nconst FONT = ['double-struck', 'fraktur', 'monospace', 'roman', 'sans-serif', 'script'];\nconst STYLE = ['i', 'bi', 'b', 'p'];\n/** Element name of the property container of each function. @private */\nexport const PROPERTY_ELEMENT = {\n [MathFunctionType.Accent]: 'accPr', [MathFunctionType.Bar]: 'barPr', [MathFunctionType.BorderBox]: 'borderBoxPr',\n [MathFunctionType.Box]: 'boxPr', [MathFunctionType.Delimiter]: 'dPr', [MathFunctionType.EquationArray]: 'eqArrPr',\n [MathFunctionType.Fraction]: 'fPr', [MathFunctionType.Function]: 'funcPr', [MathFunctionType.GroupCharacter]: 'groupChrPr',\n [MathFunctionType.Matrix]: 'mPr', [MathFunctionType.NArray]: 'naryPr', [MathFunctionType.Phantom]: 'phantPr',\n [MathFunctionType.Radical]: 'radPr', [MathFunctionType.LeftSubSuperscript]: 'sPrePr',\n [MathFunctionType.RightSubSuperscript]: 'sSubSupPr'\n};\n/**\n * Writes `m:brk` when the break has an explicit alignment point, otherwise an empty `m:brk`. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OfficeMathBreak} brk The break.\n * @returns {OpenXmlChild} The element.\n */\nexport function writeBreak(ctx, brk) {\n if (!brk.isExplicit(K.AlignAt)) {\n return mathElement(ctx, 'brk');\n }\n if (!Number.isInteger(brk.alignAt) || brk.alignAt < 1 || brk.alignAt > 255) {\n invalid('alnAt must be an integer in 1..255, got ' + String(brk.alignAt), 'brk.alnAt', 'value-range');\n }\n return mathElement(ctx, 'brk', [], [mathAttribute(ctx, 'alnAt', String(brk.alignAt))]);\n}\n/**\n * Writes the children of `m:rPr`. `m:nor` excludes `m:scr`/`m:sty` per the schema choice. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OfficeMathFormat} format The Math run format.\n * @returns {OpenXmlChild[]} The children.\n */\nexport function runFormatChildren(ctx, format) {\n const out = [];\n writeFlags(ctx, out, format, [[K.HasLiteral, 'lit', format.hasLiteral]]);\n const normal = format.isExplicit(K.HasNormalText) && (format.hasNormalText || !isScriptStyle(format));\n if (normal) {\n writeFlags(ctx, out, format, [[K.HasNormalText, 'nor', format.hasNormalText]]);\n }\n else {\n writeValue(ctx, out, format, K.Script, 'scr', () => token(FONT, format.font, 'rPr.scr', 'ST_Script'));\n writeValue(ctx, out, format, K.Style, 'sty', () => token(STYLE, format.style, 'rPr.sty', 'ST_Style'));\n }\n if (format.break !== undefined) {\n out.push(writeBreak(ctx, format.break));\n }\n writeFlags(ctx, out, format, [[K.HasAlignment, 'aln', format.hasAlignment]]);\n return out;\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathFormat} format The Math run format.\n * @returns {boolean} True when a script or style is explicit.\n */\nfunction isScriptStyle(format) {\n return format.isExplicit(K.Script) || format.isExplicit(K.Style);\n}\n/**\n * Implementation helper. @private\n *\n * @param {number} rule The spacing rule.\n * @param {string} path The element path.\n * @returns {string} The decimal text.\n */\nfunction ruleText(rule, path) {\n return rule >= 0 && rule <= 4 && Number.isInteger(rule) ? String(rule) : invalid('Illegal spacing rule ' + String(rule), path, 'enum-value');\n}\n/**\n * Implementation helper. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OpenXmlChild[]} out The children being built.\n * @param {OfficeMathEquationArray | OfficeMathMatrix} fn The function.\n * @param {string} path The element path.\n * @returns {void}\n */\nfunction rowSpacing(ctx, out, fn, path) {\n writeValue(ctx, out, fn, K.RowSpacingRule, 'rSpRule', () => ruleText(fn.rowSpacingRule, path + '.rSpRule'));\n}\n/**\n * Implementation helper. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OpenXmlChild[]} out The children being built.\n * @param {OfficeMathEquationArray} fn The equation array.\n * @returns {void}\n */\nfunction equationArray(ctx, out, fn) {\n writeValue(ctx, out, fn, K.EqArrAlign, 'baseJc', () => token(VERTICAL, fn.verticalAlignment, 'eqArrPr.baseJc', 'ST_YAlign'));\n writeFlags(ctx, out, fn, [[K.MaxDist, 'maxDist', fn.expandEquationContainer], [K.ObjDist, 'objDist', fn.expandEquationContent]]);\n rowSpacing(ctx, out, fn, 'eqArrPr');\n writeValue(ctx, out, fn, K.RowSpacing, 'rSp', () => unsigned(fn.rowSpacing, 'eqArrPr.rSp'));\n}\n/**\n * Implementation helper. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OpenXmlChild[]} out The children being built.\n * @param {OfficeMathMatrix} fn The matrix.\n * @returns {void}\n */\nfunction matrix(ctx, out, fn) {\n writeValue(ctx, out, fn, K.MatrixAlign, 'baseJc', () => token(VERTICAL, fn.verticalAlignment, 'mPr.baseJc', 'ST_YAlign'));\n writeFlags(ctx, out, fn, [[K.PlaceHoldHidden, 'plcHide', fn.hidePlaceholder]]);\n rowSpacing(ctx, out, fn, 'mPr');\n writeValue(ctx, out, fn, K.ColumnGapRule, 'cGpRule', () => ruleText(fn.columnGapRule, 'mPr.cGpRule'));\n writeValue(ctx, out, fn, K.RowSpacing, 'rSp', () => unsigned(fn.rowSpacing, 'mPr.rSp'));\n writeValue(ctx, out, fn, K.ColumnSpacing, 'cSp', () => unsigned(fn.columnSpacing, 'mPr.cSp'));\n writeValue(ctx, out, fn, K.ColumnGap, 'cGp', () => unsigned(fn.columnGap, 'mPr.cGp'));\n const columns = matrixColumns(ctx, fn);\n if (columns !== undefined) {\n out.push(columns);\n }\n}\n/**\n * Writes `m:mcs`, grouping consecutive columns with the same explicit alignment. Omitted when no column\n * alignment is explicit, because the parser recreates default columns from the row cells. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OfficeMathMatrix} fn The matrix.\n * @returns {OpenXmlChild | undefined} The element, if needed.\n */\nfunction matrixColumns(ctx, fn) {\n const columns = fn.columns.toArray();\n if (!columns.some((c) => c.isExplicit(K.MatrixAlign))) {\n return undefined;\n }\n const groups = [];\n columns.forEach((column) => {\n const last = groups[groups.length - 1];\n const same = last !== undefined && last.column.isExplicit(K.MatrixAlign) === column.isExplicit(K.MatrixAlign)\n && (!column.isExplicit(K.MatrixAlign) || last.column.horizontalAlignment === column.horizontalAlignment);\n if (same && last !== undefined && last.count < 255) {\n last.count++;\n }\n else {\n groups.push({ column, count: 1 });\n }\n });\n return mathElement(ctx, 'mcs', groups.map((g) => {\n const kids = [valueElement(ctx, 'count', String(g.count))];\n writeValue(ctx, kids, g.column, K.MatrixAlign, 'mcJc', () => token(HORIZONTAL, g.column.horizontalAlignment, 'mcPr.mcJc', 'ST_XAlign'));\n return mathElement(ctx, 'mc', [mathElement(ctx, 'mcPr', kids)]);\n }));\n}\n/**\n * Implementation helper. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OpenXmlChild[]} out The children being built.\n * @param {OfficeMathFunctionBase} fn The function.\n * @returns {void}\n */\nfunction multiProperties(ctx, out, fn) {\n if (fn.type === MathFunctionType.Delimiter) {\n const d = fn;\n writeValue(ctx, out, d, K.BegChar, 'begChr', () => d.beginCharacter);\n writeValue(ctx, out, d, K.SeparatorChar, 'sepChr', () => d.separator);\n writeValue(ctx, out, d, K.EndChar, 'endChr', () => d.endCharacter);\n writeFlags(ctx, out, d, [[K.Grow, 'grow', d.isGrow]]);\n writeValue(ctx, out, d, K.Shape, 'shp', () => token(SHAPE, d.delimiterShape, 'dPr.shp', 'ST_Shp'));\n }\n else if (fn.type === MathFunctionType.EquationArray) {\n equationArray(ctx, out, fn);\n }\n else if (fn.type === MathFunctionType.Fraction) {\n const f = fn;\n writeValue(ctx, out, f, K.FractionType, 'type', () => token(FRACTION, f.fractionType, 'fPr.type', 'ST_FType'));\n }\n else if (fn.type === MathFunctionType.Matrix) {\n matrix(ctx, out, fn);\n }\n else if (fn.type === MathFunctionType.NArray) {\n const n = fn;\n writeValue(ctx, out, n, K.NAryChar, 'chr', () => n.nArrayCharacter);\n writeValue(ctx, out, n, K.SubSupLimit, 'limLoc', () => n.subSuperscriptLimit ? 'subSup' : 'undOvr');\n writeFlags(ctx, out, n, [[K.HasGrow, 'grow', n.hasGrow], [K.HideSubscript, 'subHide', n.hideLowerLimit],\n [K.HideSuperscript, 'supHide', n.hideUpperLimit]]);\n }\n else if (fn.type === MathFunctionType.RightSubSuperscript) {\n writeFlags(ctx, out, fn, [[K.SkipAlign, 'alnScr', fn.isSkipAlign]]);\n }\n}\n/**\n * Implementation helper. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OpenXmlChild[]} out The children being built.\n * @param {OfficeMathFunctionBase} fn The function.\n * @returns {void}\n */\nfunction basicProperties(ctx, out, fn) {\n if (fn.type === MathFunctionType.Accent) {\n writeValue(ctx, out, fn, K.AccentChar, 'chr', () => fn.accentCharacter);\n }\n else if (fn.type === MathFunctionType.Bar) {\n writeValue(ctx, out, fn, K.BarTop, 'pos', () => fn.barTop ? 'top' : 'bot');\n }\n else if (fn.type === MathFunctionType.BorderBox) {\n const b = fn;\n writeFlags(ctx, out, b, [[K.HideTop, 'hideTop', b.hideTop], [K.HideBottom, 'hideBot', b.hideBottom],\n [K.HideLeft, 'hideLeft', b.hideLeft], [K.HideRight, 'hideRight', b.hideRight],\n [K.StrikeHorizontal, 'strikeH', b.strikeHorizontal], [K.StrikeVertical, 'strikeV', b.strikeVertical],\n [K.StrikeBLTR, 'strikeBLTR', b.strikeDiagonalUp], [K.StrikeTLBR, 'strikeTLBR', b.strikeDiagonalDown]]);\n }\n else if (fn.type === MathFunctionType.Box) {\n const b = fn;\n writeFlags(ctx, out, b, [[K.OperatorEmulator, 'opEmu', b.operatorEmulator], [K.NoBreak, 'noBreak', b.noBreak],\n [K.EnableDifferential, 'diff', b.enableDifferential]]);\n if (b.break !== undefined) {\n out.push(writeBreak(ctx, b.break));\n }\n writeFlags(ctx, out, b, [[K.BoxAlign, 'aln', b.alignment]]);\n }\n else if (fn.type === MathFunctionType.GroupCharacter) {\n const g = fn;\n writeValue(ctx, out, g, K.GroupChar, 'chr', () => g.groupCharacter);\n writeValue(ctx, out, g, K.HasCharTop, 'pos', () => g.hasCharacterTop ? 'top' : 'bot');\n writeValue(ctx, out, g, K.HasAlignTop, 'vertJc', () => g.hasAlignTop ? 'top' : 'bot');\n }\n else if (fn.type === MathFunctionType.Phantom) {\n const p = fn;\n writeFlags(ctx, out, p, [[K.Show, 'show', p.show], [K.ZeroWidth, 'zeroWid', p.zeroWidth],\n [K.ZeroAscent, 'zeroAsc', p.zeroAscent], [K.ZeroDescent, 'zeroDesc', p.zeroDescent], [K.Transparent, 'transp', p.transparent]]);\n }\n else if (fn.type === MathFunctionType.Radical) {\n writeFlags(ctx, out, fn, [[K.HideDegree, 'degHide', fn.hideDegree]]);\n }\n}\n/**\n * Writes the explicit properties of a function in schema order, excluding `m:ctrlPr`. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OfficeMathFunctionBase} fn The function.\n * @returns {OpenXmlChild[]} The property children.\n */\nexport function functionProperties(ctx, fn) {\n const out = [];\n basicProperties(ctx, out, fn);\n multiProperties(ctx, out, fn);\n return out;\n}\n","/**\n * Office Math model → OMML serializer.\n *\n * Source: ECMA-376-1 §22.1 (shared-math.xsd). Writes only explicitly set properties, in schema order, and\n * re-emits {@link OfficeMathUnknownElement} content verbatim. Throws {@link MathmlValidationError} for\n * structures the schema forbids (for example a delimiter without an `m:e`).\n */\nimport { MATH_NAMESPACE, XML_NAMESPACE } from '../constants';\nimport { createText } from '../openxml';\nimport { MathFunctionType, MathLimitType, MathScriptType } from '../office-math/enums';\nimport { BasicRun, BasicRunFormat } from '../office-math/basic';\nimport { K } from '../office-math/keys';\nimport { OfficeMathUnknownElement } from '../office-math/unknown-element';\nimport { invalid, mathElement, resolveMathPrefix, token, valueElement } from './omml-writer';\nimport { functionProperties, PROPERTY_ELEMENT, runFormatChildren } from './office-math-properties-writer';\nconst JUSTIFICATION = ['centerGroup', 'center', 'left', 'right'];\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathFunctionBase} fn The function.\n * @returns {Layout | undefined} The layout, or undefined for list/matrix/run/unknown functions.\n */\nfunction layoutOf(fn) {\n switch (fn.type) {\n case MathFunctionType.Accent: return { name: 'acc', pr: 'accPr', args: [['e', fn.equation]] };\n case MathFunctionType.Bar: return { name: 'bar', pr: 'barPr', args: [['e', fn.equation]] };\n case MathFunctionType.BorderBox: return { name: 'borderBox', pr: 'borderBoxPr', args: [['e', fn.equation]] };\n case MathFunctionType.Box: return { name: 'box', pr: 'boxPr', args: [['e', fn.equation]] };\n case MathFunctionType.GroupCharacter:\n return { name: 'groupChr', pr: 'groupChrPr', args: [['e', fn.equation]] };\n case MathFunctionType.Phantom: return { name: 'phant', pr: 'phantPr', args: [['e', fn.equation]] };\n case MathFunctionType.Radical:\n return { name: 'rad', pr: 'radPr', args: [['deg', fn.degree], ['e', fn.equation]] };\n case MathFunctionType.Fraction:\n return { name: 'f', pr: 'fPr', args: [['num', fn.numerator], ['den', fn.denominator]] };\n case MathFunctionType.Function:\n return { name: 'func', pr: 'funcPr', args: [['fName', fn.functionName], ['e', fn.equation]] };\n default: return layoutOfScripts(fn);\n }\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathFunctionBase} fn The function.\n * @returns {Layout | undefined} The layout, or undefined when `fn` is not a limit, n-ary or script function.\n */\nfunction layoutOfScripts(fn) {\n if (fn.type === MathFunctionType.Limit) {\n const l = fn;\n const upper = l.limitType === MathLimitType.UpperLimit;\n return { name: upper ? 'limUpp' : 'limLow', pr: upper ? 'limUppPr' : 'limLowPr', args: [['e', l.equation], ['lim', l.limit]] };\n }\n if (fn.type === MathFunctionType.NArray) {\n const n = fn;\n return { name: 'nary', pr: 'naryPr', args: [['sub', n.subscript], ['sup', n.superscript], ['e', n.equation]] };\n }\n if (fn.type === MathFunctionType.SubSuperscript) {\n const s = fn;\n const sub = s.scriptType === MathScriptType.Subscript;\n return { name: sub ? 'sSub' : 'sSup', pr: sub ? 'sSubPr' : 'sSupPr', args: [['e', s.equation], [sub ? 'sub' : 'sup', s.script]] };\n }\n if (fn.type === MathFunctionType.RightSubSuperscript) {\n const r = fn;\n return { name: 'sSubSup', pr: 'sSubSupPr', args: [['e', r.equation], ['sub', r.subscript], ['sup', r.superscript]] };\n }\n if (fn.type === MathFunctionType.LeftSubSuperscript) {\n const p = fn;\n return { name: 'sPre', pr: 'sPrePr', args: [['sub', p.subscript], ['sup', p.superscript], ['e', p.equation]] };\n }\n return undefined;\n}\n/**\n * Builds the `m:ctrlPr` of a function from its control properties. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OfficeMathFunctionBase} fn The function.\n * @returns {OpenXmlChild[]} Zero or one element.\n */\nfunction controlProperties(ctx, fn) {\n if (!fn.hasControlProperties) {\n return [];\n }\n if (ctx.adapter !== undefined) {\n const kids = ctx.adapter.serializeControlProperties(fn.controlProperties);\n return kids.length > 0 ? [mathElement(ctx, 'ctrlPr', kids)] : [];\n }\n const format = fn.controlProperties instanceof BasicRunFormat ? fn.controlProperties : undefined;\n return format !== undefined && format.preservedXml !== undefined ? [format.preservedXml] : [];\n}\n/**\n * Writes the property container (`m:*Pr`) of a function, or nothing when it would be empty. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OfficeMathFunctionBase} fn The function.\n * @param {string} prName The container element name.\n * @returns {OpenXmlChild[]} Zero or one element.\n */\nfunction propertyContainer(ctx, fn, prName) {\n const kids = functionProperties(ctx, fn).concat(controlProperties(ctx, fn));\n return kids.length > 0 ? [mathElement(ctx, prName, kids)] : [];\n}\n/**\n * Writes an argument element (`m:e`, `m:num`, …). @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {string} name The element name.\n * @param {OfficeMath} math The argument content.\n * @param {string} path The element path for diagnostics.\n * @returns {OpenXmlElement} The element.\n */\nfunction writeArgument(ctx, name, math, path) {\n const kids = [];\n if (math.isExplicit(K.ArgumentSize)) {\n kids.push(mathElement(ctx, 'argPr', [valueElement(ctx, 'argSz', String(math.argumentSize))]));\n }\n writeContent(ctx, math, path).forEach((e) => kids.push(e));\n if (math.preservedControlProperties !== undefined) {\n kids.push(math.preservedControlProperties);\n }\n return mathElement(ctx, name, kids);\n}\n/**\n * Implementation helper. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OfficeMath} math The equation.\n * @param {string} path The element path for diagnostics.\n * @returns {OpenXmlElement[]} The serialized functions.\n */\nfunction writeContent(ctx, math, path) {\n return math.functions.toArray().map((fn, i) => writeFunction(ctx, fn, path + '[' + String(i) + ']'));\n}\n/**\n * Implementation helper. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {string} name The element name (`d` or `eqArr`).\n * @param {OfficeMathDelimiter | OfficeMathEquationArray} fn The function.\n * @param {string} prName The property container name.\n * @param {string} path The element path for diagnostics.\n * @returns {OpenXmlElement} The element.\n */\nfunction writeList(ctx, name, fn, prName, path) {\n if (fn.equations.count < 1) {\n invalid('m:' + name + ' requires at least one m:e', path, 'required-child');\n }\n const kids = propertyContainer(ctx, fn, prName);\n fn.equations.toArray().forEach((e, i) => kids.push(writeArgument(ctx, 'e', e, path + '.e[' + String(i) + ']')));\n return mathElement(ctx, name, kids);\n}\n/**\n * Implementation helper. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OfficeMathMatrix} fn The matrix.\n * @param {string} path The element path for diagnostics.\n * @returns {OpenXmlElement} The element.\n */\nfunction writeMatrix(ctx, fn, path) {\n if (fn.rows.count < 1) {\n invalid('m:m requires at least one m:mr', path, 'required-child');\n }\n const kids = propertyContainer(ctx, fn, PROPERTY_ELEMENT[MathFunctionType.Matrix]);\n fn.rowItems.forEach((row, r) => {\n const cells = row.arguments.toArray()\n .map((cell, c) => writeArgument(ctx, 'e', cell, path + '.mr[' + String(r) + '].e[' + String(c) + ']'));\n kids.push(mathElement(ctx, 'mr', cells));\n });\n return mathElement(ctx, 'm', kids);\n}\n/**\n * Implementation helper. @private\n *\n * @param {string} value The text.\n * @returns {boolean} True when leading or trailing whitespace needs `xml:space=\"preserve\"`.\n */\nfunction needsPreserve(value) {\n return value.length === 0 || /^\\s|\\s$/.test(value);\n}\n/**\n * Implementation helper. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {BasicRunPart} part The run part.\n * @returns {OpenXmlChild} The serialized part.\n */\nfunction writeRunPart(ctx, part) {\n if (part.kind === 'xml') {\n return part.element;\n }\n const space = part.space !== undefined ? part.space : needsPreserve(part.value) ? 'preserve' : undefined;\n const attrs = space === undefined ? [] : [{ namespaceUri: XML_NAMESPACE, localName: 'space', prefix: 'xml', value: space }];\n return mathElement(ctx, 't', [createText(part.value)], attrs);\n}\n/**\n * Writes `m:r`: `m:rPr`, then the host/WordprocessingML run content. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OfficeMathRunElement} run The run element.\n * @returns {OpenXmlElement} The element.\n */\nfunction writeRun(ctx, run) {\n const kids = [];\n const format = runFormatChildren(ctx, run.mathFormat);\n if (format.length > 0) {\n kids.push(mathElement(ctx, 'rPr', format));\n }\n if (ctx.adapter !== undefined) {\n ctx.adapter.serializeMathRun(run).forEach((e) => kids.push(e));\n }\n else if (run.item instanceof BasicRun) {\n if (run.item.runProperties !== undefined) {\n kids.push(run.item.runProperties);\n }\n run.item.parts.forEach((part) => kids.push(writeRunPart(ctx, part)));\n }\n return mathElement(ctx, 'r', kids);\n}\n/**\n * Serializes one function. @private\n *\n * @param {WriteContext} ctx The write context.\n * @param {OfficeMathFunctionBase} fn The function.\n * @param {string} path The element path for diagnostics.\n * @returns {OpenXmlElement} The element.\n */\nfunction writeFunction(ctx, fn, path) {\n if (fn instanceof OfficeMathUnknownElement) {\n return fn.preservedXml;\n }\n if (fn.type === MathFunctionType.RunElement) {\n return writeRun(ctx, fn);\n }\n if (fn.type === MathFunctionType.Delimiter) {\n return writeList(ctx, 'd', fn, 'dPr', path);\n }\n if (fn.type === MathFunctionType.EquationArray) {\n return writeList(ctx, 'eqArr', fn, 'eqArrPr', path);\n }\n if (fn.type === MathFunctionType.Matrix) {\n return writeMatrix(ctx, fn, path);\n }\n const layout = layoutOf(fn);\n if (layout === undefined) {\n return invalid('Unsupported Math function type ' + String(fn.type), path, 'enum-value');\n }\n const kids = propertyContainer(ctx, fn, layout.pr);\n layout.args.forEach((a) => kids.push(writeArgument(ctx, a[0], a[1], path + '.' + a[0])));\n return mathElement(ctx, layout.name, kids);\n}\n/**\n * Implementation helper. @private\n *\n * @param {OfficeMathParagraph} paragraph The paragraph.\n * @returns {OpenXmlElement | undefined} A malformed root that the parser preserved verbatim, if that is all the paragraph holds.\n */\nfunction preservedRoot(paragraph) {\n if (paragraph.maths.count !== 1 || paragraph.maths.getItem(0).functions.count !== 1) {\n return undefined;\n }\n const only = paragraph.maths.getItem(0).functions.getItem(0);\n const isRoot = only instanceof OfficeMathUnknownElement && only.preservedXml.namespaceUri === MATH_NAMESPACE\n && (only.localName === 'oMath' || only.localName === 'oMathPara');\n return isRoot ? only.preservedXml : undefined;\n}\n/**\n * Serializes an {@link OfficeMathParagraph} to `m:oMathPara`, or to a bare `m:oMath` for an inline\n * paragraph (one equation, no explicit justification). A paragraph that holds a verbatim-preserved malformed\n * root re-emits that root unchanged.\n *\n * @param {OfficeMathParagraph} paragraph The model.\n * @param {SerializeOfficeMathOptions} options Optional serializer options.\n * @returns {OpenXmlElement} The `m:oMathPara` or `m:oMath` element.\n * @throws {MathmlValidationError} When the model violates the schema.\n * @public\n */\nexport function serializeOfficeMathParagraph(paragraph, options) {\n const adapter = paragraph.adapter;\n const ctx = { prefix: resolveMathPrefix(options), adapter };\n const preserved = preservedRoot(paragraph);\n if (preserved !== undefined) {\n return preserved;\n }\n const display = options !== undefined && options.display !== undefined\n ? options.display : paragraph.hasExplicitJustification || paragraph.maths.count !== 1;\n const maths = paragraph.maths.toArray();\n if (maths.length < 1) {\n invalid('An equation paragraph requires at least one m:oMath', 'oMathPara', 'required-child');\n }\n if (!display) {\n if (maths.length > 1) {\n invalid('A bare m:oMath holds exactly one equation', 'oMath', 'child-order');\n }\n return mathElement(ctx, 'oMath', writeContent(ctx, maths[0], 'oMath'));\n }\n const kids = [];\n if (paragraph.hasExplicitJustification) {\n const jc = token(JUSTIFICATION, paragraph.justification, 'oMathParaPr.jc', 'ST_Jc');\n kids.push(mathElement(ctx, 'oMathParaPr', [valueElement(ctx, 'jc', jc)]));\n }\n maths.forEach((m, i) => {\n const path = 'oMathPara.oMath[' + String(i) + ']';\n kids.push(mathElement(ctx, 'oMath', writeContent(ctx, m, path)));\n });\n return mathElement(ctx, 'oMathPara', kids);\n}\n","/**\n * Schema-exact Office Math simple-type unions.\n *\n * Source: ECMA-376 Part 1 §22.1.3 / Part 4 Annex A.8.1 `shared-math.xsd`.\n * Serializer emits only these tokens — never synthesize members.\n */\n/** Members of {@link MathJc}. */\nexport const MATH_JC_VALUES = ['left', 'right', 'center', 'centerGroup'];\n/** Members of {@link MathFractionType}. */\nexport const MATH_FTYPE_VALUES = ['bar', 'skw', 'lin', 'noBar'];\n/** Members of {@link MathShape} — centered|match only. */\nexport const MATH_SHP_VALUES = ['centered', 'match'];\n/** Members of {@link MathLimLoc}. */\nexport const MATH_LIMLOC_VALUES = ['undOvr', 'subSup'];\n/** Members of {@link MathTopBot}. */\nexport const MATH_TOPBOT_VALUES = ['top', 'bot'];\n/** Members of {@link MathBreakBin}. */\nexport const MATH_BREAKBIN_VALUES = ['before', 'after', 'repeat'];\n/** Members of {@link MathBreakBinSub}. */\nexport const MATH_BREAKBINSUB_VALUES = ['--', '-+', '+-'];\n/** Members of {@link MathScript}. */\nexport const MATH_SCRIPT_VALUES = [\n 'roman',\n 'script',\n 'fraktur',\n 'double-struck',\n 'sans-serif',\n 'monospace',\n];\n/** Members of {@link MathStyle}. */\nexport const MATH_STYLE_VALUES = ['p', 'b', 'i', 'bi'];\n/** Members of {@link MathSpacingRule}. */\nexport const MATH_SPACING_RULE_VALUES = [0, 1, 2, 3, 4];\n/** Parse ST_Jc; undefined when not a known token. */\nexport function parseMathJc(value) {\n return (MATH_JC_VALUES.indexOf(value) !== -1) ? value : undefined;\n}\n/** Parse ST_FType. */\nexport function parseMathFractionType(value) {\n return (MATH_FTYPE_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_Shp. */\nexport function parseMathShape(value) {\n return (MATH_SHP_VALUES.indexOf(value) !== -1) ? value : undefined;\n}\n/** Parse ST_LimLoc. */\nexport function parseMathLimLoc(value) {\n return (MATH_LIMLOC_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_TopBot. */\nexport function parseMathTopBot(value) {\n return (MATH_TOPBOT_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_BreakBin. */\nexport function parseMathBreakBin(value) {\n return (MATH_BREAKBIN_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_BreakBinSub. */\nexport function parseMathBreakBinSub(value) {\n return (MATH_BREAKBINSUB_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_Script. */\nexport function parseMathScript(value) {\n return (MATH_SCRIPT_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/** Parse ST_Style. */\nexport function parseMathStyle(value) {\n return (MATH_STYLE_VALUES.indexOf(value) !== -1)\n ? value\n : undefined;\n}\n/**\n * ST_Integer2 range −2..2 (argSz).\n *\n * Source: ECMA-376-1 §22.1.3.5.\n */\nexport function isInteger2(value) {\n return Number.isInteger(value) && value >= -2 && value <= 2;\n}\n/**\n * ST_Integer255 range 1..255.\n *\n * Source: ECMA-376-1 §22.1.3.6.\n */\nexport function isInteger255(value) {\n return Number.isInteger(value) && value >= 1 && value <= 255;\n}\n/**\n * ST_UnSignedInteger ≥ 0.\n *\n * Source: ECMA-376-1 §22.1.3.14.\n */\nexport function isUnSignedInteger(value) {\n return Number.isInteger(value) && value >= 0;\n}\n/**\n * ST_SpacingRule 0..4.\n *\n * Source: ECMA-376-1 §22.1.3.11.\n */\nexport function isSpacingRule(value) {\n return Number.isInteger(value) && value >= 0 && value <= 4;\n}\n/** Parse OnOff-style val attribute (`1`/`true`/`on` → true). */\nexport function parseOnOff(value) {\n if (value === undefined) {\n return undefined;\n }\n const v = value.toLowerCase();\n if (v === '1' || v === 'true' || v === 'on') {\n return true;\n }\n if (v === '0' || v === 'false' || v === 'off') {\n return false;\n }\n return undefined;\n}\n/** Emit OnOff as `'1'` / `'0'`. */\nexport function emitOnOff(value) {\n return value ? '1' : '0';\n}\n","/**\n * Document-level math settings (`m:mathPr`, `CT_MathPr`).\n *\n * Source: ECMA-376 shared-math.xsd `CT_MathPr`; parity with compression\n * `OfficeMathProperties` / `SerializeMathProperties`.\n *\n * @packageDocumentation\n */\nimport { MATH_NAMESPACE } from './constants';\nimport { MathmlValidationError } from './errors';\nimport { createElement, attrValue, childElements } from './openxml';\nimport { parseMathBreakBin, parseMathBreakBinSub, parseMathJc, parseMathLimLoc, parseOnOff } from './model/enums';\nconst TWIPS_ELEMENTS = [\n ['leftMargin', 'lMargin'],\n ['rightMargin', 'rMargin'],\n ['defaultJustification', 'defJc'],\n ['preSpacing', 'preSp'],\n ['postSpacing', 'postSp'],\n ['interSpacing', 'interSp'],\n ['intraSpacing', 'intraSp'],\n];\nfunction child(pr, name) {\n return childElements(pr).find(c => c.namespaceUri === MATH_NAMESPACE && c.localName === name);\n}\nfunction val(pr, name) {\n const c = child(pr, name);\n return c ? attrValue(c, 'val') : undefined;\n}\nfunction twips(pr, name) {\n const v = val(pr, name);\n return v !== undefined && /^\\d+$/.test(v) ? Number(v) : undefined;\n}\nfunction onOff(pr, name) {\n const c = child(pr, name);\n if (!c) {\n return undefined;\n }\n const v = attrValue(c, 'val');\n return v === undefined ? true : parseOnOff(v);\n}\n/**\n * Parse an `m:mathPr` element. Unknown or invalid values are omitted (tolerant).\n *\n * @public\n */\nexport function parseMathSettings(mathPr) {\n const s = {};\n const set = (k, v) => {\n if (v !== undefined) {\n s[k] = v;\n }\n };\n set('mathFont', val(mathPr, 'mathFont'));\n const bb = val(mathPr, 'brkBin');\n set('breakOnBinaryOperators', bb !== undefined ? parseMathBreakBin(bb) : undefined);\n const bs = val(mathPr, 'brkBinSub');\n set('breakOnBinarySubtraction', bs !== undefined ? parseMathBreakBinSub(bs) : undefined);\n set('smallFraction', onOff(mathPr, 'smallFrac'));\n set('displayMathDefaults', onOff(mathPr, 'dispDef'));\n set('leftMargin', twips(mathPr, 'lMargin'));\n set('rightMargin', twips(mathPr, 'rMargin'));\n const jc = val(mathPr, 'defJc');\n set('defaultJustification', jc !== undefined ? parseMathJc(jc) : undefined);\n set('preSpacing', twips(mathPr, 'preSp'));\n set('postSpacing', twips(mathPr, 'postSp'));\n set('interSpacing', twips(mathPr, 'interSp'));\n set('intraSpacing', twips(mathPr, 'intraSp'));\n set('wrapIndent', twips(mathPr, 'wrapIndent'));\n set('wrapRight', onOff(mathPr, 'wrapRight'));\n const il = val(mathPr, 'intLim');\n set('integralLimitLocation', il !== undefined ? parseMathLimLoc(il) : undefined);\n const nl = val(mathPr, 'naryLim');\n set('naryLimitLocation', nl !== undefined ? parseMathLimLoc(nl) : undefined);\n return s;\n}\n/**\n * Serialize {@link MathSettings} to `m:mathPr` in schema order.\n *\n * @throws MathmlValidationError when `wrapIndent` and `wrapRight` are both set, or a twips value is not a non-negative integer.\n * @public\n */\nexport function mathSettingsToOpenXml(settings, prefix = 'm') {\n const kids = [];\n const el = (name, value) => {\n kids.push(createElement(MATH_NAMESPACE, name, prefix, {\n attributes: [{ namespaceUri: '', localName: 'val', prefix: '', value }],\n children: [],\n }));\n };\n const flag = (name, v) => {\n if (v !== undefined) {\n el(name, v ? '1' : '0');\n }\n };\n const tw = (name, v) => {\n if (v === undefined) {\n return;\n }\n if (!Number.isInteger(v) || v < 0) {\n throw new MathmlValidationError(`${name} must be a non-negative integer, got ${String(v)}`, `mathPr.${name}`, 'value-range');\n }\n el(name, String(v));\n };\n if (settings.wrapIndent !== undefined && settings.wrapRight !== undefined) {\n throw new MathmlValidationError('wrapIndent and wrapRight are mutually exclusive', 'mathPr', 'child-order');\n }\n if (settings.mathFont !== undefined) {\n el('mathFont', settings.mathFont);\n }\n if (settings.breakOnBinaryOperators !== undefined) {\n el('brkBin', settings.breakOnBinaryOperators);\n }\n if (settings.breakOnBinarySubtraction !== undefined) {\n el('brkBinSub', settings.breakOnBinarySubtraction);\n }\n flag('smallFrac', settings.smallFraction);\n flag('dispDef', settings.displayMathDefaults);\n for (const [key, name] of TWIPS_ELEMENTS) {\n const v = settings[key];\n if (typeof v === 'string') {\n el(name, v);\n }\n else {\n tw(name, v);\n }\n }\n tw('wrapIndent', settings.wrapIndent);\n flag('wrapRight', settings.wrapRight);\n if (settings.integralLimitLocation !== undefined) {\n el('intLim', settings.integralLimitLocation);\n }\n if (settings.naryLimitLocation !== undefined) {\n el('naryLim', settings.naryLimitLocation);\n }\n return createElement(MATH_NAMESPACE, 'mathPr', prefix, { attributes: [], children: kids });\n}\n"],"names":["LETTER","FONT_COMMANDS","P.applyAccent","P.applyBar","P.applyBorderBox","P.applyBox","P.applyFraction","P.applyGroupCharacter","P.applyNArray","P.applyPhantom","P.applyRadical","P.applyRightScript","P.findMathChild","P.readArgumentSize","P.findMathChildren","P.applyDelimiter","P.applyEquationArray","P.applyMatrix","P.applyMatrixColumns","P.applyRunFormat","JUSTIFICATION","onOff"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,cAAc,GAAG,6DAA6D;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,qBAAqB,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,0BAA0B,GAAG,+DAA+D;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,aAAa,GAAG;;AC9C7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAU,IAAC,iBAAiB,CAAC;AAC7B,CAAC,UAAU,iBAAiB,EAAE;AAC9B,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC;AAC5E,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAClE,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAC9D,IAAI,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAChE,CAAC,EAAE,iBAAiB,KAAK,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC;AAClD;AACA,AAAU,IAAC,YAAY,CAAC;AACxB,CAAC,UAAU,YAAY,EAAE;AACzB,IAAI,YAAY,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC;AACpE,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AAC1D,IAAI,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;AAC9D,IAAI,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AACtD,IAAI,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;AAC9D,IAAI,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AACxD,CAAC,EAAE,YAAY,KAAK,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC;AACxC;AACA,AAAU,IAAC,aAAa,CAAC;AACzB,CAAC,UAAU,aAAa,EAAE;AAC1B,IAAI,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC1D,IAAI,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;AAClE,IAAI,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AACtD,IAAI,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AAC5D,CAAC,EAAE,aAAa,KAAK,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1C;AACA,AAAU,IAAC,gBAAgB,CAAC;AAC5B,CAAC,UAAU,gBAAgB,EAAE;AAC7B;AACA,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AAClE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAChE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC1D,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;AACtE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAC1D,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;AACtE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC;AAC9E,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;AACpE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;AACpE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC;AAChF,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;AAC/D,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC;AACjE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC;AACjE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;AACnE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;AACnE,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,GAAG,oBAAoB,CAAC;AACzF,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC;AACjF,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,GAAG,qBAAqB,CAAC;AAC3F,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC;AACzE,CAAC,EAAE,gBAAgB,KAAK,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;AAChD;AACA,AAAU,IAAC,sBAAsB,CAAC;AAClC,CAAC,UAAU,sBAAsB,EAAE;AACnC,IAAI,sBAAsB,CAAC,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;AAChF,IAAI,sBAAsB,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAC1E,CAAC,EAAE,sBAAsB,KAAK,sBAAsB,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5D;AACA,AAAU,IAAC,gBAAgB,CAAC;AAC5B,CAAC,UAAU,gBAAgB,EAAE;AAC7B,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAmB,CAAC;AACtF,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC;AAC9E,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,mBAAmB,CAAC;AACtF,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC;AAChF,CAAC,EAAE,gBAAgB,KAAK,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;AAChD;AACA,AAAU,IAAC,uBAAuB,CAAC;AACnC,CAAC,UAAU,uBAAuB,EAAE;AACpC,IAAI,uBAAuB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC9E,IAAI,uBAAuB,CAAC,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;AAC1E,IAAI,uBAAuB,CAAC,uBAAuB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;AAC5E,CAAC,EAAE,uBAAuB,KAAK,uBAAuB,GAAG,EAAE,CAAC,CAAC,CAAC;AAC9D;AACA,AAAU,IAAC,qBAAqB,CAAC;AACjC,CAAC,UAAU,qBAAqB,EAAE;AAClC,IAAI,qBAAqB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC1E,IAAI,qBAAqB,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACpE,IAAI,qBAAqB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC1E,CAAC,EAAE,qBAAqB,KAAK,qBAAqB,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1D;AACA,AAAU,IAAC,WAAW,CAAC;AACvB,CAAC,UAAU,WAAW,EAAE;AACxB,IAAI,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AACtD,IAAI,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;AAC9D,IAAI,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AACtD,IAAI,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;AACxD,IAAI,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;AAC1D,CAAC,EAAE,WAAW,KAAK,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;AACtC;AACA,AAAU,IAAC,cAAc,CAAC;AAC1B,CAAC,UAAU,cAAc,EAAE;AAC3B,IAAI,cAAc,CAAC,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC;AACtE,IAAI,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;AAClE,CAAC,EAAE,cAAc,KAAK,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC;AAC5C;AACA,AAAU,IAAC,aAAa,CAAC;AACzB,CAAC,UAAU,aAAa,EAAE;AAC1B,IAAI,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;AAClE,IAAI,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC;AAClE,CAAC,EAAE,aAAa,KAAK,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1C;AACA,AAAY,MAAC,OAAO,GAAG,EAAE;;AC3GzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,qBAAqB,CAAC;AACnC,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE;AACnC,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,EAAE,CAAC;AAC9E,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;AAC5B,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACrC,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC;AAC/B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,GAAG,EAAE;AACvB,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACtC,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC;AACnC,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,GAAG,EAAE;AACpB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC7B,QAAQ,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7E,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;AACtD,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;AAC7C,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;AAC7E,gBAAgB,KAAK,GAAG,KAAK,CAAC;AAC9B,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL;AACA,IAAI,eAAe,GAAG;AACtB;AACA,KAAK;AACL,CAAC;;AC/FD;AACA;AACA;AACA,AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,WAAW,SAAS,qBAAqB,CAAC;AACvD,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,KAAK;AACL;AACA,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC;AAC3B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,qBAAqB,GAAG;AAChC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB;AACA,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC;AAC3B,QAAQ,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;AAClC,QAAQ,OAAO,IAAI,YAAY,WAAW,EAAE;AAC5C,YAAY,OAAO,GAAG,IAAI,CAAC;AAC3B,YAAY,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;AAClC,SAAS;AACT,QAAQ,OAAO,CAAC,WAAW,EAAE,CAAC;AAC9B,KAAK;AACL,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;;AC7DD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;AAC/B,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;AAChD,QAAQ,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;AACxD,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AAChB,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AAChB,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;AAC3E,WAAW,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM;AACtD,WAAW,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;AACnF,eAAe,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACtG,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM;AAClD,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;;ACvBD;AACA;AACA;AACA,AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,cAAc,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,YAAY,EAAE;AAC9B,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,MAAM,IAAI,GAAG,KAAK,YAAY,cAAc,GAAG,KAAK,GAAG,SAAS,CAAC;AACzE,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;AAChC,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;AAChF,YAAY,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,CAAC;AAC3D,SAAS;AACT,QAAQ,OAAO,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9D,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,QAAQ,CAAC;AACtB,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,EAAE,CAAC;AACpD;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzF,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1E,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;AACvE,QAAQ,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;AAChH,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;AACpC,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;AAC5D,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;AAChD,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,CAAC;;ACnFD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,eAAe,CAAC;AAC7B,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AACzB,QAAQ,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACzB,KAAK;AACL;AACA,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvD,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE;AACxB,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACrC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE;AAClB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjD,QAAQ,IAAI,KAAK,IAAI,CAAC,EAAE;AACxB,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjC,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvD,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClE,QAAQ,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC9C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACnC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE;AAC3B,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE;AAC5B,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnD,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3H,YAAY,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AAC9E,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;AACnC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;AAC3B,QAAQ,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;AAC1E,YAAY,MAAM,IAAI,UAAU,CAAC,QAAQ,GAAG,KAAK,GAAG,mBAAmB,CAAC,CAAC;AACzE,SAAS;AACT,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC;AAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;AAChE,YAAY,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrC,SAAS;AACT,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1C,KAAK;AACL,CAAC;;AClKD;AACA;AACA;AACA,AAAO,MAAM,CAAC,GAAG;AACjB,IAAI,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;AAC5B,IAAI,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;AACxD,IAAI,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,gBAAgB,EAAE,EAAE;AACzE,IAAI,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE;AAC3E,IAAI,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;AAC1E,IAAI,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;AAC1C,IAAI,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE;AAChF,IAAI,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;AACpE,IAAI,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE;AACrI,IAAI,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE;AACtF,IAAI,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;AACxF,IAAI,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;AACjC,IAAI,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;AAC9E,IAAI,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE;AACvD,IAAI,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE;AACjC,CAAC,CAAC;;ACnBF;AACA;AACA;AACA,AAGA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,eAAe,SAAS,WAAW,CAAC;AACjD;AACA,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC1C,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,yBAAyB,SAAS,eAAe,CAAC;AAC/D,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACjC,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;AACxE,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,CAAC;;AC5CD;AACA;AACA;AACA,AAGA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,gBAAgB,SAAS,WAAW,CAAC;AAClD;AACA,IAAI,IAAI,YAAY,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AAChF,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE;AACxE;AACA,IAAI,IAAI,UAAU,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AAC5E,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE;AACpE;AACA,IAAI,IAAI,aAAa,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AAClF,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,EAAE;AAC1E;AACA,IAAI,IAAI,IAAI,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/E,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;AAC1D;AACA,IAAI,IAAI,KAAK,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE;AACjF,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;AAC1D;AACA,IAAI,IAAI,KAAK,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;AACvC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC;AAC9G,aAAa,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,KAAK;AACL,CAAC;;ACzCD;AACA;AACA;AACA,AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,sBAAsB,SAAS,WAAW,CAAC;AACxD;AACA;AACA;AACA,IAAI,IAAI,iBAAiB,GAAG;AAC5B,QAAQ,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;AACnD,YAAY,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACzE,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,kBAAkB,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,iBAAiB,CAAC,KAAK,EAAE;AACjC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACxC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,oBAAoB,GAAG;AAC/B,QAAQ,OAAO,IAAI,CAAC,kBAAkB,KAAK,SAAS,CAAC;AACrD,KAAK;AACL,IAAI,2BAA2B,GAAG;AAClC,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;AAC1C,QAAQ,OAAO,MAAM,KAAK,SAAS,IAAI,EAAE,4BAA4B,IAAI,MAAM,CAAC,EAAE;AAClF,YAAY,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE;AAClC,YAAY,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AAClF,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC,0BAA0B,CAAC,KAAK,EAAE,CAAC;AACzD,KAAK;AACL,CAAC;;ACzCD;AACA;AACA;AACA,AAIA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,oBAAoB,SAAS,sBAAsB,CAAC;AACjE,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC;AAChD,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACtD,KAAK;AACL;AACA,IAAI,IAAI,IAAI,GAAG,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;AACrC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAC7C,SAAS;AACT,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3C,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AACtC,YAAY,OAAO,EAAE,CAAC;AACtB,SAAS;AACT,QAAQ,OAAO,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACxF,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC3C,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AACtC,YAAY,IAAI,CAAC,IAAI,GAAG,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,EAAE,CAAC;AACzF,SAAS;AACT,QAAQ,IAAI,OAAO,KAAK,SAAS,EAAE;AACnC,YAAY,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAClD,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC;AACjC,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;AACpC,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC;AACjC,SAAS;AACT,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;AAC1C,QAAQ,OAAO,MAAM,KAAK,SAAS,EAAE;AACrC,YAAY,MAAM,SAAS,GAAG,MAAM,CAAC;AACrC,YAAY,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE;AACjD,gBAAgB,OAAO,SAAS,CAAC,OAAO,CAAC;AACzC,aAAa;AACb,YAAY,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAC5C,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL;AACA,IAAI,IAAI,UAAU,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE;AACjD,CAAC;;ACnED;AACA;AACA;AACA,AAEA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,oBAAoB,SAAS,eAAe,CAAC;AAC1D,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACxC;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;AACtC,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;AACxE,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,CAAC;;ACtBD;AACA;AACA;AACA,AAKA;AACA,AAAO,MAAM,mBAAmB,SAAS,sBAAsB,CAAC;AAChE,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,SAAS,CAAC;AAC/C,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACzD,KAAK;AACL;AACA,IAAI,IAAI,cAAc,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC3E,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;AACrE;AACA,IAAI,IAAI,YAAY,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AACzE,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;AACnE;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE;AAC5E,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,EAAE;AACtE;AACA,IAAI,IAAI,MAAM,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE;AACjE,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;AAC1D;AACA,IAAI,IAAI,cAAc,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC,EAAE;AACrG,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;AACnE;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE;AAC7C,IAAI,IAAI,IAAI,KAAK,WAAW,CAAC,OAAO,KAAK,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE;AACrE,QAAQ,MAAM,IAAI,UAAU,CAAC,uEAAuE,CAAC,CAAC;AACtG,KAAK;AACL,IAAI,IAAI,IAAI,KAAK,WAAW,CAAC,QAAQ,KAAK,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE;AACrE,QAAQ,MAAM,IAAI,UAAU,CAAC,uEAAuE,CAAC,CAAC;AACtG,KAAK;AACL,CAAC;AACD;AACA,AAAO,MAAM,uBAAuB,SAAS,sBAAsB,CAAC;AACpE,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,aAAa,CAAC;AACnD,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACzD,KAAK;AACL;AACA,IAAI,IAAI,iBAAiB,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1G,IAAI,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE;AAC3E;AACA,IAAI,IAAI,uBAAuB,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACtF,IAAI,IAAI,uBAAuB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;AAC9E;AACA,IAAI,IAAI,qBAAqB,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACpF,IAAI,IAAI,qBAAqB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;AAC5E;AACA,IAAI,IAAI,UAAU,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AACxE,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE;AAC1B,QAAQ,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,IAAI,cAAc,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,EAAE,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE;AACjG,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,EAAE;AAC5E;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/C,CAAC;AACD;AACA,AAAO,MAAM,kBAAkB,SAAS,sBAAsB,CAAC;AAC/D,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAC9C,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AACjD,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/C,KAAK;AACL;AACA,IAAI,IAAI,YAAY,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,EAAE;AAC7G,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE;AACxE;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/C;AACA,IAAI,IAAI,WAAW,GAAG,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE;AACnD,CAAC;AACD;AACA,AAAO,MAAM,kBAAkB,SAAS,sBAAsB,CAAC;AAC/D,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAC9C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAClD,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C;AACA,IAAI,IAAI,YAAY,GAAG,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE;AACrD,CAAC;AACD;AACA,AAAO,MAAM,eAAe,SAAS,sBAAsB,CAAC;AAC5D,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC;AAC3C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC3C,KAAK;AACL;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE;AAC7F,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE;AAClE;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C;AACA,IAAI,IAAI,KAAK,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;AACvC,CAAC;AACD;AACA,AAAO,MAAM,gBAAgB,SAAS,sBAAsB,CAAC;AAC7D,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC5C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,IAAI,eAAe,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACnG,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE;AACvE;AACA,IAAI,IAAI,OAAO,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACtE,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;AAC9D;AACA,IAAI,IAAI,cAAc,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACnF,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,EAAE;AAC3E;AACA,IAAI,IAAI,cAAc,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACrF,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,EAAE;AAC7E;AACA,IAAI,IAAI,mBAAmB,GAAG;AAC9B,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,eAAe,KAAK,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACzG,KAAK;AACL,IAAI,IAAI,mBAAmB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE;AAC9E;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/C;AACA,IAAI,IAAI,WAAW,GAAG,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE;AACnD,CAAC;AACD;AACA,AAAO,MAAM,gBAAgB,SAAS,sBAAsB,CAAC;AAC7D,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,cAAc,CAAC;AACpD,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL;AACA,IAAI,IAAI,UAAU,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE;AACjG,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE;AACpE;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C;AACA,IAAI,IAAI,MAAM,GAAG,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;AACzC,CAAC;AACD;AACA,AAAO,MAAM,qBAAqB,SAAS,sBAAsB,CAAC;AAClE,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,mBAAmB,CAAC;AACzD,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,IAAI,WAAW,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE;AAC3E,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE;AACpE;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/C;AACA,IAAI,IAAI,WAAW,GAAG,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE;AACnD,CAAC;AACD;AACA,AAAO,MAAM,oBAAoB,SAAS,sBAAsB,CAAC;AACjE,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;AACxD,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/C;AACA,IAAI,IAAI,WAAW,GAAG,EAAE,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE;AACnD,CAAC;;AC5MD;AACA;AACA;AACA,AAEA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,4BAA4B,SAAS,eAAe,CAAC;AAClE,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACxC;AACA,IAAI,GAAG,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC,EAAE;AACxF;AACA,IAAI,MAAM,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,EAAE;AACrE;AACA,IAAI,QAAQ,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC,EAAE;AAChG;AACA,IAAI,MAAM,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC,EAAE;AAC9F;AACA,IAAI,KAAK,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC,EAAE;AAC5F,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,mBAAmB,SAAS,WAAW,CAAC;AACrD,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;AACjE,KAAK;AACL;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/C;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;AAC5C,QAAQ,OAAO,MAAM,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzE,KAAK;AACL,CAAC;;ACxCD;AACA;AACA;AACA,AAGA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,+BAA+B,CAAC;AAC7C,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AACxD,KAAK;AACL;AACA,IAAI,IAAI,KAAK,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,KAAK,EAAE;AACnB,QAAQ,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACzD,YAAY,MAAM,IAAI,UAAU,CAAC,QAAQ,GAAG,KAAK,GAAG,mBAAmB,CAAC,CAAC;AACzE,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,KAAK;AACL;AACA,IAAI,GAAG,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC,EAAE;AACrF;AACA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAClE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,sBAAsB,SAAS,WAAW,CAAC;AACxD,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACxC;AACA,IAAI,IAAI,mBAAmB,GAAG;AAC9B,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACrF,KAAK;AACL,IAAI,IAAI,mBAAmB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE;AAC9E;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;AAC5C,QAAQ,OAAO,MAAM,KAAK,SAAS,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClF,KAAK;AACL;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;AAC5C,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;AACvC,QAAQ,MAAM,KAAK,GAAG,MAAM,KAAK,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7G,QAAQ,OAAO,IAAI,+BAA+B,CAAC,KAAK,CAAC,CAAC;AAC1D,KAAK;AACL,CAAC;;AC1DD;AACA;AACA;AACA,AAIA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,6BAA6B,SAAS,eAAe,CAAC;AACnE,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC;AACtB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,GAAG,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAC9C,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACtD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AAC9C,YAAY,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,SAAS;AACT,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;AACvE,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7B,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC;AAC5B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,gCAAgC,SAAS,eAAe,CAAC;AACtE,IAAI,WAAW,CAAC,MAAM,EAAE;AACxB,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC;AACtB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,KAAK,EAAE;AACf,QAAQ,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAClE,QAAQ,MAAM,MAAM,GAAG,IAAI,sBAAsB,EAAE,CAAC;AACpD,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC1C,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAChF,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,KAAK,GAAG;AACZ,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;AACtB,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC9C,YAAY,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE;AAC5C,gBAAgB,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACnE,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7B,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC;AAC5B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE;AAC5B,QAAQ,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACtC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnG,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7B,KAAK;AACL,CAAC;;AC3FD;AACA;AACA;AACA,AAKA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,gBAAgB,SAAS,sBAAsB,CAAC;AAC7D,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC5C,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC;AAC7D,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,gCAAgC,CAAC,IAAI,CAAC,CAAC;AACnE,KAAK;AACL;AACA,IAAI,IAAI,IAAI,GAAG,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;AACrC;AACA,IAAI,IAAI,OAAO,GAAG,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC3C;AACA,IAAI,IAAI,iBAAiB,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC,EAAE;AAC3G,IAAI,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE;AAC5E;AACA,IAAI,IAAI,eAAe,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACtF,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,EAAE;AAC9E;AACA,IAAI,IAAI,UAAU,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AACxE,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE;AAC1B,QAAQ,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AACpD,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,IAAI,cAAc,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,EAAE,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE;AACjG,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,EAAE;AAC5E;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AACtE,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE;AAClE;AACA,IAAI,IAAI,aAAa,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE;AAC/F,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,EAAE;AAC1E;AACA,IAAI,IAAI,gBAAgB,GAAG,EAAE,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE;AAC3D,IAAI,IAAI,gBAAgB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,EAAE;AACjE;AACA,IAAI,IAAI,iBAAiB,GAAG,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE;AAC1D,IAAI,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,EAAE;AAChE;AACA,IAAI,IAAI,WAAW,GAAG,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE;AACpD,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,EAAE;AAC1D;AACA,IAAI,IAAI,aAAa,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AAC9E,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,EAAE;AAC1E;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK;AAC3D,YAAY,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnD,YAAY,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,mBAAmB,KAAK,MAAM,CAAC,mBAAmB,EAAE;AAC/F,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC;AAC7B,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC9G,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AAChD,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC9C,YAAY,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE;AACnD,CAAC;;ACpFD;AACA;AACA;AACA,AAMA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,kBAAkB,CAAC,IAAI,EAAE;AACzC,IAAI,QAAQ,IAAI;AAChB,QAAQ,KAAK,gBAAgB,CAAC,MAAM,EAAE,OAAO,IAAI,gBAAgB,EAAE,CAAC;AACpE,QAAQ,KAAK,gBAAgB,CAAC,GAAG,EAAE,OAAO,IAAI,aAAa,EAAE,CAAC;AAC9D,QAAQ,KAAK,gBAAgB,CAAC,SAAS,EAAE,OAAO,IAAI,mBAAmB,EAAE,CAAC;AAC1E,QAAQ,KAAK,gBAAgB,CAAC,GAAG,EAAE,OAAO,IAAI,aAAa,EAAE,CAAC;AAC9D,QAAQ,KAAK,gBAAgB,CAAC,SAAS,EAAE,OAAO,IAAI,mBAAmB,EAAE,CAAC;AAC1E,QAAQ,KAAK,gBAAgB,CAAC,aAAa,EAAE,OAAO,IAAI,uBAAuB,EAAE,CAAC;AAClF,QAAQ,KAAK,gBAAgB,CAAC,QAAQ,EAAE,OAAO,IAAI,kBAAkB,EAAE,CAAC;AACxE,QAAQ,KAAK,gBAAgB,CAAC,QAAQ,EAAE,OAAO,IAAI,kBAAkB,EAAE,CAAC;AACxE,QAAQ,KAAK,gBAAgB,CAAC,cAAc,EAAE,OAAO,IAAI,wBAAwB,EAAE,CAAC;AACpF,QAAQ,KAAK,gBAAgB,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,CAAC;AAClE,QAAQ,KAAK,gBAAgB,CAAC,MAAM,EAAE,OAAO,IAAI,gBAAgB,EAAE,CAAC;AACpE,QAAQ,KAAK,gBAAgB,CAAC,MAAM,EAAE,OAAO,IAAI,gBAAgB,EAAE,CAAC;AACpE,QAAQ,KAAK,gBAAgB,CAAC,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,CAAC;AACtE,QAAQ,KAAK,gBAAgB,CAAC,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,CAAC;AACtE,QAAQ,KAAK,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,IAAI,oBAAoB,EAAE,CAAC;AACpF,QAAQ,KAAK,gBAAgB,CAAC,cAAc,EAAE,OAAO,IAAI,gBAAgB,EAAE,CAAC;AAC5E,QAAQ,KAAK,gBAAgB,CAAC,mBAAmB,EAAE,OAAO,IAAI,qBAAqB,EAAE,CAAC;AACtF,QAAQ,KAAK,gBAAgB,CAAC,UAAU,EAAE,OAAO,IAAI,oBAAoB,EAAE,CAAC;AAC5E,QAAQ,SAAS,MAAM,IAAI,UAAU,CAAC,8BAA8B,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,4BAA4B,SAAS,eAAe,CAAC;AAClE,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;AACrB,QAAQ,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;AACxE,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,CAAC;;ACxDD;AACA;AACA;AACA,AAIA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,UAAU,SAAS,WAAW,CAAC;AAC5C,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;AACjE,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC;AAC3D,KAAK;AACL;AACA,IAAI,IAAI,MAAM,GAAG,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;AACzC;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE;AAC5E,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE;AAC5B,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;AACpE,YAAY,MAAM,IAAI,UAAU,CAAC,mDAAmD,CAAC,CAAC;AACtF,SAAS;AACT,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAChD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,0BAA0B,GAAG,EAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE;AACvE,IAAI,IAAI,0BAA0B,CAAC,KAAK,EAAE;AAC1C,QAAQ,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACvC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAI,SAAS,GAAG;AACpB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;AAC1C,QAAQ,OAAO,MAAM,KAAK,SAAS,EAAE;AACrC,YAAY,IAAI,MAAM,YAAY,UAAU,EAAE;AAC9C,gBAAgB,OAAO,MAAM,CAAC;AAC9B,aAAa;AACb,YAAY,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAC5C,SAAS;AACT,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;AAC3C,QAAQ,OAAO,KAAK,KAAK,SAAS,IAAI,WAAW,IAAI,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AAC/E,KAAK;AACL;AACA,IAAI,IAAI,WAAW,GAAG,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE;AACrD,CAAC;;ACtED;AACA;AACA;AACA,AAIA;AACA,AAAO,MAAM,gBAAgB,SAAS,sBAAsB,CAAC;AAC7D,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC;AAC5C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,IAAI,eAAe,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACpG,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE;AACzE;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C,CAAC;AACD;AACA,AAAO,MAAM,aAAa,SAAS,sBAAsB,CAAC;AAC1D,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC;AACzC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,IAAI,MAAM,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACpE,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;AAC5D;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C,CAAC;AACD;AACA,AAAO,MAAM,mBAAmB,SAAS,sBAAsB,CAAC;AAChE,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,SAAS,CAAC;AAC/C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,IAAI,OAAO,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACtE,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;AAC9D;AACA,IAAI,IAAI,UAAU,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AAC5E,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE;AACpE;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACxE,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE;AAChE;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AAC1E,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE;AAClE;AACA,IAAI,IAAI,gBAAgB,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AAClF,IAAI,IAAI,gBAAgB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE;AAC1E;AACA,IAAI,IAAI,kBAAkB,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACpF,IAAI,IAAI,kBAAkB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE;AAC5E;AACA,IAAI,IAAI,cAAc,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACpF,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,EAAE;AAC5E;AACA,IAAI,IAAI,gBAAgB,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACxF,IAAI,IAAI,gBAAgB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,EAAE;AAChF;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C,CAAC;AACD;AACA,AAAO,MAAM,aAAa,SAAS,sBAAsB,CAAC;AAC1D,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC;AACzC,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACzE,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE;AACjE;AACA,IAAI,IAAI,kBAAkB,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AAC5F,IAAI,IAAI,kBAAkB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,EAAE;AACpF;AACA,IAAI,IAAI,OAAO,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE;AACrE,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;AAC9D;AACA,IAAI,IAAI,gBAAgB,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACxF,IAAI,IAAI,gBAAgB,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,EAAE;AAChF;AACA,IAAI,IAAI,KAAK,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;AACvC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C,CAAC;AACD;AACA,AAAO,MAAM,wBAAwB,SAAS,sBAAsB,CAAC;AACrE,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,cAAc,CAAC;AACpD,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,IAAI,WAAW,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE;AAC7E,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE;AACtE;AACA,IAAI,IAAI,eAAe,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AACjF,IAAI,IAAI,eAAe,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE;AACzE;AACA,IAAI,IAAI,cAAc,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACnG,IAAI,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE;AACvE;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C,CAAC;AACD;AACA,AAAO,MAAM,iBAAiB,SAAS,sBAAsB,CAAC;AAC9D,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC7C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,KAAK;AACL;AACA,IAAI,IAAI,IAAI,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE;AAC/D,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE;AACxD;AACA,IAAI,IAAI,WAAW,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AAC9E,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE;AACtE;AACA,IAAI,IAAI,UAAU,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AAC5E,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE;AACpE;AACA,IAAI,IAAI,WAAW,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AAC9E,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE;AACtE;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AAC1E,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE;AAClE;AACA,IAAI,IAAI,KAAK,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AAClE,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;AAC1D;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C,CAAC;AACD;AACA,AAAO,MAAM,iBAAiB,SAAS,sBAAsB,CAAC;AAC9D,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC7C,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL;AACA,IAAI,IAAI,UAAU,GAAG,EAAE,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE;AAC5E,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE;AACpE;AACA,IAAI,IAAI,MAAM,GAAG,EAAE,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE;AACzC;AACA,IAAI,IAAI,QAAQ,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C,CAAC;;AC7JD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG;AACtB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,iBAAiB,EAAE,QAAQ;AAC/B,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,mBAAmB,EAAE,QAAQ;AACjC,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,iBAAiB,EAAE,QAAQ;AAC/B,IAAI,gBAAgB,EAAE,QAAQ;AAC9B,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,mBAAmB,EAAE,QAAQ;AACjC,IAAI,oBAAoB,EAAE,QAAQ;AAClC,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,mBAAmB,EAAE,QAAQ;AACjC,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,iBAAiB,EAAE,QAAQ;AAC/B,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,sBAAsB,EAAE,QAAQ;AACpC,IAAI,iBAAiB,EAAE,QAAQ;AAC/B,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,sBAAsB,EAAE,QAAQ;AACpC,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,mBAAmB,EAAE,QAAQ;AACjC,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,mBAAmB,EAAE,QAAQ;AACjC,IAAI,iBAAiB,EAAE,QAAQ;AAC/B,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,iBAAiB,EAAE,QAAQ;AAC/B,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,iBAAiB,EAAE,QAAQ;AAC/B,IAAI,mBAAmB,EAAE,QAAQ;AACjC,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,oBAAoB,EAAE,QAAQ;AAClC,IAAI,iBAAiB,EAAE,QAAQ;AAC/B,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,mBAAmB,EAAE,QAAQ;AACjC,IAAI,oBAAoB,EAAE,QAAQ;AAClC,IAAI,qBAAqB,EAAE,QAAQ;AACnC,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,oBAAoB,EAAE,QAAQ;AAClC,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,mBAAmB,EAAE,QAAQ;AACjC,IAAI,mBAAmB,EAAE,QAAQ;AACjC,IAAI,iBAAiB,EAAE,QAAQ;AAC/B,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,iBAAiB,EAAE,QAAQ;AAC/B,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,OAAO,EAAE,QAAQ;AACrB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,oBAAoB,EAAE,QAAQ;AAClC,IAAI,qBAAqB,EAAE,QAAQ;AACnC,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,mBAAmB,EAAE,QAAQ;AACjC,IAAI,mBAAmB,EAAE,QAAQ;AACjC,IAAI,oBAAoB,EAAE,QAAQ;AAClC,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,sBAAsB,EAAE,QAAQ;AACpC,IAAI,iBAAiB,EAAE,QAAQ;AAC/B,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,gBAAgB,EAAE,QAAQ;AAC9B,IAAI,gBAAgB,EAAE,QAAQ;AAC9B,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,eAAe,EAAE,QAAQ;AAC7B,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,YAAY,EAAE,QAAQ;AAC1B,IAAI,iBAAiB,EAAE,QAAQ;AAC/B,IAAI,kBAAkB,EAAE,QAAQ;AAChC,IAAI,mBAAmB,EAAE,QAAQ;AACjC,IAAI,oBAAoB,EAAE,QAAQ;AAClC,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,aAAa,EAAE,QAAQ;AAC3B,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,cAAc,EAAE,QAAQ;AAC5B,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,UAAU,EAAE,QAAQ;AACxB,IAAI,WAAW,EAAE,QAAQ;AACzB,IAAI,iBAAiB,EAAE,QAAQ;AAC/B,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,SAAS,EAAE,QAAQ;AACvB,IAAI,KAAK,EAAE,QAAQ;AACnB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,cAAc,CAAC,KAAK,EAAE;AACtC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AACrG,CAAC;AACD,MAAM,gBAAgB,GAAG;AACzB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,mBAAmB;AAC/B,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,mBAAmB;AAC/B,IAAI,MAAM,EAAE,oBAAoB;AAChC,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,mBAAmB;AAC/B,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,sBAAsB;AAClC,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,sBAAsB;AAClC,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,mBAAmB;AAC/B,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,mBAAmB;AAC/B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,mBAAmB;AAC/B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,oBAAoB;AAChC,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,mBAAmB;AAC/B,IAAI,MAAM,EAAE,oBAAoB;AAChC,IAAI,MAAM,EAAE,qBAAqB;AACjC,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,oBAAoB;AAChC,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,mBAAmB;AAC/B,IAAI,MAAM,EAAE,mBAAmB;AAC/B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,oBAAoB;AAChC,IAAI,MAAM,EAAE,qBAAqB;AACjC,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,mBAAmB;AAC/B,IAAI,MAAM,EAAE,mBAAmB;AAC/B,IAAI,MAAM,EAAE,oBAAoB;AAChC,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,sBAAsB;AAClC,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,gBAAgB;AAC5B,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,eAAe;AAC3B,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,YAAY;AACxB,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,kBAAkB;AAC9B,IAAI,MAAM,EAAE,mBAAmB;AAC/B,IAAI,MAAM,EAAE,oBAAoB;AAChC,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,aAAa;AACzB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,cAAc;AAC1B,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,UAAU;AACtB,IAAI,MAAM,EAAE,WAAW;AACvB,IAAI,MAAM,EAAE,iBAAiB;AAC7B,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,MAAM,EAAE,SAAS;AACrB,IAAI,MAAM,EAAE,SAAS;AACrB,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;AACnD,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE;AACtB,QAAQ,OAAO,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;AAClD,KAAK;AACL,IAAI,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;;ACxqBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAGA;AACA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAC3C,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;AAC7D,MAAM,WAAW,GAAG,GAAG,CAAC;AACxB,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,KAAK,GAAG,GAAG,CAAC;AAClB,MAAM,cAAc,GAAG,MAAM,CAAC;AAC9B,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,KAAK,GAAG,GAAG,CAAC;AAClB,MAAM,GAAG,GAAG,GAAG,CAAC;AAChB,MAAM,SAAS,GAAG,SAAS,CAAC;AAC5B,MAAM,OAAO,GAAG;AAChB,IAAI,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;AAChH,IAAI,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI;AACnG,CAAC,CAAC;AACF,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;AACnI,IAAI,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACpF,MAAM,IAAI,GAAG;AACb,IAAI,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;AACpH,IAAI,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI;AAC1H,IAAI,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK;AACvG,IAAI,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK;AAC3C,CAAC,CAAC;AACF,MAAM,UAAU,GAAG;AACnB,IAAI,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ;AACpI,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AACjF,CAAC,CAAC;AACF,MAAM,aAAa,GAAG;AACtB,IAAI,UAAU,EAAE,YAAY,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,CAAC,SAAS;AACjH,IAAI,UAAU,EAAE,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,MAAM;AAC1G,CAAC,CAAC;AACF,MAAM,cAAc,GAAG;AACvB,IAAI,WAAW,EAAE,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,IAAI;AACzE,CAAC,CAAC;AACF;AACA,MAAM,MAAM,CAAC;AACb,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACrC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACvB,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACvB,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACvB,KAAK;AACL,CAAC;AACD,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE;AAC/B,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,YAAY,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AACD,SAAS,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE;AAC3B,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAClE,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACtB,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;AAC7B,QAAQ,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;AAC7B,QAAQ,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE;AACf,QAAQ,GAAG,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;AAC5C,KAAK;AACL,CAAC;AACD,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE;AAC3B,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AACD,SAAS,GAAG,CAAC,IAAI,EAAE;AACnB,IAAI,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AACD,SAAS,EAAE,CAAC,KAAK,EAAE;AACnB,IAAI,OAAO,KAAK,KAAK,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC;AACvC,CAAC;AACD,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,IAAI,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAChG,CAAC;AACD,SAAS,aAAa,CAAC,CAAC,EAAE;AAC1B,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,WAAW,CAAC;AACzB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACxB,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;AACzB,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE;AAC5B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,MAAM,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAChG,KAAK;AACL;AACA,IAAI,IAAI,GAAG;AACX,QAAQ,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9C,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;AACnB,QAAQ,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AACtB,QAAQ,IAAI,EAAE,KAAK,aAAa,EAAE;AAClC,YAAY,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE;AACxH,gBAAgB,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3C,gBAAgB,IAAI,CAAC,GAAG,EAAE,CAAC;AAC3B,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AAC1B,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC;AACxB,KAAK;AACL,IAAI,MAAM,GAAG;AACb,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AACnC,YAAY,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC9B,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,KAAK;AACL,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE;AACtB,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACxH,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC9B,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AACxB,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AACrC,QAAQ,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAC7B,QAAQ,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC;AACrC,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,MAAM,GAAG,GAAG,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5B,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,GAAG,CAAC,IAAI,EAAE;AACd,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAClC,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACtE,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,QAAQ,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;AAC/G,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAC3B,SAAS;AACT,aAAa;AACb,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,SAAS;AACT,KAAK;AACL,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9D,KAAK;AACL;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC;AAC1B,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC;AAC1B,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,WAAW,EAAE;AACtC,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACnC,YAAY,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;AACzB,YAAY,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;AAC5B,SAAS;AACT,aAAa;AACb,YAAY,UAAU,GAAG,IAAI,CAAC;AAC9B,SAAS;AACT,QAAQ,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE;AAChI,YAAY,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;AAC9B,SAAS;AACT,aAAa,IAAI,CAAC,KAAK,EAAE;AACzB,YAAY,MAAM,GAAG,IAAI,CAAC;AAC1B,SAAS;AACT,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,KAAK,GAAG;AACZ,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,WAAW,EAAE;AACtC,YAAY,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC;AACtB,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AACtB,QAAQ,OAAO,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC1D,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACnC,YAAY,IAAI,IAAI,CAAC,GAAG,KAAK,WAAW,EAAE;AAC1C,gBAAgB,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;AACjC,aAAa;AACb,iBAAiB,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;AAC7C,gBAAgB,IAAI,KAAK,KAAK,CAAC,EAAE;AACjC,oBAAoB,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;AACrC,iBAAiB;AACjB,gBAAgB,KAAK,EAAE,CAAC;AACxB,aAAa;AACb,iBAAiB,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC5C,gBAAgB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AAC3C,gBAAgB,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;AAC/B,gBAAgB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;AAC3B,oBAAoB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC/C,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,EAAE,EAAE,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,YAAY,EAAE;AACvC,YAAY,OAAO,IAAI,CAAC;AACxB,SAAS;AACT,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC;AACtB,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AACtB,QAAQ,OAAO,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC1D,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACnC,YAAY,IAAI,IAAI,CAAC,GAAG,KAAK,YAAY,EAAE;AAC3C,gBAAgB,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;AACjC,aAAa;AACb,iBAAiB,IAAI,IAAI,CAAC,GAAG,KAAK,UAAU,EAAE;AAC9C,gBAAgB,IAAI,KAAK,KAAK,CAAC,EAAE;AACjC,oBAAoB,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC;AACrC,iBAAiB;AACjB,gBAAgB,KAAK,EAAE,CAAC;AACxB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AACjE,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;AAClC,gBAAgB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACvC,aAAa;AACb,YAAY,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE;AACrB,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC1B,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;AAChC,SAAS;AACT,aAAa,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AAC3C,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,SAAS;AACT,aAAa,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,aAAa,EAAE;AAC5D,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,CAAC,KAAK,OAAO,EAAE;AAChC,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC5B,SAAS;AACT,aAAa,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS,EAAE;AACpD,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;AAClC,SAAS;AACT,aAAa,IAAI,CAAC,KAAK,QAAQ,EAAE;AACjC,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;AAClC,SAAS;AACT,aAAa,IAAI,CAAC,KAAK,WAAW,EAAE;AACpC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;AAChC,SAAS;AACT,aAAa,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE;AACvE,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC;AACjC,SAAS;AACT,aAAa,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9C,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC;AACjC,SAAS;AACT,aAAa,IAAI,CAAC,KAAK,aAAa,IAAI,CAAC,KAAK,cAAc,EAAE;AAC9D,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;AAClC,SAAS;AACT,aAAa,IAAI,CAAC,KAAK,SAAS,EAAE;AAClC,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;AAC/B,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AACxC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;AAC7B,SAAS;AACT,aAAa,IAAI,CAAC,KAAK,QAAQ,EAAE;AACjC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;AAChC,SAAS;AACT,aAAa,IAAI,CAAC,KAAK,WAAW,EAAE;AACpC,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC;AACnC,SAAS;AACT,aAAa,IAAI,cAAc,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AAClD,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,SAAS;AACT,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;AACjD,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,SAAS;AACT,aAAa,IAAI,CAAC,KAAK,UAAU,EAAE;AACnC,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7C,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;AAChC,SAAS;AACT,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;AAClC,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AACpD,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnE,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC/B,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,EAAE;AAChC,YAAY,IAAI,QAAQ,KAAK,IAAI,EAAE;AACnC,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE;AACpF,gBAAgB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzC,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;AACpC,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;AAClC,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,WAAW,EAAE;AACtC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;AACnB,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AACtD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACpE,QAAQ,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;AACtD,YAAY,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;AAC7B,SAAS;AACT,aAAa,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;AAC3D,YAAY,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;AAC7B,SAAS;AACT,aAAa,IAAI,IAAI,KAAK,KAAK,EAAE;AACjC,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AAC3B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AAC3B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AAC3B,KAAK;AACL;AACA,IAAI,MAAM,GAAG;AACb,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;AAC5B,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzC,QAAQ,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,EAAE;AAClD,YAAY,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzC,SAAS;AACT,QAAQ,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAClD,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAChD,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAChD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC;AACxB,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE;AACnG,YAAY,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,YAAY,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtD,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACtD,YAAY,CAAC,CAAC,eAAe,GAAG,OAAO,CAAC;AACxC,YAAY,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAClD,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAChD,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAChD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AACpD,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClF,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC/B,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAClD,QAAQ,MAAM,GAAG,GAAG,KAAK,KAAK,YAAY,GAAG,KAAK,GAAG,KAAK,CAAC;AAC3D,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACnD,YAAY,CAAC,CAAC,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC;AACrC,YAAY,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,QAAQ,GAAG;AACf,QAAQ,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAClD,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAChD,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAChD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACnD,YAAY,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;AAC9B,YAAY,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAClD,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAChD,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAChD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AACpD,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClF,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC/B,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAClD,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpF,KAAK;AACL;AACA,IAAI,aAAa,CAAC,EAAE,EAAE;AACtB,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,aAAa,EAAE;AACxC,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACnC,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,QAAQ,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAC9F,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACvF,QAAQ,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACvC,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AACtB,QAAQ,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE;AAC9B,YAAY,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1B,YAAY,OAAO,CAAC,CAAC;AACrB,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,EAAE,CAAC;AACzB,QAAQ,OAAO,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC1D,YAAY,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACvC,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACvB,YAAY,IAAI,EAAE,KAAK,QAAQ,EAAE;AACjC,gBAAgB,OAAO,IAAI,EAAE,CAAC;AAC9B,gBAAgB,KAAK,EAAE,CAAC;AACxB,aAAa;AACb,iBAAiB,IAAI,EAAE,KAAK,SAAS,EAAE;AACvC,gBAAgB,IAAI,KAAK,KAAK,CAAC,EAAE;AACjC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAChD,oBAAoB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACnD,oBAAoB,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,EAAE;AACxC,wBAAwB,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;AACtC,wBAAwB,OAAO,CAAC,CAAC;AACjC,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO,IAAI,EAAE,CAAC;AAClC,iBAAiB;AACjB,gBAAgB,KAAK,EAAE,CAAC;AACxB,aAAa;AACb,iBAAiB,IAAI,EAAE,KAAK,UAAU,EAAE;AACxC,gBAAgB,IAAI,KAAK,KAAK,CAAC,EAAE;AACjC,oBAAoB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AACvD,oBAAoB,IAAI,GAAG,KAAK,IAAI,EAAE;AACtC,wBAAwB,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;AACtC,wBAAwB,OAAO,CAAC,CAAC;AACjC,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,EAAE;AACxC,wBAAwB,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;AACpC,qBAAqB;AACrB,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAChD,oBAAoB,OAAO,GAAG,EAAE,CAAC;AACjC,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO,IAAI,EAAE,CAAC;AAClC,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,IAAI,EAAE,CAAC;AAC9B,aAAa;AACb,SAAS;AACT,QAAQ,CAAC,CAAC,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC;AAC3B,QAAQ,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;AACtB,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;AAC5B,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACnC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;AACnB,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AAChG,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AACpD,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACzC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC/B,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,QAAQ,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AACjE,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,EAAE;AAC5B,YAAY,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACzD,YAAY,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC;AAC5C,YAAY,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;AAC1C,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;AAC5C,gBAAgB,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;AAC3C,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC9D,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,YAAY,CAAC,IAAI,EAAE;AACvB,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,OAAO,GAAG,EAAE,CAAC;AACzB,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClD,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACrC,oBAAoB,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAChG,wBAAwB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAClD,wBAAwB,OAAO,GAAG,EAAE,CAAC;AACrC,qBAAqB;AACrB,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;AAC5B,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC3C,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAChD,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAChD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAC7D,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AAClC,aAAa;AACb,YAAY,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC/D,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;AAC5B,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACxC,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE;AACjD,YAAY,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,EAAE;AAC1F,YAAY,GAAG,GAAG,EAAE,CAAC;AACrB,SAAS;AACT,aAAa;AACb,YAAY,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;AAC1C,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAChD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AACpD,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7G,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC/B,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,SAAS;AACT,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,GAAG,gBAAgB,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,iBAAiB,CAAC;AACnH,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACtC,KAAK;AACL,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE;AAC7B,QAAQ,MAAM,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACnD,QAAQ,MAAM,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACnD,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACxD,YAAY,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC;AAClC,YAAY,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;AACrC,YAAY,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;AACvC,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;AACvB,QAAQ,MAAM,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACnD,QAAQ,MAAM,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACnD,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACjE,YAAY,SAAS,CAAC,cAAc,GAAG,GAAG,CAAC;AAC3C,YAAY,SAAS,CAAC,YAAY,GAAG,GAAG,CAAC;AACzC,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAChF,YAAY,CAAC,CAAC,YAAY,GAAG,gBAAgB,CAAC,aAAa,CAAC;AAC5D,YAAY,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;AACrC,YAAY,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;AACvC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE;AAC5C,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE;AACnC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACxC,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AAC9B,YAAY,GAAG,GAAG,IAAI,CAAC;AACvB,SAAS;AACT,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC1B,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AACtE,KAAK;AACL,IAAI,aAAa,GAAG;AACpB,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;AAC5B,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzC,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC;AAC9B,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC;AAC9B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;AAC9E,YAAY,UAAU,GAAG,IAAI,CAAC,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,KAAK,GAAG,OAAO,CAAC;AACzF,YAAY,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC/C,YAAY,IAAI,UAAU,KAAK,IAAI,CAAC,GAAG,EAAE;AACzC,gBAAgB,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC7C,gBAAgB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE;AACxD,oBAAoB,IAAI,GAAG,EAAE,CAAC;AAC9B,oBAAoB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5C,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC7C,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3B,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAChD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,IAAI,CAAC;AACjB,QAAQ,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,KAAK,EAAE;AAC1D,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,YAAY,MAAM,MAAM,GAAG,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AAC5E,YAAY,IAAI,GAAG,CAAC,IAAI;AACxB,gBAAgB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;AAChF,gBAAgB,EAAE,CAAC,UAAU,GAAG,UAAU,KAAK,KAAK,GAAG,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;AAC7G,gBAAgB,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC5C,gBAAgB,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;AAC5C,aAAa,CAAC;AACd,SAAS;AACT,aAAa,IAAI,UAAU,KAAK,OAAO,EAAE;AACzC,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,YAAY,MAAM,GAAG,GAAG,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AACzE,YAAY,IAAI,GAAG,CAAC,IAAI;AACxB,gBAAgB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACtE,gBAAgB,CAAC,CAAC,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC;AACvD,gBAAgB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC3C,gBAAgB,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACvC,aAAa,CAAC;AACd,SAAS;AACT,aAAa;AACb,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;AACvC,YAAY,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACnC,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,YAAY,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACjC,YAAY,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAClC,YAAY,IAAI,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;AAC1D,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,QAAQ,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACzD,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACxD,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,YAAY,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,OAAO,CAAC,GAAG,EAAE;AACjB,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7B,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;AACrC,YAAY,KAAK,CAAC,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC;AAC9C,SAAS;AACT,KAAK;AACL,IAAI,cAAc,GAAG;AACrB,QAAQ,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;AAClD,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAChD,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAChD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAClD,QAAQ,MAAM,IAAI,GAAG,KAAK,KAAK,aAAa,CAAC;AAC7C,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;AAC9D,YAAY,IAAI,IAAI,EAAE;AACtB,gBAAgB,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7C,gBAAgB,CAAC,CAAC,WAAW,GAAG,KAAK,CAAC;AACtC,gBAAgB,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC;AACzC,aAAa;AACb,YAAY,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACxC,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC;AAClC,KAAK;AACL,IAAI,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE;AACnC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;AACxC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACxC,QAAQ,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACpD,YAAY,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC1B,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzC,QAAQ,MAAM,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAC1D,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACrD,YAAY,CAAC,CAAC,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC;AACnD,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvC,YAAY,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AACrC,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;AAC5B,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,WAAW,EAAE;AACtC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/B,QAAQ,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC;AACzE,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;AACxB,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAChD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AACpD,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxF,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC/B,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI;AACxC,YAAY,MAAM,KAAK,GAAG,EAAE,CAAC;AAC7B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;AAChD,gBAAgB,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACtE,aAAa;AACb,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC;AACtC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACtD,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;AAClD,gBAAgB,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,mBAAmB,GAAG,uBAAuB,CAAC,MAAM,CAAC;AACrF,aAAa;AACb,YAAY,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI;AAC9B,gBAAgB,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACzC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,aAAa,CAAC,CAAC;AACf,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC;AACxB,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AACtB,QAAQ,IAAI,OAAO,GAAG,EAAE,CAAC;AACzB,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC;AACtB,QAAQ,MAAM,MAAM,GAAG,MAAM;AAC7B,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/B,YAAY,OAAO,GAAG,EAAE,CAAC;AACzB,YAAY,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,YAAY,IAAI,GAAG,EAAE,CAAC;AACtB,SAAS,CAAC;AACV,QAAQ,OAAO,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC1D,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACnC,YAAY,OAAO,IAAI,CAAC,GAAG,KAAK,KAAK,EAAE;AACvC,gBAAgB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACvC,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,GAAG,KAAK,aAAa,EAAE;AAC5C,gBAAgB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACvC,gBAAgB,IAAI,IAAI,CAAC,GAAG,KAAK,aAAa,EAAE;AAChD,oBAAoB,IAAI,CAAC,GAAG,IAAI,aAAa,CAAC;AAC9C,iBAAiB;AACjB,aAAa;AACb,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;AAC/B,YAAY,IAAI,CAAC,KAAK,SAAS,EAAE;AACjC,gBAAgB,OAAO,IAAI,CAAC,CAAC;AAC7B,gBAAgB,MAAM,OAAO,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AAC7D,gBAAgB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvC,gBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;AACjD,oBAAoB,KAAK,EAAE,CAAC;AAC5B,iBAAiB;AACjB,gBAAgB,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3D,aAAa;AACb,iBAAiB,IAAI,CAAC,KAAK,OAAO,EAAE;AACpC,gBAAgB,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AACjE,gBAAgB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACvC,gBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,KAAK,CAAC,EAAE;AAChE,oBAAoB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,EAAE,EAAE;AAC7D,wBAAwB,MAAM,EAAE,CAAC;AACjC,qBAAqB;AACrB,oBAAoB,KAAK,EAAE,CAAC;AAC5B,iBAAiB;AACjB,qBAAqB,IAAI,KAAK,KAAK,CAAC,EAAE;AACtC,oBAAoB,OAAO,IAAI,CAAC;AAChC,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/D,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,CAAC,KAAK,cAAc,EAAE;AAC3C,gBAAgB,IAAI,KAAK,KAAK,CAAC,EAAE;AACjC,oBAAoB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,oBAAoB,OAAO,GAAG,EAAE,CAAC;AACjC,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO,IAAI,CAAC,CAAC;AACjC,iBAAiB;AACjB,aAAa;AACb,iBAAiB,IAAI,CAAC,KAAK,cAAc,EAAE;AAC3C,gBAAgB,IAAI,KAAK,KAAK,CAAC,EAAE;AACjC,oBAAoB,MAAM,EAAE,CAAC;AAC7B,iBAAiB;AACjB,qBAAqB;AACrB,oBAAoB,OAAO,IAAI,CAAC,CAAC;AACjC,iBAAiB;AACjB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACjC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,KAAK,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;AACtD,KAAK;AACL;AACA,IAAI,SAAS,GAAG;AAChB,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;AAC5B,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACvC,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC;AAC3B,QAAQ,IAAI,OAAO,GAAG,IAAI,CAAC;AAC3B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACpC,YAAY,IAAI,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,EAAE;AACpD,gBAAgB,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC3C,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM;AACtB,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AAC9B,YAAY,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5C,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,EAAE;AACrC,YAAY,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5C,SAAS;AACT,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE;AAC9B,YAAY,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACvC,YAAY,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,EAAE;AACpC,gBAAgB,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAChD,aAAa;AACb,SAAS;AACT,aAAa,IAAI,OAAO,KAAK,IAAI,EAAE;AACnC,YAAY,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACvC,YAAY,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AAClC,gBAAgB,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAChD,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE;AAClD,YAAY,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,EAAE,KAAK,IAAI,EAAE;AACzB,YAAY,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC,SAAS;AACT,QAAQ,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC9C,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAChD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,GAAG,GAAG,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAC/D,QAAQ,MAAM,GAAG,GAAG,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAC/D,QAAQ,MAAM,IAAI,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;AACvD,QAAQ,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACtD,YAAY,CAAC,CAAC,eAAe,GAAG,SAAS,CAAC;AAC1C,YAAY,IAAI,OAAO,KAAK,IAAI,EAAE;AAClC,gBAAgB,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC;AACxC,aAAa;AACb,YAAY,IAAI,OAAO,KAAK,IAAI,EAAE;AAClC,gBAAgB,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC;AACxC,aAAa;AACb,YAAY,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE;AACtD,gBAAgB,CAAC,CAAC,mBAAmB,GAAG,KAAK,CAAC;AAC9C,aAAa;AACb,YAAY,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;AACvC,YAAY,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;AACzC,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvC,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,EAAE,GAAG,KAAK,CAAC;AACvB,QAAQ,IAAI,MAAM,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,aAAa,CAAC,EAAE,CAAC,EAAE;AACzD,YAAY,EAAE,GAAG,WAAW,GAAG,EAAE,GAAG,SAAS,CAAC;AAC9C,YAAY,MAAM,GAAG,IAAI,CAAC;AAC1B,SAAS;AACT,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzC,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,EAAE;AACrC,YAAY,EAAE,IAAI,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;AACjD,SAAS;AACT,aAAa,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;AAC5E,YAAY,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,SAAS,CAAC;AACjF,SAAS;AACT,aAAa,IAAI,IAAI,KAAK,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;AACvD,YAAY,EAAE,IAAI,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;AACjD,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,YAAY,KAAK,GAAG,KAAK,CAAC;AAC1B,YAAY,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AACpD,gBAAgB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AAChC,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACzC,YAAY,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;AAC3E,gBAAgB,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,SAAS,CAAC;AACrF,aAAa;AACb,iBAAiB,IAAI,IAAI,KAAK,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;AAC3D,gBAAgB,EAAE,IAAI,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;AACrD,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxC,gBAAgB,KAAK,GAAG,KAAK,CAAC;AAC9B,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;AAC5B,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,EAAE;AAChC,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACnC,SAAS;AACT,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACnC,SAAS;AACT,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAC;AAC5B,QAAQ,IAAI,KAAK,GAAG,KAAK,CAAC;AAC1B,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,WAAW,EAAE;AACtC,YAAY,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AACnC,YAAY,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;AACzB,YAAY,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;AAC9B,SAAS;AACT,aAAa;AACb,YAAY,UAAU,GAAG,IAAI,CAAC;AAC9B,SAAS;AACT,QAAQ,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE;AAChI,YAAY,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;AAChC,SAAS;AACT,QAAQ,IAAI,EAAE,UAAU,IAAI,KAAK,CAAC,EAAE;AACpC,YAAY,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAChD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AACpD,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxF,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC/B,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,EAAE,MAAM,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC;AAC7D,QAAQ,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AACnD,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC;AACtB,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,EAAE;AACrD,YAAY,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,SAAS;AACT,aAAa,IAAI,QAAQ,KAAK,IAAI,EAAE;AACpC,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,YAAY,IAAI,MAAM,KAAK,IAAI,EAAE;AACjC,gBAAgB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACvD,YAAY,IAAI,IAAI,EAAE;AACtB,gBAAgB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;AACpC,aAAa;AACb,YAAY,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvC,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC;AACvD,QAAQ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;AACnB,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACnC,YAAY,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACnD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC/B,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AACpD,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/C,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;AACzC,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC9C,SAAS;AACT,aAAa,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE;AACxC,YAAY,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACtD,SAAS;AACT,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,SAAS;AACT,KAAK;AACL,IAAI,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE;AACpC,QAAQ,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;AACvD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC;AACzC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC7C,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAClD,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC/B,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACnC,YAAY,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE;AAC/E,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzE,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACpC,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;AACtB,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzC,QAAQ,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAC1D,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;AAC9D,YAAY,CAAC,CAAC,UAAU,GAAG,KAAK,GAAG,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;AACzF,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvC,YAAY,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE;AACvD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC7C,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAClD,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACnE,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/C,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AAC5D,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;AACnE,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvC,YAAY,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;AACvC,YAAY,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;AACzC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE;AACrC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC;AACvB,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC;AACvB,QAAQ,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1E,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AACrB,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACnC,YAAY,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACxC,SAAS;AACT,aAAa;AACb,YAAY,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACxC,SAAS;AACT,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;AAC1B,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACnC,YAAY,IAAI,IAAI,CAAC,GAAG,KAAK,KAAK,EAAE;AACpC,gBAAgB,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5C,aAAa;AACb,SAAS;AACT,aAAa,IAAI,GAAG,KAAK,IAAI,EAAE;AAC/B,YAAY,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AACnC,YAAY,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;AAClC,gBAAgB,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC5C,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AACjC,QAAQ,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAC7B,QAAQ,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAC7B,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC;AACtB,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;AAC1C,YAAY,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE;AAC9C,YAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AACrD,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5C,QAAQ,MAAM,IAAI,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;AACtE,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI;AACtB,YAAY,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AAClE,YAAY,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;AAC1C,YAAY,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;AAC5C,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvC,SAAS,CAAC,CAAC;AACX,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE;AACjD,IAAI,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACvD,IAAI,2BAA2B,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAClD,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE;AAC3D,IAAI,IAAI,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;;AC9qCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAIA;AACA,MAAMA,QAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAC3C,SAAS,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE;AACpC,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC;AACpE,CAAC;AACD,MAAM,eAAe,GAAG;AACxB,IAAI,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS;AAClH,IAAI,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ;AACvG,CAAC,CAAC;AACF,MAAM,aAAa,GAAG;AACtB,IAAI,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU;AACpH,IAAI,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU;AAC1H,IAAI,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY;AAC5H,IAAI,KAAK,EAAE,WAAW;AACtB,CAAC,CAAC;AACF,MAAM,kBAAkB,GAAG;AAC3B,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU;AACzH,IAAI,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU;AACvD,CAAC,CAAC;AACF,MAAMC,eAAa,GAAG;AACtB,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,UAAU,EAAE,CAAC,YAAY,CAAC,OAAO,GAAG,YAAY,EAAE,CAAC,YAAY,CAAC,SAAS,GAAG,UAAU;AACvH,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,UAAU,EAAE,CAAC,YAAY,CAAC,MAAM,GAAG,WAAW;AAC5E,CAAC,CAAC;AACF,MAAM,cAAc,CAAC;AACrB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AACtB,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AACpC,KAAK;AACL,IAAI,QAAQ,CAAC,SAAS,EAAE;AACxB,QAAQ,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE;AACpC,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACzB,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC;AACxB,KAAK;AACL,IAAI,KAAK,CAAC,GAAG,EAAE;AACf,QAAQ,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AACxB,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtB,QAAQ,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AACxB,KAAK;AACL,IAAI,GAAG,CAAC,GAAG,EAAE;AACb,QAAQ,IAAI,GAAG,EAAE;AACjB,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;AAC1D,gBAAgB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,OAAO,CAAC,EAAE,EAAE;AAChB,QAAQ,QAAQ,EAAE,CAAC,IAAI;AACvB,YAAY,KAAK,gBAAgB,CAAC,UAAU;AAC5C,gBAAgB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7B,gBAAgB,MAAM;AACtB,YAAY,KAAK,gBAAgB,CAAC,MAAM;AACxC,gBAAgB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAChC,gBAAgB,MAAM;AACtB,YAAY,KAAK,gBAAgB,CAAC,GAAG;AACrC,gBAAgB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,MAAM,GAAG,YAAY,GAAG,aAAa,CAAC;AACrE,gBAAgB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AACxC,gBAAgB,MAAM;AACtB,YAAY,KAAK,gBAAgB,CAAC,GAAG;AACrC,gBAAgB,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC;AACpC,gBAAgB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AACxC,gBAAgB,MAAM;AACtB,YAAY,KAAK,gBAAgB,CAAC,SAAS;AAC3C,gBAAgB,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC;AACrC,gBAAgB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AACxC,gBAAgB,MAAM;AACtB,YAAY,KAAK,gBAAgB,CAAC,QAAQ;AAC1C,gBAAgB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClC,gBAAgB,MAAM;AACtB,YAAY,KAAK,gBAAgB,CAAC,QAAQ;AAC1C,gBAAgB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9B,gBAAgB,MAAM;AACtB,YAAY,KAAK,gBAAgB,CAAC,SAAS;AAC3C,gBAAgB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACnC,gBAAgB,MAAM;AACtB,YAAY,KAAK,gBAAgB,CAAC,cAAc;AAChD,gBAAgB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACnC,gBAAgB,MAAM;AACtB,YAAY,KAAK,gBAAgB,CAAC,KAAK;AACvC,gBAAgB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/B,gBAAgB,MAAM;AACtB,YAAY,KAAK,gBAAgB,CAAC,MAAM;AACxC,gBAAgB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAChC,gBAAgB,MAAM;AACtB,YAAY,KAAK,gBAAgB,CAAC,MAAM;AACxC,gBAAgB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9B,gBAAgB,MAAM;AACtB,YAAY,KAAK,gBAAgB,CAAC,OAAO;AACzC,gBAAgB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACjC,gBAAgB,MAAM;AACtB,YAAY,KAAK,gBAAgB,CAAC,cAAc,EAAE;AAClD,gBAAgB,MAAM,CAAC,GAAG,EAAE,CAAC;AAC7B,gBAAgB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,KAAK,cAAc,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AACzG,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,KAAK,gBAAgB,CAAC,kBAAkB,EAAE;AACtD,gBAAgB,MAAM,CAAC,GAAG,EAAE,CAAC;AAC7B,gBAAgB,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC;AACjC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACxC,gBAAgB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAChC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AAC1C,gBAAgB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAChC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvC,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,KAAK,gBAAgB,CAAC,mBAAmB,EAAE;AACvD,gBAAgB,MAAM,CAAC,GAAG,EAAE,CAAC;AAC7B,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACvC,gBAAgB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAChC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACxC,gBAAgB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAChC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AAC1C,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,KAAK,gBAAgB,CAAC,aAAa,EAAE;AACjD,gBAAgB,MAAM,CAAC,GAAG,EAAE,CAAC;AAC7B,gBAAgB,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC;AACzC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;AAC5D,oBAAoB,IAAI,CAAC,GAAG,CAAC,EAAE;AAC/B,wBAAwB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AACxC,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAChC,gBAAgB,MAAM;AACtB,aAAa;AACb,AACA,SAAS;AACT,KAAK;AACL,IAAI,MAAM,CAAC,EAAE,EAAE;AACf,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AACzD,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAChC,QAAQ,IAAI,IAAI,KAAK,GAAG,EAAE;AAC1B,YAAY,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5B,SAAS;AACT,KAAK;AACL,IAAI,QAAQ,CAAC,EAAE,EAAE;AACjB,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC;AACrC,QAAQ,IAAI,IAAI,KAAK,gBAAgB,CAAC,iBAAiB,EAAE;AACzD,YAAY,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC;AACjC,SAAS;AACT,aAAa,IAAI,IAAI,KAAK,gBAAgB,CAAC,iBAAiB,IAAI,IAAI,KAAK,gBAAgB,CAAC,cAAc,EAAE;AAC1G,YAAY,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC;AAClC,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AACjC,QAAQ,IAAI,IAAI,KAAK,gBAAgB,CAAC,aAAa,EAAE;AACrD,YAAY,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC;AACjC,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACnC,QAAQ,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;AAClC,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,aAAa,CAAC,GAAG,EAAE;AACvB,QAAQ,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC;AAChG,KAAK;AACL,IAAI,SAAS,CAAC,EAAE,EAAE;AAClB,QAAQ,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC;AAC7B,QAAQ,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;AAC9C,QAAQ,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AACxB,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;AACrD,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE;AAC5C,gBAAgB,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC;AACvC,gBAAgB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AACjD,gBAAgB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAChC,aAAa;AACb,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC;AAC9B,QAAQ,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,SAAS,CAAC,EAAE,EAAE;AAClB,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACrD,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE;AAC3B,YAAY,IAAI,CAAC,GAAG,IAAI,aAAa,CAAC;AACtC,SAAS;AACT,aAAa,IAAI,IAAI,KAAK,IAAI,EAAE;AAChC,YAAY,IAAI,CAAC,GAAG,IAAI,cAAc,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,KAAK,CAAC,EAAE,EAAE;AACd,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC9B,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC;AAC9B,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC7B,KAAK;AACL,IAAI,MAAM,CAAC,EAAE,EAAE;AACf,QAAQ,IAAI,CAAC,GAAG,IAAI,iBAAiB,CAAC;AACtC,QAAQ,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,QAAQ,EAAE;AACvC,YAAY,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;AAC9C,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AAC5C,gBAAgB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,gBAAgB,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE;AACrC,oBAAoB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AACpC,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC;AAC/B,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,IAAI,eAAe,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,EAAE,EAAE;AACb,QAAQ,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACnF,QAAQ,IAAI,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE;AAC9C,YAAY,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5B,YAAY,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AACrC,SAAS;AACT,QAAQ,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE;AAChD,YAAY,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5B,YAAY,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,OAAO,CAAC,EAAE,EAAE;AAChB,QAAQ,IAAI,CAAC,GAAG,IAAI,QAAQ,CAAC;AAC7B,QAAQ,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE;AAC3C,YAAY,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5B,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAChC,YAAY,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAChC,KAAK;AACL,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE;AAC7B,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAC5B,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AACvB,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,GAAG,CAAC,EAAE,EAAE;AACZ,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;AAC7B,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC;AACrC,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;AAC1E,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;AAC1E,QAAQ,MAAM,OAAO,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,GAAG,KAAK,aAAa,CAAC,UAAU,EAAE;AAC9C,YAAY,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvC,SAAS;AACT,aAAa,IAAI,GAAG,KAAK,aAAa,CAAC,IAAI,EAAE;AAC7C,YAAY,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,IAAI,GAAG,KAAK,SAAS,IAAIA,eAAa,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AACnE,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,EAAEA,eAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,aAAa,EAAE;AAClC,YAAY,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,IAAI,OAAO,GAAG,CAAC,CAAC;AACxB,QAAQ,IAAI,YAAY,GAAG,IAAI,CAAC;AAChC,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC;AAC/B,QAAQ,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE;AAC/B,YAAY,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,GAAG,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3E,YAAY,IAAI,MAAM,KAAK,SAAS,EAAE;AACtC,gBAAgB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChD,gBAAgB,OAAO,GAAG,CAAC,CAAC;AAC5B,gBAAgB,YAAY,GAAG,IAAI,CAAC;AACpC,gBAAgB,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC;AACnC,gBAAgB,UAAU,GAAG,IAAI,CAAC;AAClC,gBAAgB,SAAS;AACzB,aAAa;AACb,YAAY,IAAI,UAAU,IAAID,QAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAC/C,gBAAgB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC;AAChC,aAAa;AACb,YAAY,UAAU,GAAG,KAAK,CAAC;AAC/B,YAAY,IAAI,YAAY,EAAE;AAC9B,gBAAgB,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7C,gBAAgB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;AACzC,gBAAgB,YAAY,GAAG,KAAK,CAAC;AACrC,aAAa;AACb,YAAY,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;AAC3B,SAAS;AACT,QAAQ,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACxC,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,WAAW,CAAC,IAAI,EAAE;AAClC,IAAI,OAAO,IAAI,cAAc,EAAE,CAAC,QAAQ,CAAC,IAAI,YAAY,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9G,CAAC;;ACpTD;AACA;AACA;AACA,AAOA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,mBAAmB,SAAS,WAAW,CAAC;AACrD,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,KAAK,EAAE,CAAC;AAChB,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AAC5B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACrD,KAAK;AACL;AACA,IAAI,IAAI,KAAK,GAAG,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;AACvC;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;AACtF,KAAK;AACL,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,EAAE;AAC1E;AACA,IAAI,IAAI,wBAAwB,GAAG,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE;AAC/E;AACA,IAAI,IAAI,0BAA0B,GAAG;AACrC,QAAQ,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS;AACzC,cAAc,IAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC,IAAI,CAAC;AACjE,cAAc,IAAI,cAAc,EAAE,CAAC;AACnC,KAAK;AACL;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG,EAAE,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7C,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,KAAK,EAAE;AAC9B,QAAQ,IAAI,CAAC,gBAAgB,CAAC,MAAM;AACpC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAChC,YAAY,2BAA2B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACrD,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,EAAE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB,CAAC,MAAM,EAAE;AAC7B,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;AAC1B,QAAQ,IAAI;AACZ,YAAY,MAAM,EAAE,CAAC;AACrB,SAAS;AACT,gBAAgB;AAChB,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC;AAC9B,SAAS;AACT,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;AACnE,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;AAC7B,SAAS;AACT,KAAK;AACL,CAAC;;ACvFD;AACA;AACA;AACA,AAEA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,wBAAwB,SAAS,sBAAsB,CAAC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE;AACvC,QAAQ,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC7C,QAAQ,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AACpC,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AACxB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,SAAS,GAAG,EAAE,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/C;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE;AAC5C,CAAC;;ACpCD;AACA;AACA;AACA,AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,cAAc,CAAC,EAAE,EAAE;AACnC,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM,EAAE;AAC7C,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;AACzB,QAAQ,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACrC,YAAY,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE;AAC9C,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,CAAC;AACrH,SAAS,OAAO,CAAC,CAAC,IAAI,KAAK;AAC3B,QAAQ,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACnC,QAAQ,IAAI,KAAK,YAAY,UAAU,EAAE;AACzC,YAAY,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACrC,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;AAC5B,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,OAAO,CAAC,EAAE,EAAE;AAC5B,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,GAAG,EAAE;AAC1C,QAAQ,OAAO,EAAE,CAAC,KAAK,CAAC;AACxB,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,UAAU,EAAE;AACjD,QAAQ,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;;ACrDD;AACA;AACA;AACA,AAOA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,MAAM,EAAE;AAC5B,IAAI,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;AACvC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClC,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;AAC/C,IAAI,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1D,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE;AAC/C,QAAQ,MAAM,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACtE,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;AACnC,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;AACpC,QAAQ,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzD,KAAK;AACL,SAAS;AACT,QAAQ,IAAI,MAAM,CAAC,IAAI,YAAY,QAAQ,EAAE;AAC7C,YAAY,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC9C,SAAS;AACT,aAAa;AACb,YAAY,MAAM,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;AACvC,YAAY,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACnC,YAAY,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;AAC9B,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE;AAC1C,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM,EAAE;AACjD,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC;AAC5B,QAAQ,MAAM,EAAE,GAAG,MAAM,CAAC;AAC1B,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9F,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5E,KAAK;AACL,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,aAAa,EAAE;AAC3G,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC;AAC5B,QAAQ,MAAM,EAAE,GAAG,MAAM,CAAC;AAC1B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;AACvD,YAAY,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;AAC/B,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE;AAC3C,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACpC,IAAI,IAAI,MAAM,CAAC,oBAAoB,EAAE;AACrC,QAAQ,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;AACpE,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;AAC5E,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AACzC,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,YAAY,UAAU,GAAG,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC;AACvG,QAAQ,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,YAAY,UAAU,GAAG,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC;AACrG,QAAQ,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3F,QAAQ,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAC3G,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE;AACtD,IAAI,IAAI,MAAM,YAAY,wBAAwB,EAAE;AACpD,QAAQ,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,wBAAwB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AACvI,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1D,IAAI,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB,CAAC,UAAU,EAAE;AACrD,QAAQ,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9C,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACrC,IAAI,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACxC,IAAI,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AACtC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,iBAAiB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACtE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;AACjD,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACpC,IAAI,MAAM,CAAC,0BAA0B,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC1E,IAAI,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE;AACrC,QAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,SAAS,EAAE;AACvC,QAAQ,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE;AAC9C,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAClC,IAAI,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1C,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,wBAAwB,CAAC,MAAM,EAAE;AACjD,IAAI,MAAM,IAAI,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzD,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAClC,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;AACrC,QAAQ,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC;;AChKD;AACA;AACA;AACA,AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;AAC1B,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE;AAC5C,QAAQ,OAAO,CAAC,KAAK,CAAC,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5B,IAAI,IAAI,CAAC,CAAC,oBAAoB,KAAK,CAAC,CAAC,oBAAoB,EAAE;AAC3D,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,CAAC,oBAAoB,EAAE;AACjC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC;AACnC,IAAI,OAAO,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACrE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AAChC,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACnC,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACnC,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;AAC1B,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC;AAC1B,IAAI,OAAO,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;AAC7D,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;AAC7B,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC1E,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,CAAC,YAAY,wBAAwB,EAAE;AAC/C,QAAQ,MAAM,KAAK,GAAG,CAAC,CAAC;AACxB,QAAQ,OAAO,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;AAC/F,KAAK;AACL,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7C,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,UAAU,EAAE;AAChD,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC;AACrB,QAAQ,MAAM,EAAE,GAAG,CAAC,CAAC;AACrB,QAAQ,OAAO,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACvE,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,OAAO,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;AACvC,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AAC9G,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AAClC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnE,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACrC,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE;AAChD,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;AACjE,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AACjC,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;;AClHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;AACxE,IAAI,OAAO,EAAE,IAAI,EAAE,SAAS;AAC5B,QAAQ,YAAY;AACpB,QAAQ,SAAS;AACjB,QAAQ,MAAM;AACd,QAAQ,UAAU,EAAE,YAAY;AAChC,YAAY,IAAI,GAAG,GAAG,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;AACpE,YAAY,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1C,SAAS,EAAE;AACX,QAAQ,qBAAqB,EAAE,YAAY;AAC3C,YAAY,IAAI,GAAG,GAAG,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC;AAC/E,YAAY,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1C,SAAS,EAAE;AACX,QAAQ,QAAQ,EAAE,YAAY;AAC9B,YAAY,IAAI,GAAG,GAAG,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;AAClE,YAAY,OAAO,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;AAC1C,SAAS,EAAE;AACX,KAAK,CAAC;AACN,CAAC;AACD;AACA,AAAO,SAAS,UAAU,CAAC,KAAK,EAAE;AAClC,IAAI,OAAO;AACX,QAAQ,IAAI,EAAE,MAAM;AACpB,QAAQ,KAAK;AACb,KAAK,CAAC;AACN,CAAC;AACD;AACA,AAAO,SAAS,aAAa,CAAC,OAAO,EAAE;AACvC,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAChE,CAAC;AACD;AACA,AAAO,SAAS,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE;AAC9C,IAAI,OAAO,YAAY;AACvB,QAAQ,IAAI,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AAC1E,QAAQ,OAAO,GAAG,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AAChD,KAAK,EAAE,CAAC;AACR,CAAC;AACD;AACA,AAAO,SAAS,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE;AAC9D,IAAI,OAAO,YAAY;AACvB,QAAQ,IAAI,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,YAAY,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AAC7G,QAAQ,OAAO,GAAG,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;AAChD,KAAK,EAAE,CAAC;AACR,CAAC;AACD;AACA,AAAO,SAAS,WAAW,CAAC,OAAO,EAAE;AACrC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;AACjB,IAAI,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1C,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;AACnC,YAAY,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;AAC/B,SAAS;AACT,KAAK;AACL,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;;ACjED;AACA;AACA;AACA;AACA;AACA,AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE;AACjD,IAAI,OAAO,MAAM,KAAK,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC;AACnE,SAAS,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,cAAc,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE;AACpD,IAAI,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,cAAc,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AAC/G,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE;AACvB,IAAI,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1C,IAAI,OAAO,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACrE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE;AACzB,IAAI,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1C,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;AAChC,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AAC1H,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE;AACvB,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9B,IAAI,OAAO,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC5E,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE;AAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC7B,QAAQ,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE;AACjC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5B,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;AAC7B,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAChC,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC;AACnB,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,KAAK,EAAE;AAClC,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE;AACzB,QAAQ,OAAO,qBAAqB,CAAC,GAAG,CAAC;AACzC,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,QAAQ,EAAE;AAC5B,QAAQ,OAAO,qBAAqB,CAAC,MAAM,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,KAAK,KAAK,QAAQ,GAAG,qBAAqB,CAAC,MAAM,GAAG,SAAS,CAAC;AACzE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE;AACrC,IAAI,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACzC,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;AAC3B,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;AACpF,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACxC,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;AAC1F,QAAQ,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,MAAM,KAAK,GAAG;AACd,IAAI,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,OAAO;AAC/F,IAAI,eAAe,EAAE,YAAY,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,SAAS;AACzH,CAAC,CAAC;AACF,MAAM,MAAM,GAAG;AACf,IAAI,CAAC,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC,UAAU;AAC1G,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE;AAC3C,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC;AACxG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/B,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACxD,QAAQ,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/B,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACzD,QAAQ,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACnC,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;AAC3B,QAAQ,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;AAC3B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE;AACpC,IAAI,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE;AACjC,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/B,IAAI,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE;AACxC,QAAQ,EAAE,CAAC,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC;AAClC,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE;AACvC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;AAClG,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;AAC9F,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC;AACxG,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE;AACjC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;AACtG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjG,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,YAAY,UAAU,GAAG,EAAE,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;AACzG,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;AAC3B,QAAQ,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC;AACvB,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE;AACvC,IAAI,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1D,IAAI,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACxD,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrD,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/B,IAAI,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,OAAO,EAAE;AAC/C,QAAQ,EAAE,CAAC,cAAc,GAAG,GAAG,KAAK,UAAU,GAAG,sBAAsB,CAAC,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC;AAChH,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE;AACvD,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChC,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,EAAE;AACnC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE;AACzB,QAAQ,IAAI;AACZ,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,IAAI,EAAE,CAAC,YAAY,UAAU,CAAC,EAAE;AAC5C,gBAAgB,MAAM,CAAC,CAAC;AACxB,aAAa;AACb,SAAS;AACT,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE;AAC3C,IAAI,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvD,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,EAAE,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACrC,KAAK;AACL,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,GAAG,CAAC,CAAC,EAAE,CAAC;AACtE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACpG,CAAC;AACD,MAAM,SAAS,GAAG;AAClB,IAAI,GAAG,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,KAAK,EAAE,gBAAgB,CAAC,aAAa;AAClF,IAAI,GAAG,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,GAAG,EAAE,gBAAgB,CAAC,cAAc;AACjF,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE;AACtC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AAC9D,QAAQ,EAAE,CAAC,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAC1C,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE;AAC5C,IAAI,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/B,IAAI,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,EAAE;AACxC,QAAQ,EAAE,CAAC,eAAe,GAAG,GAAG,KAAK,KAAK,CAAC;AAC3C,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AACnC,IAAI,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;AAC1C,QAAQ,EAAE,CAAC,WAAW,GAAG,IAAI,KAAK,KAAK,CAAC;AACxC,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE;AACpC,IAAI,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACxD,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAClC,IAAI,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ,EAAE;AAC9C,QAAQ,EAAE,CAAC,mBAAmB,GAAG,GAAG,KAAK,QAAQ,CAAC;AAClD,KAAK;AACL,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC;AACnG,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE;AACrC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;AAC3F,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC;AAChG,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE;AACrC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE;AACzC,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;AAC1B,QAAQ,OAAO,uBAAuB,CAAC,IAAI,CAAC;AAC5C,KAAK;AACL,IAAI,IAAI,KAAK,KAAK,OAAO,EAAE;AAC3B,QAAQ,OAAO,uBAAuB,CAAC,KAAK,CAAC;AAC7C,KAAK;AACL,IAAI,OAAO,KAAK,KAAK,QAAQ,GAAG,uBAAuB,CAAC,MAAM,GAAG,SAAS,CAAC;AAC3E,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE;AACpC,IAAI,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvD,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,EAAE,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACrC,KAAK;AACL,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACpG,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAClG,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/B,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;AAC3B,QAAQ,EAAE,CAAC,aAAa,GAAG,GAAG,CAAC;AAC/B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;AACtD,IAAI,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACzC,IAAI,MAAM,MAAM,GAAG,GAAG,KAAK,SAAS,GAAG,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxE,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK;AAC3B,QAAQ,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC/C,QAAQ,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvC,QAAQ,MAAM,KAAK,GAAG,GAAG,KAAK,SAAS,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAC5E,QAAQ,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACzD,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AACxC,YAAY,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAC5C,YAAY,IAAI,KAAK,KAAK,SAAS,EAAE;AACrC,gBAAgB,MAAM,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACnD,aAAa;AACb,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,EAAE;AACzC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AACzB,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACxC,IAAI,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACpC,IAAI,OAAO,GAAG,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC;AACpG,CAAC;;AC/aD;AACA;AACA;AACA;AACA;AACA;AACA,AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AACtC,IAAI,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC;AACD,MAAM,MAAM,GAAG;AACf,IAAI,GAAG,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAEE,WAAa,CAAC;AACtE,IAAI,GAAG,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAEC,QAAU,CAAC;AAChE,IAAI,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,EAAEC,cAAgB,CAAC;AACxF,IAAI,GAAG,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAEC,QAAU,CAAC;AAChE,IAAI,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAEC,aAAe,CAAC;AAC/E,IAAI,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACpE,IAAI,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,EAAEC,mBAAqB,CAAC;AAChG,IAAI,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACnE,IAAI,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACnE,IAAI,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAEC,WAAa,CAAC;AACtF,IAAI,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAEC,YAAc,CAAC;AAC5E,IAAI,GAAG,EAAE,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAEC,YAAc,CAAC;AAC/E,IAAI,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACnF,IAAI,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACxE,IAAI,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,EAAEC,gBAAkB,CAAC;AAC9G,IAAI,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACxE,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE;AACrC,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE;AAC7E,QAAQ,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;AACtF,QAAQ,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAC7C,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE;AAC/B,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,wBAAwB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AACtG,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE;AACnC,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;AAC/G,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE;AACvC,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE;AAC1B,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,IAAI,GAAGC,aAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC/C,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;AAC5B,QAAQ,MAAM,CAAC,0BAA0B,GAAG,IAAI,CAAC;AACjD,KAAK;AACL,IAAI,MAAM,IAAI,GAAGC,gBAAkB,CAACD,aAAe,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAClE,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;AAC5B,QAAQ,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3C,KAAK;AACL,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;AAC3C,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC7C,QAAQ,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,KAAK,cAAc,CAAC;AAC7D,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC,SAAS,KAAK,OAAO,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,EAAE;AACrF,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1C,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;AACxC,IAAI,IAAI,EAAE,CAAC,YAAY,KAAK,cAAc,EAAE;AAC5C,QAAQ,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC7B,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,SAAS,KAAK,GAAG,EAAE;AAC9B,QAAQ,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AAClC,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,CAAC,SAAS,KAAK,OAAO,EAAE;AAC1D,QAAQ,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AACnC,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,SAAS,KAAK,GAAG,EAAE;AAC9B,QAAQ,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AACrC,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;AACxF,IAAI,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAKA,aAAe,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACxF,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,EAAE;AACjE,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE;AAChC,YAAY,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,SAAS,GAAG,8BAA8B,CAAC,CAAC;AACpF,SAAS;AACT,QAAQ,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC7B,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,IAAI,MAAM,EAAE,GAAGA,aAAe,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AAClC,QAAQ,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,KAAK;AACL,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;AAClC,IAAI,MAAM,IAAI,GAAGA,aAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC/C,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;AAC5B,QAAQ,EAAE,CAAC,iBAAiB,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACzD,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE;AAChC,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACtD,IAAI,QAAQ,EAAE,CAAC,IAAI;AACnB,QAAQ,KAAK,gBAAgB,CAAC,QAAQ;AACtC,YAAY,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,YAAY,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACpC,YAAY,MAAM;AAClB,QAAQ,KAAK,gBAAgB,CAAC,QAAQ;AACtC,YAAY,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACrC,YAAY,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjC,YAAY,MAAM;AAClB,QAAQ,KAAK,gBAAgB,CAAC,KAAK;AACnC,YAAY,EAAE,CAAC,SAAS,GAAG,IAAI,KAAK,QAAQ,GAAG,aAAa,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC;AACnG,YAAY,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9B,YAAY,MAAM;AAClB,QAAQ,KAAK,gBAAgB,CAAC,MAAM;AACpC,YAAY,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,YAAY,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACpC,YAAY,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjC,YAAY,MAAM;AAClB,QAAQ,KAAK,gBAAgB,CAAC,OAAO;AACrC,YAAY,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjC,YAAY,MAAM;AAClB,QAAQ,KAAK,gBAAgB,CAAC,kBAAkB;AAChD,YAAY,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,YAAY,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACpC,YAAY,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjC,YAAY,MAAM;AAClB,QAAQ,KAAK,gBAAgB,CAAC,cAAc;AAC5C,YAAY,EAAE,CAAC,UAAU,GAAG,IAAI,KAAK,MAAM,GAAG,cAAc,CAAC,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC;AACpG,YAAY,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC/B,YAAY,MAAM;AAClB,QAAQ,KAAK,gBAAgB,CAAC,mBAAmB;AACjD,YAAY,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjC,YAAY,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,YAAY,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACpC,YAAY,MAAM;AAClB,QAAQ;AACR,YAAY,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjC,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;AACpC,IAAI,MAAM,KAAK,GAAGE,gBAAkB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC9C,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,QAAQ,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,SAAS,GAAG,4BAA4B,CAAC,CAAC;AAC9E,QAAQ,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC7B,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,EAAE,CAAC,SAAS,KAAK,GAAG,CAAC;AAC7C,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC,SAAS,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAC/G,IAAI,MAAM,EAAE,GAAGF,aAAe,CAAC,EAAE,EAAE,WAAW,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;AACpE,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAC7B,IAAI,IAAI,WAAW,EAAE;AACrB,QAAQG,cAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACjC,KAAK;AACL,SAAS;AACT,QAAQC,kBAAoB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;AACnC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;AACtC,IAAI,MAAM,IAAI,GAAGF,gBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9C,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,QAAQ,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,gCAAgC,CAAC,CAAC;AAC5D,QAAQ,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC7B,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjE,IAAI,MAAM,EAAE,GAAGF,aAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC1C,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACjC,IAAIK,WAAa,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC9B,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAEH,gBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAChG,IAAII,kBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAC1B,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1C,QAAQJ,gBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AACjH,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;AACnC,IAAI,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAClE,IAAIK,cAAgB,CAAC,GAAG,CAAC,UAAU,EAAEP,aAAe,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;AACjE,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;AACnC,QAAQ,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC1C,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;AAChC,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACzC,QAAQ,IAAI,KAAK,CAAC,YAAY,KAAK,cAAc,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE;AAChF,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,YAAY,KAAK,0BAA0B,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE;AAC5F,YAAY,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AACvC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,YAAY,KAAK,cAAc,IAAI,KAAK,CAAC,SAAS,KAAK,GAAG,EAAE;AAC9E,YAAY,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACrE,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE;AAC7F,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACtE,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACzD,KAAK,CAAC,CAAC;AACP,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;AACzC,IAAI,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;AACjE,IAAI,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACvD,IAAI,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACrC,IAAI,SAAS,CAAC,gBAAgB,CAAC,MAAM;AACrC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;AACrC,YAAY,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,kEAAkE,CAAC,CAAC;AAC5H,YAAY,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AAClD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE;AACxC,YAAY,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,EAAE,GAAG,WAAW,CAACA,aAAe,CAACA,aAAe,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5F,QAAQ,IAAI,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE;AACzF,YAAY,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;AACxD,SAAS;AACT,QAAQE,gBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACtF,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE;AAChC,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,cAAc,EAAE;AAC9C,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW,EAAE;AACxC,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AACjD,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,cAAc,CAAC,CAAC;AAC9E,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,cAAc;AAC3E,WAAW,CAAC,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,CAAC;AACrE,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAClG,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,IAAIA,gBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACnH,CAAC;AACD,MAAM,aAAa,GAAG;AACtB,IAAI,IAAI,EAAE,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,KAAK;AAChE,IAAI,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,iBAAiB,CAAC,WAAW;AAChF,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,EAAE,EAAE;AACzB,IAAI,OAAO,EAAE,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC;;AC3YD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,qBAAqB,SAAS,KAAK,CAAC;AACjD,IAAI,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE;AACtD,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,QAAQ,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;AAC5C,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AACvC,QAAQ,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AAC7C,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1D,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,mBAAmB,SAAS,KAAK,CAAC;AAC/C,IAAI,WAAW,CAAC,OAAO,GAAG,sDAAsD,EAAE;AAClF,QAAQ,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB;AACA;AACA;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACnC,QAAQ,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;AAC1C,QAAQ,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC1D,KAAK;AACL,CAAC;;AC5CD;AACA;AACA;AACA;AACA;AACA;AACA,AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,iBAAiB,CAAC,OAAO,EAAE;AAC3C,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5F,QAAQ,OAAO,OAAO,CAAC,MAAM,CAAC;AAC9B,KAAK;AACL,IAAI,MAAM,QAAQ,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,GAAG,OAAO,CAAC,gBAAgB,GAAG,EAAE,CAAC;AACrH,IAAI,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjF,IAAI,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AAC9C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE;AACvE,IAAI,OAAO,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;AACrF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AAChD,IAAI,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;AACxF,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AAC/C,IAAI,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AAC/C,IAAI,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACtD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AAC7C,IAAI,MAAM,IAAI,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;AACjD,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAChC,IAAI,OAAO,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AACvH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE;AACtC,IAAI,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,oCAAoC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;AACtJ,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;AACrD,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzD,QAAQ,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,KAAK,EAAE,CAAC,CAAC;AACT,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE;AAC9D,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC/B,QAAQ,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,CAAC;;ACpID;AACA;AACA;AACA;AACA;AACA,AAGA,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAChD,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC7C,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC/C,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACpC,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AACxF,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACpC;AACA,AAAO,MAAM,gBAAgB,GAAG;AAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC,gBAAgB,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC,gBAAgB,CAAC,SAAS,GAAG,aAAa;AACpH,IAAI,CAAC,gBAAgB,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC,gBAAgB,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,gBAAgB,CAAC,aAAa,GAAG,SAAS;AACrH,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC,gBAAgB,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,gBAAgB,CAAC,cAAc,GAAG,YAAY;AAC9H,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,gBAAgB,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC,gBAAgB,CAAC,OAAO,GAAG,SAAS;AAChH,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,QAAQ;AACxF,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,WAAW;AACvD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE;AACrC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACpC,QAAQ,OAAO,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE;AAChF,QAAQ,OAAO,CAAC,0CAA0C,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAC9G,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE;AAC/C,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7E,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,MAAM,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1G,IAAI,IAAI,MAAM,EAAE;AAChB,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACvF,KAAK;AACL,SAAS;AACT,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AAC9G,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAC9G,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;AACpC,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,KAAK;AACL,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACjF,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,MAAM,EAAE;AAC/B,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE;AAC9B,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,uBAAuB,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AACjJ,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE;AACxC,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC;AAChH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;AACrC,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAC;AACjI,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACrI,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;AACxC,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;AAChG,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;AAC9B,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,iBAAiB,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;AAC9H,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACnF,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;AACpC,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;AAC1G,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5F,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;AAClG,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1F,IAAI,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC3C,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE;AAC/B,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC1B,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE;AAChC,IAAI,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACzC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;AAC3D,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAChC,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/C,QAAQ,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;AACrH,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,KAAK,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACrH,QAAQ,IAAI,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE;AAC5D,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC;AACzB,SAAS;AACT,aAAa;AACb,YAAY,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9C,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACrD,QAAQ,MAAM,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnE,QAAQ,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAChJ,QAAQ,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACxE,KAAK,CAAC,CAAC,CAAC;AACR,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;AACvC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS,EAAE;AAChD,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;AAC7E,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;AAC9E,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC3E,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9D,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3G,KAAK;AACL,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,aAAa,EAAE;AACzD,QAAQ,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AACpC,KAAK;AACL,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,QAAQ,EAAE;AACpD,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AACvH,KAAK;AACL,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM,EAAE;AAClD,QAAQ,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAC7B,KAAK;AACL,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM,EAAE;AAClD,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;AAC5E,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;AAC5G,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC;AAC/G,YAAY,CAAC,CAAC,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC/D,KAAK;AACL,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,mBAAmB,EAAE;AAC/D,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5E,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;AACvC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM,EAAE;AAC7C,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC;AAChF,KAAK;AACL,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,GAAG,EAAE;AAC/C,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;AACnF,KAAK;AACL,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS,EAAE;AACrD,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC;AAC3G,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC;AACzF,YAAY,CAAC,CAAC,CAAC,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC;AAChH,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACnH,KAAK;AACL,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,GAAG,EAAE;AAC/C,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC;AACrH,YAAY,CAAC,CAAC,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACnE,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;AACnC,YAAY,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,SAAS;AACT,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpE,KAAK;AACL,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,cAAc,EAAE;AAC1D,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;AAC5E,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,eAAe,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;AAC9F,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,WAAW,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC;AAC9F,KAAK;AACL,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,OAAO,EAAE;AACnD,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC;AAChG,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5I,KAAK;AACL,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,OAAO,EAAE;AACnD,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC7E,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,kBAAkB,CAAC,GAAG,EAAE,EAAE,EAAE;AAC5C,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;AACnB,IAAI,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAClC,IAAI,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAClC,IAAI,OAAO,GAAG,CAAC;AACf,CAAC;;AChQD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAQA,MAAMM,eAAa,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,EAAE,EAAE;AACtB,IAAI,QAAQ,EAAE,CAAC,IAAI;AACnB,QAAQ,KAAK,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AACtG,QAAQ,KAAK,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AACnG,QAAQ,KAAK,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AACrH,QAAQ,KAAK,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AACnG,QAAQ,KAAK,gBAAgB,CAAC,cAAc;AAC5C,YAAY,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AACtF,QAAQ,KAAK,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AAC3G,QAAQ,KAAK,gBAAgB,CAAC,OAAO;AACrC,YAAY,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AAChG,QAAQ,KAAK,gBAAgB,CAAC,QAAQ;AACtC,YAAY,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;AACpG,QAAQ,KAAK,gBAAgB,CAAC,QAAQ;AACtC,YAAY,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AAC1G,QAAQ,SAAS,OAAO,eAAe,CAAC,EAAE,CAAC,CAAC;AAC5C,KAAK;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,CAAC,EAAE,EAAE;AAC7B,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,KAAK,EAAE;AAC5C,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,QAAQ,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,UAAU,CAAC;AAC/D,QAAQ,OAAO,EAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,EAAE,EAAE,EAAE,KAAK,GAAG,UAAU,GAAG,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AACvI,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM,EAAE;AAC7C,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,QAAQ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AACvH,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,cAAc,EAAE;AACrD,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,QAAQ,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,KAAK,cAAc,CAAC,SAAS,CAAC;AAC9D,QAAQ,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,QAAQ,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AAC1I,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,mBAAmB,EAAE;AAC1D,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,QAAQ,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;AAC7H,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,kBAAkB,EAAE;AACzD,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;AACrB,QAAQ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AACvH,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE;AACpC,IAAI,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE;AAClC,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;AACnC,QAAQ,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;AAClF,QAAQ,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AACzE,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,YAAY,cAAc,GAAG,EAAE,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACrG,IAAI,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;AAClG,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE;AAC5C,IAAI,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAChF,IAAI,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AACnE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9C,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;AACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtG,KAAK;AACL,IAAI,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAI,IAAI,IAAI,CAAC,0BAA0B,KAAK,SAAS,EAAE;AACvD,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;AACvC,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACzG,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;AAChD,IAAI,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE;AAChC,QAAQ,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,4BAA4B,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AACpF,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AACpD,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACpH,IAAI,OAAO,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE;AACpC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;AAC3B,QAAQ,OAAO,CAAC,gCAAgC,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAC1E,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AACvF,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;AACpC,QAAQ,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE;AAC7C,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACnH,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACjD,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;AACjC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE;AAC7B,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC;AAC5B,KAAK;AACL,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU,GAAG,SAAS,CAAC;AAC7G,IAAI,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAChI,IAAI,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAClE,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;AAC5B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;AAC1D,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;AACnC,QAAQ,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,KAAK;AACL,SAAS,IAAI,GAAG,CAAC,IAAI,YAAY,QAAQ,EAAE;AAC3C,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;AAClD,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC9C,SAAS;AACT,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7E,KAAK;AACL,IAAI,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE;AACtC,IAAI,IAAI,EAAE,YAAY,wBAAwB,EAAE;AAChD,QAAQ,OAAO,EAAE,CAAC,YAAY,CAAC;AAC/B,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,UAAU,EAAE;AACjD,QAAQ,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACjC,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS,EAAE;AAChD,QAAQ,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACpD,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,aAAa,EAAE;AACpD,QAAQ,OAAO,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC5D,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,CAAC,MAAM,EAAE;AAC7C,QAAQ,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChC,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE;AAC9B,QAAQ,OAAO,OAAO,CAAC,iCAAiC,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;AAChG,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AACvD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7F,IAAI,OAAO,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,SAAS,EAAE;AAClC,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,EAAE;AACzF,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjE,IAAI,MAAM,MAAM,GAAG,IAAI,YAAY,wBAAwB,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,KAAK,cAAc;AAChH,YAAY,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC;AAC1E,IAAI,OAAO,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAClD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,4BAA4B,CAAC,SAAS,EAAE,OAAO,EAAE;AACjE,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;AACtC,IAAI,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;AAChE,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;AAC/C,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE;AACjC,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;AAC1E,UAAU,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,wBAAwB,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;AAC9F,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;AAC5C,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,QAAQ,OAAO,CAAC,qDAAqD,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC;AACtG,KAAK;AACL,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAY,OAAO,CAAC,2CAA2C,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AACzF,SAAS;AACT,QAAQ,OAAO,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/E,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,IAAI,SAAS,CAAC,wBAAwB,EAAE;AAC5C,QAAQ,MAAM,EAAE,GAAG,KAAK,CAACA,eAAa,EAAE,SAAS,CAAC,aAAa,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAC5F,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,KAAK;AACL,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC5B,QAAQ,MAAM,IAAI,GAAG,kBAAkB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC1D,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACzE,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;;ACjTD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACzE,AAIA;AACA,AAAO,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACvD,AAEA;AACA,AAAO,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAClE;AACA,AAAO,MAAM,uBAAuB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1D,AAaA;AACA,AAAO,SAAS,WAAW,CAAC,KAAK,EAAE;AACnC,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,SAAS,CAAC;AACtE,CAAC;AACD,AAUA;AACA,AAAO,SAAS,eAAe,CAAC,KAAK,EAAE;AACvC,IAAI,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACpD,UAAU,KAAK;AACf,UAAU,SAAS,CAAC;AACpB,CAAC;AACD,AAMA;AACA,AAAO,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACzC,IAAI,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtD,UAAU,KAAK;AACf,UAAU,SAAS,CAAC;AACpB,CAAC;AACD;AACA,AAAO,SAAS,oBAAoB,CAAC,KAAK,EAAE;AAC5C,IAAI,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzD,UAAU,KAAK;AACf,UAAU,SAAS,CAAC;AACpB,CAAC;AACD,AA4CA;AACA,AAAO,SAAS,UAAU,CAAC,KAAK,EAAE;AAClC,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;AAClC,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;AACjD,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,EAAE;AACnD,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,OAAO,SAAS,CAAC;AACrB,CAAC;;AChID;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AAIA,MAAM,cAAc,GAAG;AACvB,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;AAC7B,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC;AAC9B,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAC;AACrC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC;AAC3B,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC;AAC7B,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;AAC/B,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC;AAC/B,CAAC,CAAC;AACF,SAAS,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE;AACzB,IAAI,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,cAAc,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;AAClG,CAAC;AACD,SAAS,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE;AACvB,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9B,IAAI,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC;AAC/C,CAAC;AACD,SAAS,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE;AACzB,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5B,IAAI,OAAO,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACtE,CAAC;AACD,SAASC,OAAK,CAAC,EAAE,EAAE,IAAI,EAAE;AACzB,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC9B,IAAI,IAAI,CAAC,CAAC,EAAE;AACZ,QAAQ,OAAO,SAAS,CAAC;AACzB,KAAK;AACL,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAClC,IAAI,OAAO,CAAC,KAAK,SAAS,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,iBAAiB,CAAC,MAAM,EAAE;AAC1C,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;AACjB,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC1B,QAAQ,IAAI,CAAC,KAAK,SAAS,EAAE;AAC7B,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,SAAS;AACT,KAAK,CAAC;AACN,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAC7C,IAAI,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACrC,IAAI,GAAG,CAAC,wBAAwB,EAAE,EAAE,KAAK,SAAS,GAAG,iBAAiB,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;AACxF,IAAI,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACxC,IAAI,GAAG,CAAC,0BAA0B,EAAE,EAAE,KAAK,SAAS,GAAG,oBAAoB,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;AAC7F,IAAI,GAAG,CAAC,eAAe,EAAEA,OAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AACrD,IAAI,GAAG,CAAC,qBAAqB,EAAEA,OAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACzD,IAAI,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAChD,IAAI,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACjD,IAAI,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpC,IAAI,GAAG,CAAC,sBAAsB,EAAE,EAAE,KAAK,SAAS,GAAG,WAAW,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;AAChF,IAAI,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9C,IAAI,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAChD,IAAI,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAClD,IAAI,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAClD,IAAI,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;AACnD,IAAI,GAAG,CAAC,WAAW,EAAEA,OAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AACjD,IAAI,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACrC,IAAI,GAAG,CAAC,uBAAuB,EAAE,EAAE,KAAK,SAAS,GAAG,eAAe,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;AACrF,IAAI,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACtC,IAAI,GAAG,CAAC,mBAAmB,EAAE,EAAE,KAAK,SAAS,GAAG,eAAe,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;AACjF,IAAI,OAAO,CAAC,CAAC;AACb,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,AAAO,SAAS,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,EAAE;AAC9D,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK;AAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE;AAC9D,YAAY,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AACnF,YAAY,QAAQ,EAAE,EAAE;AACxB,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK,CAAC;AACN,IAAI,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK;AAC9B,QAAQ,IAAI,CAAC,KAAK,SAAS,EAAE;AAC7B,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AACpC,SAAS;AACT,KAAK,CAAC;AACN,IAAI,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK;AAC5B,QAAQ,IAAI,CAAC,KAAK,SAAS,EAAE;AAC7B,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC3C,YAAY,MAAM,IAAI,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AACzI,SAAS;AACT,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,KAAK,CAAC;AACN,IAAI,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE;AAC/E,QAAQ,MAAM,IAAI,qBAAqB,CAAC,iDAAiD,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACpH,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE;AACzC,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,sBAAsB,KAAK,SAAS,EAAE;AACvD,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,wBAAwB,KAAK,SAAS,EAAE;AACzD,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AAC3D,KAAK;AACL,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC9C,IAAI,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAClD,IAAI,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,cAAc,EAAE;AAC9C,QAAQ,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChC,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACnC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACxB,SAAS;AACT,aAAa;AACb,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACxB,SAAS;AACT,KAAK;AACL,IAAI,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC1C,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC1C,IAAI,IAAI,QAAQ,CAAC,qBAAqB,KAAK,SAAS,EAAE;AACtD,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AACrD,KAAK;AACL,IAAI,IAAI,QAAQ,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAClD,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,OAAO,aAAa,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/F,CAAC;;;;"}