@thomasfosterau/effect-rdf 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (776) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2251 -2
  3. package/dist/Algebra-CGG4oae3.mjs +433 -0
  4. package/dist/Algebra-CGG4oae3.mjs.map +1 -0
  5. package/dist/Algebra-uGsIEOUA.d.mts +446 -0
  6. package/dist/Ast-CPRZmBvk.mjs +552 -0
  7. package/dist/Ast-CPRZmBvk.mjs.map +1 -0
  8. package/dist/Ast-vcw2W-lf.d.mts +827 -0
  9. package/dist/Bindings-Ck3m7JRC.mjs +249 -0
  10. package/dist/Bindings-Ck3m7JRC.mjs.map +1 -0
  11. package/dist/Bindings-DiKpBd7f.d.mts +153 -0
  12. package/dist/ClientErrors-CpXdFX5u.mjs +128 -0
  13. package/dist/ClientErrors-CpXdFX5u.mjs.map +1 -0
  14. package/dist/ClientErrors-D4IZHUM-.d.mts +101 -0
  15. package/dist/ClientFormats-CXomkXLV.mjs +73 -0
  16. package/dist/ClientFormats-CXomkXLV.mjs.map +1 -0
  17. package/dist/ClientFormats-Dm57ZPwR.d.mts +36 -0
  18. package/dist/Csv2Json-DynEcwCh.mjs +194 -0
  19. package/dist/Csv2Json-DynEcwCh.mjs.map +1 -0
  20. package/dist/Csv2Json-aXNVDoXQ.d.mts +40 -0
  21. package/dist/Csv2Rdf-8maXP6mt.d.mts +41 -0
  22. package/dist/Csv2Rdf-DuSEkaKE.mjs +161 -0
  23. package/dist/Csv2Rdf-DuSEkaKE.mjs.map +1 -0
  24. package/dist/Dataset-BlmlcI7J.mjs +782 -0
  25. package/dist/Dataset-BlmlcI7J.mjs.map +1 -0
  26. package/dist/Dataset-DS3ESOcO.d.mts +426 -0
  27. package/dist/Dataset.d.mts +2 -0
  28. package/dist/Dataset.mjs +1 -0
  29. package/dist/Datatype-CxMpamHC.d.mts +212 -0
  30. package/dist/Datatype-DQvkNkiH.mjs +1001 -0
  31. package/dist/Datatype-DQvkNkiH.mjs.map +1 -0
  32. package/dist/Dialect-8ChFj5EX.d.mts +113 -0
  33. package/dist/Dialect-CzVH38uo.mjs +165 -0
  34. package/dist/Dialect-CzVH38uo.mjs.map +1 -0
  35. package/dist/DocumentLoader-D3lZREnB.mjs +346 -0
  36. package/dist/DocumentLoader-D3lZREnB.mjs.map +1 -0
  37. package/dist/DocumentLoader-ZUCEVrW5.d.mts +178 -0
  38. package/dist/DublinCore-AnwqxRx6.mjs +137 -0
  39. package/dist/DublinCore-AnwqxRx6.mjs.map +1 -0
  40. package/dist/DublinCore-Dq-tVA5d.d.mts +119 -0
  41. package/dist/Engine-CYPB3g4h.d.mts +144 -0
  42. package/dist/Engine-DF8PN7g-.mjs +872 -0
  43. package/dist/Engine-DF8PN7g-.mjs.map +1 -0
  44. package/dist/Errors-CMdV1RhU.mjs +37 -0
  45. package/dist/Errors-CMdV1RhU.mjs.map +1 -0
  46. package/dist/Errors-u2bDjUeM.d.mts +30 -0
  47. package/dist/Evaluator-DEsU4d1o.d.mts +50 -0
  48. package/dist/Evaluator-DOY2-guC.mjs +281 -0
  49. package/dist/Evaluator-DOY2-guC.mjs.map +1 -0
  50. package/dist/Exif-CpqniYQd.d.mts +78 -0
  51. package/dist/Exif-DjkCfEB-.mjs +89 -0
  52. package/dist/Exif-DjkCfEB-.mjs.map +1 -0
  53. package/dist/Expression-BIMMvduQ.mjs +230 -0
  54. package/dist/Expression-BIMMvduQ.mjs.map +1 -0
  55. package/dist/Expression-W8A9cyX7.d.mts +89 -0
  56. package/dist/Extract-Bop85jES.mjs +220 -0
  57. package/dist/Extract-Bop85jES.mjs.map +1 -0
  58. package/dist/Extract-C_pCvuTC.d.mts +88 -0
  59. package/dist/Federation-BcNrozc1.d.mts +52 -0
  60. package/dist/Federation-CHScBkaK.mjs +130 -0
  61. package/dist/Federation-CHScBkaK.mjs.map +1 -0
  62. package/dist/Functions-AvjNcId_.mjs +1346 -0
  63. package/dist/Functions-AvjNcId_.mjs.map +1 -0
  64. package/dist/Functions-OQJZP-F6.d.mts +111 -0
  65. package/dist/Generator-C52mmq01.d.mts +50 -0
  66. package/dist/Generator-D3utCJC7.mjs +205 -0
  67. package/dist/Generator-D3utCJC7.mjs.map +1 -0
  68. package/dist/Grammar-CPlSxGH6.mjs +200 -0
  69. package/dist/Grammar-CPlSxGH6.mjs.map +1 -0
  70. package/dist/Grammar-CRhnRoCu.d.mts +148 -0
  71. package/dist/Grammar-D6jZdJQ3.d.mts +169 -0
  72. package/dist/Grammar-mQ8CgE1M.mjs +258 -0
  73. package/dist/Grammar-mQ8CgE1M.mjs.map +1 -0
  74. package/dist/GraphStore-DhUa4nFO.d.mts +45 -0
  75. package/dist/GraphStore-DvbqwKy1.mjs +212 -0
  76. package/dist/GraphStore-DvbqwKy1.mjs.map +1 -0
  77. package/dist/Iri-BB8Ks-BF.d.mts +84 -0
  78. package/dist/Iri-Cr92gsQV.mjs +232 -0
  79. package/dist/Iri-Cr92gsQV.mjs.map +1 -0
  80. package/dist/Iri.d.mts +2 -0
  81. package/dist/Iri.mjs +1 -0
  82. package/dist/Isomorphism-B6qTY-xy.d.mts +28 -0
  83. package/dist/Isomorphism-BmqxhKyJ.mjs +232 -0
  84. package/dist/Isomorphism-BmqxhKyJ.mjs.map +1 -0
  85. package/dist/Isomorphism-DInKnWIy.mjs +390 -0
  86. package/dist/Isomorphism-DInKnWIy.mjs.map +1 -0
  87. package/dist/Isomorphism-DvSfZXLR.d.mts +37 -0
  88. package/dist/Isomorphism.d.mts +2 -0
  89. package/dist/Isomorphism.mjs +1 -0
  90. package/dist/JsonLd-DOwS2FHg.mjs +2836 -0
  91. package/dist/JsonLd-DOwS2FHg.mjs.map +1 -0
  92. package/dist/JsonLd-DobFrQNa.d.mts +242 -0
  93. package/dist/JsonLdError-C9J-BxfG.mjs +106 -0
  94. package/dist/JsonLdError-C9J-BxfG.mjs.map +1 -0
  95. package/dist/JsonLdError-DSOfHkOy.d.mts +43 -0
  96. package/dist/LanguageTag-BCu8rcmX.d.mts +38 -0
  97. package/dist/LanguageTag-BcOpMGZ4.mjs +89 -0
  98. package/dist/LanguageTag-BcOpMGZ4.mjs.map +1 -0
  99. package/dist/LanguageTag.d.mts +2 -0
  100. package/dist/LanguageTag.mjs +1 -0
  101. package/dist/Lexical-Cg0JHrf6.mjs +243 -0
  102. package/dist/Lexical-Cg0JHrf6.mjs.map +1 -0
  103. package/dist/Lexical-D3zySYVS.d.mts +163 -0
  104. package/dist/Manifest-B6xf6mUc.mjs +148 -0
  105. package/dist/Manifest-B6xf6mUc.mjs.map +1 -0
  106. package/dist/Manifest-DQUMRBFr.d.mts +98 -0
  107. package/dist/Mapping-BgG74x3U.d.mts +63 -0
  108. package/dist/Mapping-Dc1ZGirk.mjs +259 -0
  109. package/dist/Mapping-Dc1ZGirk.mjs.map +1 -0
  110. package/dist/Mcp-1DwTTKOK.mjs +48 -0
  111. package/dist/Mcp-1DwTTKOK.mjs.map +1 -0
  112. package/dist/Mcp-d-pX9erx.d.mts +25 -0
  113. package/dist/Message-CK_DGQuu.mjs +95 -0
  114. package/dist/Message-CK_DGQuu.mjs.map +1 -0
  115. package/dist/Message-fIvTJSXM.d.mts +49 -0
  116. package/dist/Metadata-BbffwGDZ.mjs +445 -0
  117. package/dist/Metadata-BbffwGDZ.mjs.map +1 -0
  118. package/dist/Metadata-CEt3yc1-.d.mts +901 -0
  119. package/dist/Metadata-D4HsQNXr.mjs +1273 -0
  120. package/dist/Metadata-D4HsQNXr.mjs.map +1 -0
  121. package/dist/Metadata-nzS7QKRj.d.mts +350 -0
  122. package/dist/Model-DaMmxurZ.d.mts +293 -0
  123. package/dist/Model-DlPzRYhF.mjs +528 -0
  124. package/dist/Model-DlPzRYhF.mjs.map +1 -0
  125. package/dist/N3-BzyV-KIH.mjs +974 -0
  126. package/dist/N3-BzyV-KIH.mjs.map +1 -0
  127. package/dist/N3-DSLnonDn.d.mts +100 -0
  128. package/dist/NQuads-C1VBOJ3-.mjs +117 -0
  129. package/dist/NQuads-C1VBOJ3-.mjs.map +1 -0
  130. package/dist/NQuads-FjFZikFg.d.mts +76 -0
  131. package/dist/NTriples-D-kLSEAf.mjs +120 -0
  132. package/dist/NTriples-D-kLSEAf.mjs.map +1 -0
  133. package/dist/NTriples-D34OspfW.d.mts +76 -0
  134. package/dist/Namespace-ClTUO_ya.d.mts +42 -0
  135. package/dist/Namespace-DHFIsORd.mjs +75 -0
  136. package/dist/Namespace-DHFIsORd.mjs.map +1 -0
  137. package/dist/Namespace.d.mts +2 -0
  138. package/dist/Namespace.mjs +1 -0
  139. package/dist/Namespaces-Bz85vpjW.mjs +235 -0
  140. package/dist/Namespaces-Bz85vpjW.mjs.map +1 -0
  141. package/dist/Namespaces-C1jW6EDo.d.mts +178 -0
  142. package/dist/Optimizer-BWWQRQPY.mjs +168 -0
  143. package/dist/Optimizer-BWWQRQPY.mjs.map +1 -0
  144. package/dist/Optimizer-DUpUow6k.d.mts +26 -0
  145. package/dist/Options-BLBGL4HE.mjs +72 -0
  146. package/dist/Options-BLBGL4HE.mjs.map +1 -0
  147. package/dist/Options-BommQwP9.d.mts +127 -0
  148. package/dist/Packet-CA76wVX3.mjs +197 -0
  149. package/dist/Packet-CA76wVX3.mjs.map +1 -0
  150. package/dist/Packet-Cy5g6XuW.d.mts +130 -0
  151. package/dist/Parser-p1Gyr0QN.d.mts +85 -0
  152. package/dist/Parser-xARsOWXk.mjs +1317 -0
  153. package/dist/Parser-xARsOWXk.mjs.map +1 -0
  154. package/dist/Path-B20Yp8KE.mjs +284 -0
  155. package/dist/Path-B20Yp8KE.mjs.map +1 -0
  156. package/dist/Path-DRB8e-Zn.d.mts +181 -0
  157. package/dist/Pdf-B9RZn--8.d.mts +77 -0
  158. package/dist/Pdf-CKK6dkZn.mjs +89 -0
  159. package/dist/Pdf-CKK6dkZn.mjs.map +1 -0
  160. package/dist/PdfA-CUjSuntT.d.mts +109 -0
  161. package/dist/PdfA-CleOhuL6.mjs +124 -0
  162. package/dist/PdfA-CleOhuL6.mjs.map +1 -0
  163. package/dist/Photoshop-CiHo80qV.mjs +233 -0
  164. package/dist/Photoshop-CiHo80qV.mjs.map +1 -0
  165. package/dist/Photoshop-udKZ0I3N.d.mts +204 -0
  166. package/dist/PrefixMap-BHFPDLO-.mjs +103 -0
  167. package/dist/PrefixMap-BHFPDLO-.mjs.map +1 -0
  168. package/dist/PrefixMap-BMlXrWNd.d.mts +64 -0
  169. package/dist/PrefixMap.d.mts +2 -0
  170. package/dist/PrefixMap.mjs +1 -0
  171. package/dist/Processor-CMmecFsb.mjs +198 -0
  172. package/dist/Processor-CMmecFsb.mjs.map +1 -0
  173. package/dist/Processor-FJPvO0CB.d.mts +435 -0
  174. package/dist/Protocol-BA7OkNgp.mjs +202 -0
  175. package/dist/Protocol-BA7OkNgp.mjs.map +1 -0
  176. package/dist/Protocol-DlSoiIKB.d.mts +108 -0
  177. package/dist/ProtocolErrors-Ckfejnl6.d.mts +84 -0
  178. package/dist/ProtocolErrors-czDPVcX5.mjs +129 -0
  179. package/dist/ProtocolErrors-czDPVcX5.mjs.map +1 -0
  180. package/dist/Query-D9A6LOpP.mjs +364 -0
  181. package/dist/Query-D9A6LOpP.mjs.map +1 -0
  182. package/dist/Query-KqSkTYyG.d.mts +96 -0
  183. package/dist/QueryBuilder-BLK9Vfbz.mjs +674 -0
  184. package/dist/QueryBuilder-BLK9Vfbz.mjs.map +1 -0
  185. package/dist/QueryBuilder-DUqh4ECe.d.mts +529 -0
  186. package/dist/RdfJs-D6-49XB5.mjs +86 -0
  187. package/dist/RdfJs-D6-49XB5.mjs.map +1 -0
  188. package/dist/RdfJs-DXFqdWrd.d.mts +76 -0
  189. package/dist/RdfJs.d.mts +2 -0
  190. package/dist/RdfJs.mjs +1 -0
  191. package/dist/RdfJson-5aKPDlPS.d.mts +297 -0
  192. package/dist/RdfJson-BNocgW4f.mjs +548 -0
  193. package/dist/RdfJson-BNocgW4f.mjs.map +1 -0
  194. package/dist/RdfXml-DJ9G4gOq.mjs +1014 -0
  195. package/dist/RdfXml-DJ9G4gOq.mjs.map +1 -0
  196. package/dist/RdfXml-_N7yxWEp.d.mts +149 -0
  197. package/dist/Rdfs-BRVPsAjc.d.mts +84 -0
  198. package/dist/Rdfs-CyY2wVHI.mjs +167 -0
  199. package/dist/Rdfs-CyY2wVHI.mjs.map +1 -0
  200. package/dist/Rdfs.d.mts +2 -0
  201. package/dist/Rdfs.mjs +1 -0
  202. package/dist/Reasoner-BxYhx9s7.d.mts +94 -0
  203. package/dist/Reasoner-Cw90zrjv.mjs +798 -0
  204. package/dist/Reasoner-Cw90zrjv.mjs.map +1 -0
  205. package/dist/Reification-BmN4EfnM.d.mts +40 -0
  206. package/dist/Reification-dpqQvjDE.mjs +82 -0
  207. package/dist/Reification-dpqQvjDE.mjs.map +1 -0
  208. package/dist/Reification.d.mts +2 -0
  209. package/dist/Reification.mjs +1 -0
  210. package/dist/Report-XHs8htzK.mjs +121 -0
  211. package/dist/Report-XHs8htzK.mjs.map +1 -0
  212. package/dist/Report-hcXsc_19.d.mts +115 -0
  213. package/dist/Resource-B1cI8FyJ.d.mts +218 -0
  214. package/dist/Resource-sIEeNh15.mjs +374 -0
  215. package/dist/Resource-sIEeNh15.mjs.map +1 -0
  216. package/dist/Resource.d.mts +2 -0
  217. package/dist/Resource.mjs +1 -0
  218. package/dist/Results-BVNEC-Wt.d.mts +277 -0
  219. package/dist/Results-peJjGA2V.mjs +621 -0
  220. package/dist/Results-peJjGA2V.mjs.map +1 -0
  221. package/dist/ResultsStream-BhF0OcNn.mjs +639 -0
  222. package/dist/ResultsStream-BhF0OcNn.mjs.map +1 -0
  223. package/dist/ResultsStream-toYMXrOe.d.mts +100 -0
  224. package/dist/SemAct-CDchtk49.d.mts +96 -0
  225. package/dist/SemAct-CmyT4yI8.mjs +118 -0
  226. package/dist/SemAct-CmyT4yI8.mjs.map +1 -0
  227. package/dist/Serialization-DP9H5bYQ.mjs +514 -0
  228. package/dist/Serialization-DP9H5bYQ.mjs.map +1 -0
  229. package/dist/Serialization-Df8iVauT.d.mts +392 -0
  230. package/dist/Serialization.d.mts +2 -0
  231. package/dist/Serialization.mjs +1 -0
  232. package/dist/ServerFormats-CrRnjjf6.mjs +64 -0
  233. package/dist/ServerFormats-CrRnjjf6.mjs.map +1 -0
  234. package/dist/ServerFormats-DjC9NsO_.d.mts +36 -0
  235. package/dist/ServiceDescription-BERsvg-k.d.mts +54 -0
  236. package/dist/ServiceDescription-Dq5hxeGy.mjs +97 -0
  237. package/dist/ServiceDescription-Dq5hxeGy.mjs.map +1 -0
  238. package/dist/ShExC-Ctf-06CL.d.mts +67 -0
  239. package/dist/ShExC-DJbB19i3.mjs +1181 -0
  240. package/dist/ShExC-DJbB19i3.mjs.map +1 -0
  241. package/dist/ShExError-BeYFD9rv.d.mts +61 -0
  242. package/dist/ShExError-CVtq2NnM.mjs +64 -0
  243. package/dist/ShExError-CVtq2NnM.mjs.map +1 -0
  244. package/dist/ShExJ-C1u_wgyD.d.mts +531 -0
  245. package/dist/ShExJ-COiPd9Xw.mjs +532 -0
  246. package/dist/ShExJ-COiPd9Xw.mjs.map +1 -0
  247. package/dist/ShExR-ByR4mCh-.mjs +480 -0
  248. package/dist/ShExR-ByR4mCh-.mjs.map +1 -0
  249. package/dist/ShExR-CqONNNBz.d.mts +40 -0
  250. package/dist/ShapeMap-C422pxKl.d.mts +140 -0
  251. package/dist/ShapeMap-CsgKxB2G.mjs +181 -0
  252. package/dist/ShapeMap-CsgKxB2G.mjs.map +1 -0
  253. package/dist/Shapes-18GjfyBV.mjs +597 -0
  254. package/dist/Shapes-18GjfyBV.mjs.map +1 -0
  255. package/dist/Shapes-BQFDFc4Q.d.mts +306 -0
  256. package/dist/Sparql-BiYFMSpl.mjs +29 -0
  257. package/dist/Sparql-BiYFMSpl.mjs.map +1 -0
  258. package/dist/Sparql-DecpWTPh.d.mts +97 -0
  259. package/dist/SparqlClient-C_CjXbwj.mjs +333 -0
  260. package/dist/SparqlClient-C_CjXbwj.mjs.map +1 -0
  261. package/dist/SparqlClient-UPc88SHy.d.mts +290 -0
  262. package/dist/SparqlServer-CbUW-pVj.d.mts +71 -0
  263. package/dist/SparqlServer-Db7w7Cll.mjs +308 -0
  264. package/dist/SparqlServer-Db7w7Cll.mjs.map +1 -0
  265. package/dist/SqlStore-BBqFx-Wl.mjs +684 -0
  266. package/dist/SqlStore-BBqFx-Wl.mjs.map +1 -0
  267. package/dist/SqlStore-CCJo5I-e.d.mts +117 -0
  268. package/dist/Store-D0jmVfb3.d.mts +166 -0
  269. package/dist/Store-DH3Ow1GO.mjs +162 -0
  270. package/dist/Store-DH3Ow1GO.mjs.map +1 -0
  271. package/dist/Structure-BjMo4Bkc.mjs +334 -0
  272. package/dist/Structure-BjMo4Bkc.mjs.map +1 -0
  273. package/dist/Structure-n4CmDiab.d.mts +63 -0
  274. package/dist/Table-BGgm9nbM.mjs +538 -0
  275. package/dist/Table-BGgm9nbM.mjs.map +1 -0
  276. package/dist/Table-C3reiVrb.d.mts +261 -0
  277. package/dist/Term-B_4ezyXq.d.mts +619 -0
  278. package/dist/Term-CFLG1qu4.mjs +991 -0
  279. package/dist/Term-CFLG1qu4.mjs.map +1 -0
  280. package/dist/Term.d.mts +2 -0
  281. package/dist/Term.mjs +1 -0
  282. package/dist/TermCodec-CDZiEztW.mjs +397 -0
  283. package/dist/TermCodec-CDZiEztW.mjs.map +1 -0
  284. package/dist/TermCodec-_03bDXr0.d.mts +209 -0
  285. package/dist/TermCodec.d.mts +2 -0
  286. package/dist/TermCodec.mjs +1 -0
  287. package/dist/TermJson-BOPe0yve.d.mts +232 -0
  288. package/dist/TermJson-FAg3lvjl.mjs +142 -0
  289. package/dist/TermJson-FAg3lvjl.mjs.map +1 -0
  290. package/dist/TermJson.d.mts +2 -0
  291. package/dist/TermJson.mjs +1 -0
  292. package/dist/TermSchema-Bn9CoaYA.mjs +30 -0
  293. package/dist/TermSchema-Bn9CoaYA.mjs.map +1 -0
  294. package/dist/TermSchema-DBO6MroX.d.mts +6 -0
  295. package/dist/Testing-B-aPCpmu.mjs +63 -0
  296. package/dist/Testing-B-aPCpmu.mjs.map +1 -0
  297. package/dist/Testing-CF6s8P3O.d.mts +53 -0
  298. package/dist/Tiff-CR-2QeSI.d.mts +148 -0
  299. package/dist/Tiff-DlsOlZPM.mjs +169 -0
  300. package/dist/Tiff-DlsOlZPM.mjs.map +1 -0
  301. package/dist/Tools-7MdRKccr.d.mts +583 -0
  302. package/dist/Tools-ryxphZbI.mjs +329 -0
  303. package/dist/Tools-ryxphZbI.mjs.map +1 -0
  304. package/dist/Translate-B0YKKANS.d.mts +37 -0
  305. package/dist/Translate-gzWPq0Ia.mjs +308 -0
  306. package/dist/Translate-gzWPq0Ia.mjs.map +1 -0
  307. package/dist/Translation-DC9rLm2y.mjs +1535 -0
  308. package/dist/Translation-DC9rLm2y.mjs.map +1 -0
  309. package/dist/Translation-K4L9XBqX.d.mts +103 -0
  310. package/dist/TriG-BkqtqZ6Y.mjs +125 -0
  311. package/dist/TriG-BkqtqZ6Y.mjs.map +1 -0
  312. package/dist/TriG-xDjdDatp.d.mts +86 -0
  313. package/dist/Turtle-Bv1_bisW.d.mts +85 -0
  314. package/dist/Turtle-CZVUOtwl.mjs +133 -0
  315. package/dist/Turtle-CZVUOtwl.mjs.map +1 -0
  316. package/dist/ValidationReport-DBdJshW5.mjs +285 -0
  317. package/dist/ValidationReport-DBdJshW5.mjs.map +1 -0
  318. package/dist/ValidationReport-Dx3WxY0h.d.mts +192 -0
  319. package/dist/Validator-227ff9Rn.d.mts +179 -0
  320. package/dist/Validator-BzXMKDeJ.mjs +1162 -0
  321. package/dist/Validator-BzXMKDeJ.mjs.map +1 -0
  322. package/dist/Validator-Dl8cih5V.d.mts +207 -0
  323. package/dist/Validator-DmUfMbpL.mjs +568 -0
  324. package/dist/Validator-DmUfMbpL.mjs.map +1 -0
  325. package/dist/Vocab-DceKywpq.mjs +168 -0
  326. package/dist/Vocab-DceKywpq.mjs.map +1 -0
  327. package/dist/Vocab-Df-L-IwZ.d.mts +46 -0
  328. package/dist/Vocab-Do56UgBX.d.mts +81 -0
  329. package/dist/Vocab-TfpWG1Ne.mjs +118 -0
  330. package/dist/Vocab-TfpWG1Ne.mjs.map +1 -0
  331. package/dist/Vocab.d.mts +2 -0
  332. package/dist/Vocab.mjs +1 -0
  333. package/dist/Vocabulary-C6-GPOy4.d.mts +22 -0
  334. package/dist/Vocabulary-CnQl-_Z4.mjs +179 -0
  335. package/dist/Vocabulary-CnQl-_Z4.mjs.map +1 -0
  336. package/dist/Xml-B7iihYCS.mjs +976 -0
  337. package/dist/Xml-B7iihYCS.mjs.map +1 -0
  338. package/dist/Xml-CmfHS7SW.d.mts +267 -0
  339. package/dist/Xmp-D7CKA7MZ.d.mts +111 -0
  340. package/dist/Xmp-DCGN9pOD.mjs +307 -0
  341. package/dist/Xmp-DCGN9pOD.mjs.map +1 -0
  342. package/dist/XmpBasic-CP38jpR_.mjs +73 -0
  343. package/dist/XmpBasic-CP38jpR_.mjs.map +1 -0
  344. package/dist/XmpBasic-Cmbe53rQ.d.mts +64 -0
  345. package/dist/XmpMM-BfL_TgJF.mjs +73 -0
  346. package/dist/XmpMM-BfL_TgJF.mjs.map +1 -0
  347. package/dist/XmpMM-Dqm3IX8p.d.mts +63 -0
  348. package/dist/XmpRights-BKPtoI5L.mjs +73 -0
  349. package/dist/XmpRights-BKPtoI5L.mjs.map +1 -0
  350. package/dist/XmpRights-CaALZQz2.d.mts +63 -0
  351. package/dist/Xsd-Cdgx5zRB.mjs +405 -0
  352. package/dist/Xsd-Cdgx5zRB.mjs.map +1 -0
  353. package/dist/Xsd-D2elNhSm.d.mts +187 -0
  354. package/dist/Xsd.d.mts +2 -0
  355. package/dist/Xsd.mjs +1 -0
  356. package/dist/accessors-CEjaojuQ.mjs +28 -0
  357. package/dist/accessors-CEjaojuQ.mjs.map +1 -0
  358. package/dist/codec-Lb2T96rv.d.mts +20 -0
  359. package/dist/codec-QNo7IdJF.mjs +389 -0
  360. package/dist/codec-QNo7IdJF.mjs.map +1 -0
  361. package/dist/csvw/Csv2Json.d.mts +2 -0
  362. package/dist/csvw/Csv2Json.mjs +1 -0
  363. package/dist/csvw/Csv2Rdf.d.mts +2 -0
  364. package/dist/csvw/Csv2Rdf.mjs +1 -0
  365. package/dist/csvw/Datatype.d.mts +2 -0
  366. package/dist/csvw/Datatype.mjs +1 -0
  367. package/dist/csvw/Metadata.d.mts +2 -0
  368. package/dist/csvw/Metadata.mjs +1 -0
  369. package/dist/csvw/Processor.d.mts +2 -0
  370. package/dist/csvw/Processor.mjs +1 -0
  371. package/dist/csvw/Report.d.mts +2 -0
  372. package/dist/csvw/Report.mjs +1 -0
  373. package/dist/csvw/Table.d.mts +2 -0
  374. package/dist/csvw/Table.mjs +1 -0
  375. package/dist/csvw/index.d.mts +8 -0
  376. package/dist/csvw/index.mjs +8 -0
  377. package/dist/index-Cms2TYfC.d.mts +16 -0
  378. package/dist/index-Ct8xFmRs.d.mts +7 -0
  379. package/dist/index-D4QFwOjm.d.mts +28 -0
  380. package/dist/index.d.mts +18 -0
  381. package/dist/index.mjs +17 -0
  382. package/dist/jsonld/DocumentLoader.d.mts +2 -0
  383. package/dist/jsonld/DocumentLoader.mjs +1 -0
  384. package/dist/jsonld/JsonLd.d.mts +2 -0
  385. package/dist/jsonld/JsonLd.mjs +1 -0
  386. package/dist/jsonld/JsonLdError.d.mts +2 -0
  387. package/dist/jsonld/JsonLdError.mjs +1 -0
  388. package/dist/jsonld/index.d.mts +4 -0
  389. package/dist/jsonld/index.mjs +4 -0
  390. package/dist/lists-D-OpQ0Ir.mjs +77 -0
  391. package/dist/lists-D-OpQ0Ir.mjs.map +1 -0
  392. package/dist/loop-D5-gNx9K.mjs +21 -0
  393. package/dist/loop-D5-gNx9K.mjs.map +1 -0
  394. package/dist/loop-DZ2hXlr_.mjs +21 -0
  395. package/dist/loop-DZ2hXlr_.mjs.map +1 -0
  396. package/dist/n3/Isomorphism.d.mts +2 -0
  397. package/dist/n3/Isomorphism.mjs +1 -0
  398. package/dist/n3/Mapping.d.mts +2 -0
  399. package/dist/n3/Mapping.mjs +1 -0
  400. package/dist/n3/Model.d.mts +2 -0
  401. package/dist/n3/Model.mjs +1 -0
  402. package/dist/n3/N3.d.mts +2 -0
  403. package/dist/n3/N3.mjs +1 -0
  404. package/dist/n3/Reasoner.d.mts +2 -0
  405. package/dist/n3/Reasoner.mjs +2 -0
  406. package/dist/n3/Vocab.d.mts +2 -0
  407. package/dist/n3/Vocab.mjs +1 -0
  408. package/dist/n3/index.d.mts +7 -0
  409. package/dist/n3/index.mjs +7 -0
  410. package/dist/ntriples/Grammar.d.mts +2 -0
  411. package/dist/ntriples/Grammar.mjs +1 -0
  412. package/dist/ntriples/Lexical.d.mts +2 -0
  413. package/dist/ntriples/Lexical.mjs +1 -0
  414. package/dist/ntriples/NQuads.d.mts +2 -0
  415. package/dist/ntriples/NQuads.mjs +1 -0
  416. package/dist/ntriples/NTriples.d.mts +2 -0
  417. package/dist/ntriples/NTriples.mjs +1 -0
  418. package/dist/ntriples/index.d.mts +5 -0
  419. package/dist/ntriples/index.mjs +5 -0
  420. package/dist/rdfjson/RdfJson.d.mts +2 -0
  421. package/dist/rdfjson/RdfJson.mjs +1 -0
  422. package/dist/rdfjson/index.d.mts +2 -0
  423. package/dist/rdfjson/index.mjs +1 -0
  424. package/dist/rdfxml/RdfXml.d.mts +2 -0
  425. package/dist/rdfxml/RdfXml.mjs +1 -0
  426. package/dist/rdfxml/Xml.d.mts +2 -0
  427. package/dist/rdfxml/Xml.mjs +1 -0
  428. package/dist/rdfxml/index.d.mts +3 -0
  429. package/dist/rdfxml/index.mjs +3 -0
  430. package/dist/rolldown-runtime-D8jQpDG7.mjs +12 -0
  431. package/dist/serialize-96KBvKaf.mjs +1463 -0
  432. package/dist/serialize-96KBvKaf.mjs.map +1 -0
  433. package/dist/serialize-DsoXdM6n.d.mts +37 -0
  434. package/dist/shacl/Message.d.mts +2 -0
  435. package/dist/shacl/Message.mjs +1 -0
  436. package/dist/shacl/Path.d.mts +2 -0
  437. package/dist/shacl/Path.mjs +1 -0
  438. package/dist/shacl/Shapes.d.mts +2 -0
  439. package/dist/shacl/Shapes.mjs +1 -0
  440. package/dist/shacl/Sparql.d.mts +2 -0
  441. package/dist/shacl/Sparql.mjs +1 -0
  442. package/dist/shacl/ValidationReport.d.mts +2 -0
  443. package/dist/shacl/ValidationReport.mjs +1 -0
  444. package/dist/shacl/Validator.d.mts +2 -0
  445. package/dist/shacl/Validator.mjs +1 -0
  446. package/dist/shacl/Vocabulary.d.mts +2 -0
  447. package/dist/shacl/Vocabulary.mjs +1 -0
  448. package/dist/shacl/index.d.mts +9 -0
  449. package/dist/shacl/index.mjs +8 -0
  450. package/dist/shex/SemAct.d.mts +2 -0
  451. package/dist/shex/SemAct.mjs +1 -0
  452. package/dist/shex/ShExC.d.mts +2 -0
  453. package/dist/shex/ShExC.mjs +1 -0
  454. package/dist/shex/ShExError.d.mts +2 -0
  455. package/dist/shex/ShExError.mjs +1 -0
  456. package/dist/shex/ShExJ.d.mts +2 -0
  457. package/dist/shex/ShExJ.mjs +2 -0
  458. package/dist/shex/ShExR.d.mts +2 -0
  459. package/dist/shex/ShExR.mjs +1 -0
  460. package/dist/shex/ShapeMap.d.mts +2 -0
  461. package/dist/shex/ShapeMap.mjs +1 -0
  462. package/dist/shex/Structure.d.mts +2 -0
  463. package/dist/shex/Structure.mjs +2 -0
  464. package/dist/shex/Validator.d.mts +2 -0
  465. package/dist/shex/Validator.mjs +4 -0
  466. package/dist/shex/index.d.mts +9 -0
  467. package/dist/shex/index.mjs +9 -0
  468. package/dist/sparql/Algebra.d.mts +2 -0
  469. package/dist/sparql/Algebra.mjs +1 -0
  470. package/dist/sparql/Ast.d.mts +2 -0
  471. package/dist/sparql/Ast.mjs +1 -0
  472. package/dist/sparql/Bindings.d.mts +2 -0
  473. package/dist/sparql/Bindings.mjs +1 -0
  474. package/dist/sparql/ClientErrors.d.mts +2 -0
  475. package/dist/sparql/ClientErrors.mjs +1 -0
  476. package/dist/sparql/ClientFormats.d.mts +2 -0
  477. package/dist/sparql/ClientFormats.mjs +1 -0
  478. package/dist/sparql/Engine.d.mts +2 -0
  479. package/dist/sparql/Engine.mjs +1 -0
  480. package/dist/sparql/Errors.d.mts +2 -0
  481. package/dist/sparql/Errors.mjs +1 -0
  482. package/dist/sparql/Expression.d.mts +2 -0
  483. package/dist/sparql/Expression.mjs +1 -0
  484. package/dist/sparql/Federation.d.mts +2 -0
  485. package/dist/sparql/Federation.mjs +1 -0
  486. package/dist/sparql/Functions.d.mts +2 -0
  487. package/dist/sparql/Functions.mjs +1 -0
  488. package/dist/sparql/Generator.d.mts +2 -0
  489. package/dist/sparql/Generator.mjs +1 -0
  490. package/dist/sparql/GraphStore.d.mts +2 -0
  491. package/dist/sparql/GraphStore.mjs +1 -0
  492. package/dist/sparql/Optimizer.d.mts +2 -0
  493. package/dist/sparql/Optimizer.mjs +1 -0
  494. package/dist/sparql/Options.d.mts +2 -0
  495. package/dist/sparql/Options.mjs +1 -0
  496. package/dist/sparql/Parser.d.mts +2 -0
  497. package/dist/sparql/Parser.mjs +1 -0
  498. package/dist/sparql/Protocol.d.mts +2 -0
  499. package/dist/sparql/Protocol.mjs +1 -0
  500. package/dist/sparql/ProtocolErrors.d.mts +2 -0
  501. package/dist/sparql/ProtocolErrors.mjs +1 -0
  502. package/dist/sparql/QueryBuilder.d.mts +2 -0
  503. package/dist/sparql/QueryBuilder.mjs +1 -0
  504. package/dist/sparql/Results.d.mts +2 -0
  505. package/dist/sparql/Results.mjs +1 -0
  506. package/dist/sparql/ResultsStream.d.mts +2 -0
  507. package/dist/sparql/ResultsStream.mjs +1 -0
  508. package/dist/sparql/ServerFormats.d.mts +2 -0
  509. package/dist/sparql/ServerFormats.mjs +1 -0
  510. package/dist/sparql/ServiceDescription.d.mts +2 -0
  511. package/dist/sparql/ServiceDescription.mjs +1 -0
  512. package/dist/sparql/SparqlClient.d.mts +2 -0
  513. package/dist/sparql/SparqlClient.mjs +1 -0
  514. package/dist/sparql/SparqlServer.d.mts +2 -0
  515. package/dist/sparql/SparqlServer.mjs +1 -0
  516. package/dist/sparql/Store.d.mts +2 -0
  517. package/dist/sparql/Store.mjs +1 -0
  518. package/dist/sparql/TermSchema.d.mts +3 -0
  519. package/dist/sparql/TermSchema.mjs +2 -0
  520. package/dist/sparql/Testing.d.mts +2 -0
  521. package/dist/sparql/Testing.mjs +1 -0
  522. package/dist/sparql/Translate.d.mts +2 -0
  523. package/dist/sparql/Translate.mjs +1 -0
  524. package/dist/sparql/ai/Mcp.d.mts +2 -0
  525. package/dist/sparql/ai/Mcp.mjs +1 -0
  526. package/dist/sparql/ai/Tools.d.mts +2 -0
  527. package/dist/sparql/ai/Tools.mjs +1 -0
  528. package/dist/sparql/ai/index.d.mts +3 -0
  529. package/dist/sparql/ai/index.mjs +3 -0
  530. package/dist/sparql/index.d.mts +30 -0
  531. package/dist/sparql/index.mjs +29 -0
  532. package/dist/sparql/shacl/Evaluator.d.mts +2 -0
  533. package/dist/sparql/shacl/Evaluator.mjs +1 -0
  534. package/dist/sparql/shacl/Query.d.mts +2 -0
  535. package/dist/sparql/shacl/Query.mjs +1 -0
  536. package/dist/sparql/shacl/index.d.mts +3 -0
  537. package/dist/sparql/shacl/index.mjs +3 -0
  538. package/dist/sparql/sql/Dialect.d.mts +2 -0
  539. package/dist/sparql/sql/Dialect.mjs +1 -0
  540. package/dist/sparql/sql/SqlStore.d.mts +2 -0
  541. package/dist/sparql/sql/SqlStore.mjs +1 -0
  542. package/dist/sparql/sql/Translation.d.mts +2 -0
  543. package/dist/sparql/sql/Translation.mjs +1 -0
  544. package/dist/sparql/sql/index.d.mts +4 -0
  545. package/dist/sparql/sql/index.mjs +4 -0
  546. package/dist/stringMap-D5YIpYtR.mjs +38 -0
  547. package/dist/stringMap-D5YIpYtR.mjs.map +1 -0
  548. package/dist/tokens-C6BzeodQ.mjs +24 -0
  549. package/dist/tokens-C6BzeodQ.mjs.map +1 -0
  550. package/dist/turtle/Grammar.d.mts +3 -0
  551. package/dist/turtle/Grammar.mjs +3 -0
  552. package/dist/turtle/Manifest.d.mts +2 -0
  553. package/dist/turtle/Manifest.mjs +1 -0
  554. package/dist/turtle/TriG.d.mts +2 -0
  555. package/dist/turtle/TriG.mjs +1 -0
  556. package/dist/turtle/Turtle.d.mts +2 -0
  557. package/dist/turtle/Turtle.mjs +1 -0
  558. package/dist/turtle/index.d.mts +5 -0
  559. package/dist/turtle/index.mjs +5 -0
  560. package/dist/xmp/DublinCore.d.mts +2 -0
  561. package/dist/xmp/DublinCore.mjs +1 -0
  562. package/dist/xmp/Exif.d.mts +2 -0
  563. package/dist/xmp/Exif.mjs +1 -0
  564. package/dist/xmp/Extract.d.mts +2 -0
  565. package/dist/xmp/Extract.mjs +1 -0
  566. package/dist/xmp/Metadata.d.mts +2 -0
  567. package/dist/xmp/Metadata.mjs +1 -0
  568. package/dist/xmp/Namespaces.d.mts +2 -0
  569. package/dist/xmp/Namespaces.mjs +1 -0
  570. package/dist/xmp/Packet.d.mts +2 -0
  571. package/dist/xmp/Packet.mjs +1 -0
  572. package/dist/xmp/Pdf.d.mts +2 -0
  573. package/dist/xmp/Pdf.mjs +1 -0
  574. package/dist/xmp/PdfA.d.mts +2 -0
  575. package/dist/xmp/PdfA.mjs +1 -0
  576. package/dist/xmp/Photoshop.d.mts +2 -0
  577. package/dist/xmp/Photoshop.mjs +1 -0
  578. package/dist/xmp/Tiff.d.mts +2 -0
  579. package/dist/xmp/Tiff.mjs +1 -0
  580. package/dist/xmp/Xmp.d.mts +2 -0
  581. package/dist/xmp/Xmp.mjs +3 -0
  582. package/dist/xmp/XmpBasic.d.mts +2 -0
  583. package/dist/xmp/XmpBasic.mjs +1 -0
  584. package/dist/xmp/XmpMM.d.mts +2 -0
  585. package/dist/xmp/XmpMM.mjs +1 -0
  586. package/dist/xmp/XmpRights.d.mts +2 -0
  587. package/dist/xmp/XmpRights.mjs +1 -0
  588. package/dist/xmp/index.d.mts +15 -0
  589. package/dist/xmp/index.mjs +15 -0
  590. package/package.json +195 -3
  591. package/src/Dataset.ts +1085 -0
  592. package/src/Iri.ts +322 -0
  593. package/src/Isomorphism.ts +319 -0
  594. package/src/LanguageTag.ts +98 -0
  595. package/src/Namespace.ts +100 -0
  596. package/src/PrefixMap.ts +117 -0
  597. package/src/RdfJs.ts +146 -0
  598. package/src/Rdfs.ts +241 -0
  599. package/src/Reification.ts +103 -0
  600. package/src/Resource.ts +873 -0
  601. package/src/Serialization.ts +775 -0
  602. package/src/Term.ts +1300 -0
  603. package/src/TermCodec.ts +505 -0
  604. package/src/TermJson.ts +313 -0
  605. package/src/Vocab.ts +161 -0
  606. package/src/Xsd.ts +573 -0
  607. package/src/csvw/Csv2Json.ts +265 -0
  608. package/src/csvw/Csv2Rdf.ts +268 -0
  609. package/src/csvw/Datatype.ts +589 -0
  610. package/src/csvw/Metadata.ts +1523 -0
  611. package/src/csvw/Processor.ts +276 -0
  612. package/src/csvw/Report.ts +135 -0
  613. package/src/csvw/Table.ts +759 -0
  614. package/src/csvw/index.ts +22 -0
  615. package/src/csvw/internal/dateFormat.ts +202 -0
  616. package/src/csvw/internal/json.ts +104 -0
  617. package/src/csvw/internal/numberFormat.ts +369 -0
  618. package/src/csvw/internal/object.ts +23 -0
  619. package/src/csvw/internal/uriTemplate.ts +130 -0
  620. package/src/csvw/internal/url.ts +93 -0
  621. package/src/csvw/internal/vocab.ts +282 -0
  622. package/src/index.ts +40 -0
  623. package/src/internal/arbitrary.ts +148 -0
  624. package/src/internal/loop.ts +24 -0
  625. package/src/internal/pending.ts +20 -0
  626. package/src/internal/textDecoder.ts +183 -0
  627. package/src/jsonld/DocumentLoader.ts +512 -0
  628. package/src/jsonld/JsonLd.ts +847 -0
  629. package/src/jsonld/JsonLdError.ts +105 -0
  630. package/src/jsonld/index.ts +13 -0
  631. package/src/jsonld/internal/compact.ts +852 -0
  632. package/src/jsonld/internal/context.ts +781 -0
  633. package/src/jsonld/internal/expand.ts +614 -0
  634. package/src/jsonld/internal/flatten.ts +243 -0
  635. package/src/jsonld/internal/frame.ts +559 -0
  636. package/src/jsonld/internal/iri.ts +52 -0
  637. package/src/jsonld/internal/json.ts +19 -0
  638. package/src/jsonld/internal/linkHeader.ts +60 -0
  639. package/src/jsonld/internal/rdf.ts +481 -0
  640. package/src/jsonld/internal/util.ts +367 -0
  641. package/src/n3/Isomorphism.ts +476 -0
  642. package/src/n3/Mapping.ts +332 -0
  643. package/src/n3/Model.ts +696 -0
  644. package/src/n3/N3.ts +237 -0
  645. package/src/n3/Reasoner.ts +568 -0
  646. package/src/n3/Vocab.ts +111 -0
  647. package/src/n3/index.ts +21 -0
  648. package/src/n3/internal/builtins.ts +668 -0
  649. package/src/n3/internal/guards.ts +23 -0
  650. package/src/n3/internal/lists.ts +106 -0
  651. package/src/n3/internal/loop.ts +28 -0
  652. package/src/n3/internal/parser.ts +1032 -0
  653. package/src/n3/internal/writer.ts +344 -0
  654. package/src/ntriples/Grammar.ts +317 -0
  655. package/src/ntriples/Lexical.ts +321 -0
  656. package/src/ntriples/NQuads.ts +140 -0
  657. package/src/ntriples/NTriples.ts +143 -0
  658. package/src/ntriples/index.ts +14 -0
  659. package/src/ntriples/internal/codec.ts +229 -0
  660. package/src/ntriples/internal/lineParser.ts +326 -0
  661. package/src/ntriples/internal/loop.ts +14 -0
  662. package/src/rdfjson/RdfJson.ts +806 -0
  663. package/src/rdfjson/index.ts +9 -0
  664. package/src/rdfjson/internal/json.ts +19 -0
  665. package/src/rdfxml/RdfXml.ts +1408 -0
  666. package/src/rdfxml/Xml.ts +419 -0
  667. package/src/rdfxml/index.ts +11 -0
  668. package/src/rdfxml/internal/chars.ts +73 -0
  669. package/src/rdfxml/internal/loop.ts +24 -0
  670. package/src/rdfxml/internal/parser.ts +1265 -0
  671. package/src/shacl/Message.ts +102 -0
  672. package/src/shacl/Path.ts +483 -0
  673. package/src/shacl/Shapes.ts +913 -0
  674. package/src/shacl/Sparql.ts +128 -0
  675. package/src/shacl/ValidationReport.ts +438 -0
  676. package/src/shacl/Validator.ts +1156 -0
  677. package/src/shacl/Vocabulary.ts +180 -0
  678. package/src/shacl/index.ts +22 -0
  679. package/src/shacl/internal/compare.ts +128 -0
  680. package/src/shacl/internal/regex.ts +56 -0
  681. package/src/shex/SemAct.ts +197 -0
  682. package/src/shex/ShExC.ts +415 -0
  683. package/src/shex/ShExError.ts +71 -0
  684. package/src/shex/ShExJ.ts +893 -0
  685. package/src/shex/ShExR.ts +640 -0
  686. package/src/shex/ShapeMap.ts +385 -0
  687. package/src/shex/Structure.ts +467 -0
  688. package/src/shex/Validator.ts +395 -0
  689. package/src/shex/index.ts +24 -0
  690. package/src/shex/internal/engine.ts +682 -0
  691. package/src/shex/internal/iterate.ts +14 -0
  692. package/src/shex/internal/json.ts +12 -0
  693. package/src/shex/internal/lexer.ts +56 -0
  694. package/src/shex/internal/nodeConstraint.ts +368 -0
  695. package/src/shex/internal/shexcLexer.ts +387 -0
  696. package/src/shex/internal/shexcParser.ts +1312 -0
  697. package/src/shex/internal/tokens.ts +41 -0
  698. package/src/shex/internal/xpathRegex.ts +290 -0
  699. package/src/sparql/Algebra.ts +914 -0
  700. package/src/sparql/Ast.ts +1344 -0
  701. package/src/sparql/Bindings.ts +272 -0
  702. package/src/sparql/ClientErrors.ts +156 -0
  703. package/src/sparql/ClientFormats.ts +70 -0
  704. package/src/sparql/Engine.ts +699 -0
  705. package/src/sparql/Errors.ts +30 -0
  706. package/src/sparql/Expression.ts +360 -0
  707. package/src/sparql/Federation.ts +187 -0
  708. package/src/sparql/Functions.ts +689 -0
  709. package/src/sparql/Generator.ts +426 -0
  710. package/src/sparql/GraphStore.ts +341 -0
  711. package/src/sparql/Optimizer.ts +230 -0
  712. package/src/sparql/Options.ts +191 -0
  713. package/src/sparql/Parser.ts +173 -0
  714. package/src/sparql/Protocol.ts +342 -0
  715. package/src/sparql/ProtocolErrors.ts +113 -0
  716. package/src/sparql/QueryBuilder.ts +953 -0
  717. package/src/sparql/Results.ts +844 -0
  718. package/src/sparql/ResultsStream.ts +771 -0
  719. package/src/sparql/ServerFormats.ts +75 -0
  720. package/src/sparql/ServiceDescription.ts +130 -0
  721. package/src/sparql/SparqlClient.ts +947 -0
  722. package/src/sparql/SparqlServer.ts +528 -0
  723. package/src/sparql/Store.ts +311 -0
  724. package/src/sparql/TermSchema.ts +20 -0
  725. package/src/sparql/Testing.ts +114 -0
  726. package/src/sparql/Translate.ts +407 -0
  727. package/src/sparql/ai/Mcp.ts +43 -0
  728. package/src/sparql/ai/Tools.ts +481 -0
  729. package/src/sparql/ai/index.ts +11 -0
  730. package/src/sparql/index.ts +64 -0
  731. package/src/sparql/internal/evaluator.ts +947 -0
  732. package/src/sparql/internal/hash.ts +418 -0
  733. package/src/sparql/internal/json.ts +12 -0
  734. package/src/sparql/internal/lexer.ts +488 -0
  735. package/src/sparql/internal/loop.ts +24 -0
  736. package/src/sparql/internal/parser.ts +2215 -0
  737. package/src/sparql/internal/prefetch.ts +46 -0
  738. package/src/sparql/internal/stringMap.ts +39 -0
  739. package/src/sparql/internal/textResults.ts +226 -0
  740. package/src/sparql/internal/values.ts +550 -0
  741. package/src/sparql/shacl/Evaluator.ts +478 -0
  742. package/src/sparql/shacl/Query.ts +574 -0
  743. package/src/sparql/shacl/index.ts +12 -0
  744. package/src/sparql/sql/Dialect.ts +246 -0
  745. package/src/sparql/sql/SqlStore.ts +1080 -0
  746. package/src/sparql/sql/Translation.ts +1898 -0
  747. package/src/sparql/sql/index.ts +17 -0
  748. package/src/sparql/sql/internal/encoding.ts +313 -0
  749. package/src/turtle/Grammar.ts +286 -0
  750. package/src/turtle/Manifest.ts +215 -0
  751. package/src/turtle/TriG.ts +158 -0
  752. package/src/turtle/Turtle.ts +166 -0
  753. package/src/turtle/index.ts +14 -0
  754. package/src/turtle/internal/loop.ts +23 -0
  755. package/src/turtle/internal/parse.ts +112 -0
  756. package/src/turtle/internal/parser.ts +1303 -0
  757. package/src/turtle/internal/serialize.ts +79 -0
  758. package/src/turtle/internal/streamWriter.ts +128 -0
  759. package/src/turtle/internal/writer.ts +898 -0
  760. package/src/xmp/DublinCore.ts +147 -0
  761. package/src/xmp/Exif.ts +109 -0
  762. package/src/xmp/Extract.ts +351 -0
  763. package/src/xmp/Metadata.ts +703 -0
  764. package/src/xmp/Namespaces.ts +228 -0
  765. package/src/xmp/Packet.ts +297 -0
  766. package/src/xmp/Pdf.ts +99 -0
  767. package/src/xmp/PdfA.ts +280 -0
  768. package/src/xmp/Photoshop.ts +275 -0
  769. package/src/xmp/Tiff.ts +196 -0
  770. package/src/xmp/Xmp.ts +430 -0
  771. package/src/xmp/XmpBasic.ts +90 -0
  772. package/src/xmp/XmpMM.ts +82 -0
  773. package/src/xmp/XmpRights.ts +83 -0
  774. package/src/xmp/index.ts +36 -0
  775. package/src/xmp/internal/accessors.ts +72 -0
  776. package/src/xmp/internal/xml.ts +63 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Functions-AvjNcId_.mjs","names":["Term.namedNode","Term.Literal","Term.isLiteral","Xsd.isNumericDatatype","Xsd.isValidLexical","Xsd.toValue","Xsd.canonicalDecimal","Xsd.canonicalDouble","StringMap.setOf","Xsd.isKnownDatatype","Term.isTriple","Xsd.isWellFormed","Term.isBlankNode","Term.isNamedNode","V.fail","StringMap.fromEntries","Term.isLiteral","V.isStringLiteral","V.isSimpleString","Term.Literal","V.requireNum","V.numLiteral","StringMap.empty","Xsd.isValidLexical","V.simple","V.stringLike","Term.isNamedNode","Term.namedNode","Iri.resolve","V.bool","V.toNumber","Hash.md5","Hash.sha1","Hash.sha256","Hash.sha384","Hash.sha512","Term.literal","Term.isBlankNode","V.isNumeric","Term.isTriple","Term.triple","V.XSD","StringMap.setOf","Xsd.canonicalDouble","numeric","V.numeric","Xsd.canonicalDecimal","V.ebv","V.toDecimal","Term.XSD_STRING"],"sources":["../src/sparql/internal/hash.ts","../src/sparql/internal/values.ts","../src/sparql/Functions.ts"],"sourcesContent":["/**\n * Pure, synchronous implementations of MD5, SHA-1, SHA-256, SHA-384 and\n * SHA-512 over UTF-8 strings, returning lower-case hex digests.\n *\n * @internal\n */\n\nconst utf8 = (s: string): Uint8Array => new TextEncoder().encode(s);\n\nconst hex = (bytes: Uint8Array): string =>\n Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');\n\n/** `0 … n - 1`. */\nconst range = (n: number): ReadonlyArray<number> => Array.from({ length: n }, (_, i) => i);\n\n/** The offsets of the `blockSize`-byte blocks of a padded message. */\nconst blocks = (m: Uint8Array, blockSize: number): ReadonlyArray<number> =>\n range(m.length / blockSize).map((b) => b * blockSize);\n\nconst pad = (msg: Uint8Array, blockSize: number, lengthBytes: number, littleEndian: boolean) => {\n const bitLen = BigInt(msg.length) * 8n;\n const total = Math.ceil((msg.length + 1 + lengthBytes) / blockSize) * blockSize;\n const out = new Uint8Array(total);\n out.set(msg);\n out[msg.length] = 0x80;\n range(lengthBytes).forEach((i) => {\n const byte = Number((bitLen >> BigInt(8 * i)) & 0xffn);\n if (littleEndian) out[total - lengthBytes + i] = byte;\n else out[total - 1 - i] = byte;\n });\n return out;\n};\n\nconst rotl = (x: number, n: number) => (x << n) | (x >>> (32 - n));\nconst rotr = (x: number, n: number) => (x >>> n) | (x << (32 - n));\n\n/** Big-endian 32-bit words of a digest, as hex. */\nconst hexWords = (words: ReadonlyArray<number>): string =>\n words.map((x) => (x >>> 0).toString(16).padStart(8, '0')).join('');\n\n// --- MD5 ---------------------------------------------------------------------\n\nconst MD5_S = [\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14,\n 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6,\n 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21,\n];\n\n/** One MD5 step: its index, constant, shift and message word. */\ninterface Md5Step {\n readonly i: number;\n readonly k: number;\n readonly s: number;\n readonly g: number;\n}\n\nconst MD5_STEPS: ReadonlyArray<Md5Step> = MD5_S.map((s, i) => ({\n i,\n k: Math.floor(Math.abs(Math.sin(i + 1)) * 2 ** 32) | 0,\n s,\n g: i < 16 ? i : i < 32 ? (5 * i + 1) % 16 : i < 48 ? (3 * i + 5) % 16 : (7 * i) % 16,\n}));\n\nexport const md5 = (input: string): string => {\n const m = pad(utf8(input), 64, 8, true);\n let a0 = 0x67452301;\n let b0 = 0xefcdab89 | 0;\n let c0 = 0x98badcfe | 0;\n let d0 = 0x10325476;\n const view = new DataView(m.buffer);\n blocks(m, 64).forEach((off) => {\n let a = a0;\n let b = b0;\n let c = c0;\n let d = d0;\n MD5_STEPS.forEach(({ i, k, s, g }) => {\n const f =\n i < 16\n ? (b & c) | (~b & d)\n : i < 32\n ? (d & b) | (~d & c)\n : i < 48\n ? b ^ c ^ d\n : c ^ (b | ~d);\n const tmp = d;\n d = c;\n c = b;\n b = (b + rotl((a + f + k + (view.getUint32(off + g * 4, true) | 0)) | 0, s)) | 0;\n a = tmp;\n });\n a0 = (a0 + a) | 0;\n b0 = (b0 + b) | 0;\n c0 = (c0 + c) | 0;\n d0 = (d0 + d) | 0;\n });\n const out = new DataView(new ArrayBuffer(16));\n [a0, b0, c0, d0].forEach((x, i) => out.setUint32(i * 4, x >>> 0, true));\n return hex(new Uint8Array(out.buffer));\n};\n\n// --- SHA-1 -------------------------------------------------------------------\n\nconst ROUNDS_16 = range(16);\nconst SCHEDULE_80 = range(80).slice(16);\nconst SCHEDULE_64 = range(64).slice(16);\nconst SHA1_ROUNDS = range(80);\n\nexport const sha1 = (input: string): string => {\n const m = pad(utf8(input), 64, 8, false);\n let h0 = 0x67452301;\n let h1 = 0xefcdab89 | 0;\n let h2 = 0x98badcfe | 0;\n let h3 = 0x10325476;\n let h4 = 0xc3d2e1f0 | 0;\n const view = new DataView(m.buffer);\n // The message schedule, 80 words.\n const w = new DataView(new ArrayBuffer(80 * 4));\n const word = (i: number) => w.getInt32(i * 4);\n blocks(m, 64).forEach((off) => {\n ROUNDS_16.forEach((i) => w.setInt32(i * 4, view.getUint32(off + i * 4) | 0));\n SCHEDULE_80.forEach((i) =>\n w.setInt32(i * 4, rotl(word(i - 3) ^ word(i - 8) ^ word(i - 14) ^ word(i - 16), 1)),\n );\n let a = h0;\n let b = h1;\n let c = h2;\n let d = h3;\n let e = h4;\n SHA1_ROUNDS.forEach((i) => {\n const f =\n i < 20\n ? (b & c) | (~b & d)\n : i < 40\n ? b ^ c ^ d\n : i < 60\n ? (b & c) | (b & d) | (c & d)\n : b ^ c ^ d;\n const k =\n i < 20 ? 0x5a827999 : i < 40 ? 0x6ed9eba1 : i < 60 ? 0x8f1bbcdc | 0 : 0xca62c1d6 | 0;\n const t = (rotl(a, 5) + f + e + k + word(i)) | 0;\n e = d;\n d = c;\n c = rotl(b, 30);\n b = a;\n a = t;\n });\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n });\n return hexWords([h0, h1, h2, h3, h4]);\n};\n\n// --- SHA-256 -----------------------------------------------------------------\n\nconst K256 = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n].map((x) => x | 0);\n\nexport const sha256 = (input: string): string => {\n const m = pad(utf8(input), 64, 8, false);\n let h0 = 0x6a09e667;\n let h1 = 0xbb67ae85 | 0;\n let h2 = 0x3c6ef372;\n let h3 = 0xa54ff53a | 0;\n let h4 = 0x510e527f;\n let h5 = 0x9b05688c | 0;\n let h6 = 0x1f83d9ab;\n let h7 = 0x5be0cd19;\n const view = new DataView(m.buffer);\n // The message schedule, 64 words.\n const w = new DataView(new ArrayBuffer(64 * 4));\n const word = (i: number) => w.getInt32(i * 4);\n blocks(m, 64).forEach((off) => {\n ROUNDS_16.forEach((i) => w.setInt32(i * 4, view.getUint32(off + i * 4) | 0));\n SCHEDULE_64.forEach((i) => {\n const x = word(i - 15);\n const y = word(i - 2);\n const s0 = rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\n const s1 = rotr(y, 17) ^ rotr(y, 19) ^ (y >>> 10);\n w.setInt32(i * 4, (word(i - 16) + s0 + word(i - 7) + s1) | 0);\n });\n let a = h0;\n let b = h1;\n let c = h2;\n let d = h3;\n let e = h4;\n let f = h5;\n let g = h6;\n let hh = h7;\n K256.forEach((k, i) => {\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25);\n const ch = (e & f) ^ (~e & g);\n const t1 = (hh + S1 + ch + k + word(i)) | 0;\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22);\n const maj = (a & b) ^ (a & c) ^ (b & c);\n const t2 = (S0 + maj) | 0;\n hh = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n });\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + hh) | 0;\n });\n return hexWords([h0, h1, h2, h3, h4, h5, h6, h7]);\n};\n\n// --- SHA-512 / SHA-384 (BigInt based) -------------------------------------------\n\nconst K512 = [\n '428a2f98d728ae22',\n '7137449123ef65cd',\n 'b5c0fbcfec4d3b2f',\n 'e9b5dba58189dbbc',\n '3956c25bf348b538',\n '59f111f1b605d019',\n '923f82a4af194f9b',\n 'ab1c5ed5da6d8118',\n 'd807aa98a3030242',\n '12835b0145706fbe',\n '243185be4ee4b28c',\n '550c7dc3d5ffb4e2',\n '72be5d74f27b896f',\n '80deb1fe3b1696b1',\n '9bdc06a725c71235',\n 'c19bf174cf692694',\n 'e49b69c19ef14ad2',\n 'efbe4786384f25e3',\n '0fc19dc68b8cd5b5',\n '240ca1cc77ac9c65',\n '2de92c6f592b0275',\n '4a7484aa6ea6e483',\n '5cb0a9dcbd41fbd4',\n '76f988da831153b5',\n '983e5152ee66dfab',\n 'a831c66d2db43210',\n 'b00327c898fb213f',\n 'bf597fc7beef0ee4',\n 'c6e00bf33da88fc2',\n 'd5a79147930aa725',\n '06ca6351e003826f',\n '142929670a0e6e70',\n '27b70a8546d22ffc',\n '2e1b21385c26c926',\n '4d2c6dfc5ac42aed',\n '53380d139d95b3df',\n '650a73548baf63de',\n '766a0abb3c77b2a8',\n '81c2c92e47edaee6',\n '92722c851482353b',\n 'a2bfe8a14cf10364',\n 'a81a664bbc423001',\n 'c24b8b70d0f89791',\n 'c76c51a30654be30',\n 'd192e819d6ef5218',\n 'd69906245565a910',\n 'f40e35855771202a',\n '106aa07032bbd1b8',\n '19a4c116b8d2d0c8',\n '1e376c085141ab53',\n '2748774cdf8eeb99',\n '34b0bcb5e19b48a8',\n '391c0cb3c5c95a63',\n '4ed8aa4ae3418acb',\n '5b9cca4f7763e373',\n '682e6ff3d6b2b8a3',\n '748f82ee5defb2fc',\n '78a5636f43172f60',\n '84c87814a1f0ab72',\n '8cc702081a6439ec',\n '90befffa23631e28',\n 'a4506cebde82bde9',\n 'bef9a3f7b2c67915',\n 'c67178f2e372532b',\n 'ca273eceea26619c',\n 'd186b8c721c0c207',\n 'eada7dd6cde0eb1e',\n 'f57d4f7fee6ed178',\n '06f067aa72176fba',\n '0a637dc5a2c898a6',\n '113f9804bef90dae',\n '1b710b35131c471b',\n '28db77f523047d84',\n '32caab7b40c72493',\n '3c9ebe0a15c9bebc',\n '431d67c49c100d4c',\n '4cc5d4becb3e42b6',\n '597f299cfc657e2a',\n '5fcb6fab3ad6faec',\n '6c44198c4a475817',\n].map((h) => BigInt(`0x${h}`));\n\nconst MASK64 = (1n << 64n) - 1n;\nconst rotr64 = (x: bigint, n: bigint) => ((x >> n) | (x << (64n - n))) & MASK64;\n\nconst SCHEDULE_512 = range(80).slice(16);\n\n/** The eight 64-bit words of a SHA-512 state. */\ntype State512 = readonly [bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint];\n\nconst sha512core = (input: string, init: State512, outWords: number): string => {\n const m = pad(utf8(input), 128, 16, false);\n let h = init;\n const view = new DataView(m.buffer);\n // The message schedule, 80 words.\n const w = new DataView(new ArrayBuffer(80 * 8));\n const word = (i: number) => w.getBigUint64(i * 8);\n blocks(m, 128).forEach((off) => {\n ROUNDS_16.forEach((i) => w.setBigUint64(i * 8, view.getBigUint64(off + i * 8)));\n SCHEDULE_512.forEach((i) => {\n const x = word(i - 15);\n const y = word(i - 2);\n const s0 = rotr64(x, 1n) ^ rotr64(x, 8n) ^ (x >> 7n);\n const s1 = rotr64(y, 19n) ^ rotr64(y, 61n) ^ (y >> 6n);\n w.setBigUint64(i * 8, (word(i - 16) + s0 + word(i - 7) + s1) & MASK64);\n });\n let [a, b, c, d, e, f, g, hh] = h;\n K512.forEach((k, i) => {\n const S1 = rotr64(e, 14n) ^ rotr64(e, 18n) ^ rotr64(e, 41n);\n const ch = (e & f) ^ (~e & MASK64 & g);\n const t1 = (hh + S1 + ch + k + word(i)) & MASK64;\n const S0 = rotr64(a, 28n) ^ rotr64(a, 34n) ^ rotr64(a, 39n);\n const maj = (a & b) ^ (a & c) ^ (b & c);\n const t2 = (S0 + maj) & MASK64;\n hh = g;\n g = f;\n f = e;\n e = (d + t1) & MASK64;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) & MASK64;\n });\n const [h0, h1, h2, h3, h4, h5, h6, h7] = h;\n h = [\n (h0 + a) & MASK64,\n (h1 + b) & MASK64,\n (h2 + c) & MASK64,\n (h3 + d) & MASK64,\n (h4 + e) & MASK64,\n (h5 + f) & MASK64,\n (h6 + g) & MASK64,\n (h7 + hh) & MASK64,\n ];\n });\n return h\n .slice(0, outWords)\n .map((x) => x.toString(16).padStart(16, '0'))\n .join('');\n};\n\nconst big = (x: string): bigint => BigInt(`0x${x}`);\n\n/** A SHA-512 initial state, from its hex words. */\nconst state512 = (\n ...[a, b, c, d, e, f, g, h]: readonly [\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n ]\n): State512 => [big(a), big(b), big(c), big(d), big(e), big(f), big(g), big(h)];\n\nexport const sha512 = (input: string): string =>\n sha512core(\n input,\n state512(\n '6a09e667f3bcc908',\n 'bb67ae8584caa73b',\n '3c6ef372fe94f82b',\n 'a54ff53a5f1d36f1',\n '510e527fade682d1',\n '9b05688c2b3e6c1f',\n '1f83d9abfb41bd6b',\n '5be0cd19137e2179',\n ),\n 8,\n );\n\nexport const sha384 = (input: string): string =>\n sha512core(\n input,\n state512(\n 'cbbb9d5dc1059ed8',\n '629a292a367cd507',\n '9159015a3070dd17',\n '152fecd8f70e5939',\n '67332667ffc00b31',\n '8eb44a8768581511',\n 'db0c2e0d64f98fa7',\n '47b5481dbefa4fa4',\n ),\n 6,\n );\n","/**\n * Value-level helpers for expression evaluation: numeric type promotion and\n * arithmetic, comparisons, effective boolean value and the ORDER BY term\n * ordering.\n *\n * Errors are signalled by throwing `EvalFailure` (a cheap, stack-less\n * object); the public API converts them to `ExpressionError`s.\n *\n * @internal\n */\nimport * as BigDecimal from 'effect/BigDecimal';\nimport * as Option from 'effect/Option';\nimport * as Predicate from 'effect/Predicate';\nimport * as Result from 'effect/Result';\nimport * as Str from 'effect/String';\nimport * as Term from '../../Term.ts';\nimport * as Xsd from '../../Xsd.ts';\nimport { loop } from './loop.ts';\nimport * as StringMap from './stringMap.ts';\n\nexport const XSD = 'http://www.w3.org/2001/XMLSchema#';\nexport const RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';\n\n/** A thrown expression evaluation error. */\nexport class EvalFailure {\n readonly message: string;\n constructor(message: string) {\n this.message = message;\n }\n}\n\n/**\n * Runs `f`, returning a thrown `EvalFailure` (an expression error) as the\n * failure; any other exception is a defect and propagates.\n */\nexport const catchEvalFailure = <A>(f: () => A): Result.Result<A, EvalFailure> =>\n Result.try({\n try: f,\n catch: (cause) => {\n if (cause instanceof EvalFailure) return cause;\n throw cause;\n },\n });\n\nexport const fail = (message: string): never => {\n throw new EvalFailure(message);\n};\n\nexport const dt = {\n string: Term.namedNode(`${XSD}string`),\n boolean: Term.namedNode(`${XSD}boolean`),\n integer: Term.namedNode(`${XSD}integer`),\n decimal: Term.namedNode(`${XSD}decimal`),\n float: Term.namedNode(`${XSD}float`),\n double: Term.namedNode(`${XSD}double`),\n dateTime: Term.namedNode(`${XSD}dateTime`),\n dayTimeDuration: Term.namedNode(`${XSD}dayTimeDuration`),\n langString: Term.namedNode(`${RDF}langString`),\n dirLangString: Term.namedNode(`${RDF}dirLangString`),\n} as const;\n\nexport const TRUE = new Term.Literal('true', dt.boolean);\nexport const FALSE = new Term.Literal('false', dt.boolean);\nexport const bool = (b: boolean): Term.Literal => (b ? TRUE : FALSE);\n\n// -----------------------------------------------------------------------------\n// Literal kinds\n// -----------------------------------------------------------------------------\n\nexport const isLiteral = (t: Term.Term): t is Term.Literal => Term.isLiteral(t);\n\n/** A simple literal or `xsd:string` (no language tag). */\nexport const isSimpleString = (t: Term.Term): t is Term.Literal =>\n Term.isLiteral(t) && t.language === '' && t.datatype.value === Term.XSD_STRING;\n\n/** A string literal: simple, `xsd:string` or language-tagged. */\nexport const isStringLiteral = (t: Term.Term): t is Term.Literal =>\n Term.isLiteral(t) && (t.language !== '' || t.datatype.value === Term.XSD_STRING);\n\nexport const stringLike = (value: string, like: Term.Literal): Term.Literal =>\n like.language === ''\n ? new Term.Literal(value, dt.string)\n : like.direction === undefined\n ? new Term.Literal(value, dt.langString, like.language)\n : new Term.Literal(value, dt.dirLangString, like.language, like.direction);\n\nexport const simple = (value: string): Term.Literal => new Term.Literal(value, dt.string);\n\n// -----------------------------------------------------------------------------\n// Numerics\n// -----------------------------------------------------------------------------\n\nexport type Num =\n | { readonly kind: 0; readonly v: bigint }\n | { readonly kind: 1; readonly v: BigDecimal.BigDecimal }\n | { readonly kind: 2; readonly v: number }\n | { readonly kind: 3; readonly v: number };\n\nexport const INTEGER = 0;\nexport const DECIMAL = 1;\nexport const FLOAT = 2;\nexport const DOUBLE = 3;\n\n/** The numeric value of each literal met, `None` for a non-numeric one. */\nconst numCache = new WeakMap<Term.Literal, Option.Option<Num>>();\n\nconst numOfValue = (v: Xsd.Value): Option.Option<Num> =>\n Predicate.isTagged(v, 'Integer')\n ? Option.some({ kind: 0, v: v.value })\n : Predicate.isTagged(v, 'Decimal')\n ? Option.some({ kind: 1, v: v.value })\n : Predicate.isTagged(v, 'Float')\n ? Option.some({ kind: 2, v: v.value })\n : Predicate.isTagged(v, 'Double')\n ? Option.some({ kind: 3, v: v.value })\n : Option.none();\n\n/** The numeric value of a literal, `None` if it is not a valid numeric literal. */\nexport const numeric = (t: Term.Term): Option.Option<Num> => {\n if (!Term.isLiteral(t) || t.language !== '') return Option.none();\n const cached = numCache.get(t);\n if (cached !== undefined) return cached;\n const d = t.datatype.value;\n const result =\n Xsd.isNumericDatatype(d) && Xsd.isValidLexical(d, t.value)\n ? numOfValue(Xsd.toValue(t))\n : Option.none();\n numCache.set(t, result);\n return result;\n};\n\nexport const isNumeric = (t: Term.Term): boolean => Option.isSome(numeric(t));\n\nexport const toNumber = (n: Num): number =>\n n.kind === 0 ? Number(n.v) : n.kind === 1 ? BigDecimal.toNumberUnsafe(n.v) : n.v;\n\nexport const toDecimal = (n: Num): BigDecimal.BigDecimal =>\n n.kind === 0 ? BigDecimal.fromBigInt(n.v) : n.kind === 1 ? n.v : fail('Not a decimal');\n\n/** Promotes a numeric value to (at least) the given kind. */\nexport const promote = (n: Num, kind: number): Num => {\n if (n.kind >= kind) return n;\n return kind === DECIMAL\n ? { kind: 1, v: toDecimal(n) }\n : kind === FLOAT\n ? { kind: 2, v: Math.fround(toNumber(n)) }\n : { kind: 3, v: toNumber(n) };\n};\n\nexport const numLiteral = (n: Num): Term.Literal =>\n n.kind === 0\n ? new Term.Literal(n.v.toString(), dt.integer)\n : n.kind === 1\n ? new Term.Literal(Xsd.canonicalDecimal(n.v), dt.decimal)\n : n.kind === 2\n ? new Term.Literal(Xsd.canonicalDouble(Math.fround(n.v)), dt.float)\n : new Term.Literal(Xsd.canonicalDouble(n.v), dt.double);\n\n/** The numeric value of a literal; an evaluation error if it has none. */\nexport const requireNum = (t: Term.Term): Num => {\n const n = numeric(t);\n return Option.isSome(n) ? n.value : fail('Expected a numeric literal');\n};\n\nconst DIVISION_SCALE = 18;\n\n/** `op` on two values already promoted to the common `kind`. */\nconst arithmeticAt = (kind: number, op: '+' | '-' | '*' | '/', px: Num, py: Num): Term.Literal => {\n if (px.kind === 0 && py.kind === 0) {\n const u = px.v;\n const v = py.v;\n return numLiteral({ kind: 0, v: op === '+' ? u + v : op === '-' ? u - v : u * v });\n }\n if (px.kind === 1 && py.kind === 1) {\n const u = px.v;\n const v = py.v;\n if (op === '/') {\n if (BigDecimal.isZero(v)) return fail('Division by zero');\n return numLiteral({ kind: 1, v: divideDecimal(u, v) });\n }\n return numLiteral({\n kind: 1,\n v:\n op === '+'\n ? BigDecimal.sum(u, v)\n : op === '-'\n ? BigDecimal.subtract(u, v)\n : BigDecimal.multiply(u, v),\n });\n }\n // The remaining kinds (float, double) carry a JS `number`.\n const u = toNumber(px);\n const v = toNumber(py);\n const r = op === '+' ? u + v : op === '-' ? u - v : op === '*' ? u * v : u / v;\n return numLiteral(kind === FLOAT ? { kind: 2, v: Math.fround(r) } : { kind: 3, v: r });\n};\n\nexport const arithmetic = (op: '+' | '-' | '*' | '/', a: Term.Term, b: Term.Term): Term.Literal => {\n const x = requireNum(a);\n const y = requireNum(b);\n let kind = Math.max(x.kind, y.kind);\n if (op === '/' && kind === INTEGER) kind = DECIMAL;\n const px = promote(x, kind);\n const py = promote(y, kind);\n return arithmeticAt(kind, op, px, py);\n};\n\n/** Decimal division with a fixed number of fractional digits (rounded half-even). */\nexport const divideDecimal = (\n u: BigDecimal.BigDecimal,\n v: BigDecimal.BigDecimal,\n): BigDecimal.BigDecimal => {\n const exact = BigDecimal.divide(u, v);\n const scaled = BigDecimal.round(\n Option.getOrElse(exact, () => BigDecimal.fromBigInt(0n)),\n {\n scale: DIVISION_SCALE,\n mode: 'half-even',\n },\n );\n return BigDecimal.normalize(scaled);\n};\n\nexport const negate = (a: Term.Term): Term.Literal => {\n return negateNum(requireNum(a));\n};\n\nconst negateNum = (x: Num): Term.Literal =>\n numLiteral(\n x.kind === 0\n ? { kind: 0, v: -x.v }\n : x.kind === 1\n ? { kind: 1, v: BigDecimal.negate(x.v) }\n : x.kind === 2\n ? { kind: 2, v: -x.v }\n : { kind: 3, v: -x.v },\n );\n\n/** Compares two numerics; returns NaN when unordered (NaN operands). */\nexport const compareNum = (x: Num, y: Num): number => {\n const kind = Math.max(x.kind, y.kind);\n if (kind <= DECIMAL) {\n if (x.kind === 0 && y.kind === 0) {\n const u = x.v;\n const v = y.v;\n return u < v ? -1 : u > v ? 1 : 0;\n }\n const u = toDecimal(x);\n const v = toDecimal(y);\n return BigDecimal.isLessThan(u, v) ? -1 : BigDecimal.isGreaterThan(u, v) ? 1 : 0;\n }\n const u = toNumber(promote(x, kind));\n const v = toNumber(promote(y, kind));\n if (Number.isNaN(u) || Number.isNaN(v)) return NaN;\n return u < v ? -1 : u > v ? 1 : 0;\n};\n\n// -----------------------------------------------------------------------------\n// Date/time and durations\n// -----------------------------------------------------------------------------\n\nconst DATE_KINDS: ReadonlyMap<string, true> = StringMap.setOf([\n 'dateTime',\n 'dateTimeStamp',\n 'date',\n 'time',\n 'gYear',\n 'gYearMonth',\n 'gMonth',\n 'gMonthDay',\n 'gDay',\n]);\n\ninterface DateValue {\n readonly kind: string;\n readonly millis: number;\n /** Whether the value has a timezone. */\n readonly zoned: boolean;\n}\n\nexport const dateValue = (t: Term.Term): Option.Option<DateValue> => {\n if (!Term.isLiteral(t) || !t.datatype.value.startsWith(XSD)) return Option.none();\n const local = t.datatype.value.slice(XSD.length);\n if (!DATE_KINDS.has(local) || !Xsd.isValidLexical(t.datatype.value, t.value)) {\n return Option.none();\n }\n const v = Xsd.toValue(t);\n if (!Predicate.isTagged(v, 'DateTime')) return Option.none();\n return Option.some({\n kind: local === 'dateTimeStamp' ? 'dateTime' : local,\n millis: v.epochMillis,\n zoned: v.timezone !== undefined,\n });\n};\n\nconst FOURTEEN_HOURS = 14 * 3600 * 1000;\n\nconst BEFORE = Option.some(-1);\nconst SAME = Option.some(0);\nconst AFTER = Option.some(1);\n\n/** Compares two date/time values of the same kind; `None` if indeterminate. */\nexport const compareDates = (a: DateValue, b: DateValue): Option.Option<number> => {\n if (a.kind !== b.kind) return Option.none();\n if (a.zoned !== b.zoned) {\n const diff = a.millis - b.millis;\n if (Math.abs(diff) <= FOURTEEN_HOURS) return Option.none();\n return diff < 0 ? BEFORE : AFTER;\n }\n return a.millis < b.millis ? BEFORE : a.millis > b.millis ? AFTER : SAME;\n};\n\ninterface DurationValue {\n readonly kind: string;\n readonly months: number;\n readonly seconds: number;\n}\n\nexport const durationValue = (t: Term.Term): Option.Option<DurationValue> => {\n if (!Term.isLiteral(t)) return Option.none();\n const d = t.datatype.value;\n if (d !== `${XSD}duration` && d !== `${XSD}dayTimeDuration` && d !== `${XSD}yearMonthDuration`) {\n return Option.none();\n }\n if (!Xsd.isValidLexical(d, t.value)) return Option.none();\n const v = Xsd.toValue(t);\n return Predicate.isTagged(v, 'Duration')\n ? Option.some({ kind: d.slice(XSD.length), months: v.months, seconds: v.seconds })\n : Option.none();\n};\n\n// -----------------------------------------------------------------------------\n// Strings\n// -----------------------------------------------------------------------------\n\n/** Compares strings by Unicode code points. */\nexport const compareCodepoints = (a: string, b: string): number => {\n if (a === b) return 0;\n const n = Math.min(a.length, b.length);\n // The first offset where the strings differ (`n` if one is a prefix of the other).\n let i = 0;\n loop(() => {\n if (i >= n || a.charCodeAt(i) !== b.charCodeAt(i)) return false;\n i++;\n return true;\n });\n if (i < n) {\n const x = a.charCodeAt(i);\n const y = b.charCodeAt(i);\n const xs = x >= 0xd800 && x <= 0xdfff;\n const ys = y >= 0xd800 && y <= 0xdfff;\n if (xs !== ys) return xs ? 1 : -1;\n return x < y ? -1 : 1;\n }\n return a.length < b.length ? -1 : a.length > b.length ? 1 : 0;\n};\n\n// -----------------------------------------------------------------------------\n// Equality and ordering\n// -----------------------------------------------------------------------------\n\nconst isBooleanLiteral = (t: Term.Term): t is Term.Literal =>\n Term.isLiteral(t) &&\n t.datatype.value === `${XSD}boolean` &&\n Xsd.isValidLexical(t.datatype.value, t.value);\n\nconst booleanValue = (t: Term.Literal): boolean => t.value === 'true' || t.value === '1';\n\n/**\n * Compares two literals by value (for `<`, `>`, …). Returns a number (NaN for\n * unordered) or throws if they are not comparable.\n */\nexport const compareLiterals = (a: Term.Term, b: Term.Term): number => {\n const x = numeric(a);\n const y = numeric(b);\n if (Option.isSome(x) && Option.isSome(y)) return compareNum(x.value, y.value);\n if (isSimpleString(a) && isSimpleString(b)) return compareCodepoints(a.value, b.value);\n if (\n Term.isLiteral(a) &&\n Term.isLiteral(b) &&\n a.language !== '' &&\n a.language === b.language &&\n a.direction === b.direction\n ) {\n return compareCodepoints(a.value, b.value);\n }\n if (isBooleanLiteral(a) && isBooleanLiteral(b)) {\n return Number(booleanValue(a)) - Number(booleanValue(b));\n }\n const da = dateValue(a);\n const db = dateValue(b);\n if (Option.isSome(da) && Option.isSome(db)) {\n const c = compareDates(da.value, db.value);\n if (Option.isSome(c)) return c.value;\n return fail('Indeterminate date comparison');\n }\n const ua = durationValue(a);\n const ub = durationValue(b);\n if (Option.isSome(ua) && Option.isSome(ub)) {\n const u = ua.value;\n const v = ub.value;\n if (u.months === v.months) return Math.sign(u.seconds - v.seconds);\n if (u.seconds === v.seconds) return Math.sign(u.months - v.months);\n return fail('Indeterminate duration comparison');\n }\n return fail('Incomparable values');\n};\n\nconst isKnownLiteral = (t: Term.Literal): boolean =>\n t.language !== '' || Xsd.isKnownDatatype(t.datatype.value);\n\n/** RDF term equality with value semantics (`=`). Throws on type errors. */\nexport const equals = (a: Term.Term, b: Term.Term): boolean => {\n const ta = Term.isTriple(a);\n const tb = Term.isTriple(b);\n if (ta || tb) {\n if (!ta || !tb) return false;\n return (\n equals(a.subject, b.subject) && equals(a.predicate, b.predicate) && equals(a.object, b.object)\n );\n }\n if (!Term.isLiteral(a) || !Term.isLiteral(b)) return a.key === b.key;\n const x = numeric(a);\n const y = numeric(b);\n if (Option.isSome(x) && Option.isSome(y)) return compareNum(x.value, y.value) === 0;\n if (a.key === b.key) return true;\n if (isSimpleString(a) && isSimpleString(b)) return a.value === b.value;\n if (isBooleanLiteral(a) && isBooleanLiteral(b)) return booleanValue(a) === booleanValue(b);\n const da = dateValue(a);\n const db = dateValue(b);\n if (Option.isSome(da) && Option.isSome(db)) {\n if (da.value.kind !== db.value.kind) return false;\n const c = compareDates(da.value, db.value);\n if (Option.isNone(c)) return fail('Indeterminate date comparison');\n return c.value === 0;\n }\n const ua = durationValue(a);\n const ub = durationValue(b);\n if (Option.isSome(ua) && Option.isSome(ub)) {\n return ua.value.months === ub.value.months && ua.value.seconds === ub.value.seconds;\n }\n if (a.language !== '' || b.language !== '') {\n // Language-tagged strings are equal only when they are the same term.\n return false;\n }\n // Both literals with known, value-disjoint datatypes are unequal; anything\n // else (unknown datatypes, ill-formed values) is a type error.\n if (\n isKnownLiteral(a) &&\n isKnownLiteral(b) &&\n Xsd.isWellFormed(a) &&\n Xsd.isWellFormed(b) &&\n a.datatype.value !== b.datatype.value\n ) {\n return false;\n }\n return fail('Cannot compare literals');\n};\n\n/** Effective boolean value. */\nconst numEbv = (n: Num): boolean =>\n n.kind === 0\n ? n.v !== 0n\n : n.kind === 1\n ? !BigDecimal.isZero(n.v)\n : !(n.v === 0 || Number.isNaN(n.v));\n\nexport const ebv = (t: Term.Term): boolean => {\n if (!Term.isLiteral(t)) return fail('EBV of a non-literal');\n const d = t.datatype.value;\n if (d === `${XSD}boolean`) {\n if (!Xsd.isValidLexical(d, t.value)) return fail('Invalid boolean');\n return booleanValue(t);\n }\n if (t.language === '' && d === Term.XSD_STRING) return Str.isNonEmpty(t.value);\n if (Xsd.isNumericDatatype(d)) {\n const n = numeric(t);\n return Option.isSome(n) && numEbv(n.value);\n }\n return fail('EBV is not defined for this literal');\n};\n\n/** The `ORDER BY` rank of a bound term: blank nodes < IRIs < literals < triple terms. */\nconst termRank = (t: Term.Term): number =>\n Term.isBlankNode(t)\n ? 1\n : Term.isNamedNode(t)\n ? 2\n : Term.isLiteral(t)\n ? 3\n : Term.isTriple(t)\n ? 4\n : 5;\n\n/** Orders two literals: by value where comparable, else syntactically. */\nconst compareLiteralOrder = (a: Term.Literal, l: Term.Literal): number => {\n // Where the values cannot be compared, fall through to the syntactic\n // ordering.\n const compared = Result.try(() => compareLiterals(a, l));\n if (Result.isSuccess(compared)) {\n const c = compared.success;\n if (!Number.isNaN(c) && c !== 0) return c;\n if (c === 0 && a.key === l.key) return 0;\n }\n // Simple literals before language-tagged before other typed literals.\n const ka = a.language !== '' ? 1 : a.datatype.value === Term.XSD_STRING ? 0 : 2;\n const kb = l.language !== '' ? 1 : l.datatype.value === Term.XSD_STRING ? 0 : 2;\n if (ka !== kb) return ka - kb;\n return (\n compareCodepoints(a.datatype.value, l.datatype.value) ||\n compareCodepoints(a.language, l.language) ||\n compareCodepoints(a.value, l.value)\n );\n};\n\n/**\n * The total ordering used by `ORDER BY` on bound terms: blank nodes < IRIs <\n * literals < triple terms; literals are ordered by value where comparable\n * and otherwise by datatype, language and lexical form.\n */\nexport const compareTerms = (a: Term.Term, b: Term.Term): number => {\n const ra = termRank(a);\n const rb = termRank(b);\n if (ra !== rb) return ra - rb;\n if (Term.isLiteral(a) && Term.isLiteral(b)) return compareLiteralOrder(a, b);\n if (Term.isTriple(a) && Term.isTriple(b)) {\n return (\n compareTerms(a.subject, b.subject) ||\n compareTerms(a.predicate, b.predicate) ||\n compareTerms(a.object, b.object)\n );\n }\n if (\n (Term.isBlankNode(a) || Term.isNamedNode(a)) &&\n (Term.isBlankNode(b) || Term.isNamedNode(b))\n ) {\n return compareCodepoints(a.value, b.value);\n }\n return 0;\n};\n\n/** `compareTerms` on possibly unbound terms (`None`), with unbound first. */\nexport const orderCompare = (a: Option.Option<Term.Term>, b: Option.Option<Term.Term>): number =>\n Option.isNone(a)\n ? Option.isNone(b)\n ? 0\n : -1\n : Option.isNone(b)\n ? 1\n : compareTerms(a.value, b.value);\n","/**\n * SPARQL built-in functions, XSD casts and the registry of extension\n * functions.\n *\n * Extension functions are plain synchronous functions from argument terms\n * to a term, registered by IRI and passed to the engine (see\n * `Engine.EngineOptions.functions`). They signal type errors by throwing\n * `ExpressionError` (or calling `Functions.error`).\n *\n * @since 0.1.0\n */\nimport * as Arr from 'effect/Array';\nimport * as BigDecimal from 'effect/BigDecimal';\nimport * as Option from 'effect/Option';\nimport * as Record from 'effect/Record';\nimport * as Result from 'effect/Result';\nimport * as Schema from 'effect/Schema';\nimport * as Iri from '../Iri.ts';\nimport * as Term from '../Term.ts';\nimport * as Xsd from '../Xsd.ts';\nimport type * as Ast from './Ast.ts';\nimport type { Bindings } from './Bindings.ts';\nimport * as Hash from './internal/hash.ts';\nimport * as StringMap from './internal/stringMap.ts';\nimport * as V from './internal/values.ts';\n\n/**\n * An expression evaluation error (a SPARQL \"type error\"): unbound\n * variables, wrong argument types, division by zero, …\n *\n * @since 0.1.0\n * @category errors\n */\nexport class ExpressionError extends Schema.TaggedError<ExpressionError>()('ExpressionError', {\n message: Schema.String,\n}) {}\n\n/**\n * Signals an expression error from inside a function implementation.\n *\n * @since 0.1.0\n * @category errors\n */\nexport const error = (message: string): never => V.fail(message);\n\n/**\n * The per-query context of expression evaluation.\n *\n * @since 0.1.0\n * @category models\n */\nexport interface FunctionContext {\n /** The value of `NOW()`: constant for the whole query. */\n readonly now: Date;\n /** The base IRI used by `IRI()` / `URI()`. */\n readonly baseIri?: string | undefined;\n /** A random number generator in [0, 1). */\n readonly random: () => number;\n /** Returns the blank node for `BNODE(label)` within the current solution. */\n readonly blankNode: (label: string | undefined, solution: Bindings) => Term.BlankNode;\n}\n\n/**\n * An extension function: receives the evaluated arguments.\n *\n * @since 0.1.0\n * @category models\n */\nexport type ExtensionFunction = (\n args: ReadonlyArray<Term.GroundTerm>,\n context: FunctionContext,\n) => Term.GroundTerm;\n\n/**\n * A registry of extension functions keyed by IRI.\n *\n * @since 0.1.0\n * @category models\n */\nexport type Registry = ReadonlyMap<string, ExtensionFunction>;\n\n/**\n * Creates a registry from a record of IRI → function.\n *\n * @since 0.1.0\n * @category constructors\n */\nexport const registry = (functions: Readonly<Record<string, ExtensionFunction>>): Registry =>\n StringMap.fromEntries(Record.toEntries(functions));\n\n// -----------------------------------------------------------------------------\n// Helpers\n// -----------------------------------------------------------------------------\n\nconst literalArg = (t: Term.Term): Term.Literal =>\n Term.isLiteral(t) ? t : V.fail('Expected a literal');\n\nconst stringArg = (t: Term.Term): Term.Literal =>\n V.isStringLiteral(t) ? t : V.fail('Expected a string literal');\n\nconst simpleArg = (t: Term.Term): Term.Literal =>\n V.isSimpleString(t) ? t : V.fail('Expected a simple literal');\n\n/** Argument compatibility (SPARQL 1.1 §17.4.3.1.2). */\nconst compatible = (a: Term.Literal, b: Term.Literal): boolean =>\n b.language === '' || (a.language === b.language && a.direction === b.direction);\n\nconst codepoints = (s: string): Array<string> => Array.from(s);\n\nconst intLiteral = (n: number | bigint): Term.Literal =>\n new Term.Literal(BigInt(n).toString(), V.dt.integer);\n\nconst numArg = V.requireNum;\n\nconst roundNum = (\n t: Term.Term,\n mode: 'ceil' | 'floor' | 'half-ceil',\n fn: (x: number) => number,\n): Term.Literal => {\n const n = numArg(t);\n return V.numLiteral(\n n.kind === 0\n ? n\n : n.kind === 1\n ? { kind: 1, v: BigDecimal.round(n.v, { scale: 0, mode }) }\n : n.kind === 2\n ? { kind: 2, v: fn(n.v) }\n : { kind: 3, v: fn(n.v) },\n );\n};\n\nconst xpathRound = (x: number): number => {\n if (!Number.isFinite(x) || Object.is(x, -0)) return x;\n const r = Math.floor(x + 0.5);\n return r === 0 && x < 0 ? -0 : r;\n};\n\n/** Compiled regular expressions by flags and pattern (read on every `REGEX` / `REPLACE` call). */\nconst regexCache = StringMap.empty<RegExp>();\n\n/** Compiles an XPath regular expression with XPath flags to a JS RegExp. */\nexport const compileRegex = (pattern: string, flags: string, global = false): RegExp => {\n const key = `${global ? 'g' : ''}${flags}/${pattern}`;\n const cached = regexCache.get(key);\n if (cached !== undefined) return cached;\n let source = pattern;\n let jsFlags = global ? 'g' : '';\n Array.from(flags).forEach((flag) => {\n if (flag === 'i' || flag === 's' || flag === 'm') {\n if (!jsFlags.includes(flag)) jsFlags += flag;\n } else if (flag === 'x') source = source.replace(/[\\t\\n\\r ]/g, '');\n else if (flag === 'q') source = source.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n else V.fail(`Invalid regex flag '${flag}'`);\n });\n // Unicode mode first; patterns it rejects may still compile without it.\n const compiled = Result.try(() => new RegExp(source, `${jsFlags}u`)).pipe(\n Result.orElse(() => Result.try(() => new RegExp(source, jsFlags))),\n );\n if (Result.isFailure(compiled)) return V.fail('Invalid regular expression');\n const re = compiled.success;\n if (regexCache.size > 1000) regexCache.clear();\n regexCache.set(key, re);\n return re;\n};\n\n/** The flags argument of `REGEX` / `REPLACE`, absent beyond the arguments given. */\nconst regexFlags = (args: BuiltInArgs, i: number): string => {\n const t = Option.fromUndefinedOr(args[i]);\n return Option.isSome(t) ? simpleArg(t.value).value : '';\n};\n\nconst parseDateParts = (t: Term.Term) => {\n const lit = literalArg(t);\n const d = lit.datatype.value;\n if (\n !(\n d === `${V.XSD}dateTime` ||\n d === `${V.XSD}date` ||\n d === `${V.XSD}time` ||\n d === `${V.XSD}dateTimeStamp`\n ) ||\n !Xsd.isValidLexical(d, lit.value)\n ) {\n return V.fail('Expected an xsd:dateTime');\n }\n const m =\n /^(?:(-?\\d{4,})-(\\d\\d)-(\\d\\d))?T?(?:(\\d\\d):(\\d\\d):(\\d\\d(?:\\.\\d+)?))?(Z|[+-]\\d\\d:\\d\\d)?$/.exec(\n lit.value,\n );\n if (m === null) return V.fail('Invalid date/time');\n return {\n year: m[1],\n month: m[2],\n day: m[3],\n hours: m[4],\n minutes: m[5],\n seconds: m[6],\n tz: m[7],\n };\n};\n\nconst timezoneDuration = (tz: string): string => {\n if (tz === 'Z') return 'PT0S';\n const sign = tz.startsWith('-') ? '-' : '';\n const h = Number(tz.slice(1, 3));\n const mi = Number(tz.slice(4, 6));\n if (h === 0 && mi === 0) return 'PT0S';\n return `${sign}PT${h > 0 ? `${h}H` : ''}${mi > 0 ? `${mi}M` : ''}`;\n};\n\nconst encodeForUri = (s: string): string =>\n encodeURIComponent(s).replace(\n /[!'()*]/g,\n (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`,\n );\n\nconst uuid = (random: () => number): string => {\n // Version 4 (byte 6) and the RFC 4122 variant (byte 8).\n const bytes = Array.from({ length: 16 }, (_, i) => {\n const b = Math.floor(random() * 256);\n return i === 6 ? (b & 0x0f) | 0x40 : i === 8 ? (b & 0x3f) | 0x80 : b;\n });\n const h = bytes.map((b) => b.toString(16).padStart(2, '0')).join('');\n return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20)}`;\n};\n\nconst LANG_TAG = /^[a-zA-Z]{1,8}(?:-[a-zA-Z0-9]{1,8})*$/;\n\n// -----------------------------------------------------------------------------\n// Built-in functions (strict: all arguments evaluated, errors propagate)\n// -----------------------------------------------------------------------------\n\n/**\n * The evaluated arguments of a built-in function. Positions beyond the\n * function's arity are `undefined` at runtime; the type assumes the\n * required positions are present (checked by the parser).\n *\n * @since 0.1.0\n * @category models\n */\nexport type BuiltInArgs = ReadonlyArray<Term.GroundTerm> & {\n readonly 0: Term.GroundTerm;\n readonly 1: Term.GroundTerm;\n readonly 2: Term.GroundTerm;\n};\n\n/**\n * Implementation of a strict built-in function.\n *\n * @since 0.1.0\n * @category models\n */\nexport type BuiltIn = (\n args: BuiltInArgs,\n context: FunctionContext,\n solution: Bindings,\n) => Term.GroundTerm;\n\n/** The two string arguments of a string function, which must be compatible (§17.4.3.1.2). */\nconst compatibleStrings = ([a, b]: BuiltInArgs): readonly [Term.Literal, Term.Literal] => {\n const x = stringArg(a);\n const y = stringArg(b);\n return compatible(x, y) ? [x, y] : V.fail('Incompatible arguments');\n};\n\n/**\n * `STRBEFORE` / `STRAFTER`: `part` of the first string around the first\n * occurrence of the second, or the empty simple literal if there is none.\n */\nconst around = (\n args: BuiltInArgs,\n part: (value: string, search: string, index: number) => string,\n): Term.Literal => {\n const [x, y] = compatibleStrings(args);\n const i = x.value.indexOf(y.value);\n return i === -1 ? V.simple('') : V.stringLike(part(x.value, y.value, i), x);\n};\n\nconst iriFn: BuiltIn = ([a], ctx) => {\n if (Term.isNamedNode(a)) return a;\n const s = simpleArg(a).value;\n return Term.namedNode(ctx.baseIri !== undefined ? Iri.resolve(s, ctx.baseIri) : s);\n};\n\nconst hashFn =\n (f: (s: string) => string): BuiltIn =>\n ([a]) =>\n V.simple(f(simpleArg(a).value));\n\n/**\n * The strict built-in functions, keyed by canonical name. Functional forms\n * (`BOUND`, `IF`, `COALESCE`, `&&`, `||`, `IN`, `EXISTS`) are handled by the\n * expression evaluator.\n *\n * @since 0.1.0\n * @category built-ins\n */\nexport const builtIns: Partial<Record<Ast.BuiltInName, BuiltIn>> = {\n STR: ([a]) =>\n Term.isNamedNode(a) || Term.isLiteral(a)\n ? V.simple(a.value)\n : V.fail('STR of a blank node or triple term'),\n LANG: ([a]) => V.simple(literalArg(a).language),\n LANGDIR: ([a]) => V.simple(literalArg(a).direction ?? ''),\n LANGMATCHES: ([tag, range]) => {\n const t = simpleArg(tag).value.toLowerCase();\n const r = simpleArg(range).value.toLowerCase();\n if (r === '*') return V.bool(t !== '');\n return V.bool(t === r || t.startsWith(`${r}-`));\n },\n DATATYPE: ([a]) => literalArg(a).datatype,\n IRI: iriFn,\n URI: iriFn,\n BNODE: (args, ctx, sol) =>\n ctx.blankNode(Arr.isReadonlyArrayEmpty(args) ? undefined : simpleArg(args[0]).value, sol),\n RAND: (_, ctx) => V.numLiteral({ kind: 3, v: ctx.random() }),\n ABS: ([a]) => {\n const n = numArg(a);\n return V.numLiteral(\n n.kind === 0\n ? { kind: 0, v: n.v < 0n ? -n.v : n.v }\n : n.kind === 1\n ? { kind: 1, v: BigDecimal.abs(n.v) }\n : n.kind === 2\n ? { kind: 2, v: Math.abs(n.v) }\n : { kind: 3, v: Math.abs(n.v) },\n );\n },\n CEIL: ([a]) => roundNum(a, 'ceil', Math.ceil),\n FLOOR: ([a]) => roundNum(a, 'floor', Math.floor),\n ROUND: ([a]) => roundNum(a, 'half-ceil', xpathRound),\n CONCAT: (args) => {\n const lits = args.map(stringArg);\n const first = lits[0];\n const sameLang =\n first !== undefined &&\n first.language !== '' &&\n lits.every((l) => l.language === first.language && l.direction === first.direction);\n const value = lits.map((l) => l.value).join('');\n return sameLang ? V.stringLike(value, first) : V.simple(value);\n },\n SUBSTR: ([s, start, len]) => {\n const str = stringArg(s);\n const chars = codepoints(str.value);\n const st = V.toNumber(numArg(start));\n const from = xpathRound(st);\n let to = Infinity;\n if (len !== undefined) to = from + xpathRound(V.toNumber(numArg(len)));\n if (Number.isNaN(from) || Number.isNaN(to)) return V.stringLike('', str);\n const out = chars.filter((_, i) => i + 1 >= from && i + 1 < to).join('');\n return V.stringLike(out, str);\n },\n STRLEN: ([a]) => intLiteral(codepoints(stringArg(a).value).length),\n REPLACE: (args) => {\n const [s, pattern, replacement] = args;\n const str = stringArg(s);\n const re = compileRegex(simpleArg(pattern).value, regexFlags(args, 3), true);\n if (re.test('')) {\n re.lastIndex = 0;\n return V.fail('REPLACE pattern matches the empty string');\n }\n re.lastIndex = 0;\n const repl = simpleArg(replacement).value.replace(/\\\\(\\$|\\\\)|\\$/g, (m, esc) =>\n esc === '$' ? '$$' : esc === '\\\\' ? '\\\\' : m,\n );\n return V.stringLike(str.value.replace(re, repl), str);\n },\n UCASE: ([a]) => {\n const s = stringArg(a);\n return V.stringLike(s.value.toUpperCase(), s);\n },\n LCASE: ([a]) => {\n const s = stringArg(a);\n return V.stringLike(s.value.toLowerCase(), s);\n },\n ENCODE_FOR_URI: ([a]) => V.simple(encodeForUri(stringArg(a).value)),\n CONTAINS: (args) => {\n const [x, y] = compatibleStrings(args);\n return V.bool(x.value.includes(y.value));\n },\n STRSTARTS: (args) => {\n const [x, y] = compatibleStrings(args);\n return V.bool(x.value.startsWith(y.value));\n },\n STRENDS: (args) => {\n const [x, y] = compatibleStrings(args);\n return V.bool(x.value.endsWith(y.value));\n },\n STRBEFORE: (args) => around(args, (x, _y, i) => x.slice(0, i)),\n STRAFTER: (args) => around(args, (x, y, i) => x.slice(i + y.length)),\n YEAR: ([a]) => {\n const p = parseDateParts(a);\n return p.year !== undefined ? intLiteral(BigInt(p.year)) : V.fail('No year');\n },\n MONTH: ([a]) => {\n const p = parseDateParts(a);\n return p.month !== undefined ? intLiteral(Number(p.month)) : V.fail('No month');\n },\n DAY: ([a]) => {\n const p = parseDateParts(a);\n return p.day !== undefined ? intLiteral(Number(p.day)) : V.fail('No day');\n },\n HOURS: ([a]) => {\n const p = parseDateParts(a);\n return p.hours !== undefined ? intLiteral(Number(p.hours)) : V.fail('No hours');\n },\n MINUTES: ([a]) => {\n const p = parseDateParts(a);\n return p.minutes !== undefined ? intLiteral(Number(p.minutes)) : V.fail('No minutes');\n },\n SECONDS: ([a]) => {\n const p = parseDateParts(a);\n if (p.seconds === undefined) return V.fail('No seconds');\n return V.numLiteral({ kind: 1, v: BigDecimal.fromStringUnsafe(p.seconds) });\n },\n TIMEZONE: ([a]) => {\n const p = parseDateParts(a);\n if (p.tz === undefined) return V.fail('No timezone');\n return new Term.Literal(timezoneDuration(p.tz), V.dt.dayTimeDuration);\n },\n TZ: ([a]) => V.simple(parseDateParts(a).tz ?? ''),\n NOW: (_, ctx) => new Term.Literal(ctx.now.toISOString(), V.dt.dateTime),\n UUID: (_, ctx) => Term.namedNode(`urn:uuid:${uuid(ctx.random)}`),\n STRUUID: (_, ctx) => V.simple(uuid(ctx.random)),\n MD5: hashFn(Hash.md5),\n SHA1: hashFn(Hash.sha1),\n SHA256: hashFn(Hash.sha256),\n SHA384: hashFn(Hash.sha384),\n SHA512: hashFn(Hash.sha512),\n STRLANG: ([s, lang]) => {\n const lex = simpleArg(s).value;\n const tag = simpleArg(lang).value;\n if (!LANG_TAG.test(tag)) return V.fail('Invalid language tag');\n return Term.literal(lex, tag);\n },\n STRLANGDIR: ([s, lang, dir]) => {\n const lex = simpleArg(s).value;\n const tag = simpleArg(lang).value;\n const d = simpleArg(dir).value;\n if (!LANG_TAG.test(tag)) return V.fail('Invalid language tag');\n if (d !== 'ltr' && d !== 'rtl') return V.fail('Invalid base direction');\n return Term.literal(lex, { language: tag, direction: d });\n },\n STRDT: ([s, datatype]) => {\n const lex = simpleArg(s).value;\n if (!Term.isNamedNode(datatype)) return V.fail('STRDT requires an IRI');\n if (datatype.value === V.dt.langString.value || datatype.value === V.dt.dirLangString.value) {\n return V.fail('STRDT cannot create language-tagged strings');\n }\n return new Term.Literal(lex, datatype);\n },\n SAMETERM: ([a, b]) => V.bool(a.key === b.key),\n ISIRI: ([a]) => V.bool(Term.isNamedNode(a)),\n ISURI: ([a]) => V.bool(Term.isNamedNode(a)),\n ISBLANK: ([a]) => V.bool(Term.isBlankNode(a)),\n ISLITERAL: ([a]) => V.bool(Term.isLiteral(a)),\n ISNUMERIC: ([a]) => V.bool(V.isNumeric(a)),\n HASLANG: ([a]) => V.bool(Term.isLiteral(a) && a.language !== ''),\n HASLANGDIR: ([a]) => V.bool(Term.isLiteral(a) && a.direction !== undefined),\n REGEX: (args) => {\n const [s, pattern] = args;\n const str = stringArg(s);\n const re = compileRegex(simpleArg(pattern).value, regexFlags(args, 2));\n return V.bool(re.test(str.value));\n },\n ISTRIPLE: ([a]) => V.bool(Term.isTriple(a)),\n TRIPLE: ([s, p, o]) => {\n if (!Term.isNamedNode(s) && !Term.isBlankNode(s)) {\n return V.fail('TRIPLE subject must be an IRI or blank node');\n }\n if (!Term.isNamedNode(p)) return V.fail('TRIPLE predicate must be an IRI');\n return Term.triple(s, p, o);\n },\n SUBJECT: ([a]) => (Term.isTriple(a) ? a.subject : V.fail('Not a triple term')),\n PREDICATE: ([a]) => (Term.isTriple(a) ? a.predicate : V.fail('Not a triple term')),\n OBJECT: ([a]) => (Term.isTriple(a) ? a.object : V.fail('Not a triple term')),\n};\n\n// -----------------------------------------------------------------------------\n// Casts\n// -----------------------------------------------------------------------------\n\nconst XSD_INTEGER_TYPE_NAMES: ReadonlyArray<string> = [\n 'integer',\n 'long',\n 'int',\n 'short',\n 'byte',\n 'nonNegativeInteger',\n 'positiveInteger',\n 'nonPositiveInteger',\n 'negativeInteger',\n 'unsignedLong',\n 'unsignedInt',\n 'unsignedShort',\n 'unsignedByte',\n].map((t) => V.XSD + t);\nconst XSD_INTEGER_TYPES = StringMap.setOf(XSD_INTEGER_TYPE_NAMES);\n\n/** The XPath string form of a float/double (`fn:string`). */\nconst xpathDoubleString = (v: number): string => {\n if (Number.isNaN(v)) return 'NaN';\n if (!Number.isFinite(v)) return v > 0 ? 'INF' : '-INF';\n const abs = Math.abs(v);\n if (abs === 0) return Object.is(v, -0) ? '-0' : '0';\n if (abs >= 1e-6 && abs < 1e6) return String(v);\n return Xsd.canonicalDouble(v);\n};\n\nconst castString = (a: Term.Term): string => {\n if (Term.isNamedNode(a)) return a.value;\n const l = literalArg(a);\n const numeric = V.numeric(l);\n if (Option.isSome(numeric)) {\n const n = numeric.value;\n if (n.kind === 0) return n.v.toString();\n if (n.kind === 1) {\n const s = Xsd.canonicalDecimal(n.v);\n return s.endsWith('.0') ? s.slice(0, -2) : s;\n }\n return xpathDoubleString(n.v);\n }\n if (l.datatype.value === V.dt.boolean.value && Xsd.isValidLexical(l.datatype.value, l.value)) {\n return l.value === 'true' || l.value === '1' ? 'true' : 'false';\n }\n return l.value;\n};\n\n/** A literal being cast, with the readings of it the casts share. */\ninterface CastSource {\n readonly target: string;\n readonly dtNode: Term.NamedNode;\n readonly l: Term.Literal;\n readonly numeric: Option.Option<V.Num>;\n /** Whether it is a valid `xsd:boolean`, and if so its value. */\n readonly isBool: boolean;\n readonly boolValue: boolean;\n /** Whether it is a simple literal, and its trimmed lexical form. */\n readonly fromString: boolean;\n readonly lexical: string;\n}\n\nconst castBoolean = ({ l, numeric, isBool, boolValue, fromString, lexical }: CastSource) => {\n if (isBool) return V.bool(boolValue);\n if (Option.isSome(numeric)) return V.bool(V.ebv(l));\n if (fromString && /^(true|false|1|0)$/.test(lexical)) {\n return V.bool(lexical === 'true' || lexical === '1');\n }\n return V.fail('Invalid boolean cast');\n};\n\nconst integerOf = (n: V.Num): bigint => {\n if (n.kind === 0) return n.v;\n if (n.kind === 1) return BigInt(BigDecimal.format(BigDecimal.truncate(n.v)).split('.')[0] ?? '0');\n if (!Number.isFinite(n.v)) return V.fail('Cannot cast NaN/INF to integer');\n return BigInt(Math.trunc(n.v));\n};\n\nconst castInteger = (source: CastSource): Term.Literal => {\n const { target, dtNode, numeric, isBool, boolValue, fromString, lexical } = source;\n const value: bigint = isBool\n ? boolValue\n ? 1n\n : 0n\n : Option.isSome(numeric)\n ? integerOf(numeric.value)\n : fromString && /^[+-]?\\d+$/.test(lexical)\n ? BigInt(lexical)\n : V.fail('Invalid integer cast');\n const lit = new Term.Literal(value.toString(), dtNode);\n return Xsd.isValidLexical(target, lit.value) ? lit : V.fail('Integer out of range');\n};\n\nconst castDecimal = ({ numeric, isBool, boolValue, fromString, lexical }: CastSource) => {\n if (isBool) return V.numLiteral({ kind: 1, v: BigDecimal.fromBigInt(boolValue ? 1n : 0n) });\n if (Option.isSome(numeric)) {\n const n = numeric.value;\n if (n.kind === 0 || n.kind === 1) return V.numLiteral({ kind: 1, v: V.toDecimal(n) });\n if (!Number.isFinite(n.v)) return V.fail('Cannot cast NaN/INF to decimal');\n return V.numLiteral({ kind: 1, v: BigDecimal.fromNumberUnsafe(n.v) });\n }\n if (fromString && /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)$/.test(lexical)) {\n return V.numLiteral({ kind: 1, v: BigDecimal.fromStringUnsafe(lexical.replace(/\\.$/, '')) });\n }\n return V.fail('Invalid decimal cast');\n};\n\nconst floatingOf = (lexical: string): number =>\n lexical === 'INF' || lexical === '+INF'\n ? Infinity\n : lexical === '-INF'\n ? -Infinity\n : Number(lexical);\n\nconst castFloating = (source: CastSource): Term.Literal => {\n const { target, numeric, isBool, boolValue, fromString, lexical } = source;\n const kind = target === V.dt.double.value ? 3 : 2;\n const value = isBool\n ? boolValue\n ? 1\n : 0\n : Option.isSome(numeric)\n ? V.toNumber(numeric.value)\n : fromString && Xsd.isValidLexical(target, lexical)\n ? floatingOf(lexical)\n : V.fail('Invalid floating point cast');\n return V.numLiteral({ kind, v: kind === 2 ? Math.fround(value) : value });\n};\n\nconst castDateTime = ({ target, dtNode, l, fromString, lexical }: CastSource): Term.Literal => {\n if (l.datatype.value === target && Xsd.isValidLexical(target, l.value)) return l;\n if (l.datatype.value === `${V.XSD}date` && Xsd.isValidLexical(l.datatype.value, l.value)) {\n // A valid `xsd:date` always matches.\n const m = /^(-?\\d+-\\d\\d-\\d\\d)(.*)$/.exec(l.value);\n if (m === null) return V.fail('Invalid date');\n return new Term.Literal(`${m[1]}T00:00:00${m[2]}`, dtNode);\n }\n if (fromString && Xsd.isValidLexical(target, lexical)) return new Term.Literal(lexical, dtNode);\n return V.fail('Invalid dateTime cast');\n};\n\n/** Other XSD types: from strings with a valid lexical form, or the same type. */\nconst castOther = ({ target, dtNode, l, fromString, lexical }: CastSource): Term.Literal => {\n if (l.datatype.value === target) return l;\n if (fromString && Xsd.isValidLexical(target, lexical)) return new Term.Literal(lexical, dtNode);\n return V.fail(`Invalid cast to ${target}`);\n};\n\nconst castTo = (target: string, a: Term.Term): Term.Literal => {\n if (target === Term.XSD_STRING) {\n if (Term.isLiteral(a) && a.language !== '')\n return V.fail('Cannot cast a language-tagged string');\n return V.simple(castString(a));\n }\n const l = literalArg(a);\n if (l.language !== '') return V.fail('Cannot cast a language-tagged string');\n const isBool =\n l.datatype.value === V.dt.boolean.value && Xsd.isValidLexical(l.datatype.value, l.value);\n const source: CastSource = {\n target,\n dtNode: Term.namedNode(target),\n l,\n numeric: V.numeric(l),\n isBool,\n boolValue: isBool && (l.value === 'true' || l.value === '1'),\n fromString: V.isSimpleString(l),\n lexical: l.value.trim(),\n };\n if (target === V.dt.boolean.value) return castBoolean(source);\n if (XSD_INTEGER_TYPES.has(target)) return castInteger(source);\n if (target === V.dt.decimal.value) return castDecimal(source);\n if (target === V.dt.double.value || target === V.dt.float.value) return castFloating(source);\n if (target === V.dt.dateTime.value) return castDateTime(source);\n return castOther(source);\n};\n\nconst CASTABLE: ReadonlyMap<string, true> = StringMap.setOf([\n Term.XSD_STRING,\n `${V.XSD}boolean`,\n `${V.XSD}decimal`,\n `${V.XSD}float`,\n `${V.XSD}double`,\n `${V.XSD}dateTime`,\n `${V.XSD}date`,\n `${V.XSD}time`,\n ...XSD_INTEGER_TYPE_NAMES,\n]);\n\n/**\n * Whether an IRI is an XSD constructor function (cast) supported by this\n * implementation.\n *\n * @since 0.1.0\n * @category casts\n */\nexport const isCast = (iri: string): boolean => CASTABLE.has(iri);\n\n/**\n * Casts a term to an XSD datatype (`xsd:integer(?x)` etc.). Throws an\n * expression error when the cast is not possible.\n *\n * @since 0.1.0\n * @category casts\n */\nexport const cast = (datatype: string, term: Term.GroundTerm): Term.Literal => {\n if (Term.isBlankNode(term) || Term.isTriple(term)) return V.fail('Cannot cast');\n if (Term.isNamedNode(term) && datatype !== Term.XSD_STRING) return V.fail('Cannot cast an IRI');\n return castTo(datatype, term);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,QAAQ,MAA0B,IAAI,YAAY,CAAC,CAAC,OAAO,CAAC;AAElE,MAAM,OAAO,UACX,MAAM,KAAK,QAAQ,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;;AAGnE,MAAM,SAAS,MAAqC,MAAM,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAC;;AAGzF,MAAM,UAAU,GAAe,cAC7B,MAAM,EAAE,SAAS,SAAS,CAAC,CAAC,KAAK,MAAM,IAAI,SAAS;AAEtD,MAAM,OAAO,KAAiB,WAAmB,aAAqB,iBAA0B;CAC9F,MAAM,SAAS,OAAO,IAAI,MAAM,IAAI;CACpC,MAAM,QAAQ,KAAK,MAAM,IAAI,SAAS,IAAI,eAAe,SAAS,IAAI;CACtE,MAAM,MAAM,IAAI,WAAW,KAAK;CAChC,IAAI,IAAI,GAAG;CACX,IAAI,IAAI,UAAU;CAClB,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM;EAChC,MAAM,OAAO,OAAQ,UAAU,OAAO,IAAI,CAAC,IAAK,IAAK;EACrD,IAAI,cAAc,IAAI,QAAQ,cAAc,KAAK;OAC5C,IAAI,QAAQ,IAAI,KAAK;CAC5B,CAAC;CACD,OAAO;AACT;AAEA,MAAM,QAAQ,GAAW,MAAe,KAAK,IAAM,MAAO,KAAK;AAC/D,MAAM,QAAQ,GAAW,MAAe,MAAM,IAAM,KAAM,KAAK;;AAG/D,MAAM,YAAY,UAChB,MAAM,KAAK,OAAO,MAAM,EAAA,CAAG,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;AAkBnE,MAAM,YAAoC;CAbxC;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAG;CAAI;CAAI;CAAG;CAAG;CAAI;CAAI;CAAG;CAAG;CAC9F;CAAI;CAAG;CAAG;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAC7F;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;AAWM,CAAC,CAAC,KAAK,GAAG,OAAO;CAC7D;CACA,GAAG,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,IAAI;CACrD;CACA,GAAG,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI,IAAI,KAAK,KAAM,IAAI,IAAK;AACpF,EAAE;AAEF,MAAa,OAAO,UAA0B;CAC5C,MAAM,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,IAAI;CACtC,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;CACT,MAAM,OAAO,IAAI,SAAS,EAAE,MAAM;CAClC,OAAO,GAAG,EAAE,CAAC,CAAC,SAAS,QAAQ;EAC7B,IAAI,IAAI;EACR,IAAI,IAAI;EACR,IAAI,IAAI;EACR,IAAI,IAAI;EACR,UAAU,SAAS,EAAE,GAAG,GAAG,GAAG,QAAQ;GACpC,MAAM,IACJ,IAAI,KACC,IAAI,IAAM,CAAC,IAAI,IAChB,IAAI,KACD,IAAI,IAAM,CAAC,IAAI,IAChB,IAAI,KACF,IAAI,IAAI,IACR,KAAK,IAAI,CAAC;GACpB,MAAM,MAAM;GACZ,IAAI;GACJ,IAAI;GACJ,IAAK,IAAI,KAAM,IAAI,IAAI,KAAK,KAAK,UAAU,MAAM,IAAI,GAAG,IAAI,IAAI,KAAM,GAAG,CAAC,IAAK;GAC/E,IAAI;EACN,CAAC;EACD,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,IAAK;CAClB,CAAC;CACD,MAAM,sBAAM,IAAI,yBAAS,IAAI,YAAY,EAAE,CAAC;CAC5C;EAAC;EAAI;EAAI;EAAI;CAAE,CAAC,CAAC,SAAS,GAAG,MAAM,IAAI,UAAU,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;CACtE,OAAO,IAAI,IAAI,WAAW,IAAI,MAAM,CAAC;AACvC;AAIA,MAAM,YAAY,MAAM,EAAE;AAC1B,MAAM,cAAc,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;AACtC,MAAM,cAAc,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;AACtC,MAAM,cAAc,MAAM,EAAE;AAE5B,MAAa,QAAQ,UAA0B;CAC7C,MAAM,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK;CACvC,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;CACT,MAAM,OAAO,IAAI,SAAS,EAAE,MAAM;CAElC,MAAM,oBAAI,IAAI,yBAAS,IAAI,YAAY,GAAM,CAAC;CAC9C,MAAM,QAAQ,MAAc,EAAE,SAAS,IAAI,CAAC;CAC5C,OAAO,GAAG,EAAE,CAAC,CAAC,SAAS,QAAQ;EAC7B,UAAU,SAAS,MAAM,EAAE,SAAS,IAAI,GAAG,KAAK,UAAU,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;EAC3E,YAAY,SAAS,MACnB,EAAE,SAAS,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,CACpF;EACA,IAAI,IAAI;EACR,IAAI,IAAI;EACR,IAAI,IAAI;EACR,IAAI,IAAI;EACR,IAAI,IAAI;EACR,YAAY,SAAS,MAAM;GACzB,MAAM,IACJ,IAAI,KACC,IAAI,IAAM,CAAC,IAAI,IAChB,IAAI,KACF,IAAI,IAAI,IACR,IAAI,KACD,IAAI,IAAM,IAAI,IAAM,IAAI,IACzB,IAAI,IAAI;GAClB,MAAM,IACJ,IAAI,KAAK,aAAa,IAAI,KAAK,aAAa,IAAI,KAAK,cAAiB;GACxE,MAAM,IAAK,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,IAAK;GAC/C,IAAI;GACJ,IAAI;GACJ,IAAI,KAAK,GAAG,EAAE;GACd,IAAI;GACJ,IAAI;EACN,CAAC;EACD,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,IAAK;CAClB,CAAC;CACD,OAAO,SAAS;EAAC;EAAI;EAAI;EAAI;EAAI;CAAE,CAAC;AACtC;AAIA,MAAM,OAAO;CACX;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CACpF;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CACpF;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CACpF;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CACpF;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CACpF;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CACpF;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CACpF;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;CAAY;AACtF,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC;AAElB,MAAa,UAAU,UAA0B;CAC/C,MAAM,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK;CACvC,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;CACT,IAAI,KAAK;CACT,MAAM,OAAO,IAAI,SAAS,EAAE,MAAM;CAElC,MAAM,oBAAI,IAAI,yBAAS,IAAI,YAAY,GAAM,CAAC;CAC9C,MAAM,QAAQ,MAAc,EAAE,SAAS,IAAI,CAAC;CAC5C,OAAO,GAAG,EAAE,CAAC,CAAC,SAAS,QAAQ;EAC7B,UAAU,SAAS,MAAM,EAAE,SAAS,IAAI,GAAG,KAAK,UAAU,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;EAC3E,YAAY,SAAS,MAAM;GACzB,MAAM,IAAI,KAAK,IAAI,EAAE;GACrB,MAAM,IAAI,KAAK,IAAI,CAAC;GACpB,MAAM,KAAK,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAK,MAAM;GAC7C,MAAM,KAAK,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE,IAAK,MAAM;GAC9C,EAAE,SAAS,IAAI,GAAI,KAAK,IAAI,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,KAAM,CAAC;EAC9D,CAAC;EACD,IAAI,IAAI;EACR,IAAI,IAAI;EACR,IAAI,IAAI;EACR,IAAI,IAAI;EACR,IAAI,IAAI;EACR,IAAI,IAAI;EACR,IAAI,IAAI;EACR,IAAI,KAAK;EACT,KAAK,SAAS,GAAG,MAAM;GACrB,MAAM,KAAK,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE;GAChD,MAAM,KAAM,IAAI,IAAM,CAAC,IAAI;GAC3B,MAAM,KAAM,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,IAAK;GAG1C,MAAM,MAFK,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE,MACnC,IAAI,IAAM,IAAI,IAAM,IAAI,KACb;GACxB,KAAK;GACL,IAAI;GACJ,IAAI;GACJ,IAAK,IAAI,KAAM;GACf,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAK,KAAK,KAAM;EAClB,CAAC;EACD,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,IAAK;EAChB,KAAM,KAAK,KAAM;CACnB,CAAC;CACD,OAAO,SAAS;EAAC;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;EAAI;CAAE,CAAC;AAClD;AAIA,MAAM,OAAO;CACX;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC,CAAC,KAAK,MAAM,OAAO,KAAK,GAAG,CAAC;AAE7B,MAAM,UAAU,MAAM,OAAO;AAC7B,MAAM,UAAU,GAAW,OAAgB,KAAK,IAAM,KAAM,MAAM,KAAO;AAEzE,MAAM,eAAe,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;AAKvC,MAAM,cAAc,OAAe,MAAgB,aAA6B;CAC9E,MAAM,IAAI,IAAI,KAAK,KAAK,GAAG,KAAK,IAAI,KAAK;CACzC,IAAI,IAAI;CACR,MAAM,OAAO,IAAI,SAAS,EAAE,MAAM;CAElC,MAAM,oBAAI,IAAI,yBAAS,IAAI,YAAY,GAAM,CAAC;CAC9C,MAAM,QAAQ,MAAc,EAAE,aAAa,IAAI,CAAC;CAChD,OAAO,GAAG,GAAG,CAAC,CAAC,SAAS,QAAQ;EAC9B,UAAU,SAAS,MAAM,EAAE,aAAa,IAAI,GAAG,KAAK,aAAa,MAAM,IAAI,CAAC,CAAC,CAAC;EAC9E,aAAa,SAAS,MAAM;GAC1B,MAAM,IAAI,KAAK,IAAI,EAAE;GACrB,MAAM,IAAI,KAAK,IAAI,CAAC;GACpB,MAAM,KAAK,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE,IAAK,KAAK;GACjD,MAAM,KAAK,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,IAAK,KAAK;GACnD,EAAE,aAAa,IAAI,GAAI,KAAK,IAAI,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,KAAM,MAAM;EACvE,CAAC;EACD,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM;EAChC,KAAK,SAAS,GAAG,MAAM;GACrB,MAAM,KAAK,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG;GAC1D,MAAM,KAAM,IAAI,IAAM,CAAC,IAAI,SAAS;GACpC,MAAM,KAAM,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,IAAK;GAG1C,MAAM,MAFK,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,MAC7C,IAAI,IAAM,IAAI,IAAM,IAAI,KACb;GACxB,KAAK;GACL,IAAI;GACJ,IAAI;GACJ,IAAK,IAAI,KAAM;GACf,IAAI;GACJ,IAAI;GACJ,IAAI;GACJ,IAAK,KAAK,KAAM;EAClB,CAAC;EACD,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM;EACzC,IAAI;GACD,KAAK,IAAK;GACV,KAAK,IAAK;GACV,KAAK,IAAK;GACV,KAAK,IAAK;GACV,KAAK,IAAK;GACV,KAAK,IAAK;GACV,KAAK,IAAK;GACV,KAAK,KAAM;EACd;CACF,CAAC;CACD,OAAO,EACJ,MAAM,GAAG,QAAQ,CAAC,CAClB,KAAK,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,CAC5C,KAAK,EAAE;AACZ;AAEA,MAAM,OAAO,MAAsB,OAAO,KAAK,GAAG;;AAGlD,MAAM,YACJ,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,OAUZ;CAAC,IAAI,CAAC;CAAG,IAAI,CAAC;CAAG,IAAI,CAAC;CAAG,IAAI,CAAC;CAAG,IAAI,CAAC;CAAG,IAAI,CAAC;CAAG,IAAI,CAAC;CAAG,IAAI,CAAC;AAAC;AAE9E,MAAa,UAAU,UACrB,WACE,OACA,SACE,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,kBACF,GACA,CACF;AAEF,MAAa,UAAU,UACrB,WACE,OACA,SACE,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,kBACF,GACA,CACF;;;;;;;;;;;;AC7YF,MAAa,MAAM;AACnB,MAAa,MAAM;;AAGnB,IAAa,cAAb,MAAyB;CACvB;CACA,YAAY,SAAiB;EAC3B,KAAK,UAAU;CACjB;AACF;;;;;AAMA,MAAa,oBAAuB,MAClC,OAAO,IAAI;CACT,KAAK;CACL,QAAQ,UAAU;EAChB,IAAI,iBAAiB,aAAa,OAAO;EACzC,MAAM;CACR;AACF,CAAC;AAEH,MAAa,QAAQ,YAA2B;CAC9C,MAAM,IAAI,YAAY,OAAO;AAC/B;AAEA,MAAa,KAAK;CAChB,QAAQA,UAAe,GAAG,IAAI,OAAO;CACrC,SAASA,UAAe,GAAG,IAAI,QAAQ;CACvC,SAASA,UAAe,GAAG,IAAI,QAAQ;CACvC,SAASA,UAAe,GAAG,IAAI,QAAQ;CACvC,OAAOA,UAAe,GAAG,IAAI,MAAM;CACnC,QAAQA,UAAe,GAAG,IAAI,OAAO;CACrC,UAAUA,UAAe,GAAG,IAAI,SAAS;CACzC,iBAAiBA,UAAe,GAAG,IAAI,gBAAgB;CACvD,YAAYA,UAAe,GAAG,IAAI,WAAW;CAC7C,eAAeA,UAAe,GAAG,IAAI,cAAc;AACrD;AAEA,MAAa,OAAO,IAAIC,QAAa,QAAQ,GAAG,OAAO;AACvD,MAAa,QAAQ,IAAIA,QAAa,SAAS,GAAG,OAAO;AACzD,MAAa,QAAQ,MAA8B,IAAI,OAAO;;AAS9D,MAAa,kBAAkB,MAC7BC,UAAe,CAAC,KAAK,EAAE,aAAa,MAAM,EAAE,SAAS,UAAU;;AAGjE,MAAa,mBAAmB,MAC9BA,UAAe,CAAC,MAAM,EAAE,aAAa,MAAM,EAAE,SAAS,UAAU;AAElE,MAAa,cAAc,OAAe,SACxC,KAAK,aAAa,KACd,IAAID,QAAa,OAAO,GAAG,MAAM,IACjC,KAAK,cAAc,KAAA,IACjB,IAAIA,QAAa,OAAO,GAAG,YAAY,KAAK,QAAQ,IACpD,IAAIA,QAAa,OAAO,GAAG,eAAe,KAAK,UAAU,KAAK,SAAS;AAE/E,MAAa,UAAU,UAAgC,IAAIA,QAAa,OAAO,GAAG,MAAM;;AAkBxF,MAAM,2BAAW,IAAI,QAA0C;AAE/D,MAAM,cAAc,MAClB,UAAU,SAAS,GAAG,SAAS,IAC3B,OAAO,KAAK;CAAE,MAAM;CAAG,GAAG,EAAE;AAAM,CAAC,IACnC,UAAU,SAAS,GAAG,SAAS,IAC7B,OAAO,KAAK;CAAE,MAAM;CAAG,GAAG,EAAE;AAAM,CAAC,IACnC,UAAU,SAAS,GAAG,OAAO,IAC3B,OAAO,KAAK;CAAE,MAAM;CAAG,GAAG,EAAE;AAAM,CAAC,IACnC,UAAU,SAAS,GAAG,QAAQ,IAC5B,OAAO,KAAK;CAAE,MAAM;CAAG,GAAG,EAAE;AAAM,CAAC,IACnC,OAAO,KAAK;;AAGxB,MAAa,WAAW,MAAqC;CAC3D,IAAI,CAACC,UAAe,CAAC,KAAK,EAAE,aAAa,IAAI,OAAO,OAAO,KAAK;CAChE,MAAM,SAAS,SAAS,IAAI,CAAC;CAC7B,IAAI,WAAW,KAAA,GAAW,OAAO;CACjC,MAAM,IAAI,EAAE,SAAS;CACrB,MAAM,SACJC,kBAAsB,CAAC,KAAKC,eAAmB,GAAG,EAAE,KAAK,IACrD,WAAWC,QAAY,CAAC,CAAC,IACzB,OAAO,KAAK;CAClB,SAAS,IAAI,GAAG,MAAM;CACtB,OAAO;AACT;AAEA,MAAa,aAAa,MAA0B,OAAO,OAAO,QAAQ,CAAC,CAAC;AAE5E,MAAa,YAAY,MACvB,EAAE,SAAS,IAAI,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,IAAI,WAAW,eAAe,EAAE,CAAC,IAAI,EAAE;AAEjF,MAAa,aAAa,MACxB,EAAE,SAAS,IAAI,WAAW,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,IAAI,KAAK,eAAe;;AAGvF,MAAa,WAAW,GAAQ,SAAsB;CACpD,IAAI,EAAE,QAAQ,MAAM,OAAO;CAC3B,OAAO,SAAA,IACH;EAAE,MAAM;EAAG,GAAG,UAAU,CAAC;CAAE,IAC3B,SAAA,IACE;EAAE,MAAM;EAAG,GAAG,KAAK,OAAO,SAAS,CAAC,CAAC;CAAE,IACvC;EAAE,MAAM;EAAG,GAAG,SAAS,CAAC;CAAE;AAClC;AAEA,MAAa,cAAc,MACzB,EAAE,SAAS,IACP,IAAIJ,QAAa,EAAE,EAAE,SAAS,GAAG,GAAG,OAAO,IAC3C,EAAE,SAAS,IACT,IAAIA,QAAaK,iBAAqB,EAAE,CAAC,GAAG,GAAG,OAAO,IACtD,EAAE,SAAS,IACT,IAAIL,QAAaM,gBAAoB,KAAK,OAAO,EAAE,CAAC,CAAC,GAAG,GAAG,KAAK,IAChE,IAAIN,QAAaM,gBAAoB,EAAE,CAAC,GAAG,GAAG,MAAM;;AAG9D,MAAa,cAAc,MAAsB;CAC/C,MAAM,IAAI,QAAQ,CAAC;CACnB,OAAO,OAAO,OAAO,CAAC,IAAI,EAAE,QAAQ,KAAK,4BAA4B;AACvE;AAEA,MAAM,iBAAiB;;AAGvB,MAAM,gBAAgB,MAAc,IAA2B,IAAS,OAA0B;CAChG,IAAI,GAAG,SAAS,KAAK,GAAG,SAAS,GAAG;EAClC,MAAM,IAAI,GAAG;EACb,MAAM,IAAI,GAAG;EACb,OAAO,WAAW;GAAE,MAAM;GAAG,GAAG,OAAO,MAAM,IAAI,IAAI,OAAO,MAAM,IAAI,IAAI,IAAI;EAAE,CAAC;CACnF;CACA,IAAI,GAAG,SAAS,KAAK,GAAG,SAAS,GAAG;EAClC,MAAM,IAAI,GAAG;EACb,MAAM,IAAI,GAAG;EACb,IAAI,OAAO,KAAK;GACd,IAAI,WAAW,OAAO,CAAC,GAAG,OAAO,KAAK,kBAAkB;GACxD,OAAO,WAAW;IAAE,MAAM;IAAG,GAAG,cAAc,GAAG,CAAC;GAAE,CAAC;EACvD;EACA,OAAO,WAAW;GAChB,MAAM;GACN,GACE,OAAO,MACH,WAAW,IAAI,GAAG,CAAC,IACnB,OAAO,MACL,WAAW,SAAS,GAAG,CAAC,IACxB,WAAW,SAAS,GAAG,CAAC;EAClC,CAAC;CACH;CAEA,MAAM,IAAI,SAAS,EAAE;CACrB,MAAM,IAAI,SAAS,EAAE;CACrB,MAAM,IAAI,OAAO,MAAM,IAAI,IAAI,OAAO,MAAM,IAAI,IAAI,OAAO,MAAM,IAAI,IAAI,IAAI;CAC7E,OAAO,WAAW,SAAA,IAAiB;EAAE,MAAM;EAAG,GAAG,KAAK,OAAO,CAAC;CAAE,IAAI;EAAE,MAAM;EAAG,GAAG;CAAE,CAAC;AACvF;AAEA,MAAa,cAAc,IAA2B,GAAc,MAA+B;CACjG,MAAM,IAAI,WAAW,CAAC;CACtB,MAAM,IAAI,WAAW,CAAC;CACtB,IAAI,OAAO,KAAK,IAAI,EAAE,MAAM,EAAE,IAAI;CAClC,IAAI,OAAO,OAAO,SAAA,GAAkB,OAAA;CACpC,MAAM,KAAK,QAAQ,GAAG,IAAI;CAC1B,MAAM,KAAK,QAAQ,GAAG,IAAI;CAC1B,OAAO,aAAa,MAAM,IAAI,IAAI,EAAE;AACtC;;AAGA,MAAa,iBACX,GACA,MAC0B;CAC1B,MAAM,QAAQ,WAAW,OAAO,GAAG,CAAC;CACpC,MAAM,SAAS,WAAW,MACxB,OAAO,UAAU,aAAa,WAAW,WAAW,EAAE,CAAC,GACvD;EACE,OAAO;EACP,MAAM;CACR,CACF;CACA,OAAO,WAAW,UAAU,MAAM;AACpC;AAEA,MAAa,UAAU,MAA+B;CACpD,OAAO,UAAU,WAAW,CAAC,CAAC;AAChC;AAEA,MAAM,aAAa,MACjB,WACE,EAAE,SAAS,IACP;CAAE,MAAM;CAAG,GAAG,CAAC,EAAE;AAAE,IACnB,EAAE,SAAS,IACT;CAAE,MAAM;CAAG,GAAG,WAAW,OAAO,EAAE,CAAC;AAAE,IACrC,EAAE,SAAS,IACT;CAAE,MAAM;CAAG,GAAG,CAAC,EAAE;AAAE,IACnB;CAAE,MAAM;CAAG,GAAG,CAAC,EAAE;AAAE,CAC7B;;AAGF,MAAa,cAAc,GAAQ,MAAmB;CACpD,MAAM,OAAO,KAAK,IAAI,EAAE,MAAM,EAAE,IAAI;CACpC,IAAI,QAAA,GAAiB;EACnB,IAAI,EAAE,SAAS,KAAK,EAAE,SAAS,GAAG;GAChC,MAAM,IAAI,EAAE;GACZ,MAAM,IAAI,EAAE;GACZ,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI;EAClC;EACA,MAAM,IAAI,UAAU,CAAC;EACrB,MAAM,IAAI,UAAU,CAAC;EACrB,OAAO,WAAW,WAAW,GAAG,CAAC,IAAI,KAAK,WAAW,cAAc,GAAG,CAAC,IAAI,IAAI;CACjF;CACA,MAAM,IAAI,SAAS,QAAQ,GAAG,IAAI,CAAC;CACnC,MAAM,IAAI,SAAS,QAAQ,GAAG,IAAI,CAAC;CACnC,IAAI,OAAO,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,GAAG,OAAO;CAC/C,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI;AAClC;AAMA,MAAM,aAAwCC,MAAgB;CAC5D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AASD,MAAa,aAAa,MAA2C;CACnE,IAAI,CAACN,UAAe,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,WAAA,mCAAc,GAAG,OAAO,OAAO,KAAK;CAChF,MAAM,QAAQ,EAAE,SAAS,MAAM,MAAM,EAAU;CAC/C,IAAI,CAAC,WAAW,IAAI,KAAK,KAAK,CAACE,eAAmB,EAAE,SAAS,OAAO,EAAE,KAAK,GACzE,OAAO,OAAO,KAAK;CAErB,MAAM,IAAIC,QAAY,CAAC;CACvB,IAAI,CAAC,UAAU,SAAS,GAAG,UAAU,GAAG,OAAO,OAAO,KAAK;CAC3D,OAAO,OAAO,KAAK;EACjB,MAAM,UAAU,kBAAkB,aAAa;EAC/C,QAAQ,EAAE;EACV,OAAO,EAAE,aAAa,KAAA;CACxB,CAAC;AACH;AAEA,MAAM,iBAAiB;AAEvB,MAAM,SAAS,OAAO,KAAK,EAAE;AAC7B,MAAM,OAAO,OAAO,KAAK,CAAC;AAC1B,MAAM,QAAQ,OAAO,KAAK,CAAC;;AAG3B,MAAa,gBAAgB,GAAc,MAAwC;CACjF,IAAI,EAAE,SAAS,EAAE,MAAM,OAAO,OAAO,KAAK;CAC1C,IAAI,EAAE,UAAU,EAAE,OAAO;EACvB,MAAM,OAAO,EAAE,SAAS,EAAE;EAC1B,IAAI,KAAK,IAAI,IAAI,KAAK,gBAAgB,OAAO,OAAO,KAAK;EACzD,OAAO,OAAO,IAAI,SAAS;CAC7B;CACA,OAAO,EAAE,SAAS,EAAE,SAAS,SAAS,EAAE,SAAS,EAAE,SAAS,QAAQ;AACtE;AAQA,MAAa,iBAAiB,MAA+C;CAC3E,IAAI,CAACH,UAAe,CAAC,GAAG,OAAO,OAAO,KAAK;CAC3C,MAAM,IAAI,EAAE,SAAS;CACrB,IAAI,MAAM,+CAAoB,MAAM,sDAA2B,MAAM,sDACnE,OAAO,OAAO,KAAK;CAErB,IAAI,CAACE,eAAmB,GAAG,EAAE,KAAK,GAAG,OAAO,OAAO,KAAK;CACxD,MAAM,IAAIC,QAAY,CAAC;CACvB,OAAO,UAAU,SAAS,GAAG,UAAU,IACnC,OAAO,KAAK;EAAE,MAAM,EAAE,MAAM,EAAU;EAAG,QAAQ,EAAE;EAAQ,SAAS,EAAE;CAAQ,CAAC,IAC/E,OAAO,KAAK;AAClB;;AAOA,MAAa,qBAAqB,GAAW,MAAsB;CACjE,IAAI,MAAM,GAAG,OAAO;CACpB,MAAM,IAAI,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM;CAErC,IAAI,IAAI;CACR,WAAW;EACT,IAAI,KAAK,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,OAAO;EAC1D;EACA,OAAO;CACT,CAAC;CACD,IAAI,IAAI,GAAG;EACT,MAAM,IAAI,EAAE,WAAW,CAAC;EACxB,MAAM,IAAI,EAAE,WAAW,CAAC;EACxB,MAAM,KAAK,KAAK,SAAU,KAAK;EAE/B,IAAI,QADO,KAAK,SAAU,KAAK,QAChB,OAAO,KAAK,IAAI;EAC/B,OAAO,IAAI,IAAI,KAAK;CACtB;CACA,OAAO,EAAE,SAAS,EAAE,SAAS,KAAK,EAAE,SAAS,EAAE,SAAS,IAAI;AAC9D;AAMA,MAAM,oBAAoB,MACxBH,UAAe,CAAC,KAChB,EAAE,SAAS,UAAU,8CACrBE,eAAmB,EAAE,SAAS,OAAO,EAAE,KAAK;AAE9C,MAAM,gBAAgB,MAA6B,EAAE,UAAU,UAAU,EAAE,UAAU;;;;;AAMrF,MAAa,mBAAmB,GAAc,MAAyB;CACrE,MAAM,IAAI,QAAQ,CAAC;CACnB,MAAM,IAAI,QAAQ,CAAC;CACnB,IAAI,OAAO,OAAO,CAAC,KAAK,OAAO,OAAO,CAAC,GAAG,OAAO,WAAW,EAAE,OAAO,EAAE,KAAK;CAC5E,IAAI,eAAe,CAAC,KAAK,eAAe,CAAC,GAAG,OAAO,kBAAkB,EAAE,OAAO,EAAE,KAAK;CACrF,IACEF,UAAe,CAAC,KAChBA,UAAe,CAAC,KAChB,EAAE,aAAa,MACf,EAAE,aAAa,EAAE,YACjB,EAAE,cAAc,EAAE,WAElB,OAAO,kBAAkB,EAAE,OAAO,EAAE,KAAK;CAE3C,IAAI,iBAAiB,CAAC,KAAK,iBAAiB,CAAC,GAC3C,OAAO,OAAO,aAAa,CAAC,CAAC,IAAI,OAAO,aAAa,CAAC,CAAC;CAEzD,MAAM,KAAK,UAAU,CAAC;CACtB,MAAM,KAAK,UAAU,CAAC;CACtB,IAAI,OAAO,OAAO,EAAE,KAAK,OAAO,OAAO,EAAE,GAAG;EAC1C,MAAM,IAAI,aAAa,GAAG,OAAO,GAAG,KAAK;EACzC,IAAI,OAAO,OAAO,CAAC,GAAG,OAAO,EAAE;EAC/B,OAAO,KAAK,+BAA+B;CAC7C;CACA,MAAM,KAAK,cAAc,CAAC;CAC1B,MAAM,KAAK,cAAc,CAAC;CAC1B,IAAI,OAAO,OAAO,EAAE,KAAK,OAAO,OAAO,EAAE,GAAG;EAC1C,MAAM,IAAI,GAAG;EACb,MAAM,IAAI,GAAG;EACb,IAAI,EAAE,WAAW,EAAE,QAAQ,OAAO,KAAK,KAAK,EAAE,UAAU,EAAE,OAAO;EACjE,IAAI,EAAE,YAAY,EAAE,SAAS,OAAO,KAAK,KAAK,EAAE,SAAS,EAAE,MAAM;EACjE,OAAO,KAAK,mCAAmC;CACjD;CACA,OAAO,KAAK,qBAAqB;AACnC;AAEA,MAAM,kBAAkB,MACtB,EAAE,aAAa,MAAMO,gBAAoB,EAAE,SAAS,KAAK;;AAG3D,MAAa,UAAU,GAAc,MAA0B;CAC7D,MAAM,KAAKC,SAAc,CAAC;CAC1B,MAAM,KAAKA,SAAc,CAAC;CAC1B,IAAI,MAAM,IAAI;EACZ,IAAI,CAAC,MAAM,CAAC,IAAI,OAAO;EACvB,OACE,OAAO,EAAE,SAAS,EAAE,OAAO,KAAK,OAAO,EAAE,WAAW,EAAE,SAAS,KAAK,OAAO,EAAE,QAAQ,EAAE,MAAM;CAEjG;CACA,IAAI,CAACR,UAAe,CAAC,KAAK,CAACA,UAAe,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE;CACjE,MAAM,IAAI,QAAQ,CAAC;CACnB,MAAM,IAAI,QAAQ,CAAC;CACnB,IAAI,OAAO,OAAO,CAAC,KAAK,OAAO,OAAO,CAAC,GAAG,OAAO,WAAW,EAAE,OAAO,EAAE,KAAK,MAAM;CAClF,IAAI,EAAE,QAAQ,EAAE,KAAK,OAAO;CAC5B,IAAI,eAAe,CAAC,KAAK,eAAe,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE;CACjE,IAAI,iBAAiB,CAAC,KAAK,iBAAiB,CAAC,GAAG,OAAO,aAAa,CAAC,MAAM,aAAa,CAAC;CACzF,MAAM,KAAK,UAAU,CAAC;CACtB,MAAM,KAAK,UAAU,CAAC;CACtB,IAAI,OAAO,OAAO,EAAE,KAAK,OAAO,OAAO,EAAE,GAAG;EAC1C,IAAI,GAAG,MAAM,SAAS,GAAG,MAAM,MAAM,OAAO;EAC5C,MAAM,IAAI,aAAa,GAAG,OAAO,GAAG,KAAK;EACzC,IAAI,OAAO,OAAO,CAAC,GAAG,OAAO,KAAK,+BAA+B;EACjE,OAAO,EAAE,UAAU;CACrB;CACA,MAAM,KAAK,cAAc,CAAC;CAC1B,MAAM,KAAK,cAAc,CAAC;CAC1B,IAAI,OAAO,OAAO,EAAE,KAAK,OAAO,OAAO,EAAE,GACvC,OAAO,GAAG,MAAM,WAAW,GAAG,MAAM,UAAU,GAAG,MAAM,YAAY,GAAG,MAAM;CAE9E,IAAI,EAAE,aAAa,MAAM,EAAE,aAAa,IAEtC,OAAO;CAIT,IACE,eAAe,CAAC,KAChB,eAAe,CAAC,KAChBS,aAAiB,CAAC,KAClBA,aAAiB,CAAC,KAClB,EAAE,SAAS,UAAU,EAAE,SAAS,OAEhC,OAAO;CAET,OAAO,KAAK,yBAAyB;AACvC;;AAGA,MAAM,UAAU,MACd,EAAE,SAAS,IACP,EAAE,MAAM,KACR,EAAE,SAAS,IACT,CAAC,WAAW,OAAO,EAAE,CAAC,IACtB,EAAE,EAAE,MAAM,KAAK,OAAO,MAAM,EAAE,CAAC;AAEvC,MAAa,OAAO,MAA0B;CAC5C,IAAI,CAACT,UAAe,CAAC,GAAG,OAAO,KAAK,sBAAsB;CAC1D,MAAM,IAAI,EAAE,SAAS;CACrB,IAAI,MAAM,4CAAiB;EACzB,IAAI,CAACE,eAAmB,GAAG,EAAE,KAAK,GAAG,OAAO,KAAK,iBAAiB;EAClE,OAAO,aAAa,CAAC;CACvB;CACA,IAAI,EAAE,aAAa,MAAM,MAAM,2CAAiB,OAAO,IAAI,WAAW,EAAE,KAAK;CAC7E,IAAID,kBAAsB,CAAC,GAAG;EAC5B,MAAM,IAAI,QAAQ,CAAC;EACnB,OAAO,OAAO,OAAO,CAAC,KAAK,OAAO,EAAE,KAAK;CAC3C;CACA,OAAO,KAAK,qCAAqC;AACnD;;AAGA,MAAM,YAAY,MAChBS,YAAiB,CAAC,IACd,IACAC,YAAiB,CAAC,IAChB,IACAX,UAAe,CAAC,IACd,IACAQ,SAAc,CAAC,IACb,IACA;;AAGZ,MAAM,uBAAuB,GAAiB,MAA4B;CAGxE,MAAM,WAAW,OAAO,UAAU,gBAAgB,GAAG,CAAC,CAAC;CACvD,IAAI,OAAO,UAAU,QAAQ,GAAG;EAC9B,MAAM,IAAI,SAAS;EACnB,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,MAAM,GAAG,OAAO;EACxC,IAAI,MAAM,KAAK,EAAE,QAAQ,EAAE,KAAK,OAAO;CACzC;CAEA,MAAM,KAAK,EAAE,aAAa,KAAK,IAAI,EAAE,SAAS,UAAU,4CAAkB,IAAI;CAC9E,MAAM,KAAK,EAAE,aAAa,KAAK,IAAI,EAAE,SAAS,UAAU,4CAAkB,IAAI;CAC9E,IAAI,OAAO,IAAI,OAAO,KAAK;CAC3B,OACE,kBAAkB,EAAE,SAAS,OAAO,EAAE,SAAS,KAAK,KACpD,kBAAkB,EAAE,UAAU,EAAE,QAAQ,KACxC,kBAAkB,EAAE,OAAO,EAAE,KAAK;AAEtC;;;;;;AAOA,MAAa,gBAAgB,GAAc,MAAyB;CAClE,MAAM,KAAK,SAAS,CAAC;CACrB,MAAM,KAAK,SAAS,CAAC;CACrB,IAAI,OAAO,IAAI,OAAO,KAAK;CAC3B,IAAIR,UAAe,CAAC,KAAKA,UAAe,CAAC,GAAG,OAAO,oBAAoB,GAAG,CAAC;CAC3E,IAAIQ,SAAc,CAAC,KAAKA,SAAc,CAAC,GACrC,OACE,aAAa,EAAE,SAAS,EAAE,OAAO,KACjC,aAAa,EAAE,WAAW,EAAE,SAAS,KACrC,aAAa,EAAE,QAAQ,EAAE,MAAM;CAGnC,KACGE,YAAiB,CAAC,KAAKC,YAAiB,CAAC,OACzCD,YAAiB,CAAC,KAAKC,YAAiB,CAAC,IAE1C,OAAO,kBAAkB,EAAE,OAAO,EAAE,KAAK;CAE3C,OAAO;AACT;;AAGA,MAAa,gBAAgB,GAA6B,MACxD,OAAO,OAAO,CAAC,IACX,OAAO,OAAO,CAAC,IACb,IACA,KACF,OAAO,OAAO,CAAC,IACb,IACA,aAAa,EAAE,OAAO,EAAE,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpgBrC,IAAa,kBAAb,cAAqC,OAAO,YAA6B,CAAC,CAAC,mBAAmB,EAC5F,SAAS,OAAO,OAClB,CAAC,CAAC,CAAC,CAAC;;;;;;;AAQJ,MAAa,SAAS,YAA2BC,KAAO,OAAO;;;;;;;AA4C/D,MAAa,YAAY,cACvBC,YAAsB,OAAO,UAAU,SAAS,CAAC;AAMnD,MAAM,cAAc,MAClBC,UAAe,CAAC,IAAI,IAAIF,KAAO,oBAAoB;AAErD,MAAM,aAAa,MACjBG,gBAAkB,CAAC,IAAI,IAAIH,KAAO,2BAA2B;AAE/D,MAAM,aAAa,MACjBI,eAAiB,CAAC,IAAI,IAAIJ,KAAO,2BAA2B;;AAG9D,MAAM,cAAc,GAAiB,MACnC,EAAE,aAAa,MAAO,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE;AAEvE,MAAM,cAAc,MAA6B,MAAM,KAAK,CAAC;AAE7D,MAAM,cAAc,MAClB,IAAIK,QAAa,OAAO,CAAC,CAAC,CAAC,SAAS,GAAA,GAAQ,OAAO;AAErD,MAAM,SAASC;AAEf,MAAM,YACJ,GACA,MACA,OACiB;CACjB,MAAM,IAAI,OAAO,CAAC;CAClB,OAAOC,WACL,EAAE,SAAS,IACP,IACA,EAAE,SAAS,IACT;EAAE,MAAM;EAAG,GAAG,WAAW,MAAM,EAAE,GAAG;GAAE,OAAO;GAAG;EAAK,CAAC;CAAE,IACxD,EAAE,SAAS,IACT;EAAE,MAAM;EAAG,GAAG,GAAG,EAAE,CAAC;CAAE,IACtB;EAAE,MAAM;EAAG,GAAG,GAAG,EAAE,CAAC;CAAE,CAChC;AACF;AAEA,MAAM,cAAc,MAAsB;CACxC,IAAI,CAAC,OAAO,SAAS,CAAC,KAAK,OAAO,GAAG,GAAG,EAAE,GAAG,OAAO;CACpD,MAAM,IAAI,KAAK,MAAM,IAAI,EAAG;CAC5B,OAAO,MAAM,KAAK,IAAI,IAAI,KAAK;AACjC;;AAGA,MAAM,aAAaC,MAAwB;;AAG3C,MAAa,gBAAgB,SAAiB,OAAe,SAAS,UAAkB;CACtF,MAAM,MAAM,GAAG,SAAS,MAAM,KAAK,MAAM,GAAG;CAC5C,MAAM,SAAS,WAAW,IAAI,GAAG;CACjC,IAAI,WAAW,KAAA,GAAW,OAAO;CACjC,IAAI,SAAS;CACb,IAAI,UAAU,SAAS,MAAM;CAC7B,MAAM,KAAK,KAAK,CAAC,CAAC,SAAS,SAAS;EAClC,IAAI,SAAS,OAAO,SAAS,OAAO,SAAS,KACvC;OAAA,CAAC,QAAQ,SAAS,IAAI,GAAG,WAAW;EAAA,OACnC,IAAI,SAAS,KAAK,SAAS,OAAO,QAAQ,cAAc,EAAE;OAC5D,IAAI,SAAS,KAAK,SAAS,OAAO,QAAQ,uBAAuB,MAAM;OACvE,KAAO,uBAAuB,KAAK,EAAE;CAC5C,CAAC;CAED,MAAM,WAAW,OAAO,UAAU,IAAI,OAAO,QAAQ,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,KACnE,OAAO,aAAa,OAAO,UAAU,IAAI,OAAO,QAAQ,OAAO,CAAC,CAAC,CACnE;CACA,IAAI,OAAO,UAAU,QAAQ,GAAG,OAAOR,KAAO,4BAA4B;CAC1E,MAAM,KAAK,SAAS;CACpB,IAAI,WAAW,OAAO,KAAM,WAAW,MAAM;CAC7C,WAAW,IAAI,KAAK,EAAE;CACtB,OAAO;AACT;;AAGA,MAAM,cAAc,MAAmB,MAAsB;CAC3D,MAAM,IAAI,OAAO,gBAAgB,KAAK,EAAE;CACxC,OAAO,OAAO,OAAO,CAAC,IAAI,UAAU,EAAE,KAAK,CAAC,CAAC,QAAQ;AACvD;AAEA,MAAM,kBAAkB,MAAiB;CACvC,MAAM,MAAM,WAAW,CAAC;CACxB,MAAM,IAAI,IAAI,SAAS;CACvB,IACE,EACE,MAAM,+CACN,MAAM,2CACN,MAAM,2CACN,MAAM,qDAER,CAACS,eAAmB,GAAG,IAAI,KAAK,GAEhC,OAAOT,KAAO,0BAA0B;CAE1C,MAAM,IACJ,yFAAyF,KACvF,IAAI,KACN;CACF,IAAI,MAAM,MAAM,OAAOA,KAAO,mBAAmB;CACjD,OAAO;EACL,MAAM,EAAE;EACR,OAAO,EAAE;EACT,KAAK,EAAE;EACP,OAAO,EAAE;EACT,SAAS,EAAE;EACX,SAAS,EAAE;EACX,IAAI,EAAE;CACR;AACF;AAEA,MAAM,oBAAoB,OAAuB;CAC/C,IAAI,OAAO,KAAK,OAAO;CACvB,MAAM,OAAO,GAAG,WAAW,GAAG,IAAI,MAAM;CACxC,MAAM,IAAI,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC;CAC/B,MAAM,KAAK,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC;CAChC,IAAI,MAAM,KAAK,OAAO,GAAG,OAAO;CAChC,OAAO,GAAG,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,KAAK,KAAK,KAAK,IAAI,GAAG,GAAG,KAAK;AAChE;AAEA,MAAM,gBAAgB,MACpB,mBAAmB,CAAC,CAAC,CAAC,QACpB,aACC,MAAM,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,YAAY,GACtD;AAEF,MAAM,QAAQ,WAAiC;CAM7C,MAAM,IAJQ,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM;EACjD,MAAM,IAAI,KAAK,MAAM,OAAO,IAAI,GAAG;EACnC,OAAO,MAAM,IAAK,IAAI,KAAQ,KAAO,MAAM,IAAK,IAAI,KAAQ,MAAO;CACrE,CACc,CAAC,CAAC,KAAK,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;CACnE,OAAO,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE;AAC/F;AAEA,MAAM,WAAW;;AAiCjB,MAAM,qBAAqB,CAAC,GAAG,OAA2D;CACxF,MAAM,IAAI,UAAU,CAAC;CACrB,MAAM,IAAI,UAAU,CAAC;CACrB,OAAO,WAAW,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAIA,KAAO,wBAAwB;AACpE;;;;;AAMA,MAAM,UACJ,MACA,SACiB;CACjB,MAAM,CAAC,GAAG,KAAK,kBAAkB,IAAI;CACrC,MAAM,IAAI,EAAE,MAAM,QAAQ,EAAE,KAAK;CACjC,OAAO,MAAM,KAAKU,OAAS,EAAE,IAAIC,WAAa,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC;AAC5E;AAEA,MAAM,SAAkB,CAAC,IAAI,QAAQ;CACnC,IAAIC,YAAiB,CAAC,GAAG,OAAO;CAChC,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC;CACvB,OAAOC,UAAe,IAAI,YAAY,KAAA,IAAYC,QAAY,GAAG,IAAI,OAAO,IAAI,CAAC;AACnF;AAEA,MAAM,UACH,OACA,CAAC,OACAJ,OAAS,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;;;;;;;;;AAUlC,MAAa,WAAsD;CACjE,MAAM,CAAC,OACLE,YAAiB,CAAC,KAAKV,UAAe,CAAC,IACnCQ,OAAS,EAAE,KAAK,IAChBV,KAAO,oCAAoC;CACjD,OAAO,CAAC,OAAOU,OAAS,WAAW,CAAC,CAAC,CAAC,QAAQ;CAC9C,UAAU,CAAC,OAAOA,OAAS,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE;CACxD,cAAc,CAAC,KAAK,WAAW;EAC7B,MAAM,IAAI,UAAU,GAAG,CAAC,CAAC,MAAM,YAAY;EAC3C,MAAM,IAAI,UAAU,KAAK,CAAC,CAAC,MAAM,YAAY;EAC7C,IAAI,MAAM,KAAK,OAAOK,KAAO,MAAM,EAAE;EACrC,OAAOA,KAAO,MAAM,KAAK,EAAE,WAAW,GAAG,EAAE,EAAE,CAAC;CAChD;CACA,WAAW,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC;CACjC,KAAK;CACL,KAAK;CACL,QAAQ,MAAM,KAAK,QACjB,IAAI,UAAU,IAAI,qBAAqB,IAAI,IAAI,KAAA,IAAY,UAAU,KAAK,EAAE,CAAC,CAAC,OAAO,GAAG;CAC1F,OAAO,GAAG,QAAQR,WAAa;EAAE,MAAM;EAAG,GAAG,IAAI,OAAO;CAAE,CAAC;CAC3D,MAAM,CAAC,OAAO;EACZ,MAAM,IAAI,OAAO,CAAC;EAClB,OAAOA,WACL,EAAE,SAAS,IACP;GAAE,MAAM;GAAG,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE;EAAE,IACpC,EAAE,SAAS,IACT;GAAE,MAAM;GAAG,GAAG,WAAW,IAAI,EAAE,CAAC;EAAE,IAClC,EAAE,SAAS,IACT;GAAE,MAAM;GAAG,GAAG,KAAK,IAAI,EAAE,CAAC;EAAE,IAC5B;GAAE,MAAM;GAAG,GAAG,KAAK,IAAI,EAAE,CAAC;EAAE,CACtC;CACF;CACA,OAAO,CAAC,OAAO,SAAS,GAAG,QAAQ,KAAK,IAAI;CAC5C,QAAQ,CAAC,OAAO,SAAS,GAAG,SAAS,KAAK,KAAK;CAC/C,QAAQ,CAAC,OAAO,SAAS,GAAG,aAAa,UAAU;CACnD,SAAS,SAAS;EAChB,MAAM,OAAO,KAAK,IAAI,SAAS;EAC/B,MAAM,QAAQ,KAAK;EACnB,MAAM,WACJ,UAAU,KAAA,KACV,MAAM,aAAa,MACnB,KAAK,OAAO,MAAM,EAAE,aAAa,MAAM,YAAY,EAAE,cAAc,MAAM,SAAS;EACpF,MAAM,QAAQ,KAAK,KAAK,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE;EAC9C,OAAO,WAAWI,WAAa,OAAO,KAAK,IAAID,OAAS,KAAK;CAC/D;CACA,SAAS,CAAC,GAAG,OAAO,SAAS;EAC3B,MAAM,MAAM,UAAU,CAAC;EACvB,MAAM,QAAQ,WAAW,IAAI,KAAK;EAClC,MAAM,KAAKM,SAAW,OAAO,KAAK,CAAC;EACnC,MAAM,OAAO,WAAW,EAAE;EAC1B,IAAI,KAAK;EACT,IAAI,QAAQ,KAAA,GAAW,KAAK,OAAO,WAAWA,SAAW,OAAO,GAAG,CAAC,CAAC;EACrE,IAAI,OAAO,MAAM,IAAI,KAAK,OAAO,MAAM,EAAE,GAAG,OAAOL,WAAa,IAAI,GAAG;EACvE,MAAM,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,KAAK,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE;EACvE,OAAOA,WAAa,KAAK,GAAG;CAC9B;CACA,SAAS,CAAC,OAAO,WAAW,WAAW,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;CACjE,UAAU,SAAS;EACjB,MAAM,CAAC,GAAG,SAAS,eAAe;EAClC,MAAM,MAAM,UAAU,CAAC;EACvB,MAAM,KAAK,aAAa,UAAU,OAAO,CAAC,CAAC,OAAO,WAAW,MAAM,CAAC,GAAG,IAAI;EAC3E,IAAI,GAAG,KAAK,EAAE,GAAG;GACf,GAAG,YAAY;GACf,OAAOX,KAAO,0CAA0C;EAC1D;EACA,GAAG,YAAY;EACf,MAAM,OAAO,UAAU,WAAW,CAAC,CAAC,MAAM,QAAQ,kBAAkB,GAAG,QACrE,QAAQ,MAAM,OAAO,QAAQ,OAAO,OAAO,CAC7C;EACA,OAAOW,WAAa,IAAI,MAAM,QAAQ,IAAI,IAAI,GAAG,GAAG;CACtD;CACA,QAAQ,CAAC,OAAO;EACd,MAAM,IAAI,UAAU,CAAC;EACrB,OAAOA,WAAa,EAAE,MAAM,YAAY,GAAG,CAAC;CAC9C;CACA,QAAQ,CAAC,OAAO;EACd,MAAM,IAAI,UAAU,CAAC;EACrB,OAAOA,WAAa,EAAE,MAAM,YAAY,GAAG,CAAC;CAC9C;CACA,iBAAiB,CAAC,OAAOD,OAAS,aAAa,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;CAClE,WAAW,SAAS;EAClB,MAAM,CAAC,GAAG,KAAK,kBAAkB,IAAI;EACrC,OAAOK,KAAO,EAAE,MAAM,SAAS,EAAE,KAAK,CAAC;CACzC;CACA,YAAY,SAAS;EACnB,MAAM,CAAC,GAAG,KAAK,kBAAkB,IAAI;EACrC,OAAOA,KAAO,EAAE,MAAM,WAAW,EAAE,KAAK,CAAC;CAC3C;CACA,UAAU,SAAS;EACjB,MAAM,CAAC,GAAG,KAAK,kBAAkB,IAAI;EACrC,OAAOA,KAAO,EAAE,MAAM,SAAS,EAAE,KAAK,CAAC;CACzC;CACA,YAAY,SAAS,OAAO,OAAO,GAAG,IAAI,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;CAC7D,WAAW,SAAS,OAAO,OAAO,GAAG,GAAG,MAAM,EAAE,MAAM,IAAI,EAAE,MAAM,CAAC;CACnE,OAAO,CAAC,OAAO;EACb,MAAM,IAAI,eAAe,CAAC;EAC1B,OAAO,EAAE,SAAS,KAAA,IAAY,WAAW,OAAO,EAAE,IAAI,CAAC,IAAIf,KAAO,SAAS;CAC7E;CACA,QAAQ,CAAC,OAAO;EACd,MAAM,IAAI,eAAe,CAAC;EAC1B,OAAO,EAAE,UAAU,KAAA,IAAY,WAAW,OAAO,EAAE,KAAK,CAAC,IAAIA,KAAO,UAAU;CAChF;CACA,MAAM,CAAC,OAAO;EACZ,MAAM,IAAI,eAAe,CAAC;EAC1B,OAAO,EAAE,QAAQ,KAAA,IAAY,WAAW,OAAO,EAAE,GAAG,CAAC,IAAIA,KAAO,QAAQ;CAC1E;CACA,QAAQ,CAAC,OAAO;EACd,MAAM,IAAI,eAAe,CAAC;EAC1B,OAAO,EAAE,UAAU,KAAA,IAAY,WAAW,OAAO,EAAE,KAAK,CAAC,IAAIA,KAAO,UAAU;CAChF;CACA,UAAU,CAAC,OAAO;EAChB,MAAM,IAAI,eAAe,CAAC;EAC1B,OAAO,EAAE,YAAY,KAAA,IAAY,WAAW,OAAO,EAAE,OAAO,CAAC,IAAIA,KAAO,YAAY;CACtF;CACA,UAAU,CAAC,OAAO;EAChB,MAAM,IAAI,eAAe,CAAC;EAC1B,IAAI,EAAE,YAAY,KAAA,GAAW,OAAOA,KAAO,YAAY;EACvD,OAAOO,WAAa;GAAE,MAAM;GAAG,GAAG,WAAW,iBAAiB,EAAE,OAAO;EAAE,CAAC;CAC5E;CACA,WAAW,CAAC,OAAO;EACjB,MAAM,IAAI,eAAe,CAAC;EAC1B,IAAI,EAAE,OAAO,KAAA,GAAW,OAAOP,KAAO,aAAa;EACnD,OAAO,IAAIK,QAAa,iBAAiB,EAAE,EAAE,GAAA,GAAQ,eAAe;CACtE;CACA,KAAK,CAAC,OAAOK,OAAS,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE;CAChD,MAAM,GAAG,QAAQ,IAAIL,QAAa,IAAI,IAAI,YAAY,GAAA,GAAQ,QAAQ;CACtE,OAAO,GAAG,QAAQQ,UAAe,YAAY,KAAK,IAAI,MAAM,GAAG;CAC/D,UAAU,GAAG,QAAQH,OAAS,KAAK,IAAI,MAAM,CAAC;CAC9C,KAAK,OAAOO,GAAQ;CACpB,MAAM,OAAOC,IAAS;CACtB,QAAQ,OAAOC,MAAW;CAC1B,QAAQ,OAAOC,MAAW;CAC1B,QAAQ,OAAOC,MAAW;CAC1B,UAAU,CAAC,GAAG,UAAU;EACtB,MAAM,MAAM,UAAU,CAAC,CAAC,CAAC;EACzB,MAAM,MAAM,UAAU,IAAI,CAAC,CAAC;EAC5B,IAAI,CAAC,SAAS,KAAK,GAAG,GAAG,OAAOrB,KAAO,sBAAsB;EAC7D,OAAOsB,QAAa,KAAK,GAAG;CAC9B;CACA,aAAa,CAAC,GAAG,MAAM,SAAS;EAC9B,MAAM,MAAM,UAAU,CAAC,CAAC,CAAC;EACzB,MAAM,MAAM,UAAU,IAAI,CAAC,CAAC;EAC5B,MAAM,IAAI,UAAU,GAAG,CAAC,CAAC;EACzB,IAAI,CAAC,SAAS,KAAK,GAAG,GAAG,OAAOtB,KAAO,sBAAsB;EAC7D,IAAI,MAAM,SAAS,MAAM,OAAO,OAAOA,KAAO,wBAAwB;EACtE,OAAOsB,QAAa,KAAK;GAAE,UAAU;GAAK,WAAW;EAAE,CAAC;CAC1D;CACA,QAAQ,CAAC,GAAG,cAAc;EACxB,MAAM,MAAM,UAAU,CAAC,CAAC,CAAC;EACzB,IAAI,CAACV,YAAiB,QAAQ,GAAG,OAAOZ,KAAO,uBAAuB;EACtE,IAAI,SAAS,UAAA,GAAe,WAAW,SAAS,SAAS,UAAA,GAAe,cAAc,OACpF,OAAOA,KAAO,6CAA6C;EAE7D,OAAO,IAAIK,QAAa,KAAK,QAAQ;CACvC;CACA,WAAW,CAAC,GAAG,OAAOU,KAAO,EAAE,QAAQ,EAAE,GAAG;CAC5C,QAAQ,CAAC,OAAOA,KAAOH,YAAiB,CAAC,CAAC;CAC1C,QAAQ,CAAC,OAAOG,KAAOH,YAAiB,CAAC,CAAC;CAC1C,UAAU,CAAC,OAAOG,KAAOQ,YAAiB,CAAC,CAAC;CAC5C,YAAY,CAAC,OAAOR,KAAOb,UAAe,CAAC,CAAC;CAC5C,YAAY,CAAC,OAAOa,KAAOS,UAAY,CAAC,CAAC;CACzC,UAAU,CAAC,OAAOT,KAAOb,UAAe,CAAC,KAAK,EAAE,aAAa,EAAE;CAC/D,aAAa,CAAC,OAAOa,KAAOb,UAAe,CAAC,KAAK,EAAE,cAAc,KAAA,CAAS;CAC1E,QAAQ,SAAS;EACf,MAAM,CAAC,GAAG,WAAW;EACrB,MAAM,MAAM,UAAU,CAAC;EACvB,MAAM,KAAK,aAAa,UAAU,OAAO,CAAC,CAAC,OAAO,WAAW,MAAM,CAAC,CAAC;EACrE,OAAOa,KAAO,GAAG,KAAK,IAAI,KAAK,CAAC;CAClC;CACA,WAAW,CAAC,OAAOA,KAAOU,SAAc,CAAC,CAAC;CAC1C,SAAS,CAAC,GAAG,GAAG,OAAO;EACrB,IAAI,CAACb,YAAiB,CAAC,KAAK,CAACW,YAAiB,CAAC,GAC7C,OAAOvB,KAAO,6CAA6C;EAE7D,IAAI,CAACY,YAAiB,CAAC,GAAG,OAAOZ,KAAO,iCAAiC;EACzE,OAAO0B,OAAY,GAAG,GAAG,CAAC;CAC5B;CACA,UAAU,CAAC,OAAQD,SAAc,CAAC,IAAI,EAAE,UAAUzB,KAAO,mBAAmB;CAC5E,YAAY,CAAC,OAAQyB,SAAc,CAAC,IAAI,EAAE,YAAYzB,KAAO,mBAAmB;CAChF,SAAS,CAAC,OAAQyB,SAAc,CAAC,IAAI,EAAE,SAASzB,KAAO,mBAAmB;AAC5E;AAMA,MAAM,yBAAgD;CACpD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC,CAAC,KAAK,MAAM2B,MAAQ,CAAC;AACtB,MAAM,oBAAoBC,MAAgB,sBAAsB;;AAGhE,MAAM,qBAAqB,MAAsB;CAC/C,IAAI,OAAO,MAAM,CAAC,GAAG,OAAO;CAC5B,IAAI,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,IAAI,IAAI,QAAQ;CAChD,MAAM,MAAM,KAAK,IAAI,CAAC;CACtB,IAAI,QAAQ,GAAG,OAAO,OAAO,GAAG,GAAG,EAAE,IAAI,OAAO;CAChD,IAAI,OAAO,QAAQ,MAAM,KAAK,OAAO,OAAO,CAAC;CAC7C,OAAOC,gBAAoB,CAAC;AAC9B;AAEA,MAAM,cAAc,MAAyB;CAC3C,IAAIjB,YAAiB,CAAC,GAAG,OAAO,EAAE;CAClC,MAAM,IAAI,WAAW,CAAC;CACtB,MAAMkB,YAAUC,QAAU,CAAC;CAC3B,IAAI,OAAO,OAAOD,SAAO,GAAG;EAC1B,MAAM,IAAIA,UAAQ;EAClB,IAAI,EAAE,SAAS,GAAG,OAAO,EAAE,EAAE,SAAS;EACtC,IAAI,EAAE,SAAS,GAAG;GAChB,MAAM,IAAIE,iBAAqB,EAAE,CAAC;GAClC,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI;EAC7C;EACA,OAAO,kBAAkB,EAAE,CAAC;CAC9B;CACA,IAAI,EAAE,SAAS,UAAA,GAAe,QAAQ,SAASvB,eAAmB,EAAE,SAAS,OAAO,EAAE,KAAK,GACzF,OAAO,EAAE,UAAU,UAAU,EAAE,UAAU,MAAM,SAAS;CAE1D,OAAO,EAAE;AACX;AAgBA,MAAM,eAAe,EAAE,GAAG,SAAS,QAAQ,WAAW,YAAY,cAA0B;CAC1F,IAAI,QAAQ,OAAOM,KAAO,SAAS;CACnC,IAAI,OAAO,OAAO,OAAO,GAAG,OAAOA,KAAOkB,IAAM,CAAC,CAAC;CAClD,IAAI,cAAc,qBAAqB,KAAK,OAAO,GACjD,OAAOlB,KAAO,YAAY,UAAU,YAAY,GAAG;CAErD,OAAOf,KAAO,sBAAsB;AACtC;AAEA,MAAM,aAAa,MAAqB;CACtC,IAAI,EAAE,SAAS,GAAG,OAAO,EAAE;CAC3B,IAAI,EAAE,SAAS,GAAG,OAAO,OAAO,WAAW,OAAO,WAAW,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG;CAChG,IAAI,CAAC,OAAO,SAAS,EAAE,CAAC,GAAG,OAAOA,KAAO,gCAAgC;CACzE,OAAO,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC;AAC/B;AAEA,MAAM,eAAe,WAAqC;CACxD,MAAM,EAAE,QAAQ,QAAQ,SAAS,QAAQ,WAAW,YAAY,YAAY;CAC5E,MAAM,QAAgB,SAClB,YACE,KACA,KACF,OAAO,OAAO,OAAO,IACnB,UAAU,QAAQ,KAAK,IACvB,cAAc,aAAa,KAAK,OAAO,IACrC,OAAO,OAAO,IACdA,KAAO,sBAAsB;CACrC,MAAM,MAAM,IAAIK,QAAa,MAAM,SAAS,GAAG,MAAM;CACrD,OAAOI,eAAmB,QAAQ,IAAI,KAAK,IAAI,MAAMT,KAAO,sBAAsB;AACpF;AAEA,MAAM,eAAe,EAAE,SAAS,QAAQ,WAAW,YAAY,cAA0B;CACvF,IAAI,QAAQ,OAAOO,WAAa;EAAE,MAAM;EAAG,GAAG,WAAW,WAAW,YAAY,KAAK,EAAE;CAAE,CAAC;CAC1F,IAAI,OAAO,OAAO,OAAO,GAAG;EAC1B,MAAM,IAAI,QAAQ;EAClB,IAAI,EAAE,SAAS,KAAK,EAAE,SAAS,GAAG,OAAOA,WAAa;GAAE,MAAM;GAAG,GAAG2B,UAAY,CAAC;EAAE,CAAC;EACpF,IAAI,CAAC,OAAO,SAAS,EAAE,CAAC,GAAG,OAAOlC,KAAO,gCAAgC;EACzE,OAAOO,WAAa;GAAE,MAAM;GAAG,GAAG,WAAW,iBAAiB,EAAE,CAAC;EAAE,CAAC;CACtE;CACA,IAAI,cAAc,6BAA6B,KAAK,OAAO,GACzD,OAAOA,WAAa;EAAE,MAAM;EAAG,GAAG,WAAW,iBAAiB,QAAQ,QAAQ,OAAO,EAAE,CAAC;CAAE,CAAC;CAE7F,OAAOP,KAAO,sBAAsB;AACtC;AAEA,MAAM,cAAc,YAClB,YAAY,SAAS,YAAY,SAC7B,WACA,YAAY,SACV,YACA,OAAO,OAAO;AAEtB,MAAM,gBAAgB,WAAqC;CACzD,MAAM,EAAE,QAAQ,SAAS,QAAQ,WAAW,YAAY,YAAY;CACpE,MAAM,OAAO,WAAA,GAAgB,OAAO,QAAQ,IAAI;CAChD,MAAM,QAAQ,SACV,YACE,IACA,IACF,OAAO,OAAO,OAAO,IACnBgB,SAAW,QAAQ,KAAK,IACxB,cAAcP,eAAmB,QAAQ,OAAO,IAC9C,WAAW,OAAO,IAClBT,KAAO,6BAA6B;CAC5C,OAAOO,WAAa;EAAE;EAAM,GAAG,SAAS,IAAI,KAAK,OAAO,KAAK,IAAI;CAAM,CAAC;AAC1E;AAEA,MAAM,gBAAgB,EAAE,QAAQ,QAAQ,GAAG,YAAY,cAAwC;CAC7F,IAAI,EAAE,SAAS,UAAU,UAAUE,eAAmB,QAAQ,EAAE,KAAK,GAAG,OAAO;CAC/E,IAAI,EAAE,SAAS,UAAU,2CAAkBA,eAAmB,EAAE,SAAS,OAAO,EAAE,KAAK,GAAG;EAExF,MAAM,IAAI,0BAA0B,KAAK,EAAE,KAAK;EAChD,IAAI,MAAM,MAAM,OAAOT,KAAO,cAAc;EAC5C,OAAO,IAAIK,QAAa,GAAG,EAAE,GAAG,WAAW,EAAE,MAAM,MAAM;CAC3D;CACA,IAAI,cAAcI,eAAmB,QAAQ,OAAO,GAAG,OAAO,IAAIJ,QAAa,SAAS,MAAM;CAC9F,OAAOL,KAAO,uBAAuB;AACvC;;AAGA,MAAM,aAAa,EAAE,QAAQ,QAAQ,GAAG,YAAY,cAAwC;CAC1F,IAAI,EAAE,SAAS,UAAU,QAAQ,OAAO;CACxC,IAAI,cAAcS,eAAmB,QAAQ,OAAO,GAAG,OAAO,IAAIJ,QAAa,SAAS,MAAM;CAC9F,OAAOL,KAAO,mBAAmB,QAAQ;AAC3C;AAEA,MAAM,UAAU,QAAgB,MAA+B;CAC7D,IAAI,WAAW,2CAAiB;EAC9B,IAAIE,UAAe,CAAC,KAAK,EAAE,aAAa,IACtC,OAAOF,KAAO,sCAAsC;EACtD,OAAOU,OAAS,WAAW,CAAC,CAAC;CAC/B;CACA,MAAM,IAAI,WAAW,CAAC;CACtB,IAAI,EAAE,aAAa,IAAI,OAAOV,KAAO,sCAAsC;CAC3E,MAAM,SACJ,EAAE,SAAS,UAAA,GAAe,QAAQ,SAASS,eAAmB,EAAE,SAAS,OAAO,EAAE,KAAK;CACzF,MAAM,SAAqB;EACzB;EACA,QAAQI,UAAe,MAAM;EAC7B;EACA,SAASkB,QAAU,CAAC;EACpB;EACA,WAAW,WAAW,EAAE,UAAU,UAAU,EAAE,UAAU;EACxD,YAAY3B,eAAiB,CAAC;EAC9B,SAAS,EAAE,MAAM,KAAK;CACxB;CACA,IAAI,WAAA,GAAgB,QAAQ,OAAO,OAAO,YAAY,MAAM;CAC5D,IAAI,kBAAkB,IAAI,MAAM,GAAG,OAAO,YAAY,MAAM;CAC5D,IAAI,WAAA,GAAgB,QAAQ,OAAO,OAAO,YAAY,MAAM;CAC5D,IAAI,WAAA,GAAgB,OAAO,SAAS,WAAA,GAAgB,MAAM,OAAO,OAAO,aAAa,MAAM;CAC3F,IAAI,WAAA,GAAgB,SAAS,OAAO,OAAO,aAAa,MAAM;CAC9D,OAAO,UAAU,MAAM;AACzB;AAEA,MAAM,WAAsCwB,MAAgB;CAC1DO;CACA,GAAGR,IAAM;CACT,GAAGA,IAAM;CACT,GAAGA,IAAM;CACT,GAAGA,IAAM;CACT,GAAGA,IAAM;CACT,GAAGA,IAAM;CACT,GAAGA,IAAM;CACT,GAAG;AACL,CAAC;;;;;;;;AASD,MAAa,UAAU,QAAyB,SAAS,IAAI,GAAG;;;;;;;;AAShE,MAAa,QAAQ,UAAkB,SAAwC;CAC7E,IAAIJ,YAAiB,IAAI,KAAKE,SAAc,IAAI,GAAG,OAAOzB,KAAO,aAAa;CAC9E,IAAIY,YAAiB,IAAI,KAAK,aAAa,2CAAiB,OAAOZ,KAAO,oBAAoB;CAC9F,OAAO,OAAO,UAAU,IAAI;AAC9B"}
