@nhtio/lucid-resourceful 0.1.0-master-29dd5a13 → 0.1.0-master-9b5b956c

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 (111) hide show
  1. package/bundled_liqe.d.ts +6 -5
  2. package/bundled_xml_js.d.ts +5 -4
  3. package/definitions.d.ts +1 -1
  4. package/encoding.d.ts +6 -6
  5. package/errors.d.ts +23 -8
  6. package/{index-Bsyx9Sty.js → index-BrX3MdY9.js} +76 -221
  7. package/index-BrX3MdY9.js.map +1 -0
  8. package/index-C9zyi90j.js.map +1 -1
  9. package/{index-CpyTnwZV.cjs → index-CQApAM0M.cjs} +298 -353
  10. package/index-CQApAM0M.cjs.map +1 -0
  11. package/index-CxRBayw6.cjs.map +1 -1
  12. package/{index-C8mGEf4P.js → index-DLVvkVxI.js} +295 -350
  13. package/index-DLVvkVxI.js.map +1 -0
  14. package/{index-B6dIMDux.cjs → index-Drtzxl1B.cjs} +76 -221
  15. package/index-Drtzxl1B.cjs.map +1 -0
  16. package/index-DsojAcQ4.js.map +1 -1
  17. package/index-DuzIXu31.cjs.map +1 -1
  18. package/index.cjs +1 -1
  19. package/index.d.ts +7 -7
  20. package/index.mjs +1 -1
  21. package/integration/middlewares/odata_error.cjs +1 -1
  22. package/integration/middlewares/odata_error.d.ts +1 -1
  23. package/integration/middlewares/odata_error.mjs +1 -1
  24. package/integration/middlewares/resourceful_encoded_request.cjs +100 -12
  25. package/integration/middlewares/resourceful_encoded_request.cjs.map +1 -1
  26. package/integration/middlewares/resourceful_encoded_request.d.ts +1 -1
  27. package/integration/middlewares/resourceful_encoded_request.mjs +98 -10
  28. package/integration/middlewares/resourceful_encoded_request.mjs.map +1 -1
  29. package/integration/middlewares/resourceful_error.cjs +1 -1
  30. package/integration/middlewares/resourceful_error.d.ts +1 -1
  31. package/integration/middlewares/resourceful_error.mjs +1 -1
  32. package/integration/provider.cjs +1 -1
  33. package/integration/provider.cjs.map +1 -1
  34. package/integration/provider.d.ts +17 -0
  35. package/integration/provider.mjs +1 -1
  36. package/integration/provider.mjs.map +1 -1
  37. package/joi.d.ts +1 -1
  38. package/{manager-OLS5T3G7-C-NS6lhx.js → manager-OLS5T3G7-CQrDQz6n.js} +2 -2
  39. package/{manager-OLS5T3G7-C-NS6lhx.js.map → manager-OLS5T3G7-CQrDQz6n.js.map} +1 -1
  40. package/{manager-OLS5T3G7-CJHhMwR7.cjs → manager-OLS5T3G7-DWCVMtbE.cjs} +2 -2
  41. package/{manager-OLS5T3G7-CJHhMwR7.cjs.map → manager-OLS5T3G7-DWCVMtbE.cjs.map} +1 -1
  42. package/odata/context.d.ts +1 -1
  43. package/odata/macro.d.ts +1 -1
  44. package/{odata_error_middleware-BWfOpQZV.cjs → odata_error_middleware-DhLzccN7.cjs} +4 -4
  45. package/{odata_error_middleware-BWfOpQZV.cjs.map → odata_error_middleware-DhLzccN7.cjs.map} +1 -1
  46. package/{odata_error_middleware-CWYqZMez.js → odata_error_middleware-Dspi8bct.js} +4 -4
  47. package/{odata_error_middleware-CWYqZMez.js.map → odata_error_middleware-Dspi8bct.js.map} +1 -1
  48. package/package.json +1 -1
  49. package/private/data_type_schemas.d.ts +12 -12
  50. package/private/data_types.d.ts +1 -1
  51. package/private/decorator_schemas.d.ts +1 -1
  52. package/private/decorator_utils.d.ts +1 -1
  53. package/private/decorators.d.ts +14 -11
  54. package/private/encoding.d.ts +3 -3
  55. package/private/joi/index.d.ts +3 -3
  56. package/private/lucene_to_lucid_translator.d.ts +1 -1
  57. package/private/mixin.d.ts +25 -8
  58. package/private/odata_macro/controllers/resourceful_model_controller.d.ts +4 -4
  59. package/private/odata_macro/index.d.ts +1 -1
  60. package/private/odata_macro/middlewares/odata_error_middleware.d.ts +22 -10
  61. package/private/odata_macro/services/odata_context_service.d.ts +1 -1
  62. package/private/odata_macro/services/odata_metadata_service.d.ts +3 -3
  63. package/private/odata_macro/utils/odata.d.ts +2 -2
  64. package/private/odata_to_lucid_translator.d.ts +1 -1
  65. package/private/open_api_schema_service.d.ts +3 -3
  66. package/private/router_macro/controllers/resourceful_model_controller.d.ts +5 -5
  67. package/private/router_macro/index.d.ts +3 -3
  68. package/private/router_macro/middlewares/resourceful_error_middleware.d.ts +22 -10
  69. package/private/router_macro/services/resourceful_router_choices_service.d.ts +3 -3
  70. package/private/router_macro/services/resourceful_router_context_service.d.ts +1 -1
  71. package/private/router_macro/services/resourceful_router_model_options_service.d.ts +1 -1
  72. package/private/router_macro/services/resourceful_router_model_resolver_service.d.ts +3 -3
  73. package/private/router_macro/services/resourceful_router_openapi_document_service.d.ts +4 -4
  74. package/private/router_macro/services/resourceful_router_options_service.d.ts +3 -3
  75. package/private/router_macro/types.d.ts +15 -8
  76. package/private/router_macro/utils/errors.d.ts +1 -1
  77. package/private/router_macro/utils/http.d.ts +1 -1
  78. package/private/router_macro/utils/openapi_validation_schemas.d.ts +2 -2
  79. package/private/router_macro/utils/relationships.d.ts +1 -1
  80. package/private/router_macro/utils/type_guards.d.ts +1 -1
  81. package/private/schema_types.d.ts +1 -1
  82. package/private/type_guards.d.ts +5 -5
  83. package/private/types.d.ts +5 -5
  84. package/private/utils/casters.d.ts +1 -1
  85. package/private/utils/consumers.d.ts +1 -1
  86. package/private/utils/preparers.d.ts +1 -1
  87. package/private/utils.d.ts +1 -1
  88. package/{resourceful_error_middleware-CMSZGdoG.js → resourceful_error_middleware-Cb_eTzST.js} +4 -4
  89. package/{resourceful_error_middleware-CMSZGdoG.js.map → resourceful_error_middleware-Cb_eTzST.js.map} +1 -1
  90. package/{resourceful_error_middleware-lXgefPIC.cjs → resourceful_error_middleware-CnjbNoev.cjs} +4 -4
  91. package/{resourceful_error_middleware-lXgefPIC.cjs.map → resourceful_error_middleware-CnjbNoev.cjs.map} +1 -1
  92. package/router/context.d.ts +1 -1
  93. package/router/utils.cjs +1 -1
  94. package/router/utils.d.ts +1 -1
  95. package/router/utils.mjs +1 -1
  96. package/router.cjs +1 -1
  97. package/router.d.ts +2 -2
  98. package/router.mjs +1 -1
  99. package/types.d.ts +13 -13
  100. package/utils.d.ts +4 -4
  101. package/vite-env.d.ts +3 -0
  102. package/index-B6dIMDux.cjs.map +0 -1
  103. package/index-Bsyx9Sty.js.map +0 -1
  104. package/index-C8mGEf4P.js.map +0 -1
  105. package/index-CpIq4gOr.js +0 -93
  106. package/index-CpIq4gOr.js.map +0 -1
  107. package/index-CpyTnwZV.cjs.map +0 -1
  108. package/index-DqbJXpcT.cjs +0 -92
  109. package/index-DqbJXpcT.cjs.map +0 -1
  110. package/private/controller_factory.d.ts +0 -1
  111. package/private/utils/function_serializer.d.ts +0 -32
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CQApAM0M.cjs","sources":["../node_modules/.pnpm/slugify@1.6.6/node_modules/slugify/slugify.js","../node_modules/.pnpm/pluralize@8.0.0/node_modules/pluralize/pluralize.js","../node_modules/.pnpm/case-anything@3.1.2/node_modules/case-anything/dist/utils.js","../node_modules/.pnpm/case-anything@3.1.2/node_modules/case-anything/dist/core.js","../node_modules/.pnpm/@poppinss+string@1.7.1/node_modules/@poppinss/string/build/string-ArFSN0fl.js","../node_modules/.pnpm/@nhtio+tiny-typed-emitter@1.20250430.0/node_modules/@nhtio/tiny-typed-emitter/index.mjs"],"sourcesContent":["\n;(function (name, root, factory) {\n if (typeof exports === 'object') {\n module.exports = factory()\n module.exports['default'] = factory()\n }\n /* istanbul ignore next */\n else if (typeof define === 'function' && define.amd) {\n define(factory)\n }\n else {\n root[name] = factory()\n }\n}('slugify', this, function () {\n var charMap = JSON.parse('{\"$\":\"dollar\",\"%\":\"percent\",\"&\":\"and\",\"<\":\"less\",\">\":\"greater\",\"|\":\"or\",\"¢\":\"cent\",\"£\":\"pound\",\"¤\":\"currency\",\"¥\":\"yen\",\"©\":\"(c)\",\"ª\":\"a\",\"®\":\"(r)\",\"º\":\"o\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ã\":\"A\",\"Ä\":\"A\",\"Å\":\"A\",\"Æ\":\"AE\",\"Ç\":\"C\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ë\":\"E\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ï\":\"I\",\"Ð\":\"D\",\"Ñ\":\"N\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Õ\":\"O\",\"Ö\":\"O\",\"Ø\":\"O\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ü\":\"U\",\"Ý\":\"Y\",\"Þ\":\"TH\",\"ß\":\"ss\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ã\":\"a\",\"ä\":\"a\",\"å\":\"a\",\"æ\":\"ae\",\"ç\":\"c\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ë\":\"e\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ï\":\"i\",\"ð\":\"d\",\"ñ\":\"n\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"õ\":\"o\",\"ö\":\"o\",\"ø\":\"o\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ü\":\"u\",\"ý\":\"y\",\"þ\":\"th\",\"ÿ\":\"y\",\"Ā\":\"A\",\"ā\":\"a\",\"Ă\":\"A\",\"ă\":\"a\",\"Ą\":\"A\",\"ą\":\"a\",\"Ć\":\"C\",\"ć\":\"c\",\"Č\":\"C\",\"č\":\"c\",\"Ď\":\"D\",\"ď\":\"d\",\"Đ\":\"DJ\",\"đ\":\"dj\",\"Ē\":\"E\",\"ē\":\"e\",\"Ė\":\"E\",\"ė\":\"e\",\"Ę\":\"e\",\"ę\":\"e\",\"Ě\":\"E\",\"ě\":\"e\",\"Ğ\":\"G\",\"ğ\":\"g\",\"Ģ\":\"G\",\"ģ\":\"g\",\"Ĩ\":\"I\",\"ĩ\":\"i\",\"Ī\":\"i\",\"ī\":\"i\",\"Į\":\"I\",\"į\":\"i\",\"İ\":\"I\",\"ı\":\"i\",\"Ķ\":\"k\",\"ķ\":\"k\",\"Ļ\":\"L\",\"ļ\":\"l\",\"Ľ\":\"L\",\"ľ\":\"l\",\"Ł\":\"L\",\"ł\":\"l\",\"Ń\":\"N\",\"ń\":\"n\",\"Ņ\":\"N\",\"ņ\":\"n\",\"Ň\":\"N\",\"ň\":\"n\",\"Ō\":\"O\",\"ō\":\"o\",\"Ő\":\"O\",\"ő\":\"o\",\"Œ\":\"OE\",\"œ\":\"oe\",\"Ŕ\":\"R\",\"ŕ\":\"r\",\"Ř\":\"R\",\"ř\":\"r\",\"Ś\":\"S\",\"ś\":\"s\",\"Ş\":\"S\",\"ş\":\"s\",\"Š\":\"S\",\"š\":\"s\",\"Ţ\":\"T\",\"ţ\":\"t\",\"Ť\":\"T\",\"ť\":\"t\",\"Ũ\":\"U\",\"ũ\":\"u\",\"Ū\":\"u\",\"ū\":\"u\",\"Ů\":\"U\",\"ů\":\"u\",\"Ű\":\"U\",\"ű\":\"u\",\"Ų\":\"U\",\"ų\":\"u\",\"Ŵ\":\"W\",\"ŵ\":\"w\",\"Ŷ\":\"Y\",\"ŷ\":\"y\",\"Ÿ\":\"Y\",\"Ź\":\"Z\",\"ź\":\"z\",\"Ż\":\"Z\",\"ż\":\"z\",\"Ž\":\"Z\",\"ž\":\"z\",\"Ə\":\"E\",\"ƒ\":\"f\",\"Ơ\":\"O\",\"ơ\":\"o\",\"Ư\":\"U\",\"ư\":\"u\",\"Lj\":\"LJ\",\"lj\":\"lj\",\"Nj\":\"NJ\",\"nj\":\"nj\",\"Ș\":\"S\",\"ș\":\"s\",\"Ț\":\"T\",\"ț\":\"t\",\"ə\":\"e\",\"˚\":\"o\",\"Ά\":\"A\",\"Έ\":\"E\",\"Ή\":\"H\",\"Ί\":\"I\",\"Ό\":\"O\",\"Ύ\":\"Y\",\"Ώ\":\"W\",\"ΐ\":\"i\",\"Α\":\"A\",\"Β\":\"B\",\"Γ\":\"G\",\"Δ\":\"D\",\"Ε\":\"E\",\"Ζ\":\"Z\",\"Η\":\"H\",\"Θ\":\"8\",\"Ι\":\"I\",\"Κ\":\"K\",\"Λ\":\"L\",\"Μ\":\"M\",\"Ν\":\"N\",\"Ξ\":\"3\",\"Ο\":\"O\",\"Π\":\"P\",\"Ρ\":\"R\",\"Σ\":\"S\",\"Τ\":\"T\",\"Υ\":\"Y\",\"Φ\":\"F\",\"Χ\":\"X\",\"Ψ\":\"PS\",\"Ω\":\"W\",\"Ϊ\":\"I\",\"Ϋ\":\"Y\",\"ά\":\"a\",\"έ\":\"e\",\"ή\":\"h\",\"ί\":\"i\",\"ΰ\":\"y\",\"α\":\"a\",\"β\":\"b\",\"γ\":\"g\",\"δ\":\"d\",\"ε\":\"e\",\"ζ\":\"z\",\"η\":\"h\",\"θ\":\"8\",\"ι\":\"i\",\"κ\":\"k\",\"λ\":\"l\",\"μ\":\"m\",\"ν\":\"n\",\"ξ\":\"3\",\"ο\":\"o\",\"π\":\"p\",\"ρ\":\"r\",\"ς\":\"s\",\"σ\":\"s\",\"τ\":\"t\",\"υ\":\"y\",\"φ\":\"f\",\"χ\":\"x\",\"ψ\":\"ps\",\"ω\":\"w\",\"ϊ\":\"i\",\"ϋ\":\"y\",\"ό\":\"o\",\"ύ\":\"y\",\"ώ\":\"w\",\"Ё\":\"Yo\",\"Ђ\":\"DJ\",\"Є\":\"Ye\",\"І\":\"I\",\"Ї\":\"Yi\",\"Ј\":\"J\",\"Љ\":\"LJ\",\"Њ\":\"NJ\",\"Ћ\":\"C\",\"Џ\":\"DZ\",\"А\":\"A\",\"Б\":\"B\",\"В\":\"V\",\"Г\":\"G\",\"Д\":\"D\",\"Е\":\"E\",\"Ж\":\"Zh\",\"З\":\"Z\",\"И\":\"I\",\"Й\":\"J\",\"К\":\"K\",\"Л\":\"L\",\"М\":\"M\",\"Н\":\"N\",\"О\":\"O\",\"П\":\"P\",\"Р\":\"R\",\"С\":\"S\",\"Т\":\"T\",\"У\":\"U\",\"Ф\":\"F\",\"Х\":\"H\",\"Ц\":\"C\",\"Ч\":\"Ch\",\"Ш\":\"Sh\",\"Щ\":\"Sh\",\"Ъ\":\"U\",\"Ы\":\"Y\",\"Ь\":\"\",\"Э\":\"E\",\"Ю\":\"Yu\",\"Я\":\"Ya\",\"а\":\"a\",\"б\":\"b\",\"в\":\"v\",\"г\":\"g\",\"д\":\"d\",\"е\":\"e\",\"ж\":\"zh\",\"з\":\"z\",\"и\":\"i\",\"й\":\"j\",\"к\":\"k\",\"л\":\"l\",\"м\":\"m\",\"н\":\"n\",\"о\":\"o\",\"п\":\"p\",\"р\":\"r\",\"с\":\"s\",\"т\":\"t\",\"у\":\"u\",\"ф\":\"f\",\"х\":\"h\",\"ц\":\"c\",\"ч\":\"ch\",\"ш\":\"sh\",\"щ\":\"sh\",\"ъ\":\"u\",\"ы\":\"y\",\"ь\":\"\",\"э\":\"e\",\"ю\":\"yu\",\"я\":\"ya\",\"ё\":\"yo\",\"ђ\":\"dj\",\"є\":\"ye\",\"і\":\"i\",\"ї\":\"yi\",\"ј\":\"j\",\"љ\":\"lj\",\"њ\":\"nj\",\"ћ\":\"c\",\"ѝ\":\"u\",\"џ\":\"dz\",\"Ґ\":\"G\",\"ґ\":\"g\",\"Ғ\":\"GH\",\"ғ\":\"gh\",\"Қ\":\"KH\",\"қ\":\"kh\",\"Ң\":\"NG\",\"ң\":\"ng\",\"Ү\":\"UE\",\"ү\":\"ue\",\"Ұ\":\"U\",\"ұ\":\"u\",\"Һ\":\"H\",\"һ\":\"h\",\"Ә\":\"AE\",\"ә\":\"ae\",\"Ө\":\"OE\",\"ө\":\"oe\",\"Ա\":\"A\",\"Բ\":\"B\",\"Գ\":\"G\",\"Դ\":\"D\",\"Ե\":\"E\",\"Զ\":\"Z\",\"Է\":\"E\\'\",\"Ը\":\"Y\\'\",\"Թ\":\"T\\'\",\"Ժ\":\"JH\",\"Ի\":\"I\",\"Լ\":\"L\",\"Խ\":\"X\",\"Ծ\":\"C\\'\",\"Կ\":\"K\",\"Հ\":\"H\",\"Ձ\":\"D\\'\",\"Ղ\":\"GH\",\"Ճ\":\"TW\",\"Մ\":\"M\",\"Յ\":\"Y\",\"Ն\":\"N\",\"Շ\":\"SH\",\"Չ\":\"CH\",\"Պ\":\"P\",\"Ջ\":\"J\",\"Ռ\":\"R\\'\",\"Ս\":\"S\",\"Վ\":\"V\",\"Տ\":\"T\",\"Ր\":\"R\",\"Ց\":\"C\",\"Փ\":\"P\\'\",\"Ք\":\"Q\\'\",\"Օ\":\"O\\'\\'\",\"Ֆ\":\"F\",\"և\":\"EV\",\"ء\":\"a\",\"آ\":\"aa\",\"أ\":\"a\",\"ؤ\":\"u\",\"إ\":\"i\",\"ئ\":\"e\",\"ا\":\"a\",\"ب\":\"b\",\"ة\":\"h\",\"ت\":\"t\",\"ث\":\"th\",\"ج\":\"j\",\"ح\":\"h\",\"خ\":\"kh\",\"د\":\"d\",\"ذ\":\"th\",\"ر\":\"r\",\"ز\":\"z\",\"س\":\"s\",\"ش\":\"sh\",\"ص\":\"s\",\"ض\":\"dh\",\"ط\":\"t\",\"ظ\":\"z\",\"ع\":\"a\",\"غ\":\"gh\",\"ف\":\"f\",\"ق\":\"q\",\"ك\":\"k\",\"ل\":\"l\",\"م\":\"m\",\"ن\":\"n\",\"ه\":\"h\",\"و\":\"w\",\"ى\":\"a\",\"ي\":\"y\",\"ً\":\"an\",\"ٌ\":\"on\",\"ٍ\":\"en\",\"َ\":\"a\",\"ُ\":\"u\",\"ِ\":\"e\",\"ْ\":\"\",\"٠\":\"0\",\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"پ\":\"p\",\"چ\":\"ch\",\"ژ\":\"zh\",\"ک\":\"k\",\"گ\":\"g\",\"ی\":\"y\",\"۰\":\"0\",\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"฿\":\"baht\",\"ა\":\"a\",\"ბ\":\"b\",\"გ\":\"g\",\"დ\":\"d\",\"ე\":\"e\",\"ვ\":\"v\",\"ზ\":\"z\",\"თ\":\"t\",\"ი\":\"i\",\"კ\":\"k\",\"ლ\":\"l\",\"მ\":\"m\",\"ნ\":\"n\",\"ო\":\"o\",\"პ\":\"p\",\"ჟ\":\"zh\",\"რ\":\"r\",\"ს\":\"s\",\"ტ\":\"t\",\"უ\":\"u\",\"ფ\":\"f\",\"ქ\":\"k\",\"ღ\":\"gh\",\"ყ\":\"q\",\"შ\":\"sh\",\"ჩ\":\"ch\",\"ც\":\"ts\",\"ძ\":\"dz\",\"წ\":\"ts\",\"ჭ\":\"ch\",\"ხ\":\"kh\",\"ჯ\":\"j\",\"ჰ\":\"h\",\"Ṣ\":\"S\",\"ṣ\":\"s\",\"Ẁ\":\"W\",\"ẁ\":\"w\",\"Ẃ\":\"W\",\"ẃ\":\"w\",\"Ẅ\":\"W\",\"ẅ\":\"w\",\"ẞ\":\"SS\",\"Ạ\":\"A\",\"ạ\":\"a\",\"Ả\":\"A\",\"ả\":\"a\",\"Ấ\":\"A\",\"ấ\":\"a\",\"Ầ\":\"A\",\"ầ\":\"a\",\"Ẩ\":\"A\",\"ẩ\":\"a\",\"Ẫ\":\"A\",\"ẫ\":\"a\",\"Ậ\":\"A\",\"ậ\":\"a\",\"Ắ\":\"A\",\"ắ\":\"a\",\"Ằ\":\"A\",\"ằ\":\"a\",\"Ẳ\":\"A\",\"ẳ\":\"a\",\"Ẵ\":\"A\",\"ẵ\":\"a\",\"Ặ\":\"A\",\"ặ\":\"a\",\"Ẹ\":\"E\",\"ẹ\":\"e\",\"Ẻ\":\"E\",\"ẻ\":\"e\",\"Ẽ\":\"E\",\"ẽ\":\"e\",\"Ế\":\"E\",\"ế\":\"e\",\"Ề\":\"E\",\"ề\":\"e\",\"Ể\":\"E\",\"ể\":\"e\",\"Ễ\":\"E\",\"ễ\":\"e\",\"Ệ\":\"E\",\"ệ\":\"e\",\"Ỉ\":\"I\",\"ỉ\":\"i\",\"Ị\":\"I\",\"ị\":\"i\",\"Ọ\":\"O\",\"ọ\":\"o\",\"Ỏ\":\"O\",\"ỏ\":\"o\",\"Ố\":\"O\",\"ố\":\"o\",\"Ồ\":\"O\",\"ồ\":\"o\",\"Ổ\":\"O\",\"ổ\":\"o\",\"Ỗ\":\"O\",\"ỗ\":\"o\",\"Ộ\":\"O\",\"ộ\":\"o\",\"Ớ\":\"O\",\"ớ\":\"o\",\"Ờ\":\"O\",\"ờ\":\"o\",\"Ở\":\"O\",\"ở\":\"o\",\"Ỡ\":\"O\",\"ỡ\":\"o\",\"Ợ\":\"O\",\"ợ\":\"o\",\"Ụ\":\"U\",\"ụ\":\"u\",\"Ủ\":\"U\",\"ủ\":\"u\",\"Ứ\":\"U\",\"ứ\":\"u\",\"Ừ\":\"U\",\"ừ\":\"u\",\"Ử\":\"U\",\"ử\":\"u\",\"Ữ\":\"U\",\"ữ\":\"u\",\"Ự\":\"U\",\"ự\":\"u\",\"Ỳ\":\"Y\",\"ỳ\":\"y\",\"Ỵ\":\"Y\",\"ỵ\":\"y\",\"Ỷ\":\"Y\",\"ỷ\":\"y\",\"Ỹ\":\"Y\",\"ỹ\":\"y\",\"–\":\"-\",\"‘\":\"\\'\",\"’\":\"\\'\",\"“\":\"\\\\\\\"\",\"”\":\"\\\\\\\"\",\"„\":\"\\\\\\\"\",\"†\":\"+\",\"•\":\"*\",\"…\":\"...\",\"₠\":\"ecu\",\"₢\":\"cruzeiro\",\"₣\":\"french franc\",\"₤\":\"lira\",\"₥\":\"mill\",\"₦\":\"naira\",\"₧\":\"peseta\",\"₨\":\"rupee\",\"₩\":\"won\",\"₪\":\"new shequel\",\"₫\":\"dong\",\"€\":\"euro\",\"₭\":\"kip\",\"₮\":\"tugrik\",\"₯\":\"drachma\",\"₰\":\"penny\",\"₱\":\"peso\",\"₲\":\"guarani\",\"₳\":\"austral\",\"₴\":\"hryvnia\",\"₵\":\"cedi\",\"₸\":\"kazakhstani tenge\",\"₹\":\"indian rupee\",\"₺\":\"turkish lira\",\"₽\":\"russian ruble\",\"₿\":\"bitcoin\",\"℠\":\"sm\",\"™\":\"tm\",\"∂\":\"d\",\"∆\":\"delta\",\"∑\":\"sum\",\"∞\":\"infinity\",\"♥\":\"love\",\"元\":\"yuan\",\"円\":\"yen\",\"﷼\":\"rial\",\"ﻵ\":\"laa\",\"ﻷ\":\"laa\",\"ﻹ\":\"lai\",\"ﻻ\":\"la\"}')\n var locales = JSON.parse('{\"bg\":{\"Й\":\"Y\",\"Ц\":\"Ts\",\"Щ\":\"Sht\",\"Ъ\":\"A\",\"Ь\":\"Y\",\"й\":\"y\",\"ц\":\"ts\",\"щ\":\"sht\",\"ъ\":\"a\",\"ь\":\"y\"},\"de\":{\"Ä\":\"AE\",\"ä\":\"ae\",\"Ö\":\"OE\",\"ö\":\"oe\",\"Ü\":\"UE\",\"ü\":\"ue\",\"ß\":\"ss\",\"%\":\"prozent\",\"&\":\"und\",\"|\":\"oder\",\"∑\":\"summe\",\"∞\":\"unendlich\",\"♥\":\"liebe\"},\"es\":{\"%\":\"por ciento\",\"&\":\"y\",\"<\":\"menor que\",\">\":\"mayor que\",\"|\":\"o\",\"¢\":\"centavos\",\"£\":\"libras\",\"¤\":\"moneda\",\"₣\":\"francos\",\"∑\":\"suma\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"fr\":{\"%\":\"pourcent\",\"&\":\"et\",\"<\":\"plus petit\",\">\":\"plus grand\",\"|\":\"ou\",\"¢\":\"centime\",\"£\":\"livre\",\"¤\":\"devise\",\"₣\":\"franc\",\"∑\":\"somme\",\"∞\":\"infini\",\"♥\":\"amour\"},\"pt\":{\"%\":\"porcento\",\"&\":\"e\",\"<\":\"menor\",\">\":\"maior\",\"|\":\"ou\",\"¢\":\"centavo\",\"∑\":\"soma\",\"£\":\"libra\",\"∞\":\"infinito\",\"♥\":\"amor\"},\"uk\":{\"И\":\"Y\",\"и\":\"y\",\"Й\":\"Y\",\"й\":\"y\",\"Ц\":\"Ts\",\"ц\":\"ts\",\"Х\":\"Kh\",\"х\":\"kh\",\"Щ\":\"Shch\",\"щ\":\"shch\",\"Г\":\"H\",\"г\":\"h\"},\"vi\":{\"Đ\":\"D\",\"đ\":\"d\"},\"da\":{\"Ø\":\"OE\",\"ø\":\"oe\",\"Å\":\"AA\",\"å\":\"aa\",\"%\":\"procent\",\"&\":\"og\",\"|\":\"eller\",\"$\":\"dollar\",\"<\":\"mindre end\",\">\":\"større end\"},\"nb\":{\"&\":\"og\",\"Å\":\"AA\",\"Æ\":\"AE\",\"Ø\":\"OE\",\"å\":\"aa\",\"æ\":\"ae\",\"ø\":\"oe\"},\"it\":{\"&\":\"e\"},\"nl\":{\"&\":\"en\"},\"sv\":{\"&\":\"och\",\"Å\":\"AA\",\"Ä\":\"AE\",\"Ö\":\"OE\",\"å\":\"aa\",\"ä\":\"ae\",\"ö\":\"oe\"}}')\n\n function replace (string, options) {\n if (typeof string !== 'string') {\n throw new Error('slugify: string argument expected')\n }\n\n options = (typeof options === 'string')\n ? {replacement: options}\n : options || {}\n\n var locale = locales[options.locale] || {}\n\n var replacement = options.replacement === undefined ? '-' : options.replacement\n\n var trim = options.trim === undefined ? true : options.trim\n\n var slug = string.normalize().split('')\n // replace characters based on charMap\n .reduce(function (result, ch) {\n var appendChar = locale[ch];\n if (appendChar === undefined) appendChar = charMap[ch];\n if (appendChar === undefined) appendChar = ch;\n if (appendChar === replacement) appendChar = ' ';\n return result + appendChar\n // remove not allowed characters\n .replace(options.remove || /[^\\w\\s$*_+~.()'\"!\\-:@]+/g, '')\n }, '');\n\n if (options.strict) {\n slug = slug.replace(/[^A-Za-z0-9\\s]/g, '');\n }\n\n if (trim) {\n slug = slug.trim()\n }\n\n // Replace spaces with replacement character, treating multiple consecutive\n // spaces as a single space.\n slug = slug.replace(/\\s+/g, replacement);\n\n if (options.lower) {\n slug = slug.toLowerCase()\n }\n\n return slug\n }\n\n replace.extend = function (customMap) {\n Object.assign(charMap, customMap)\n }\n\n return replace\n}))\n","/* global define */\n\n(function (root, pluralize) {\n /* istanbul ignore else */\n if (typeof require === 'function' && typeof exports === 'object' && typeof module === 'object') {\n // Node.\n module.exports = pluralize();\n } else if (typeof define === 'function' && define.amd) {\n // AMD, registers as an anonymous module.\n define(function () {\n return pluralize();\n });\n } else {\n // Browser global.\n root.pluralize = pluralize();\n }\n})(this, function () {\n // Rule storage - pluralize and singularize need to be run sequentially,\n // while other rules can be optimized using an object for instant lookups.\n var pluralRules = [];\n var singularRules = [];\n var uncountables = {};\n var irregularPlurals = {};\n var irregularSingles = {};\n\n /**\n * Sanitize a pluralization rule to a usable regular expression.\n *\n * @param {(RegExp|string)} rule\n * @return {RegExp}\n */\n function sanitizeRule (rule) {\n if (typeof rule === 'string') {\n return new RegExp('^' + rule + '$', 'i');\n }\n\n return rule;\n }\n\n /**\n * Pass in a word token to produce a function that can replicate the case on\n * another word.\n *\n * @param {string} word\n * @param {string} token\n * @return {Function}\n */\n function restoreCase (word, token) {\n // Tokens are an exact match.\n if (word === token) return token;\n\n // Lower cased words. E.g. \"hello\".\n if (word === word.toLowerCase()) return token.toLowerCase();\n\n // Upper cased words. E.g. \"WHISKY\".\n if (word === word.toUpperCase()) return token.toUpperCase();\n\n // Title cased words. E.g. \"Title\".\n if (word[0] === word[0].toUpperCase()) {\n return token.charAt(0).toUpperCase() + token.substr(1).toLowerCase();\n }\n\n // Lower cased words. E.g. \"test\".\n return token.toLowerCase();\n }\n\n /**\n * Interpolate a regexp string.\n *\n * @param {string} str\n * @param {Array} args\n * @return {string}\n */\n function interpolate (str, args) {\n return str.replace(/\\$(\\d{1,2})/g, function (match, index) {\n return args[index] || '';\n });\n }\n\n /**\n * Replace a word using a rule.\n *\n * @param {string} word\n * @param {Array} rule\n * @return {string}\n */\n function replace (word, rule) {\n return word.replace(rule[0], function (match, index) {\n var result = interpolate(rule[1], arguments);\n\n if (match === '') {\n return restoreCase(word[index - 1], result);\n }\n\n return restoreCase(match, result);\n });\n }\n\n /**\n * Sanitize a word by passing in the word and sanitization rules.\n *\n * @param {string} token\n * @param {string} word\n * @param {Array} rules\n * @return {string}\n */\n function sanitizeWord (token, word, rules) {\n // Empty string or doesn't need fixing.\n if (!token.length || uncountables.hasOwnProperty(token)) {\n return word;\n }\n\n var len = rules.length;\n\n // Iterate over the sanitization rules and use the first one to match.\n while (len--) {\n var rule = rules[len];\n\n if (rule[0].test(word)) return replace(word, rule);\n }\n\n return word;\n }\n\n /**\n * Replace a word with the updated word.\n *\n * @param {Object} replaceMap\n * @param {Object} keepMap\n * @param {Array} rules\n * @return {Function}\n */\n function replaceWord (replaceMap, keepMap, rules) {\n return function (word) {\n // Get the correct token and case restoration functions.\n var token = word.toLowerCase();\n\n // Check against the keep object map.\n if (keepMap.hasOwnProperty(token)) {\n return restoreCase(word, token);\n }\n\n // Check against the replacement map for a direct word replacement.\n if (replaceMap.hasOwnProperty(token)) {\n return restoreCase(word, replaceMap[token]);\n }\n\n // Run all the rules against the word.\n return sanitizeWord(token, word, rules);\n };\n }\n\n /**\n * Check if a word is part of the map.\n */\n function checkWord (replaceMap, keepMap, rules, bool) {\n return function (word) {\n var token = word.toLowerCase();\n\n if (keepMap.hasOwnProperty(token)) return true;\n if (replaceMap.hasOwnProperty(token)) return false;\n\n return sanitizeWord(token, token, rules) === token;\n };\n }\n\n /**\n * Pluralize or singularize a word based on the passed in count.\n *\n * @param {string} word The word to pluralize\n * @param {number} count How many of the word exist\n * @param {boolean} inclusive Whether to prefix with the number (e.g. 3 ducks)\n * @return {string}\n */\n function pluralize (word, count, inclusive) {\n var pluralized = count === 1\n ? pluralize.singular(word) : pluralize.plural(word);\n\n return (inclusive ? count + ' ' : '') + pluralized;\n }\n\n /**\n * Pluralize a word.\n *\n * @type {Function}\n */\n pluralize.plural = replaceWord(\n irregularSingles, irregularPlurals, pluralRules\n );\n\n /**\n * Check if a word is plural.\n *\n * @type {Function}\n */\n pluralize.isPlural = checkWord(\n irregularSingles, irregularPlurals, pluralRules\n );\n\n /**\n * Singularize a word.\n *\n * @type {Function}\n */\n pluralize.singular = replaceWord(\n irregularPlurals, irregularSingles, singularRules\n );\n\n /**\n * Check if a word is singular.\n *\n * @type {Function}\n */\n pluralize.isSingular = checkWord(\n irregularPlurals, irregularSingles, singularRules\n );\n\n /**\n * Add a pluralization rule to the collection.\n *\n * @param {(string|RegExp)} rule\n * @param {string} replacement\n */\n pluralize.addPluralRule = function (rule, replacement) {\n pluralRules.push([sanitizeRule(rule), replacement]);\n };\n\n /**\n * Add a singularization rule to the collection.\n *\n * @param {(string|RegExp)} rule\n * @param {string} replacement\n */\n pluralize.addSingularRule = function (rule, replacement) {\n singularRules.push([sanitizeRule(rule), replacement]);\n };\n\n /**\n * Add an uncountable word rule.\n *\n * @param {(string|RegExp)} word\n */\n pluralize.addUncountableRule = function (word) {\n if (typeof word === 'string') {\n uncountables[word.toLowerCase()] = true;\n return;\n }\n\n // Set singular and plural references for the word.\n pluralize.addPluralRule(word, '$0');\n pluralize.addSingularRule(word, '$0');\n };\n\n /**\n * Add an irregular word definition.\n *\n * @param {string} single\n * @param {string} plural\n */\n pluralize.addIrregularRule = function (single, plural) {\n plural = plural.toLowerCase();\n single = single.toLowerCase();\n\n irregularSingles[single] = plural;\n irregularPlurals[plural] = single;\n };\n\n /**\n * Irregular rules.\n */\n [\n // Pronouns.\n ['I', 'we'],\n ['me', 'us'],\n ['he', 'they'],\n ['she', 'they'],\n ['them', 'them'],\n ['myself', 'ourselves'],\n ['yourself', 'yourselves'],\n ['itself', 'themselves'],\n ['herself', 'themselves'],\n ['himself', 'themselves'],\n ['themself', 'themselves'],\n ['is', 'are'],\n ['was', 'were'],\n ['has', 'have'],\n ['this', 'these'],\n ['that', 'those'],\n // Words ending in with a consonant and `o`.\n ['echo', 'echoes'],\n ['dingo', 'dingoes'],\n ['volcano', 'volcanoes'],\n ['tornado', 'tornadoes'],\n ['torpedo', 'torpedoes'],\n // Ends with `us`.\n ['genus', 'genera'],\n ['viscus', 'viscera'],\n // Ends with `ma`.\n ['stigma', 'stigmata'],\n ['stoma', 'stomata'],\n ['dogma', 'dogmata'],\n ['lemma', 'lemmata'],\n ['schema', 'schemata'],\n ['anathema', 'anathemata'],\n // Other irregular rules.\n ['ox', 'oxen'],\n ['axe', 'axes'],\n ['die', 'dice'],\n ['yes', 'yeses'],\n ['foot', 'feet'],\n ['eave', 'eaves'],\n ['goose', 'geese'],\n ['tooth', 'teeth'],\n ['quiz', 'quizzes'],\n ['human', 'humans'],\n ['proof', 'proofs'],\n ['carve', 'carves'],\n ['valve', 'valves'],\n ['looey', 'looies'],\n ['thief', 'thieves'],\n ['groove', 'grooves'],\n ['pickaxe', 'pickaxes'],\n ['passerby', 'passersby']\n ].forEach(function (rule) {\n return pluralize.addIrregularRule(rule[0], rule[1]);\n });\n\n /**\n * Pluralization rules.\n */\n [\n [/s?$/i, 's'],\n [/[^\\u0000-\\u007F]$/i, '$0'],\n [/([^aeiou]ese)$/i, '$1'],\n [/(ax|test)is$/i, '$1es'],\n [/(alias|[^aou]us|t[lm]as|gas|ris)$/i, '$1es'],\n [/(e[mn]u)s?$/i, '$1s'],\n [/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i, '$1'],\n [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1i'],\n [/(alumn|alg|vertebr)(?:a|ae)$/i, '$1ae'],\n [/(seraph|cherub)(?:im)?$/i, '$1im'],\n [/(her|at|gr)o$/i, '$1oes'],\n [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i, '$1a'],\n [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i, '$1a'],\n [/sis$/i, 'ses'],\n [/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i, '$1$2ves'],\n [/([^aeiouy]|qu)y$/i, '$1ies'],\n [/([^ch][ieo][ln])ey$/i, '$1ies'],\n [/(x|ch|ss|sh|zz)$/i, '$1es'],\n [/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i, '$1ices'],\n [/\\b((?:tit)?m|l)(?:ice|ouse)$/i, '$1ice'],\n [/(pe)(?:rson|ople)$/i, '$1ople'],\n [/(child)(?:ren)?$/i, '$1ren'],\n [/eaux$/i, '$0'],\n [/m[ae]n$/i, 'men'],\n ['thou', 'you']\n ].forEach(function (rule) {\n return pluralize.addPluralRule(rule[0], rule[1]);\n });\n\n /**\n * Singularization rules.\n */\n [\n [/s$/i, ''],\n [/(ss)$/i, '$1'],\n [/(wi|kni|(?:after|half|high|low|mid|non|night|[^\\w]|^)li)ves$/i, '$1fe'],\n [/(ar|(?:wo|[ae])l|[eo][ao])ves$/i, '$1f'],\n [/ies$/i, 'y'],\n [/\\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i, '$1ie'],\n [/\\b(mon|smil)ies$/i, '$1ey'],\n [/\\b((?:tit)?m|l)ice$/i, '$1ouse'],\n [/(seraph|cherub)im$/i, '$1'],\n [/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i, '$1'],\n [/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i, '$1sis'],\n [/(movie|twelve|abuse|e[mn]u)s$/i, '$1'],\n [/(test)(?:is|es)$/i, '$1is'],\n [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1us'],\n [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i, '$1um'],\n [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i, '$1on'],\n [/(alumn|alg|vertebr)ae$/i, '$1a'],\n [/(cod|mur|sil|vert|ind)ices$/i, '$1ex'],\n [/(matr|append)ices$/i, '$1ix'],\n [/(pe)(rson|ople)$/i, '$1rson'],\n [/(child)ren$/i, '$1'],\n [/(eau)x?$/i, '$1'],\n [/men$/i, 'man']\n ].forEach(function (rule) {\n return pluralize.addSingularRule(rule[0], rule[1]);\n });\n\n /**\n * Uncountable rules.\n */\n [\n // Singular words with no plurals.\n 'adulthood',\n 'advice',\n 'agenda',\n 'aid',\n 'aircraft',\n 'alcohol',\n 'ammo',\n 'analytics',\n 'anime',\n 'athletics',\n 'audio',\n 'bison',\n 'blood',\n 'bream',\n 'buffalo',\n 'butter',\n 'carp',\n 'cash',\n 'chassis',\n 'chess',\n 'clothing',\n 'cod',\n 'commerce',\n 'cooperation',\n 'corps',\n 'debris',\n 'diabetes',\n 'digestion',\n 'elk',\n 'energy',\n 'equipment',\n 'excretion',\n 'expertise',\n 'firmware',\n 'flounder',\n 'fun',\n 'gallows',\n 'garbage',\n 'graffiti',\n 'hardware',\n 'headquarters',\n 'health',\n 'herpes',\n 'highjinks',\n 'homework',\n 'housework',\n 'information',\n 'jeans',\n 'justice',\n 'kudos',\n 'labour',\n 'literature',\n 'machinery',\n 'mackerel',\n 'mail',\n 'media',\n 'mews',\n 'moose',\n 'music',\n 'mud',\n 'manga',\n 'news',\n 'only',\n 'personnel',\n 'pike',\n 'plankton',\n 'pliers',\n 'police',\n 'pollution',\n 'premises',\n 'rain',\n 'research',\n 'rice',\n 'salmon',\n 'scissors',\n 'series',\n 'sewage',\n 'shambles',\n 'shrimp',\n 'software',\n 'species',\n 'staff',\n 'swine',\n 'tennis',\n 'traffic',\n 'transportation',\n 'trout',\n 'tuna',\n 'wealth',\n 'welfare',\n 'whiting',\n 'wildebeest',\n 'wildlife',\n 'you',\n /pok[eé]mon$/i,\n // Regexes.\n /[^aeiou]ese$/i, // \"chinese\", \"japanese\"\n /deer$/i, // \"deer\", \"reindeer\"\n /fish$/i, // \"fish\", \"blowfish\", \"angelfish\"\n /measles$/i,\n /o[iu]s$/i, // \"carnivorous\"\n /pox$/i, // \"chickpox\", \"smallpox\"\n /sheep$/i\n ].forEach(pluralize.addUncountableRule);\n\n return pluralize;\n});\n","// Latin-1 Supplement\n// upper case ranges\n// [À-ÖØ-ß]\n// lower case ranges\n// [à-öø-ÿ]\nexport const magicSplit = /^[a-zà-öø-ÿа-я]+|[A-ZÀ-ÖØ-ßА-Я][a-zà-öø-ÿа-я]+|[a-zà-öø-ÿа-я]+|[0-9]+|[A-ZÀ-ÖØ-ßА-Я]+(?![a-zà-öø-ÿа-я])/g;\nexport const spaceSplit = /\\S+/g;\n/**\n * A string.matchAll function that will return an array of \"string parts\" and the indexes at which it split each part\n */\nexport function getPartsAndIndexes(string, splitRegex) {\n const result = { parts: [], prefixes: [] };\n const matches = string.matchAll(splitRegex);\n let lastWordEndIndex = 0;\n for (const match of matches) {\n if (typeof match.index !== 'number')\n continue;\n const word = match[0];\n result.parts.push(word);\n const prefix = string.slice(lastWordEndIndex, match.index).trim();\n result.prefixes.push(prefix);\n lastWordEndIndex = match.index + word.length;\n }\n const tail = string.slice(lastWordEndIndex).trim();\n if (tail) {\n result.parts.push('');\n result.prefixes.push(tail);\n }\n return result;\n}\n/**\n * A function that splits a string on words and returns an array of words.\n * - It can prefix each word with a given character\n * - It can strip or keep special characters, this affects the logic for adding a prefix as well\n */\nexport function splitAndPrefix(string, options) {\n const { keepSpecialCharacters = false, keep, prefix = '' } = options || {};\n const normalString = string.trim().normalize('NFC');\n const hasSpaces = normalString.includes(' ');\n const split = hasSpaces ? spaceSplit : magicSplit;\n const partsAndIndexes = getPartsAndIndexes(normalString, split);\n return partsAndIndexes.parts\n .map((_part, i) => {\n let foundPrefix = partsAndIndexes.prefixes[i] || '';\n let part = _part;\n if (keepSpecialCharacters === false) {\n if (keep) {\n part = part\n .normalize('NFD')\n .replace(new RegExp(`[^a-zA-ZØßø0-9${keep.join('')}]`, 'g'), '');\n }\n if (!keep) {\n part = part.normalize('NFD').replace(/[^a-zA-ZØßø0-9]/g, '');\n foundPrefix = '';\n }\n }\n if (keep && foundPrefix) {\n foundPrefix = foundPrefix.replace(new RegExp(`[^${keep.join('')}]`, 'g'), '');\n }\n // the first word doesn't need a prefix, so only return the found prefix\n if (i === 0) {\n // console.log(`foundPrefix → `, foundPrefix)\n return foundPrefix + part;\n }\n if (!foundPrefix && !part)\n return '';\n if (!hasSpaces) {\n // return the found prefix OR fall back to a given prefix\n return (foundPrefix || prefix) + part;\n }\n // space based sentence was split on spaces, so only return found prefixes\n if (!foundPrefix && prefix.match(/\\s/)) {\n // in this case we have no more found prefix, it was trimmed, but we're looking to add a space\n // so let's return that space\n return ' ' + part;\n }\n return (foundPrefix || prefix) + part;\n })\n .filter(Boolean);\n}\n/**\n * Capitalises a single word\n * @returns the word with the first character in uppercase and the rest in lowercase\n */\nexport function capitaliseWord(string) {\n const match = string.matchAll(magicSplit).next().value;\n const firstLetterIndex = match ? match.index : 0;\n return (string.slice(0, firstLetterIndex + 1).toUpperCase() +\n string.slice(firstLetterIndex + 1).toLowerCase());\n}\n","import { capitaliseWord, magicSplit, splitAndPrefix } from './utils.js';\n/**\n * # 🐪 camelCase\n * converts a string to camelCase\n * - first lowercase then all capitalised\n * - *strips away* special characters by default\n *\n * @example\n * camelCase('$catDog') === 'catDog'\n * @example\n * camelCase('$catDog', { keepSpecialCharacters: true }) === '$catDog'\n */\nexport function camelCase(string, options) {\n return splitAndPrefix(string, options).reduce((result, word, index) => {\n return index === 0 || !(word[0] || '').match(magicSplit)\n ? result + word.toLowerCase()\n : result + capitaliseWord(word);\n }, '');\n}\n/**\n * # 🐫 PascalCase\n * converts a string to PascalCase (also called UpperCamelCase)\n * - all capitalised\n * - *strips away* special characters by default\n *\n * @example\n * pascalCase('$catDog') === 'CatDog'\n * @example\n * pascalCase('$catDog', { keepSpecialCharacters: true }) === '$CatDog'\n */\nexport function pascalCase(string, options) {\n return splitAndPrefix(string, options).reduce((result, word) => {\n return result + capitaliseWord(word);\n }, '');\n}\n/**\n * # 🐫 UpperCamelCase\n * converts a string to UpperCamelCase (also called PascalCase)\n * - all capitalised\n * - *strips away* special characters by default\n *\n * @example\n * upperCamelCase('$catDog') === 'CatDog'\n * @example\n * upperCamelCase('$catDog', { keepSpecialCharacters: true }) === '$CatDog'\n */\nexport const upperCamelCase = pascalCase;\n/**\n * # 🥙 kebab-case\n * converts a string to kebab-case\n * - hyphenated lowercase\n * - *strips away* special characters by default\n *\n * @example\n * kebabCase('$catDog') === 'cat-dog'\n * @example\n * kebabCase('$catDog', { keepSpecialCharacters: true }) === '$cat-dog'\n */\nexport function kebabCase(string, options) {\n return splitAndPrefix(string, { ...options, prefix: '-' })\n .join('')\n .toLowerCase();\n}\n/**\n * # 🐍 snake_case\n * converts a string to snake_case\n * - underscored lowercase\n * - *strips away* special characters by default\n *\n * @example\n * snakeCase('$catDog') === 'cat_dog'\n * @example\n * snakeCase('$catDog', { keepSpecialCharacters: true }) === '$cat_dog'\n */\nexport function snakeCase(string, options) {\n return splitAndPrefix(string, { ...options, prefix: '_' })\n .join('')\n .toLowerCase();\n}\n/**\n * # 📣 CONSTANT_CASE\n * converts a string to CONSTANT_CASE\n * - underscored uppercase\n * - *strips away* special characters by default\n *\n * @example\n * constantCase('$catDog') === 'CAT_DOG'\n * @example\n * constantCase('$catDog', { keepSpecialCharacters: true }) === '$CAT_DOG'\n */\nexport function constantCase(string, options) {\n return splitAndPrefix(string, { ...options, prefix: '_' })\n .join('')\n .toUpperCase();\n}\n/**\n * # 🚂 Train-Case\n * converts strings to Train-Case\n * - hyphenated & capitalised\n * - *strips away* special characters by default\n *\n * @example\n * trainCase('$catDog') === 'Cat-Dog'\n * @example\n * trainCase('$catDog', { keepSpecialCharacters: true }) === '$Cat-Dog'\n */\nexport function trainCase(string, options) {\n return splitAndPrefix(string, { ...options, prefix: '-' })\n .map((word) => capitaliseWord(word))\n .join('');\n}\n/**\n * # 🕊 Ada_Case\n * converts a string to Ada_Case\n * - underscored & capitalised\n * - *strips away* special characters by default\n *\n * @example\n * adaCase('$catDog') === 'Cat_Dog'\n * @example\n * adaCase('$catDog', { keepSpecialCharacters: true }) === '$Cat_Dog'\n */\nexport function adaCase(string, options) {\n return splitAndPrefix(string, { ...options, prefix: '_' })\n .map((part) => capitaliseWord(part))\n .join('');\n}\n/**\n * # 👔 COBOL-CASE\n * converts a string to COBOL-CASE\n * - hyphenated uppercase\n * - *strips away* special characters by default\n *\n * @example\n * cobolCase('$catDog') === 'CAT-DOG'\n * @example\n * cobolCase('$catDog', { keepSpecialCharacters: true }) === '$CAT-DOG'\n */\nexport function cobolCase(string, options) {\n return splitAndPrefix(string, { ...options, prefix: '-' })\n .join('')\n .toUpperCase();\n}\n/**\n * # 📍 Dot.notation\n * converts a string to dot.notation\n * - adds dots, does not change casing\n * - *strips away* special characters by default\n *\n * @example\n * dotNotation('$catDog') === 'cat.Dog'\n * @example\n * dotNotation('$catDog', { keepSpecialCharacters: true }) === '$cat.Dog'\n */\nexport function dotNotation(string, options) {\n return splitAndPrefix(string, { ...options, prefix: '.' }).join('');\n}\n/**\n * # 📂 Path/case\n * converts a string to path/case\n * - adds slashes, does not change casing\n * - *keeps* special characters by default\n *\n * @example\n * pathCase('$catDog') === '$cat/Dog'\n * @example\n * pathCase('$catDog', { keepSpecialCharacters: false }) === 'cat/Dog'\n */\nexport function pathCase(string, options = { keepSpecialCharacters: true }) {\n return splitAndPrefix(string, options).reduce((result, word, i) => {\n const prefix = i === 0 || word[0] === '/' ? '' : '/';\n return result + prefix + word;\n }, '');\n}\n/**\n * # 🛰 Space case\n * converts a string to space case\n * - adds spaces, does not change casing\n * - *keeps* special characters by default\n *\n * @example\n * spaceCase('$catDog') === '$cat Dog'\n * @example\n * spaceCase('$catDog', { keepSpecialCharacters: false }) === 'cat Dog'\n */\nexport function spaceCase(string, options = { keepSpecialCharacters: true }) {\n return splitAndPrefix(string, { ...options, prefix: ' ' }).join('');\n}\n/**\n * # 🏛 Capital Case\n * converts a string to Capital Case\n * - capitalizes words and adds spaces\n * - *keeps* special characters by default\n *\n * @example\n * capitalCase('$catDog') === '$Cat Dog'\n * @example\n * capitalCase('$catDog', { keepSpecialCharacters: false }) === 'Cat Dog'\n *\n * ⟪ if you do not want to add spaces, use `pascalCase()` ⟫\n */\nexport function capitalCase(string, options = { keepSpecialCharacters: true }) {\n return splitAndPrefix(string, { ...options, prefix: ' ' }).reduce((result, word) => {\n return result + capitaliseWord(word);\n }, '');\n}\n/**\n * # 🔡 lower case\n * converts a string to lower case\n * - makes words lowercase and adds spaces\n * - *keeps* special characters by default\n *\n * @example\n * lowerCase('$catDog') === '$cat dog'\n * @example\n * lowerCase('$catDog', { keepSpecialCharacters: false }) === 'cat dog'\n *\n * ⟪ if you do not want to add spaces, use the native JS `toLowerCase()` ⟫\n */\nexport function lowerCase(string, options = { keepSpecialCharacters: true }) {\n return splitAndPrefix(string, { ...options, prefix: ' ' })\n .join('')\n .toLowerCase();\n}\n/**\n * # 🔠 UPPER CASE\n * converts a string to UPPER CASE\n * - makes words upper case and adds spaces\n * - *keeps* special characters by default\n *\n * @example\n * upperCase('$catDog') === '$CAT DOG'\n * @example\n * upperCase('$catDog', { keepSpecialCharacters: false }) === 'CAT DOG'\n *\n * ⟪ if you do not want to add spaces, use the native JS `toUpperCase()` ⟫\n */\nexport function upperCase(string, options = { keepSpecialCharacters: true }) {\n return splitAndPrefix(string, { ...options, prefix: ' ' })\n .join('')\n .toUpperCase();\n}\n","import \"node:module\";\nimport { randomBytes, randomUUID } from \"node:crypto\";\nimport slugifyPkg from \"slugify\";\nimport pluralizePkg from \"pluralize\";\nimport * as changeCase from \"case-anything\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);\nvar __copyProps = (to, from, except, desc) => {\n\tif (from && typeof from === \"object\" || typeof from === \"function\") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {\n\t\tkey = keys[i];\n\t\tif (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {\n\t\t\tget: ((k) => from[k]).bind(null, key),\n\t\t\tenumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable\n\t\t});\n\t}\n\treturn to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", {\n\tvalue: mod,\n\tenumerable: true\n}) : target, mod));\nvar import_bytes = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {\n\tmodule.exports = bytes$1;\n\tmodule.exports.format = format$1;\n\tmodule.exports.parse = parse$1;\n\tvar formatThousandsRegExp = /\\B(?=(\\d{3})+(?!\\d))/g;\n\tvar formatDecimalsRegExp = /(?:\\.0*|(\\.[^0]+)0+)$/;\n\tvar map = {\n\t\tb: 1,\n\t\tkb: 1024,\n\t\tmb: 1 << 20,\n\t\tgb: 1 << 30,\n\t\ttb: Math.pow(1024, 4),\n\t\tpb: Math.pow(1024, 5)\n\t};\n\tvar parseRegExp = /^((-|\\+)?(\\d+(?:\\.\\d+)?)) *(kb|mb|gb|tb|pb)$/i;\n\tfunction bytes$1(value, options) {\n\t\tif (typeof value === \"string\") return parse$1(value);\n\t\tif (typeof value === \"number\") return format$1(value, options);\n\t\treturn null;\n\t}\n\tfunction format$1(value, options) {\n\t\tif (!Number.isFinite(value)) return null;\n\t\tvar mag = Math.abs(value);\n\t\tvar thousandsSeparator = options && options.thousandsSeparator || \"\";\n\t\tvar unitSeparator = options && options.unitSeparator || \"\";\n\t\tvar decimalPlaces = options && options.decimalPlaces !== void 0 ? options.decimalPlaces : 2;\n\t\tvar fixedDecimals = Boolean(options && options.fixedDecimals);\n\t\tvar unit = options && options.unit || \"\";\n\t\tif (!unit || !map[unit.toLowerCase()]) if (mag >= map.pb) unit = \"PB\";\n\t\telse if (mag >= map.tb) unit = \"TB\";\n\t\telse if (mag >= map.gb) unit = \"GB\";\n\t\telse if (mag >= map.mb) unit = \"MB\";\n\t\telse if (mag >= map.kb) unit = \"KB\";\n\t\telse unit = \"B\";\n\t\tvar str = (value / map[unit.toLowerCase()]).toFixed(decimalPlaces);\n\t\tif (!fixedDecimals) str = str.replace(formatDecimalsRegExp, \"$1\");\n\t\tif (thousandsSeparator) str = str.split(\".\").map(function(s, i) {\n\t\t\treturn i === 0 ? s.replace(formatThousandsRegExp, thousandsSeparator) : s;\n\t\t}).join(\".\");\n\t\treturn str + unitSeparator + unit;\n\t}\n\tfunction parse$1(val) {\n\t\tif (typeof val === \"number\" && !isNaN(val)) return val;\n\t\tif (typeof val !== \"string\") return null;\n\t\tvar results = parseRegExp.exec(val);\n\t\tvar floatValue;\n\t\tvar unit = \"b\";\n\t\tif (!results) {\n\t\t\tfloatValue = parseInt(val, 10);\n\t\t\tunit = \"b\";\n\t\t} else {\n\t\t\tfloatValue = parseFloat(results[1]);\n\t\t\tunit = results[4].toLowerCase();\n\t\t}\n\t\tif (isNaN(floatValue)) return null;\n\t\treturn Math.floor(map[unit] * floatValue);\n\t}\n})))(), 1);\nvar bytes_default = {\n\tformat(valueInBytes, options) {\n\t\treturn import_bytes.default.format(valueInBytes, options);\n\t},\n\tparse(unit) {\n\t\tif (typeof unit === \"number\") return unit;\n\t\treturn import_bytes.default.parse(unit);\n\t}\n};\nlet uuidGenerator = randomUUID;\nfunction uuid(options) {\n\treturn uuidGenerator(options);\n}\nuuid.use = function uuidUse(generator) {\n\tuuidGenerator = generator;\n};\nuuid.restore = function uuidRestore() {\n\tuuidGenerator = randomUUID;\n};\nvar RGX = /^(-?(?:\\d+)?\\.?\\d+) *(m(?:illiseconds?|s(?:ecs?)?))?(s(?:ec(?:onds?|s)?)?)?(m(?:in(?:utes?|s)?)?)?(h(?:ours?|rs?)?)?(d(?:ays?)?)?(w(?:eeks?|ks?)?)?(y(?:ears?|rs?)?)?$/, SEC = 1e3, MIN = SEC * 60, HOUR = MIN * 60, DAY = HOUR * 24, YEAR = DAY * 365.25;\nfunction parse(val) {\n\tvar num, arr = val.toLowerCase().match(RGX);\n\tif (arr != null && (num = parseFloat(arr[1]))) {\n\t\tif (arr[3] != null) return num * SEC;\n\t\tif (arr[4] != null) return num * MIN;\n\t\tif (arr[5] != null) return num * HOUR;\n\t\tif (arr[6] != null) return num * DAY;\n\t\tif (arr[7] != null) return num * DAY * 7;\n\t\tif (arr[8] != null) return num * YEAR;\n\t\treturn num;\n\t}\n}\nfunction fmt(val, pfx, str, long) {\n\tvar num = (val | 0) === val ? val : ~~(val + .5);\n\treturn pfx + num + (long ? \" \" + str + (num != 1 ? \"s\" : \"\") : str[0]);\n}\nfunction format(num, long) {\n\tvar pfx = num < 0 ? \"-\" : \"\", abs = num < 0 ? -num : num;\n\tif (abs < SEC) return num + (long ? \" ms\" : \"ms\");\n\tif (abs < MIN) return fmt(abs / SEC, pfx, \"second\", long);\n\tif (abs < HOUR) return fmt(abs / MIN, pfx, \"minute\", long);\n\tif (abs < DAY) return fmt(abs / HOUR, pfx, \"hour\", long);\n\tif (abs < YEAR) return fmt(abs / DAY, pfx, \"day\", long);\n\treturn fmt(abs / YEAR, pfx, \"year\", long);\n}\nvar seconds_default = {\n\tformat(seconds, long) {\n\t\treturn format(seconds * 1e3, long);\n\t},\n\tparse(duration) {\n\t\tif (typeof duration === \"number\") return duration;\n\t\tconst milliseconds = parse(duration);\n\t\tif (milliseconds === void 0) throw new Error(`Invalid duration expression \"${duration}\"`);\n\t\treturn Math.floor(milliseconds / 1e3);\n\t}\n};\nconst slug = slugifyPkg;\nconst defaultGenerator = (size) => {\n\tconst bits = (size + 1) * 6;\n\tconst buffer = randomBytes(Math.ceil(bits / 8));\n\treturn Buffer.from(buffer).toString(\"base64\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/\\=/g, \"\").slice(0, size);\n};\nlet randomGenerator = defaultGenerator;\nfunction random(size) {\n\treturn randomGenerator(size);\n}\nrandom.use = function randomUse(generator) {\n\trandomGenerator = generator;\n};\nrandom.restore = function randomRestore() {\n\trandomGenerator = defaultGenerator;\n};\nvar require_truncatise = /* @__PURE__ */ __commonJSMin(((exports, module) => {\n\t(function(exportTo) {\n\t\t\"use strict\";\n\t\tvar selfClosingTags = [\n\t\t\t\"area\",\n\t\t\t\"base\",\n\t\t\t\"br\",\n\t\t\t\"col\",\n\t\t\t\"embed\",\n\t\t\t\"hr\",\n\t\t\t\"img\",\n\t\t\t\"input\",\n\t\t\t\"keygen\",\n\t\t\t\"link\",\n\t\t\t\"menuitem\",\n\t\t\t\"meta\",\n\t\t\t\"param\",\n\t\t\t\"source\",\n\t\t\t\"track\",\n\t\t\t\"wbr\"\n\t\t];\n\t\tvar truncatise$2 = function(text, options) {\n\t\t\tvar options = options || {}, text = (text || \"\").trim(), truncatedText = \"\", currentState = 0, isEndOfWord = false, currentTag = \"\", tagStack = [], nextChar = \"\";\n\t\t\tvar charCounter = 0, wordCounter = 0, paragraphCounter = 0;\n\t\t\tvar NOT_TAG = 0, TAG_START = 1, TAG_ATTRIBUTES = 2;\n\t\t\toptions.TruncateBy = options.TruncateBy === void 0 || typeof options.TruncateBy !== \"string\" || !options.TruncateBy.match(/(word(s)?|character(s)?|paragraph(s)?)/) ? \"words\" : options.TruncateBy.toLowerCase();\n\t\t\toptions.TruncateLength = options.TruncateLength === void 0 || typeof options.TruncateLength !== \"number\" ? 50 : options.TruncateLength;\n\t\t\toptions.StripHTML = options.StripHTML === void 0 || typeof options.StripHTML !== \"boolean\" ? false : options.StripHTML;\n\t\t\toptions.Strict = options.Strict === void 0 || typeof options.Strict !== \"boolean\" ? true : options.Strict;\n\t\t\toptions.Suffix = options.Suffix === void 0 || typeof options.Suffix !== \"string\" ? \"...\" : options.Suffix;\n\t\t\tif (text === \"\" || text.length <= options.TruncateLength && options.StripHTML === false) return text;\n\t\t\tif (options.StripHTML) text = String(text).replace(/<br( \\/)?>/gi, \" \");\n\t\t\tif (options.StripHTML && !options.TruncateBy.match(/(paragraph(s)?)/)) text = String(text).replace(/<!--(.*?)-->/gm, \"\").replace(/<\\/?[^>]+>/gi, \"\");\n\t\t\ttext = String(text).replace(/<\\/p>(\\r?\\n)+<p>/gm, \"</p><p>\");\n\t\t\tif (options.StripHTML && String(text).match(/\\r?\\n\\r?\\n/)) text = String(text).replace(/((.+)(\\r?\\n\\r?\\n|$))/gi, \"<p>$2</p>\");\n\t\t\tfor (var pointer = 0; pointer < text.length; pointer++) {\n\t\t\t\tvar currentChar = text[pointer];\n\t\t\t\tswitch (currentChar) {\n\t\t\t\t\tcase \"<\":\n\t\t\t\t\t\tif (currentState === NOT_TAG) {\n\t\t\t\t\t\t\tcurrentState = TAG_START;\n\t\t\t\t\t\t\tcurrentTag = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!options.StripHTML) truncatedText += currentChar;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \">\":\n\t\t\t\t\t\tif (currentState === TAG_START || currentState === TAG_ATTRIBUTES) {\n\t\t\t\t\t\t\tcurrentState = NOT_TAG;\n\t\t\t\t\t\t\tcurrentTag = currentTag.toLowerCase();\n\t\t\t\t\t\t\tif (currentTag === \"/p\") {\n\t\t\t\t\t\t\t\tparagraphCounter++;\n\t\t\t\t\t\t\t\tif (options.StripHTML) truncatedText += \" \";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selfClosingTags.indexOf(currentTag) === -1 && selfClosingTags.indexOf(currentTag + \"/\") === -1) if (currentTag.indexOf(\"/\") >= 0) tagStack.pop();\n\t\t\t\t\t\t\telse tagStack.push(currentTag);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!options.StripHTML) truncatedText += currentChar;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \" \":\n\t\t\t\t\t\tif (currentState === TAG_START) currentState = TAG_ATTRIBUTES;\n\t\t\t\t\t\tif (currentState === NOT_TAG) {\n\t\t\t\t\t\t\twordCounter++;\n\t\t\t\t\t\t\tcharCounter++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (currentState === NOT_TAG || !options.StripHTML) truncatedText += currentChar;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (currentState === NOT_TAG) charCounter++;\n\t\t\t\t\t\tif (currentState === TAG_START) currentTag += currentChar;\n\t\t\t\t\t\tif (currentState === NOT_TAG || !options.StripHTML) truncatedText += currentChar;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tnextChar = text[pointer + 1] || \"\";\n\t\t\t\tisEndOfWord = options.Strict ? true : !currentChar.match(/[a-zA-ZÇ-Ü']/i) || !nextChar.match(/[a-zA-ZÇ-Ü']/i);\n\t\t\t\tif (options.TruncateBy.match(/word(s)?/i) && options.TruncateLength <= wordCounter) {\n\t\t\t\t\ttruncatedText = truncatedText.replace(/\\s+$/, \"\");\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (options.TruncateBy.match(/character(s)?/i) && options.TruncateLength <= charCounter && isEndOfWord) break;\n\t\t\t\tif (options.TruncateBy.match(/paragraph(s)?/i) && options.TruncateLength === paragraphCounter) break;\n\t\t\t}\n\t\t\tif (!options.StripHTML && tagStack.length > 0) while (tagStack.length > 0) {\n\t\t\t\tvar tag = tagStack.pop();\n\t\t\t\tif (tag !== \"!--\") truncatedText += \"</\" + tag + \">\";\n\t\t\t}\n\t\t\tif (pointer < text.length - 1) if (truncatedText.match(/<\\/p>$/gi)) truncatedText = truncatedText.replace(/(<\\/p>)$/gi, options.Suffix + \"$1\");\n\t\t\telse truncatedText = truncatedText + options.Suffix;\n\t\t\treturn truncatedText.trim();\n\t\t};\n\t\tif (typeof module !== \"undefined\" && module.exports) return module.exports = truncatise$2;\n\t\texportTo.truncatise = truncatise$2;\n\t})(exports);\n}));\nvar import_truncatise$1 = /* @__PURE__ */ __toESM(require_truncatise(), 1);\nfunction excerpt(sentence$1, charactersLimit, options) {\n\treturn (0, import_truncatise$1.default)(sentence$1, {\n\t\tTruncateLength: charactersLimit,\n\t\tStrict: options && options.completeWords === true ? false : true,\n\t\tStripHTML: true,\n\t\tTruncateBy: \"characters\",\n\t\tSuffix: options && options.suffix\n\t});\n}\nfunction applyPadding(value, options) {\n\tif (options.paddingLeft) value = `${options.paddingChar.repeat(options.paddingLeft)}${value}`;\n\tif (options.paddingRight) value = `${value}${options.paddingChar.repeat(options.paddingRight)}`;\n\treturn value;\n}\nfunction justify(columns, options) {\n\tconst normalizedOptions = {\n\t\talign: \"left\",\n\t\tindent: \" \",\n\t\t...options\n\t};\n\treturn columns.map((column) => {\n\t\tconst columnWidth = options.getLength?.(column) ?? column.length;\n\t\tif (columnWidth >= normalizedOptions.width) return column;\n\t\tif (normalizedOptions.align === \"left\") return applyPadding(column, {\n\t\t\tpaddingChar: normalizedOptions.indent,\n\t\t\tpaddingRight: normalizedOptions.width - columnWidth\n\t\t});\n\t\treturn applyPadding(column, {\n\t\t\tpaddingChar: normalizedOptions.indent,\n\t\t\tpaddingLeft: normalizedOptions.width - columnWidth\n\t\t});\n\t});\n}\nfunction ordinal(value) {\n\tconst transformedValue = Math.abs(typeof value === \"string\" ? Number.parseInt(value) : value);\n\tif (!Number.isFinite(transformedValue) || Number.isNaN(transformedValue)) throw new Error(\"Cannot ordinalize invalid or infinite numbers\");\n\tconst percent = transformedValue % 100;\n\tif (percent >= 10 && percent <= 20) return `${value}th`;\n\tswitch (transformedValue % 10) {\n\t\tcase 1: return `${value}st`;\n\t\tcase 2: return `${value}nd`;\n\t\tcase 3: return `${value}rd`;\n\t\tdefault: return `${value}th`;\n\t}\n}\nvar import_truncatise = /* @__PURE__ */ __toESM(require_truncatise(), 1);\nfunction truncate(sentence$1, charactersLimit, options) {\n\treturn (0, import_truncatise.default)(sentence$1, {\n\t\tTruncateLength: charactersLimit,\n\t\tStrict: options && options.completeWords === true ? false : true,\n\t\tStripHTML: false,\n\t\tTruncateBy: \"characters\",\n\t\tSuffix: options && options.suffix\n\t});\n}\nfunction sentence(values, options) {\n\tif (values.length === 0) return \"\";\n\tif (values.length === 1) return values[0];\n\tif (values.length === 2) return `${values[0]}${options?.pairSeparator || \" and \"}${values[1]}`;\n\tconst normalized = Object.assign({\n\t\tseparator: \", \",\n\t\tlastSeparator: \", and \"\n\t}, options);\n\treturn `${values.slice(0, -1).join(normalized.separator)}${normalized.lastSeparator}${values[values.length - 1]}`;\n}\nfunction wordWrap(value, options) {\n\tconst width = options.width;\n\tconst indent = options.indent ?? \"\";\n\tconst newLine = `${options.newLine ?? \"\\n\"}${indent}`;\n\tlet regexString = \".{1,\" + width + \"}\";\n\tregexString += \"([\\\\s​]+|$)|[^\\\\s​]+?([\\\\s​]+|$)\";\n\tconst re = new RegExp(regexString, \"g\");\n\treturn (value.match(re) || []).map(function(line) {\n\t\tif (line.slice(-1) === \"\\n\") line = line.slice(0, line.length - 1);\n\t\treturn options.escape ? options.escape(line) : line;\n\t}).join(newLine);\n}\nvar milliseconds_default = {\n\tformat(milliseconds, long) {\n\t\treturn format(milliseconds, long);\n\t},\n\tparse(duration) {\n\t\tif (typeof duration === \"number\") return duration;\n\t\tconst milliseconds = parse(duration);\n\t\tif (milliseconds === void 0) throw new Error(`Invalid duration expression \"${duration}\"`);\n\t\treturn milliseconds;\n\t}\n};\nfunction htmlEscape(value) {\n\treturn value.replace(/&/g, \"&amp;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&#39;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n}\nfunction parseProp(data, key) {\n\tconst tokens = key.split(\".\");\n\twhile (tokens.length) {\n\t\tif (data === null || typeof data !== \"object\") return;\n\t\tconst token = tokens.shift();\n\t\tdata = Object.hasOwn(data, token) ? data[token] : void 0;\n\t}\n\treturn data;\n}\nfunction interpolate(input, data) {\n\treturn input.replace(/(\\\\)?{{(.*?)}}/g, (_, escapeChar, key) => {\n\t\tif (escapeChar) return `{{${key}}}`;\n\t\treturn parseProp(data, key.trim());\n\t});\n}\nfunction toUnixSlash(path) {\n\tif (path.startsWith(\"\\\\\\\\?\\\\\")) return path;\n\treturn path.replace(/\\\\/g, \"/\");\n}\nfunction pluralize(word, count, inclusive) {\n\treturn pluralizePkg(word, count, inclusive);\n}\npluralize.addPluralRule = pluralizePkg.addPluralRule;\npluralize.addSingularRule = pluralizePkg.addSingularRule;\npluralize.addIrregularRule = pluralizePkg.addIrregularRule;\npluralize.addUncountableRule = pluralizePkg.addUncountableRule;\nconst plural = pluralizePkg.plural;\nconst singular = pluralizePkg.singular;\nconst isPlural = pluralizePkg.isPlural;\nconst isSingular = pluralizePkg.isSingular;\nconst NO_CASE_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\nconst NO_CASE_STRIP_REGEXP = /[^A-Z0-9]+/gi;\nconst SMALL_WORDS = /\\b(?:an?d?|a[st]|because|but|by|en|for|i[fn]|neither|nor|o[fnr]|only|over|per|so|some|tha[tn]|the|to|up|upon|vs?\\.?|versus|via|when|with|without|yet)\\b/i;\nconst TOKENS = /[^\\s:–—-]+|./g;\nconst WHITESPACE = /\\s/;\nconst IS_MANUAL_CASE = /.(?=[A-Z]|\\..)/;\nconst ALPHANUMERIC_PATTERN = /[A-Za-z0-9\\u00C0-\\u00FF]/;\nfunction titleCase(input) {\n\tlet output = \"\";\n\tlet result;\n\twhile ((result = TOKENS.exec(input)) !== null) {\n\t\tconst { 0: token, index } = result;\n\t\tif (!IS_MANUAL_CASE.test(token) && (!SMALL_WORDS.test(token) || index === 0 || index + token.length === input.length) && (input.charAt(index + token.length) !== \":\" || WHITESPACE.test(input.charAt(index + token.length + 1)))) {\n\t\t\toutput += token.replace(ALPHANUMERIC_PATTERN, (char) => char.toUpperCase());\n\t\t\tcontinue;\n\t\t}\n\t\toutput += token;\n\t}\n\treturn output;\n}\nfunction camelCase(value) {\n\treturn changeCase.camelCase(value);\n}\nfunction snakeCase(value) {\n\treturn changeCase.snakeCase(value);\n}\nfunction dashCase(value, options) {\n\tif (options && options.capitalize) return changeCase.trainCase(value);\n\treturn changeCase.kebabCase(value);\n}\nfunction pascalCase(value) {\n\treturn changeCase.pascalCase(value);\n}\nfunction capitalCase(value) {\n\treturn changeCase.capitalCase(value);\n}\nfunction sentenceCase(value) {\n\treturn noCase(value, (input, index) => {\n\t\tconst result = input.toLowerCase();\n\t\tif (index === 0) return input.charAt(0).toUpperCase() + input.substring(1);\n\t\treturn result;\n\t});\n}\nfunction dotCase(value, options) {\n\tconst transformedValue = changeCase.dotNotation(value);\n\tif (options && options.lowerCase) return transformedValue.toLowerCase();\n\treturn transformedValue;\n}\nfunction noCase(value, transform) {\n\tlet result = NO_CASE_SPLIT_REGEXP.reduce((input, regex) => input.replace(regex, \"$1\\0$2\"), value);\n\tresult = result.replace(NO_CASE_STRIP_REGEXP, \"\\0\");\n\tlet start = 0;\n\tlet end = result.length;\n\twhile (result.charAt(start) === \"\\0\") start++;\n\twhile (result.charAt(end - 1) === \"\\0\") end--;\n\treturn result.slice(start, end).split(\"\\0\").map(transform || ((input) => input.toLowerCase())).join(\" \");\n}\nfunction condenseWhitespace(value) {\n\treturn value.trim().replace(/\\s{2,}/g, \" \");\n}\nvar string_default = {\n\texcerpt,\n\ttruncate,\n\tslug,\n\tinterpolate,\n\tplural,\n\tpluralize,\n\tsingular,\n\tisPlural,\n\tisSingular,\n\tcamelCase,\n\tcapitalCase,\n\tdashCase,\n\tdotCase,\n\tnoCase,\n\tpascalCase,\n\tsentenceCase,\n\tsnakeCase,\n\ttitleCase,\n\trandom,\n\tsentence,\n\tcondenseWhitespace,\n\twordWrap,\n\tseconds: seconds_default,\n\tmilliseconds: milliseconds_default,\n\tbytes: bytes_default,\n\tordinal,\n\thtmlEscape,\n\tjustify,\n\tuuid,\n\ttoUnixSlash\n};\nexport { string_default as t };\n","var o = Object.defineProperty;\nvar a = (t, s, r) => s in t ? o(t, s, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[s] = r;\nvar n = (t, s, r) => a(t, typeof s != \"symbol\" ? s + \"\" : s, r);\nconst u = \"1.20250430.0\";\nclass l {\n /**\n * Creates a new TypedEventEmitter instance.\n */\n constructor() {\n /**\n * The internal event listener map for the emitter.\n */\n n(this, \"e\");\n this.e = {};\n }\n /**\n * Subscribe to an event with a typed listener.\n * @param event - The event name.\n * @param listener - The listener function.\n * @param ctx - The `this` context to apply to the listener when it is called\n * @returns the current instance for chaining\n */\n on(s, r, i) {\n return Array.isArray(this.e[s]) || (this.e[s] = []), this.e[s].push({\n fn: r,\n ctx: i || null\n }), this;\n }\n /**\n * Subscribe to an event once with a typed listener.\n * @param event - The event name.\n * @param listener - The listener function.\n * @param ctx - The `this` context to apply to the listener when it is called\n * @returns the current instance for chaining\n */\n once(s, r, i) {\n const f = this;\n function h() {\n r.apply(i || null, arguments), f.off(s, h);\n }\n return h._ = r, this.on(s, h, i);\n }\n /**\n * Emit an event.\n * @param event - The event name.\n * @param args - The arguments to pass to the listeners.\n * @returns the current instance for chaining\n */\n emit(s, ...r) {\n const i = this.e[s];\n return Array.isArray(i) && i.forEach((f) => {\n f.fn.apply(f.ctx || null, r);\n }), this;\n }\n /**\n * Unsubscribe from an event.\n * @param event - The event name.\n * @param listener - Optional. The listener function to remove.\n * @returns the current instance for chaining\n *\n * @remarks When no listener is provided, all listeners for the event will be removed, otherwise\n * only the specified listener will be removed.\n */\n off(s, r) {\n return Array.isArray(this.e[s]) && (r ? this.e[s] = this.e[s].filter(\n // @ts-ignore\n (i) => i.fn !== r && i.fn._ !== r\n ) : this.e[s] = []), this;\n }\n}\nexport {\n l as TypedEventEmitter,\n u as version\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["module","this","slug","pluralize","require","interpolate","index","plural","camelCase","pascalCase","snakeCase","capitalCase","n","exports","randomUUID","randomBytes","Buffer","changeCase.camelCase","changeCase.snakeCase","changeCase.trainCase","changeCase.kebabCase","changeCase.pascalCase","changeCase.capitalCase","changeCase.dotNotation"],"mappings":";;;;;;;;;;;AACC,KAAC,SAAU,MAAM,MAAM,SAAS;AACE;AAC/B,QAAAA,kBAAiB,QAAO;AACxB,QAAAA,QAAO,QAAQ,SAAS,IAAI,QAAO;AAAA,MACvC;AAAA,IAQA,GAAE,WAAWC,SAAM,WAAY;AAC7B,UAAI,UAAU,KAAK,MAAM,o1KAAm2K;AAC53K,UAAI,UAAU,KAAK,MAAM,smCAAsmC;AAE/nC,eAAS,QAAS,QAAQ,SAAS;AACjC,YAAI,OAAO,WAAW,UAAU;AAC9B,gBAAM,IAAI,MAAM,mCAAmC;AAAA,QACzD;AAEI,kBAAW,OAAO,YAAY,WAC1B,EAAC,aAAa,QAAO,IACrB,WAAW,CAAA;AAEf,YAAI,SAAS,QAAQ,QAAQ,MAAM,KAAK,CAAA;AAExC,YAAI,cAAc,QAAQ,gBAAgB,SAAY,MAAM,QAAQ;AAEpE,YAAI,OAAO,QAAQ,SAAS,SAAY,OAAO,QAAQ;AAEvD,YAAIC,QAAO,OAAO,UAAS,EAAG,MAAM,EAAE,EAEnC,OAAO,SAAU,QAAQ,IAAI;AAC5B,cAAI,aAAa,OAAO,EAAE;AAC1B,cAAI,eAAe,OAAW,cAAa,QAAQ,EAAE;AACrD,cAAI,eAAe,OAAW,cAAa;AAC3C,cAAI,eAAe,YAAa,cAAa;AAC7C,iBAAO,SAAS,WAEb,QAAQ,QAAQ,UAAU,4BAA4B,EAAE;AAAA,QACnE,GAAS,EAAE;AAEP,YAAI,QAAQ,QAAQ;AAClB,UAAAA,QAAOA,MAAK,QAAQ,mBAAmB,EAAE;AAAA,QAC/C;AAEI,YAAI,MAAM;AACR,UAAAA,QAAOA,MAAK,KAAI;AAAA,QACtB;AAII,QAAAA,QAAOA,MAAK,QAAQ,QAAQ,WAAW;AAEvC,YAAI,QAAQ,OAAO;AACjB,UAAAA,QAAOA,MAAK,YAAW;AAAA,QAC7B;AAEI,eAAOA;AAAA,MACX;AAEE,cAAQ,SAAS,SAAU,WAAW;AACpC,eAAO,OAAO,SAAS,SAAS;AAAA,MACpC;AAEE,aAAO;AAAA,IACT,CAAC;AAAA;;;;;;;;;;;;;;;AClED,KAAC,SAAU,MAAMC,YAAW;AAE1B,UAAI,OAAOC,oBAAY,cAAc,QAA+B,MAA4B;AAE9F,QAAAJ,QAAA,UAAiBG,WAAS;AAAA,MAC9B,OAKS;AAEL,aAAK,YAAYA,WAAS;AAAA,MAC9B;AAAA,IACA,GAAGF,aAAM,WAAY;AAGnB,UAAI,cAAc,CAAA;AAClB,UAAI,gBAAgB,CAAA;AACpB,UAAI,eAAe,CAAA;AACnB,UAAI,mBAAmB,CAAA;AACvB,UAAI,mBAAmB,CAAA;AAQvB,eAAS,aAAc,MAAM;AAC3B,YAAI,OAAO,SAAS,UAAU;AAC5B,iBAAO,IAAI,OAAO,MAAM,OAAO,KAAK,GAAG;AAAA,QAC7C;AAEI,eAAO;AAAA,MACX;AAUE,eAAS,YAAa,MAAM,OAAO;AAEjC,YAAI,SAAS,MAAO,QAAO;AAG3B,YAAI,SAAS,KAAK,YAAW,EAAI,QAAO,MAAM,YAAW;AAGzD,YAAI,SAAS,KAAK,YAAW,EAAI,QAAO,MAAM,YAAW;AAGzD,YAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,eAAe;AACrC,iBAAO,MAAM,OAAO,CAAC,EAAE,gBAAgB,MAAM,OAAO,CAAC,EAAE,YAAW;AAAA,QACxE;AAGI,eAAO,MAAM,YAAW;AAAA,MAC5B;AASE,eAASI,aAAa,KAAK,MAAM;AAC/B,eAAO,IAAI,QAAQ,gBAAgB,SAAU,OAAOC,QAAO;AACzD,iBAAO,KAAKA,MAAK,KAAK;AAAA,QAC5B,CAAK;AAAA,MACL;AASE,eAAS,QAAS,MAAM,MAAM;AAC5B,eAAO,KAAK,QAAQ,KAAK,CAAC,GAAG,SAAU,OAAOA,QAAO;AACnD,cAAI,SAASD,aAAY,KAAK,CAAC,GAAG,SAAS;AAE3C,cAAI,UAAU,IAAI;AAChB,mBAAO,YAAY,KAAKC,SAAQ,CAAC,GAAG,MAAM;AAAA,UAClD;AAEM,iBAAO,YAAY,OAAO,MAAM;AAAA,QACtC,CAAK;AAAA,MACL;AAUE,eAAS,aAAc,OAAO,MAAM,OAAO;AAEzC,YAAI,CAAC,MAAM,UAAU,aAAa,eAAe,KAAK,GAAG;AACvD,iBAAO;AAAA,QACb;AAEI,YAAI,MAAM,MAAM;AAGhB,eAAO,OAAO;AACZ,cAAI,OAAO,MAAM,GAAG;AAEpB,cAAI,KAAK,CAAC,EAAE,KAAK,IAAI,EAAG,QAAO,QAAQ,MAAM,IAAI;AAAA,QACvD;AAEI,eAAO;AAAA,MACX;AAUE,eAAS,YAAa,YAAY,SAAS,OAAO;AAChD,eAAO,SAAU,MAAM;AAErB,cAAI,QAAQ,KAAK,YAAW;AAG5B,cAAI,QAAQ,eAAe,KAAK,GAAG;AACjC,mBAAO,YAAY,MAAM,KAAK;AAAA,UACtC;AAGM,cAAI,WAAW,eAAe,KAAK,GAAG;AACpC,mBAAO,YAAY,MAAM,WAAW,KAAK,CAAC;AAAA,UAClD;AAGM,iBAAO,aAAa,OAAO,MAAM,KAAK;AAAA,QAC5C;AAAA,MACA;AAKE,eAAS,UAAW,YAAY,SAAS,OAAO,MAAM;AACpD,eAAO,SAAU,MAAM;AACrB,cAAI,QAAQ,KAAK,YAAW;AAE5B,cAAI,QAAQ,eAAe,KAAK,EAAG,QAAO;AAC1C,cAAI,WAAW,eAAe,KAAK,EAAG,QAAO;AAE7C,iBAAO,aAAa,OAAO,OAAO,KAAK,MAAM;AAAA,QACnD;AAAA,MACA;AAUE,eAASH,WAAW,MAAM,OAAO,WAAW;AAC1C,YAAI,aAAa,UAAU,IACvBA,WAAU,SAAS,IAAI,IAAIA,WAAU,OAAO,IAAI;AAEpD,gBAAQ,YAAY,QAAQ,MAAM,MAAM;AAAA,MAC5C;AAOE,MAAAA,WAAU,SAAS;AAAA,QACjB;AAAA,QAAkB;AAAA,QAAkB;AAAA;AAQtC,MAAAA,WAAU,WAAW;AAAA,QACnB;AAAA,QAAkB;AAAA,QAAkB;AAAA;AAQtC,MAAAA,WAAU,WAAW;AAAA,QACnB;AAAA,QAAkB;AAAA,QAAkB;AAAA;AAQtC,MAAAA,WAAU,aAAa;AAAA,QACrB;AAAA,QAAkB;AAAA,QAAkB;AAAA;AAStC,MAAAA,WAAU,gBAAgB,SAAU,MAAM,aAAa;AACrD,oBAAY,KAAK,CAAC,aAAa,IAAI,GAAG,WAAW,CAAC;AAAA,MACtD;AAQE,MAAAA,WAAU,kBAAkB,SAAU,MAAM,aAAa;AACvD,sBAAc,KAAK,CAAC,aAAa,IAAI,GAAG,WAAW,CAAC;AAAA,MACxD;AAOE,MAAAA,WAAU,qBAAqB,SAAU,MAAM;AAC7C,YAAI,OAAO,SAAS,UAAU;AAC5B,uBAAa,KAAK,YAAW,CAAE,IAAI;AACnC;AAAA,QACN;AAGI,QAAAA,WAAU,cAAc,MAAM,IAAI;AAClC,QAAAA,WAAU,gBAAgB,MAAM,IAAI;AAAA,MACxC;AAQE,MAAAA,WAAU,mBAAmB,SAAU,QAAQI,SAAQ;AACrD,QAAAA,UAASA,QAAO,YAAW;AAC3B,iBAAS,OAAO,YAAW;AAE3B,yBAAiB,MAAM,IAAIA;AAC3B,yBAAiBA,OAAM,IAAI;AAAA,MAC/B;AAKE;AAAA;AAAA,QAEE,CAAC,KAAK,IAAI;AAAA,QACV,CAAC,MAAM,IAAI;AAAA,QACX,CAAC,MAAM,MAAM;AAAA,QACb,CAAC,OAAO,MAAM;AAAA,QACd,CAAC,QAAQ,MAAM;AAAA,QACf,CAAC,UAAU,WAAW;AAAA,QACtB,CAAC,YAAY,YAAY;AAAA,QACzB,CAAC,UAAU,YAAY;AAAA,QACvB,CAAC,WAAW,YAAY;AAAA,QACxB,CAAC,WAAW,YAAY;AAAA,QACxB,CAAC,YAAY,YAAY;AAAA,QACzB,CAAC,MAAM,KAAK;AAAA,QACZ,CAAC,OAAO,MAAM;AAAA,QACd,CAAC,OAAO,MAAM;AAAA,QACd,CAAC,QAAQ,OAAO;AAAA,QAChB,CAAC,QAAQ,OAAO;AAAA;AAAA,QAEhB,CAAC,QAAQ,QAAQ;AAAA,QACjB,CAAC,SAAS,SAAS;AAAA,QACnB,CAAC,WAAW,WAAW;AAAA,QACvB,CAAC,WAAW,WAAW;AAAA,QACvB,CAAC,WAAW,WAAW;AAAA;AAAA,QAEvB,CAAC,SAAS,QAAQ;AAAA,QAClB,CAAC,UAAU,SAAS;AAAA;AAAA,QAEpB,CAAC,UAAU,UAAU;AAAA,QACrB,CAAC,SAAS,SAAS;AAAA,QACnB,CAAC,SAAS,SAAS;AAAA,QACnB,CAAC,SAAS,SAAS;AAAA,QACnB,CAAC,UAAU,UAAU;AAAA,QACrB,CAAC,YAAY,YAAY;AAAA;AAAA,QAEzB,CAAC,MAAM,MAAM;AAAA,QACb,CAAC,OAAO,MAAM;AAAA,QACd,CAAC,OAAO,MAAM;AAAA,QACd,CAAC,OAAO,OAAO;AAAA,QACf,CAAC,QAAQ,MAAM;AAAA,QACf,CAAC,QAAQ,OAAO;AAAA,QAChB,CAAC,SAAS,OAAO;AAAA,QACjB,CAAC,SAAS,OAAO;AAAA,QACjB,CAAC,QAAQ,SAAS;AAAA,QAClB,CAAC,SAAS,QAAQ;AAAA,QAClB,CAAC,SAAS,QAAQ;AAAA,QAClB,CAAC,SAAS,QAAQ;AAAA,QAClB,CAAC,SAAS,QAAQ;AAAA,QAClB,CAAC,SAAS,QAAQ;AAAA,QAClB,CAAC,SAAS,SAAS;AAAA,QACnB,CAAC,UAAU,SAAS;AAAA,QACpB,CAAC,WAAW,UAAU;AAAA,QACtB,CAAC,YAAY,WAAW;AAAA,MAC5B,EAAI,QAAQ,SAAU,MAAM;AACxB,eAAOJ,WAAU,iBAAiB,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,MACtD,CAAG;AAKD;AAAA,QACE,CAAC,QAAQ,GAAG;AAAA,QACZ,CAAC,sBAAsB,IAAI;AAAA,QAC3B,CAAC,mBAAmB,IAAI;AAAA,QACxB,CAAC,iBAAiB,MAAM;AAAA,QACxB,CAAC,sCAAsC,MAAM;AAAA,QAC7C,CAAC,gBAAgB,KAAK;AAAA,QACtB,CAAC,0CAA0C,IAAI;AAAA,QAC/C,CAAC,6FAA6F,KAAK;AAAA,QACnG,CAAC,iCAAiC,MAAM;AAAA,QACxC,CAAC,4BAA4B,MAAM;AAAA,QACnC,CAAC,kBAAkB,OAAO;AAAA,QAC1B,CAAC,yHAAyH,KAAK;AAAA,QAC/H,CAAC,sGAAsG,KAAK;AAAA,QAC5G,CAAC,SAAS,KAAK;AAAA,QACf,CAAC,4CAA4C,SAAS;AAAA,QACtD,CAAC,qBAAqB,OAAO;AAAA,QAC7B,CAAC,wBAAwB,OAAO;AAAA,QAChC,CAAC,qBAAqB,MAAM;AAAA,QAC5B,CAAC,iDAAiD,QAAQ;AAAA,QAC1D,CAAC,iCAAiC,OAAO;AAAA,QACzC,CAAC,uBAAuB,QAAQ;AAAA,QAChC,CAAC,qBAAqB,OAAO;AAAA,QAC7B,CAAC,UAAU,IAAI;AAAA,QACf,CAAC,YAAY,KAAK;AAAA,QAClB,CAAC,QAAQ,KAAK;AAAA,MAClB,EAAI,QAAQ,SAAU,MAAM;AACxB,eAAOA,WAAU,cAAc,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,MACnD,CAAG;AAKD;AAAA,QACE,CAAC,OAAO,EAAE;AAAA,QACV,CAAC,UAAU,IAAI;AAAA,QACf,CAAC,iEAAiE,MAAM;AAAA,QACxE,CAAC,mCAAmC,KAAK;AAAA,QACzC,CAAC,SAAS,GAAG;AAAA,QACb,CAAC,wFAAwF,MAAM;AAAA,QAC/F,CAAC,qBAAqB,MAAM;AAAA,QAC5B,CAAC,wBAAwB,QAAQ;AAAA,QACjC,CAAC,uBAAuB,IAAI;AAAA,QAC5B,CAAC,4FAA4F,IAAI;AAAA,QACjG,CAAC,sEAAsE,OAAO;AAAA,QAC9E,CAAC,kCAAkC,IAAI;AAAA,QACvC,CAAC,qBAAqB,MAAM;AAAA,QAC5B,CAAC,6FAA6F,MAAM;AAAA,QACpG,CAAC,0GAA0G,MAAM;AAAA,QACjH,CAAC,+FAA+F,MAAM;AAAA,QACtG,CAAC,2BAA2B,KAAK;AAAA,QACjC,CAAC,gCAAgC,MAAM;AAAA,QACvC,CAAC,uBAAuB,MAAM;AAAA,QAC9B,CAAC,qBAAqB,QAAQ;AAAA,QAC9B,CAAC,gBAAgB,IAAI;AAAA,QACrB,CAAC,aAAa,IAAI;AAAA,QAClB,CAAC,SAAS,KAAK;AAAA,MACnB,EAAI,QAAQ,SAAU,MAAM;AACxB,eAAOA,WAAU,gBAAgB,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,MACrD,CAAG;AAKD;AAAA;AAAA,QAEE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA;AAAA;AAAA,QACA;AAAA;AAAA,QACA;AAAA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QACA;AAAA;AAAA,QACA;AAAA,MACJ,EAAI,QAAQA,WAAU,kBAAkB;AAEtC,aAAOA;AAAA,IACT,CAAC;AAAA;;;;;ACjfM,MAAM,aAAa;AACnB,MAAM,aAAa;AAInB,SAAS,mBAAmB,QAAQ,YAAY;AACnD,QAAM,SAAS,EAAE,OAAO,CAAA,GAAI,UAAU,CAAA,EAAE;AACxC,QAAM,UAAU,OAAO,SAAS,UAAU;AAC1C,MAAI,mBAAmB;AACvB,aAAW,SAAS,SAAS;AACzB,QAAI,OAAO,MAAM,UAAU;AACvB;AACJ,UAAM,OAAO,MAAM,CAAC;AACpB,WAAO,MAAM,KAAK,IAAI;AACtB,UAAM,SAAS,OAAO,MAAM,kBAAkB,MAAM,KAAK,EAAE,KAAI;AAC/D,WAAO,SAAS,KAAK,MAAM;AAC3B,uBAAmB,MAAM,QAAQ,KAAK;AAAA,EAC1C;AACA,QAAM,OAAO,OAAO,MAAM,gBAAgB,EAAE,KAAI;AAChD,MAAI,MAAM;AACN,WAAO,MAAM,KAAK,EAAE;AACpB,WAAO,SAAS,KAAK,IAAI;AAAA,EAC7B;AACA,SAAO;AACX;AAMO,SAAS,eAAe,QAAQ,SAAS;AAC5C,QAAM,EAAE,wBAAwB,OAAO,MAAM,SAAS,GAAE,IAAK,WAAW,CAAA;AACxE,QAAM,eAAe,OAAO,KAAI,EAAG,UAAU,KAAK;AAClD,QAAM,YAAY,aAAa,SAAS,GAAG;AAC3C,QAAM,QAAQ,YAAY,aAAa;AACvC,QAAM,kBAAkB,mBAAmB,cAAc,KAAK;AAC9D,SAAO,gBAAgB,MAClB,IAAI,CAAC,OAAO,MAAM;AACnB,QAAI,cAAc,gBAAgB,SAAS,CAAC,KAAK;AACjD,QAAI,OAAO;AACX,QAAI,0BAA0B,OAAO;AACjC,UAAI,MAAM;AACN,eAAO,KACF,UAAU,KAAK,EACf,QAAQ,IAAI,OAAO,iBAAiB,KAAK,KAAK,EAAE,CAAC,KAAK,GAAG,GAAG,EAAE;AAAA,MACvE;AACA,UAAI,CAAC,MAAM;AACP,eAAO,KAAK,UAAU,KAAK,EAAE,QAAQ,oBAAoB,EAAE;AAC3D,sBAAc;AAAA,MAClB;AAAA,IACJ;AACA,QAAI,QAAQ,aAAa;AACrB,oBAAc,YAAY,QAAQ,IAAI,OAAO,KAAK,KAAK,KAAK,EAAE,CAAC,KAAK,GAAG,GAAG,EAAE;AAAA,IAChF;AAEA,QAAI,MAAM,GAAG;AAET,aAAO,cAAc;AAAA,IACzB;AACA,QAAI,CAAC,eAAe,CAAC;AACjB,aAAO;AACX,QAAI,CAAC,WAAW;AAEZ,cAAQ,eAAe,UAAU;AAAA,IACrC;AAEA,QAAI,CAAC,eAAe,OAAO,MAAM,IAAI,GAAG;AAGpC,aAAO,MAAM;AAAA,IACjB;AACA,YAAQ,eAAe,UAAU;AAAA,EACrC,CAAC,EACI,OAAO,OAAO;AACvB;AAKO,SAAS,eAAe,QAAQ;AACnC,QAAM,QAAQ,OAAO,SAAS,UAAU,EAAE,KAAI,EAAG;AACjD,QAAM,mBAAmB,QAAQ,MAAM,QAAQ;AAC/C,SAAQ,OAAO,MAAM,GAAG,mBAAmB,CAAC,EAAE,YAAW,IACrD,OAAO,MAAM,mBAAmB,CAAC,EAAE,YAAW;AACtD;AC7EO,SAASK,YAAU,QAAQ,SAAS;AACvC,SAAO,eAAe,QAAQ,OAAO,EAAE,OAAO,CAAC,QAAQ,MAAMF,WAAU;AACnE,WAAOA,WAAU,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM,UAAU,IACjD,SAAS,KAAK,YAAW,IACzB,SAAS,eAAe,IAAI;AAAA,EACtC,GAAG,EAAE;AACT;AAYO,SAASG,aAAW,QAAQ,SAAS;AACxC,SAAO,eAAe,QAAQ,OAAO,EAAE,OAAO,CAAC,QAAQ,SAAS;AAC5D,WAAO,SAAS,eAAe,IAAI;AAAA,EACvC,GAAG,EAAE;AACT;AAwBO,SAAS,UAAU,QAAQ,SAAS;AACvC,SAAO,eAAe,QAAQ,EAAE,GAAG,SAAS,QAAQ,IAAG,CAAE,EACpD,KAAK,EAAE,EACP,YAAW;AACpB;AAYO,SAASC,YAAU,QAAQ,SAAS;AACvC,SAAO,eAAe,QAAQ,EAAE,GAAG,SAAS,QAAQ,IAAG,CAAE,EACpD,KAAK,EAAE,EACP,YAAW;AACpB;AA4BO,SAAS,UAAU,QAAQ,SAAS;AACvC,SAAO,eAAe,QAAQ,EAAE,GAAG,SAAS,QAAQ,IAAG,CAAE,EACpD,IAAI,CAAC,SAAS,eAAe,IAAI,CAAC,EAClC,KAAK,EAAE;AAChB;AA4CO,SAAS,YAAY,QAAQ,SAAS;AACzC,SAAO,eAAe,QAAQ,EAAE,GAAG,SAAS,QAAQ,IAAG,CAAE,EAAE,KAAK,EAAE;AACtE;AA6CO,SAASC,cAAY,QAAQ,UAAU,EAAE,uBAAuB,KAAI,GAAI;AAC3E,SAAO,eAAe,QAAQ,EAAE,GAAG,SAAS,QAAQ,IAAG,CAAE,EAAE,OAAO,CAAC,QAAQ,SAAS;AAChF,WAAO,SAAS,eAAe,IAAI;AAAA,EACvC,GAAG,EAAE;AACT;ACxMA,IAAI,WAAW,OAAO;AACtB,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO;AAC1B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,gBAAgB,CAAC,IAAI,QAAQ,OAAO,OAAO,IAAI,MAAM,EAAE,SAAS,CAAA,EAAE,GAAI,SAAS,GAAG,GAAG,IAAI;AAC7F,IAAI,cAAc,CAAC,IAAI,MAAM,QAAQ,SAAS;AAC7C,MAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,WAAY,UAAS,OAAO,kBAAkB,IAAI,GAAG,IAAI,GAAGC,KAAI,KAAK,QAAQ,KAAK,IAAIA,IAAG,KAAK;AACrJ,UAAM,KAAK,CAAC;AACZ,QAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,OAAQ,WAAU,IAAI,KAAK;AAAA,MACrE,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,MAAM,GAAG;AAAA,MACpC,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;AAAA,IAC7D,CAAG;AAAA,EACF;AACA,SAAO;AACR;AACA,IAAI,UAAU,CAAC,KAAK,YAAY,YAAY,SAAS,OAAO,OAAO,SAAS,aAAa,GAAG,CAAC,IAAI,CAAA,GAAI,YAAoD,UAAU,QAAQ,WAAW;AAAA,EACrL,OAAO;AAAA,EACP,YAAY;AACb,CAAC,GAAY,GAAG;AAChB,IAAI,eAA+B,yBAAyB,+BAAe,CAACC,WAASb,YAAW;AAC/F,EAAAA,QAAO,UAAU;AACjB,EAAAA,QAAO,QAAQ,SAAS;AACxB,EAAAA,QAAO,QAAQ,QAAQ;AACvB,MAAI,wBAAwB;AAC5B,MAAI,uBAAuB;AAC3B,MAAI,MAAM;AAAA,IACT,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI,KAAK;AAAA,IACT,IAAI,KAAK;AAAA,IACT,IAAI,KAAK,IAAI,MAAM,CAAC;AAAA,IACpB,IAAI,KAAK,IAAI,MAAM,CAAC;AAAA,EACtB;AACC,MAAI,cAAc;AAClB,WAAS,QAAQ,OAAO,SAAS;AAChC,QAAI,OAAO,UAAU,SAAU,QAAO,QAAQ,KAAK;AACnD,QAAI,OAAO,UAAU,SAAU,QAAO,SAAS,OAAO,OAAO;AAC7D,WAAO;AAAA,EACR;AACA,WAAS,SAAS,OAAO,SAAS;AACjC,QAAI,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AACpC,QAAI,MAAM,KAAK,IAAI,KAAK;AACxB,QAAI,qBAAqB,WAAW,QAAQ,sBAAsB;AAClE,QAAI,gBAAgB,WAAW,QAAQ,iBAAiB;AACxD,QAAI,gBAAgB,WAAW,QAAQ,kBAAkB,SAAS,QAAQ,gBAAgB;AAC1F,QAAI,gBAAgB,QAAQ,WAAW,QAAQ,aAAa;AAC5D,QAAI,OAAO,WAAW,QAAQ,QAAQ;AACtC,QAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAW,CAAE,EAAG,KAAI,OAAO,IAAI,GAAI,QAAO;AAAA,aACxD,OAAO,IAAI,GAAI,QAAO;AAAA,aACtB,OAAO,IAAI,GAAI,QAAO;AAAA,aACtB,OAAO,IAAI,GAAI,QAAO;AAAA,aACtB,OAAO,IAAI,GAAI,QAAO;AAAA,QAC1B,QAAO;AACZ,QAAI,OAAO,QAAQ,IAAI,KAAK,YAAW,CAAE,GAAG,QAAQ,aAAa;AACjE,QAAI,CAAC,cAAe,OAAM,IAAI,QAAQ,sBAAsB,IAAI;AAChE,QAAI,mBAAoB,OAAM,IAAI,MAAM,GAAG,EAAE,IAAI,SAAS,GAAG,GAAG;AAC/D,aAAO,MAAM,IAAI,EAAE,QAAQ,uBAAuB,kBAAkB,IAAI;AAAA,IACzE,CAAC,EAAE,KAAK,GAAG;AACX,WAAO,MAAM,gBAAgB;AAAA,EAC9B;AACA,WAAS,QAAQ,KAAK;AACrB,QAAI,OAAO,QAAQ,YAAY,CAAC,MAAM,GAAG,EAAG,QAAO;AACnD,QAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,QAAI,UAAU,YAAY,KAAK,GAAG;AAClC,QAAI;AACJ,QAAI,OAAO;AACX,QAAI,CAAC,SAAS;AACb,mBAAa,SAAS,KAAK,EAAE;AAC7B,aAAO;AAAA,IACR,OAAO;AACN,mBAAa,WAAW,QAAQ,CAAC,CAAC;AAClC,aAAO,QAAQ,CAAC,EAAE,YAAW;AAAA,IAC9B;AACA,QAAI,MAAM,UAAU,EAAG,QAAO;AAC9B,WAAO,KAAK,MAAM,IAAI,IAAI,IAAI,UAAU;AAAA,EACzC;AACD,EAAC,IAAQ;AACT,IAAI,gBAAgB;AAAA,EACnB,OAAO,cAAc,SAAS;AAC7B,WAAO,aAAa,QAAQ,OAAO,cAAc,OAAO;AAAA,EACzD;AAAA,EACA,MAAM,MAAM;AACX,QAAI,OAAO,SAAS,SAAU,QAAO;AACrC,WAAO,aAAa,QAAQ,MAAM,IAAI;AAAA,EACvC;AACD;AACA,IAAI,gBAAgBc,YAAAA;AACpB,SAAS,KAAK,SAAS;AACtB,SAAO,cAAc,OAAO;AAC7B;AACA,KAAK,MAAM,SAAS,QAAQ,WAAW;AACtC,kBAAgB;AACjB;AACA,KAAK,UAAU,SAAS,cAAc;AACrC,kBAAgBA,YAAAA;AACjB;AACA,IAAI,MAAM,0KAA0K,MAAM,KAAK,MAAM,MAAM,IAAI,OAAO,MAAM,IAAI,MAAM,OAAO,IAAI,OAAO,MAAM;AAC9P,SAAS,MAAM,KAAK;AACnB,MAAI,KAAK,MAAM,IAAI,YAAW,EAAG,MAAM,GAAG;AAC1C,MAAI,OAAO,SAAS,MAAM,WAAW,IAAI,CAAC,CAAC,IAAI;AAC9C,QAAI,IAAI,CAAC,KAAK,KAAM,QAAO,MAAM;AACjC,QAAI,IAAI,CAAC,KAAK,KAAM,QAAO,MAAM;AACjC,QAAI,IAAI,CAAC,KAAK,KAAM,QAAO,MAAM;AACjC,QAAI,IAAI,CAAC,KAAK,KAAM,QAAO,MAAM;AACjC,QAAI,IAAI,CAAC,KAAK,KAAM,QAAO,MAAM,MAAM;AACvC,QAAI,IAAI,CAAC,KAAK,KAAM,QAAO,MAAM;AACjC,WAAO;AAAA,EACR;AACD;AACA,SAAS,IAAI,KAAK,KAAK,KAAK,MAAM;AACjC,MAAI,OAAO,MAAM,OAAO,MAAM,MAAM,CAAC,EAAE,MAAM;AAC7C,SAAO,MAAM,OAAO,OAAO,MAAM,OAAO,OAAO,IAAI,MAAM,MAAM,IAAI,CAAC;AACrE;AACA,SAAS,OAAO,KAAK,MAAM;AAC1B,MAAI,MAAM,MAAM,IAAI,MAAM,IAAI,MAAM,MAAM,IAAI,CAAC,MAAM;AACrD,MAAI,MAAM,IAAK,QAAO,OAAO,OAAO,QAAQ;AAC5C,MAAI,MAAM,IAAK,QAAO,IAAI,MAAM,KAAK,KAAK,UAAU,IAAI;AACxD,MAAI,MAAM,KAAM,QAAO,IAAI,MAAM,KAAK,KAAK,UAAU,IAAI;AACzD,MAAI,MAAM,IAAK,QAAO,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI;AACvD,MAAI,MAAM,KAAM,QAAO,IAAI,MAAM,KAAK,KAAK,OAAO,IAAI;AACtD,SAAO,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI;AACzC;AACA,IAAI,kBAAkB;AAAA,EACrB,OAAO,SAAS,MAAM;AACrB,WAAO,OAAO,UAAU,KAAK,IAAI;AAAA,EAClC;AAAA,EACA,MAAM,UAAU;AACf,QAAI,OAAO,aAAa,SAAU,QAAO;AACzC,UAAM,eAAe,MAAM,QAAQ;AACnC,QAAI,iBAAiB,OAAQ,OAAM,IAAI,MAAM,gCAAgC,QAAQ,GAAG;AACxF,WAAO,KAAK,MAAM,eAAe,GAAG;AAAA,EACrC;AACD;AACA,MAAM,OAAO;AACb,MAAM,mBAAmB,CAAC,SAAS;AAClC,QAAM,QAAQ,OAAO,KAAK;AAC1B,QAAM,SAASC,YAAAA,YAAY,KAAK,KAAK,OAAO,CAAC,CAAC;AAC9C,SAAOC,MAAAA,OAAO,KAAK,MAAM,EAAE,SAAS,QAAQ,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG,IAAI;AACvH;AACA,IAAI,kBAAkB;AACtB,SAAS,OAAO,MAAM;AACrB,SAAO,gBAAgB,IAAI;AAC5B;AACA,OAAO,MAAM,SAAS,UAAU,WAAW;AAC1C,oBAAkB;AACnB;AACA,OAAO,UAAU,SAAS,gBAAgB;AACzC,oBAAkB;AACnB;AACA,IAAI,qBAAqC,+BAAe,CAACH,WAASb,YAAW;AAC5E,GAAC,SAAS,UAAU;AAEnB,QAAI,kBAAkB;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACH;AACE,QAAI,eAAe,SAAS,MAAM,SAAS;AAC1C,UAAI,UAAU,WAAW,IAAI,QAAQ,QAAQ,IAAI,KAAI,GAAI,gBAAgB,IAAI,eAAe,GAAG,cAAc,OAAO,aAAa,IAAI,WAAW,IAAI,WAAW;AAC/J,UAAI,cAAc,GAAG,cAAc,GAAG,mBAAmB;AACzD,UAAI,UAAU,GAAG,YAAY,GAAG,iBAAiB;AACjD,cAAQ,aAAa,QAAQ,eAAe,UAAU,OAAO,QAAQ,eAAe,YAAY,CAAC,QAAQ,WAAW,MAAM,wCAAwC,IAAI,UAAU,QAAQ,WAAW,YAAW;AAC9M,cAAQ,iBAAiB,QAAQ,mBAAmB,UAAU,OAAO,QAAQ,mBAAmB,WAAW,KAAK,QAAQ;AACxH,cAAQ,YAAY,QAAQ,cAAc,UAAU,OAAO,QAAQ,cAAc,YAAY,QAAQ,QAAQ;AAC7G,cAAQ,SAAS,QAAQ,WAAW,UAAU,OAAO,QAAQ,WAAW,YAAY,OAAO,QAAQ;AACnG,cAAQ,SAAS,QAAQ,WAAW,UAAU,OAAO,QAAQ,WAAW,WAAW,QAAQ,QAAQ;AACnG,UAAI,SAAS,MAAM,KAAK,UAAU,QAAQ,kBAAkB,QAAQ,cAAc,MAAO,QAAO;AAChG,UAAI,QAAQ,UAAW,QAAO,OAAO,IAAI,EAAE,QAAQ,gBAAgB,GAAG;AACtE,UAAI,QAAQ,aAAa,CAAC,QAAQ,WAAW,MAAM,iBAAiB,EAAG,QAAO,OAAO,IAAI,EAAE,QAAQ,kBAAkB,EAAE,EAAE,QAAQ,gBAAgB,EAAE;AACnJ,aAAO,OAAO,IAAI,EAAE,QAAQ,sBAAsB,SAAS;AAC3D,UAAI,QAAQ,aAAa,OAAO,IAAI,EAAE,MAAM,YAAY,EAAG,QAAO,OAAO,IAAI,EAAE,QAAQ,0BAA0B,WAAW;AAC5H,eAAS,UAAU,GAAG,UAAU,KAAK,QAAQ,WAAW;AACvD,YAAI,cAAc,KAAK,OAAO;AAC9B,gBAAQ,aAAW;AAAA,UAClB,KAAK;AACJ,gBAAI,iBAAiB,SAAS;AAC7B,6BAAe;AACf,2BAAa;AAAA,YACd;AACA,gBAAI,CAAC,QAAQ,UAAW,kBAAiB;AACzC;AAAA,UACD,KAAK;AACJ,gBAAI,iBAAiB,aAAa,iBAAiB,gBAAgB;AAClE,6BAAe;AACf,2BAAa,WAAW,YAAW;AACnC,kBAAI,eAAe,MAAM;AACxB;AACA,oBAAI,QAAQ,UAAW,kBAAiB;AAAA,cACzC;AACA,kBAAI,gBAAgB,QAAQ,UAAU,MAAM,MAAM,gBAAgB,QAAQ,aAAa,GAAG,MAAM,GAAI,KAAI,WAAW,QAAQ,GAAG,KAAK,EAAG,UAAS,IAAG;AAAA,kBAC7I,UAAS,KAAK,UAAU;AAAA,YAC9B;AACA,gBAAI,CAAC,QAAQ,UAAW,kBAAiB;AACzC;AAAA,UACD,KAAK;AACJ,gBAAI,iBAAiB,UAAW,gBAAe;AAC/C,gBAAI,iBAAiB,SAAS;AAC7B;AACA;AAAA,YACD;AACA,gBAAI,iBAAiB,WAAW,CAAC,QAAQ,UAAW,kBAAiB;AACrE;AAAA,UACD;AACC,gBAAI,iBAAiB,QAAS;AAC9B,gBAAI,iBAAiB,UAAW,eAAc;AAC9C,gBAAI,iBAAiB,WAAW,CAAC,QAAQ,UAAW,kBAAiB;AACrE;AAAA,QACN;AACI,mBAAW,KAAK,UAAU,CAAC,KAAK;AAChC,sBAAc,QAAQ,SAAS,OAAO,CAAC,YAAY,MAAM,eAAe,KAAK,CAAC,SAAS,MAAM,eAAe;AAC5G,YAAI,QAAQ,WAAW,MAAM,WAAW,KAAK,QAAQ,kBAAkB,aAAa;AACnF,0BAAgB,cAAc,QAAQ,QAAQ,EAAE;AAChD;AAAA,QACD;AACA,YAAI,QAAQ,WAAW,MAAM,gBAAgB,KAAK,QAAQ,kBAAkB,eAAe,YAAa;AACxG,YAAI,QAAQ,WAAW,MAAM,gBAAgB,KAAK,QAAQ,mBAAmB,iBAAkB;AAAA,MAChG;AACA,UAAI,CAAC,QAAQ,aAAa,SAAS,SAAS,EAAG,QAAO,SAAS,SAAS,GAAG;AAC1E,YAAI,MAAM,SAAS,IAAG;AACtB,YAAI,QAAQ,MAAO,kBAAiB,OAAO,MAAM;AAAA,MAClD;AACA,UAAI,UAAU,KAAK,SAAS,EAAG,KAAI,cAAc,MAAM,UAAU,EAAG,iBAAgB,cAAc,QAAQ,cAAc,QAAQ,SAAS,IAAI;AAAA,UACxI,iBAAgB,gBAAgB,QAAQ;AAC7C,aAAO,cAAc,KAAI;AAAA,IAC1B;AACA,QAAI,OAAOA,YAAW,eAAeA,QAAO,QAAS,QAAOA,QAAO,UAAU;AAC7E,aAAS,aAAa;AAAA,EACvB,GAAGa,SAAO;AACX,EAAC;AACD,IAAI,sBAAsC,wBAAQ,oBAAuB;AACzE,SAAS,QAAQ,YAAY,iBAAiB,SAAS;AACtD,UAAO,GAAI,oBAAoB,SAAS,YAAY;AAAA,IACnD,gBAAgB;AAAA,IAChB,QAAQ,WAAW,QAAQ,kBAAkB,OAAO,QAAQ;AAAA,IAC5D,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,QAAQ,WAAW,QAAQ;AAAA,EAC7B,CAAE;AACF;AACA,SAAS,aAAa,OAAO,SAAS;AACrC,MAAI,QAAQ,YAAa,SAAQ,GAAG,QAAQ,YAAY,OAAO,QAAQ,WAAW,CAAC,GAAG,KAAK;AAC3F,MAAI,QAAQ,aAAc,SAAQ,GAAG,KAAK,GAAG,QAAQ,YAAY,OAAO,QAAQ,YAAY,CAAC;AAC7F,SAAO;AACR;AACA,SAAS,QAAQ,SAAS,SAAS;AAClC,QAAM,oBAAoB;AAAA,IACzB,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAG;AAAA,EACL;AACC,SAAO,QAAQ,IAAI,CAAC,WAAW;AAC9B,UAAM,cAAc,QAAQ,YAAY,MAAM,KAAK,OAAO;AAC1D,QAAI,eAAe,kBAAkB,MAAO,QAAO;AACnD,QAAI,kBAAkB,UAAU,OAAQ,QAAO,aAAa,QAAQ;AAAA,MACnE,aAAa,kBAAkB;AAAA,MAC/B,cAAc,kBAAkB,QAAQ;AAAA,IAC3C,CAAG;AACD,WAAO,aAAa,QAAQ;AAAA,MAC3B,aAAa,kBAAkB;AAAA,MAC/B,aAAa,kBAAkB,QAAQ;AAAA,IAC1C,CAAG;AAAA,EACF,CAAC;AACF;AACA,SAAS,QAAQ,OAAO;AACvB,QAAM,mBAAmB,KAAK,IAAI,OAAO,UAAU,WAAW,OAAO,SAAS,KAAK,IAAI,KAAK;AAC5F,MAAI,CAAC,OAAO,SAAS,gBAAgB,KAAK,OAAO,MAAM,gBAAgB,EAAG,OAAM,IAAI,MAAM,+CAA+C;AACzI,QAAM,UAAU,mBAAmB;AACnC,MAAI,WAAW,MAAM,WAAW,GAAI,QAAO,GAAG,KAAK;AACnD,UAAQ,mBAAmB,IAAE;AAAA,IAC5B,KAAK;AAAG,aAAO,GAAG,KAAK;AAAA,IACvB,KAAK;AAAG,aAAO,GAAG,KAAK;AAAA,IACvB,KAAK;AAAG,aAAO,GAAG,KAAK;AAAA,IACvB;AAAS,aAAO,GAAG,KAAK;AAAA,EAC1B;AACA;AACA,IAAI,oBAAoC,wBAAQ,oBAAuB;AACvE,SAAS,SAAS,YAAY,iBAAiB,SAAS;AACvD,UAAO,GAAI,kBAAkB,SAAS,YAAY;AAAA,IACjD,gBAAgB;AAAA,IAChB,QAAQ,WAAW,QAAQ,kBAAkB,OAAO,QAAQ;AAAA,IAC5D,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,QAAQ,WAAW,QAAQ;AAAA,EAC7B,CAAE;AACF;AACA,SAAS,SAAS,QAAQ,SAAS;AAClC,MAAI,OAAO,WAAW,EAAG,QAAO;AAChC,MAAI,OAAO,WAAW,EAAG,QAAO,OAAO,CAAC;AACxC,MAAI,OAAO,WAAW,EAAG,QAAO,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,iBAAiB,OAAO,GAAG,OAAO,CAAC,CAAC;AAC5F,QAAM,aAAa,OAAO,OAAO;AAAA,IAChC,WAAW;AAAA,IACX,eAAe;AAAA,EACjB,GAAI,OAAO;AACV,SAAO,GAAG,OAAO,MAAM,GAAG,EAAE,EAAE,KAAK,WAAW,SAAS,CAAC,GAAG,WAAW,aAAa,GAAG,OAAO,OAAO,SAAS,CAAC,CAAC;AAChH;AACA,SAAS,SAAS,OAAO,SAAS;AACjC,QAAM,QAAQ,QAAQ;AACtB,QAAM,SAAS,QAAQ,UAAU;AACjC,QAAM,UAAU,GAAG,QAAQ,WAAW,IAAI,GAAG,MAAM;AACnD,MAAI,cAAc,SAAS,QAAQ;AACnC,iBAAe;AACf,QAAM,KAAK,IAAI,OAAO,aAAa,GAAG;AACtC,UAAQ,MAAM,MAAM,EAAE,KAAK,IAAI,IAAI,SAAS,MAAM;AACjD,QAAI,KAAK,MAAM,EAAE,MAAM,KAAM,QAAO,KAAK,MAAM,GAAG,KAAK,SAAS,CAAC;AACjE,WAAO,QAAQ,SAAS,QAAQ,OAAO,IAAI,IAAI;AAAA,EAChD,CAAC,EAAE,KAAK,OAAO;AAChB;AACA,IAAI,uBAAuB;AAAA,EAC1B,OAAO,cAAc,MAAM;AAC1B,WAAO,OAAO,cAAc,IAAI;AAAA,EACjC;AAAA,EACA,MAAM,UAAU;AACf,QAAI,OAAO,aAAa,SAAU,QAAO;AACzC,UAAM,eAAe,MAAM,QAAQ;AACnC,QAAI,iBAAiB,OAAQ,OAAM,IAAI,MAAM,gCAAgC,QAAQ,GAAG;AACxF,WAAO;AAAA,EACR;AACD;AACA,SAAS,WAAW,OAAO;AAC1B,SAAO,MAAM,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,QAAQ,EAAE,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM;AAC9H;AACA,SAAS,UAAU,MAAM,KAAK;AAC7B,QAAM,SAAS,IAAI,MAAM,GAAG;AAC5B,SAAO,OAAO,QAAQ;AACrB,QAAI,SAAS,QAAQ,OAAO,SAAS,SAAU;AAC/C,UAAM,QAAQ,OAAO,MAAK;AAC1B,WAAO,OAAO,OAAO,MAAM,KAAK,IAAI,KAAK,KAAK,IAAI;AAAA,EACnD;AACA,SAAO;AACR;AACA,SAAS,YAAY,OAAO,MAAM;AACjC,SAAO,MAAM,QAAQ,mBAAmB,CAAC,GAAG,YAAY,QAAQ;AAC/D,QAAI,WAAY,QAAO,KAAK,GAAG;AAC/B,WAAO,UAAU,MAAM,IAAI,KAAI,CAAE;AAAA,EAClC,CAAC;AACF;AACA,SAAS,YAAY,MAAM;AAC1B,MAAI,KAAK,WAAW,SAAS,EAAG,QAAO;AACvC,SAAO,KAAK,QAAQ,OAAO,GAAG;AAC/B;AACA,SAAS,UAAU,MAAM,OAAO,WAAW;AAC1C,SAAO,aAAa,MAAM,OAAO,SAAS;AAC3C;AACA,UAAU,gBAAgB,aAAa;AACvC,UAAU,kBAAkB,aAAa;AACzC,UAAU,mBAAmB,aAAa;AAC1C,UAAU,qBAAqB,aAAa;AAC5C,MAAM,SAAS,aAAa;AAC5B,MAAM,WAAW,aAAa;AAC9B,MAAM,WAAW,aAAa;AAC9B,MAAM,aAAa,aAAa;AAChC,MAAM,uBAAuB,CAAC,sBAAsB,sBAAsB;AAC1E,MAAM,uBAAuB;AAC7B,MAAM,cAAc;AACpB,MAAM,SAAS;AACf,MAAM,aAAa;AACnB,MAAM,iBAAiB;AACvB,MAAM,uBAAuB;AAC7B,SAAS,UAAU,OAAO;AACzB,MAAI,SAAS;AACb,MAAI;AACJ,UAAQ,SAAS,OAAO,KAAK,KAAK,OAAO,MAAM;AAC9C,UAAM,EAAE,GAAG,OAAO,OAAAP,OAAK,IAAK;AAC5B,QAAI,CAAC,eAAe,KAAK,KAAK,MAAM,CAAC,YAAY,KAAK,KAAK,KAAKA,WAAU,KAAKA,SAAQ,MAAM,WAAW,MAAM,YAAY,MAAM,OAAOA,SAAQ,MAAM,MAAM,MAAM,OAAO,WAAW,KAAK,MAAM,OAAOA,SAAQ,MAAM,SAAS,CAAC,CAAC,IAAI;AACjO,gBAAU,MAAM,QAAQ,sBAAsB,CAAC,SAAS,KAAK,aAAa;AAC1E;AAAA,IACD;AACA,cAAU;AAAA,EACX;AACA,SAAO;AACR;AACA,SAAS,UAAU,OAAO;AACzB,SAAOW,YAAqB,KAAK;AAClC;AACA,SAAS,UAAU,OAAO;AACzB,SAAOC,YAAqB,KAAK;AAClC;AACA,SAAS,SAAS,OAAO,SAAS;AACjC,MAAI,WAAW,QAAQ,WAAY,QAAOC,UAAqB,KAAK;AACpE,SAAOC,UAAqB,KAAK;AAClC;AACA,SAAS,WAAW,OAAO;AAC1B,SAAOC,aAAsB,KAAK;AACnC;AACA,SAAS,YAAY,OAAO;AAC3B,SAAOC,cAAuB,KAAK;AACpC;AACA,SAAS,aAAa,OAAO;AAC5B,SAAO,OAAO,OAAO,CAAC,OAAOhB,WAAU;AACtC,UAAM,SAAS,MAAM,YAAW;AAChC,QAAIA,WAAU,EAAG,QAAO,MAAM,OAAO,CAAC,EAAE,YAAW,IAAK,MAAM,UAAU,CAAC;AACzE,WAAO;AAAA,EACR,CAAC;AACF;AACA,SAAS,QAAQ,OAAO,SAAS;AAChC,QAAM,mBAAmBiB,YAAuB,KAAK;AACrD,MAAI,WAAW,QAAQ,UAAW,QAAO,iBAAiB,YAAW;AACrE,SAAO;AACR;AACA,SAAS,OAAO,OAAO,WAAW;AACjC,MAAI,SAAS,qBAAqB,OAAO,CAAC,OAAO,UAAU,MAAM,QAAQ,OAAO,QAAQ,GAAG,KAAK;AAChG,WAAS,OAAO,QAAQ,sBAAsB,IAAI;AAClD,MAAI,QAAQ;AACZ,MAAI,MAAM,OAAO;AACjB,SAAO,OAAO,OAAO,KAAK,MAAM,KAAM;AACtC,SAAO,OAAO,OAAO,MAAM,CAAC,MAAM,KAAM;AACxC,SAAO,OAAO,MAAM,OAAO,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,cAAc,CAAC,UAAU,MAAM,YAAW,EAAG,EAAE,KAAK,GAAG;AACxG;AACA,SAAS,mBAAmB,OAAO;AAClC,SAAO,MAAM,KAAI,EAAG,QAAQ,WAAW,GAAG;AAC3C;AACG,IAAC,iBAAiB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,cAAc;AAAA,EACd,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AC9cA,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,CAAC,GAAG,GAAG,MAAM,KAAK,IAAI,EAAE,GAAG,GAAG,EAAE,YAAY,MAAI,cAAc,MAAI,UAAU,MAAI,OAAO,EAAC,CAAE,IAAI,EAAE,CAAC,IAAI;AAC7G,IAAI,IAAI,CAAC,GAAG,GAAG,MAAM,EAAE,GAA0B,IAAI,IAAQ,CAAC;AAE9D,MAAM,EAAE;AAAA;AAAA;AAAA;AAAA,EAIN,cAAc;AAIZ,MAAE,MAAM,GAAG;AACX,SAAK,IAAI,CAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAG,GAAG,GAAG,GAAG;AACV,WAAO,MAAM,QAAQ,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,IAAI,CAAA,IAAK,KAAK,EAAE,CAAC,EAAE,KAAK;AAAA,MAClE,IAAI;AAAA,MACJ,KAAK,KAAK;AAAA,IAChB,CAAK,GAAG;AAAA,EACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,KAAK,GAAG,GAAG,GAAG;AACZ,UAAM,IAAI;AACV,aAAS,IAAI;AACX,QAAE,MAAM,KAAK,MAAM,SAAS,GAAG,EAAE,IAAI,GAAG,CAAC;AAAA,IAC3C;AACA,WAAO,EAAE,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,KAAK,MAAM,GAAG;AACZ,UAAM,IAAI,KAAK,EAAE,CAAC;AAClB,WAAO,MAAM,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM;AAC1C,QAAE,GAAG,MAAM,EAAE,OAAO,MAAM,CAAC;AAAA,IAC7B,CAAC,GAAG;AAAA,EACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,IAAI,GAAG,GAAG;AACR,WAAO,MAAM,QAAQ,KAAK,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE;AAAA;AAAA,MAE5D,CAAC,MAAM,EAAE,OAAO,KAAK,EAAE,GAAG,MAAM;AAAA,IACtC,IAAQ,KAAK,EAAE,CAAC,IAAI,CAAA,IAAK;AAAA,EACvB;AACF;;;;","x_google_ignoreList":[0,1,2,3,4,5]}