@@ -0,0 +1,111 @@
1
+ import { l as Literal, s as GroundTerm, t as BlankNode } from "./Term-B_4ezyXq.mjs";
2
+ import { s as BuiltInName } from "./Ast-vcw2W-lf.mjs";
3
+ import { t as Bindings } from "./Bindings-DiKpBd7f.mjs";
4
+ import * as Schema from "effect/Schema";
5
+ declare namespace Functions_d_exports {
6
+ export { BuiltIn, BuiltInArgs, ExpressionError, ExtensionFunction, FunctionContext, Registry, builtIns, cast, compileRegex, error, isCast, registry };
7
+ }
8
+ declare const ExpressionError_base: Schema.Class<ExpressionError, Schema.TaggedStruct<"ExpressionError", {
9
+ readonly message: Schema.String;
10
+ }>, import("effect/Cause").YieldableError>;
11
+ /**
12
+ * An expression evaluation error (a SPARQL "type error"): unbound
13
+ * variables, wrong argument types, division by zero, …
14
+ *
15
+ * @since 0.1.0
16
+ * @category errors
17
+ */
18
+ declare class ExpressionError extends ExpressionError_base {}
19
+ /**
20
+ * Signals an expression error from inside a function implementation.
21
+ *
22
+ * @since 0.1.0
23
+ * @category errors
24
+ */
25
+ declare const error: (message: string) => never;
26
+ /**
27
+ * The per-query context of expression evaluation.
28
+ *
29
+ * @since 0.1.0
30
+ * @category models
31
+ */
32
+ interface FunctionContext {
33
+ /** The value of `NOW()`: constant for the whole query. */
34
+ readonly now: Date;
35
+ /** The base IRI used by `IRI()` / `URI()`. */
36
+ readonly baseIri?: string | undefined;
37
+ /** A random number generator in [0, 1). */
38
+ readonly random: () => number;
39
+ /** Returns the blank node for `BNODE(label)` within the current solution. */
40
+ readonly blankNode: (label: string | undefined, solution: Bindings) => BlankNode;
41
+ }
42
+ /**
43
+ * An extension function: receives the evaluated arguments.
44
+ *
45
+ * @since 0.1.0
46
+ * @category models
47
+ */
48
+ type ExtensionFunction = (args: ReadonlyArray<GroundTerm>, context: FunctionContext) => GroundTerm;
49
+ /**
50
+ * A registry of extension functions keyed by IRI.
51
+ *
52
+ * @since 0.1.0
53
+ * @category models
54
+ */
55
+ type Registry = ReadonlyMap<string, ExtensionFunction>;
56
+ /**
57
+ * Creates a registry from a record of IRI → function.
58
+ *
59
+ * @since 0.1.0
60
+ * @category constructors
61
+ */
62
+ declare const registry: (functions: Readonly<Record<string, ExtensionFunction>>) => Registry;
63
+ /** Compiles an XPath regular expression with XPath flags to a JS RegExp. */
64
+ declare const compileRegex: (pattern: string, flags: string, global?: boolean) => RegExp;
65
+ /**
66
+ * The evaluated arguments of a built-in function. Positions beyond the
67
+ * function's arity are `undefined` at runtime; the type assumes the
68
+ * required positions are present (checked by the parser).
69
+ *
70
+ * @since 0.1.0
71
+ * @category models
72
+ */
73
+ type BuiltInArgs = ReadonlyArray<GroundTerm> & {
74
+ readonly 0: GroundTerm;
75
+ readonly 1: GroundTerm;
76
+ readonly 2: GroundTerm;
77
+ };
78
+ /**
79
+ * Implementation of a strict built-in function.
80
+ *
81
+ * @since 0.1.0
82
+ * @category models
83
+ */
84
+ type BuiltIn = (args: BuiltInArgs, context: FunctionContext, solution: Bindings) => GroundTerm;
85
+ /**
86
+ * The strict built-in functions, keyed by canonical name. Functional forms
87
+ * (`BOUND`, `IF`, `COALESCE`, `&&`, `||`, `IN`, `EXISTS`) are handled by the
88
+ * expression evaluator.
89
+ *
90
+ * @since 0.1.0
91
+ * @category built-ins
92
+ */
93
+ declare const builtIns: Partial<Record<BuiltInName, BuiltIn>>;
94
+ /**
95
+ * Whether an IRI is an XSD constructor function (cast) supported by this
96
+ * implementation.
97
+ *
98
+ * @since 0.1.0
99
+ * @category casts
100
+ */
101
+ declare const isCast: (iri: string) => boolean;
102
+ /**
103
+ * Casts a term to an XSD datatype (`xsd:integer(?x)` etc.). Throws an
104
+ * expression error when the cast is not possible.
105
+ *
106
+ * @since 0.1.0
107
+ * @category casts
108
+ */
109
+ declare const cast: (datatype: string, term: GroundTerm) => Literal;
110
+ export { FunctionContext as a, builtIns as c, error as d, isCast as f, ExtensionFunction as i, cast as l, BuiltInArgs as n, Functions_d_exports as o, registry as p, ExpressionError as r, Registry as s, BuiltIn as t, compileRegex as u };
111
+ //# sourceMappingURL=Functions-OQJZP-F6.d.mts.map
@@ -0,0 +1,50 @@
1
+ import { T as Term } from "./Term-B_4ezyXq.mjs";
2
+ import { U as Pattern, _ as Expression, nt as Update, q as Query } from "./Ast-vcw2W-lf.mjs";
3
+ declare namespace Generator_d_exports {
4
+ export { GenerateOptions, print, printExpression, printPattern, printTerm };
5
+ }
6
+ /**
7
+ * @since 0.1.0
8
+ * @category models
9
+ */
10
+ interface GenerateOptions {
11
+ /**
12
+ * Prefixes used to compact IRIs. Defaults to the prologue of the query or
13
+ * update. Pass an empty object to always print full IRIs.
14
+ */
15
+ readonly prefixes?: Readonly<Record<string, string>> | undefined;
16
+ /** Whether to print the prologue (`BASE` / `PREFIX`). Defaults to `true`. */
17
+ readonly prologue?: boolean | undefined;
18
+ /** Indentation unit. Defaults to two spaces. */
19
+ readonly indent?: string | undefined;
20
+ }
21
+ /**
22
+ * Generates SPARQL text for a query or update.
23
+ *
24
+ * @since 0.1.0
25
+ * @category printing
26
+ */
27
+ declare const print: (ast: Query | Update, options?: GenerateOptions) => string;
28
+ /**
29
+ * Generates SPARQL text for an expression.
30
+ *
31
+ * @since 0.1.0
32
+ * @category printing
33
+ */
34
+ declare const printExpression: (expression: Expression, prefixes?: Readonly<Record<string, string>>) => string;
35
+ /**
36
+ * Generates SPARQL text for a graph pattern.
37
+ *
38
+ * @since 0.1.0
39
+ * @category printing
40
+ */
41
+ declare const printPattern: (pattern: Pattern, prefixes?: Readonly<Record<string, string>>) => string;
42
+ /**
43
+ * Generates SPARQL syntax for a term (IRIs are compacted with `prefixes`).
44
+ *
45
+ * @since 0.1.0
46
+ * @category printing
47
+ */
48
+ declare const printTerm: (term: Term, prefixes?: Readonly<Record<string, string>>) => string;
49
+ export { printPattern as a, printExpression as i, Generator_d_exports as n, printTerm as o, print as r, GenerateOptions as t };
50
+ //# sourceMappingURL=Generator-C52mmq01.d.mts.map
@@ -0,0 +1,205 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D8jQpDG7.mjs";
2
+ import { A as escapeString, B as isNamedNode, P as isDefaultGraph, k as escapeIri, q as isVariable } from "./Term-CFLG1qu4.mjs";
3
+ import { r as compact, s as make } from "./PrefixMap-BHFPDLO-.mjs";
4
+ import * as Arr from "effect/Array";
5
+ import * as Option from "effect/Option";
6
+ import * as Predicate from "effect/Predicate";
7
+ import * as Match from "effect/Match";
8
+ import * as Record from "effect/Record";
9
+ // src/sparql/Generator.ts
10
+ /**
11
+ * Generates SPARQL text from the AST.
12
+ *
13
+ * The output is designed to round-trip: parsing the generated text yields
14
+ * an AST that generates the same text again. Expressions and property paths
15
+ * are fully parenthesised, IRIs are compacted with the prologue's prefixes
16
+ * where possible, and numeric/boolean literals use the short syntax when
17
+ * their lexical form allows it.
18
+ *
19
+ * @since 0.1.0
20
+ */
21
+ var Generator_exports = /* @__PURE__ */ __exportAll({
22
+ print: () => print,
23
+ printExpression: () => printExpression,
24
+ printPattern: () => printPattern,
25
+ printTerm: () => printTerm
26
+ });
27
+ const XSD = "http://www.w3.org/2001/XMLSchema#";
28
+ const RDF_TYPE = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
29
+ var Printer = class {
30
+ prefixMap;
31
+ unit;
32
+ constructor(prefixes, indent) {
33
+ this.prefixMap = make(prefixes);
34
+ this.unit = indent;
35
+ }
36
+ iri(node) {
37
+ const c = compact(this.prefixMap, node);
38
+ if (Option.isSome(c)) {
39
+ const [prefix, local] = c.value;
40
+ return `${prefix}:${local}`;
41
+ }
42
+ return `<${escapeIri(node.value)}>`;
43
+ }
44
+ literal(lit) {
45
+ const dt = lit.datatype.value;
46
+ const v = lit.value;
47
+ if (lit.language === "") {
48
+ if (dt === `${XSD}integer` && /^[+-]?[0-9]+$/.test(v)) return v;
49
+ if (dt === `${XSD}decimal` && /^[+-]?[0-9]*\.[0-9]+$/.test(v)) return v;
50
+ if (dt === `${XSD}double` && /^[+-]?(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+)[eE][+-]?[0-9]+$/.test(v)) return v;
51
+ if (dt === `${XSD}boolean` && (v === "true" || v === "false")) return v;
52
+ }
53
+ const lexical = `"${escapeString(v)}"`;
54
+ if (lit.language !== "") return lit.direction === void 0 ? `${lexical}@${lit.language}` : `${lexical}@${lit.language}--${lit.direction}`;
55
+ if (dt === "http://www.w3.org/2001/XMLSchema#string") return lexical;
56
+ return `${lexical}^^${this.iri(lit.datatype)}`;
57
+ }
58
+ term(t) {
59
+ return Match.value(t).pipe(Match.tag("NamedNode", (n) => this.iri(n)), Match.tag("BlankNode", (b) => `_:${b.value}`), Match.tag("Literal", (l) => this.literal(l)), Match.tag("Variable", (v) => `?${v.value}`), Match.tag("DefaultGraph", () => "DEFAULT"), Match.tag("Triple", (x) => `<<( ${this.term(x.subject)} ${this.verb(x.predicate)} ${this.term(x.object)} )>>`), Match.exhaustive);
60
+ }
61
+ verb(t) {
62
+ return isNamedNode(t) && t.value === RDF_TYPE ? "a" : this.term(t);
63
+ }
64
+ path(p) {
65
+ return Match.value(p).pipe(Match.tag("PathLink", (l) => this.verb(l.iri)), Match.tag("PathInverse", (i) => `^(${this.path(i.path)})`), Match.tag("PathSequence", (s) => `(${s.paths.map((x) => this.path(x)).join(" / ")})`), Match.tag("PathAlternative", (a) => `(${a.paths.map((x) => this.path(x)).join(" | ")})`), Match.tag("PathZeroOrMore", (z) => `(${this.path(z.path)})*`), Match.tag("PathOneOrMore", (o) => `(${this.path(o.path)})+`), Match.tag("PathZeroOrOne", (z) => `(${this.path(z.path)})?`), Match.tag("PathNegated", (n) => {
66
+ return `!(${[...n.iris.map((i) => this.verb(i)), ...n.inverse.map((i) => `^${this.verb(i)}`)].join(" | ")})`;
67
+ }), Match.exhaustive);
68
+ }
69
+ expression(e) {
70
+ return Match.value(e).pipe(Match.tag("Variable", "NamedNode", "Literal", "BlankNode", "Triple", (t) => this.term(t)), Match.tag("FunctionCall", (c) => `${this.iri(c.function)}(${c.distinct ? "DISTINCT " : ""}${c.args.map((a) => this.expression(a)).join(", ")})`), Match.tag("Aggregate", (a) => {
71
+ const arg = a.expression === "*" ? "*" : this.expression(a.expression);
72
+ const sep = a.separator !== void 0 ? `; SEPARATOR = "${escapeString(a.separator)}"` : "";
73
+ return `${a.name}(${a.distinct ? "DISTINCT " : ""}${arg}${sep})`;
74
+ }), Match.tag("Exists", (x) => `${x.negated ? "NOT EXISTS" : "EXISTS"} ${this.group(x.pattern, 1)}`), Match.tag("Operation", (o) => this.operation(o)), Match.exhaustive);
75
+ }
76
+ operation(e) {
77
+ const args = e.args.map((a) => this.expression(a));
78
+ return Match.value(e.operator).pipe(Match.when(Match.is("||", "&&", "=", "!=", "<", ">", "<=", ">=", "+", "-", "*", "/"), (operator) => `(${args.join(` ${operator} `)})`), Match.when("!", () => `!(${args[0]})`), Match.when("UPLUS", () => `+(${args[0]})`), Match.when("UMINUS", () => `-(${args[0]})`), Match.when(Match.is("IN", "NOT IN"), (operator) => `(${args[0]} ${operator} (${args.slice(1).join(", ")}))`), Match.when("SAMETERM", () => `sameTerm(${args.join(", ")})`), Match.orElse((operator) => `${operator}(${args.join(", ")})`));
79
+ }
80
+ pad(level) {
81
+ return this.unit.repeat(level);
82
+ }
83
+ triple(t) {
84
+ const p = Predicate.isTagged(t, "PathPattern") ? this.path(t.path) : this.verb(t.predicate);
85
+ return `${this.term(t.subject)} ${p} ${this.term(t.object)} .`;
86
+ }
87
+ group(g, level) {
88
+ const [only, ...rest] = g.patterns;
89
+ if (only === void 0) return "{}";
90
+ if (Arr.isReadonlyArrayEmpty(rest) && Predicate.isTagged(only, "SubSelect")) return `{\n${this.pad(level + 1)}${this.select(only.query, level + 1)}\n${this.pad(level)}}`;
91
+ return `{\n${g.patterns.flatMap((p) => this.pattern(p, level + 1)).map((l) => this.pad(level + 1) + l).join("\n")}\n${this.pad(level)}}`;
92
+ }
93
+ pattern(p, level) {
94
+ return Match.value(p).pipe(Match.tag("Bgp", (b) => b.triples.map((t) => this.triple(t))), Match.tag("Group", (g) => [this.group(g, level)]), Match.tag("Optional", (o) => [`OPTIONAL ${this.group(o.pattern, level)}`]), Match.tag("Minus", (m) => [`MINUS ${this.group(m.pattern, level)}`]), Match.tag("Union", (u) => [u.patterns.map((x) => this.group(x, level)).join(" UNION ")]), Match.tag("Graph", (g) => [`GRAPH ${this.term(g.name)} ${this.group(g.pattern, level)}`]), Match.tag("Service", (s) => [`SERVICE ${s.silent ? "SILENT " : ""}${this.term(s.name)} ${this.group(s.pattern, level)}`]), Match.tag("Filter", (f) => [`FILTER(${this.expression(f.expression)})`]), Match.tag("Bind", (b) => [`BIND(${this.expression(b.expression)} AS ${this.term(b.variable)})`]), Match.tag("Values", (v) => [this.values(v)]), Match.tag("SubSelect", (s) => [`{\n${this.pad(level + 1)}${this.select(s.query, level + 1)}\n${this.pad(level)}}`]), Match.exhaustive);
95
+ }
96
+ values(v) {
97
+ return `VALUES (${v.variables.map((x) => this.term(x)).join(" ")}) { ${v.rows.map((r) => `(${r.map((t) => t === void 0 ? "UNDEF" : this.term(t)).join(" ")})`).join(" ")} }`;
98
+ }
99
+ /** A dataset clause (`FROM` / `USING`), if the query or update has one. */
100
+ dataset(clause, keyword) {
101
+ return Option.match(clause, {
102
+ onNone: () => "",
103
+ onSome: (d) => [...d.default.map((g) => `${keyword} ${this.iri(g)}\n`), ...d.named.map((g) => `${keyword} NAMED ${this.iri(g)}\n`)].join("")
104
+ });
105
+ }
106
+ modifiers(q) {
107
+ let out = "";
108
+ if (Arr.isReadonlyArrayNonEmpty(q.groupBy)) out += `\nGROUP BY ${q.groupBy.map((g) => g.variable !== void 0 ? `(${this.expression(g.expression)} AS ${this.term(g.variable)})` : g.expression._tag === "Variable" ? this.term(g.expression) : `(${this.expression(g.expression)})`).join(" ")}`;
109
+ if (Arr.isReadonlyArrayNonEmpty(q.having)) out += `\nHAVING ${q.having.map((h) => `(${this.expression(h)})`).join(" ")}`;
110
+ if (Arr.isReadonlyArrayNonEmpty(q.orderBy)) out += `\nORDER BY ${q.orderBy.map((o) => `${o.descending ? "DESC" : "ASC"}(${this.expression(o.expression)})`).join(" ")}`;
111
+ if (q.limit !== void 0) out += `\nLIMIT ${q.limit}`;
112
+ if (q.offset !== void 0) out += `\nOFFSET ${q.offset}`;
113
+ return out;
114
+ }
115
+ select(q, level) {
116
+ const projection = q.projection === "*" ? "*" : q.projection.map((p) => isVariable(p) ? this.term(p) : `(${this.expression(p.expression)} AS ${this.term(p.variable)})`).join(" ");
117
+ const head = `SELECT ${q.distinct ? "DISTINCT " : q.reduced ? "REDUCED " : ""}${projection}`;
118
+ const values = q.values !== void 0 ? `\n${this.values(q.values)}` : "";
119
+ return `${head}\n${this.dataset(Option.fromUndefinedOr(q.dataset), "FROM")}WHERE ${this.group(q.where, level)}${this.modifiers(q)}${values}`;
120
+ }
121
+ query(q) {
122
+ const values = q.values !== void 0 ? `\n${this.values(q.values)}` : "";
123
+ return Match.value(q).pipe(Match.tag("Select", (s) => this.select(s, 0)), Match.tag("Ask", (a) => `ASK\n${this.dataset(Option.fromUndefinedOr(a.dataset), "FROM")}WHERE ${this.group(a.where, 0)}${this.modifiers(a)}${values}`), Match.tag("Construct", (c) => {
124
+ const template = c.template.map((t) => `${this.unit}${this.triple(t)}`).join("\n");
125
+ return `CONSTRUCT {\n${template}${template === "" ? "" : "\n"}}\n${this.dataset(Option.fromUndefinedOr(c.dataset), "FROM")}WHERE ${this.group(c.where, 0)}${this.modifiers(c)}${values}`;
126
+ }), Match.tag("Describe", (d) => {
127
+ return `DESCRIBE ${d.terms === "*" ? "*" : d.terms.map((t) => this.term(t)).join(" ")}\n${this.dataset(Option.fromUndefinedOr(d.dataset), "FROM")}WHERE ${this.group(d.where, 0)}${this.modifiers(d)}${values}`;
128
+ }), Match.exhaustive);
129
+ }
130
+ quads(quads) {
131
+ const runs = [];
132
+ quads.forEach((q) => {
133
+ const last = runs[runs.length - 1];
134
+ if (last !== void 0 && last.graph.key === q.graph.key) last.quads.push(q);
135
+ else runs.push({
136
+ graph: q.graph,
137
+ quads: [q]
138
+ });
139
+ });
140
+ const lines = runs.flatMap(({ graph: g, quads: run }) => {
141
+ const triples = run.map((q) => `${this.term(q.subject)} ${this.verb(q.predicate)} ${this.term(q.object)} .`);
142
+ return isDefaultGraph(g) ? triples.map((t) => this.unit + t) : [`${this.unit}GRAPH ${this.term(g)} {`].concat(triples.map((t) => this.unit + this.unit + t), [`${this.unit}}`]);
143
+ });
144
+ return Arr.isReadonlyArrayEmpty(lines) ? "{}" : `{\n${lines.join("\n")}\n}`;
145
+ }
146
+ graphTarget(t) {
147
+ return isNamedNode(t) ? `GRAPH ${this.iri(t)}` : t._tag.toUpperCase();
148
+ }
149
+ graphOrDefault(g) {
150
+ return isDefaultGraph(g) ? "DEFAULT" : `GRAPH ${this.iri(g)}`;
151
+ }
152
+ operationText(op) {
153
+ return Match.value(op).pipe(Match.tag("InsertData", (o) => `INSERT DATA ${this.quads(o.quads)}`), Match.tag("DeleteData", (o) => `DELETE DATA ${this.quads(o.quads)}`), Match.tag("DeleteWhere", (o) => `DELETE WHERE ${this.quads(o.patterns)}`), Match.tag("Modify", (o) => {
154
+ let out = o.with !== void 0 ? `WITH ${this.iri(o.with)}\n` : "";
155
+ if (Arr.isReadonlyArrayNonEmpty(o.delete) || Arr.isReadonlyArrayEmpty(o.insert)) out += `DELETE ${this.quads(o.delete)}\n`;
156
+ if (Arr.isReadonlyArrayNonEmpty(o.insert)) out += `INSERT ${this.quads(o.insert)}\n`;
157
+ out += this.dataset(Option.fromUndefinedOr(o.using), "USING");
158
+ return `${out}WHERE ${this.group(o.where, 0)}`;
159
+ }), Match.tag("Load", (o) => `LOAD ${o.silent ? "SILENT " : ""}${this.iri(o.source)}${o.destination !== void 0 ? ` INTO GRAPH ${this.iri(o.destination)}` : ""}`), Match.tag("Clear", "Drop", (o) => `${o._tag.toUpperCase()} ${o.silent ? "SILENT " : ""}${this.graphTarget(o.target)}`), Match.tag("Create", (o) => `CREATE ${o.silent ? "SILENT " : ""}GRAPH ${this.iri(o.graph)}`), Match.tag("Add", "Move", "Copy", (o) => `${o._tag.toUpperCase()} ${o.silent ? "SILENT " : ""}${this.graphOrDefault(o.source)} TO ${this.graphOrDefault(o.destination)}`), Match.exhaustive);
160
+ }
161
+ };
162
+ const prologueText = (prologue) => [
163
+ prologue.version !== void 0 ? `VERSION "${escapeString(prologue.version)}"\n` : "",
164
+ prologue.base !== void 0 ? `BASE <${escapeIri(prologue.base)}>\n` : "",
165
+ ...Record.toEntries(prologue.prefixes).map(([prefix, ns]) => `PREFIX ${prefix}: <${escapeIri(ns)}>\n`)
166
+ ].join("");
167
+ /**
168
+ * Generates SPARQL text for a query or update.
169
+ *
170
+ * @since 0.1.0
171
+ * @category printing
172
+ */
173
+ const print = (ast, options) => {
174
+ const printer = new Printer(options?.prefixes ?? ast.prologue.prefixes, options?.indent ?? " ");
175
+ const prologue = options?.prologue === false ? "" : prologueText(options?.prefixes !== void 0 ? {
176
+ ...ast.prologue,
177
+ prefixes: options.prefixes
178
+ } : ast.prologue);
179
+ if (Predicate.isTagged(ast, "Update")) return prologue + ast.operations.map((op) => printer.operationText(op)).join(" ;\n");
180
+ return prologue + printer.query(ast);
181
+ };
182
+ /**
183
+ * Generates SPARQL text for an expression.
184
+ *
185
+ * @since 0.1.0
186
+ * @category printing
187
+ */
188
+ const printExpression = (expression, prefixes = {}) => new Printer(prefixes, " ").expression(expression);
189
+ /**
190
+ * Generates SPARQL text for a graph pattern.
191
+ *
192
+ * @since 0.1.0
193
+ * @category printing
194
+ */
195
+ const printPattern = (pattern, prefixes = {}) => new Printer(prefixes, " ").pattern(pattern, 0).join("\n");
196
+ /**
197
+ * Generates SPARQL syntax for a term (IRIs are compacted with `prefixes`).
198
+ *
199
+ * @since 0.1.0
200
+ * @category printing
201
+ */
202
+ const printTerm = (term, prefixes = {}) => new Printer(prefixes, " ").term(term);
203
+ export { printTerm as a, printPattern as i, print as n, printExpression as r, Generator_exports as t };
204
+
205
+ //# sourceMappingURL=Generator-D3utCJC7.mjs.map