@vm0/cli 9.249.1 → 9.249.2

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 (141) hide show
  1. package/{agent-PMWDKCSZ.js → agent-TOFXTWYP.js} +11 -10
  2. package/{agent-PMWDKCSZ.js.map → agent-TOFXTWYP.js.map} +1 -1
  3. package/{banking-S5RH46G5.js → banking-U7I6EJUO.js} +8 -7
  4. package/{banking-S5RH46G5.js.map → banking-U7I6EJUO.js.map} +1 -1
  5. package/{chat-2ZTZUIWC.js → chat-77EDGFMS.js} +9 -8
  6. package/{chat-2ZTZUIWC.js.map → chat-77EDGFMS.js.map} +1 -1
  7. package/{chunk-DIRAZ3YX.js → chunk-3VVCUQPB.js} +3 -3
  8. package/{chunk-DIRAZ3YX.js.map → chunk-3VVCUQPB.js.map} +1 -1
  9. package/{chunk-PLOJYRFL.js → chunk-4HN7U3JF.js} +40 -564
  10. package/chunk-4HN7U3JF.js.map +1 -0
  11. package/{chunk-FF5L22OE.js → chunk-5CZNUTFF.js} +3 -3
  12. package/chunk-A2NKQGRI.js +491 -0
  13. package/chunk-A2NKQGRI.js.map +1 -0
  14. package/{chunk-J2I5GYLR.js → chunk-AFNSFKAH.js} +5 -5
  15. package/{chunk-L63QVTYZ.js → chunk-BQOOTJNB.js} +27 -672
  16. package/chunk-BQOOTJNB.js.map +1 -0
  17. package/{chunk-KLIW3XK7.js → chunk-GPF7NSX7.js} +2 -2
  18. package/{chunk-HUMR2SA3.js → chunk-HSGQT7LT.js} +3 -3
  19. package/{chunk-SAW74AR6.js → chunk-JCLLQRCI.js} +3 -3
  20. package/{chunk-B3W2RUBP.js → chunk-LD4ZVU4O.js} +2 -2
  21. package/chunk-N6TDQYGF.js +678 -0
  22. package/chunk-N6TDQYGF.js.map +1 -0
  23. package/{chunk-KQN5YZZP.js → chunk-ROB3OE37.js} +10 -113
  24. package/chunk-ROB3OE37.js.map +1 -0
  25. package/{chunk-LTDQISD7.js → chunk-SB7EZ2ZO.js} +2 -2
  26. package/{chunk-RTYT3CSZ.js → chunk-UG5XA6KU.js} +2 -2
  27. package/{chunk-LKDE4AUC.js → chunk-UNQJRTJQ.js} +3 -3
  28. package/chunk-W75R7EZF.js +17 -0
  29. package/chunk-W75R7EZF.js.map +1 -0
  30. package/chunk-WDDZJGWL.js +32 -0
  31. package/chunk-WDDZJGWL.js.map +1 -0
  32. package/{chunk-JFY6GK7Y.js → chunk-X2545RBX.js} +2 -2
  33. package/{chunk-ZE2VIESK.js → chunk-X4DBCBU4.js} +2 -2
  34. package/{computer-use-GRK4TZYN.js → computer-use-BCGPVGWS.js} +7 -6
  35. package/{computer-use-GRK4TZYN.js.map → computer-use-BCGPVGWS.js.map} +1 -1
  36. package/{connector-2SVH4F2N.js → connector-CHZSI2LW.js} +14 -13
  37. package/{connector-2SVH4F2N.js.map → connector-CHZSI2LW.js.map} +1 -1
  38. package/credit-RWFBPKOS.js +166 -0
  39. package/credit-RWFBPKOS.js.map +1 -0
  40. package/{developer-support-RYTLIFUN.js → developer-support-IVR3HIP7.js} +8 -7
  41. package/{developer-support-RYTLIFUN.js.map → developer-support-IVR3HIP7.js.map} +1 -1
  42. package/{doctor-CS5TFE6A.js → doctor-KGWTXW2Q.js} +39 -13
  43. package/doctor-KGWTXW2Q.js.map +1 -0
  44. package/{esm-PZKPCIYJ.js → esm-GOCEMHJO.js} +3 -3
  45. package/{feishu-HFQIJDBU.js → feishu-PLF4P5OG.js} +8 -7
  46. package/{feishu-HFQIJDBU.js.map → feishu-PLF4P5OG.js.map} +1 -1
  47. package/{finance-56HIRALT.js → finance-LVFG3WWP.js} +8 -7
  48. package/{finance-56HIRALT.js.map → finance-LVFG3WWP.js.map} +1 -1
  49. package/{generate-4FEC4YVM.js → generate-4FIBMMJO.js} +77 -22
  50. package/generate-4FIBMMJO.js.map +1 -0
  51. package/{getMachineId-bsd-L73QENVB.js → getMachineId-bsd-SB7C44VX.js} +4 -4
  52. package/{getMachineId-darwin-TCCWKQ2S.js → getMachineId-darwin-R4BWY3CQ.js} +4 -4
  53. package/{getMachineId-linux-TJYYUZVM.js → getMachineId-linux-BR4HVNPW.js} +3 -3
  54. package/{getMachineId-unsupported-DPRVLH4Y.js → getMachineId-unsupported-FPGM635L.js} +3 -3
  55. package/{getMachineId-win-7EE436CJ.js → getMachineId-win-RB4JMF33.js} +4 -4
  56. package/{github-AALJ7IEM.js → github-WHNAVVG3.js} +8 -7
  57. package/{github-AALJ7IEM.js.map → github-WHNAVVG3.js.map} +1 -1
  58. package/{goal-CFSXEKHU.js → goal-G4J2BQ5Z.js} +8 -7
  59. package/{goal-CFSXEKHU.js.map → goal-G4J2BQ5Z.js.map} +1 -1
  60. package/{host-6NKXFQCO.js → host-3W6U2ZUP.js} +8 -7
  61. package/{host-6NKXFQCO.js.map → host-3W6U2ZUP.js.map} +1 -1
  62. package/{intro-MIVVJG7M.js → intro-PMHOBGDL.js} +3 -3
  63. package/{logs-F4KPELTF.js → logs-P7JLTGXY.js} +10 -9
  64. package/{logs-F4KPELTF.js.map → logs-P7JLTGXY.js.map} +1 -1
  65. package/{mail-RZTLZU3I.js → mail-LIAOXDD4.js} +12 -11
  66. package/{mail-RZTLZU3I.js.map → mail-LIAOXDD4.js.map} +1 -1
  67. package/{maps-QRHGR33R.js → maps-C4NOXSE7.js} +8 -7
  68. package/{maps-QRHGR33R.js.map → maps-C4NOXSE7.js.map} +1 -1
  69. package/{model-6N5VPIS5.js → model-I2MNQ5KC.js} +9 -8
  70. package/{model-6N5VPIS5.js.map → model-I2MNQ5KC.js.map} +1 -1
  71. package/{model-provider-UZO32ZTC.js → model-provider-AOCCHEMP.js} +9 -8
  72. package/{model-provider-UZO32ZTC.js.map → model-provider-AOCCHEMP.js.map} +1 -1
  73. package/{org-26ZL2W2U.js → org-MVBG3WXZ.js} +9 -8
  74. package/{org-26ZL2W2U.js.map → org-MVBG3WXZ.js.map} +1 -1
  75. package/package.json +1 -1
  76. package/{phone-QTRZLYIG.js → phone-4OZQFYHU.js} +8 -7
  77. package/{phone-QTRZLYIG.js.map → phone-4OZQFYHU.js.map} +1 -1
  78. package/{preference-JCFTTUBN.js → preference-H2A3WBGQ.js} +9 -8
  79. package/{preference-JCFTTUBN.js.map → preference-H2A3WBGQ.js.map} +1 -1
  80. package/{resource-64R7T4FF.js → resource-CPCQ6V6M.js} +9 -8
  81. package/{resource-64R7T4FF.js.map → resource-CPCQ6V6M.js.map} +1 -1
  82. package/{scrape-LVGJ56IS.js → scrape-6RMFDYAT.js} +8 -7
  83. package/{scrape-LVGJ56IS.js.map → scrape-6RMFDYAT.js.map} +1 -1
  84. package/{search-TRISF64L.js → search-HSQVSQZY.js} +10 -9
  85. package/{search-TRISF64L.js.map → search-HSQVSQZY.js.map} +1 -1
  86. package/{secret-UAJDU3SX.js → secret-S4D6CNOX.js} +9 -8
  87. package/{secret-UAJDU3SX.js.map → secret-S4D6CNOX.js.map} +1 -1
  88. package/{slack-PDOPNS5Z.js → slack-E3E2NIDZ.js} +50 -175
  89. package/slack-E3E2NIDZ.js.map +1 -0
  90. package/{teams-BL36IS5U.js → teams-CLEWT2LQ.js} +8 -7
  91. package/{teams-BL36IS5U.js.map → teams-CLEWT2LQ.js.map} +1 -1
  92. package/{telegram-X7YTUVNV.js → telegram-35FKKA4K.js} +8 -7
  93. package/{telegram-X7YTUVNV.js.map → telegram-35FKKA4K.js.map} +1 -1
  94. package/{undici-ZMFN7TNU.js → undici-YXSVPIYI.js} +2 -2
  95. package/upgrade-DNGUR42E.js +50 -0
  96. package/upgrade-DNGUR42E.js.map +1 -0
  97. package/{variable-EBCBNZSU.js → variable-C7RWUPV6.js} +9 -8
  98. package/{variable-EBCBNZSU.js.map → variable-C7RWUPV6.js.map} +1 -1
  99. package/{video-3HFJJJEE.js → video-JS5VOA2S.js} +9 -7
  100. package/{video-3HFJJJEE.js.map → video-JS5VOA2S.js.map} +1 -1
  101. package/{weather-Y37FKFKU.js → weather-5R2N5OX4.js} +8 -7
  102. package/{weather-Y37FKFKU.js.map → weather-5R2N5OX4.js.map} +1 -1
  103. package/{web-ZEWEVAI3.js → web-FXIIYCZ7.js} +10 -8
  104. package/{web-ZEWEVAI3.js.map → web-FXIIYCZ7.js.map} +1 -1
  105. package/{web-search-37SGCKB7.js → web-search-SZP7J4UM.js} +8 -7
  106. package/{web-search-37SGCKB7.js.map → web-search-SZP7J4UM.js.map} +1 -1
  107. package/{whoami-VZI6VS4C.js → whoami-J4FRN67A.js} +10 -9
  108. package/{whoami-VZI6VS4C.js.map → whoami-J4FRN67A.js.map} +1 -1
  109. package/{workflow-3WGBRMM5.js → workflow-HQHZKXB2.js} +9 -8
  110. package/{workflow-3WGBRMM5.js.map → workflow-HQHZKXB2.js.map} +1 -1
  111. package/zero.js +88 -61
  112. package/zero.js.map +1 -1
  113. package/chunk-KQN5YZZP.js.map +0 -1
  114. package/chunk-L63QVTYZ.js.map +0 -1
  115. package/chunk-LRHXR7JT.js +0 -33
  116. package/chunk-LRHXR7JT.js.map +0 -1
  117. package/chunk-PLOJYRFL.js.map +0 -1
  118. package/credit-LGMFDRFK.js +0 -128
  119. package/credit-LGMFDRFK.js.map +0 -1
  120. package/doctor-CS5TFE6A.js.map +0 -1
  121. package/generate-4FEC4YVM.js.map +0 -1
  122. package/slack-PDOPNS5Z.js.map +0 -1
  123. /package/{chunk-FF5L22OE.js.map → chunk-5CZNUTFF.js.map} +0 -0
  124. /package/{chunk-J2I5GYLR.js.map → chunk-AFNSFKAH.js.map} +0 -0
  125. /package/{chunk-KLIW3XK7.js.map → chunk-GPF7NSX7.js.map} +0 -0
  126. /package/{chunk-HUMR2SA3.js.map → chunk-HSGQT7LT.js.map} +0 -0
  127. /package/{chunk-SAW74AR6.js.map → chunk-JCLLQRCI.js.map} +0 -0
  128. /package/{chunk-B3W2RUBP.js.map → chunk-LD4ZVU4O.js.map} +0 -0
  129. /package/{chunk-LTDQISD7.js.map → chunk-SB7EZ2ZO.js.map} +0 -0
  130. /package/{chunk-RTYT3CSZ.js.map → chunk-UG5XA6KU.js.map} +0 -0
  131. /package/{chunk-LKDE4AUC.js.map → chunk-UNQJRTJQ.js.map} +0 -0
  132. /package/{chunk-JFY6GK7Y.js.map → chunk-X2545RBX.js.map} +0 -0
  133. /package/{chunk-ZE2VIESK.js.map → chunk-X4DBCBU4.js.map} +0 -0
  134. /package/{esm-PZKPCIYJ.js.map → esm-GOCEMHJO.js.map} +0 -0
  135. /package/{getMachineId-bsd-L73QENVB.js.map → getMachineId-bsd-SB7C44VX.js.map} +0 -0
  136. /package/{getMachineId-darwin-TCCWKQ2S.js.map → getMachineId-darwin-R4BWY3CQ.js.map} +0 -0
  137. /package/{getMachineId-linux-TJYYUZVM.js.map → getMachineId-linux-BR4HVNPW.js.map} +0 -0
  138. /package/{getMachineId-unsupported-DPRVLH4Y.js.map → getMachineId-unsupported-FPGM635L.js.map} +0 -0
  139. /package/{getMachineId-win-7EE436CJ.js.map → getMachineId-win-RB4JMF33.js.map} +0 -0
  140. /package/{intro-MIVVJG7M.js.map → intro-PMHOBGDL.js.map} +0 -0
  141. /package/{undici-ZMFN7TNU.js.map → undici-YXSVPIYI.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/punycode@2.3.1/node_modules/punycode/punycode.es6.js","../../../node_modules/.pnpm/tr46@5.1.1/node_modules/tr46/lib/regexes.js","../../../node_modules/.pnpm/tr46@5.1.1/node_modules/tr46/lib/mappingTable.json","../../../node_modules/.pnpm/tr46@5.1.1/node_modules/tr46/lib/statusMapping.js","../../../node_modules/.pnpm/tr46@5.1.1/node_modules/tr46/index.js","../src/lib/api/domains/registry-resources.ts","../../../packages/api-contracts/src/contracts/registry-resources.ts","../../../packages/api-contracts/src/contracts/base.ts","../src/lib/api/domains/zero-user-preferences.ts","../../../packages/api-contracts/src/contracts/zero-user-preferences.ts","../src/lib/api/domains/zero-orgs.ts","../../../packages/api-contracts/src/contracts/zero-org.ts","../../../packages/api-contracts/src/contracts/orgs.ts","../../../packages/api-contracts/src/contracts/org-members.ts","../../../packages/api-contracts/src/contracts/zero-org-list.ts","../../../packages/api-contracts/src/contracts/org-list.ts","../../../packages/api-contracts/src/contracts/zero-org-members.ts","../src/lib/api/domains/zero-billing.ts","../../../packages/api-contracts/src/contracts/zero-billing.ts","../../../packages/api-contracts/src/contracts/zero-attribution.ts","../src/lib/api/domains/zero-model-policies.ts","../../../packages/api-contracts/src/contracts/zero-model-policies.ts","../../../packages/api-contracts/src/contracts/zero-host.ts","../src/lib/api/domains/zero-agents.ts","../../../packages/api-contracts/src/contracts/zero-agents.ts","../../../packages/api-contracts/src/contracts/chat-threads.ts","../../../packages/api-contracts/src/contracts/runs.ts","../../../packages/connectors/src/firewall-types.ts","../../../packages/connectors/src/firewall-hostname-policy.ts","../../../packages/connectors/src/firewall-url-utils.ts","../../../packages/connectors/src/segment-parser.ts","../../../packages/api-contracts/src/contracts/logs.ts","../../../packages/api-contracts/src/contracts/zero-goals.ts","../../../packages/api-contracts/src/contracts/zero-user-permission-grants.ts","../../../packages/api-contracts/src/contracts/connector-identity.ts","../../../packages/api-contracts/src/contracts/user-connectors.ts","../../../packages/api-contracts/src/contracts/zero-agent-custom-connectors.ts","../src/lib/api/domains/zero-goals.ts","../src/lib/api/domains/zero-connectors.ts","../../../packages/api-contracts/src/contracts/zero-connectors.ts","../../../packages/api-contracts/src/contracts/connector-schemas.ts","../../../packages/api-contracts/src/contracts/zero-connector-catalog.ts","../../../packages/api-contracts/src/contracts/zero-connector-check.ts","../../../packages/api-contracts/src/contracts/zero-custom-connectors.ts","../src/lib/api/domains/zero-runs.ts","../../../packages/api-contracts/src/contracts/zero-runs.ts","../../../packages/api-contracts/src/contracts/webhooks.ts","../../../packages/api-contracts/src/contracts/runners.ts","../../../packages/api-contracts/src/contracts/storages.ts","../src/lib/api/domains/zero-chat.ts","../src/lib/api/domains/zero-developer-support.ts","../../../packages/api-contracts/src/contracts/zero-developer-support.ts","../../../packages/api-contracts/src/contracts/zero-computer-use-plugins.ts","../src/lib/api/domains/zero-computer-use.ts","../../../packages/api-contracts/src/contracts/zero-computer-use.ts","../src/lib/api/domains/zero-maps.ts","../src/lib/api/domains/zero-weather.ts","../../../packages/api-contracts/src/contracts/zero-scrape.ts","../src/lib/api/domains/zero-scrape.ts","../../../packages/api-contracts/src/contracts/zero-web-search.ts","../src/lib/api/domains/zero-web-search.ts","../../../packages/api-contracts/src/contracts/zero-finance.ts","../src/lib/api/domains/zero-finance.ts","../src/lib/api/domains/zero-banking.ts","../src/lib/api/index.ts","../src/lib/api/domains/zero-secrets.ts","../../../packages/api-contracts/src/contracts/zero-secrets.ts","../../../packages/api-contracts/src/contracts/secrets.ts","../../../packages/api-contracts/src/contracts/variables.ts","../src/lib/api/domains/zero-variables.ts","../src/lib/api/domains/zero-org-secrets.ts","../src/lib/api/domains/zero-org-variables.ts","../src/lib/api/domains/zero-org-model-providers.ts","../../../packages/api-contracts/src/contracts/zero-model-providers.ts","../src/lib/api/domains/zero-workflows.ts","../../../packages/api-contracts/src/contracts/zero-workflows.ts","../src/lib/api/domains/zero-mail.ts","../../../packages/api-contracts/src/contracts/zero-mail.ts","../src/lib/api/domains/integrations-slack.ts","../../../packages/api-contracts/src/contracts/integrations.ts","../src/lib/api/domains/integrations-telegram.ts","../src/lib/api/domains/integrations-teams.ts","../src/lib/api/domains/integrations-feishu.ts","../src/lib/api/domains/integrations-github.ts","../src/lib/api/domains/integrations-phone.ts","../src/lib/api/domains/zero-logs.ts","../src/lib/api/domains/zero-host.ts"],"sourcesContent":["'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","\"use strict\";\n\nconst combiningMarks = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C04\\u0C3C\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0CF3\\u0D00-\\u0D03\\u0D3B\\u0D3C\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81-\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF4\\u1CF7-\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA82C\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6D}\\u{10EAB}\\u{10EAC}\\u{10EFC}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11000}-\\u{11002}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11082}\\u{110B0}-\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{11134}\\u{11145}\\u{11146}\\u{11173}\\u{11180}-\\u{11182}\\u{111B3}-\\u{111C0}\\u{111C9}-\\u{111CC}\\u{111CE}\\u{111CF}\\u{1122C}-\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}-\\u{112EA}\\u{11300}-\\u{11303}\\u{1133B}\\u{1133C}\\u{1133E}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11357}\\u{11362}\\u{11363}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113B8}-\\u{113C0}\\u{113C2}\\u{113C5}\\u{113C7}-\\u{113CA}\\u{113CC}-\\u{113D0}\\u{113D2}\\u{113E1}\\u{113E2}\\u{11435}-\\u{11446}\\u{1145E}\\u{114B0}-\\u{114C3}\\u{115AF}-\\u{115B5}\\u{115B8}-\\u{115C0}\\u{115DC}\\u{115DD}\\u{11630}-\\u{11640}\\u{116AB}-\\u{116B7}\\u{1171D}-\\u{1172B}\\u{1182C}-\\u{1183A}\\u{11930}-\\u{11935}\\u{11937}\\u{11938}\\u{1193B}-\\u{1193E}\\u{11940}\\u{11942}\\u{11943}\\u{119D1}-\\u{119D7}\\u{119DA}-\\u{119E0}\\u{119E4}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A39}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A5B}\\u{11A8A}-\\u{11A99}\\u{11C2F}-\\u{11C36}\\u{11C38}-\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CA9}-\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D8A}-\\u{11D8E}\\u{11D90}\\u{11D91}\\u{11D93}-\\u{11D97}\\u{11EF3}-\\u{11EF6}\\u{11F00}\\u{11F01}\\u{11F03}\\u{11F34}-\\u{11F3A}\\u{11F3E}-\\u{11F42}\\u{11F5A}\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F51}-\\u{16F87}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{16FF0}\\u{16FF1}\\u{1BC9D}\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D165}-\\u{1D169}\\u{1D16D}-\\u{1D172}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}\\u{1E5EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]/u;\nconst combiningClassVirama = /[\\u094D\\u09CD\\u0A4D\\u0ACD\\u0B4D\\u0BCD\\u0C4D\\u0CCD\\u0D3B\\u0D3C\\u0D4D\\u0DCA\\u0E3A\\u0EBA\\u0F84\\u1039\\u103A\\u1714\\u1715\\u1734\\u17D2\\u1A60\\u1B44\\u1BAA\\u1BAB\\u1BF2\\u1BF3\\u2D7F\\uA806\\uA82C\\uA8C4\\uA953\\uA9C0\\uAAF6\\uABED\\u{10A3F}\\u{11046}\\u{11070}\\u{1107F}\\u{110B9}\\u{11133}\\u{11134}\\u{111C0}\\u{11235}\\u{112EA}\\u{1134D}\\u{113CE}-\\u{113D0}\\u{11442}\\u{114C2}\\u{115BF}\\u{1163F}\\u{116B6}\\u{1172B}\\u{11839}\\u{1193D}\\u{1193E}\\u{119E0}\\u{11A34}\\u{11A47}\\u{11A99}\\u{11C3F}\\u{11D44}\\u{11D45}\\u{11D97}\\u{11F41}\\u{11F42}\\u{1612F}]/u;\nconst validZWNJ = /[\\u0620\\u0626\\u0628\\u062A-\\u062E\\u0633-\\u063F\\u0641-\\u0647\\u0649\\u064A\\u066E\\u066F\\u0678-\\u0687\\u069A-\\u06BF\\u06C1\\u06C2\\u06CC\\u06CE\\u06D0\\u06D1\\u06FA-\\u06FC\\u06FF\\u0712-\\u0714\\u071A-\\u071D\\u071F-\\u0727\\u0729\\u072B\\u072D\\u072E\\u074E-\\u0758\\u075C-\\u076A\\u076D-\\u0770\\u0772\\u0775-\\u0777\\u077A-\\u077F\\u07CA-\\u07EA\\u0841-\\u0845\\u0848\\u084A-\\u0853\\u0855\\u0860\\u0862-\\u0865\\u0868\\u0886\\u0889-\\u088D\\u08A0-\\u08A9\\u08AF\\u08B0\\u08B3-\\u08B8\\u08BA-\\u08C8\\u1807\\u1820-\\u1878\\u1887-\\u18A8\\u18AA\\uA840-\\uA872\\u{10AC0}-\\u{10AC4}\\u{10ACD}\\u{10AD3}-\\u{10ADC}\\u{10ADE}-\\u{10AE0}\\u{10AEB}-\\u{10AEE}\\u{10B80}\\u{10B82}\\u{10B86}-\\u{10B88}\\u{10B8A}\\u{10B8B}\\u{10B8D}\\u{10B90}\\u{10BAD}\\u{10BAE}\\u{10D00}-\\u{10D21}\\u{10D23}\\u{10EC3}\\u{10EC4}\\u{10F30}-\\u{10F32}\\u{10F34}-\\u{10F44}\\u{10F51}-\\u{10F53}\\u{10F70}-\\u{10F73}\\u{10F76}-\\u{10F81}\\u{10FB0}\\u{10FB2}\\u{10FB3}\\u{10FB8}\\u{10FBB}\\u{10FBC}\\u{10FBE}\\u{10FBF}\\u{10FC1}\\u{10FC4}\\u{10FCA}\\u{10FCB}\\u{1E900}-\\u{1E943}][\\xAD\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u061C\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u070F\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u200B\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFEFF\\uFFF9-\\uFFFB\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6D}\\u{10EAB}\\u{10EAC}\\u{10EFC}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11001}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113BB}-\\u{113C0}\\u{113CE}\\u{113D0}\\u{113D2}\\u{113E1}\\u{113E2}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{11F5A}\\u{13430}-\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{16129}\\u{1612D}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}\\u{1E5EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94B}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*\\u200C[\\xAD\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u061C\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u070F\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u200B\\u200E\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u206A-\\u206F\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFEFF\\uFFF9-\\uFFFB\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6D}\\u{10EAB}\\u{10EAC}\\u{10EFC}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11001}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113BB}-\\u{113C0}\\u{113CE}\\u{113D0}\\u{113D2}\\u{113E1}\\u{113E2}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{11F5A}\\u{13430}-\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{16129}\\u{1612D}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}\\u{1E5EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94B}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*[\\u0620\\u0622-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u0673\\u0675-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u077F\\u07CA-\\u07EA\\u0840-\\u0858\\u0860\\u0862-\\u0865\\u0867-\\u086A\\u0870-\\u0882\\u0886\\u0889-\\u088E\\u08A0-\\u08AC\\u08AE-\\u08C8\\u1807\\u1820-\\u1878\\u1887-\\u18A8\\u18AA\\uA840-\\uA871\\u{10AC0}-\\u{10AC5}\\u{10AC7}\\u{10AC9}\\u{10ACA}\\u{10ACE}-\\u{10AD6}\\u{10AD8}-\\u{10AE1}\\u{10AE4}\\u{10AEB}-\\u{10AEF}\\u{10B80}-\\u{10B91}\\u{10BA9}-\\u{10BAE}\\u{10D01}-\\u{10D23}\\u{10EC2}-\\u{10EC4}\\u{10F30}-\\u{10F44}\\u{10F51}-\\u{10F54}\\u{10F70}-\\u{10F81}\\u{10FB0}\\u{10FB2}-\\u{10FB6}\\u{10FB8}-\\u{10FBF}\\u{10FC1}-\\u{10FC4}\\u{10FC9}\\u{10FCA}\\u{1E900}-\\u{1E943}]/u;\nconst bidiDomain = /[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0600-\\u0605\\u0608\\u060B\\u060D\\u061B-\\u064A\\u0660-\\u0669\\u066B-\\u066F\\u0671-\\u06D5\\u06DD\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u0870-\\u088E\\u0890\\u0891\\u08A0-\\u08C9\\u08E2\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A40}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D23}\\u{10D30}-\\u{10D39}\\u{10D40}-\\u{10D65}\\u{10D6F}-\\u{10D85}\\u{10D8E}\\u{10D8F}\\u{10E60}-\\u{10E7E}\\u{10E80}-\\u{10EA9}\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10EC2}-\\u{10EC4}\\u{10F00}-\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F51}-\\u{10F59}\\u{10F70}-\\u{10F81}\\u{10F86}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}]/u;\nconst bidiS1LTR = /[A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u02BB-\\u02C1\\u02D0\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559-\\u0589\\u0903-\\u0939\\u093B\\u093D-\\u0940\\u0949-\\u094C\\u094E-\\u0950\\u0958-\\u0961\\u0964-\\u0980\\u0982\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09FA\\u09FC\\u09FD\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A76\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AF0\\u0AF9\\u0B02\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0BE6-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C77\\u0C7F\\u0C80\\u0C82-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D02-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D4F\\u0D54-\\u0D61\\u0D66-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E4F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F17\\u0F1A-\\u0F34\\u0F36\\u0F38\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u102C\\u1031\\u1038\\u103B\\u103C\\u103F-\\u1057\\u105A-\\u105D\\u1061-\\u1070\\u1075-\\u1081\\u1083\\u1084\\u1087-\\u108C\\u108E-\\u109C\\u109E-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u167F\\u1681-\\u169A\\u16A0-\\u16F8\\u1700-\\u1711\\u1715\\u171F-\\u1731\\u1734-\\u1736\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u17D4-\\u17DA\\u17DC\\u17E0-\\u17E9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A19\\u1A1A\\u1A1E-\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1B04-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B4C\\u1B4E-\\u1B6A\\u1B74-\\u1B7F\\u1B82-\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BAE-\\u1BE5\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1BFC-\\u1C2B\\u1C34\\u1C35\\u1C3B-\\u1C49\\u1C4D-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CC7\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF7\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u302E\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3190-\\u31BF\\u31F0-\\u321C\\u3220-\\u324F\\u3260-\\u327B\\u327F-\\u32B0\\u32C0-\\u32CB\\u32D0-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA680-\\uA69D\\uA6A0-\\uA6EF\\uA6F2-\\uA6F7\\uA722-\\uA787\\uA789-\\uA7CD\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7DC\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA824\\uA827\\uA830-\\uA837\\uA840-\\uA873\\uA880-\\uA8C3\\uA8CE-\\uA8D9\\uA8F2-\\uA8FE\\uA900-\\uA925\\uA92E-\\uA946\\uA952\\uA953\\uA95F-\\uA97C\\uA983-\\uA9B2\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA7B\\uAA7D-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAAEB\\uAAEE-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB69\\uAB70-\\uABE4\\uABE6\\uABE7\\uABE9-\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1013F}\\u{1018D}\\u{1018E}\\u{101D0}-\\u{101FC}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}\\u{105BC}\\u{105C0}-\\u{105F3}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{11000}\\u{11002}-\\u{11037}\\u{11047}-\\u{1104D}\\u{11066}-\\u{1106F}\\u{11071}\\u{11072}\\u{11075}\\u{11082}-\\u{110B2}\\u{110B7}\\u{110B8}\\u{110BB}-\\u{110C1}\\u{110CD}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11103}-\\u{11126}\\u{1112C}\\u{11136}-\\u{11147}\\u{11150}-\\u{11172}\\u{11174}-\\u{11176}\\u{11182}-\\u{111B5}\\u{111BF}-\\u{111C8}\\u{111CD}\\u{111CE}\\u{111D0}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122E}\\u{11232}\\u{11233}\\u{11235}\\u{11238}-\\u{1123D}\\u{1123F}\\u{11240}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112DE}\\u{112E0}-\\u{112E2}\\u{112F0}-\\u{112F9}\\u{11302}\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}-\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11380}-\\u{11389}\\u{1138B}\\u{1138E}\\u{11390}-\\u{113B5}\\u{113B7}-\\u{113BA}\\u{113C2}\\u{113C5}\\u{113C7}-\\u{113CA}\\u{113CC}\\u{113CD}\\u{113CF}\\u{113D1}\\u{113D3}-\\u{113D5}\\u{113D7}\\u{113D8}\\u{11400}-\\u{11437}\\u{11440}\\u{11441}\\u{11445}\\u{11447}-\\u{1145B}\\u{1145D}\\u{1145F}-\\u{11461}\\u{11480}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BE}\\u{114C1}\\u{114C4}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{115C1}-\\u{115DB}\\u{11600}-\\u{11632}\\u{1163B}\\u{1163C}\\u{1163E}\\u{11641}-\\u{11644}\\u{11650}-\\u{11659}\\u{11680}-\\u{116AA}\\u{116AC}\\u{116AE}\\u{116AF}\\u{116B6}\\u{116B8}\\u{116B9}\\u{116C0}-\\u{116C9}\\u{116D0}-\\u{116E3}\\u{11700}-\\u{1171A}\\u{1171E}\\u{11720}\\u{11721}\\u{11726}\\u{11730}-\\u{11746}\\u{11800}-\\u{1182E}\\u{11838}\\u{1183B}\\u{118A0}-\\u{118F2}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}\\u{11916}\\u{11918}-\\u{11935}\\u{11937}\\u{11938}\\u{1193D}\\u{1193F}-\\u{11942}\\u{11944}-\\u{11946}\\u{11950}-\\u{11959}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E1}-\\u{119E4}\\u{11A00}\\u{11A07}\\u{11A08}\\u{11A0B}-\\u{11A32}\\u{11A39}\\u{11A3A}\\u{11A3F}-\\u{11A46}\\u{11A50}\\u{11A57}\\u{11A58}\\u{11A5C}-\\u{11A89}\\u{11A97}\\u{11A9A}-\\u{11AA2}\\u{11AB0}-\\u{11AF8}\\u{11B00}-\\u{11B09}\\u{11BC0}-\\u{11BE1}\\u{11BF0}-\\u{11BF9}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2F}\\u{11C3E}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D50}-\\u{11D59}\\u{11D60}-\\u{11D65}\\u{11D67}\\u{11D68}\\u{11D6A}-\\u{11D8E}\\u{11D93}\\u{11D94}\\u{11D96}\\u{11D98}\\u{11DA0}-\\u{11DA9}\\u{11EE0}-\\u{11EF2}\\u{11EF5}-\\u{11EF8}\\u{11F02}-\\u{11F10}\\u{11F12}-\\u{11F35}\\u{11F3E}\\u{11F3F}\\u{11F41}\\u{11F43}-\\u{11F59}\\u{11FB0}\\u{11FC0}-\\u{11FD4}\\u{11FFF}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF2}\\u{13000}-\\u{1343F}\\u{13441}-\\u{13446}\\u{13460}-\\u{143FA}\\u{14400}-\\u{14646}\\u{16100}-\\u{1611D}\\u{1612A}-\\u{1612C}\\u{16130}-\\u{16139}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}-\\u{16ABE}\\u{16AC0}-\\u{16AC9}\\u{16AD0}-\\u{16AED}\\u{16AF5}\\u{16B00}-\\u{16B2F}\\u{16B37}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16D40}-\\u{16D79}\\u{16E40}-\\u{16E9A}\\u{16F00}-\\u{16F4A}\\u{16F50}-\\u{16F87}\\u{16F93}-\\u{16F9F}\\u{16FE0}\\u{16FE1}\\u{16FE3}\\u{16FF0}\\u{16FF1}\\u{17000}-\\u{187F7}\\u{18800}-\\u{18CD5}\\u{18CFF}-\\u{18D08}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}\\u{1BC9F}\\u{1CCD6}-\\u{1CCEF}\\u{1CF50}-\\u{1CFC3}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D166}\\u{1D16A}-\\u{1D172}\\u{1D183}\\u{1D184}\\u{1D18C}-\\u{1D1A9}\\u{1D1AE}-\\u{1D1E8}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D360}-\\u{1D378}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6C0}\\u{1D6C2}-\\u{1D6DA}\\u{1D6DC}-\\u{1D6FA}\\u{1D6FC}-\\u{1D714}\\u{1D716}-\\u{1D734}\\u{1D736}-\\u{1D74E}\\u{1D750}-\\u{1D76E}\\u{1D770}-\\u{1D788}\\u{1D78A}-\\u{1D7A8}\\u{1D7AA}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1D800}-\\u{1D9FF}\\u{1DA37}-\\u{1DA3A}\\u{1DA6D}-\\u{1DA74}\\u{1DA76}-\\u{1DA83}\\u{1DA85}-\\u{1DA8B}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E030}-\\u{1E06D}\\u{1E100}-\\u{1E12C}\\u{1E137}-\\u{1E13D}\\u{1E140}-\\u{1E149}\\u{1E14E}\\u{1E14F}\\u{1E290}-\\u{1E2AD}\\u{1E2C0}-\\u{1E2EB}\\u{1E2F0}-\\u{1E2F9}\\u{1E4D0}-\\u{1E4EB}\\u{1E4F0}-\\u{1E4F9}\\u{1E5D0}-\\u{1E5ED}\\u{1E5F0}-\\u{1E5FA}\\u{1E5FF}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1F110}-\\u{1F12E}\\u{1F130}-\\u{1F169}\\u{1F170}-\\u{1F1AC}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B739}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEA1}\\u{2CEB0}-\\u{2EBE0}\\u{2EBF0}-\\u{2EE5D}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{323AF}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}]/u;\nconst bidiS1RTL = /[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u0870-\\u088E\\u08A0-\\u08C9\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A40}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D23}\\u{10D4A}-\\u{10D65}\\u{10D6F}-\\u{10D85}\\u{10D8E}\\u{10D8F}\\u{10E80}-\\u{10EA9}\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10EC2}-\\u{10EC4}\\u{10F00}-\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F51}-\\u{10F59}\\u{10F70}-\\u{10F81}\\u{10F86}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}]/u;\nconst bidiS2 = /^[\\0-\\x08\\x0E-\\x1B!-@\\[-`\\{-\\x84\\x86-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02B9\\u02BA\\u02C2-\\u02CF\\u02D2-\\u02DF\\u02E5-\\u02ED\\u02EF-\\u036F\\u0374\\u0375\\u037E\\u0384\\u0385\\u0387\\u03F6\\u0483-\\u0489\\u058A\\u058D-\\u058F\\u0591-\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0600-\\u070D\\u070F-\\u074A\\u074D-\\u07B1\\u07C0-\\u07FA\\u07FD-\\u082D\\u0830-\\u083E\\u0840-\\u085B\\u085E\\u0860-\\u086A\\u0870-\\u088E\\u0890\\u0891\\u0897-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09F2\\u09F3\\u09FB\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AF1\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0BF3-\\u0BFA\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C78-\\u0C7E\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E3F\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39-\\u0F3D\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1390-\\u1399\\u1400\\u169B\\u169C\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DB\\u17DD\\u17F0-\\u17F9\\u1800-\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1940\\u1944\\u1945\\u19DE-\\u19FF\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u200B-\\u200D\\u200F-\\u2027\\u202F-\\u205E\\u2060-\\u2064\\u206A-\\u2070\\u2074-\\u207E\\u2080-\\u208E\\u20A0-\\u20C0\\u20D0-\\u20F0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u2150-\\u215F\\u2189-\\u218B\\u2190-\\u2335\\u237B-\\u2394\\u2396-\\u2429\\u2440-\\u244A\\u2460-\\u249B\\u24EA-\\u26AB\\u26AD-\\u27FF\\u2900-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2CEF-\\u2CF1\\u2CF9-\\u2CFF\\u2D7F\\u2DE0-\\u2E5D\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFF\\u3001-\\u3004\\u3008-\\u3020\\u302A-\\u302D\\u3030\\u3036\\u3037\\u303D-\\u303F\\u3099-\\u309C\\u30A0\\u30FB\\u31C0-\\u31E5\\u31EF\\u321D\\u321E\\u3250-\\u325F\\u327C-\\u327E\\u32B1-\\u32BF\\u32CC-\\u32CF\\u3377-\\u337A\\u33DE\\u33DF\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA60D-\\uA60F\\uA66F-\\uA67F\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA700-\\uA721\\uA788\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA828-\\uA82C\\uA838\\uA839\\uA874-\\uA877\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uAB6A\\uAB6B\\uABE5\\uABE8\\uABED\\uFB1D-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD8F\\uFD92-\\uFDC7\\uFDCF\\uFDF0-\\uFE19\\uFE20-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFEFF\\uFF01-\\uFF20\\uFF3B-\\uFF40\\uFF5B-\\uFF65\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFF9-\\uFFFD\\u{10101}\\u{10140}-\\u{1018C}\\u{10190}-\\u{1019C}\\u{101A0}\\u{101FD}\\u{102E0}-\\u{102FB}\\u{10376}-\\u{1037A}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{1091F}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A38}-\\u{10A3A}\\u{10A3F}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE6}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B39}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D27}\\u{10D30}-\\u{10D39}\\u{10D40}-\\u{10D65}\\u{10D69}-\\u{10D85}\\u{10D8E}\\u{10D8F}\\u{10E60}-\\u{10E7E}\\u{10E80}-\\u{10EA9}\\u{10EAB}-\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10EC2}-\\u{10EC4}\\u{10EFC}-\\u{10F27}\\u{10F30}-\\u{10F59}\\u{10F70}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{11001}\\u{11038}-\\u{11046}\\u{11052}-\\u{11065}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113BB}-\\u{113C0}\\u{113CE}\\u{113D0}\\u{113D2}\\u{113E1}\\u{113E2}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{11660}-\\u{1166C}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{11F5A}\\u{11FD5}-\\u{11FF1}\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{16129}\\u{1612D}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE2}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1BCA0}-\\u{1BCA3}\\u{1CC00}-\\u{1CCD5}\\u{1CCF0}-\\u{1CCF9}\\u{1CD00}-\\u{1CEB3}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D173}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D1E9}\\u{1D1EA}\\u{1D200}-\\u{1D245}\\u{1D300}-\\u{1D356}\\u{1D6C1}\\u{1D6DB}\\u{1D6FB}\\u{1D715}\\u{1D735}\\u{1D74F}\\u{1D76F}\\u{1D789}\\u{1D7A9}\\u{1D7C3}\\u{1D7CE}-\\u{1D7FF}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E2FF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}\\u{1E5EF}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8D6}\\u{1E900}-\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{1EEF0}\\u{1EEF1}\\u{1F000}-\\u{1F02B}\\u{1F030}-\\u{1F093}\\u{1F0A0}-\\u{1F0AE}\\u{1F0B1}-\\u{1F0BF}\\u{1F0C1}-\\u{1F0CF}\\u{1F0D1}-\\u{1F0F5}\\u{1F100}-\\u{1F10F}\\u{1F12F}\\u{1F16A}-\\u{1F16F}\\u{1F1AD}\\u{1F260}-\\u{1F265}\\u{1F300}-\\u{1F6D7}\\u{1F6DC}-\\u{1F6EC}\\u{1F6F0}-\\u{1F6FC}\\u{1F700}-\\u{1F776}\\u{1F77B}-\\u{1F7D9}\\u{1F7E0}-\\u{1F7EB}\\u{1F7F0}\\u{1F800}-\\u{1F80B}\\u{1F810}-\\u{1F847}\\u{1F850}-\\u{1F859}\\u{1F860}-\\u{1F887}\\u{1F890}-\\u{1F8AD}\\u{1F8B0}-\\u{1F8BB}\\u{1F8C0}\\u{1F8C1}\\u{1F900}-\\u{1FA53}\\u{1FA60}-\\u{1FA6D}\\u{1FA70}-\\u{1FA7C}\\u{1FA80}-\\u{1FA89}\\u{1FA8F}-\\u{1FAC6}\\u{1FACE}-\\u{1FADC}\\u{1FADF}-\\u{1FAE9}\\u{1FAF0}-\\u{1FAF8}\\u{1FB00}-\\u{1FB92}\\u{1FB94}-\\u{1FBF9}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}]*$/u;\nconst bidiS3 = /[0-9\\xB2\\xB3\\xB9\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05EF-\\u05F4\\u0600-\\u0605\\u0608\\u060B\\u060D\\u061B-\\u064A\\u0660-\\u0669\\u066B-\\u066F\\u0671-\\u06D5\\u06DD\\u06E5\\u06E6\\u06EE-\\u070D\\u070F\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u07FE-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u083E\\u0840-\\u0858\\u085E\\u0860-\\u086A\\u0870-\\u088E\\u0890\\u0891\\u08A0-\\u08C9\\u08E2\\u200F\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2488-\\u249B\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBC2\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFC\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\u{102E1}-\\u{102FB}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10857}-\\u{1089E}\\u{108A7}-\\u{108AF}\\u{108E0}-\\u{108F2}\\u{108F4}\\u{108F5}\\u{108FB}-\\u{1091B}\\u{10920}-\\u{10939}\\u{1093F}\\u{10980}-\\u{109B7}\\u{109BC}-\\u{109CF}\\u{109D2}-\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A40}-\\u{10A48}\\u{10A50}-\\u{10A58}\\u{10A60}-\\u{10A9F}\\u{10AC0}-\\u{10AE4}\\u{10AEB}-\\u{10AF6}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B58}-\\u{10B72}\\u{10B78}-\\u{10B91}\\u{10B99}-\\u{10B9C}\\u{10BA9}-\\u{10BAF}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10CFA}-\\u{10D23}\\u{10D30}-\\u{10D39}\\u{10D40}-\\u{10D65}\\u{10D6F}-\\u{10D85}\\u{10D8E}\\u{10D8F}\\u{10E60}-\\u{10E7E}\\u{10E80}-\\u{10EA9}\\u{10EAD}\\u{10EB0}\\u{10EB1}\\u{10EC2}-\\u{10EC4}\\u{10F00}-\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F51}-\\u{10F59}\\u{10F70}-\\u{10F81}\\u{10F86}-\\u{10F89}\\u{10FB0}-\\u{10FCB}\\u{10FE0}-\\u{10FF6}\\u{1CCF0}-\\u{1CCF9}\\u{1D7CE}-\\u{1D7FF}\\u{1E800}-\\u{1E8C4}\\u{1E8C7}-\\u{1E8CF}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1E950}-\\u{1E959}\\u{1E95E}\\u{1E95F}\\u{1EC71}-\\u{1ECB4}\\u{1ED01}-\\u{1ED3D}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{1F100}-\\u{1F10A}\\u{1FBF0}-\\u{1FBF9}][\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6D}\\u{10EAB}\\u{10EAC}\\u{10EFC}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11001}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113BB}-\\u{113C0}\\u{113CE}\\u{113D0}\\u{113D2}\\u{113E1}\\u{113E2}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{11F5A}\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{16129}\\u{1612D}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}\\u{1E5EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]*$/u;\nconst bidiS4EN = /[0-9\\xB2\\xB3\\xB9\\u06F0-\\u06F9\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2488-\\u249B\\uFF10-\\uFF19\\u{102E1}-\\u{102FB}\\u{1CCF0}-\\u{1CCF9}\\u{1D7CE}-\\u{1D7FF}\\u{1F100}-\\u{1F10A}\\u{1FBF0}-\\u{1FBF9}]/u;\nconst bidiS4AN = /[\\u0600-\\u0605\\u0660-\\u0669\\u066B\\u066C\\u06DD\\u0890\\u0891\\u08E2\\u{10D30}-\\u{10D39}\\u{10D40}-\\u{10D49}\\u{10E60}-\\u{10E7E}]/u;\nconst bidiS5 = /^[\\0-\\x08\\x0E-\\x1B!-\\x84\\x86-\\u0377\\u037A-\\u037F\\u0384-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u052F\\u0531-\\u0556\\u0559-\\u058A\\u058D-\\u058F\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0606\\u0607\\u0609\\u060A\\u060C\\u060E-\\u061A\\u064B-\\u065F\\u066A\\u0670\\u06D6-\\u06DC\\u06DE-\\u06E4\\u06E7-\\u06ED\\u06F0-\\u06F9\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07F6-\\u07F9\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A76\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AF1\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B77\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BFA\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C5D\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C77-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4F\\u0D54-\\u0D63\\u0D66-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E3A\\u0E3F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECE\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F97\\u0F99-\\u0FBC\\u0FBE-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u137C\\u1380-\\u1399\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1400-\\u167F\\u1681-\\u169C\\u16A0-\\u16F8\\u1700-\\u1715\\u171F-\\u1736\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17DD\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1800-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1940\\u1944-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u19DE-\\u1A1B\\u1A1E-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1AB0-\\u1ACE\\u1B00-\\u1B4C\\u1B4E-\\u1BF3\\u1BFC-\\u1C37\\u1C3B-\\u1C49\\u1C4D-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CC7\\u1CD0-\\u1CFA\\u1D00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFE\\u200B-\\u200E\\u2010-\\u2027\\u202F-\\u205E\\u2060-\\u2064\\u206A-\\u2071\\u2074-\\u208E\\u2090-\\u209C\\u20A0-\\u20C0\\u20D0-\\u20F0\\u2100-\\u218B\\u2190-\\u2429\\u2440-\\u244A\\u2460-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2CF3\\u2CF9-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2E5D\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFF\\u3001-\\u303F\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3190-\\u31E5\\u31EF-\\u321E\\u3220-\\uA48C\\uA490-\\uA4C6\\uA4D0-\\uA62B\\uA640-\\uA6F7\\uA700-\\uA7CD\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7DC\\uA7F2-\\uA82C\\uA830-\\uA839\\uA840-\\uA877\\uA880-\\uA8C5\\uA8CE-\\uA8D9\\uA8E0-\\uA953\\uA95F-\\uA97C\\uA980-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAAC2\\uAADB-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB6B\\uAB70-\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1E\\uFB29\\uFD3E-\\uFD4F\\uFDCF\\uFDFD-\\uFE19\\uFE20-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFEFF\\uFF01-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFF9-\\uFFFD\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}-\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1018E}\\u{10190}-\\u{1019C}\\u{101A0}\\u{101D0}-\\u{101FD}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{102E0}-\\u{102FB}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{1037A}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}\\u{105BC}\\u{105C0}-\\u{105F3}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{1091F}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10B39}-\\u{10B3F}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6E}\\u{10EAB}\\u{10EAC}\\u{10EFC}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11000}-\\u{1104D}\\u{11052}-\\u{11075}\\u{1107F}-\\u{110C2}\\u{110CD}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11100}-\\u{11134}\\u{11136}-\\u{11147}\\u{11150}-\\u{11176}\\u{11180}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{11241}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112EA}\\u{112F0}-\\u{112F9}\\u{11300}-\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133B}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{11380}-\\u{11389}\\u{1138B}\\u{1138E}\\u{11390}-\\u{113B5}\\u{113B7}-\\u{113C0}\\u{113C2}\\u{113C5}\\u{113C7}-\\u{113CA}\\u{113CC}-\\u{113D5}\\u{113D7}\\u{113D8}\\u{113E1}\\u{113E2}\\u{11400}-\\u{1145B}\\u{1145D}-\\u{11461}\\u{11480}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B5}\\u{115B8}-\\u{115DD}\\u{11600}-\\u{11644}\\u{11650}-\\u{11659}\\u{11660}-\\u{1166C}\\u{11680}-\\u{116B9}\\u{116C0}-\\u{116C9}\\u{116D0}-\\u{116E3}\\u{11700}-\\u{1171A}\\u{1171D}-\\u{1172B}\\u{11730}-\\u{11746}\\u{11800}-\\u{1183B}\\u{118A0}-\\u{118F2}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}\\u{11916}\\u{11918}-\\u{11935}\\u{11937}\\u{11938}\\u{1193B}-\\u{11946}\\u{11950}-\\u{11959}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D7}\\u{119DA}-\\u{119E4}\\u{11A00}-\\u{11A47}\\u{11A50}-\\u{11AA2}\\u{11AB0}-\\u{11AF8}\\u{11B00}-\\u{11B09}\\u{11BC0}-\\u{11BE1}\\u{11BF0}-\\u{11BF9}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C36}\\u{11C38}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11C92}-\\u{11CA7}\\u{11CA9}-\\u{11CB6}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D47}\\u{11D50}-\\u{11D59}\\u{11D60}-\\u{11D65}\\u{11D67}\\u{11D68}\\u{11D6A}-\\u{11D8E}\\u{11D90}\\u{11D91}\\u{11D93}-\\u{11D98}\\u{11DA0}-\\u{11DA9}\\u{11EE0}-\\u{11EF8}\\u{11F00}-\\u{11F10}\\u{11F12}-\\u{11F3A}\\u{11F3E}-\\u{11F5A}\\u{11FB0}\\u{11FC0}-\\u{11FF1}\\u{11FFF}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF2}\\u{13000}-\\u{13455}\\u{13460}-\\u{143FA}\\u{14400}-\\u{14646}\\u{16100}-\\u{16139}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}-\\u{16ABE}\\u{16AC0}-\\u{16AC9}\\u{16AD0}-\\u{16AED}\\u{16AF0}-\\u{16AF5}\\u{16B00}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16D40}-\\u{16D79}\\u{16E40}-\\u{16E9A}\\u{16F00}-\\u{16F4A}\\u{16F4F}-\\u{16F87}\\u{16F8F}-\\u{16F9F}\\u{16FE0}-\\u{16FE4}\\u{16FF0}\\u{16FF1}\\u{17000}-\\u{187F7}\\u{18800}-\\u{18CD5}\\u{18CFF}-\\u{18D08}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}-\\u{1BCA3}\\u{1CC00}-\\u{1CCF9}\\u{1CD00}-\\u{1CEB3}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1CF50}-\\u{1CFC3}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D1EA}\\u{1D200}-\\u{1D245}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D300}-\\u{1D356}\\u{1D360}-\\u{1D378}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D7CB}\\u{1D7CE}-\\u{1DA8B}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E030}-\\u{1E06D}\\u{1E08F}\\u{1E100}-\\u{1E12C}\\u{1E130}-\\u{1E13D}\\u{1E140}-\\u{1E149}\\u{1E14E}\\u{1E14F}\\u{1E290}-\\u{1E2AE}\\u{1E2C0}-\\u{1E2F9}\\u{1E2FF}\\u{1E4D0}-\\u{1E4F9}\\u{1E5D0}-\\u{1E5FA}\\u{1E5FF}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{1EEF0}\\u{1EEF1}\\u{1F000}-\\u{1F02B}\\u{1F030}-\\u{1F093}\\u{1F0A0}-\\u{1F0AE}\\u{1F0B1}-\\u{1F0BF}\\u{1F0C1}-\\u{1F0CF}\\u{1F0D1}-\\u{1F0F5}\\u{1F100}-\\u{1F1AD}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{1F260}-\\u{1F265}\\u{1F300}-\\u{1F6D7}\\u{1F6DC}-\\u{1F6EC}\\u{1F6F0}-\\u{1F6FC}\\u{1F700}-\\u{1F776}\\u{1F77B}-\\u{1F7D9}\\u{1F7E0}-\\u{1F7EB}\\u{1F7F0}\\u{1F800}-\\u{1F80B}\\u{1F810}-\\u{1F847}\\u{1F850}-\\u{1F859}\\u{1F860}-\\u{1F887}\\u{1F890}-\\u{1F8AD}\\u{1F8B0}-\\u{1F8BB}\\u{1F8C0}\\u{1F8C1}\\u{1F900}-\\u{1FA53}\\u{1FA60}-\\u{1FA6D}\\u{1FA70}-\\u{1FA7C}\\u{1FA80}-\\u{1FA89}\\u{1FA8F}-\\u{1FAC6}\\u{1FACE}-\\u{1FADC}\\u{1FADF}-\\u{1FAE9}\\u{1FAF0}-\\u{1FAF8}\\u{1FB00}-\\u{1FB92}\\u{1FB94}-\\u{1FBF9}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B739}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEA1}\\u{2CEB0}-\\u{2EBE0}\\u{2EBF0}-\\u{2EE5D}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{323AF}\\u{E0001}\\u{E0020}-\\u{E007F}\\u{E0100}-\\u{E01EF}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}]*$/u;\nconst bidiS6 = /[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u02BB-\\u02C1\\u02D0\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559-\\u0589\\u06F0-\\u06F9\\u0903-\\u0939\\u093B\\u093D-\\u0940\\u0949-\\u094C\\u094E-\\u0950\\u0958-\\u0961\\u0964-\\u0980\\u0982\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09FA\\u09FC\\u09FD\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A76\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AF0\\u0AF9\\u0B02\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0BE6-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C77\\u0C7F\\u0C80\\u0C82-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D02-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D4F\\u0D54-\\u0D61\\u0D66-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E4F-\\u0E5B\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00-\\u0F17\\u0F1A-\\u0F34\\u0F36\\u0F38\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FDA\\u1000-\\u102C\\u1031\\u1038\\u103B\\u103C\\u103F-\\u1057\\u105A-\\u105D\\u1061-\\u1070\\u1075-\\u1081\\u1083\\u1084\\u1087-\\u108C\\u108E-\\u109C\\u109E-\\u10C5\\u10C7\\u10CD\\u10D0-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1360-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u167F\\u1681-\\u169A\\u16A0-\\u16F8\\u1700-\\u1711\\u1715\\u171F-\\u1731\\u1734-\\u1736\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u17D4-\\u17DA\\u17DC\\u17E0-\\u17E9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A19\\u1A1A\\u1A1E-\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD\\u1B04-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B4C\\u1B4E-\\u1B6A\\u1B74-\\u1B7F\\u1B82-\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BAE-\\u1BE5\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1BFC-\\u1C2B\\u1C34\\u1C35\\u1C3B-\\u1C49\\u1C4D-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CC7\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF7\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200E\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2188\\u2336-\\u237A\\u2395\\u2488-\\u24E9\\u26AC\\u2800-\\u28FF\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u302E\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3190-\\u31BF\\u31F0-\\u321C\\u3220-\\u324F\\u3260-\\u327B\\u327F-\\u32B0\\u32C0-\\u32CB\\u32D0-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA680-\\uA69D\\uA6A0-\\uA6EF\\uA6F2-\\uA6F7\\uA722-\\uA787\\uA789-\\uA7CD\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7DC\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA824\\uA827\\uA830-\\uA837\\uA840-\\uA873\\uA880-\\uA8C3\\uA8CE-\\uA8D9\\uA8F2-\\uA8FE\\uA900-\\uA925\\uA92E-\\uA946\\uA952\\uA953\\uA95F-\\uA97C\\uA983-\\uA9B2\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9CD\\uA9CF-\\uA9D9\\uA9DE-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA7B\\uAA7D-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAAEB\\uAAEE-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB69\\uAB70-\\uABE4\\uABE6\\uABE7\\uABE9-\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uD800-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10100}\\u{10102}\\u{10107}-\\u{10133}\\u{10137}-\\u{1013F}\\u{1018D}\\u{1018E}\\u{101D0}-\\u{101FC}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{102E1}-\\u{102FB}\\u{10300}-\\u{10323}\\u{1032D}-\\u{1034A}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{1039F}-\\u{103C3}\\u{103C8}-\\u{103D5}\\u{10400}-\\u{1049D}\\u{104A0}-\\u{104A9}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{1056F}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}\\u{105BC}\\u{105C0}-\\u{105F3}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{11000}\\u{11002}-\\u{11037}\\u{11047}-\\u{1104D}\\u{11066}-\\u{1106F}\\u{11071}\\u{11072}\\u{11075}\\u{11082}-\\u{110B2}\\u{110B7}\\u{110B8}\\u{110BB}-\\u{110C1}\\u{110CD}\\u{110D0}-\\u{110E8}\\u{110F0}-\\u{110F9}\\u{11103}-\\u{11126}\\u{1112C}\\u{11136}-\\u{11147}\\u{11150}-\\u{11172}\\u{11174}-\\u{11176}\\u{11182}-\\u{111B5}\\u{111BF}-\\u{111C8}\\u{111CD}\\u{111CE}\\u{111D0}-\\u{111DF}\\u{111E1}-\\u{111F4}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122E}\\u{11232}\\u{11233}\\u{11235}\\u{11238}-\\u{1123D}\\u{1123F}\\u{11240}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A9}\\u{112B0}-\\u{112DE}\\u{112E0}-\\u{112E2}\\u{112F0}-\\u{112F9}\\u{11302}\\u{11303}\\u{11305}-\\u{1130C}\\u{1130F}\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}-\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}\\u{11348}\\u{1134B}-\\u{1134D}\\u{11350}\\u{11357}\\u{1135D}-\\u{11363}\\u{11380}-\\u{11389}\\u{1138B}\\u{1138E}\\u{11390}-\\u{113B5}\\u{113B7}-\\u{113BA}\\u{113C2}\\u{113C5}\\u{113C7}-\\u{113CA}\\u{113CC}\\u{113CD}\\u{113CF}\\u{113D1}\\u{113D3}-\\u{113D5}\\u{113D7}\\u{113D8}\\u{11400}-\\u{11437}\\u{11440}\\u{11441}\\u{11445}\\u{11447}-\\u{1145B}\\u{1145D}\\u{1145F}-\\u{11461}\\u{11480}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BE}\\u{114C1}\\u{114C4}-\\u{114C7}\\u{114D0}-\\u{114D9}\\u{11580}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{115C1}-\\u{115DB}\\u{11600}-\\u{11632}\\u{1163B}\\u{1163C}\\u{1163E}\\u{11641}-\\u{11644}\\u{11650}-\\u{11659}\\u{11680}-\\u{116AA}\\u{116AC}\\u{116AE}\\u{116AF}\\u{116B6}\\u{116B8}\\u{116B9}\\u{116C0}-\\u{116C9}\\u{116D0}-\\u{116E3}\\u{11700}-\\u{1171A}\\u{1171E}\\u{11720}\\u{11721}\\u{11726}\\u{11730}-\\u{11746}\\u{11800}-\\u{1182E}\\u{11838}\\u{1183B}\\u{118A0}-\\u{118F2}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}\\u{11916}\\u{11918}-\\u{11935}\\u{11937}\\u{11938}\\u{1193D}\\u{1193F}-\\u{11942}\\u{11944}-\\u{11946}\\u{11950}-\\u{11959}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E1}-\\u{119E4}\\u{11A00}\\u{11A07}\\u{11A08}\\u{11A0B}-\\u{11A32}\\u{11A39}\\u{11A3A}\\u{11A3F}-\\u{11A46}\\u{11A50}\\u{11A57}\\u{11A58}\\u{11A5C}-\\u{11A89}\\u{11A97}\\u{11A9A}-\\u{11AA2}\\u{11AB0}-\\u{11AF8}\\u{11B00}-\\u{11B09}\\u{11BC0}-\\u{11BE1}\\u{11BF0}-\\u{11BF9}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2F}\\u{11C3E}-\\u{11C45}\\u{11C50}-\\u{11C6C}\\u{11C70}-\\u{11C8F}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D00}-\\u{11D06}\\u{11D08}\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D50}-\\u{11D59}\\u{11D60}-\\u{11D65}\\u{11D67}\\u{11D68}\\u{11D6A}-\\u{11D8E}\\u{11D93}\\u{11D94}\\u{11D96}\\u{11D98}\\u{11DA0}-\\u{11DA9}\\u{11EE0}-\\u{11EF2}\\u{11EF5}-\\u{11EF8}\\u{11F02}-\\u{11F10}\\u{11F12}-\\u{11F35}\\u{11F3E}\\u{11F3F}\\u{11F41}\\u{11F43}-\\u{11F59}\\u{11FB0}\\u{11FC0}-\\u{11FD4}\\u{11FFF}-\\u{12399}\\u{12400}-\\u{1246E}\\u{12470}-\\u{12474}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF2}\\u{13000}-\\u{1343F}\\u{13441}-\\u{13446}\\u{13460}-\\u{143FA}\\u{14400}-\\u{14646}\\u{16100}-\\u{1611D}\\u{1612A}-\\u{1612C}\\u{16130}-\\u{16139}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A60}-\\u{16A69}\\u{16A6E}-\\u{16ABE}\\u{16AC0}-\\u{16AC9}\\u{16AD0}-\\u{16AED}\\u{16AF5}\\u{16B00}-\\u{16B2F}\\u{16B37}-\\u{16B45}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16D40}-\\u{16D79}\\u{16E40}-\\u{16E9A}\\u{16F00}-\\u{16F4A}\\u{16F50}-\\u{16F87}\\u{16F93}-\\u{16F9F}\\u{16FE0}\\u{16FE1}\\u{16FE3}\\u{16FF0}\\u{16FF1}\\u{17000}-\\u{187F7}\\u{18800}-\\u{18CD5}\\u{18CFF}-\\u{18D08}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1BC9C}\\u{1BC9F}\\u{1CCD6}-\\u{1CCF9}\\u{1CF50}-\\u{1CFC3}\\u{1D000}-\\u{1D0F5}\\u{1D100}-\\u{1D126}\\u{1D129}-\\u{1D166}\\u{1D16A}-\\u{1D172}\\u{1D183}\\u{1D184}\\u{1D18C}-\\u{1D1A9}\\u{1D1AE}-\\u{1D1E8}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D360}-\\u{1D378}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}\\u{1D49F}\\u{1D4A2}\\u{1D4A5}\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6C0}\\u{1D6C2}-\\u{1D6DA}\\u{1D6DC}-\\u{1D6FA}\\u{1D6FC}-\\u{1D714}\\u{1D716}-\\u{1D734}\\u{1D736}-\\u{1D74E}\\u{1D750}-\\u{1D76E}\\u{1D770}-\\u{1D788}\\u{1D78A}-\\u{1D7A8}\\u{1D7AA}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1D7CE}-\\u{1D9FF}\\u{1DA37}-\\u{1DA3A}\\u{1DA6D}-\\u{1DA74}\\u{1DA76}-\\u{1DA83}\\u{1DA85}-\\u{1DA8B}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E030}-\\u{1E06D}\\u{1E100}-\\u{1E12C}\\u{1E137}-\\u{1E13D}\\u{1E140}-\\u{1E149}\\u{1E14E}\\u{1E14F}\\u{1E290}-\\u{1E2AD}\\u{1E2C0}-\\u{1E2EB}\\u{1E2F0}-\\u{1E2F9}\\u{1E4D0}-\\u{1E4EB}\\u{1E4F0}-\\u{1E4F9}\\u{1E5D0}-\\u{1E5ED}\\u{1E5F0}-\\u{1E5FA}\\u{1E5FF}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1F100}-\\u{1F10A}\\u{1F110}-\\u{1F12E}\\u{1F130}-\\u{1F169}\\u{1F170}-\\u{1F1AC}\\u{1F1E6}-\\u{1F202}\\u{1F210}-\\u{1F23B}\\u{1F240}-\\u{1F248}\\u{1F250}\\u{1F251}\\u{1FBF0}-\\u{1FBF9}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B739}\\u{2B740}-\\u{2B81D}\\u{2B820}-\\u{2CEA1}\\u{2CEB0}-\\u{2EBE0}\\u{2EBF0}-\\u{2EE5D}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{323AF}\\u{F0000}-\\u{FFFFD}\\u{100000}-\\u{10FFFD}][\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6D}\\u{10EAB}\\u{10EAC}\\u{10EFC}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11001}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}\\u{11074}\\u{1107F}-\\u{11081}\\u{110B3}-\\u{110B6}\\u{110B9}\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{1112B}\\u{1112D}-\\u{11134}\\u{11173}\\u{11180}\\u{11181}\\u{111B6}-\\u{111BE}\\u{111C9}-\\u{111CC}\\u{111CF}\\u{1122F}-\\u{11231}\\u{11234}\\u{11236}\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}\\u{112E3}-\\u{112EA}\\u{11300}\\u{11301}\\u{1133B}\\u{1133C}\\u{11340}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113BB}-\\u{113C0}\\u{113CE}\\u{113D0}\\u{113D2}\\u{113E1}\\u{113E2}\\u{11438}-\\u{1143F}\\u{11442}-\\u{11444}\\u{11446}\\u{1145E}\\u{114B3}-\\u{114B8}\\u{114BA}\\u{114BF}\\u{114C0}\\u{114C2}\\u{114C3}\\u{115B2}-\\u{115B5}\\u{115BC}\\u{115BD}\\u{115BF}\\u{115C0}\\u{115DC}\\u{115DD}\\u{11633}-\\u{1163A}\\u{1163D}\\u{1163F}\\u{11640}\\u{116AB}\\u{116AD}\\u{116B0}-\\u{116B5}\\u{116B7}\\u{1171D}\\u{1171F}\\u{11722}-\\u{11725}\\u{11727}-\\u{1172B}\\u{1182F}-\\u{11837}\\u{11839}\\u{1183A}\\u{1193B}\\u{1193C}\\u{1193E}\\u{11943}\\u{119D4}-\\u{119D7}\\u{119DA}\\u{119DB}\\u{119E0}\\u{11A01}-\\u{11A06}\\u{11A09}\\u{11A0A}\\u{11A33}-\\u{11A38}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A56}\\u{11A59}-\\u{11A5B}\\u{11A8A}-\\u{11A96}\\u{11A98}\\u{11A99}\\u{11C30}-\\u{11C36}\\u{11C38}-\\u{11C3D}\\u{11C92}-\\u{11CA7}\\u{11CAA}-\\u{11CB0}\\u{11CB2}\\u{11CB3}\\u{11CB5}\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D90}\\u{11D91}\\u{11D95}\\u{11D97}\\u{11EF3}\\u{11EF4}\\u{11F00}\\u{11F01}\\u{11F36}-\\u{11F3A}\\u{11F40}\\u{11F42}\\u{11F5A}\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{16129}\\u{1612D}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{1BC9D}\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D167}-\\u{1D169}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}\\u{1E5EF}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}]*$/u;\n\nmodule.exports = {\n combiningMarks,\n combiningClassVirama,\n validZWNJ,\n bidiDomain,\n bidiS1LTR,\n bidiS1RTL,\n bidiS2,\n bidiS3,\n bidiS4EN,\n bidiS4AN,\n bidiS5,\n bidiS6\n };\n","[[[0,44],2],[[45,46],2],[47,2],[[48,57],2],[[58,64],2],[65,1,\"a\"],[66,1,\"b\"],[67,1,\"c\"],[68,1,\"d\"],[69,1,\"e\"],[70,1,\"f\"],[71,1,\"g\"],[72,1,\"h\"],[73,1,\"i\"],[74,1,\"j\"],[75,1,\"k\"],[76,1,\"l\"],[77,1,\"m\"],[78,1,\"n\"],[79,1,\"o\"],[80,1,\"p\"],[81,1,\"q\"],[82,1,\"r\"],[83,1,\"s\"],[84,1,\"t\"],[85,1,\"u\"],[86,1,\"v\"],[87,1,\"w\"],[88,1,\"x\"],[89,1,\"y\"],[90,1,\"z\"],[[91,96],2],[[97,122],2],[[123,127],2],[[128,159],3],[160,1,\" \"],[[161,167],2],[168,1,\" ̈\"],[169,2],[170,1,\"a\"],[[171,172],2],[173,7],[174,2],[175,1,\" ̄\"],[[176,177],2],[178,1,\"2\"],[179,1,\"3\"],[180,1,\" ́\"],[181,1,\"μ\"],[182,2],[183,2],[184,1,\" ̧\"],[185,1,\"1\"],[186,1,\"o\"],[187,2],[188,1,\"1⁄4\"],[189,1,\"1⁄2\"],[190,1,\"3⁄4\"],[191,2],[192,1,\"à\"],[193,1,\"á\"],[194,1,\"â\"],[195,1,\"ã\"],[196,1,\"ä\"],[197,1,\"å\"],[198,1,\"æ\"],[199,1,\"ç\"],[200,1,\"è\"],[201,1,\"é\"],[202,1,\"ê\"],[203,1,\"ë\"],[204,1,\"ì\"],[205,1,\"í\"],[206,1,\"î\"],[207,1,\"ï\"],[208,1,\"ð\"],[209,1,\"ñ\"],[210,1,\"ò\"],[211,1,\"ó\"],[212,1,\"ô\"],[213,1,\"õ\"],[214,1,\"ö\"],[215,2],[216,1,\"ø\"],[217,1,\"ù\"],[218,1,\"ú\"],[219,1,\"û\"],[220,1,\"ü\"],[221,1,\"ý\"],[222,1,\"þ\"],[223,6,\"ss\"],[[224,246],2],[247,2],[[248,255],2],[256,1,\"ā\"],[257,2],[258,1,\"ă\"],[259,2],[260,1,\"ą\"],[261,2],[262,1,\"ć\"],[263,2],[264,1,\"ĉ\"],[265,2],[266,1,\"ċ\"],[267,2],[268,1,\"č\"],[269,2],[270,1,\"ď\"],[271,2],[272,1,\"đ\"],[273,2],[274,1,\"ē\"],[275,2],[276,1,\"ĕ\"],[277,2],[278,1,\"ė\"],[279,2],[280,1,\"ę\"],[281,2],[282,1,\"ě\"],[283,2],[284,1,\"ĝ\"],[285,2],[286,1,\"ğ\"],[287,2],[288,1,\"ġ\"],[289,2],[290,1,\"ģ\"],[291,2],[292,1,\"ĥ\"],[293,2],[294,1,\"ħ\"],[295,2],[296,1,\"ĩ\"],[297,2],[298,1,\"ī\"],[299,2],[300,1,\"ĭ\"],[301,2],[302,1,\"į\"],[303,2],[304,1,\"i̇\"],[305,2],[[306,307],1,\"ij\"],[308,1,\"ĵ\"],[309,2],[310,1,\"ķ\"],[[311,312],2],[313,1,\"ĺ\"],[314,2],[315,1,\"ļ\"],[316,2],[317,1,\"ľ\"],[318,2],[[319,320],1,\"l·\"],[321,1,\"ł\"],[322,2],[323,1,\"ń\"],[324,2],[325,1,\"ņ\"],[326,2],[327,1,\"ň\"],[328,2],[329,1,\"ʼn\"],[330,1,\"ŋ\"],[331,2],[332,1,\"ō\"],[333,2],[334,1,\"ŏ\"],[335,2],[336,1,\"ő\"],[337,2],[338,1,\"œ\"],[339,2],[340,1,\"ŕ\"],[341,2],[342,1,\"ŗ\"],[343,2],[344,1,\"ř\"],[345,2],[346,1,\"ś\"],[347,2],[348,1,\"ŝ\"],[349,2],[350,1,\"ş\"],[351,2],[352,1,\"š\"],[353,2],[354,1,\"ţ\"],[355,2],[356,1,\"ť\"],[357,2],[358,1,\"ŧ\"],[359,2],[360,1,\"ũ\"],[361,2],[362,1,\"ū\"],[363,2],[364,1,\"ŭ\"],[365,2],[366,1,\"ů\"],[367,2],[368,1,\"ű\"],[369,2],[370,1,\"ų\"],[371,2],[372,1,\"ŵ\"],[373,2],[374,1,\"ŷ\"],[375,2],[376,1,\"ÿ\"],[377,1,\"ź\"],[378,2],[379,1,\"ż\"],[380,2],[381,1,\"ž\"],[382,2],[383,1,\"s\"],[384,2],[385,1,\"ɓ\"],[386,1,\"ƃ\"],[387,2],[388,1,\"ƅ\"],[389,2],[390,1,\"ɔ\"],[391,1,\"ƈ\"],[392,2],[393,1,\"ɖ\"],[394,1,\"ɗ\"],[395,1,\"ƌ\"],[[396,397],2],[398,1,\"ǝ\"],[399,1,\"ə\"],[400,1,\"ɛ\"],[401,1,\"ƒ\"],[402,2],[403,1,\"ɠ\"],[404,1,\"ɣ\"],[405,2],[406,1,\"ɩ\"],[407,1,\"ɨ\"],[408,1,\"ƙ\"],[[409,411],2],[412,1,\"ɯ\"],[413,1,\"ɲ\"],[414,2],[415,1,\"ɵ\"],[416,1,\"ơ\"],[417,2],[418,1,\"ƣ\"],[419,2],[420,1,\"ƥ\"],[421,2],[422,1,\"ʀ\"],[423,1,\"ƨ\"],[424,2],[425,1,\"ʃ\"],[[426,427],2],[428,1,\"ƭ\"],[429,2],[430,1,\"ʈ\"],[431,1,\"ư\"],[432,2],[433,1,\"ʊ\"],[434,1,\"ʋ\"],[435,1,\"ƴ\"],[436,2],[437,1,\"ƶ\"],[438,2],[439,1,\"ʒ\"],[440,1,\"ƹ\"],[[441,443],2],[444,1,\"ƽ\"],[[445,451],2],[[452,454],1,\"dž\"],[[455,457],1,\"lj\"],[[458,460],1,\"nj\"],[461,1,\"ǎ\"],[462,2],[463,1,\"ǐ\"],[464,2],[465,1,\"ǒ\"],[466,2],[467,1,\"ǔ\"],[468,2],[469,1,\"ǖ\"],[470,2],[471,1,\"ǘ\"],[472,2],[473,1,\"ǚ\"],[474,2],[475,1,\"ǜ\"],[[476,477],2],[478,1,\"ǟ\"],[479,2],[480,1,\"ǡ\"],[481,2],[482,1,\"ǣ\"],[483,2],[484,1,\"ǥ\"],[485,2],[486,1,\"ǧ\"],[487,2],[488,1,\"ǩ\"],[489,2],[490,1,\"ǫ\"],[491,2],[492,1,\"ǭ\"],[493,2],[494,1,\"ǯ\"],[[495,496],2],[[497,499],1,\"dz\"],[500,1,\"ǵ\"],[501,2],[502,1,\"ƕ\"],[503,1,\"ƿ\"],[504,1,\"ǹ\"],[505,2],[506,1,\"ǻ\"],[507,2],[508,1,\"ǽ\"],[509,2],[510,1,\"ǿ\"],[511,2],[512,1,\"ȁ\"],[513,2],[514,1,\"ȃ\"],[515,2],[516,1,\"ȅ\"],[517,2],[518,1,\"ȇ\"],[519,2],[520,1,\"ȉ\"],[521,2],[522,1,\"ȋ\"],[523,2],[524,1,\"ȍ\"],[525,2],[526,1,\"ȏ\"],[527,2],[528,1,\"ȑ\"],[529,2],[530,1,\"ȓ\"],[531,2],[532,1,\"ȕ\"],[533,2],[534,1,\"ȗ\"],[535,2],[536,1,\"ș\"],[537,2],[538,1,\"ț\"],[539,2],[540,1,\"ȝ\"],[541,2],[542,1,\"ȟ\"],[543,2],[544,1,\"ƞ\"],[545,2],[546,1,\"ȣ\"],[547,2],[548,1,\"ȥ\"],[549,2],[550,1,\"ȧ\"],[551,2],[552,1,\"ȩ\"],[553,2],[554,1,\"ȫ\"],[555,2],[556,1,\"ȭ\"],[557,2],[558,1,\"ȯ\"],[559,2],[560,1,\"ȱ\"],[561,2],[562,1,\"ȳ\"],[563,2],[[564,566],2],[[567,569],2],[570,1,\"ⱥ\"],[571,1,\"ȼ\"],[572,2],[573,1,\"ƚ\"],[574,1,\"ⱦ\"],[[575,576],2],[577,1,\"ɂ\"],[578,2],[579,1,\"ƀ\"],[580,1,\"ʉ\"],[581,1,\"ʌ\"],[582,1,\"ɇ\"],[583,2],[584,1,\"ɉ\"],[585,2],[586,1,\"ɋ\"],[587,2],[588,1,\"ɍ\"],[589,2],[590,1,\"ɏ\"],[591,2],[[592,680],2],[[681,685],2],[[686,687],2],[688,1,\"h\"],[689,1,\"ɦ\"],[690,1,\"j\"],[691,1,\"r\"],[692,1,\"ɹ\"],[693,1,\"ɻ\"],[694,1,\"ʁ\"],[695,1,\"w\"],[696,1,\"y\"],[[697,705],2],[[706,709],2],[[710,721],2],[[722,727],2],[728,1,\" ̆\"],[729,1,\" ̇\"],[730,1,\" ̊\"],[731,1,\" ̨\"],[732,1,\" ̃\"],[733,1,\" ̋\"],[734,2],[735,2],[736,1,\"ɣ\"],[737,1,\"l\"],[738,1,\"s\"],[739,1,\"x\"],[740,1,\"ʕ\"],[[741,745],2],[[746,747],2],[748,2],[749,2],[750,2],[[751,767],2],[[768,831],2],[832,1,\"̀\"],[833,1,\"́\"],[834,2],[835,1,\"̓\"],[836,1,\"̈́\"],[837,1,\"ι\"],[[838,846],2],[847,7],[[848,855],2],[[856,860],2],[[861,863],2],[[864,865],2],[866,2],[[867,879],2],[880,1,\"ͱ\"],[881,2],[882,1,\"ͳ\"],[883,2],[884,1,\"ʹ\"],[885,2],[886,1,\"ͷ\"],[887,2],[[888,889],3],[890,1,\" ι\"],[[891,893],2],[894,1,\";\"],[895,1,\"ϳ\"],[[896,899],3],[900,1,\" ́\"],[901,1,\" ̈́\"],[902,1,\"ά\"],[903,1,\"·\"],[904,1,\"έ\"],[905,1,\"ή\"],[906,1,\"ί\"],[907,3],[908,1,\"ό\"],[909,3],[910,1,\"ύ\"],[911,1,\"ώ\"],[912,2],[913,1,\"α\"],[914,1,\"β\"],[915,1,\"γ\"],[916,1,\"δ\"],[917,1,\"ε\"],[918,1,\"ζ\"],[919,1,\"η\"],[920,1,\"θ\"],[921,1,\"ι\"],[922,1,\"κ\"],[923,1,\"λ\"],[924,1,\"μ\"],[925,1,\"ν\"],[926,1,\"ξ\"],[927,1,\"ο\"],[928,1,\"π\"],[929,1,\"ρ\"],[930,3],[931,1,\"σ\"],[932,1,\"τ\"],[933,1,\"υ\"],[934,1,\"φ\"],[935,1,\"χ\"],[936,1,\"ψ\"],[937,1,\"ω\"],[938,1,\"ϊ\"],[939,1,\"ϋ\"],[[940,961],2],[962,6,\"σ\"],[[963,974],2],[975,1,\"ϗ\"],[976,1,\"β\"],[977,1,\"θ\"],[978,1,\"υ\"],[979,1,\"ύ\"],[980,1,\"ϋ\"],[981,1,\"φ\"],[982,1,\"π\"],[983,2],[984,1,\"ϙ\"],[985,2],[986,1,\"ϛ\"],[987,2],[988,1,\"ϝ\"],[989,2],[990,1,\"ϟ\"],[991,2],[992,1,\"ϡ\"],[993,2],[994,1,\"ϣ\"],[995,2],[996,1,\"ϥ\"],[997,2],[998,1,\"ϧ\"],[999,2],[1000,1,\"ϩ\"],[1001,2],[1002,1,\"ϫ\"],[1003,2],[1004,1,\"ϭ\"],[1005,2],[1006,1,\"ϯ\"],[1007,2],[1008,1,\"κ\"],[1009,1,\"ρ\"],[1010,1,\"σ\"],[1011,2],[1012,1,\"θ\"],[1013,1,\"ε\"],[1014,2],[1015,1,\"ϸ\"],[1016,2],[1017,1,\"σ\"],[1018,1,\"ϻ\"],[1019,2],[1020,2],[1021,1,\"ͻ\"],[1022,1,\"ͼ\"],[1023,1,\"ͽ\"],[1024,1,\"ѐ\"],[1025,1,\"ё\"],[1026,1,\"ђ\"],[1027,1,\"ѓ\"],[1028,1,\"є\"],[1029,1,\"ѕ\"],[1030,1,\"і\"],[1031,1,\"ї\"],[1032,1,\"ј\"],[1033,1,\"љ\"],[1034,1,\"њ\"],[1035,1,\"ћ\"],[1036,1,\"ќ\"],[1037,1,\"ѝ\"],[1038,1,\"ў\"],[1039,1,\"џ\"],[1040,1,\"а\"],[1041,1,\"б\"],[1042,1,\"в\"],[1043,1,\"г\"],[1044,1,\"д\"],[1045,1,\"е\"],[1046,1,\"ж\"],[1047,1,\"з\"],[1048,1,\"и\"],[1049,1,\"й\"],[1050,1,\"к\"],[1051,1,\"л\"],[1052,1,\"м\"],[1053,1,\"н\"],[1054,1,\"о\"],[1055,1,\"п\"],[1056,1,\"р\"],[1057,1,\"с\"],[1058,1,\"т\"],[1059,1,\"у\"],[1060,1,\"ф\"],[1061,1,\"х\"],[1062,1,\"ц\"],[1063,1,\"ч\"],[1064,1,\"ш\"],[1065,1,\"щ\"],[1066,1,\"ъ\"],[1067,1,\"ы\"],[1068,1,\"ь\"],[1069,1,\"э\"],[1070,1,\"ю\"],[1071,1,\"я\"],[[1072,1103],2],[1104,2],[[1105,1116],2],[1117,2],[[1118,1119],2],[1120,1,\"ѡ\"],[1121,2],[1122,1,\"ѣ\"],[1123,2],[1124,1,\"ѥ\"],[1125,2],[1126,1,\"ѧ\"],[1127,2],[1128,1,\"ѩ\"],[1129,2],[1130,1,\"ѫ\"],[1131,2],[1132,1,\"ѭ\"],[1133,2],[1134,1,\"ѯ\"],[1135,2],[1136,1,\"ѱ\"],[1137,2],[1138,1,\"ѳ\"],[1139,2],[1140,1,\"ѵ\"],[1141,2],[1142,1,\"ѷ\"],[1143,2],[1144,1,\"ѹ\"],[1145,2],[1146,1,\"ѻ\"],[1147,2],[1148,1,\"ѽ\"],[1149,2],[1150,1,\"ѿ\"],[1151,2],[1152,1,\"ҁ\"],[1153,2],[1154,2],[[1155,1158],2],[1159,2],[[1160,1161],2],[1162,1,\"ҋ\"],[1163,2],[1164,1,\"ҍ\"],[1165,2],[1166,1,\"ҏ\"],[1167,2],[1168,1,\"ґ\"],[1169,2],[1170,1,\"ғ\"],[1171,2],[1172,1,\"ҕ\"],[1173,2],[1174,1,\"җ\"],[1175,2],[1176,1,\"ҙ\"],[1177,2],[1178,1,\"қ\"],[1179,2],[1180,1,\"ҝ\"],[1181,2],[1182,1,\"ҟ\"],[1183,2],[1184,1,\"ҡ\"],[1185,2],[1186,1,\"ң\"],[1187,2],[1188,1,\"ҥ\"],[1189,2],[1190,1,\"ҧ\"],[1191,2],[1192,1,\"ҩ\"],[1193,2],[1194,1,\"ҫ\"],[1195,2],[1196,1,\"ҭ\"],[1197,2],[1198,1,\"ү\"],[1199,2],[1200,1,\"ұ\"],[1201,2],[1202,1,\"ҳ\"],[1203,2],[1204,1,\"ҵ\"],[1205,2],[1206,1,\"ҷ\"],[1207,2],[1208,1,\"ҹ\"],[1209,2],[1210,1,\"һ\"],[1211,2],[1212,1,\"ҽ\"],[1213,2],[1214,1,\"ҿ\"],[1215,2],[1216,1,\"ӏ\"],[1217,1,\"ӂ\"],[1218,2],[1219,1,\"ӄ\"],[1220,2],[1221,1,\"ӆ\"],[1222,2],[1223,1,\"ӈ\"],[1224,2],[1225,1,\"ӊ\"],[1226,2],[1227,1,\"ӌ\"],[1228,2],[1229,1,\"ӎ\"],[1230,2],[1231,2],[1232,1,\"ӑ\"],[1233,2],[1234,1,\"ӓ\"],[1235,2],[1236,1,\"ӕ\"],[1237,2],[1238,1,\"ӗ\"],[1239,2],[1240,1,\"ә\"],[1241,2],[1242,1,\"ӛ\"],[1243,2],[1244,1,\"ӝ\"],[1245,2],[1246,1,\"ӟ\"],[1247,2],[1248,1,\"ӡ\"],[1249,2],[1250,1,\"ӣ\"],[1251,2],[1252,1,\"ӥ\"],[1253,2],[1254,1,\"ӧ\"],[1255,2],[1256,1,\"ө\"],[1257,2],[1258,1,\"ӫ\"],[1259,2],[1260,1,\"ӭ\"],[1261,2],[1262,1,\"ӯ\"],[1263,2],[1264,1,\"ӱ\"],[1265,2],[1266,1,\"ӳ\"],[1267,2],[1268,1,\"ӵ\"],[1269,2],[1270,1,\"ӷ\"],[1271,2],[1272,1,\"ӹ\"],[1273,2],[1274,1,\"ӻ\"],[1275,2],[1276,1,\"ӽ\"],[1277,2],[1278,1,\"ӿ\"],[1279,2],[1280,1,\"ԁ\"],[1281,2],[1282,1,\"ԃ\"],[1283,2],[1284,1,\"ԅ\"],[1285,2],[1286,1,\"ԇ\"],[1287,2],[1288,1,\"ԉ\"],[1289,2],[1290,1,\"ԋ\"],[1291,2],[1292,1,\"ԍ\"],[1293,2],[1294,1,\"ԏ\"],[1295,2],[1296,1,\"ԑ\"],[1297,2],[1298,1,\"ԓ\"],[1299,2],[1300,1,\"ԕ\"],[1301,2],[1302,1,\"ԗ\"],[1303,2],[1304,1,\"ԙ\"],[1305,2],[1306,1,\"ԛ\"],[1307,2],[1308,1,\"ԝ\"],[1309,2],[1310,1,\"ԟ\"],[1311,2],[1312,1,\"ԡ\"],[1313,2],[1314,1,\"ԣ\"],[1315,2],[1316,1,\"ԥ\"],[1317,2],[1318,1,\"ԧ\"],[1319,2],[1320,1,\"ԩ\"],[1321,2],[1322,1,\"ԫ\"],[1323,2],[1324,1,\"ԭ\"],[1325,2],[1326,1,\"ԯ\"],[1327,2],[1328,3],[1329,1,\"ա\"],[1330,1,\"բ\"],[1331,1,\"գ\"],[1332,1,\"դ\"],[1333,1,\"ե\"],[1334,1,\"զ\"],[1335,1,\"է\"],[1336,1,\"ը\"],[1337,1,\"թ\"],[1338,1,\"ժ\"],[1339,1,\"ի\"],[1340,1,\"լ\"],[1341,1,\"խ\"],[1342,1,\"ծ\"],[1343,1,\"կ\"],[1344,1,\"հ\"],[1345,1,\"ձ\"],[1346,1,\"ղ\"],[1347,1,\"ճ\"],[1348,1,\"մ\"],[1349,1,\"յ\"],[1350,1,\"ն\"],[1351,1,\"շ\"],[1352,1,\"ո\"],[1353,1,\"չ\"],[1354,1,\"պ\"],[1355,1,\"ջ\"],[1356,1,\"ռ\"],[1357,1,\"ս\"],[1358,1,\"վ\"],[1359,1,\"տ\"],[1360,1,\"ր\"],[1361,1,\"ց\"],[1362,1,\"ւ\"],[1363,1,\"փ\"],[1364,1,\"ք\"],[1365,1,\"օ\"],[1366,1,\"ֆ\"],[[1367,1368],3],[1369,2],[[1370,1375],2],[1376,2],[[1377,1414],2],[1415,1,\"եւ\"],[1416,2],[1417,2],[1418,2],[[1419,1420],3],[[1421,1422],2],[1423,2],[1424,3],[[1425,1441],2],[1442,2],[[1443,1455],2],[[1456,1465],2],[1466,2],[[1467,1469],2],[1470,2],[1471,2],[1472,2],[[1473,1474],2],[1475,2],[1476,2],[1477,2],[1478,2],[1479,2],[[1480,1487],3],[[1488,1514],2],[[1515,1518],3],[1519,2],[[1520,1524],2],[[1525,1535],3],[[1536,1539],3],[1540,3],[1541,3],[[1542,1546],2],[1547,2],[1548,2],[[1549,1551],2],[[1552,1557],2],[[1558,1562],2],[1563,2],[1564,3],[1565,2],[1566,2],[1567,2],[1568,2],[[1569,1594],2],[[1595,1599],2],[1600,2],[[1601,1618],2],[[1619,1621],2],[[1622,1624],2],[[1625,1630],2],[1631,2],[[1632,1641],2],[[1642,1645],2],[[1646,1647],2],[[1648,1652],2],[1653,1,\"اٴ\"],[1654,1,\"وٴ\"],[1655,1,\"ۇٴ\"],[1656,1,\"يٴ\"],[[1657,1719],2],[[1720,1721],2],[[1722,1726],2],[1727,2],[[1728,1742],2],[1743,2],[[1744,1747],2],[1748,2],[[1749,1756],2],[1757,3],[1758,2],[[1759,1768],2],[1769,2],[[1770,1773],2],[[1774,1775],2],[[1776,1785],2],[[1786,1790],2],[1791,2],[[1792,1805],2],[1806,3],[1807,3],[[1808,1836],2],[[1837,1839],2],[[1840,1866],2],[[1867,1868],3],[[1869,1871],2],[[1872,1901],2],[[1902,1919],2],[[1920,1968],2],[1969,2],[[1970,1983],3],[[1984,2037],2],[[2038,2042],2],[[2043,2044],3],[2045,2],[[2046,2047],2],[[2048,2093],2],[[2094,2095],3],[[2096,2110],2],[2111,3],[[2112,2139],2],[[2140,2141],3],[2142,2],[2143,3],[[2144,2154],2],[[2155,2159],3],[[2160,2183],2],[2184,2],[[2185,2190],2],[2191,3],[[2192,2193],3],[[2194,2198],3],[2199,2],[[2200,2207],2],[2208,2],[2209,2],[[2210,2220],2],[[2221,2226],2],[[2227,2228],2],[2229,2],[[2230,2237],2],[[2238,2247],2],[[2248,2258],2],[2259,2],[[2260,2273],2],[2274,3],[2275,2],[[2276,2302],2],[2303,2],[2304,2],[[2305,2307],2],[2308,2],[[2309,2361],2],[[2362,2363],2],[[2364,2381],2],[2382,2],[2383,2],[[2384,2388],2],[2389,2],[[2390,2391],2],[2392,1,\"क़\"],[2393,1,\"ख़\"],[2394,1,\"ग़\"],[2395,1,\"ज़\"],[2396,1,\"ड़\"],[2397,1,\"ढ़\"],[2398,1,\"फ़\"],[2399,1,\"य़\"],[[2400,2403],2],[[2404,2405],2],[[2406,2415],2],[2416,2],[[2417,2418],2],[[2419,2423],2],[2424,2],[[2425,2426],2],[[2427,2428],2],[2429,2],[[2430,2431],2],[2432,2],[[2433,2435],2],[2436,3],[[2437,2444],2],[[2445,2446],3],[[2447,2448],2],[[2449,2450],3],[[2451,2472],2],[2473,3],[[2474,2480],2],[2481,3],[2482,2],[[2483,2485],3],[[2486,2489],2],[[2490,2491],3],[2492,2],[2493,2],[[2494,2500],2],[[2501,2502],3],[[2503,2504],2],[[2505,2506],3],[[2507,2509],2],[2510,2],[[2511,2518],3],[2519,2],[[2520,2523],3],[2524,1,\"ড়\"],[2525,1,\"ঢ়\"],[2526,3],[2527,1,\"য়\"],[[2528,2531],2],[[2532,2533],3],[[2534,2545],2],[[2546,2554],2],[2555,2],[2556,2],[2557,2],[2558,2],[[2559,2560],3],[2561,2],[2562,2],[2563,2],[2564,3],[[2565,2570],2],[[2571,2574],3],[[2575,2576],2],[[2577,2578],3],[[2579,2600],2],[2601,3],[[2602,2608],2],[2609,3],[2610,2],[2611,1,\"ਲ਼\"],[2612,3],[2613,2],[2614,1,\"ਸ਼\"],[2615,3],[[2616,2617],2],[[2618,2619],3],[2620,2],[2621,3],[[2622,2626],2],[[2627,2630],3],[[2631,2632],2],[[2633,2634],3],[[2635,2637],2],[[2638,2640],3],[2641,2],[[2642,2648],3],[2649,1,\"ਖ਼\"],[2650,1,\"ਗ਼\"],[2651,1,\"ਜ਼\"],[2652,2],[2653,3],[2654,1,\"ਫ਼\"],[[2655,2661],3],[[2662,2676],2],[2677,2],[2678,2],[[2679,2688],3],[[2689,2691],2],[2692,3],[[2693,2699],2],[2700,2],[2701,2],[2702,3],[[2703,2705],2],[2706,3],[[2707,2728],2],[2729,3],[[2730,2736],2],[2737,3],[[2738,2739],2],[2740,3],[[2741,2745],2],[[2746,2747],3],[[2748,2757],2],[2758,3],[[2759,2761],2],[2762,3],[[2763,2765],2],[[2766,2767],3],[2768,2],[[2769,2783],3],[2784,2],[[2785,2787],2],[[2788,2789],3],[[2790,2799],2],[2800,2],[2801,2],[[2802,2808],3],[2809,2],[[2810,2815],2],[2816,3],[[2817,2819],2],[2820,3],[[2821,2828],2],[[2829,2830],3],[[2831,2832],2],[[2833,2834],3],[[2835,2856],2],[2857,3],[[2858,2864],2],[2865,3],[[2866,2867],2],[2868,3],[2869,2],[[2870,2873],2],[[2874,2875],3],[[2876,2883],2],[2884,2],[[2885,2886],3],[[2887,2888],2],[[2889,2890],3],[[2891,2893],2],[[2894,2900],3],[2901,2],[[2902,2903],2],[[2904,2907],3],[2908,1,\"ଡ଼\"],[2909,1,\"ଢ଼\"],[2910,3],[[2911,2913],2],[[2914,2915],2],[[2916,2917],3],[[2918,2927],2],[2928,2],[2929,2],[[2930,2935],2],[[2936,2945],3],[[2946,2947],2],[2948,3],[[2949,2954],2],[[2955,2957],3],[[2958,2960],2],[2961,3],[[2962,2965],2],[[2966,2968],3],[[2969,2970],2],[2971,3],[2972,2],[2973,3],[[2974,2975],2],[[2976,2978],3],[[2979,2980],2],[[2981,2983],3],[[2984,2986],2],[[2987,2989],3],[[2990,2997],2],[2998,2],[[2999,3001],2],[[3002,3005],3],[[3006,3010],2],[[3011,3013],3],[[3014,3016],2],[3017,3],[[3018,3021],2],[[3022,3023],3],[3024,2],[[3025,3030],3],[3031,2],[[3032,3045],3],[3046,2],[[3047,3055],2],[[3056,3058],2],[[3059,3066],2],[[3067,3071],3],[3072,2],[[3073,3075],2],[3076,2],[[3077,3084],2],[3085,3],[[3086,3088],2],[3089,3],[[3090,3112],2],[3113,3],[[3114,3123],2],[3124,2],[[3125,3129],2],[[3130,3131],3],[3132,2],[3133,2],[[3134,3140],2],[3141,3],[[3142,3144],2],[3145,3],[[3146,3149],2],[[3150,3156],3],[[3157,3158],2],[3159,3],[[3160,3161],2],[3162,2],[[3163,3164],3],[3165,2],[[3166,3167],3],[[3168,3169],2],[[3170,3171],2],[[3172,3173],3],[[3174,3183],2],[[3184,3190],3],[3191,2],[[3192,3199],2],[3200,2],[3201,2],[[3202,3203],2],[3204,2],[[3205,3212],2],[3213,3],[[3214,3216],2],[3217,3],[[3218,3240],2],[3241,3],[[3242,3251],2],[3252,3],[[3253,3257],2],[[3258,3259],3],[[3260,3261],2],[[3262,3268],2],[3269,3],[[3270,3272],2],[3273,3],[[3274,3277],2],[[3278,3284],3],[[3285,3286],2],[[3287,3292],3],[3293,2],[3294,2],[3295,3],[[3296,3297],2],[[3298,3299],2],[[3300,3301],3],[[3302,3311],2],[3312,3],[[3313,3314],2],[3315,2],[[3316,3327],3],[3328,2],[3329,2],[[3330,3331],2],[3332,2],[[3333,3340],2],[3341,3],[[3342,3344],2],[3345,3],[[3346,3368],2],[3369,2],[[3370,3385],2],[3386,2],[[3387,3388],2],[3389,2],[[3390,3395],2],[3396,2],[3397,3],[[3398,3400],2],[3401,3],[[3402,3405],2],[3406,2],[3407,2],[[3408,3411],3],[[3412,3414],2],[3415,2],[[3416,3422],2],[3423,2],[[3424,3425],2],[[3426,3427],2],[[3428,3429],3],[[3430,3439],2],[[3440,3445],2],[[3446,3448],2],[3449,2],[[3450,3455],2],[3456,3],[3457,2],[[3458,3459],2],[3460,3],[[3461,3478],2],[[3479,3481],3],[[3482,3505],2],[3506,3],[[3507,3515],2],[3516,3],[3517,2],[[3518,3519],3],[[3520,3526],2],[[3527,3529],3],[3530,2],[[3531,3534],3],[[3535,3540],2],[3541,3],[3542,2],[3543,3],[[3544,3551],2],[[3552,3557],3],[[3558,3567],2],[[3568,3569],3],[[3570,3571],2],[3572,2],[[3573,3584],3],[[3585,3634],2],[3635,1,\"ํา\"],[[3636,3642],2],[[3643,3646],3],[3647,2],[[3648,3662],2],[3663,2],[[3664,3673],2],[[3674,3675],2],[[3676,3712],3],[[3713,3714],2],[3715,3],[3716,2],[3717,3],[3718,2],[[3719,3720],2],[3721,2],[3722,2],[3723,3],[3724,2],[3725,2],[[3726,3731],2],[[3732,3735],2],[3736,2],[[3737,3743],2],[3744,2],[[3745,3747],2],[3748,3],[3749,2],[3750,3],[3751,2],[[3752,3753],2],[[3754,3755],2],[3756,2],[[3757,3762],2],[3763,1,\"ໍາ\"],[[3764,3769],2],[3770,2],[[3771,3773],2],[[3774,3775],3],[[3776,3780],2],[3781,3],[3782,2],[3783,3],[[3784,3789],2],[3790,2],[3791,3],[[3792,3801],2],[[3802,3803],3],[3804,1,\"ຫນ\"],[3805,1,\"ຫມ\"],[[3806,3807],2],[[3808,3839],3],[3840,2],[[3841,3850],2],[3851,2],[3852,1,\"་\"],[[3853,3863],2],[[3864,3865],2],[[3866,3871],2],[[3872,3881],2],[[3882,3892],2],[3893,2],[3894,2],[3895,2],[3896,2],[3897,2],[[3898,3901],2],[[3902,3906],2],[3907,1,\"གྷ\"],[[3908,3911],2],[3912,3],[[3913,3916],2],[3917,1,\"ཌྷ\"],[[3918,3921],2],[3922,1,\"དྷ\"],[[3923,3926],2],[3927,1,\"བྷ\"],[[3928,3931],2],[3932,1,\"ཛྷ\"],[[3933,3944],2],[3945,1,\"ཀྵ\"],[3946,2],[[3947,3948],2],[[3949,3952],3],[[3953,3954],2],[3955,1,\"ཱི\"],[3956,2],[3957,1,\"ཱུ\"],[3958,1,\"ྲྀ\"],[3959,1,\"ྲཱྀ\"],[3960,1,\"ླྀ\"],[3961,1,\"ླཱྀ\"],[[3962,3968],2],[3969,1,\"ཱྀ\"],[[3970,3972],2],[3973,2],[[3974,3979],2],[[3980,3983],2],[[3984,3986],2],[3987,1,\"ྒྷ\"],[[3988,3989],2],[3990,2],[3991,2],[3992,3],[[3993,3996],2],[3997,1,\"ྜྷ\"],[[3998,4001],2],[4002,1,\"ྡྷ\"],[[4003,4006],2],[4007,1,\"ྦྷ\"],[[4008,4011],2],[4012,1,\"ྫྷ\"],[4013,2],[[4014,4016],2],[[4017,4023],2],[4024,2],[4025,1,\"ྐྵ\"],[[4026,4028],2],[4029,3],[[4030,4037],2],[4038,2],[[4039,4044],2],[4045,3],[4046,2],[4047,2],[[4048,4049],2],[[4050,4052],2],[[4053,4056],2],[[4057,4058],2],[[4059,4095],3],[[4096,4129],2],[4130,2],[[4131,4135],2],[4136,2],[[4137,4138],2],[4139,2],[[4140,4146],2],[[4147,4149],2],[[4150,4153],2],[[4154,4159],2],[[4160,4169],2],[[4170,4175],2],[[4176,4185],2],[[4186,4249],2],[[4250,4253],2],[[4254,4255],2],[4256,1,\"ⴀ\"],[4257,1,\"ⴁ\"],[4258,1,\"ⴂ\"],[4259,1,\"ⴃ\"],[4260,1,\"ⴄ\"],[4261,1,\"ⴅ\"],[4262,1,\"ⴆ\"],[4263,1,\"ⴇ\"],[4264,1,\"ⴈ\"],[4265,1,\"ⴉ\"],[4266,1,\"ⴊ\"],[4267,1,\"ⴋ\"],[4268,1,\"ⴌ\"],[4269,1,\"ⴍ\"],[4270,1,\"ⴎ\"],[4271,1,\"ⴏ\"],[4272,1,\"ⴐ\"],[4273,1,\"ⴑ\"],[4274,1,\"ⴒ\"],[4275,1,\"ⴓ\"],[4276,1,\"ⴔ\"],[4277,1,\"ⴕ\"],[4278,1,\"ⴖ\"],[4279,1,\"ⴗ\"],[4280,1,\"ⴘ\"],[4281,1,\"ⴙ\"],[4282,1,\"ⴚ\"],[4283,1,\"ⴛ\"],[4284,1,\"ⴜ\"],[4285,1,\"ⴝ\"],[4286,1,\"ⴞ\"],[4287,1,\"ⴟ\"],[4288,1,\"ⴠ\"],[4289,1,\"ⴡ\"],[4290,1,\"ⴢ\"],[4291,1,\"ⴣ\"],[4292,1,\"ⴤ\"],[4293,1,\"ⴥ\"],[4294,3],[4295,1,\"ⴧ\"],[[4296,4300],3],[4301,1,\"ⴭ\"],[[4302,4303],3],[[4304,4342],2],[[4343,4344],2],[[4345,4346],2],[4347,2],[4348,1,\"ნ\"],[[4349,4351],2],[[4352,4441],2],[[4442,4446],2],[[4447,4448],7],[[4449,4514],2],[[4515,4519],2],[[4520,4601],2],[[4602,4607],2],[[4608,4614],2],[4615,2],[[4616,4678],2],[4679,2],[4680,2],[4681,3],[[4682,4685],2],[[4686,4687],3],[[4688,4694],2],[4695,3],[4696,2],[4697,3],[[4698,4701],2],[[4702,4703],3],[[4704,4742],2],[4743,2],[4744,2],[4745,3],[[4746,4749],2],[[4750,4751],3],[[4752,4782],2],[4783,2],[4784,2],[4785,3],[[4786,4789],2],[[4790,4791],3],[[4792,4798],2],[4799,3],[4800,2],[4801,3],[[4802,4805],2],[[4806,4807],3],[[4808,4814],2],[4815,2],[[4816,4822],2],[4823,3],[[4824,4846],2],[4847,2],[[4848,4878],2],[4879,2],[4880,2],[4881,3],[[4882,4885],2],[[4886,4887],3],[[4888,4894],2],[4895,2],[[4896,4934],2],[4935,2],[[4936,4954],2],[[4955,4956],3],[[4957,4958],2],[4959,2],[4960,2],[[4961,4988],2],[[4989,4991],3],[[4992,5007],2],[[5008,5017],2],[[5018,5023],3],[[5024,5108],2],[5109,2],[[5110,5111],3],[5112,1,\"Ᏸ\"],[5113,1,\"Ᏹ\"],[5114,1,\"Ᏺ\"],[5115,1,\"Ᏻ\"],[5116,1,\"Ᏼ\"],[5117,1,\"Ᏽ\"],[[5118,5119],3],[5120,2],[[5121,5740],2],[[5741,5742],2],[[5743,5750],2],[[5751,5759],2],[5760,3],[[5761,5786],2],[[5787,5788],2],[[5789,5791],3],[[5792,5866],2],[[5867,5872],2],[[5873,5880],2],[[5881,5887],3],[[5888,5900],2],[5901,2],[[5902,5908],2],[5909,2],[[5910,5918],3],[5919,2],[[5920,5940],2],[[5941,5942],2],[[5943,5951],3],[[5952,5971],2],[[5972,5983],3],[[5984,5996],2],[5997,3],[[5998,6000],2],[6001,3],[[6002,6003],2],[[6004,6015],3],[[6016,6067],2],[[6068,6069],7],[[6070,6099],2],[[6100,6102],2],[6103,2],[[6104,6107],2],[6108,2],[6109,2],[[6110,6111],3],[[6112,6121],2],[[6122,6127],3],[[6128,6137],2],[[6138,6143],3],[[6144,6154],2],[[6155,6158],7],[6159,7],[[6160,6169],2],[[6170,6175],3],[[6176,6263],2],[6264,2],[[6265,6271],3],[[6272,6313],2],[6314,2],[[6315,6319],3],[[6320,6389],2],[[6390,6399],3],[[6400,6428],2],[[6429,6430],2],[6431,3],[[6432,6443],2],[[6444,6447],3],[[6448,6459],2],[[6460,6463],3],[6464,2],[[6465,6467],3],[[6468,6469],2],[[6470,6509],2],[[6510,6511],3],[[6512,6516],2],[[6517,6527],3],[[6528,6569],2],[[6570,6571],2],[[6572,6575],3],[[6576,6601],2],[[6602,6607],3],[[6608,6617],2],[6618,2],[[6619,6621],3],[[6622,6623],2],[[6624,6655],2],[[6656,6683],2],[[6684,6685],3],[[6686,6687],2],[[6688,6750],2],[6751,3],[[6752,6780],2],[[6781,6782],3],[[6783,6793],2],[[6794,6799],3],[[6800,6809],2],[[6810,6815],3],[[6816,6822],2],[6823,2],[[6824,6829],2],[[6830,6831],3],[[6832,6845],2],[6846,2],[[6847,6848],2],[[6849,6862],2],[[6863,6911],3],[[6912,6987],2],[6988,2],[6989,3],[[6990,6991],2],[[6992,7001],2],[[7002,7018],2],[[7019,7027],2],[[7028,7036],2],[[7037,7038],2],[7039,2],[[7040,7082],2],[[7083,7085],2],[[7086,7097],2],[[7098,7103],2],[[7104,7155],2],[[7156,7163],3],[[7164,7167],2],[[7168,7223],2],[[7224,7226],3],[[7227,7231],2],[[7232,7241],2],[[7242,7244],3],[[7245,7293],2],[[7294,7295],2],[7296,1,\"в\"],[7297,1,\"д\"],[7298,1,\"о\"],[7299,1,\"с\"],[[7300,7301],1,\"т\"],[7302,1,\"ъ\"],[7303,1,\"ѣ\"],[7304,1,\"ꙋ\"],[7305,1,\"ᲊ\"],[7306,2],[[7307,7311],3],[7312,1,\"ა\"],[7313,1,\"ბ\"],[7314,1,\"გ\"],[7315,1,\"დ\"],[7316,1,\"ე\"],[7317,1,\"ვ\"],[7318,1,\"ზ\"],[7319,1,\"თ\"],[7320,1,\"ი\"],[7321,1,\"კ\"],[7322,1,\"ლ\"],[7323,1,\"მ\"],[7324,1,\"ნ\"],[7325,1,\"ო\"],[7326,1,\"პ\"],[7327,1,\"ჟ\"],[7328,1,\"რ\"],[7329,1,\"ს\"],[7330,1,\"ტ\"],[7331,1,\"უ\"],[7332,1,\"ფ\"],[7333,1,\"ქ\"],[7334,1,\"ღ\"],[7335,1,\"ყ\"],[7336,1,\"შ\"],[7337,1,\"ჩ\"],[7338,1,\"ც\"],[7339,1,\"ძ\"],[7340,1,\"წ\"],[7341,1,\"ჭ\"],[7342,1,\"ხ\"],[7343,1,\"ჯ\"],[7344,1,\"ჰ\"],[7345,1,\"ჱ\"],[7346,1,\"ჲ\"],[7347,1,\"ჳ\"],[7348,1,\"ჴ\"],[7349,1,\"ჵ\"],[7350,1,\"ჶ\"],[7351,1,\"ჷ\"],[7352,1,\"ჸ\"],[7353,1,\"ჹ\"],[7354,1,\"ჺ\"],[[7355,7356],3],[7357,1,\"ჽ\"],[7358,1,\"ჾ\"],[7359,1,\"ჿ\"],[[7360,7367],2],[[7368,7375],3],[[7376,7378],2],[7379,2],[[7380,7410],2],[[7411,7414],2],[7415,2],[[7416,7417],2],[7418,2],[[7419,7423],3],[[7424,7467],2],[7468,1,\"a\"],[7469,1,\"æ\"],[7470,1,\"b\"],[7471,2],[7472,1,\"d\"],[7473,1,\"e\"],[7474,1,\"ǝ\"],[7475,1,\"g\"],[7476,1,\"h\"],[7477,1,\"i\"],[7478,1,\"j\"],[7479,1,\"k\"],[7480,1,\"l\"],[7481,1,\"m\"],[7482,1,\"n\"],[7483,2],[7484,1,\"o\"],[7485,1,\"ȣ\"],[7486,1,\"p\"],[7487,1,\"r\"],[7488,1,\"t\"],[7489,1,\"u\"],[7490,1,\"w\"],[7491,1,\"a\"],[7492,1,\"ɐ\"],[7493,1,\"ɑ\"],[7494,1,\"ᴂ\"],[7495,1,\"b\"],[7496,1,\"d\"],[7497,1,\"e\"],[7498,1,\"ə\"],[7499,1,\"ɛ\"],[7500,1,\"ɜ\"],[7501,1,\"g\"],[7502,2],[7503,1,\"k\"],[7504,1,\"m\"],[7505,1,\"ŋ\"],[7506,1,\"o\"],[7507,1,\"ɔ\"],[7508,1,\"ᴖ\"],[7509,1,\"ᴗ\"],[7510,1,\"p\"],[7511,1,\"t\"],[7512,1,\"u\"],[7513,1,\"ᴝ\"],[7514,1,\"ɯ\"],[7515,1,\"v\"],[7516,1,\"ᴥ\"],[7517,1,\"β\"],[7518,1,\"γ\"],[7519,1,\"δ\"],[7520,1,\"φ\"],[7521,1,\"χ\"],[7522,1,\"i\"],[7523,1,\"r\"],[7524,1,\"u\"],[7525,1,\"v\"],[7526,1,\"β\"],[7527,1,\"γ\"],[7528,1,\"ρ\"],[7529,1,\"φ\"],[7530,1,\"χ\"],[7531,2],[[7532,7543],2],[7544,1,\"н\"],[[7545,7578],2],[7579,1,\"ɒ\"],[7580,1,\"c\"],[7581,1,\"ɕ\"],[7582,1,\"ð\"],[7583,1,\"ɜ\"],[7584,1,\"f\"],[7585,1,\"ɟ\"],[7586,1,\"ɡ\"],[7587,1,\"ɥ\"],[7588,1,\"ɨ\"],[7589,1,\"ɩ\"],[7590,1,\"ɪ\"],[7591,1,\"ᵻ\"],[7592,1,\"ʝ\"],[7593,1,\"ɭ\"],[7594,1,\"ᶅ\"],[7595,1,\"ʟ\"],[7596,1,\"ɱ\"],[7597,1,\"ɰ\"],[7598,1,\"ɲ\"],[7599,1,\"ɳ\"],[7600,1,\"ɴ\"],[7601,1,\"ɵ\"],[7602,1,\"ɸ\"],[7603,1,\"ʂ\"],[7604,1,\"ʃ\"],[7605,1,\"ƫ\"],[7606,1,\"ʉ\"],[7607,1,\"ʊ\"],[7608,1,\"ᴜ\"],[7609,1,\"ʋ\"],[7610,1,\"ʌ\"],[7611,1,\"z\"],[7612,1,\"ʐ\"],[7613,1,\"ʑ\"],[7614,1,\"ʒ\"],[7615,1,\"θ\"],[[7616,7619],2],[[7620,7626],2],[[7627,7654],2],[[7655,7669],2],[[7670,7673],2],[7674,2],[7675,2],[7676,2],[7677,2],[[7678,7679],2],[7680,1,\"ḁ\"],[7681,2],[7682,1,\"ḃ\"],[7683,2],[7684,1,\"ḅ\"],[7685,2],[7686,1,\"ḇ\"],[7687,2],[7688,1,\"ḉ\"],[7689,2],[7690,1,\"ḋ\"],[7691,2],[7692,1,\"ḍ\"],[7693,2],[7694,1,\"ḏ\"],[7695,2],[7696,1,\"ḑ\"],[7697,2],[7698,1,\"ḓ\"],[7699,2],[7700,1,\"ḕ\"],[7701,2],[7702,1,\"ḗ\"],[7703,2],[7704,1,\"ḙ\"],[7705,2],[7706,1,\"ḛ\"],[7707,2],[7708,1,\"ḝ\"],[7709,2],[7710,1,\"ḟ\"],[7711,2],[7712,1,\"ḡ\"],[7713,2],[7714,1,\"ḣ\"],[7715,2],[7716,1,\"ḥ\"],[7717,2],[7718,1,\"ḧ\"],[7719,2],[7720,1,\"ḩ\"],[7721,2],[7722,1,\"ḫ\"],[7723,2],[7724,1,\"ḭ\"],[7725,2],[7726,1,\"ḯ\"],[7727,2],[7728,1,\"ḱ\"],[7729,2],[7730,1,\"ḳ\"],[7731,2],[7732,1,\"ḵ\"],[7733,2],[7734,1,\"ḷ\"],[7735,2],[7736,1,\"ḹ\"],[7737,2],[7738,1,\"ḻ\"],[7739,2],[7740,1,\"ḽ\"],[7741,2],[7742,1,\"ḿ\"],[7743,2],[7744,1,\"ṁ\"],[7745,2],[7746,1,\"ṃ\"],[7747,2],[7748,1,\"ṅ\"],[7749,2],[7750,1,\"ṇ\"],[7751,2],[7752,1,\"ṉ\"],[7753,2],[7754,1,\"ṋ\"],[7755,2],[7756,1,\"ṍ\"],[7757,2],[7758,1,\"ṏ\"],[7759,2],[7760,1,\"ṑ\"],[7761,2],[7762,1,\"ṓ\"],[7763,2],[7764,1,\"ṕ\"],[7765,2],[7766,1,\"ṗ\"],[7767,2],[7768,1,\"ṙ\"],[7769,2],[7770,1,\"ṛ\"],[7771,2],[7772,1,\"ṝ\"],[7773,2],[7774,1,\"ṟ\"],[7775,2],[7776,1,\"ṡ\"],[7777,2],[7778,1,\"ṣ\"],[7779,2],[7780,1,\"ṥ\"],[7781,2],[7782,1,\"ṧ\"],[7783,2],[7784,1,\"ṩ\"],[7785,2],[7786,1,\"ṫ\"],[7787,2],[7788,1,\"ṭ\"],[7789,2],[7790,1,\"ṯ\"],[7791,2],[7792,1,\"ṱ\"],[7793,2],[7794,1,\"ṳ\"],[7795,2],[7796,1,\"ṵ\"],[7797,2],[7798,1,\"ṷ\"],[7799,2],[7800,1,\"ṹ\"],[7801,2],[7802,1,\"ṻ\"],[7803,2],[7804,1,\"ṽ\"],[7805,2],[7806,1,\"ṿ\"],[7807,2],[7808,1,\"ẁ\"],[7809,2],[7810,1,\"ẃ\"],[7811,2],[7812,1,\"ẅ\"],[7813,2],[7814,1,\"ẇ\"],[7815,2],[7816,1,\"ẉ\"],[7817,2],[7818,1,\"ẋ\"],[7819,2],[7820,1,\"ẍ\"],[7821,2],[7822,1,\"ẏ\"],[7823,2],[7824,1,\"ẑ\"],[7825,2],[7826,1,\"ẓ\"],[7827,2],[7828,1,\"ẕ\"],[[7829,7833],2],[7834,1,\"aʾ\"],[7835,1,\"ṡ\"],[[7836,7837],2],[7838,1,\"ß\"],[7839,2],[7840,1,\"ạ\"],[7841,2],[7842,1,\"ả\"],[7843,2],[7844,1,\"ấ\"],[7845,2],[7846,1,\"ầ\"],[7847,2],[7848,1,\"ẩ\"],[7849,2],[7850,1,\"ẫ\"],[7851,2],[7852,1,\"ậ\"],[7853,2],[7854,1,\"ắ\"],[7855,2],[7856,1,\"ằ\"],[7857,2],[7858,1,\"ẳ\"],[7859,2],[7860,1,\"ẵ\"],[7861,2],[7862,1,\"ặ\"],[7863,2],[7864,1,\"ẹ\"],[7865,2],[7866,1,\"ẻ\"],[7867,2],[7868,1,\"ẽ\"],[7869,2],[7870,1,\"ế\"],[7871,2],[7872,1,\"ề\"],[7873,2],[7874,1,\"ể\"],[7875,2],[7876,1,\"ễ\"],[7877,2],[7878,1,\"ệ\"],[7879,2],[7880,1,\"ỉ\"],[7881,2],[7882,1,\"ị\"],[7883,2],[7884,1,\"ọ\"],[7885,2],[7886,1,\"ỏ\"],[7887,2],[7888,1,\"ố\"],[7889,2],[7890,1,\"ồ\"],[7891,2],[7892,1,\"ổ\"],[7893,2],[7894,1,\"ỗ\"],[7895,2],[7896,1,\"ộ\"],[7897,2],[7898,1,\"ớ\"],[7899,2],[7900,1,\"ờ\"],[7901,2],[7902,1,\"ở\"],[7903,2],[7904,1,\"ỡ\"],[7905,2],[7906,1,\"ợ\"],[7907,2],[7908,1,\"ụ\"],[7909,2],[7910,1,\"ủ\"],[7911,2],[7912,1,\"ứ\"],[7913,2],[7914,1,\"ừ\"],[7915,2],[7916,1,\"ử\"],[7917,2],[7918,1,\"ữ\"],[7919,2],[7920,1,\"ự\"],[7921,2],[7922,1,\"ỳ\"],[7923,2],[7924,1,\"ỵ\"],[7925,2],[7926,1,\"ỷ\"],[7927,2],[7928,1,\"ỹ\"],[7929,2],[7930,1,\"ỻ\"],[7931,2],[7932,1,\"ỽ\"],[7933,2],[7934,1,\"ỿ\"],[7935,2],[[7936,7943],2],[7944,1,\"ἀ\"],[7945,1,\"ἁ\"],[7946,1,\"ἂ\"],[7947,1,\"ἃ\"],[7948,1,\"ἄ\"],[7949,1,\"ἅ\"],[7950,1,\"ἆ\"],[7951,1,\"ἇ\"],[[7952,7957],2],[[7958,7959],3],[7960,1,\"ἐ\"],[7961,1,\"ἑ\"],[7962,1,\"ἒ\"],[7963,1,\"ἓ\"],[7964,1,\"ἔ\"],[7965,1,\"ἕ\"],[[7966,7967],3],[[7968,7975],2],[7976,1,\"ἠ\"],[7977,1,\"ἡ\"],[7978,1,\"ἢ\"],[7979,1,\"ἣ\"],[7980,1,\"ἤ\"],[7981,1,\"ἥ\"],[7982,1,\"ἦ\"],[7983,1,\"ἧ\"],[[7984,7991],2],[7992,1,\"ἰ\"],[7993,1,\"ἱ\"],[7994,1,\"ἲ\"],[7995,1,\"ἳ\"],[7996,1,\"ἴ\"],[7997,1,\"ἵ\"],[7998,1,\"ἶ\"],[7999,1,\"ἷ\"],[[8000,8005],2],[[8006,8007],3],[8008,1,\"ὀ\"],[8009,1,\"ὁ\"],[8010,1,\"ὂ\"],[8011,1,\"ὃ\"],[8012,1,\"ὄ\"],[8013,1,\"ὅ\"],[[8014,8015],3],[[8016,8023],2],[8024,3],[8025,1,\"ὑ\"],[8026,3],[8027,1,\"ὓ\"],[8028,3],[8029,1,\"ὕ\"],[8030,3],[8031,1,\"ὗ\"],[[8032,8039],2],[8040,1,\"ὠ\"],[8041,1,\"ὡ\"],[8042,1,\"ὢ\"],[8043,1,\"ὣ\"],[8044,1,\"ὤ\"],[8045,1,\"ὥ\"],[8046,1,\"ὦ\"],[8047,1,\"ὧ\"],[8048,2],[8049,1,\"ά\"],[8050,2],[8051,1,\"έ\"],[8052,2],[8053,1,\"ή\"],[8054,2],[8055,1,\"ί\"],[8056,2],[8057,1,\"ό\"],[8058,2],[8059,1,\"ύ\"],[8060,2],[8061,1,\"ώ\"],[[8062,8063],3],[8064,1,\"ἀι\"],[8065,1,\"ἁι\"],[8066,1,\"ἂι\"],[8067,1,\"ἃι\"],[8068,1,\"ἄι\"],[8069,1,\"ἅι\"],[8070,1,\"ἆι\"],[8071,1,\"ἇι\"],[8072,1,\"ἀι\"],[8073,1,\"ἁι\"],[8074,1,\"ἂι\"],[8075,1,\"ἃι\"],[8076,1,\"ἄι\"],[8077,1,\"ἅι\"],[8078,1,\"ἆι\"],[8079,1,\"ἇι\"],[8080,1,\"ἠι\"],[8081,1,\"ἡι\"],[8082,1,\"ἢι\"],[8083,1,\"ἣι\"],[8084,1,\"ἤι\"],[8085,1,\"ἥι\"],[8086,1,\"ἦι\"],[8087,1,\"ἧι\"],[8088,1,\"ἠι\"],[8089,1,\"ἡι\"],[8090,1,\"ἢι\"],[8091,1,\"ἣι\"],[8092,1,\"ἤι\"],[8093,1,\"ἥι\"],[8094,1,\"ἦι\"],[8095,1,\"ἧι\"],[8096,1,\"ὠι\"],[8097,1,\"ὡι\"],[8098,1,\"ὢι\"],[8099,1,\"ὣι\"],[8100,1,\"ὤι\"],[8101,1,\"ὥι\"],[8102,1,\"ὦι\"],[8103,1,\"ὧι\"],[8104,1,\"ὠι\"],[8105,1,\"ὡι\"],[8106,1,\"ὢι\"],[8107,1,\"ὣι\"],[8108,1,\"ὤι\"],[8109,1,\"ὥι\"],[8110,1,\"ὦι\"],[8111,1,\"ὧι\"],[[8112,8113],2],[8114,1,\"ὰι\"],[8115,1,\"αι\"],[8116,1,\"άι\"],[8117,3],[8118,2],[8119,1,\"ᾶι\"],[8120,1,\"ᾰ\"],[8121,1,\"ᾱ\"],[8122,1,\"ὰ\"],[8123,1,\"ά\"],[8124,1,\"αι\"],[8125,1,\" ̓\"],[8126,1,\"ι\"],[8127,1,\" ̓\"],[8128,1,\" ͂\"],[8129,1,\" ̈͂\"],[8130,1,\"ὴι\"],[8131,1,\"ηι\"],[8132,1,\"ήι\"],[8133,3],[8134,2],[8135,1,\"ῆι\"],[8136,1,\"ὲ\"],[8137,1,\"έ\"],[8138,1,\"ὴ\"],[8139,1,\"ή\"],[8140,1,\"ηι\"],[8141,1,\" ̓̀\"],[8142,1,\" ̓́\"],[8143,1,\" ̓͂\"],[[8144,8146],2],[8147,1,\"ΐ\"],[[8148,8149],3],[[8150,8151],2],[8152,1,\"ῐ\"],[8153,1,\"ῑ\"],[8154,1,\"ὶ\"],[8155,1,\"ί\"],[8156,3],[8157,1,\" ̔̀\"],[8158,1,\" ̔́\"],[8159,1,\" ̔͂\"],[[8160,8162],2],[8163,1,\"ΰ\"],[[8164,8167],2],[8168,1,\"ῠ\"],[8169,1,\"ῡ\"],[8170,1,\"ὺ\"],[8171,1,\"ύ\"],[8172,1,\"ῥ\"],[8173,1,\" ̈̀\"],[8174,1,\" ̈́\"],[8175,1,\"`\"],[[8176,8177],3],[8178,1,\"ὼι\"],[8179,1,\"ωι\"],[8180,1,\"ώι\"],[8181,3],[8182,2],[8183,1,\"ῶι\"],[8184,1,\"ὸ\"],[8185,1,\"ό\"],[8186,1,\"ὼ\"],[8187,1,\"ώ\"],[8188,1,\"ωι\"],[8189,1,\" ́\"],[8190,1,\" ̔\"],[8191,3],[[8192,8202],1,\" \"],[8203,7],[[8204,8205],6,\"\"],[[8206,8207],3],[8208,2],[8209,1,\"‐\"],[[8210,8214],2],[8215,1,\" ̳\"],[[8216,8227],2],[[8228,8230],3],[8231,2],[[8232,8238],3],[8239,1,\" \"],[[8240,8242],2],[8243,1,\"′′\"],[8244,1,\"′′′\"],[8245,2],[8246,1,\"‵‵\"],[8247,1,\"‵‵‵\"],[[8248,8251],2],[8252,1,\"!!\"],[8253,2],[8254,1,\" ̅\"],[[8255,8262],2],[8263,1,\"??\"],[8264,1,\"?!\"],[8265,1,\"!?\"],[[8266,8269],2],[[8270,8274],2],[[8275,8276],2],[[8277,8278],2],[8279,1,\"′′′′\"],[[8280,8286],2],[8287,1,\" \"],[[8288,8291],7],[8292,7],[8293,3],[[8294,8297],3],[[8298,8303],7],[8304,1,\"0\"],[8305,1,\"i\"],[[8306,8307],3],[8308,1,\"4\"],[8309,1,\"5\"],[8310,1,\"6\"],[8311,1,\"7\"],[8312,1,\"8\"],[8313,1,\"9\"],[8314,1,\"+\"],[8315,1,\"−\"],[8316,1,\"=\"],[8317,1,\"(\"],[8318,1,\")\"],[8319,1,\"n\"],[8320,1,\"0\"],[8321,1,\"1\"],[8322,1,\"2\"],[8323,1,\"3\"],[8324,1,\"4\"],[8325,1,\"5\"],[8326,1,\"6\"],[8327,1,\"7\"],[8328,1,\"8\"],[8329,1,\"9\"],[8330,1,\"+\"],[8331,1,\"−\"],[8332,1,\"=\"],[8333,1,\"(\"],[8334,1,\")\"],[8335,3],[8336,1,\"a\"],[8337,1,\"e\"],[8338,1,\"o\"],[8339,1,\"x\"],[8340,1,\"ə\"],[8341,1,\"h\"],[8342,1,\"k\"],[8343,1,\"l\"],[8344,1,\"m\"],[8345,1,\"n\"],[8346,1,\"p\"],[8347,1,\"s\"],[8348,1,\"t\"],[[8349,8351],3],[[8352,8359],2],[8360,1,\"rs\"],[[8361,8362],2],[8363,2],[8364,2],[[8365,8367],2],[[8368,8369],2],[[8370,8373],2],[[8374,8376],2],[8377,2],[8378,2],[[8379,8381],2],[8382,2],[8383,2],[8384,2],[[8385,8399],3],[[8400,8417],2],[[8418,8419],2],[[8420,8426],2],[8427,2],[[8428,8431],2],[8432,2],[[8433,8447],3],[8448,1,\"a/c\"],[8449,1,\"a/s\"],[8450,1,\"c\"],[8451,1,\"°c\"],[8452,2],[8453,1,\"c/o\"],[8454,1,\"c/u\"],[8455,1,\"ɛ\"],[8456,2],[8457,1,\"°f\"],[8458,1,\"g\"],[[8459,8462],1,\"h\"],[8463,1,\"ħ\"],[[8464,8465],1,\"i\"],[[8466,8467],1,\"l\"],[8468,2],[8469,1,\"n\"],[8470,1,\"no\"],[[8471,8472],2],[8473,1,\"p\"],[8474,1,\"q\"],[[8475,8477],1,\"r\"],[[8478,8479],2],[8480,1,\"sm\"],[8481,1,\"tel\"],[8482,1,\"tm\"],[8483,2],[8484,1,\"z\"],[8485,2],[8486,1,\"ω\"],[8487,2],[8488,1,\"z\"],[8489,2],[8490,1,\"k\"],[8491,1,\"å\"],[8492,1,\"b\"],[8493,1,\"c\"],[8494,2],[[8495,8496],1,\"e\"],[8497,1,\"f\"],[8498,1,\"ⅎ\"],[8499,1,\"m\"],[8500,1,\"o\"],[8501,1,\"א\"],[8502,1,\"ב\"],[8503,1,\"ג\"],[8504,1,\"ד\"],[8505,1,\"i\"],[8506,2],[8507,1,\"fax\"],[8508,1,\"π\"],[[8509,8510],1,\"γ\"],[8511,1,\"π\"],[8512,1,\"∑\"],[[8513,8516],2],[[8517,8518],1,\"d\"],[8519,1,\"e\"],[8520,1,\"i\"],[8521,1,\"j\"],[[8522,8523],2],[8524,2],[8525,2],[8526,2],[8527,2],[8528,1,\"1⁄7\"],[8529,1,\"1⁄9\"],[8530,1,\"1⁄10\"],[8531,1,\"1⁄3\"],[8532,1,\"2⁄3\"],[8533,1,\"1⁄5\"],[8534,1,\"2⁄5\"],[8535,1,\"3⁄5\"],[8536,1,\"4⁄5\"],[8537,1,\"1⁄6\"],[8538,1,\"5⁄6\"],[8539,1,\"1⁄8\"],[8540,1,\"3⁄8\"],[8541,1,\"5⁄8\"],[8542,1,\"7⁄8\"],[8543,1,\"1⁄\"],[8544,1,\"i\"],[8545,1,\"ii\"],[8546,1,\"iii\"],[8547,1,\"iv\"],[8548,1,\"v\"],[8549,1,\"vi\"],[8550,1,\"vii\"],[8551,1,\"viii\"],[8552,1,\"ix\"],[8553,1,\"x\"],[8554,1,\"xi\"],[8555,1,\"xii\"],[8556,1,\"l\"],[8557,1,\"c\"],[8558,1,\"d\"],[8559,1,\"m\"],[8560,1,\"i\"],[8561,1,\"ii\"],[8562,1,\"iii\"],[8563,1,\"iv\"],[8564,1,\"v\"],[8565,1,\"vi\"],[8566,1,\"vii\"],[8567,1,\"viii\"],[8568,1,\"ix\"],[8569,1,\"x\"],[8570,1,\"xi\"],[8571,1,\"xii\"],[8572,1,\"l\"],[8573,1,\"c\"],[8574,1,\"d\"],[8575,1,\"m\"],[[8576,8578],2],[8579,1,\"ↄ\"],[8580,2],[[8581,8584],2],[8585,1,\"0⁄3\"],[[8586,8587],2],[[8588,8591],3],[[8592,8682],2],[[8683,8691],2],[[8692,8703],2],[[8704,8747],2],[8748,1,\"∫∫\"],[8749,1,\"∫∫∫\"],[8750,2],[8751,1,\"∮∮\"],[8752,1,\"∮∮∮\"],[[8753,8945],2],[[8946,8959],2],[8960,2],[8961,2],[[8962,9000],2],[9001,1,\"〈\"],[9002,1,\"〉\"],[[9003,9082],2],[9083,2],[9084,2],[[9085,9114],2],[[9115,9166],2],[[9167,9168],2],[[9169,9179],2],[[9180,9191],2],[9192,2],[[9193,9203],2],[[9204,9210],2],[[9211,9214],2],[9215,2],[[9216,9252],2],[[9253,9254],2],[[9255,9257],2],[[9258,9279],3],[[9280,9290],2],[[9291,9311],3],[9312,1,\"1\"],[9313,1,\"2\"],[9314,1,\"3\"],[9315,1,\"4\"],[9316,1,\"5\"],[9317,1,\"6\"],[9318,1,\"7\"],[9319,1,\"8\"],[9320,1,\"9\"],[9321,1,\"10\"],[9322,1,\"11\"],[9323,1,\"12\"],[9324,1,\"13\"],[9325,1,\"14\"],[9326,1,\"15\"],[9327,1,\"16\"],[9328,1,\"17\"],[9329,1,\"18\"],[9330,1,\"19\"],[9331,1,\"20\"],[9332,1,\"(1)\"],[9333,1,\"(2)\"],[9334,1,\"(3)\"],[9335,1,\"(4)\"],[9336,1,\"(5)\"],[9337,1,\"(6)\"],[9338,1,\"(7)\"],[9339,1,\"(8)\"],[9340,1,\"(9)\"],[9341,1,\"(10)\"],[9342,1,\"(11)\"],[9343,1,\"(12)\"],[9344,1,\"(13)\"],[9345,1,\"(14)\"],[9346,1,\"(15)\"],[9347,1,\"(16)\"],[9348,1,\"(17)\"],[9349,1,\"(18)\"],[9350,1,\"(19)\"],[9351,1,\"(20)\"],[[9352,9371],3],[9372,1,\"(a)\"],[9373,1,\"(b)\"],[9374,1,\"(c)\"],[9375,1,\"(d)\"],[9376,1,\"(e)\"],[9377,1,\"(f)\"],[9378,1,\"(g)\"],[9379,1,\"(h)\"],[9380,1,\"(i)\"],[9381,1,\"(j)\"],[9382,1,\"(k)\"],[9383,1,\"(l)\"],[9384,1,\"(m)\"],[9385,1,\"(n)\"],[9386,1,\"(o)\"],[9387,1,\"(p)\"],[9388,1,\"(q)\"],[9389,1,\"(r)\"],[9390,1,\"(s)\"],[9391,1,\"(t)\"],[9392,1,\"(u)\"],[9393,1,\"(v)\"],[9394,1,\"(w)\"],[9395,1,\"(x)\"],[9396,1,\"(y)\"],[9397,1,\"(z)\"],[9398,1,\"a\"],[9399,1,\"b\"],[9400,1,\"c\"],[9401,1,\"d\"],[9402,1,\"e\"],[9403,1,\"f\"],[9404,1,\"g\"],[9405,1,\"h\"],[9406,1,\"i\"],[9407,1,\"j\"],[9408,1,\"k\"],[9409,1,\"l\"],[9410,1,\"m\"],[9411,1,\"n\"],[9412,1,\"o\"],[9413,1,\"p\"],[9414,1,\"q\"],[9415,1,\"r\"],[9416,1,\"s\"],[9417,1,\"t\"],[9418,1,\"u\"],[9419,1,\"v\"],[9420,1,\"w\"],[9421,1,\"x\"],[9422,1,\"y\"],[9423,1,\"z\"],[9424,1,\"a\"],[9425,1,\"b\"],[9426,1,\"c\"],[9427,1,\"d\"],[9428,1,\"e\"],[9429,1,\"f\"],[9430,1,\"g\"],[9431,1,\"h\"],[9432,1,\"i\"],[9433,1,\"j\"],[9434,1,\"k\"],[9435,1,\"l\"],[9436,1,\"m\"],[9437,1,\"n\"],[9438,1,\"o\"],[9439,1,\"p\"],[9440,1,\"q\"],[9441,1,\"r\"],[9442,1,\"s\"],[9443,1,\"t\"],[9444,1,\"u\"],[9445,1,\"v\"],[9446,1,\"w\"],[9447,1,\"x\"],[9448,1,\"y\"],[9449,1,\"z\"],[9450,1,\"0\"],[[9451,9470],2],[9471,2],[[9472,9621],2],[[9622,9631],2],[[9632,9711],2],[[9712,9719],2],[[9720,9727],2],[[9728,9747],2],[[9748,9749],2],[[9750,9751],2],[9752,2],[9753,2],[[9754,9839],2],[[9840,9841],2],[[9842,9853],2],[[9854,9855],2],[[9856,9865],2],[[9866,9873],2],[[9874,9884],2],[9885,2],[[9886,9887],2],[[9888,9889],2],[[9890,9905],2],[9906,2],[[9907,9916],2],[[9917,9919],2],[[9920,9923],2],[[9924,9933],2],[9934,2],[[9935,9953],2],[9954,2],[9955,2],[[9956,9959],2],[[9960,9983],2],[9984,2],[[9985,9988],2],[9989,2],[[9990,9993],2],[[9994,9995],2],[[9996,10023],2],[10024,2],[[10025,10059],2],[10060,2],[10061,2],[10062,2],[[10063,10066],2],[[10067,10069],2],[10070,2],[10071,2],[[10072,10078],2],[[10079,10080],2],[[10081,10087],2],[[10088,10101],2],[[10102,10132],2],[[10133,10135],2],[[10136,10159],2],[10160,2],[[10161,10174],2],[10175,2],[[10176,10182],2],[[10183,10186],2],[10187,2],[10188,2],[10189,2],[[10190,10191],2],[[10192,10219],2],[[10220,10223],2],[[10224,10239],2],[[10240,10495],2],[[10496,10763],2],[10764,1,\"∫∫∫∫\"],[[10765,10867],2],[10868,1,\"::=\"],[10869,1,\"==\"],[10870,1,\"===\"],[[10871,10971],2],[10972,1,\"⫝̸\"],[[10973,11007],2],[[11008,11021],2],[[11022,11027],2],[[11028,11034],2],[[11035,11039],2],[[11040,11043],2],[[11044,11084],2],[[11085,11087],2],[[11088,11092],2],[[11093,11097],2],[[11098,11123],2],[[11124,11125],3],[[11126,11157],2],[11158,3],[11159,2],[[11160,11193],2],[[11194,11196],2],[[11197,11208],2],[11209,2],[[11210,11217],2],[11218,2],[[11219,11243],2],[[11244,11247],2],[[11248,11262],2],[11263,2],[11264,1,\"ⰰ\"],[11265,1,\"ⰱ\"],[11266,1,\"ⰲ\"],[11267,1,\"ⰳ\"],[11268,1,\"ⰴ\"],[11269,1,\"ⰵ\"],[11270,1,\"ⰶ\"],[11271,1,\"ⰷ\"],[11272,1,\"ⰸ\"],[11273,1,\"ⰹ\"],[11274,1,\"ⰺ\"],[11275,1,\"ⰻ\"],[11276,1,\"ⰼ\"],[11277,1,\"ⰽ\"],[11278,1,\"ⰾ\"],[11279,1,\"ⰿ\"],[11280,1,\"ⱀ\"],[11281,1,\"ⱁ\"],[11282,1,\"ⱂ\"],[11283,1,\"ⱃ\"],[11284,1,\"ⱄ\"],[11285,1,\"ⱅ\"],[11286,1,\"ⱆ\"],[11287,1,\"ⱇ\"],[11288,1,\"ⱈ\"],[11289,1,\"ⱉ\"],[11290,1,\"ⱊ\"],[11291,1,\"ⱋ\"],[11292,1,\"ⱌ\"],[11293,1,\"ⱍ\"],[11294,1,\"ⱎ\"],[11295,1,\"ⱏ\"],[11296,1,\"ⱐ\"],[11297,1,\"ⱑ\"],[11298,1,\"ⱒ\"],[11299,1,\"ⱓ\"],[11300,1,\"ⱔ\"],[11301,1,\"ⱕ\"],[11302,1,\"ⱖ\"],[11303,1,\"ⱗ\"],[11304,1,\"ⱘ\"],[11305,1,\"ⱙ\"],[11306,1,\"ⱚ\"],[11307,1,\"ⱛ\"],[11308,1,\"ⱜ\"],[11309,1,\"ⱝ\"],[11310,1,\"ⱞ\"],[11311,1,\"ⱟ\"],[[11312,11358],2],[11359,2],[11360,1,\"ⱡ\"],[11361,2],[11362,1,\"ɫ\"],[11363,1,\"ᵽ\"],[11364,1,\"ɽ\"],[[11365,11366],2],[11367,1,\"ⱨ\"],[11368,2],[11369,1,\"ⱪ\"],[11370,2],[11371,1,\"ⱬ\"],[11372,2],[11373,1,\"ɑ\"],[11374,1,\"ɱ\"],[11375,1,\"ɐ\"],[11376,1,\"ɒ\"],[11377,2],[11378,1,\"ⱳ\"],[11379,2],[11380,2],[11381,1,\"ⱶ\"],[[11382,11383],2],[[11384,11387],2],[11388,1,\"j\"],[11389,1,\"v\"],[11390,1,\"ȿ\"],[11391,1,\"ɀ\"],[11392,1,\"ⲁ\"],[11393,2],[11394,1,\"ⲃ\"],[11395,2],[11396,1,\"ⲅ\"],[11397,2],[11398,1,\"ⲇ\"],[11399,2],[11400,1,\"ⲉ\"],[11401,2],[11402,1,\"ⲋ\"],[11403,2],[11404,1,\"ⲍ\"],[11405,2],[11406,1,\"ⲏ\"],[11407,2],[11408,1,\"ⲑ\"],[11409,2],[11410,1,\"ⲓ\"],[11411,2],[11412,1,\"ⲕ\"],[11413,2],[11414,1,\"ⲗ\"],[11415,2],[11416,1,\"ⲙ\"],[11417,2],[11418,1,\"ⲛ\"],[11419,2],[11420,1,\"ⲝ\"],[11421,2],[11422,1,\"ⲟ\"],[11423,2],[11424,1,\"ⲡ\"],[11425,2],[11426,1,\"ⲣ\"],[11427,2],[11428,1,\"ⲥ\"],[11429,2],[11430,1,\"ⲧ\"],[11431,2],[11432,1,\"ⲩ\"],[11433,2],[11434,1,\"ⲫ\"],[11435,2],[11436,1,\"ⲭ\"],[11437,2],[11438,1,\"ⲯ\"],[11439,2],[11440,1,\"ⲱ\"],[11441,2],[11442,1,\"ⲳ\"],[11443,2],[11444,1,\"ⲵ\"],[11445,2],[11446,1,\"ⲷ\"],[11447,2],[11448,1,\"ⲹ\"],[11449,2],[11450,1,\"ⲻ\"],[11451,2],[11452,1,\"ⲽ\"],[11453,2],[11454,1,\"ⲿ\"],[11455,2],[11456,1,\"ⳁ\"],[11457,2],[11458,1,\"ⳃ\"],[11459,2],[11460,1,\"ⳅ\"],[11461,2],[11462,1,\"ⳇ\"],[11463,2],[11464,1,\"ⳉ\"],[11465,2],[11466,1,\"ⳋ\"],[11467,2],[11468,1,\"ⳍ\"],[11469,2],[11470,1,\"ⳏ\"],[11471,2],[11472,1,\"ⳑ\"],[11473,2],[11474,1,\"ⳓ\"],[11475,2],[11476,1,\"ⳕ\"],[11477,2],[11478,1,\"ⳗ\"],[11479,2],[11480,1,\"ⳙ\"],[11481,2],[11482,1,\"ⳛ\"],[11483,2],[11484,1,\"ⳝ\"],[11485,2],[11486,1,\"ⳟ\"],[11487,2],[11488,1,\"ⳡ\"],[11489,2],[11490,1,\"ⳣ\"],[[11491,11492],2],[[11493,11498],2],[11499,1,\"ⳬ\"],[11500,2],[11501,1,\"ⳮ\"],[[11502,11505],2],[11506,1,\"ⳳ\"],[11507,2],[[11508,11512],3],[[11513,11519],2],[[11520,11557],2],[11558,3],[11559,2],[[11560,11564],3],[11565,2],[[11566,11567],3],[[11568,11621],2],[[11622,11623],2],[[11624,11630],3],[11631,1,\"ⵡ\"],[11632,2],[[11633,11646],3],[11647,2],[[11648,11670],2],[[11671,11679],3],[[11680,11686],2],[11687,3],[[11688,11694],2],[11695,3],[[11696,11702],2],[11703,3],[[11704,11710],2],[11711,3],[[11712,11718],2],[11719,3],[[11720,11726],2],[11727,3],[[11728,11734],2],[11735,3],[[11736,11742],2],[11743,3],[[11744,11775],2],[[11776,11799],2],[[11800,11803],2],[[11804,11805],2],[[11806,11822],2],[11823,2],[11824,2],[11825,2],[[11826,11835],2],[[11836,11842],2],[[11843,11844],2],[[11845,11849],2],[[11850,11854],2],[11855,2],[[11856,11858],2],[[11859,11869],2],[[11870,11903],3],[[11904,11929],2],[11930,3],[[11931,11934],2],[11935,1,\"母\"],[[11936,12018],2],[12019,1,\"龟\"],[[12020,12031],3],[12032,1,\"一\"],[12033,1,\"丨\"],[12034,1,\"丶\"],[12035,1,\"丿\"],[12036,1,\"乙\"],[12037,1,\"亅\"],[12038,1,\"二\"],[12039,1,\"亠\"],[12040,1,\"人\"],[12041,1,\"儿\"],[12042,1,\"入\"],[12043,1,\"八\"],[12044,1,\"冂\"],[12045,1,\"冖\"],[12046,1,\"冫\"],[12047,1,\"几\"],[12048,1,\"凵\"],[12049,1,\"刀\"],[12050,1,\"力\"],[12051,1,\"勹\"],[12052,1,\"匕\"],[12053,1,\"匚\"],[12054,1,\"匸\"],[12055,1,\"十\"],[12056,1,\"卜\"],[12057,1,\"卩\"],[12058,1,\"厂\"],[12059,1,\"厶\"],[12060,1,\"又\"],[12061,1,\"口\"],[12062,1,\"囗\"],[12063,1,\"土\"],[12064,1,\"士\"],[12065,1,\"夂\"],[12066,1,\"夊\"],[12067,1,\"夕\"],[12068,1,\"大\"],[12069,1,\"女\"],[12070,1,\"子\"],[12071,1,\"宀\"],[12072,1,\"寸\"],[12073,1,\"小\"],[12074,1,\"尢\"],[12075,1,\"尸\"],[12076,1,\"屮\"],[12077,1,\"山\"],[12078,1,\"巛\"],[12079,1,\"工\"],[12080,1,\"己\"],[12081,1,\"巾\"],[12082,1,\"干\"],[12083,1,\"幺\"],[12084,1,\"广\"],[12085,1,\"廴\"],[12086,1,\"廾\"],[12087,1,\"弋\"],[12088,1,\"弓\"],[12089,1,\"彐\"],[12090,1,\"彡\"],[12091,1,\"彳\"],[12092,1,\"心\"],[12093,1,\"戈\"],[12094,1,\"戶\"],[12095,1,\"手\"],[12096,1,\"支\"],[12097,1,\"攴\"],[12098,1,\"文\"],[12099,1,\"斗\"],[12100,1,\"斤\"],[12101,1,\"方\"],[12102,1,\"无\"],[12103,1,\"日\"],[12104,1,\"曰\"],[12105,1,\"月\"],[12106,1,\"木\"],[12107,1,\"欠\"],[12108,1,\"止\"],[12109,1,\"歹\"],[12110,1,\"殳\"],[12111,1,\"毋\"],[12112,1,\"比\"],[12113,1,\"毛\"],[12114,1,\"氏\"],[12115,1,\"气\"],[12116,1,\"水\"],[12117,1,\"火\"],[12118,1,\"爪\"],[12119,1,\"父\"],[12120,1,\"爻\"],[12121,1,\"爿\"],[12122,1,\"片\"],[12123,1,\"牙\"],[12124,1,\"牛\"],[12125,1,\"犬\"],[12126,1,\"玄\"],[12127,1,\"玉\"],[12128,1,\"瓜\"],[12129,1,\"瓦\"],[12130,1,\"甘\"],[12131,1,\"生\"],[12132,1,\"用\"],[12133,1,\"田\"],[12134,1,\"疋\"],[12135,1,\"疒\"],[12136,1,\"癶\"],[12137,1,\"白\"],[12138,1,\"皮\"],[12139,1,\"皿\"],[12140,1,\"目\"],[12141,1,\"矛\"],[12142,1,\"矢\"],[12143,1,\"石\"],[12144,1,\"示\"],[12145,1,\"禸\"],[12146,1,\"禾\"],[12147,1,\"穴\"],[12148,1,\"立\"],[12149,1,\"竹\"],[12150,1,\"米\"],[12151,1,\"糸\"],[12152,1,\"缶\"],[12153,1,\"网\"],[12154,1,\"羊\"],[12155,1,\"羽\"],[12156,1,\"老\"],[12157,1,\"而\"],[12158,1,\"耒\"],[12159,1,\"耳\"],[12160,1,\"聿\"],[12161,1,\"肉\"],[12162,1,\"臣\"],[12163,1,\"自\"],[12164,1,\"至\"],[12165,1,\"臼\"],[12166,1,\"舌\"],[12167,1,\"舛\"],[12168,1,\"舟\"],[12169,1,\"艮\"],[12170,1,\"色\"],[12171,1,\"艸\"],[12172,1,\"虍\"],[12173,1,\"虫\"],[12174,1,\"血\"],[12175,1,\"行\"],[12176,1,\"衣\"],[12177,1,\"襾\"],[12178,1,\"見\"],[12179,1,\"角\"],[12180,1,\"言\"],[12181,1,\"谷\"],[12182,1,\"豆\"],[12183,1,\"豕\"],[12184,1,\"豸\"],[12185,1,\"貝\"],[12186,1,\"赤\"],[12187,1,\"走\"],[12188,1,\"足\"],[12189,1,\"身\"],[12190,1,\"車\"],[12191,1,\"辛\"],[12192,1,\"辰\"],[12193,1,\"辵\"],[12194,1,\"邑\"],[12195,1,\"酉\"],[12196,1,\"釆\"],[12197,1,\"里\"],[12198,1,\"金\"],[12199,1,\"長\"],[12200,1,\"門\"],[12201,1,\"阜\"],[12202,1,\"隶\"],[12203,1,\"隹\"],[12204,1,\"雨\"],[12205,1,\"靑\"],[12206,1,\"非\"],[12207,1,\"面\"],[12208,1,\"革\"],[12209,1,\"韋\"],[12210,1,\"韭\"],[12211,1,\"音\"],[12212,1,\"頁\"],[12213,1,\"風\"],[12214,1,\"飛\"],[12215,1,\"食\"],[12216,1,\"首\"],[12217,1,\"香\"],[12218,1,\"馬\"],[12219,1,\"骨\"],[12220,1,\"高\"],[12221,1,\"髟\"],[12222,1,\"鬥\"],[12223,1,\"鬯\"],[12224,1,\"鬲\"],[12225,1,\"鬼\"],[12226,1,\"魚\"],[12227,1,\"鳥\"],[12228,1,\"鹵\"],[12229,1,\"鹿\"],[12230,1,\"麥\"],[12231,1,\"麻\"],[12232,1,\"黃\"],[12233,1,\"黍\"],[12234,1,\"黑\"],[12235,1,\"黹\"],[12236,1,\"黽\"],[12237,1,\"鼎\"],[12238,1,\"鼓\"],[12239,1,\"鼠\"],[12240,1,\"鼻\"],[12241,1,\"齊\"],[12242,1,\"齒\"],[12243,1,\"龍\"],[12244,1,\"龜\"],[12245,1,\"龠\"],[[12246,12271],3],[[12272,12283],3],[[12284,12287],3],[12288,1,\" \"],[12289,2],[12290,1,\".\"],[[12291,12292],2],[[12293,12295],2],[[12296,12329],2],[[12330,12333],2],[[12334,12341],2],[12342,1,\"〒\"],[12343,2],[12344,1,\"十\"],[12345,1,\"卄\"],[12346,1,\"卅\"],[12347,2],[12348,2],[12349,2],[12350,2],[12351,2],[12352,3],[[12353,12436],2],[[12437,12438],2],[[12439,12440],3],[[12441,12442],2],[12443,1,\" ゙\"],[12444,1,\" ゚\"],[[12445,12446],2],[12447,1,\"より\"],[12448,2],[[12449,12542],2],[12543,1,\"コト\"],[[12544,12548],3],[[12549,12588],2],[12589,2],[12590,2],[12591,2],[12592,3],[12593,1,\"ᄀ\"],[12594,1,\"ᄁ\"],[12595,1,\"ᆪ\"],[12596,1,\"ᄂ\"],[12597,1,\"ᆬ\"],[12598,1,\"ᆭ\"],[12599,1,\"ᄃ\"],[12600,1,\"ᄄ\"],[12601,1,\"ᄅ\"],[12602,1,\"ᆰ\"],[12603,1,\"ᆱ\"],[12604,1,\"ᆲ\"],[12605,1,\"ᆳ\"],[12606,1,\"ᆴ\"],[12607,1,\"ᆵ\"],[12608,1,\"ᄚ\"],[12609,1,\"ᄆ\"],[12610,1,\"ᄇ\"],[12611,1,\"ᄈ\"],[12612,1,\"ᄡ\"],[12613,1,\"ᄉ\"],[12614,1,\"ᄊ\"],[12615,1,\"ᄋ\"],[12616,1,\"ᄌ\"],[12617,1,\"ᄍ\"],[12618,1,\"ᄎ\"],[12619,1,\"ᄏ\"],[12620,1,\"ᄐ\"],[12621,1,\"ᄑ\"],[12622,1,\"ᄒ\"],[12623,1,\"ᅡ\"],[12624,1,\"ᅢ\"],[12625,1,\"ᅣ\"],[12626,1,\"ᅤ\"],[12627,1,\"ᅥ\"],[12628,1,\"ᅦ\"],[12629,1,\"ᅧ\"],[12630,1,\"ᅨ\"],[12631,1,\"ᅩ\"],[12632,1,\"ᅪ\"],[12633,1,\"ᅫ\"],[12634,1,\"ᅬ\"],[12635,1,\"ᅭ\"],[12636,1,\"ᅮ\"],[12637,1,\"ᅯ\"],[12638,1,\"ᅰ\"],[12639,1,\"ᅱ\"],[12640,1,\"ᅲ\"],[12641,1,\"ᅳ\"],[12642,1,\"ᅴ\"],[12643,1,\"ᅵ\"],[12644,7],[12645,1,\"ᄔ\"],[12646,1,\"ᄕ\"],[12647,1,\"ᇇ\"],[12648,1,\"ᇈ\"],[12649,1,\"ᇌ\"],[12650,1,\"ᇎ\"],[12651,1,\"ᇓ\"],[12652,1,\"ᇗ\"],[12653,1,\"ᇙ\"],[12654,1,\"ᄜ\"],[12655,1,\"ᇝ\"],[12656,1,\"ᇟ\"],[12657,1,\"ᄝ\"],[12658,1,\"ᄞ\"],[12659,1,\"ᄠ\"],[12660,1,\"ᄢ\"],[12661,1,\"ᄣ\"],[12662,1,\"ᄧ\"],[12663,1,\"ᄩ\"],[12664,1,\"ᄫ\"],[12665,1,\"ᄬ\"],[12666,1,\"ᄭ\"],[12667,1,\"ᄮ\"],[12668,1,\"ᄯ\"],[12669,1,\"ᄲ\"],[12670,1,\"ᄶ\"],[12671,1,\"ᅀ\"],[12672,1,\"ᅇ\"],[12673,1,\"ᅌ\"],[12674,1,\"ᇱ\"],[12675,1,\"ᇲ\"],[12676,1,\"ᅗ\"],[12677,1,\"ᅘ\"],[12678,1,\"ᅙ\"],[12679,1,\"ᆄ\"],[12680,1,\"ᆅ\"],[12681,1,\"ᆈ\"],[12682,1,\"ᆑ\"],[12683,1,\"ᆒ\"],[12684,1,\"ᆔ\"],[12685,1,\"ᆞ\"],[12686,1,\"ᆡ\"],[12687,3],[[12688,12689],2],[12690,1,\"一\"],[12691,1,\"二\"],[12692,1,\"三\"],[12693,1,\"四\"],[12694,1,\"上\"],[12695,1,\"中\"],[12696,1,\"下\"],[12697,1,\"甲\"],[12698,1,\"乙\"],[12699,1,\"丙\"],[12700,1,\"丁\"],[12701,1,\"天\"],[12702,1,\"地\"],[12703,1,\"人\"],[[12704,12727],2],[[12728,12730],2],[[12731,12735],2],[[12736,12751],2],[[12752,12771],2],[[12772,12773],2],[[12774,12782],3],[12783,3],[[12784,12799],2],[12800,1,\"(ᄀ)\"],[12801,1,\"(ᄂ)\"],[12802,1,\"(ᄃ)\"],[12803,1,\"(ᄅ)\"],[12804,1,\"(ᄆ)\"],[12805,1,\"(ᄇ)\"],[12806,1,\"(ᄉ)\"],[12807,1,\"(ᄋ)\"],[12808,1,\"(ᄌ)\"],[12809,1,\"(ᄎ)\"],[12810,1,\"(ᄏ)\"],[12811,1,\"(ᄐ)\"],[12812,1,\"(ᄑ)\"],[12813,1,\"(ᄒ)\"],[12814,1,\"(가)\"],[12815,1,\"(나)\"],[12816,1,\"(다)\"],[12817,1,\"(라)\"],[12818,1,\"(마)\"],[12819,1,\"(바)\"],[12820,1,\"(사)\"],[12821,1,\"(아)\"],[12822,1,\"(자)\"],[12823,1,\"(차)\"],[12824,1,\"(카)\"],[12825,1,\"(타)\"],[12826,1,\"(파)\"],[12827,1,\"(하)\"],[12828,1,\"(주)\"],[12829,1,\"(오전)\"],[12830,1,\"(오후)\"],[12831,3],[12832,1,\"(一)\"],[12833,1,\"(二)\"],[12834,1,\"(三)\"],[12835,1,\"(四)\"],[12836,1,\"(五)\"],[12837,1,\"(六)\"],[12838,1,\"(七)\"],[12839,1,\"(八)\"],[12840,1,\"(九)\"],[12841,1,\"(十)\"],[12842,1,\"(月)\"],[12843,1,\"(火)\"],[12844,1,\"(水)\"],[12845,1,\"(木)\"],[12846,1,\"(金)\"],[12847,1,\"(土)\"],[12848,1,\"(日)\"],[12849,1,\"(株)\"],[12850,1,\"(有)\"],[12851,1,\"(社)\"],[12852,1,\"(名)\"],[12853,1,\"(特)\"],[12854,1,\"(財)\"],[12855,1,\"(祝)\"],[12856,1,\"(労)\"],[12857,1,\"(代)\"],[12858,1,\"(呼)\"],[12859,1,\"(学)\"],[12860,1,\"(監)\"],[12861,1,\"(企)\"],[12862,1,\"(資)\"],[12863,1,\"(協)\"],[12864,1,\"(祭)\"],[12865,1,\"(休)\"],[12866,1,\"(自)\"],[12867,1,\"(至)\"],[12868,1,\"問\"],[12869,1,\"幼\"],[12870,1,\"文\"],[12871,1,\"箏\"],[[12872,12879],2],[12880,1,\"pte\"],[12881,1,\"21\"],[12882,1,\"22\"],[12883,1,\"23\"],[12884,1,\"24\"],[12885,1,\"25\"],[12886,1,\"26\"],[12887,1,\"27\"],[12888,1,\"28\"],[12889,1,\"29\"],[12890,1,\"30\"],[12891,1,\"31\"],[12892,1,\"32\"],[12893,1,\"33\"],[12894,1,\"34\"],[12895,1,\"35\"],[12896,1,\"ᄀ\"],[12897,1,\"ᄂ\"],[12898,1,\"ᄃ\"],[12899,1,\"ᄅ\"],[12900,1,\"ᄆ\"],[12901,1,\"ᄇ\"],[12902,1,\"ᄉ\"],[12903,1,\"ᄋ\"],[12904,1,\"ᄌ\"],[12905,1,\"ᄎ\"],[12906,1,\"ᄏ\"],[12907,1,\"ᄐ\"],[12908,1,\"ᄑ\"],[12909,1,\"ᄒ\"],[12910,1,\"가\"],[12911,1,\"나\"],[12912,1,\"다\"],[12913,1,\"라\"],[12914,1,\"마\"],[12915,1,\"바\"],[12916,1,\"사\"],[12917,1,\"아\"],[12918,1,\"자\"],[12919,1,\"차\"],[12920,1,\"카\"],[12921,1,\"타\"],[12922,1,\"파\"],[12923,1,\"하\"],[12924,1,\"참고\"],[12925,1,\"주의\"],[12926,1,\"우\"],[12927,2],[12928,1,\"一\"],[12929,1,\"二\"],[12930,1,\"三\"],[12931,1,\"四\"],[12932,1,\"五\"],[12933,1,\"六\"],[12934,1,\"七\"],[12935,1,\"八\"],[12936,1,\"九\"],[12937,1,\"十\"],[12938,1,\"月\"],[12939,1,\"火\"],[12940,1,\"水\"],[12941,1,\"木\"],[12942,1,\"金\"],[12943,1,\"土\"],[12944,1,\"日\"],[12945,1,\"株\"],[12946,1,\"有\"],[12947,1,\"社\"],[12948,1,\"名\"],[12949,1,\"特\"],[12950,1,\"財\"],[12951,1,\"祝\"],[12952,1,\"労\"],[12953,1,\"秘\"],[12954,1,\"男\"],[12955,1,\"女\"],[12956,1,\"適\"],[12957,1,\"優\"],[12958,1,\"印\"],[12959,1,\"注\"],[12960,1,\"項\"],[12961,1,\"休\"],[12962,1,\"写\"],[12963,1,\"正\"],[12964,1,\"上\"],[12965,1,\"中\"],[12966,1,\"下\"],[12967,1,\"左\"],[12968,1,\"右\"],[12969,1,\"医\"],[12970,1,\"宗\"],[12971,1,\"学\"],[12972,1,\"監\"],[12973,1,\"企\"],[12974,1,\"資\"],[12975,1,\"協\"],[12976,1,\"夜\"],[12977,1,\"36\"],[12978,1,\"37\"],[12979,1,\"38\"],[12980,1,\"39\"],[12981,1,\"40\"],[12982,1,\"41\"],[12983,1,\"42\"],[12984,1,\"43\"],[12985,1,\"44\"],[12986,1,\"45\"],[12987,1,\"46\"],[12988,1,\"47\"],[12989,1,\"48\"],[12990,1,\"49\"],[12991,1,\"50\"],[12992,1,\"1月\"],[12993,1,\"2月\"],[12994,1,\"3月\"],[12995,1,\"4月\"],[12996,1,\"5月\"],[12997,1,\"6月\"],[12998,1,\"7月\"],[12999,1,\"8月\"],[13000,1,\"9月\"],[13001,1,\"10月\"],[13002,1,\"11月\"],[13003,1,\"12月\"],[13004,1,\"hg\"],[13005,1,\"erg\"],[13006,1,\"ev\"],[13007,1,\"ltd\"],[13008,1,\"ア\"],[13009,1,\"イ\"],[13010,1,\"ウ\"],[13011,1,\"エ\"],[13012,1,\"オ\"],[13013,1,\"カ\"],[13014,1,\"キ\"],[13015,1,\"ク\"],[13016,1,\"ケ\"],[13017,1,\"コ\"],[13018,1,\"サ\"],[13019,1,\"シ\"],[13020,1,\"ス\"],[13021,1,\"セ\"],[13022,1,\"ソ\"],[13023,1,\"タ\"],[13024,1,\"チ\"],[13025,1,\"ツ\"],[13026,1,\"テ\"],[13027,1,\"ト\"],[13028,1,\"ナ\"],[13029,1,\"ニ\"],[13030,1,\"ヌ\"],[13031,1,\"ネ\"],[13032,1,\"ノ\"],[13033,1,\"ハ\"],[13034,1,\"ヒ\"],[13035,1,\"フ\"],[13036,1,\"ヘ\"],[13037,1,\"ホ\"],[13038,1,\"マ\"],[13039,1,\"ミ\"],[13040,1,\"ム\"],[13041,1,\"メ\"],[13042,1,\"モ\"],[13043,1,\"ヤ\"],[13044,1,\"ユ\"],[13045,1,\"ヨ\"],[13046,1,\"ラ\"],[13047,1,\"リ\"],[13048,1,\"ル\"],[13049,1,\"レ\"],[13050,1,\"ロ\"],[13051,1,\"ワ\"],[13052,1,\"ヰ\"],[13053,1,\"ヱ\"],[13054,1,\"ヲ\"],[13055,1,\"令和\"],[13056,1,\"アパート\"],[13057,1,\"アルファ\"],[13058,1,\"アンペア\"],[13059,1,\"アール\"],[13060,1,\"イニング\"],[13061,1,\"インチ\"],[13062,1,\"ウォン\"],[13063,1,\"エスクード\"],[13064,1,\"エーカー\"],[13065,1,\"オンス\"],[13066,1,\"オーム\"],[13067,1,\"カイリ\"],[13068,1,\"カラット\"],[13069,1,\"カロリー\"],[13070,1,\"ガロン\"],[13071,1,\"ガンマ\"],[13072,1,\"ギガ\"],[13073,1,\"ギニー\"],[13074,1,\"キュリー\"],[13075,1,\"ギルダー\"],[13076,1,\"キロ\"],[13077,1,\"キログラム\"],[13078,1,\"キロメートル\"],[13079,1,\"キロワット\"],[13080,1,\"グラム\"],[13081,1,\"グラムトン\"],[13082,1,\"クルゼイロ\"],[13083,1,\"クローネ\"],[13084,1,\"ケース\"],[13085,1,\"コルナ\"],[13086,1,\"コーポ\"],[13087,1,\"サイクル\"],[13088,1,\"サンチーム\"],[13089,1,\"シリング\"],[13090,1,\"センチ\"],[13091,1,\"セント\"],[13092,1,\"ダース\"],[13093,1,\"デシ\"],[13094,1,\"ドル\"],[13095,1,\"トン\"],[13096,1,\"ナノ\"],[13097,1,\"ノット\"],[13098,1,\"ハイツ\"],[13099,1,\"パーセント\"],[13100,1,\"パーツ\"],[13101,1,\"バーレル\"],[13102,1,\"ピアストル\"],[13103,1,\"ピクル\"],[13104,1,\"ピコ\"],[13105,1,\"ビル\"],[13106,1,\"ファラッド\"],[13107,1,\"フィート\"],[13108,1,\"ブッシェル\"],[13109,1,\"フラン\"],[13110,1,\"ヘクタール\"],[13111,1,\"ペソ\"],[13112,1,\"ペニヒ\"],[13113,1,\"ヘルツ\"],[13114,1,\"ペンス\"],[13115,1,\"ページ\"],[13116,1,\"ベータ\"],[13117,1,\"ポイント\"],[13118,1,\"ボルト\"],[13119,1,\"ホン\"],[13120,1,\"ポンド\"],[13121,1,\"ホール\"],[13122,1,\"ホーン\"],[13123,1,\"マイクロ\"],[13124,1,\"マイル\"],[13125,1,\"マッハ\"],[13126,1,\"マルク\"],[13127,1,\"マンション\"],[13128,1,\"ミクロン\"],[13129,1,\"ミリ\"],[13130,1,\"ミリバール\"],[13131,1,\"メガ\"],[13132,1,\"メガトン\"],[13133,1,\"メートル\"],[13134,1,\"ヤード\"],[13135,1,\"ヤール\"],[13136,1,\"ユアン\"],[13137,1,\"リットル\"],[13138,1,\"リラ\"],[13139,1,\"ルピー\"],[13140,1,\"ルーブル\"],[13141,1,\"レム\"],[13142,1,\"レントゲン\"],[13143,1,\"ワット\"],[13144,1,\"0点\"],[13145,1,\"1点\"],[13146,1,\"2点\"],[13147,1,\"3点\"],[13148,1,\"4点\"],[13149,1,\"5点\"],[13150,1,\"6点\"],[13151,1,\"7点\"],[13152,1,\"8点\"],[13153,1,\"9点\"],[13154,1,\"10点\"],[13155,1,\"11点\"],[13156,1,\"12点\"],[13157,1,\"13点\"],[13158,1,\"14点\"],[13159,1,\"15点\"],[13160,1,\"16点\"],[13161,1,\"17点\"],[13162,1,\"18点\"],[13163,1,\"19点\"],[13164,1,\"20点\"],[13165,1,\"21点\"],[13166,1,\"22点\"],[13167,1,\"23点\"],[13168,1,\"24点\"],[13169,1,\"hpa\"],[13170,1,\"da\"],[13171,1,\"au\"],[13172,1,\"bar\"],[13173,1,\"ov\"],[13174,1,\"pc\"],[13175,1,\"dm\"],[13176,1,\"dm2\"],[13177,1,\"dm3\"],[13178,1,\"iu\"],[13179,1,\"平成\"],[13180,1,\"昭和\"],[13181,1,\"大正\"],[13182,1,\"明治\"],[13183,1,\"株式会社\"],[13184,1,\"pa\"],[13185,1,\"na\"],[13186,1,\"μa\"],[13187,1,\"ma\"],[13188,1,\"ka\"],[13189,1,\"kb\"],[13190,1,\"mb\"],[13191,1,\"gb\"],[13192,1,\"cal\"],[13193,1,\"kcal\"],[13194,1,\"pf\"],[13195,1,\"nf\"],[13196,1,\"μf\"],[13197,1,\"μg\"],[13198,1,\"mg\"],[13199,1,\"kg\"],[13200,1,\"hz\"],[13201,1,\"khz\"],[13202,1,\"mhz\"],[13203,1,\"ghz\"],[13204,1,\"thz\"],[13205,1,\"μl\"],[13206,1,\"ml\"],[13207,1,\"dl\"],[13208,1,\"kl\"],[13209,1,\"fm\"],[13210,1,\"nm\"],[13211,1,\"μm\"],[13212,1,\"mm\"],[13213,1,\"cm\"],[13214,1,\"km\"],[13215,1,\"mm2\"],[13216,1,\"cm2\"],[13217,1,\"m2\"],[13218,1,\"km2\"],[13219,1,\"mm3\"],[13220,1,\"cm3\"],[13221,1,\"m3\"],[13222,1,\"km3\"],[13223,1,\"m∕s\"],[13224,1,\"m∕s2\"],[13225,1,\"pa\"],[13226,1,\"kpa\"],[13227,1,\"mpa\"],[13228,1,\"gpa\"],[13229,1,\"rad\"],[13230,1,\"rad∕s\"],[13231,1,\"rad∕s2\"],[13232,1,\"ps\"],[13233,1,\"ns\"],[13234,1,\"μs\"],[13235,1,\"ms\"],[13236,1,\"pv\"],[13237,1,\"nv\"],[13238,1,\"μv\"],[13239,1,\"mv\"],[13240,1,\"kv\"],[13241,1,\"mv\"],[13242,1,\"pw\"],[13243,1,\"nw\"],[13244,1,\"μw\"],[13245,1,\"mw\"],[13246,1,\"kw\"],[13247,1,\"mw\"],[13248,1,\"kω\"],[13249,1,\"mω\"],[13250,3],[13251,1,\"bq\"],[13252,1,\"cc\"],[13253,1,\"cd\"],[13254,1,\"c∕kg\"],[13255,3],[13256,1,\"db\"],[13257,1,\"gy\"],[13258,1,\"ha\"],[13259,1,\"hp\"],[13260,1,\"in\"],[13261,1,\"kk\"],[13262,1,\"km\"],[13263,1,\"kt\"],[13264,1,\"lm\"],[13265,1,\"ln\"],[13266,1,\"log\"],[13267,1,\"lx\"],[13268,1,\"mb\"],[13269,1,\"mil\"],[13270,1,\"mol\"],[13271,1,\"ph\"],[13272,3],[13273,1,\"ppm\"],[13274,1,\"pr\"],[13275,1,\"sr\"],[13276,1,\"sv\"],[13277,1,\"wb\"],[13278,1,\"v∕m\"],[13279,1,\"a∕m\"],[13280,1,\"1日\"],[13281,1,\"2日\"],[13282,1,\"3日\"],[13283,1,\"4日\"],[13284,1,\"5日\"],[13285,1,\"6日\"],[13286,1,\"7日\"],[13287,1,\"8日\"],[13288,1,\"9日\"],[13289,1,\"10日\"],[13290,1,\"11日\"],[13291,1,\"12日\"],[13292,1,\"13日\"],[13293,1,\"14日\"],[13294,1,\"15日\"],[13295,1,\"16日\"],[13296,1,\"17日\"],[13297,1,\"18日\"],[13298,1,\"19日\"],[13299,1,\"20日\"],[13300,1,\"21日\"],[13301,1,\"22日\"],[13302,1,\"23日\"],[13303,1,\"24日\"],[13304,1,\"25日\"],[13305,1,\"26日\"],[13306,1,\"27日\"],[13307,1,\"28日\"],[13308,1,\"29日\"],[13309,1,\"30日\"],[13310,1,\"31日\"],[13311,1,\"gal\"],[[13312,19893],2],[[19894,19903],2],[[19904,19967],2],[[19968,40869],2],[[40870,40891],2],[[40892,40899],2],[[40900,40907],2],[40908,2],[[40909,40917],2],[[40918,40938],2],[[40939,40943],2],[[40944,40956],2],[[40957,40959],2],[[40960,42124],2],[[42125,42127],3],[[42128,42145],2],[[42146,42147],2],[[42148,42163],2],[42164,2],[[42165,42176],2],[42177,2],[[42178,42180],2],[42181,2],[42182,2],[[42183,42191],3],[[42192,42237],2],[[42238,42239],2],[[42240,42508],2],[[42509,42511],2],[[42512,42539],2],[[42540,42559],3],[42560,1,\"ꙁ\"],[42561,2],[42562,1,\"ꙃ\"],[42563,2],[42564,1,\"ꙅ\"],[42565,2],[42566,1,\"ꙇ\"],[42567,2],[42568,1,\"ꙉ\"],[42569,2],[42570,1,\"ꙋ\"],[42571,2],[42572,1,\"ꙍ\"],[42573,2],[42574,1,\"ꙏ\"],[42575,2],[42576,1,\"ꙑ\"],[42577,2],[42578,1,\"ꙓ\"],[42579,2],[42580,1,\"ꙕ\"],[42581,2],[42582,1,\"ꙗ\"],[42583,2],[42584,1,\"ꙙ\"],[42585,2],[42586,1,\"ꙛ\"],[42587,2],[42588,1,\"ꙝ\"],[42589,2],[42590,1,\"ꙟ\"],[42591,2],[42592,1,\"ꙡ\"],[42593,2],[42594,1,\"ꙣ\"],[42595,2],[42596,1,\"ꙥ\"],[42597,2],[42598,1,\"ꙧ\"],[42599,2],[42600,1,\"ꙩ\"],[42601,2],[42602,1,\"ꙫ\"],[42603,2],[42604,1,\"ꙭ\"],[[42605,42607],2],[[42608,42611],2],[[42612,42619],2],[[42620,42621],2],[42622,2],[42623,2],[42624,1,\"ꚁ\"],[42625,2],[42626,1,\"ꚃ\"],[42627,2],[42628,1,\"ꚅ\"],[42629,2],[42630,1,\"ꚇ\"],[42631,2],[42632,1,\"ꚉ\"],[42633,2],[42634,1,\"ꚋ\"],[42635,2],[42636,1,\"ꚍ\"],[42637,2],[42638,1,\"ꚏ\"],[42639,2],[42640,1,\"ꚑ\"],[42641,2],[42642,1,\"ꚓ\"],[42643,2],[42644,1,\"ꚕ\"],[42645,2],[42646,1,\"ꚗ\"],[42647,2],[42648,1,\"ꚙ\"],[42649,2],[42650,1,\"ꚛ\"],[42651,2],[42652,1,\"ъ\"],[42653,1,\"ь\"],[42654,2],[42655,2],[[42656,42725],2],[[42726,42735],2],[[42736,42737],2],[[42738,42743],2],[[42744,42751],3],[[42752,42774],2],[[42775,42778],2],[[42779,42783],2],[[42784,42785],2],[42786,1,\"ꜣ\"],[42787,2],[42788,1,\"ꜥ\"],[42789,2],[42790,1,\"ꜧ\"],[42791,2],[42792,1,\"ꜩ\"],[42793,2],[42794,1,\"ꜫ\"],[42795,2],[42796,1,\"ꜭ\"],[42797,2],[42798,1,\"ꜯ\"],[[42799,42801],2],[42802,1,\"ꜳ\"],[42803,2],[42804,1,\"ꜵ\"],[42805,2],[42806,1,\"ꜷ\"],[42807,2],[42808,1,\"ꜹ\"],[42809,2],[42810,1,\"ꜻ\"],[42811,2],[42812,1,\"ꜽ\"],[42813,2],[42814,1,\"ꜿ\"],[42815,2],[42816,1,\"ꝁ\"],[42817,2],[42818,1,\"ꝃ\"],[42819,2],[42820,1,\"ꝅ\"],[42821,2],[42822,1,\"ꝇ\"],[42823,2],[42824,1,\"ꝉ\"],[42825,2],[42826,1,\"ꝋ\"],[42827,2],[42828,1,\"ꝍ\"],[42829,2],[42830,1,\"ꝏ\"],[42831,2],[42832,1,\"ꝑ\"],[42833,2],[42834,1,\"ꝓ\"],[42835,2],[42836,1,\"ꝕ\"],[42837,2],[42838,1,\"ꝗ\"],[42839,2],[42840,1,\"ꝙ\"],[42841,2],[42842,1,\"ꝛ\"],[42843,2],[42844,1,\"ꝝ\"],[42845,2],[42846,1,\"ꝟ\"],[42847,2],[42848,1,\"ꝡ\"],[42849,2],[42850,1,\"ꝣ\"],[42851,2],[42852,1,\"ꝥ\"],[42853,2],[42854,1,\"ꝧ\"],[42855,2],[42856,1,\"ꝩ\"],[42857,2],[42858,1,\"ꝫ\"],[42859,2],[42860,1,\"ꝭ\"],[42861,2],[42862,1,\"ꝯ\"],[42863,2],[42864,1,\"ꝯ\"],[[42865,42872],2],[42873,1,\"ꝺ\"],[42874,2],[42875,1,\"ꝼ\"],[42876,2],[42877,1,\"ᵹ\"],[42878,1,\"ꝿ\"],[42879,2],[42880,1,\"ꞁ\"],[42881,2],[42882,1,\"ꞃ\"],[42883,2],[42884,1,\"ꞅ\"],[42885,2],[42886,1,\"ꞇ\"],[[42887,42888],2],[[42889,42890],2],[42891,1,\"ꞌ\"],[42892,2],[42893,1,\"ɥ\"],[42894,2],[42895,2],[42896,1,\"ꞑ\"],[42897,2],[42898,1,\"ꞓ\"],[42899,2],[[42900,42901],2],[42902,1,\"ꞗ\"],[42903,2],[42904,1,\"ꞙ\"],[42905,2],[42906,1,\"ꞛ\"],[42907,2],[42908,1,\"ꞝ\"],[42909,2],[42910,1,\"ꞟ\"],[42911,2],[42912,1,\"ꞡ\"],[42913,2],[42914,1,\"ꞣ\"],[42915,2],[42916,1,\"ꞥ\"],[42917,2],[42918,1,\"ꞧ\"],[42919,2],[42920,1,\"ꞩ\"],[42921,2],[42922,1,\"ɦ\"],[42923,1,\"ɜ\"],[42924,1,\"ɡ\"],[42925,1,\"ɬ\"],[42926,1,\"ɪ\"],[42927,2],[42928,1,\"ʞ\"],[42929,1,\"ʇ\"],[42930,1,\"ʝ\"],[42931,1,\"ꭓ\"],[42932,1,\"ꞵ\"],[42933,2],[42934,1,\"ꞷ\"],[42935,2],[42936,1,\"ꞹ\"],[42937,2],[42938,1,\"ꞻ\"],[42939,2],[42940,1,\"ꞽ\"],[42941,2],[42942,1,\"ꞿ\"],[42943,2],[42944,1,\"ꟁ\"],[42945,2],[42946,1,\"ꟃ\"],[42947,2],[42948,1,\"ꞔ\"],[42949,1,\"ʂ\"],[42950,1,\"ᶎ\"],[42951,1,\"ꟈ\"],[42952,2],[42953,1,\"ꟊ\"],[42954,2],[42955,1,\"ɤ\"],[42956,1,\"ꟍ\"],[42957,2],[[42958,42959],3],[42960,1,\"ꟑ\"],[42961,2],[42962,3],[42963,2],[42964,3],[42965,2],[42966,1,\"ꟗ\"],[42967,2],[42968,1,\"ꟙ\"],[42969,2],[42970,1,\"ꟛ\"],[42971,2],[42972,1,\"ƛ\"],[[42973,42993],3],[42994,1,\"c\"],[42995,1,\"f\"],[42996,1,\"q\"],[42997,1,\"ꟶ\"],[42998,2],[42999,2],[43000,1,\"ħ\"],[43001,1,\"œ\"],[43002,2],[[43003,43007],2],[[43008,43047],2],[[43048,43051],2],[43052,2],[[43053,43055],3],[[43056,43065],2],[[43066,43071],3],[[43072,43123],2],[[43124,43127],2],[[43128,43135],3],[[43136,43204],2],[43205,2],[[43206,43213],3],[[43214,43215],2],[[43216,43225],2],[[43226,43231],3],[[43232,43255],2],[[43256,43258],2],[43259,2],[43260,2],[43261,2],[[43262,43263],2],[[43264,43309],2],[[43310,43311],2],[[43312,43347],2],[[43348,43358],3],[43359,2],[[43360,43388],2],[[43389,43391],3],[[43392,43456],2],[[43457,43469],2],[43470,3],[[43471,43481],2],[[43482,43485],3],[[43486,43487],2],[[43488,43518],2],[43519,3],[[43520,43574],2],[[43575,43583],3],[[43584,43597],2],[[43598,43599],3],[[43600,43609],2],[[43610,43611],3],[[43612,43615],2],[[43616,43638],2],[[43639,43641],2],[[43642,43643],2],[[43644,43647],2],[[43648,43714],2],[[43715,43738],3],[[43739,43741],2],[[43742,43743],2],[[43744,43759],2],[[43760,43761],2],[[43762,43766],2],[[43767,43776],3],[[43777,43782],2],[[43783,43784],3],[[43785,43790],2],[[43791,43792],3],[[43793,43798],2],[[43799,43807],3],[[43808,43814],2],[43815,3],[[43816,43822],2],[43823,3],[[43824,43866],2],[43867,2],[43868,1,\"ꜧ\"],[43869,1,\"ꬷ\"],[43870,1,\"ɫ\"],[43871,1,\"ꭒ\"],[[43872,43875],2],[[43876,43877],2],[[43878,43879],2],[43880,2],[43881,1,\"ʍ\"],[[43882,43883],2],[[43884,43887],3],[43888,1,\"Ꭰ\"],[43889,1,\"Ꭱ\"],[43890,1,\"Ꭲ\"],[43891,1,\"Ꭳ\"],[43892,1,\"Ꭴ\"],[43893,1,\"Ꭵ\"],[43894,1,\"Ꭶ\"],[43895,1,\"Ꭷ\"],[43896,1,\"Ꭸ\"],[43897,1,\"Ꭹ\"],[43898,1,\"Ꭺ\"],[43899,1,\"Ꭻ\"],[43900,1,\"Ꭼ\"],[43901,1,\"Ꭽ\"],[43902,1,\"Ꭾ\"],[43903,1,\"Ꭿ\"],[43904,1,\"Ꮀ\"],[43905,1,\"Ꮁ\"],[43906,1,\"Ꮂ\"],[43907,1,\"Ꮃ\"],[43908,1,\"Ꮄ\"],[43909,1,\"Ꮅ\"],[43910,1,\"Ꮆ\"],[43911,1,\"Ꮇ\"],[43912,1,\"Ꮈ\"],[43913,1,\"Ꮉ\"],[43914,1,\"Ꮊ\"],[43915,1,\"Ꮋ\"],[43916,1,\"Ꮌ\"],[43917,1,\"Ꮍ\"],[43918,1,\"Ꮎ\"],[43919,1,\"Ꮏ\"],[43920,1,\"Ꮐ\"],[43921,1,\"Ꮑ\"],[43922,1,\"Ꮒ\"],[43923,1,\"Ꮓ\"],[43924,1,\"Ꮔ\"],[43925,1,\"Ꮕ\"],[43926,1,\"Ꮖ\"],[43927,1,\"Ꮗ\"],[43928,1,\"Ꮘ\"],[43929,1,\"Ꮙ\"],[43930,1,\"Ꮚ\"],[43931,1,\"Ꮛ\"],[43932,1,\"Ꮜ\"],[43933,1,\"Ꮝ\"],[43934,1,\"Ꮞ\"],[43935,1,\"Ꮟ\"],[43936,1,\"Ꮠ\"],[43937,1,\"Ꮡ\"],[43938,1,\"Ꮢ\"],[43939,1,\"Ꮣ\"],[43940,1,\"Ꮤ\"],[43941,1,\"Ꮥ\"],[43942,1,\"Ꮦ\"],[43943,1,\"Ꮧ\"],[43944,1,\"Ꮨ\"],[43945,1,\"Ꮩ\"],[43946,1,\"Ꮪ\"],[43947,1,\"Ꮫ\"],[43948,1,\"Ꮬ\"],[43949,1,\"Ꮭ\"],[43950,1,\"Ꮮ\"],[43951,1,\"Ꮯ\"],[43952,1,\"Ꮰ\"],[43953,1,\"Ꮱ\"],[43954,1,\"Ꮲ\"],[43955,1,\"Ꮳ\"],[43956,1,\"Ꮴ\"],[43957,1,\"Ꮵ\"],[43958,1,\"Ꮶ\"],[43959,1,\"Ꮷ\"],[43960,1,\"Ꮸ\"],[43961,1,\"Ꮹ\"],[43962,1,\"Ꮺ\"],[43963,1,\"Ꮻ\"],[43964,1,\"Ꮼ\"],[43965,1,\"Ꮽ\"],[43966,1,\"Ꮾ\"],[43967,1,\"Ꮿ\"],[[43968,44010],2],[44011,2],[[44012,44013],2],[[44014,44015],3],[[44016,44025],2],[[44026,44031],3],[[44032,55203],2],[[55204,55215],3],[[55216,55238],2],[[55239,55242],3],[[55243,55291],2],[[55292,55295],3],[[55296,57343],3],[[57344,63743],3],[63744,1,\"豈\"],[63745,1,\"更\"],[63746,1,\"車\"],[63747,1,\"賈\"],[63748,1,\"滑\"],[63749,1,\"串\"],[63750,1,\"句\"],[[63751,63752],1,\"龜\"],[63753,1,\"契\"],[63754,1,\"金\"],[63755,1,\"喇\"],[63756,1,\"奈\"],[63757,1,\"懶\"],[63758,1,\"癩\"],[63759,1,\"羅\"],[63760,1,\"蘿\"],[63761,1,\"螺\"],[63762,1,\"裸\"],[63763,1,\"邏\"],[63764,1,\"樂\"],[63765,1,\"洛\"],[63766,1,\"烙\"],[63767,1,\"珞\"],[63768,1,\"落\"],[63769,1,\"酪\"],[63770,1,\"駱\"],[63771,1,\"亂\"],[63772,1,\"卵\"],[63773,1,\"欄\"],[63774,1,\"爛\"],[63775,1,\"蘭\"],[63776,1,\"鸞\"],[63777,1,\"嵐\"],[63778,1,\"濫\"],[63779,1,\"藍\"],[63780,1,\"襤\"],[63781,1,\"拉\"],[63782,1,\"臘\"],[63783,1,\"蠟\"],[63784,1,\"廊\"],[63785,1,\"朗\"],[63786,1,\"浪\"],[63787,1,\"狼\"],[63788,1,\"郎\"],[63789,1,\"來\"],[63790,1,\"冷\"],[63791,1,\"勞\"],[63792,1,\"擄\"],[63793,1,\"櫓\"],[63794,1,\"爐\"],[63795,1,\"盧\"],[63796,1,\"老\"],[63797,1,\"蘆\"],[63798,1,\"虜\"],[63799,1,\"路\"],[63800,1,\"露\"],[63801,1,\"魯\"],[63802,1,\"鷺\"],[63803,1,\"碌\"],[63804,1,\"祿\"],[63805,1,\"綠\"],[63806,1,\"菉\"],[63807,1,\"錄\"],[63808,1,\"鹿\"],[63809,1,\"論\"],[63810,1,\"壟\"],[63811,1,\"弄\"],[63812,1,\"籠\"],[63813,1,\"聾\"],[63814,1,\"牢\"],[63815,1,\"磊\"],[63816,1,\"賂\"],[63817,1,\"雷\"],[63818,1,\"壘\"],[63819,1,\"屢\"],[63820,1,\"樓\"],[63821,1,\"淚\"],[63822,1,\"漏\"],[63823,1,\"累\"],[63824,1,\"縷\"],[63825,1,\"陋\"],[63826,1,\"勒\"],[63827,1,\"肋\"],[63828,1,\"凜\"],[63829,1,\"凌\"],[63830,1,\"稜\"],[63831,1,\"綾\"],[63832,1,\"菱\"],[63833,1,\"陵\"],[63834,1,\"讀\"],[63835,1,\"拏\"],[63836,1,\"樂\"],[63837,1,\"諾\"],[63838,1,\"丹\"],[63839,1,\"寧\"],[63840,1,\"怒\"],[63841,1,\"率\"],[63842,1,\"異\"],[63843,1,\"北\"],[63844,1,\"磻\"],[63845,1,\"便\"],[63846,1,\"復\"],[63847,1,\"不\"],[63848,1,\"泌\"],[63849,1,\"數\"],[63850,1,\"索\"],[63851,1,\"參\"],[63852,1,\"塞\"],[63853,1,\"省\"],[63854,1,\"葉\"],[63855,1,\"說\"],[63856,1,\"殺\"],[63857,1,\"辰\"],[63858,1,\"沈\"],[63859,1,\"拾\"],[63860,1,\"若\"],[63861,1,\"掠\"],[63862,1,\"略\"],[63863,1,\"亮\"],[63864,1,\"兩\"],[63865,1,\"凉\"],[63866,1,\"梁\"],[63867,1,\"糧\"],[63868,1,\"良\"],[63869,1,\"諒\"],[63870,1,\"量\"],[63871,1,\"勵\"],[63872,1,\"呂\"],[63873,1,\"女\"],[63874,1,\"廬\"],[63875,1,\"旅\"],[63876,1,\"濾\"],[63877,1,\"礪\"],[63878,1,\"閭\"],[63879,1,\"驪\"],[63880,1,\"麗\"],[63881,1,\"黎\"],[63882,1,\"力\"],[63883,1,\"曆\"],[63884,1,\"歷\"],[63885,1,\"轢\"],[63886,1,\"年\"],[63887,1,\"憐\"],[63888,1,\"戀\"],[63889,1,\"撚\"],[63890,1,\"漣\"],[63891,1,\"煉\"],[63892,1,\"璉\"],[63893,1,\"秊\"],[63894,1,\"練\"],[63895,1,\"聯\"],[63896,1,\"輦\"],[63897,1,\"蓮\"],[63898,1,\"連\"],[63899,1,\"鍊\"],[63900,1,\"列\"],[63901,1,\"劣\"],[63902,1,\"咽\"],[63903,1,\"烈\"],[63904,1,\"裂\"],[63905,1,\"說\"],[63906,1,\"廉\"],[63907,1,\"念\"],[63908,1,\"捻\"],[63909,1,\"殮\"],[63910,1,\"簾\"],[63911,1,\"獵\"],[63912,1,\"令\"],[63913,1,\"囹\"],[63914,1,\"寧\"],[63915,1,\"嶺\"],[63916,1,\"怜\"],[63917,1,\"玲\"],[63918,1,\"瑩\"],[63919,1,\"羚\"],[63920,1,\"聆\"],[63921,1,\"鈴\"],[63922,1,\"零\"],[63923,1,\"靈\"],[63924,1,\"領\"],[63925,1,\"例\"],[63926,1,\"禮\"],[63927,1,\"醴\"],[63928,1,\"隸\"],[63929,1,\"惡\"],[63930,1,\"了\"],[63931,1,\"僚\"],[63932,1,\"寮\"],[63933,1,\"尿\"],[63934,1,\"料\"],[63935,1,\"樂\"],[63936,1,\"燎\"],[63937,1,\"療\"],[63938,1,\"蓼\"],[63939,1,\"遼\"],[63940,1,\"龍\"],[63941,1,\"暈\"],[63942,1,\"阮\"],[63943,1,\"劉\"],[63944,1,\"杻\"],[63945,1,\"柳\"],[63946,1,\"流\"],[63947,1,\"溜\"],[63948,1,\"琉\"],[63949,1,\"留\"],[63950,1,\"硫\"],[63951,1,\"紐\"],[63952,1,\"類\"],[63953,1,\"六\"],[63954,1,\"戮\"],[63955,1,\"陸\"],[63956,1,\"倫\"],[63957,1,\"崙\"],[63958,1,\"淪\"],[63959,1,\"輪\"],[63960,1,\"律\"],[63961,1,\"慄\"],[63962,1,\"栗\"],[63963,1,\"率\"],[63964,1,\"隆\"],[63965,1,\"利\"],[63966,1,\"吏\"],[63967,1,\"履\"],[63968,1,\"易\"],[63969,1,\"李\"],[63970,1,\"梨\"],[63971,1,\"泥\"],[63972,1,\"理\"],[63973,1,\"痢\"],[63974,1,\"罹\"],[63975,1,\"裏\"],[63976,1,\"裡\"],[63977,1,\"里\"],[63978,1,\"離\"],[63979,1,\"匿\"],[63980,1,\"溺\"],[63981,1,\"吝\"],[63982,1,\"燐\"],[63983,1,\"璘\"],[63984,1,\"藺\"],[63985,1,\"隣\"],[63986,1,\"鱗\"],[63987,1,\"麟\"],[63988,1,\"林\"],[63989,1,\"淋\"],[63990,1,\"臨\"],[63991,1,\"立\"],[63992,1,\"笠\"],[63993,1,\"粒\"],[63994,1,\"狀\"],[63995,1,\"炙\"],[63996,1,\"識\"],[63997,1,\"什\"],[63998,1,\"茶\"],[63999,1,\"刺\"],[64000,1,\"切\"],[64001,1,\"度\"],[64002,1,\"拓\"],[64003,1,\"糖\"],[64004,1,\"宅\"],[64005,1,\"洞\"],[64006,1,\"暴\"],[64007,1,\"輻\"],[64008,1,\"行\"],[64009,1,\"降\"],[64010,1,\"見\"],[64011,1,\"廓\"],[64012,1,\"兀\"],[64013,1,\"嗀\"],[[64014,64015],2],[64016,1,\"塚\"],[64017,2],[64018,1,\"晴\"],[[64019,64020],2],[64021,1,\"凞\"],[64022,1,\"猪\"],[64023,1,\"益\"],[64024,1,\"礼\"],[64025,1,\"神\"],[64026,1,\"祥\"],[64027,1,\"福\"],[64028,1,\"靖\"],[64029,1,\"精\"],[64030,1,\"羽\"],[64031,2],[64032,1,\"蘒\"],[64033,2],[64034,1,\"諸\"],[[64035,64036],2],[64037,1,\"逸\"],[64038,1,\"都\"],[[64039,64041],2],[64042,1,\"飯\"],[64043,1,\"飼\"],[64044,1,\"館\"],[64045,1,\"鶴\"],[64046,1,\"郞\"],[64047,1,\"隷\"],[64048,1,\"侮\"],[64049,1,\"僧\"],[64050,1,\"免\"],[64051,1,\"勉\"],[64052,1,\"勤\"],[64053,1,\"卑\"],[64054,1,\"喝\"],[64055,1,\"嘆\"],[64056,1,\"器\"],[64057,1,\"塀\"],[64058,1,\"墨\"],[64059,1,\"層\"],[64060,1,\"屮\"],[64061,1,\"悔\"],[64062,1,\"慨\"],[64063,1,\"憎\"],[64064,1,\"懲\"],[64065,1,\"敏\"],[64066,1,\"既\"],[64067,1,\"暑\"],[64068,1,\"梅\"],[64069,1,\"海\"],[64070,1,\"渚\"],[64071,1,\"漢\"],[64072,1,\"煮\"],[64073,1,\"爫\"],[64074,1,\"琢\"],[64075,1,\"碑\"],[64076,1,\"社\"],[64077,1,\"祉\"],[64078,1,\"祈\"],[64079,1,\"祐\"],[64080,1,\"祖\"],[64081,1,\"祝\"],[64082,1,\"禍\"],[64083,1,\"禎\"],[64084,1,\"穀\"],[64085,1,\"突\"],[64086,1,\"節\"],[64087,1,\"練\"],[64088,1,\"縉\"],[64089,1,\"繁\"],[64090,1,\"署\"],[64091,1,\"者\"],[64092,1,\"臭\"],[[64093,64094],1,\"艹\"],[64095,1,\"著\"],[64096,1,\"褐\"],[64097,1,\"視\"],[64098,1,\"謁\"],[64099,1,\"謹\"],[64100,1,\"賓\"],[64101,1,\"贈\"],[64102,1,\"辶\"],[64103,1,\"逸\"],[64104,1,\"難\"],[64105,1,\"響\"],[64106,1,\"頻\"],[64107,1,\"恵\"],[64108,1,\"𤋮\"],[64109,1,\"舘\"],[[64110,64111],3],[64112,1,\"並\"],[64113,1,\"况\"],[64114,1,\"全\"],[64115,1,\"侀\"],[64116,1,\"充\"],[64117,1,\"冀\"],[64118,1,\"勇\"],[64119,1,\"勺\"],[64120,1,\"喝\"],[64121,1,\"啕\"],[64122,1,\"喙\"],[64123,1,\"嗢\"],[64124,1,\"塚\"],[64125,1,\"墳\"],[64126,1,\"奄\"],[64127,1,\"奔\"],[64128,1,\"婢\"],[64129,1,\"嬨\"],[64130,1,\"廒\"],[64131,1,\"廙\"],[64132,1,\"彩\"],[64133,1,\"徭\"],[64134,1,\"惘\"],[64135,1,\"慎\"],[64136,1,\"愈\"],[64137,1,\"憎\"],[64138,1,\"慠\"],[64139,1,\"懲\"],[64140,1,\"戴\"],[64141,1,\"揄\"],[64142,1,\"搜\"],[64143,1,\"摒\"],[64144,1,\"敖\"],[64145,1,\"晴\"],[64146,1,\"朗\"],[64147,1,\"望\"],[64148,1,\"杖\"],[64149,1,\"歹\"],[64150,1,\"殺\"],[64151,1,\"流\"],[64152,1,\"滛\"],[64153,1,\"滋\"],[64154,1,\"漢\"],[64155,1,\"瀞\"],[64156,1,\"煮\"],[64157,1,\"瞧\"],[64158,1,\"爵\"],[64159,1,\"犯\"],[64160,1,\"猪\"],[64161,1,\"瑱\"],[64162,1,\"甆\"],[64163,1,\"画\"],[64164,1,\"瘝\"],[64165,1,\"瘟\"],[64166,1,\"益\"],[64167,1,\"盛\"],[64168,1,\"直\"],[64169,1,\"睊\"],[64170,1,\"着\"],[64171,1,\"磌\"],[64172,1,\"窱\"],[64173,1,\"節\"],[64174,1,\"类\"],[64175,1,\"絛\"],[64176,1,\"練\"],[64177,1,\"缾\"],[64178,1,\"者\"],[64179,1,\"荒\"],[64180,1,\"華\"],[64181,1,\"蝹\"],[64182,1,\"襁\"],[64183,1,\"覆\"],[64184,1,\"視\"],[64185,1,\"調\"],[64186,1,\"諸\"],[64187,1,\"請\"],[64188,1,\"謁\"],[64189,1,\"諾\"],[64190,1,\"諭\"],[64191,1,\"謹\"],[64192,1,\"變\"],[64193,1,\"贈\"],[64194,1,\"輸\"],[64195,1,\"遲\"],[64196,1,\"醙\"],[64197,1,\"鉶\"],[64198,1,\"陼\"],[64199,1,\"難\"],[64200,1,\"靖\"],[64201,1,\"韛\"],[64202,1,\"響\"],[64203,1,\"頋\"],[64204,1,\"頻\"],[64205,1,\"鬒\"],[64206,1,\"龜\"],[64207,1,\"𢡊\"],[64208,1,\"𢡄\"],[64209,1,\"𣏕\"],[64210,1,\"㮝\"],[64211,1,\"䀘\"],[64212,1,\"䀹\"],[64213,1,\"𥉉\"],[64214,1,\"𥳐\"],[64215,1,\"𧻓\"],[64216,1,\"齃\"],[64217,1,\"龎\"],[[64218,64255],3],[64256,1,\"ff\"],[64257,1,\"fi\"],[64258,1,\"fl\"],[64259,1,\"ffi\"],[64260,1,\"ffl\"],[[64261,64262],1,\"st\"],[[64263,64274],3],[64275,1,\"մն\"],[64276,1,\"մե\"],[64277,1,\"մի\"],[64278,1,\"վն\"],[64279,1,\"մխ\"],[[64280,64284],3],[64285,1,\"יִ\"],[64286,2],[64287,1,\"ײַ\"],[64288,1,\"ע\"],[64289,1,\"א\"],[64290,1,\"ד\"],[64291,1,\"ה\"],[64292,1,\"כ\"],[64293,1,\"ל\"],[64294,1,\"ם\"],[64295,1,\"ר\"],[64296,1,\"ת\"],[64297,1,\"+\"],[64298,1,\"שׁ\"],[64299,1,\"שׂ\"],[64300,1,\"שּׁ\"],[64301,1,\"שּׂ\"],[64302,1,\"אַ\"],[64303,1,\"אָ\"],[64304,1,\"אּ\"],[64305,1,\"בּ\"],[64306,1,\"גּ\"],[64307,1,\"דּ\"],[64308,1,\"הּ\"],[64309,1,\"וּ\"],[64310,1,\"זּ\"],[64311,3],[64312,1,\"טּ\"],[64313,1,\"יּ\"],[64314,1,\"ךּ\"],[64315,1,\"כּ\"],[64316,1,\"לּ\"],[64317,3],[64318,1,\"מּ\"],[64319,3],[64320,1,\"נּ\"],[64321,1,\"סּ\"],[64322,3],[64323,1,\"ףּ\"],[64324,1,\"פּ\"],[64325,3],[64326,1,\"צּ\"],[64327,1,\"קּ\"],[64328,1,\"רּ\"],[64329,1,\"שּ\"],[64330,1,\"תּ\"],[64331,1,\"וֹ\"],[64332,1,\"בֿ\"],[64333,1,\"כֿ\"],[64334,1,\"פֿ\"],[64335,1,\"אל\"],[[64336,64337],1,\"ٱ\"],[[64338,64341],1,\"ٻ\"],[[64342,64345],1,\"پ\"],[[64346,64349],1,\"ڀ\"],[[64350,64353],1,\"ٺ\"],[[64354,64357],1,\"ٿ\"],[[64358,64361],1,\"ٹ\"],[[64362,64365],1,\"ڤ\"],[[64366,64369],1,\"ڦ\"],[[64370,64373],1,\"ڄ\"],[[64374,64377],1,\"ڃ\"],[[64378,64381],1,\"چ\"],[[64382,64385],1,\"ڇ\"],[[64386,64387],1,\"ڍ\"],[[64388,64389],1,\"ڌ\"],[[64390,64391],1,\"ڎ\"],[[64392,64393],1,\"ڈ\"],[[64394,64395],1,\"ژ\"],[[64396,64397],1,\"ڑ\"],[[64398,64401],1,\"ک\"],[[64402,64405],1,\"گ\"],[[64406,64409],1,\"ڳ\"],[[64410,64413],1,\"ڱ\"],[[64414,64415],1,\"ں\"],[[64416,64419],1,\"ڻ\"],[[64420,64421],1,\"ۀ\"],[[64422,64425],1,\"ہ\"],[[64426,64429],1,\"ھ\"],[[64430,64431],1,\"ے\"],[[64432,64433],1,\"ۓ\"],[[64434,64449],2],[64450,2],[[64451,64466],3],[[64467,64470],1,\"ڭ\"],[[64471,64472],1,\"ۇ\"],[[64473,64474],1,\"ۆ\"],[[64475,64476],1,\"ۈ\"],[64477,1,\"ۇٴ\"],[[64478,64479],1,\"ۋ\"],[[64480,64481],1,\"ۅ\"],[[64482,64483],1,\"ۉ\"],[[64484,64487],1,\"ې\"],[[64488,64489],1,\"ى\"],[[64490,64491],1,\"ئا\"],[[64492,64493],1,\"ئە\"],[[64494,64495],1,\"ئو\"],[[64496,64497],1,\"ئۇ\"],[[64498,64499],1,\"ئۆ\"],[[64500,64501],1,\"ئۈ\"],[[64502,64504],1,\"ئې\"],[[64505,64507],1,\"ئى\"],[[64508,64511],1,\"ی\"],[64512,1,\"ئج\"],[64513,1,\"ئح\"],[64514,1,\"ئم\"],[64515,1,\"ئى\"],[64516,1,\"ئي\"],[64517,1,\"بج\"],[64518,1,\"بح\"],[64519,1,\"بخ\"],[64520,1,\"بم\"],[64521,1,\"بى\"],[64522,1,\"بي\"],[64523,1,\"تج\"],[64524,1,\"تح\"],[64525,1,\"تخ\"],[64526,1,\"تم\"],[64527,1,\"تى\"],[64528,1,\"تي\"],[64529,1,\"ثج\"],[64530,1,\"ثم\"],[64531,1,\"ثى\"],[64532,1,\"ثي\"],[64533,1,\"جح\"],[64534,1,\"جم\"],[64535,1,\"حج\"],[64536,1,\"حم\"],[64537,1,\"خج\"],[64538,1,\"خح\"],[64539,1,\"خم\"],[64540,1,\"سج\"],[64541,1,\"سح\"],[64542,1,\"سخ\"],[64543,1,\"سم\"],[64544,1,\"صح\"],[64545,1,\"صم\"],[64546,1,\"ضج\"],[64547,1,\"ضح\"],[64548,1,\"ضخ\"],[64549,1,\"ضم\"],[64550,1,\"طح\"],[64551,1,\"طم\"],[64552,1,\"ظم\"],[64553,1,\"عج\"],[64554,1,\"عم\"],[64555,1,\"غج\"],[64556,1,\"غم\"],[64557,1,\"فج\"],[64558,1,\"فح\"],[64559,1,\"فخ\"],[64560,1,\"فم\"],[64561,1,\"فى\"],[64562,1,\"في\"],[64563,1,\"قح\"],[64564,1,\"قم\"],[64565,1,\"قى\"],[64566,1,\"قي\"],[64567,1,\"كا\"],[64568,1,\"كج\"],[64569,1,\"كح\"],[64570,1,\"كخ\"],[64571,1,\"كل\"],[64572,1,\"كم\"],[64573,1,\"كى\"],[64574,1,\"كي\"],[64575,1,\"لج\"],[64576,1,\"لح\"],[64577,1,\"لخ\"],[64578,1,\"لم\"],[64579,1,\"لى\"],[64580,1,\"لي\"],[64581,1,\"مج\"],[64582,1,\"مح\"],[64583,1,\"مخ\"],[64584,1,\"مم\"],[64585,1,\"مى\"],[64586,1,\"مي\"],[64587,1,\"نج\"],[64588,1,\"نح\"],[64589,1,\"نخ\"],[64590,1,\"نم\"],[64591,1,\"نى\"],[64592,1,\"ني\"],[64593,1,\"هج\"],[64594,1,\"هم\"],[64595,1,\"هى\"],[64596,1,\"هي\"],[64597,1,\"يج\"],[64598,1,\"يح\"],[64599,1,\"يخ\"],[64600,1,\"يم\"],[64601,1,\"يى\"],[64602,1,\"يي\"],[64603,1,\"ذٰ\"],[64604,1,\"رٰ\"],[64605,1,\"ىٰ\"],[64606,1,\" ٌّ\"],[64607,1,\" ٍّ\"],[64608,1,\" َّ\"],[64609,1,\" ُّ\"],[64610,1,\" ِّ\"],[64611,1,\" ّٰ\"],[64612,1,\"ئر\"],[64613,1,\"ئز\"],[64614,1,\"ئم\"],[64615,1,\"ئن\"],[64616,1,\"ئى\"],[64617,1,\"ئي\"],[64618,1,\"بر\"],[64619,1,\"بز\"],[64620,1,\"بم\"],[64621,1,\"بن\"],[64622,1,\"بى\"],[64623,1,\"بي\"],[64624,1,\"تر\"],[64625,1,\"تز\"],[64626,1,\"تم\"],[64627,1,\"تن\"],[64628,1,\"تى\"],[64629,1,\"تي\"],[64630,1,\"ثر\"],[64631,1,\"ثز\"],[64632,1,\"ثم\"],[64633,1,\"ثن\"],[64634,1,\"ثى\"],[64635,1,\"ثي\"],[64636,1,\"فى\"],[64637,1,\"في\"],[64638,1,\"قى\"],[64639,1,\"قي\"],[64640,1,\"كا\"],[64641,1,\"كل\"],[64642,1,\"كم\"],[64643,1,\"كى\"],[64644,1,\"كي\"],[64645,1,\"لم\"],[64646,1,\"لى\"],[64647,1,\"لي\"],[64648,1,\"ما\"],[64649,1,\"مم\"],[64650,1,\"نر\"],[64651,1,\"نز\"],[64652,1,\"نم\"],[64653,1,\"نن\"],[64654,1,\"نى\"],[64655,1,\"ني\"],[64656,1,\"ىٰ\"],[64657,1,\"ير\"],[64658,1,\"يز\"],[64659,1,\"يم\"],[64660,1,\"ين\"],[64661,1,\"يى\"],[64662,1,\"يي\"],[64663,1,\"ئج\"],[64664,1,\"ئح\"],[64665,1,\"ئخ\"],[64666,1,\"ئم\"],[64667,1,\"ئه\"],[64668,1,\"بج\"],[64669,1,\"بح\"],[64670,1,\"بخ\"],[64671,1,\"بم\"],[64672,1,\"به\"],[64673,1,\"تج\"],[64674,1,\"تح\"],[64675,1,\"تخ\"],[64676,1,\"تم\"],[64677,1,\"ته\"],[64678,1,\"ثم\"],[64679,1,\"جح\"],[64680,1,\"جم\"],[64681,1,\"حج\"],[64682,1,\"حم\"],[64683,1,\"خج\"],[64684,1,\"خم\"],[64685,1,\"سج\"],[64686,1,\"سح\"],[64687,1,\"سخ\"],[64688,1,\"سم\"],[64689,1,\"صح\"],[64690,1,\"صخ\"],[64691,1,\"صم\"],[64692,1,\"ضج\"],[64693,1,\"ضح\"],[64694,1,\"ضخ\"],[64695,1,\"ضم\"],[64696,1,\"طح\"],[64697,1,\"ظم\"],[64698,1,\"عج\"],[64699,1,\"عم\"],[64700,1,\"غج\"],[64701,1,\"غم\"],[64702,1,\"فج\"],[64703,1,\"فح\"],[64704,1,\"فخ\"],[64705,1,\"فم\"],[64706,1,\"قح\"],[64707,1,\"قم\"],[64708,1,\"كج\"],[64709,1,\"كح\"],[64710,1,\"كخ\"],[64711,1,\"كل\"],[64712,1,\"كم\"],[64713,1,\"لج\"],[64714,1,\"لح\"],[64715,1,\"لخ\"],[64716,1,\"لم\"],[64717,1,\"له\"],[64718,1,\"مج\"],[64719,1,\"مح\"],[64720,1,\"مخ\"],[64721,1,\"مم\"],[64722,1,\"نج\"],[64723,1,\"نح\"],[64724,1,\"نخ\"],[64725,1,\"نم\"],[64726,1,\"نه\"],[64727,1,\"هج\"],[64728,1,\"هم\"],[64729,1,\"هٰ\"],[64730,1,\"يج\"],[64731,1,\"يح\"],[64732,1,\"يخ\"],[64733,1,\"يم\"],[64734,1,\"يه\"],[64735,1,\"ئم\"],[64736,1,\"ئه\"],[64737,1,\"بم\"],[64738,1,\"به\"],[64739,1,\"تم\"],[64740,1,\"ته\"],[64741,1,\"ثم\"],[64742,1,\"ثه\"],[64743,1,\"سم\"],[64744,1,\"سه\"],[64745,1,\"شم\"],[64746,1,\"شه\"],[64747,1,\"كل\"],[64748,1,\"كم\"],[64749,1,\"لم\"],[64750,1,\"نم\"],[64751,1,\"نه\"],[64752,1,\"يم\"],[64753,1,\"يه\"],[64754,1,\"ـَّ\"],[64755,1,\"ـُّ\"],[64756,1,\"ـِّ\"],[64757,1,\"طى\"],[64758,1,\"طي\"],[64759,1,\"عى\"],[64760,1,\"عي\"],[64761,1,\"غى\"],[64762,1,\"غي\"],[64763,1,\"سى\"],[64764,1,\"سي\"],[64765,1,\"شى\"],[64766,1,\"شي\"],[64767,1,\"حى\"],[64768,1,\"حي\"],[64769,1,\"جى\"],[64770,1,\"جي\"],[64771,1,\"خى\"],[64772,1,\"خي\"],[64773,1,\"صى\"],[64774,1,\"صي\"],[64775,1,\"ضى\"],[64776,1,\"ضي\"],[64777,1,\"شج\"],[64778,1,\"شح\"],[64779,1,\"شخ\"],[64780,1,\"شم\"],[64781,1,\"شر\"],[64782,1,\"سر\"],[64783,1,\"صر\"],[64784,1,\"ضر\"],[64785,1,\"طى\"],[64786,1,\"طي\"],[64787,1,\"عى\"],[64788,1,\"عي\"],[64789,1,\"غى\"],[64790,1,\"غي\"],[64791,1,\"سى\"],[64792,1,\"سي\"],[64793,1,\"شى\"],[64794,1,\"شي\"],[64795,1,\"حى\"],[64796,1,\"حي\"],[64797,1,\"جى\"],[64798,1,\"جي\"],[64799,1,\"خى\"],[64800,1,\"خي\"],[64801,1,\"صى\"],[64802,1,\"صي\"],[64803,1,\"ضى\"],[64804,1,\"ضي\"],[64805,1,\"شج\"],[64806,1,\"شح\"],[64807,1,\"شخ\"],[64808,1,\"شم\"],[64809,1,\"شر\"],[64810,1,\"سر\"],[64811,1,\"صر\"],[64812,1,\"ضر\"],[64813,1,\"شج\"],[64814,1,\"شح\"],[64815,1,\"شخ\"],[64816,1,\"شم\"],[64817,1,\"سه\"],[64818,1,\"شه\"],[64819,1,\"طم\"],[64820,1,\"سج\"],[64821,1,\"سح\"],[64822,1,\"سخ\"],[64823,1,\"شج\"],[64824,1,\"شح\"],[64825,1,\"شخ\"],[64826,1,\"طم\"],[64827,1,\"ظم\"],[[64828,64829],1,\"اً\"],[[64830,64831],2],[[64832,64847],2],[64848,1,\"تجم\"],[[64849,64850],1,\"تحج\"],[64851,1,\"تحم\"],[64852,1,\"تخم\"],[64853,1,\"تمج\"],[64854,1,\"تمح\"],[64855,1,\"تمخ\"],[[64856,64857],1,\"جمح\"],[64858,1,\"حمي\"],[64859,1,\"حمى\"],[64860,1,\"سحج\"],[64861,1,\"سجح\"],[64862,1,\"سجى\"],[[64863,64864],1,\"سمح\"],[64865,1,\"سمج\"],[[64866,64867],1,\"سمم\"],[[64868,64869],1,\"صحح\"],[64870,1,\"صمم\"],[[64871,64872],1,\"شحم\"],[64873,1,\"شجي\"],[[64874,64875],1,\"شمخ\"],[[64876,64877],1,\"شمم\"],[64878,1,\"ضحى\"],[[64879,64880],1,\"ضخم\"],[[64881,64882],1,\"طمح\"],[64883,1,\"طمم\"],[64884,1,\"طمي\"],[64885,1,\"عجم\"],[[64886,64887],1,\"عمم\"],[64888,1,\"عمى\"],[64889,1,\"غمم\"],[64890,1,\"غمي\"],[64891,1,\"غمى\"],[[64892,64893],1,\"فخم\"],[64894,1,\"قمح\"],[64895,1,\"قمم\"],[64896,1,\"لحم\"],[64897,1,\"لحي\"],[64898,1,\"لحى\"],[[64899,64900],1,\"لجج\"],[[64901,64902],1,\"لخم\"],[[64903,64904],1,\"لمح\"],[64905,1,\"محج\"],[64906,1,\"محم\"],[64907,1,\"محي\"],[64908,1,\"مجح\"],[64909,1,\"مجم\"],[64910,1,\"مخج\"],[64911,1,\"مخم\"],[[64912,64913],3],[64914,1,\"مجخ\"],[64915,1,\"همج\"],[64916,1,\"همم\"],[64917,1,\"نحم\"],[64918,1,\"نحى\"],[[64919,64920],1,\"نجم\"],[64921,1,\"نجى\"],[64922,1,\"نمي\"],[64923,1,\"نمى\"],[[64924,64925],1,\"يمم\"],[64926,1,\"بخي\"],[64927,1,\"تجي\"],[64928,1,\"تجى\"],[64929,1,\"تخي\"],[64930,1,\"تخى\"],[64931,1,\"تمي\"],[64932,1,\"تمى\"],[64933,1,\"جمي\"],[64934,1,\"جحى\"],[64935,1,\"جمى\"],[64936,1,\"سخى\"],[64937,1,\"صحي\"],[64938,1,\"شحي\"],[64939,1,\"ضحي\"],[64940,1,\"لجي\"],[64941,1,\"لمي\"],[64942,1,\"يحي\"],[64943,1,\"يجي\"],[64944,1,\"يمي\"],[64945,1,\"ممي\"],[64946,1,\"قمي\"],[64947,1,\"نحي\"],[64948,1,\"قمح\"],[64949,1,\"لحم\"],[64950,1,\"عمي\"],[64951,1,\"كمي\"],[64952,1,\"نجح\"],[64953,1,\"مخي\"],[64954,1,\"لجم\"],[64955,1,\"كمم\"],[64956,1,\"لجم\"],[64957,1,\"نجح\"],[64958,1,\"جحي\"],[64959,1,\"حجي\"],[64960,1,\"مجي\"],[64961,1,\"فمي\"],[64962,1,\"بحي\"],[64963,1,\"كمم\"],[64964,1,\"عجم\"],[64965,1,\"صمم\"],[64966,1,\"سخي\"],[64967,1,\"نجي\"],[[64968,64974],3],[64975,2],[[64976,65007],3],[65008,1,\"صلے\"],[65009,1,\"قلے\"],[65010,1,\"الله\"],[65011,1,\"اكبر\"],[65012,1,\"محمد\"],[65013,1,\"صلعم\"],[65014,1,\"رسول\"],[65015,1,\"عليه\"],[65016,1,\"وسلم\"],[65017,1,\"صلى\"],[65018,1,\"صلى الله عليه وسلم\"],[65019,1,\"جل جلاله\"],[65020,1,\"ریال\"],[65021,2],[[65022,65023],2],[[65024,65039],7],[65040,1,\",\"],[65041,1,\"、\"],[65042,3],[65043,1,\":\"],[65044,1,\";\"],[65045,1,\"!\"],[65046,1,\"?\"],[65047,1,\"〖\"],[65048,1,\"〗\"],[65049,3],[[65050,65055],3],[[65056,65059],2],[[65060,65062],2],[[65063,65069],2],[[65070,65071],2],[65072,3],[65073,1,\"—\"],[65074,1,\"–\"],[[65075,65076],1,\"_\"],[65077,1,\"(\"],[65078,1,\")\"],[65079,1,\"{\"],[65080,1,\"}\"],[65081,1,\"〔\"],[65082,1,\"〕\"],[65083,1,\"【\"],[65084,1,\"】\"],[65085,1,\"《\"],[65086,1,\"》\"],[65087,1,\"〈\"],[65088,1,\"〉\"],[65089,1,\"「\"],[65090,1,\"」\"],[65091,1,\"『\"],[65092,1,\"』\"],[[65093,65094],2],[65095,1,\"[\"],[65096,1,\"]\"],[[65097,65100],1,\" ̅\"],[[65101,65103],1,\"_\"],[65104,1,\",\"],[65105,1,\"、\"],[65106,3],[65107,3],[65108,1,\";\"],[65109,1,\":\"],[65110,1,\"?\"],[65111,1,\"!\"],[65112,1,\"—\"],[65113,1,\"(\"],[65114,1,\")\"],[65115,1,\"{\"],[65116,1,\"}\"],[65117,1,\"〔\"],[65118,1,\"〕\"],[65119,1,\"#\"],[65120,1,\"&\"],[65121,1,\"*\"],[65122,1,\"+\"],[65123,1,\"-\"],[65124,1,\"<\"],[65125,1,\">\"],[65126,1,\"=\"],[65127,3],[65128,1,\"\\\\\"],[65129,1,\"$\"],[65130,1,\"%\"],[65131,1,\"@\"],[[65132,65135],3],[65136,1,\" ً\"],[65137,1,\"ـً\"],[65138,1,\" ٌ\"],[65139,2],[65140,1,\" ٍ\"],[65141,3],[65142,1,\" َ\"],[65143,1,\"ـَ\"],[65144,1,\" ُ\"],[65145,1,\"ـُ\"],[65146,1,\" ِ\"],[65147,1,\"ـِ\"],[65148,1,\" ّ\"],[65149,1,\"ـّ\"],[65150,1,\" ْ\"],[65151,1,\"ـْ\"],[65152,1,\"ء\"],[[65153,65154],1,\"آ\"],[[65155,65156],1,\"أ\"],[[65157,65158],1,\"ؤ\"],[[65159,65160],1,\"إ\"],[[65161,65164],1,\"ئ\"],[[65165,65166],1,\"ا\"],[[65167,65170],1,\"ب\"],[[65171,65172],1,\"ة\"],[[65173,65176],1,\"ت\"],[[65177,65180],1,\"ث\"],[[65181,65184],1,\"ج\"],[[65185,65188],1,\"ح\"],[[65189,65192],1,\"خ\"],[[65193,65194],1,\"د\"],[[65195,65196],1,\"ذ\"],[[65197,65198],1,\"ر\"],[[65199,65200],1,\"ز\"],[[65201,65204],1,\"س\"],[[65205,65208],1,\"ش\"],[[65209,65212],1,\"ص\"],[[65213,65216],1,\"ض\"],[[65217,65220],1,\"ط\"],[[65221,65224],1,\"ظ\"],[[65225,65228],1,\"ع\"],[[65229,65232],1,\"غ\"],[[65233,65236],1,\"ف\"],[[65237,65240],1,\"ق\"],[[65241,65244],1,\"ك\"],[[65245,65248],1,\"ل\"],[[65249,65252],1,\"م\"],[[65253,65256],1,\"ن\"],[[65257,65260],1,\"ه\"],[[65261,65262],1,\"و\"],[[65263,65264],1,\"ى\"],[[65265,65268],1,\"ي\"],[[65269,65270],1,\"لآ\"],[[65271,65272],1,\"لأ\"],[[65273,65274],1,\"لإ\"],[[65275,65276],1,\"لا\"],[[65277,65278],3],[65279,7],[65280,3],[65281,1,\"!\"],[65282,1,\"\\\"\"],[65283,1,\"#\"],[65284,1,\"$\"],[65285,1,\"%\"],[65286,1,\"&\"],[65287,1,\"'\"],[65288,1,\"(\"],[65289,1,\")\"],[65290,1,\"*\"],[65291,1,\"+\"],[65292,1,\",\"],[65293,1,\"-\"],[65294,1,\".\"],[65295,1,\"/\"],[65296,1,\"0\"],[65297,1,\"1\"],[65298,1,\"2\"],[65299,1,\"3\"],[65300,1,\"4\"],[65301,1,\"5\"],[65302,1,\"6\"],[65303,1,\"7\"],[65304,1,\"8\"],[65305,1,\"9\"],[65306,1,\":\"],[65307,1,\";\"],[65308,1,\"<\"],[65309,1,\"=\"],[65310,1,\">\"],[65311,1,\"?\"],[65312,1,\"@\"],[65313,1,\"a\"],[65314,1,\"b\"],[65315,1,\"c\"],[65316,1,\"d\"],[65317,1,\"e\"],[65318,1,\"f\"],[65319,1,\"g\"],[65320,1,\"h\"],[65321,1,\"i\"],[65322,1,\"j\"],[65323,1,\"k\"],[65324,1,\"l\"],[65325,1,\"m\"],[65326,1,\"n\"],[65327,1,\"o\"],[65328,1,\"p\"],[65329,1,\"q\"],[65330,1,\"r\"],[65331,1,\"s\"],[65332,1,\"t\"],[65333,1,\"u\"],[65334,1,\"v\"],[65335,1,\"w\"],[65336,1,\"x\"],[65337,1,\"y\"],[65338,1,\"z\"],[65339,1,\"[\"],[65340,1,\"\\\\\"],[65341,1,\"]\"],[65342,1,\"^\"],[65343,1,\"_\"],[65344,1,\"`\"],[65345,1,\"a\"],[65346,1,\"b\"],[65347,1,\"c\"],[65348,1,\"d\"],[65349,1,\"e\"],[65350,1,\"f\"],[65351,1,\"g\"],[65352,1,\"h\"],[65353,1,\"i\"],[65354,1,\"j\"],[65355,1,\"k\"],[65356,1,\"l\"],[65357,1,\"m\"],[65358,1,\"n\"],[65359,1,\"o\"],[65360,1,\"p\"],[65361,1,\"q\"],[65362,1,\"r\"],[65363,1,\"s\"],[65364,1,\"t\"],[65365,1,\"u\"],[65366,1,\"v\"],[65367,1,\"w\"],[65368,1,\"x\"],[65369,1,\"y\"],[65370,1,\"z\"],[65371,1,\"{\"],[65372,1,\"|\"],[65373,1,\"}\"],[65374,1,\"~\"],[65375,1,\"⦅\"],[65376,1,\"⦆\"],[65377,1,\".\"],[65378,1,\"「\"],[65379,1,\"」\"],[65380,1,\"、\"],[65381,1,\"・\"],[65382,1,\"ヲ\"],[65383,1,\"ァ\"],[65384,1,\"ィ\"],[65385,1,\"ゥ\"],[65386,1,\"ェ\"],[65387,1,\"ォ\"],[65388,1,\"ャ\"],[65389,1,\"ュ\"],[65390,1,\"ョ\"],[65391,1,\"ッ\"],[65392,1,\"ー\"],[65393,1,\"ア\"],[65394,1,\"イ\"],[65395,1,\"ウ\"],[65396,1,\"エ\"],[65397,1,\"オ\"],[65398,1,\"カ\"],[65399,1,\"キ\"],[65400,1,\"ク\"],[65401,1,\"ケ\"],[65402,1,\"コ\"],[65403,1,\"サ\"],[65404,1,\"シ\"],[65405,1,\"ス\"],[65406,1,\"セ\"],[65407,1,\"ソ\"],[65408,1,\"タ\"],[65409,1,\"チ\"],[65410,1,\"ツ\"],[65411,1,\"テ\"],[65412,1,\"ト\"],[65413,1,\"ナ\"],[65414,1,\"ニ\"],[65415,1,\"ヌ\"],[65416,1,\"ネ\"],[65417,1,\"ノ\"],[65418,1,\"ハ\"],[65419,1,\"ヒ\"],[65420,1,\"フ\"],[65421,1,\"ヘ\"],[65422,1,\"ホ\"],[65423,1,\"マ\"],[65424,1,\"ミ\"],[65425,1,\"ム\"],[65426,1,\"メ\"],[65427,1,\"モ\"],[65428,1,\"ヤ\"],[65429,1,\"ユ\"],[65430,1,\"ヨ\"],[65431,1,\"ラ\"],[65432,1,\"リ\"],[65433,1,\"ル\"],[65434,1,\"レ\"],[65435,1,\"ロ\"],[65436,1,\"ワ\"],[65437,1,\"ン\"],[65438,1,\"゙\"],[65439,1,\"゚\"],[65440,7],[65441,1,\"ᄀ\"],[65442,1,\"ᄁ\"],[65443,1,\"ᆪ\"],[65444,1,\"ᄂ\"],[65445,1,\"ᆬ\"],[65446,1,\"ᆭ\"],[65447,1,\"ᄃ\"],[65448,1,\"ᄄ\"],[65449,1,\"ᄅ\"],[65450,1,\"ᆰ\"],[65451,1,\"ᆱ\"],[65452,1,\"ᆲ\"],[65453,1,\"ᆳ\"],[65454,1,\"ᆴ\"],[65455,1,\"ᆵ\"],[65456,1,\"ᄚ\"],[65457,1,\"ᄆ\"],[65458,1,\"ᄇ\"],[65459,1,\"ᄈ\"],[65460,1,\"ᄡ\"],[65461,1,\"ᄉ\"],[65462,1,\"ᄊ\"],[65463,1,\"ᄋ\"],[65464,1,\"ᄌ\"],[65465,1,\"ᄍ\"],[65466,1,\"ᄎ\"],[65467,1,\"ᄏ\"],[65468,1,\"ᄐ\"],[65469,1,\"ᄑ\"],[65470,1,\"ᄒ\"],[[65471,65473],3],[65474,1,\"ᅡ\"],[65475,1,\"ᅢ\"],[65476,1,\"ᅣ\"],[65477,1,\"ᅤ\"],[65478,1,\"ᅥ\"],[65479,1,\"ᅦ\"],[[65480,65481],3],[65482,1,\"ᅧ\"],[65483,1,\"ᅨ\"],[65484,1,\"ᅩ\"],[65485,1,\"ᅪ\"],[65486,1,\"ᅫ\"],[65487,1,\"ᅬ\"],[[65488,65489],3],[65490,1,\"ᅭ\"],[65491,1,\"ᅮ\"],[65492,1,\"ᅯ\"],[65493,1,\"ᅰ\"],[65494,1,\"ᅱ\"],[65495,1,\"ᅲ\"],[[65496,65497],3],[65498,1,\"ᅳ\"],[65499,1,\"ᅴ\"],[65500,1,\"ᅵ\"],[[65501,65503],3],[65504,1,\"¢\"],[65505,1,\"£\"],[65506,1,\"¬\"],[65507,1,\" ̄\"],[65508,1,\"¦\"],[65509,1,\"¥\"],[65510,1,\"₩\"],[65511,3],[65512,1,\"│\"],[65513,1,\"←\"],[65514,1,\"↑\"],[65515,1,\"→\"],[65516,1,\"↓\"],[65517,1,\"■\"],[65518,1,\"○\"],[[65519,65528],3],[[65529,65531],3],[65532,3],[65533,3],[[65534,65535],3],[[65536,65547],2],[65548,3],[[65549,65574],2],[65575,3],[[65576,65594],2],[65595,3],[[65596,65597],2],[65598,3],[[65599,65613],2],[[65614,65615],3],[[65616,65629],2],[[65630,65663],3],[[65664,65786],2],[[65787,65791],3],[[65792,65794],2],[[65795,65798],3],[[65799,65843],2],[[65844,65846],3],[[65847,65855],2],[[65856,65930],2],[[65931,65932],2],[[65933,65934],2],[65935,3],[[65936,65947],2],[65948,2],[[65949,65951],3],[65952,2],[[65953,65999],3],[[66000,66044],2],[66045,2],[[66046,66175],3],[[66176,66204],2],[[66205,66207],3],[[66208,66256],2],[[66257,66271],3],[66272,2],[[66273,66299],2],[[66300,66303],3],[[66304,66334],2],[66335,2],[[66336,66339],2],[[66340,66348],3],[[66349,66351],2],[[66352,66368],2],[66369,2],[[66370,66377],2],[66378,2],[[66379,66383],3],[[66384,66426],2],[[66427,66431],3],[[66432,66461],2],[66462,3],[66463,2],[[66464,66499],2],[[66500,66503],3],[[66504,66511],2],[[66512,66517],2],[[66518,66559],3],[66560,1,\"𐐨\"],[66561,1,\"𐐩\"],[66562,1,\"𐐪\"],[66563,1,\"𐐫\"],[66564,1,\"𐐬\"],[66565,1,\"𐐭\"],[66566,1,\"𐐮\"],[66567,1,\"𐐯\"],[66568,1,\"𐐰\"],[66569,1,\"𐐱\"],[66570,1,\"𐐲\"],[66571,1,\"𐐳\"],[66572,1,\"𐐴\"],[66573,1,\"𐐵\"],[66574,1,\"𐐶\"],[66575,1,\"𐐷\"],[66576,1,\"𐐸\"],[66577,1,\"𐐹\"],[66578,1,\"𐐺\"],[66579,1,\"𐐻\"],[66580,1,\"𐐼\"],[66581,1,\"𐐽\"],[66582,1,\"𐐾\"],[66583,1,\"𐐿\"],[66584,1,\"𐑀\"],[66585,1,\"𐑁\"],[66586,1,\"𐑂\"],[66587,1,\"𐑃\"],[66588,1,\"𐑄\"],[66589,1,\"𐑅\"],[66590,1,\"𐑆\"],[66591,1,\"𐑇\"],[66592,1,\"𐑈\"],[66593,1,\"𐑉\"],[66594,1,\"𐑊\"],[66595,1,\"𐑋\"],[66596,1,\"𐑌\"],[66597,1,\"𐑍\"],[66598,1,\"𐑎\"],[66599,1,\"𐑏\"],[[66600,66637],2],[[66638,66717],2],[[66718,66719],3],[[66720,66729],2],[[66730,66735],3],[66736,1,\"𐓘\"],[66737,1,\"𐓙\"],[66738,1,\"𐓚\"],[66739,1,\"𐓛\"],[66740,1,\"𐓜\"],[66741,1,\"𐓝\"],[66742,1,\"𐓞\"],[66743,1,\"𐓟\"],[66744,1,\"𐓠\"],[66745,1,\"𐓡\"],[66746,1,\"𐓢\"],[66747,1,\"𐓣\"],[66748,1,\"𐓤\"],[66749,1,\"𐓥\"],[66750,1,\"𐓦\"],[66751,1,\"𐓧\"],[66752,1,\"𐓨\"],[66753,1,\"𐓩\"],[66754,1,\"𐓪\"],[66755,1,\"𐓫\"],[66756,1,\"𐓬\"],[66757,1,\"𐓭\"],[66758,1,\"𐓮\"],[66759,1,\"𐓯\"],[66760,1,\"𐓰\"],[66761,1,\"𐓱\"],[66762,1,\"𐓲\"],[66763,1,\"𐓳\"],[66764,1,\"𐓴\"],[66765,1,\"𐓵\"],[66766,1,\"𐓶\"],[66767,1,\"𐓷\"],[66768,1,\"𐓸\"],[66769,1,\"𐓹\"],[66770,1,\"𐓺\"],[66771,1,\"𐓻\"],[[66772,66775],3],[[66776,66811],2],[[66812,66815],3],[[66816,66855],2],[[66856,66863],3],[[66864,66915],2],[[66916,66926],3],[66927,2],[66928,1,\"𐖗\"],[66929,1,\"𐖘\"],[66930,1,\"𐖙\"],[66931,1,\"𐖚\"],[66932,1,\"𐖛\"],[66933,1,\"𐖜\"],[66934,1,\"𐖝\"],[66935,1,\"𐖞\"],[66936,1,\"𐖟\"],[66937,1,\"𐖠\"],[66938,1,\"𐖡\"],[66939,3],[66940,1,\"𐖣\"],[66941,1,\"𐖤\"],[66942,1,\"𐖥\"],[66943,1,\"𐖦\"],[66944,1,\"𐖧\"],[66945,1,\"𐖨\"],[66946,1,\"𐖩\"],[66947,1,\"𐖪\"],[66948,1,\"𐖫\"],[66949,1,\"𐖬\"],[66950,1,\"𐖭\"],[66951,1,\"𐖮\"],[66952,1,\"𐖯\"],[66953,1,\"𐖰\"],[66954,1,\"𐖱\"],[66955,3],[66956,1,\"𐖳\"],[66957,1,\"𐖴\"],[66958,1,\"𐖵\"],[66959,1,\"𐖶\"],[66960,1,\"𐖷\"],[66961,1,\"𐖸\"],[66962,1,\"𐖹\"],[66963,3],[66964,1,\"𐖻\"],[66965,1,\"𐖼\"],[66966,3],[[66967,66977],2],[66978,3],[[66979,66993],2],[66994,3],[[66995,67001],2],[67002,3],[[67003,67004],2],[[67005,67007],3],[[67008,67059],2],[[67060,67071],3],[[67072,67382],2],[[67383,67391],3],[[67392,67413],2],[[67414,67423],3],[[67424,67431],2],[[67432,67455],3],[67456,2],[67457,1,\"ː\"],[67458,1,\"ˑ\"],[67459,1,\"æ\"],[67460,1,\"ʙ\"],[67461,1,\"ɓ\"],[67462,3],[67463,1,\"ʣ\"],[67464,1,\"ꭦ\"],[67465,1,\"ʥ\"],[67466,1,\"ʤ\"],[67467,1,\"ɖ\"],[67468,1,\"ɗ\"],[67469,1,\"ᶑ\"],[67470,1,\"ɘ\"],[67471,1,\"ɞ\"],[67472,1,\"ʩ\"],[67473,1,\"ɤ\"],[67474,1,\"ɢ\"],[67475,1,\"ɠ\"],[67476,1,\"ʛ\"],[67477,1,\"ħ\"],[67478,1,\"ʜ\"],[67479,1,\"ɧ\"],[67480,1,\"ʄ\"],[67481,1,\"ʪ\"],[67482,1,\"ʫ\"],[67483,1,\"ɬ\"],[67484,1,\"𝼄\"],[67485,1,\"ꞎ\"],[67486,1,\"ɮ\"],[67487,1,\"𝼅\"],[67488,1,\"ʎ\"],[67489,1,\"𝼆\"],[67490,1,\"ø\"],[67491,1,\"ɶ\"],[67492,1,\"ɷ\"],[67493,1,\"q\"],[67494,1,\"ɺ\"],[67495,1,\"𝼈\"],[67496,1,\"ɽ\"],[67497,1,\"ɾ\"],[67498,1,\"ʀ\"],[67499,1,\"ʨ\"],[67500,1,\"ʦ\"],[67501,1,\"ꭧ\"],[67502,1,\"ʧ\"],[67503,1,\"ʈ\"],[67504,1,\"ⱱ\"],[67505,3],[67506,1,\"ʏ\"],[67507,1,\"ʡ\"],[67508,1,\"ʢ\"],[67509,1,\"ʘ\"],[67510,1,\"ǀ\"],[67511,1,\"ǁ\"],[67512,1,\"ǂ\"],[67513,1,\"𝼊\"],[67514,1,\"𝼞\"],[[67515,67583],3],[[67584,67589],2],[[67590,67591],3],[67592,2],[67593,3],[[67594,67637],2],[67638,3],[[67639,67640],2],[[67641,67643],3],[67644,2],[[67645,67646],3],[67647,2],[[67648,67669],2],[67670,3],[[67671,67679],2],[[67680,67702],2],[[67703,67711],2],[[67712,67742],2],[[67743,67750],3],[[67751,67759],2],[[67760,67807],3],[[67808,67826],2],[67827,3],[[67828,67829],2],[[67830,67834],3],[[67835,67839],2],[[67840,67861],2],[[67862,67865],2],[[67866,67867],2],[[67868,67870],3],[67871,2],[[67872,67897],2],[[67898,67902],3],[67903,2],[[67904,67967],3],[[67968,68023],2],[[68024,68027],3],[[68028,68029],2],[[68030,68031],2],[[68032,68047],2],[[68048,68049],3],[[68050,68095],2],[[68096,68099],2],[68100,3],[[68101,68102],2],[[68103,68107],3],[[68108,68115],2],[68116,3],[[68117,68119],2],[68120,3],[[68121,68147],2],[[68148,68149],2],[[68150,68151],3],[[68152,68154],2],[[68155,68158],3],[68159,2],[[68160,68167],2],[68168,2],[[68169,68175],3],[[68176,68184],2],[[68185,68191],3],[[68192,68220],2],[[68221,68223],2],[[68224,68252],2],[[68253,68255],2],[[68256,68287],3],[[68288,68295],2],[68296,2],[[68297,68326],2],[[68327,68330],3],[[68331,68342],2],[[68343,68351],3],[[68352,68405],2],[[68406,68408],3],[[68409,68415],2],[[68416,68437],2],[[68438,68439],3],[[68440,68447],2],[[68448,68466],2],[[68467,68471],3],[[68472,68479],2],[[68480,68497],2],[[68498,68504],3],[[68505,68508],2],[[68509,68520],3],[[68521,68527],2],[[68528,68607],3],[[68608,68680],2],[[68681,68735],3],[68736,1,\"𐳀\"],[68737,1,\"𐳁\"],[68738,1,\"𐳂\"],[68739,1,\"𐳃\"],[68740,1,\"𐳄\"],[68741,1,\"𐳅\"],[68742,1,\"𐳆\"],[68743,1,\"𐳇\"],[68744,1,\"𐳈\"],[68745,1,\"𐳉\"],[68746,1,\"𐳊\"],[68747,1,\"𐳋\"],[68748,1,\"𐳌\"],[68749,1,\"𐳍\"],[68750,1,\"𐳎\"],[68751,1,\"𐳏\"],[68752,1,\"𐳐\"],[68753,1,\"𐳑\"],[68754,1,\"𐳒\"],[68755,1,\"𐳓\"],[68756,1,\"𐳔\"],[68757,1,\"𐳕\"],[68758,1,\"𐳖\"],[68759,1,\"𐳗\"],[68760,1,\"𐳘\"],[68761,1,\"𐳙\"],[68762,1,\"𐳚\"],[68763,1,\"𐳛\"],[68764,1,\"𐳜\"],[68765,1,\"𐳝\"],[68766,1,\"𐳞\"],[68767,1,\"𐳟\"],[68768,1,\"𐳠\"],[68769,1,\"𐳡\"],[68770,1,\"𐳢\"],[68771,1,\"𐳣\"],[68772,1,\"𐳤\"],[68773,1,\"𐳥\"],[68774,1,\"𐳦\"],[68775,1,\"𐳧\"],[68776,1,\"𐳨\"],[68777,1,\"𐳩\"],[68778,1,\"𐳪\"],[68779,1,\"𐳫\"],[68780,1,\"𐳬\"],[68781,1,\"𐳭\"],[68782,1,\"𐳮\"],[68783,1,\"𐳯\"],[68784,1,\"𐳰\"],[68785,1,\"𐳱\"],[68786,1,\"𐳲\"],[[68787,68799],3],[[68800,68850],2],[[68851,68857],3],[[68858,68863],2],[[68864,68903],2],[[68904,68911],3],[[68912,68921],2],[[68922,68927],3],[[68928,68943],2],[68944,1,\"𐵰\"],[68945,1,\"𐵱\"],[68946,1,\"𐵲\"],[68947,1,\"𐵳\"],[68948,1,\"𐵴\"],[68949,1,\"𐵵\"],[68950,1,\"𐵶\"],[68951,1,\"𐵷\"],[68952,1,\"𐵸\"],[68953,1,\"𐵹\"],[68954,1,\"𐵺\"],[68955,1,\"𐵻\"],[68956,1,\"𐵼\"],[68957,1,\"𐵽\"],[68958,1,\"𐵾\"],[68959,1,\"𐵿\"],[68960,1,\"𐶀\"],[68961,1,\"𐶁\"],[68962,1,\"𐶂\"],[68963,1,\"𐶃\"],[68964,1,\"𐶄\"],[68965,1,\"𐶅\"],[[68966,68968],3],[[68969,68973],2],[68974,2],[[68975,68997],2],[[68998,69005],3],[[69006,69007],2],[[69008,69215],3],[[69216,69246],2],[69247,3],[[69248,69289],2],[69290,3],[[69291,69292],2],[69293,2],[[69294,69295],3],[[69296,69297],2],[[69298,69313],3],[[69314,69316],2],[[69317,69371],3],[69372,2],[[69373,69375],2],[[69376,69404],2],[[69405,69414],2],[69415,2],[[69416,69423],3],[[69424,69456],2],[[69457,69465],2],[[69466,69487],3],[[69488,69509],2],[[69510,69513],2],[[69514,69551],3],[[69552,69572],2],[[69573,69579],2],[[69580,69599],3],[[69600,69622],2],[[69623,69631],3],[[69632,69702],2],[[69703,69709],2],[[69710,69713],3],[[69714,69733],2],[[69734,69743],2],[[69744,69749],2],[[69750,69758],3],[69759,2],[[69760,69818],2],[[69819,69820],2],[69821,3],[[69822,69825],2],[69826,2],[[69827,69836],3],[69837,3],[[69838,69839],3],[[69840,69864],2],[[69865,69871],3],[[69872,69881],2],[[69882,69887],3],[[69888,69940],2],[69941,3],[[69942,69951],2],[[69952,69955],2],[[69956,69958],2],[69959,2],[[69960,69967],3],[[69968,70003],2],[[70004,70005],2],[70006,2],[[70007,70015],3],[[70016,70084],2],[[70085,70088],2],[[70089,70092],2],[70093,2],[[70094,70095],2],[[70096,70105],2],[70106,2],[70107,2],[70108,2],[[70109,70111],2],[70112,3],[[70113,70132],2],[[70133,70143],3],[[70144,70161],2],[70162,3],[[70163,70199],2],[[70200,70205],2],[70206,2],[[70207,70209],2],[[70210,70271],3],[[70272,70278],2],[70279,3],[70280,2],[70281,3],[[70282,70285],2],[70286,3],[[70287,70301],2],[70302,3],[[70303,70312],2],[70313,2],[[70314,70319],3],[[70320,70378],2],[[70379,70383],3],[[70384,70393],2],[[70394,70399],3],[70400,2],[[70401,70403],2],[70404,3],[[70405,70412],2],[[70413,70414],3],[[70415,70416],2],[[70417,70418],3],[[70419,70440],2],[70441,3],[[70442,70448],2],[70449,3],[[70450,70451],2],[70452,3],[[70453,70457],2],[70458,3],[70459,2],[[70460,70468],2],[[70469,70470],3],[[70471,70472],2],[[70473,70474],3],[[70475,70477],2],[[70478,70479],3],[70480,2],[[70481,70486],3],[70487,2],[[70488,70492],3],[[70493,70499],2],[[70500,70501],3],[[70502,70508],2],[[70509,70511],3],[[70512,70516],2],[[70517,70527],3],[[70528,70537],2],[70538,3],[70539,2],[[70540,70541],3],[70542,2],[70543,3],[[70544,70581],2],[70582,3],[[70583,70592],2],[70593,3],[70594,2],[[70595,70596],3],[70597,2],[70598,3],[[70599,70602],2],[70603,3],[[70604,70611],2],[[70612,70613],2],[70614,3],[[70615,70616],2],[[70617,70624],3],[[70625,70626],2],[[70627,70655],3],[[70656,70730],2],[[70731,70735],2],[[70736,70745],2],[70746,2],[70747,2],[70748,3],[70749,2],[70750,2],[70751,2],[[70752,70753],2],[[70754,70783],3],[[70784,70853],2],[70854,2],[70855,2],[[70856,70863],3],[[70864,70873],2],[[70874,71039],3],[[71040,71093],2],[[71094,71095],3],[[71096,71104],2],[[71105,71113],2],[[71114,71127],2],[[71128,71133],2],[[71134,71167],3],[[71168,71232],2],[[71233,71235],2],[71236,2],[[71237,71247],3],[[71248,71257],2],[[71258,71263],3],[[71264,71276],2],[[71277,71295],3],[[71296,71351],2],[71352,2],[71353,2],[[71354,71359],3],[[71360,71369],2],[[71370,71375],3],[[71376,71395],2],[[71396,71423],3],[[71424,71449],2],[71450,2],[[71451,71452],3],[[71453,71467],2],[[71468,71471],3],[[71472,71481],2],[[71482,71487],2],[[71488,71494],2],[[71495,71679],3],[[71680,71738],2],[71739,2],[[71740,71839],3],[71840,1,\"𑣀\"],[71841,1,\"𑣁\"],[71842,1,\"𑣂\"],[71843,1,\"𑣃\"],[71844,1,\"𑣄\"],[71845,1,\"𑣅\"],[71846,1,\"𑣆\"],[71847,1,\"𑣇\"],[71848,1,\"𑣈\"],[71849,1,\"𑣉\"],[71850,1,\"𑣊\"],[71851,1,\"𑣋\"],[71852,1,\"𑣌\"],[71853,1,\"𑣍\"],[71854,1,\"𑣎\"],[71855,1,\"𑣏\"],[71856,1,\"𑣐\"],[71857,1,\"𑣑\"],[71858,1,\"𑣒\"],[71859,1,\"𑣓\"],[71860,1,\"𑣔\"],[71861,1,\"𑣕\"],[71862,1,\"𑣖\"],[71863,1,\"𑣗\"],[71864,1,\"𑣘\"],[71865,1,\"𑣙\"],[71866,1,\"𑣚\"],[71867,1,\"𑣛\"],[71868,1,\"𑣜\"],[71869,1,\"𑣝\"],[71870,1,\"𑣞\"],[71871,1,\"𑣟\"],[[71872,71913],2],[[71914,71922],2],[[71923,71934],3],[71935,2],[[71936,71942],2],[[71943,71944],3],[71945,2],[[71946,71947],3],[[71948,71955],2],[71956,3],[[71957,71958],2],[71959,3],[[71960,71989],2],[71990,3],[[71991,71992],2],[[71993,71994],3],[[71995,72003],2],[[72004,72006],2],[[72007,72015],3],[[72016,72025],2],[[72026,72095],3],[[72096,72103],2],[[72104,72105],3],[[72106,72151],2],[[72152,72153],3],[[72154,72161],2],[72162,2],[[72163,72164],2],[[72165,72191],3],[[72192,72254],2],[[72255,72262],2],[72263,2],[[72264,72271],3],[[72272,72323],2],[[72324,72325],2],[[72326,72345],2],[[72346,72348],2],[72349,2],[[72350,72354],2],[[72355,72367],3],[[72368,72383],2],[[72384,72440],2],[[72441,72447],3],[[72448,72457],2],[[72458,72639],3],[[72640,72672],2],[72673,2],[[72674,72687],3],[[72688,72697],2],[[72698,72703],3],[[72704,72712],2],[72713,3],[[72714,72758],2],[72759,3],[[72760,72768],2],[[72769,72773],2],[[72774,72783],3],[[72784,72793],2],[[72794,72812],2],[[72813,72815],3],[[72816,72817],2],[[72818,72847],2],[[72848,72849],3],[[72850,72871],2],[72872,3],[[72873,72886],2],[[72887,72959],3],[[72960,72966],2],[72967,3],[[72968,72969],2],[72970,3],[[72971,73014],2],[[73015,73017],3],[73018,2],[73019,3],[[73020,73021],2],[73022,3],[[73023,73031],2],[[73032,73039],3],[[73040,73049],2],[[73050,73055],3],[[73056,73061],2],[73062,3],[[73063,73064],2],[73065,3],[[73066,73102],2],[73103,3],[[73104,73105],2],[73106,3],[[73107,73112],2],[[73113,73119],3],[[73120,73129],2],[[73130,73439],3],[[73440,73462],2],[[73463,73464],2],[[73465,73471],3],[[73472,73488],2],[73489,3],[[73490,73530],2],[[73531,73533],3],[[73534,73538],2],[[73539,73551],2],[[73552,73561],2],[73562,2],[[73563,73647],3],[73648,2],[[73649,73663],3],[[73664,73713],2],[[73714,73726],3],[73727,2],[[73728,74606],2],[[74607,74648],2],[74649,2],[[74650,74751],3],[[74752,74850],2],[[74851,74862],2],[74863,3],[[74864,74867],2],[74868,2],[[74869,74879],3],[[74880,75075],2],[[75076,77711],3],[[77712,77808],2],[[77809,77810],2],[[77811,77823],3],[[77824,78894],2],[78895,2],[[78896,78904],3],[[78905,78911],3],[[78912,78933],2],[[78934,78943],3],[[78944,82938],2],[[82939,82943],3],[[82944,83526],2],[[83527,90367],3],[[90368,90425],2],[[90426,92159],3],[[92160,92728],2],[[92729,92735],3],[[92736,92766],2],[92767,3],[[92768,92777],2],[[92778,92781],3],[[92782,92783],2],[[92784,92862],2],[92863,3],[[92864,92873],2],[[92874,92879],3],[[92880,92909],2],[[92910,92911],3],[[92912,92916],2],[92917,2],[[92918,92927],3],[[92928,92982],2],[[92983,92991],2],[[92992,92995],2],[[92996,92997],2],[[92998,93007],3],[[93008,93017],2],[93018,3],[[93019,93025],2],[93026,3],[[93027,93047],2],[[93048,93052],3],[[93053,93071],2],[[93072,93503],3],[[93504,93548],2],[[93549,93551],2],[[93552,93561],2],[[93562,93759],3],[93760,1,\"𖹠\"],[93761,1,\"𖹡\"],[93762,1,\"𖹢\"],[93763,1,\"𖹣\"],[93764,1,\"𖹤\"],[93765,1,\"𖹥\"],[93766,1,\"𖹦\"],[93767,1,\"𖹧\"],[93768,1,\"𖹨\"],[93769,1,\"𖹩\"],[93770,1,\"𖹪\"],[93771,1,\"𖹫\"],[93772,1,\"𖹬\"],[93773,1,\"𖹭\"],[93774,1,\"𖹮\"],[93775,1,\"𖹯\"],[93776,1,\"𖹰\"],[93777,1,\"𖹱\"],[93778,1,\"𖹲\"],[93779,1,\"𖹳\"],[93780,1,\"𖹴\"],[93781,1,\"𖹵\"],[93782,1,\"𖹶\"],[93783,1,\"𖹷\"],[93784,1,\"𖹸\"],[93785,1,\"𖹹\"],[93786,1,\"𖹺\"],[93787,1,\"𖹻\"],[93788,1,\"𖹼\"],[93789,1,\"𖹽\"],[93790,1,\"𖹾\"],[93791,1,\"𖹿\"],[[93792,93823],2],[[93824,93850],2],[[93851,93951],3],[[93952,94020],2],[[94021,94026],2],[[94027,94030],3],[94031,2],[[94032,94078],2],[[94079,94087],2],[[94088,94094],3],[[94095,94111],2],[[94112,94175],3],[94176,2],[94177,2],[94178,2],[94179,2],[94180,2],[[94181,94191],3],[[94192,94193],2],[[94194,94207],3],[[94208,100332],2],[[100333,100337],2],[[100338,100343],2],[[100344,100351],3],[[100352,101106],2],[[101107,101589],2],[[101590,101630],3],[101631,2],[[101632,101640],2],[[101641,110575],3],[[110576,110579],2],[110580,3],[[110581,110587],2],[110588,3],[[110589,110590],2],[110591,3],[[110592,110593],2],[[110594,110878],2],[[110879,110882],2],[[110883,110897],3],[110898,2],[[110899,110927],3],[[110928,110930],2],[[110931,110932],3],[110933,2],[[110934,110947],3],[[110948,110951],2],[[110952,110959],3],[[110960,111355],2],[[111356,113663],3],[[113664,113770],2],[[113771,113775],3],[[113776,113788],2],[[113789,113791],3],[[113792,113800],2],[[113801,113807],3],[[113808,113817],2],[[113818,113819],3],[113820,2],[[113821,113822],2],[113823,2],[[113824,113827],7],[[113828,117759],3],[[117760,117973],2],[117974,1,\"a\"],[117975,1,\"b\"],[117976,1,\"c\"],[117977,1,\"d\"],[117978,1,\"e\"],[117979,1,\"f\"],[117980,1,\"g\"],[117981,1,\"h\"],[117982,1,\"i\"],[117983,1,\"j\"],[117984,1,\"k\"],[117985,1,\"l\"],[117986,1,\"m\"],[117987,1,\"n\"],[117988,1,\"o\"],[117989,1,\"p\"],[117990,1,\"q\"],[117991,1,\"r\"],[117992,1,\"s\"],[117993,1,\"t\"],[117994,1,\"u\"],[117995,1,\"v\"],[117996,1,\"w\"],[117997,1,\"x\"],[117998,1,\"y\"],[117999,1,\"z\"],[118000,1,\"0\"],[118001,1,\"1\"],[118002,1,\"2\"],[118003,1,\"3\"],[118004,1,\"4\"],[118005,1,\"5\"],[118006,1,\"6\"],[118007,1,\"7\"],[118008,1,\"8\"],[118009,1,\"9\"],[[118010,118015],3],[[118016,118451],2],[[118452,118527],3],[[118528,118573],2],[[118574,118575],3],[[118576,118598],2],[[118599,118607],3],[[118608,118723],2],[[118724,118783],3],[[118784,119029],2],[[119030,119039],3],[[119040,119078],2],[[119079,119080],3],[119081,2],[[119082,119133],2],[119134,1,\"𝅗𝅥\"],[119135,1,\"𝅘𝅥\"],[119136,1,\"𝅘𝅥𝅮\"],[119137,1,\"𝅘𝅥𝅯\"],[119138,1,\"𝅘𝅥𝅰\"],[119139,1,\"𝅘𝅥𝅱\"],[119140,1,\"𝅘𝅥𝅲\"],[[119141,119154],2],[[119155,119162],7],[[119163,119226],2],[119227,1,\"𝆹𝅥\"],[119228,1,\"𝆺𝅥\"],[119229,1,\"𝆹𝅥𝅮\"],[119230,1,\"𝆺𝅥𝅮\"],[119231,1,\"𝆹𝅥𝅯\"],[119232,1,\"𝆺𝅥𝅯\"],[[119233,119261],2],[[119262,119272],2],[[119273,119274],2],[[119275,119295],3],[[119296,119365],2],[[119366,119487],3],[[119488,119507],2],[[119508,119519],3],[[119520,119539],2],[[119540,119551],3],[[119552,119638],2],[[119639,119647],3],[[119648,119665],2],[[119666,119672],2],[[119673,119807],3],[119808,1,\"a\"],[119809,1,\"b\"],[119810,1,\"c\"],[119811,1,\"d\"],[119812,1,\"e\"],[119813,1,\"f\"],[119814,1,\"g\"],[119815,1,\"h\"],[119816,1,\"i\"],[119817,1,\"j\"],[119818,1,\"k\"],[119819,1,\"l\"],[119820,1,\"m\"],[119821,1,\"n\"],[119822,1,\"o\"],[119823,1,\"p\"],[119824,1,\"q\"],[119825,1,\"r\"],[119826,1,\"s\"],[119827,1,\"t\"],[119828,1,\"u\"],[119829,1,\"v\"],[119830,1,\"w\"],[119831,1,\"x\"],[119832,1,\"y\"],[119833,1,\"z\"],[119834,1,\"a\"],[119835,1,\"b\"],[119836,1,\"c\"],[119837,1,\"d\"],[119838,1,\"e\"],[119839,1,\"f\"],[119840,1,\"g\"],[119841,1,\"h\"],[119842,1,\"i\"],[119843,1,\"j\"],[119844,1,\"k\"],[119845,1,\"l\"],[119846,1,\"m\"],[119847,1,\"n\"],[119848,1,\"o\"],[119849,1,\"p\"],[119850,1,\"q\"],[119851,1,\"r\"],[119852,1,\"s\"],[119853,1,\"t\"],[119854,1,\"u\"],[119855,1,\"v\"],[119856,1,\"w\"],[119857,1,\"x\"],[119858,1,\"y\"],[119859,1,\"z\"],[119860,1,\"a\"],[119861,1,\"b\"],[119862,1,\"c\"],[119863,1,\"d\"],[119864,1,\"e\"],[119865,1,\"f\"],[119866,1,\"g\"],[119867,1,\"h\"],[119868,1,\"i\"],[119869,1,\"j\"],[119870,1,\"k\"],[119871,1,\"l\"],[119872,1,\"m\"],[119873,1,\"n\"],[119874,1,\"o\"],[119875,1,\"p\"],[119876,1,\"q\"],[119877,1,\"r\"],[119878,1,\"s\"],[119879,1,\"t\"],[119880,1,\"u\"],[119881,1,\"v\"],[119882,1,\"w\"],[119883,1,\"x\"],[119884,1,\"y\"],[119885,1,\"z\"],[119886,1,\"a\"],[119887,1,\"b\"],[119888,1,\"c\"],[119889,1,\"d\"],[119890,1,\"e\"],[119891,1,\"f\"],[119892,1,\"g\"],[119893,3],[119894,1,\"i\"],[119895,1,\"j\"],[119896,1,\"k\"],[119897,1,\"l\"],[119898,1,\"m\"],[119899,1,\"n\"],[119900,1,\"o\"],[119901,1,\"p\"],[119902,1,\"q\"],[119903,1,\"r\"],[119904,1,\"s\"],[119905,1,\"t\"],[119906,1,\"u\"],[119907,1,\"v\"],[119908,1,\"w\"],[119909,1,\"x\"],[119910,1,\"y\"],[119911,1,\"z\"],[119912,1,\"a\"],[119913,1,\"b\"],[119914,1,\"c\"],[119915,1,\"d\"],[119916,1,\"e\"],[119917,1,\"f\"],[119918,1,\"g\"],[119919,1,\"h\"],[119920,1,\"i\"],[119921,1,\"j\"],[119922,1,\"k\"],[119923,1,\"l\"],[119924,1,\"m\"],[119925,1,\"n\"],[119926,1,\"o\"],[119927,1,\"p\"],[119928,1,\"q\"],[119929,1,\"r\"],[119930,1,\"s\"],[119931,1,\"t\"],[119932,1,\"u\"],[119933,1,\"v\"],[119934,1,\"w\"],[119935,1,\"x\"],[119936,1,\"y\"],[119937,1,\"z\"],[119938,1,\"a\"],[119939,1,\"b\"],[119940,1,\"c\"],[119941,1,\"d\"],[119942,1,\"e\"],[119943,1,\"f\"],[119944,1,\"g\"],[119945,1,\"h\"],[119946,1,\"i\"],[119947,1,\"j\"],[119948,1,\"k\"],[119949,1,\"l\"],[119950,1,\"m\"],[119951,1,\"n\"],[119952,1,\"o\"],[119953,1,\"p\"],[119954,1,\"q\"],[119955,1,\"r\"],[119956,1,\"s\"],[119957,1,\"t\"],[119958,1,\"u\"],[119959,1,\"v\"],[119960,1,\"w\"],[119961,1,\"x\"],[119962,1,\"y\"],[119963,1,\"z\"],[119964,1,\"a\"],[119965,3],[119966,1,\"c\"],[119967,1,\"d\"],[[119968,119969],3],[119970,1,\"g\"],[[119971,119972],3],[119973,1,\"j\"],[119974,1,\"k\"],[[119975,119976],3],[119977,1,\"n\"],[119978,1,\"o\"],[119979,1,\"p\"],[119980,1,\"q\"],[119981,3],[119982,1,\"s\"],[119983,1,\"t\"],[119984,1,\"u\"],[119985,1,\"v\"],[119986,1,\"w\"],[119987,1,\"x\"],[119988,1,\"y\"],[119989,1,\"z\"],[119990,1,\"a\"],[119991,1,\"b\"],[119992,1,\"c\"],[119993,1,\"d\"],[119994,3],[119995,1,\"f\"],[119996,3],[119997,1,\"h\"],[119998,1,\"i\"],[119999,1,\"j\"],[120000,1,\"k\"],[120001,1,\"l\"],[120002,1,\"m\"],[120003,1,\"n\"],[120004,3],[120005,1,\"p\"],[120006,1,\"q\"],[120007,1,\"r\"],[120008,1,\"s\"],[120009,1,\"t\"],[120010,1,\"u\"],[120011,1,\"v\"],[120012,1,\"w\"],[120013,1,\"x\"],[120014,1,\"y\"],[120015,1,\"z\"],[120016,1,\"a\"],[120017,1,\"b\"],[120018,1,\"c\"],[120019,1,\"d\"],[120020,1,\"e\"],[120021,1,\"f\"],[120022,1,\"g\"],[120023,1,\"h\"],[120024,1,\"i\"],[120025,1,\"j\"],[120026,1,\"k\"],[120027,1,\"l\"],[120028,1,\"m\"],[120029,1,\"n\"],[120030,1,\"o\"],[120031,1,\"p\"],[120032,1,\"q\"],[120033,1,\"r\"],[120034,1,\"s\"],[120035,1,\"t\"],[120036,1,\"u\"],[120037,1,\"v\"],[120038,1,\"w\"],[120039,1,\"x\"],[120040,1,\"y\"],[120041,1,\"z\"],[120042,1,\"a\"],[120043,1,\"b\"],[120044,1,\"c\"],[120045,1,\"d\"],[120046,1,\"e\"],[120047,1,\"f\"],[120048,1,\"g\"],[120049,1,\"h\"],[120050,1,\"i\"],[120051,1,\"j\"],[120052,1,\"k\"],[120053,1,\"l\"],[120054,1,\"m\"],[120055,1,\"n\"],[120056,1,\"o\"],[120057,1,\"p\"],[120058,1,\"q\"],[120059,1,\"r\"],[120060,1,\"s\"],[120061,1,\"t\"],[120062,1,\"u\"],[120063,1,\"v\"],[120064,1,\"w\"],[120065,1,\"x\"],[120066,1,\"y\"],[120067,1,\"z\"],[120068,1,\"a\"],[120069,1,\"b\"],[120070,3],[120071,1,\"d\"],[120072,1,\"e\"],[120073,1,\"f\"],[120074,1,\"g\"],[[120075,120076],3],[120077,1,\"j\"],[120078,1,\"k\"],[120079,1,\"l\"],[120080,1,\"m\"],[120081,1,\"n\"],[120082,1,\"o\"],[120083,1,\"p\"],[120084,1,\"q\"],[120085,3],[120086,1,\"s\"],[120087,1,\"t\"],[120088,1,\"u\"],[120089,1,\"v\"],[120090,1,\"w\"],[120091,1,\"x\"],[120092,1,\"y\"],[120093,3],[120094,1,\"a\"],[120095,1,\"b\"],[120096,1,\"c\"],[120097,1,\"d\"],[120098,1,\"e\"],[120099,1,\"f\"],[120100,1,\"g\"],[120101,1,\"h\"],[120102,1,\"i\"],[120103,1,\"j\"],[120104,1,\"k\"],[120105,1,\"l\"],[120106,1,\"m\"],[120107,1,\"n\"],[120108,1,\"o\"],[120109,1,\"p\"],[120110,1,\"q\"],[120111,1,\"r\"],[120112,1,\"s\"],[120113,1,\"t\"],[120114,1,\"u\"],[120115,1,\"v\"],[120116,1,\"w\"],[120117,1,\"x\"],[120118,1,\"y\"],[120119,1,\"z\"],[120120,1,\"a\"],[120121,1,\"b\"],[120122,3],[120123,1,\"d\"],[120124,1,\"e\"],[120125,1,\"f\"],[120126,1,\"g\"],[120127,3],[120128,1,\"i\"],[120129,1,\"j\"],[120130,1,\"k\"],[120131,1,\"l\"],[120132,1,\"m\"],[120133,3],[120134,1,\"o\"],[[120135,120137],3],[120138,1,\"s\"],[120139,1,\"t\"],[120140,1,\"u\"],[120141,1,\"v\"],[120142,1,\"w\"],[120143,1,\"x\"],[120144,1,\"y\"],[120145,3],[120146,1,\"a\"],[120147,1,\"b\"],[120148,1,\"c\"],[120149,1,\"d\"],[120150,1,\"e\"],[120151,1,\"f\"],[120152,1,\"g\"],[120153,1,\"h\"],[120154,1,\"i\"],[120155,1,\"j\"],[120156,1,\"k\"],[120157,1,\"l\"],[120158,1,\"m\"],[120159,1,\"n\"],[120160,1,\"o\"],[120161,1,\"p\"],[120162,1,\"q\"],[120163,1,\"r\"],[120164,1,\"s\"],[120165,1,\"t\"],[120166,1,\"u\"],[120167,1,\"v\"],[120168,1,\"w\"],[120169,1,\"x\"],[120170,1,\"y\"],[120171,1,\"z\"],[120172,1,\"a\"],[120173,1,\"b\"],[120174,1,\"c\"],[120175,1,\"d\"],[120176,1,\"e\"],[120177,1,\"f\"],[120178,1,\"g\"],[120179,1,\"h\"],[120180,1,\"i\"],[120181,1,\"j\"],[120182,1,\"k\"],[120183,1,\"l\"],[120184,1,\"m\"],[120185,1,\"n\"],[120186,1,\"o\"],[120187,1,\"p\"],[120188,1,\"q\"],[120189,1,\"r\"],[120190,1,\"s\"],[120191,1,\"t\"],[120192,1,\"u\"],[120193,1,\"v\"],[120194,1,\"w\"],[120195,1,\"x\"],[120196,1,\"y\"],[120197,1,\"z\"],[120198,1,\"a\"],[120199,1,\"b\"],[120200,1,\"c\"],[120201,1,\"d\"],[120202,1,\"e\"],[120203,1,\"f\"],[120204,1,\"g\"],[120205,1,\"h\"],[120206,1,\"i\"],[120207,1,\"j\"],[120208,1,\"k\"],[120209,1,\"l\"],[120210,1,\"m\"],[120211,1,\"n\"],[120212,1,\"o\"],[120213,1,\"p\"],[120214,1,\"q\"],[120215,1,\"r\"],[120216,1,\"s\"],[120217,1,\"t\"],[120218,1,\"u\"],[120219,1,\"v\"],[120220,1,\"w\"],[120221,1,\"x\"],[120222,1,\"y\"],[120223,1,\"z\"],[120224,1,\"a\"],[120225,1,\"b\"],[120226,1,\"c\"],[120227,1,\"d\"],[120228,1,\"e\"],[120229,1,\"f\"],[120230,1,\"g\"],[120231,1,\"h\"],[120232,1,\"i\"],[120233,1,\"j\"],[120234,1,\"k\"],[120235,1,\"l\"],[120236,1,\"m\"],[120237,1,\"n\"],[120238,1,\"o\"],[120239,1,\"p\"],[120240,1,\"q\"],[120241,1,\"r\"],[120242,1,\"s\"],[120243,1,\"t\"],[120244,1,\"u\"],[120245,1,\"v\"],[120246,1,\"w\"],[120247,1,\"x\"],[120248,1,\"y\"],[120249,1,\"z\"],[120250,1,\"a\"],[120251,1,\"b\"],[120252,1,\"c\"],[120253,1,\"d\"],[120254,1,\"e\"],[120255,1,\"f\"],[120256,1,\"g\"],[120257,1,\"h\"],[120258,1,\"i\"],[120259,1,\"j\"],[120260,1,\"k\"],[120261,1,\"l\"],[120262,1,\"m\"],[120263,1,\"n\"],[120264,1,\"o\"],[120265,1,\"p\"],[120266,1,\"q\"],[120267,1,\"r\"],[120268,1,\"s\"],[120269,1,\"t\"],[120270,1,\"u\"],[120271,1,\"v\"],[120272,1,\"w\"],[120273,1,\"x\"],[120274,1,\"y\"],[120275,1,\"z\"],[120276,1,\"a\"],[120277,1,\"b\"],[120278,1,\"c\"],[120279,1,\"d\"],[120280,1,\"e\"],[120281,1,\"f\"],[120282,1,\"g\"],[120283,1,\"h\"],[120284,1,\"i\"],[120285,1,\"j\"],[120286,1,\"k\"],[120287,1,\"l\"],[120288,1,\"m\"],[120289,1,\"n\"],[120290,1,\"o\"],[120291,1,\"p\"],[120292,1,\"q\"],[120293,1,\"r\"],[120294,1,\"s\"],[120295,1,\"t\"],[120296,1,\"u\"],[120297,1,\"v\"],[120298,1,\"w\"],[120299,1,\"x\"],[120300,1,\"y\"],[120301,1,\"z\"],[120302,1,\"a\"],[120303,1,\"b\"],[120304,1,\"c\"],[120305,1,\"d\"],[120306,1,\"e\"],[120307,1,\"f\"],[120308,1,\"g\"],[120309,1,\"h\"],[120310,1,\"i\"],[120311,1,\"j\"],[120312,1,\"k\"],[120313,1,\"l\"],[120314,1,\"m\"],[120315,1,\"n\"],[120316,1,\"o\"],[120317,1,\"p\"],[120318,1,\"q\"],[120319,1,\"r\"],[120320,1,\"s\"],[120321,1,\"t\"],[120322,1,\"u\"],[120323,1,\"v\"],[120324,1,\"w\"],[120325,1,\"x\"],[120326,1,\"y\"],[120327,1,\"z\"],[120328,1,\"a\"],[120329,1,\"b\"],[120330,1,\"c\"],[120331,1,\"d\"],[120332,1,\"e\"],[120333,1,\"f\"],[120334,1,\"g\"],[120335,1,\"h\"],[120336,1,\"i\"],[120337,1,\"j\"],[120338,1,\"k\"],[120339,1,\"l\"],[120340,1,\"m\"],[120341,1,\"n\"],[120342,1,\"o\"],[120343,1,\"p\"],[120344,1,\"q\"],[120345,1,\"r\"],[120346,1,\"s\"],[120347,1,\"t\"],[120348,1,\"u\"],[120349,1,\"v\"],[120350,1,\"w\"],[120351,1,\"x\"],[120352,1,\"y\"],[120353,1,\"z\"],[120354,1,\"a\"],[120355,1,\"b\"],[120356,1,\"c\"],[120357,1,\"d\"],[120358,1,\"e\"],[120359,1,\"f\"],[120360,1,\"g\"],[120361,1,\"h\"],[120362,1,\"i\"],[120363,1,\"j\"],[120364,1,\"k\"],[120365,1,\"l\"],[120366,1,\"m\"],[120367,1,\"n\"],[120368,1,\"o\"],[120369,1,\"p\"],[120370,1,\"q\"],[120371,1,\"r\"],[120372,1,\"s\"],[120373,1,\"t\"],[120374,1,\"u\"],[120375,1,\"v\"],[120376,1,\"w\"],[120377,1,\"x\"],[120378,1,\"y\"],[120379,1,\"z\"],[120380,1,\"a\"],[120381,1,\"b\"],[120382,1,\"c\"],[120383,1,\"d\"],[120384,1,\"e\"],[120385,1,\"f\"],[120386,1,\"g\"],[120387,1,\"h\"],[120388,1,\"i\"],[120389,1,\"j\"],[120390,1,\"k\"],[120391,1,\"l\"],[120392,1,\"m\"],[120393,1,\"n\"],[120394,1,\"o\"],[120395,1,\"p\"],[120396,1,\"q\"],[120397,1,\"r\"],[120398,1,\"s\"],[120399,1,\"t\"],[120400,1,\"u\"],[120401,1,\"v\"],[120402,1,\"w\"],[120403,1,\"x\"],[120404,1,\"y\"],[120405,1,\"z\"],[120406,1,\"a\"],[120407,1,\"b\"],[120408,1,\"c\"],[120409,1,\"d\"],[120410,1,\"e\"],[120411,1,\"f\"],[120412,1,\"g\"],[120413,1,\"h\"],[120414,1,\"i\"],[120415,1,\"j\"],[120416,1,\"k\"],[120417,1,\"l\"],[120418,1,\"m\"],[120419,1,\"n\"],[120420,1,\"o\"],[120421,1,\"p\"],[120422,1,\"q\"],[120423,1,\"r\"],[120424,1,\"s\"],[120425,1,\"t\"],[120426,1,\"u\"],[120427,1,\"v\"],[120428,1,\"w\"],[120429,1,\"x\"],[120430,1,\"y\"],[120431,1,\"z\"],[120432,1,\"a\"],[120433,1,\"b\"],[120434,1,\"c\"],[120435,1,\"d\"],[120436,1,\"e\"],[120437,1,\"f\"],[120438,1,\"g\"],[120439,1,\"h\"],[120440,1,\"i\"],[120441,1,\"j\"],[120442,1,\"k\"],[120443,1,\"l\"],[120444,1,\"m\"],[120445,1,\"n\"],[120446,1,\"o\"],[120447,1,\"p\"],[120448,1,\"q\"],[120449,1,\"r\"],[120450,1,\"s\"],[120451,1,\"t\"],[120452,1,\"u\"],[120453,1,\"v\"],[120454,1,\"w\"],[120455,1,\"x\"],[120456,1,\"y\"],[120457,1,\"z\"],[120458,1,\"a\"],[120459,1,\"b\"],[120460,1,\"c\"],[120461,1,\"d\"],[120462,1,\"e\"],[120463,1,\"f\"],[120464,1,\"g\"],[120465,1,\"h\"],[120466,1,\"i\"],[120467,1,\"j\"],[120468,1,\"k\"],[120469,1,\"l\"],[120470,1,\"m\"],[120471,1,\"n\"],[120472,1,\"o\"],[120473,1,\"p\"],[120474,1,\"q\"],[120475,1,\"r\"],[120476,1,\"s\"],[120477,1,\"t\"],[120478,1,\"u\"],[120479,1,\"v\"],[120480,1,\"w\"],[120481,1,\"x\"],[120482,1,\"y\"],[120483,1,\"z\"],[120484,1,\"ı\"],[120485,1,\"ȷ\"],[[120486,120487],3],[120488,1,\"α\"],[120489,1,\"β\"],[120490,1,\"γ\"],[120491,1,\"δ\"],[120492,1,\"ε\"],[120493,1,\"ζ\"],[120494,1,\"η\"],[120495,1,\"θ\"],[120496,1,\"ι\"],[120497,1,\"κ\"],[120498,1,\"λ\"],[120499,1,\"μ\"],[120500,1,\"ν\"],[120501,1,\"ξ\"],[120502,1,\"ο\"],[120503,1,\"π\"],[120504,1,\"ρ\"],[120505,1,\"θ\"],[120506,1,\"σ\"],[120507,1,\"τ\"],[120508,1,\"υ\"],[120509,1,\"φ\"],[120510,1,\"χ\"],[120511,1,\"ψ\"],[120512,1,\"ω\"],[120513,1,\"∇\"],[120514,1,\"α\"],[120515,1,\"β\"],[120516,1,\"γ\"],[120517,1,\"δ\"],[120518,1,\"ε\"],[120519,1,\"ζ\"],[120520,1,\"η\"],[120521,1,\"θ\"],[120522,1,\"ι\"],[120523,1,\"κ\"],[120524,1,\"λ\"],[120525,1,\"μ\"],[120526,1,\"ν\"],[120527,1,\"ξ\"],[120528,1,\"ο\"],[120529,1,\"π\"],[120530,1,\"ρ\"],[[120531,120532],1,\"σ\"],[120533,1,\"τ\"],[120534,1,\"υ\"],[120535,1,\"φ\"],[120536,1,\"χ\"],[120537,1,\"ψ\"],[120538,1,\"ω\"],[120539,1,\"∂\"],[120540,1,\"ε\"],[120541,1,\"θ\"],[120542,1,\"κ\"],[120543,1,\"φ\"],[120544,1,\"ρ\"],[120545,1,\"π\"],[120546,1,\"α\"],[120547,1,\"β\"],[120548,1,\"γ\"],[120549,1,\"δ\"],[120550,1,\"ε\"],[120551,1,\"ζ\"],[120552,1,\"η\"],[120553,1,\"θ\"],[120554,1,\"ι\"],[120555,1,\"κ\"],[120556,1,\"λ\"],[120557,1,\"μ\"],[120558,1,\"ν\"],[120559,1,\"ξ\"],[120560,1,\"ο\"],[120561,1,\"π\"],[120562,1,\"ρ\"],[120563,1,\"θ\"],[120564,1,\"σ\"],[120565,1,\"τ\"],[120566,1,\"υ\"],[120567,1,\"φ\"],[120568,1,\"χ\"],[120569,1,\"ψ\"],[120570,1,\"ω\"],[120571,1,\"∇\"],[120572,1,\"α\"],[120573,1,\"β\"],[120574,1,\"γ\"],[120575,1,\"δ\"],[120576,1,\"ε\"],[120577,1,\"ζ\"],[120578,1,\"η\"],[120579,1,\"θ\"],[120580,1,\"ι\"],[120581,1,\"κ\"],[120582,1,\"λ\"],[120583,1,\"μ\"],[120584,1,\"ν\"],[120585,1,\"ξ\"],[120586,1,\"ο\"],[120587,1,\"π\"],[120588,1,\"ρ\"],[[120589,120590],1,\"σ\"],[120591,1,\"τ\"],[120592,1,\"υ\"],[120593,1,\"φ\"],[120594,1,\"χ\"],[120595,1,\"ψ\"],[120596,1,\"ω\"],[120597,1,\"∂\"],[120598,1,\"ε\"],[120599,1,\"θ\"],[120600,1,\"κ\"],[120601,1,\"φ\"],[120602,1,\"ρ\"],[120603,1,\"π\"],[120604,1,\"α\"],[120605,1,\"β\"],[120606,1,\"γ\"],[120607,1,\"δ\"],[120608,1,\"ε\"],[120609,1,\"ζ\"],[120610,1,\"η\"],[120611,1,\"θ\"],[120612,1,\"ι\"],[120613,1,\"κ\"],[120614,1,\"λ\"],[120615,1,\"μ\"],[120616,1,\"ν\"],[120617,1,\"ξ\"],[120618,1,\"ο\"],[120619,1,\"π\"],[120620,1,\"ρ\"],[120621,1,\"θ\"],[120622,1,\"σ\"],[120623,1,\"τ\"],[120624,1,\"υ\"],[120625,1,\"φ\"],[120626,1,\"χ\"],[120627,1,\"ψ\"],[120628,1,\"ω\"],[120629,1,\"∇\"],[120630,1,\"α\"],[120631,1,\"β\"],[120632,1,\"γ\"],[120633,1,\"δ\"],[120634,1,\"ε\"],[120635,1,\"ζ\"],[120636,1,\"η\"],[120637,1,\"θ\"],[120638,1,\"ι\"],[120639,1,\"κ\"],[120640,1,\"λ\"],[120641,1,\"μ\"],[120642,1,\"ν\"],[120643,1,\"ξ\"],[120644,1,\"ο\"],[120645,1,\"π\"],[120646,1,\"ρ\"],[[120647,120648],1,\"σ\"],[120649,1,\"τ\"],[120650,1,\"υ\"],[120651,1,\"φ\"],[120652,1,\"χ\"],[120653,1,\"ψ\"],[120654,1,\"ω\"],[120655,1,\"∂\"],[120656,1,\"ε\"],[120657,1,\"θ\"],[120658,1,\"κ\"],[120659,1,\"φ\"],[120660,1,\"ρ\"],[120661,1,\"π\"],[120662,1,\"α\"],[120663,1,\"β\"],[120664,1,\"γ\"],[120665,1,\"δ\"],[120666,1,\"ε\"],[120667,1,\"ζ\"],[120668,1,\"η\"],[120669,1,\"θ\"],[120670,1,\"ι\"],[120671,1,\"κ\"],[120672,1,\"λ\"],[120673,1,\"μ\"],[120674,1,\"ν\"],[120675,1,\"ξ\"],[120676,1,\"ο\"],[120677,1,\"π\"],[120678,1,\"ρ\"],[120679,1,\"θ\"],[120680,1,\"σ\"],[120681,1,\"τ\"],[120682,1,\"υ\"],[120683,1,\"φ\"],[120684,1,\"χ\"],[120685,1,\"ψ\"],[120686,1,\"ω\"],[120687,1,\"∇\"],[120688,1,\"α\"],[120689,1,\"β\"],[120690,1,\"γ\"],[120691,1,\"δ\"],[120692,1,\"ε\"],[120693,1,\"ζ\"],[120694,1,\"η\"],[120695,1,\"θ\"],[120696,1,\"ι\"],[120697,1,\"κ\"],[120698,1,\"λ\"],[120699,1,\"μ\"],[120700,1,\"ν\"],[120701,1,\"ξ\"],[120702,1,\"ο\"],[120703,1,\"π\"],[120704,1,\"ρ\"],[[120705,120706],1,\"σ\"],[120707,1,\"τ\"],[120708,1,\"υ\"],[120709,1,\"φ\"],[120710,1,\"χ\"],[120711,1,\"ψ\"],[120712,1,\"ω\"],[120713,1,\"∂\"],[120714,1,\"ε\"],[120715,1,\"θ\"],[120716,1,\"κ\"],[120717,1,\"φ\"],[120718,1,\"ρ\"],[120719,1,\"π\"],[120720,1,\"α\"],[120721,1,\"β\"],[120722,1,\"γ\"],[120723,1,\"δ\"],[120724,1,\"ε\"],[120725,1,\"ζ\"],[120726,1,\"η\"],[120727,1,\"θ\"],[120728,1,\"ι\"],[120729,1,\"κ\"],[120730,1,\"λ\"],[120731,1,\"μ\"],[120732,1,\"ν\"],[120733,1,\"ξ\"],[120734,1,\"ο\"],[120735,1,\"π\"],[120736,1,\"ρ\"],[120737,1,\"θ\"],[120738,1,\"σ\"],[120739,1,\"τ\"],[120740,1,\"υ\"],[120741,1,\"φ\"],[120742,1,\"χ\"],[120743,1,\"ψ\"],[120744,1,\"ω\"],[120745,1,\"∇\"],[120746,1,\"α\"],[120747,1,\"β\"],[120748,1,\"γ\"],[120749,1,\"δ\"],[120750,1,\"ε\"],[120751,1,\"ζ\"],[120752,1,\"η\"],[120753,1,\"θ\"],[120754,1,\"ι\"],[120755,1,\"κ\"],[120756,1,\"λ\"],[120757,1,\"μ\"],[120758,1,\"ν\"],[120759,1,\"ξ\"],[120760,1,\"ο\"],[120761,1,\"π\"],[120762,1,\"ρ\"],[[120763,120764],1,\"σ\"],[120765,1,\"τ\"],[120766,1,\"υ\"],[120767,1,\"φ\"],[120768,1,\"χ\"],[120769,1,\"ψ\"],[120770,1,\"ω\"],[120771,1,\"∂\"],[120772,1,\"ε\"],[120773,1,\"θ\"],[120774,1,\"κ\"],[120775,1,\"φ\"],[120776,1,\"ρ\"],[120777,1,\"π\"],[[120778,120779],1,\"ϝ\"],[[120780,120781],3],[120782,1,\"0\"],[120783,1,\"1\"],[120784,1,\"2\"],[120785,1,\"3\"],[120786,1,\"4\"],[120787,1,\"5\"],[120788,1,\"6\"],[120789,1,\"7\"],[120790,1,\"8\"],[120791,1,\"9\"],[120792,1,\"0\"],[120793,1,\"1\"],[120794,1,\"2\"],[120795,1,\"3\"],[120796,1,\"4\"],[120797,1,\"5\"],[120798,1,\"6\"],[120799,1,\"7\"],[120800,1,\"8\"],[120801,1,\"9\"],[120802,1,\"0\"],[120803,1,\"1\"],[120804,1,\"2\"],[120805,1,\"3\"],[120806,1,\"4\"],[120807,1,\"5\"],[120808,1,\"6\"],[120809,1,\"7\"],[120810,1,\"8\"],[120811,1,\"9\"],[120812,1,\"0\"],[120813,1,\"1\"],[120814,1,\"2\"],[120815,1,\"3\"],[120816,1,\"4\"],[120817,1,\"5\"],[120818,1,\"6\"],[120819,1,\"7\"],[120820,1,\"8\"],[120821,1,\"9\"],[120822,1,\"0\"],[120823,1,\"1\"],[120824,1,\"2\"],[120825,1,\"3\"],[120826,1,\"4\"],[120827,1,\"5\"],[120828,1,\"6\"],[120829,1,\"7\"],[120830,1,\"8\"],[120831,1,\"9\"],[[120832,121343],2],[[121344,121398],2],[[121399,121402],2],[[121403,121452],2],[[121453,121460],2],[121461,2],[[121462,121475],2],[121476,2],[[121477,121483],2],[[121484,121498],3],[[121499,121503],2],[121504,3],[[121505,121519],2],[[121520,122623],3],[[122624,122654],2],[[122655,122660],3],[[122661,122666],2],[[122667,122879],3],[[122880,122886],2],[122887,3],[[122888,122904],2],[[122905,122906],3],[[122907,122913],2],[122914,3],[[122915,122916],2],[122917,3],[[122918,122922],2],[[122923,122927],3],[122928,1,\"а\"],[122929,1,\"б\"],[122930,1,\"в\"],[122931,1,\"г\"],[122932,1,\"д\"],[122933,1,\"е\"],[122934,1,\"ж\"],[122935,1,\"з\"],[122936,1,\"и\"],[122937,1,\"к\"],[122938,1,\"л\"],[122939,1,\"м\"],[122940,1,\"о\"],[122941,1,\"п\"],[122942,1,\"р\"],[122943,1,\"с\"],[122944,1,\"т\"],[122945,1,\"у\"],[122946,1,\"ф\"],[122947,1,\"х\"],[122948,1,\"ц\"],[122949,1,\"ч\"],[122950,1,\"ш\"],[122951,1,\"ы\"],[122952,1,\"э\"],[122953,1,\"ю\"],[122954,1,\"ꚉ\"],[122955,1,\"ә\"],[122956,1,\"і\"],[122957,1,\"ј\"],[122958,1,\"ө\"],[122959,1,\"ү\"],[122960,1,\"ӏ\"],[122961,1,\"а\"],[122962,1,\"б\"],[122963,1,\"в\"],[122964,1,\"г\"],[122965,1,\"д\"],[122966,1,\"е\"],[122967,1,\"ж\"],[122968,1,\"з\"],[122969,1,\"и\"],[122970,1,\"к\"],[122971,1,\"л\"],[122972,1,\"о\"],[122973,1,\"п\"],[122974,1,\"с\"],[122975,1,\"у\"],[122976,1,\"ф\"],[122977,1,\"х\"],[122978,1,\"ц\"],[122979,1,\"ч\"],[122980,1,\"ш\"],[122981,1,\"ъ\"],[122982,1,\"ы\"],[122983,1,\"ґ\"],[122984,1,\"і\"],[122985,1,\"ѕ\"],[122986,1,\"џ\"],[122987,1,\"ҫ\"],[122988,1,\"ꙑ\"],[122989,1,\"ұ\"],[[122990,123022],3],[123023,2],[[123024,123135],3],[[123136,123180],2],[[123181,123183],3],[[123184,123197],2],[[123198,123199],3],[[123200,123209],2],[[123210,123213],3],[123214,2],[123215,2],[[123216,123535],3],[[123536,123566],2],[[123567,123583],3],[[123584,123641],2],[[123642,123646],3],[123647,2],[[123648,124111],3],[[124112,124153],2],[[124154,124367],3],[[124368,124410],2],[[124411,124414],3],[124415,2],[[124416,124895],3],[[124896,124902],2],[124903,3],[[124904,124907],2],[124908,3],[[124909,124910],2],[124911,3],[[124912,124926],2],[124927,3],[[124928,125124],2],[[125125,125126],3],[[125127,125135],2],[[125136,125142],2],[[125143,125183],3],[125184,1,\"𞤢\"],[125185,1,\"𞤣\"],[125186,1,\"𞤤\"],[125187,1,\"𞤥\"],[125188,1,\"𞤦\"],[125189,1,\"𞤧\"],[125190,1,\"𞤨\"],[125191,1,\"𞤩\"],[125192,1,\"𞤪\"],[125193,1,\"𞤫\"],[125194,1,\"𞤬\"],[125195,1,\"𞤭\"],[125196,1,\"𞤮\"],[125197,1,\"𞤯\"],[125198,1,\"𞤰\"],[125199,1,\"𞤱\"],[125200,1,\"𞤲\"],[125201,1,\"𞤳\"],[125202,1,\"𞤴\"],[125203,1,\"𞤵\"],[125204,1,\"𞤶\"],[125205,1,\"𞤷\"],[125206,1,\"𞤸\"],[125207,1,\"𞤹\"],[125208,1,\"𞤺\"],[125209,1,\"𞤻\"],[125210,1,\"𞤼\"],[125211,1,\"𞤽\"],[125212,1,\"𞤾\"],[125213,1,\"𞤿\"],[125214,1,\"𞥀\"],[125215,1,\"𞥁\"],[125216,1,\"𞥂\"],[125217,1,\"𞥃\"],[[125218,125258],2],[125259,2],[[125260,125263],3],[[125264,125273],2],[[125274,125277],3],[[125278,125279],2],[[125280,126064],3],[[126065,126132],2],[[126133,126208],3],[[126209,126269],2],[[126270,126463],3],[126464,1,\"ا\"],[126465,1,\"ب\"],[126466,1,\"ج\"],[126467,1,\"د\"],[126468,3],[126469,1,\"و\"],[126470,1,\"ز\"],[126471,1,\"ح\"],[126472,1,\"ط\"],[126473,1,\"ي\"],[126474,1,\"ك\"],[126475,1,\"ل\"],[126476,1,\"م\"],[126477,1,\"ن\"],[126478,1,\"س\"],[126479,1,\"ع\"],[126480,1,\"ف\"],[126481,1,\"ص\"],[126482,1,\"ق\"],[126483,1,\"ر\"],[126484,1,\"ش\"],[126485,1,\"ت\"],[126486,1,\"ث\"],[126487,1,\"خ\"],[126488,1,\"ذ\"],[126489,1,\"ض\"],[126490,1,\"ظ\"],[126491,1,\"غ\"],[126492,1,\"ٮ\"],[126493,1,\"ں\"],[126494,1,\"ڡ\"],[126495,1,\"ٯ\"],[126496,3],[126497,1,\"ب\"],[126498,1,\"ج\"],[126499,3],[126500,1,\"ه\"],[[126501,126502],3],[126503,1,\"ح\"],[126504,3],[126505,1,\"ي\"],[126506,1,\"ك\"],[126507,1,\"ل\"],[126508,1,\"م\"],[126509,1,\"ن\"],[126510,1,\"س\"],[126511,1,\"ع\"],[126512,1,\"ف\"],[126513,1,\"ص\"],[126514,1,\"ق\"],[126515,3],[126516,1,\"ش\"],[126517,1,\"ت\"],[126518,1,\"ث\"],[126519,1,\"خ\"],[126520,3],[126521,1,\"ض\"],[126522,3],[126523,1,\"غ\"],[[126524,126529],3],[126530,1,\"ج\"],[[126531,126534],3],[126535,1,\"ح\"],[126536,3],[126537,1,\"ي\"],[126538,3],[126539,1,\"ل\"],[126540,3],[126541,1,\"ن\"],[126542,1,\"س\"],[126543,1,\"ع\"],[126544,3],[126545,1,\"ص\"],[126546,1,\"ق\"],[126547,3],[126548,1,\"ش\"],[[126549,126550],3],[126551,1,\"خ\"],[126552,3],[126553,1,\"ض\"],[126554,3],[126555,1,\"غ\"],[126556,3],[126557,1,\"ں\"],[126558,3],[126559,1,\"ٯ\"],[126560,3],[126561,1,\"ب\"],[126562,1,\"ج\"],[126563,3],[126564,1,\"ه\"],[[126565,126566],3],[126567,1,\"ح\"],[126568,1,\"ط\"],[126569,1,\"ي\"],[126570,1,\"ك\"],[126571,3],[126572,1,\"م\"],[126573,1,\"ن\"],[126574,1,\"س\"],[126575,1,\"ع\"],[126576,1,\"ف\"],[126577,1,\"ص\"],[126578,1,\"ق\"],[126579,3],[126580,1,\"ش\"],[126581,1,\"ت\"],[126582,1,\"ث\"],[126583,1,\"خ\"],[126584,3],[126585,1,\"ض\"],[126586,1,\"ظ\"],[126587,1,\"غ\"],[126588,1,\"ٮ\"],[126589,3],[126590,1,\"ڡ\"],[126591,3],[126592,1,\"ا\"],[126593,1,\"ب\"],[126594,1,\"ج\"],[126595,1,\"د\"],[126596,1,\"ه\"],[126597,1,\"و\"],[126598,1,\"ز\"],[126599,1,\"ح\"],[126600,1,\"ط\"],[126601,1,\"ي\"],[126602,3],[126603,1,\"ل\"],[126604,1,\"م\"],[126605,1,\"ن\"],[126606,1,\"س\"],[126607,1,\"ع\"],[126608,1,\"ف\"],[126609,1,\"ص\"],[126610,1,\"ق\"],[126611,1,\"ر\"],[126612,1,\"ش\"],[126613,1,\"ت\"],[126614,1,\"ث\"],[126615,1,\"خ\"],[126616,1,\"ذ\"],[126617,1,\"ض\"],[126618,1,\"ظ\"],[126619,1,\"غ\"],[[126620,126624],3],[126625,1,\"ب\"],[126626,1,\"ج\"],[126627,1,\"د\"],[126628,3],[126629,1,\"و\"],[126630,1,\"ز\"],[126631,1,\"ح\"],[126632,1,\"ط\"],[126633,1,\"ي\"],[126634,3],[126635,1,\"ل\"],[126636,1,\"م\"],[126637,1,\"ن\"],[126638,1,\"س\"],[126639,1,\"ع\"],[126640,1,\"ف\"],[126641,1,\"ص\"],[126642,1,\"ق\"],[126643,1,\"ر\"],[126644,1,\"ش\"],[126645,1,\"ت\"],[126646,1,\"ث\"],[126647,1,\"خ\"],[126648,1,\"ذ\"],[126649,1,\"ض\"],[126650,1,\"ظ\"],[126651,1,\"غ\"],[[126652,126703],3],[[126704,126705],2],[[126706,126975],3],[[126976,127019],2],[[127020,127023],3],[[127024,127123],2],[[127124,127135],3],[[127136,127150],2],[[127151,127152],3],[[127153,127166],2],[127167,2],[127168,3],[[127169,127183],2],[127184,3],[[127185,127199],2],[[127200,127221],2],[[127222,127231],3],[127232,3],[127233,1,\"0,\"],[127234,1,\"1,\"],[127235,1,\"2,\"],[127236,1,\"3,\"],[127237,1,\"4,\"],[127238,1,\"5,\"],[127239,1,\"6,\"],[127240,1,\"7,\"],[127241,1,\"8,\"],[127242,1,\"9,\"],[[127243,127244],2],[[127245,127247],2],[127248,1,\"(a)\"],[127249,1,\"(b)\"],[127250,1,\"(c)\"],[127251,1,\"(d)\"],[127252,1,\"(e)\"],[127253,1,\"(f)\"],[127254,1,\"(g)\"],[127255,1,\"(h)\"],[127256,1,\"(i)\"],[127257,1,\"(j)\"],[127258,1,\"(k)\"],[127259,1,\"(l)\"],[127260,1,\"(m)\"],[127261,1,\"(n)\"],[127262,1,\"(o)\"],[127263,1,\"(p)\"],[127264,1,\"(q)\"],[127265,1,\"(r)\"],[127266,1,\"(s)\"],[127267,1,\"(t)\"],[127268,1,\"(u)\"],[127269,1,\"(v)\"],[127270,1,\"(w)\"],[127271,1,\"(x)\"],[127272,1,\"(y)\"],[127273,1,\"(z)\"],[127274,1,\"〔s〕\"],[127275,1,\"c\"],[127276,1,\"r\"],[127277,1,\"cd\"],[127278,1,\"wz\"],[127279,2],[127280,1,\"a\"],[127281,1,\"b\"],[127282,1,\"c\"],[127283,1,\"d\"],[127284,1,\"e\"],[127285,1,\"f\"],[127286,1,\"g\"],[127287,1,\"h\"],[127288,1,\"i\"],[127289,1,\"j\"],[127290,1,\"k\"],[127291,1,\"l\"],[127292,1,\"m\"],[127293,1,\"n\"],[127294,1,\"o\"],[127295,1,\"p\"],[127296,1,\"q\"],[127297,1,\"r\"],[127298,1,\"s\"],[127299,1,\"t\"],[127300,1,\"u\"],[127301,1,\"v\"],[127302,1,\"w\"],[127303,1,\"x\"],[127304,1,\"y\"],[127305,1,\"z\"],[127306,1,\"hv\"],[127307,1,\"mv\"],[127308,1,\"sd\"],[127309,1,\"ss\"],[127310,1,\"ppv\"],[127311,1,\"wc\"],[[127312,127318],2],[127319,2],[[127320,127326],2],[127327,2],[[127328,127337],2],[127338,1,\"mc\"],[127339,1,\"md\"],[127340,1,\"mr\"],[[127341,127343],2],[[127344,127352],2],[127353,2],[127354,2],[[127355,127356],2],[[127357,127358],2],[127359,2],[[127360,127369],2],[[127370,127373],2],[[127374,127375],2],[127376,1,\"dj\"],[[127377,127386],2],[[127387,127404],2],[127405,2],[[127406,127461],3],[[127462,127487],2],[127488,1,\"ほか\"],[127489,1,\"ココ\"],[127490,1,\"サ\"],[[127491,127503],3],[127504,1,\"手\"],[127505,1,\"字\"],[127506,1,\"双\"],[127507,1,\"デ\"],[127508,1,\"二\"],[127509,1,\"多\"],[127510,1,\"解\"],[127511,1,\"天\"],[127512,1,\"交\"],[127513,1,\"映\"],[127514,1,\"無\"],[127515,1,\"料\"],[127516,1,\"前\"],[127517,1,\"後\"],[127518,1,\"再\"],[127519,1,\"新\"],[127520,1,\"初\"],[127521,1,\"終\"],[127522,1,\"生\"],[127523,1,\"販\"],[127524,1,\"声\"],[127525,1,\"吹\"],[127526,1,\"演\"],[127527,1,\"投\"],[127528,1,\"捕\"],[127529,1,\"一\"],[127530,1,\"三\"],[127531,1,\"遊\"],[127532,1,\"左\"],[127533,1,\"中\"],[127534,1,\"右\"],[127535,1,\"指\"],[127536,1,\"走\"],[127537,1,\"打\"],[127538,1,\"禁\"],[127539,1,\"空\"],[127540,1,\"合\"],[127541,1,\"満\"],[127542,1,\"有\"],[127543,1,\"月\"],[127544,1,\"申\"],[127545,1,\"割\"],[127546,1,\"営\"],[127547,1,\"配\"],[[127548,127551],3],[127552,1,\"〔本〕\"],[127553,1,\"〔三〕\"],[127554,1,\"〔二〕\"],[127555,1,\"〔安〕\"],[127556,1,\"〔点〕\"],[127557,1,\"〔打〕\"],[127558,1,\"〔盗〕\"],[127559,1,\"〔勝〕\"],[127560,1,\"〔敗〕\"],[[127561,127567],3],[127568,1,\"得\"],[127569,1,\"可\"],[[127570,127583],3],[[127584,127589],2],[[127590,127743],3],[[127744,127776],2],[[127777,127788],2],[[127789,127791],2],[[127792,127797],2],[127798,2],[[127799,127868],2],[127869,2],[[127870,127871],2],[[127872,127891],2],[[127892,127903],2],[[127904,127940],2],[127941,2],[[127942,127946],2],[[127947,127950],2],[[127951,127955],2],[[127956,127967],2],[[127968,127984],2],[[127985,127991],2],[[127992,127999],2],[[128000,128062],2],[128063,2],[128064,2],[128065,2],[[128066,128247],2],[128248,2],[[128249,128252],2],[[128253,128254],2],[128255,2],[[128256,128317],2],[[128318,128319],2],[[128320,128323],2],[[128324,128330],2],[[128331,128335],2],[[128336,128359],2],[[128360,128377],2],[128378,2],[[128379,128419],2],[128420,2],[[128421,128506],2],[[128507,128511],2],[128512,2],[[128513,128528],2],[128529,2],[[128530,128532],2],[128533,2],[128534,2],[128535,2],[128536,2],[128537,2],[128538,2],[128539,2],[[128540,128542],2],[128543,2],[[128544,128549],2],[[128550,128551],2],[[128552,128555],2],[128556,2],[128557,2],[[128558,128559],2],[[128560,128563],2],[128564,2],[[128565,128576],2],[[128577,128578],2],[[128579,128580],2],[[128581,128591],2],[[128592,128639],2],[[128640,128709],2],[[128710,128719],2],[128720,2],[[128721,128722],2],[[128723,128724],2],[128725,2],[[128726,128727],2],[[128728,128731],3],[128732,2],[[128733,128735],2],[[128736,128748],2],[[128749,128751],3],[[128752,128755],2],[[128756,128758],2],[[128759,128760],2],[128761,2],[128762,2],[[128763,128764],2],[[128765,128767],3],[[128768,128883],2],[[128884,128886],2],[[128887,128890],3],[[128891,128895],2],[[128896,128980],2],[[128981,128984],2],[128985,2],[[128986,128991],3],[[128992,129003],2],[[129004,129007],3],[129008,2],[[129009,129023],3],[[129024,129035],2],[[129036,129039],3],[[129040,129095],2],[[129096,129103],3],[[129104,129113],2],[[129114,129119],3],[[129120,129159],2],[[129160,129167],3],[[129168,129197],2],[[129198,129199],3],[[129200,129201],2],[[129202,129211],2],[[129212,129215],3],[[129216,129217],2],[[129218,129279],3],[[129280,129291],2],[129292,2],[[129293,129295],2],[[129296,129304],2],[[129305,129310],2],[129311,2],[[129312,129319],2],[[129320,129327],2],[129328,2],[[129329,129330],2],[[129331,129342],2],[129343,2],[[129344,129355],2],[129356,2],[[129357,129359],2],[[129360,129374],2],[[129375,129387],2],[[129388,129392],2],[129393,2],[129394,2],[[129395,129398],2],[[129399,129400],2],[129401,2],[129402,2],[129403,2],[[129404,129407],2],[[129408,129412],2],[[129413,129425],2],[[129426,129431],2],[[129432,129442],2],[[129443,129444],2],[[129445,129450],2],[[129451,129453],2],[[129454,129455],2],[[129456,129465],2],[[129466,129471],2],[129472,2],[[129473,129474],2],[[129475,129482],2],[129483,2],[129484,2],[[129485,129487],2],[[129488,129510],2],[[129511,129535],2],[[129536,129619],2],[[129620,129631],3],[[129632,129645],2],[[129646,129647],3],[[129648,129651],2],[129652,2],[[129653,129655],2],[[129656,129658],2],[[129659,129660],2],[[129661,129663],3],[[129664,129666],2],[[129667,129670],2],[[129671,129672],2],[129673,2],[[129674,129678],3],[129679,2],[[129680,129685],2],[[129686,129704],2],[[129705,129708],2],[[129709,129711],2],[[129712,129718],2],[[129719,129722],2],[[129723,129725],2],[129726,2],[129727,2],[[129728,129730],2],[[129731,129733],2],[129734,2],[[129735,129741],3],[[129742,129743],2],[[129744,129750],2],[[129751,129753],2],[[129754,129755],2],[129756,2],[[129757,129758],3],[129759,2],[[129760,129767],2],[129768,2],[129769,2],[[129770,129775],3],[[129776,129782],2],[[129783,129784],2],[[129785,129791],3],[[129792,129938],2],[129939,3],[[129940,129994],2],[[129995,130031],2],[130032,1,\"0\"],[130033,1,\"1\"],[130034,1,\"2\"],[130035,1,\"3\"],[130036,1,\"4\"],[130037,1,\"5\"],[130038,1,\"6\"],[130039,1,\"7\"],[130040,1,\"8\"],[130041,1,\"9\"],[[130042,131069],3],[[131070,131071],3],[[131072,173782],2],[[173783,173789],2],[[173790,173791],2],[[173792,173823],3],[[173824,177972],2],[[177973,177976],2],[177977,2],[[177978,177983],3],[[177984,178205],2],[[178206,178207],3],[[178208,183969],2],[[183970,183983],3],[[183984,191456],2],[[191457,191471],3],[[191472,192093],2],[[192094,194559],3],[194560,1,\"丽\"],[194561,1,\"丸\"],[194562,1,\"乁\"],[194563,1,\"𠄢\"],[194564,1,\"你\"],[194565,1,\"侮\"],[194566,1,\"侻\"],[194567,1,\"倂\"],[194568,1,\"偺\"],[194569,1,\"備\"],[194570,1,\"僧\"],[194571,1,\"像\"],[194572,1,\"㒞\"],[194573,1,\"𠘺\"],[194574,1,\"免\"],[194575,1,\"兔\"],[194576,1,\"兤\"],[194577,1,\"具\"],[194578,1,\"𠔜\"],[194579,1,\"㒹\"],[194580,1,\"內\"],[194581,1,\"再\"],[194582,1,\"𠕋\"],[194583,1,\"冗\"],[194584,1,\"冤\"],[194585,1,\"仌\"],[194586,1,\"冬\"],[194587,1,\"况\"],[194588,1,\"𩇟\"],[194589,1,\"凵\"],[194590,1,\"刃\"],[194591,1,\"㓟\"],[194592,1,\"刻\"],[194593,1,\"剆\"],[194594,1,\"割\"],[194595,1,\"剷\"],[194596,1,\"㔕\"],[194597,1,\"勇\"],[194598,1,\"勉\"],[194599,1,\"勤\"],[194600,1,\"勺\"],[194601,1,\"包\"],[194602,1,\"匆\"],[194603,1,\"北\"],[194604,1,\"卉\"],[194605,1,\"卑\"],[194606,1,\"博\"],[194607,1,\"即\"],[194608,1,\"卽\"],[[194609,194611],1,\"卿\"],[194612,1,\"𠨬\"],[194613,1,\"灰\"],[194614,1,\"及\"],[194615,1,\"叟\"],[194616,1,\"𠭣\"],[194617,1,\"叫\"],[194618,1,\"叱\"],[194619,1,\"吆\"],[194620,1,\"咞\"],[194621,1,\"吸\"],[194622,1,\"呈\"],[194623,1,\"周\"],[194624,1,\"咢\"],[194625,1,\"哶\"],[194626,1,\"唐\"],[194627,1,\"啓\"],[194628,1,\"啣\"],[[194629,194630],1,\"善\"],[194631,1,\"喙\"],[194632,1,\"喫\"],[194633,1,\"喳\"],[194634,1,\"嗂\"],[194635,1,\"圖\"],[194636,1,\"嘆\"],[194637,1,\"圗\"],[194638,1,\"噑\"],[194639,1,\"噴\"],[194640,1,\"切\"],[194641,1,\"壮\"],[194642,1,\"城\"],[194643,1,\"埴\"],[194644,1,\"堍\"],[194645,1,\"型\"],[194646,1,\"堲\"],[194647,1,\"報\"],[194648,1,\"墬\"],[194649,1,\"𡓤\"],[194650,1,\"売\"],[194651,1,\"壷\"],[194652,1,\"夆\"],[194653,1,\"多\"],[194654,1,\"夢\"],[194655,1,\"奢\"],[194656,1,\"𡚨\"],[194657,1,\"𡛪\"],[194658,1,\"姬\"],[194659,1,\"娛\"],[194660,1,\"娧\"],[194661,1,\"姘\"],[194662,1,\"婦\"],[194663,1,\"㛮\"],[194664,1,\"㛼\"],[194665,1,\"嬈\"],[[194666,194667],1,\"嬾\"],[194668,1,\"𡧈\"],[194669,1,\"寃\"],[194670,1,\"寘\"],[194671,1,\"寧\"],[194672,1,\"寳\"],[194673,1,\"𡬘\"],[194674,1,\"寿\"],[194675,1,\"将\"],[194676,1,\"当\"],[194677,1,\"尢\"],[194678,1,\"㞁\"],[194679,1,\"屠\"],[194680,1,\"屮\"],[194681,1,\"峀\"],[194682,1,\"岍\"],[194683,1,\"𡷤\"],[194684,1,\"嵃\"],[194685,1,\"𡷦\"],[194686,1,\"嵮\"],[194687,1,\"嵫\"],[194688,1,\"嵼\"],[194689,1,\"巡\"],[194690,1,\"巢\"],[194691,1,\"㠯\"],[194692,1,\"巽\"],[194693,1,\"帨\"],[194694,1,\"帽\"],[194695,1,\"幩\"],[194696,1,\"㡢\"],[194697,1,\"𢆃\"],[194698,1,\"㡼\"],[194699,1,\"庰\"],[194700,1,\"庳\"],[194701,1,\"庶\"],[194702,1,\"廊\"],[194703,1,\"𪎒\"],[194704,1,\"廾\"],[[194705,194706],1,\"𢌱\"],[194707,1,\"舁\"],[[194708,194709],1,\"弢\"],[194710,1,\"㣇\"],[194711,1,\"𣊸\"],[194712,1,\"𦇚\"],[194713,1,\"形\"],[194714,1,\"彫\"],[194715,1,\"㣣\"],[194716,1,\"徚\"],[194717,1,\"忍\"],[194718,1,\"志\"],[194719,1,\"忹\"],[194720,1,\"悁\"],[194721,1,\"㤺\"],[194722,1,\"㤜\"],[194723,1,\"悔\"],[194724,1,\"𢛔\"],[194725,1,\"惇\"],[194726,1,\"慈\"],[194727,1,\"慌\"],[194728,1,\"慎\"],[194729,1,\"慌\"],[194730,1,\"慺\"],[194731,1,\"憎\"],[194732,1,\"憲\"],[194733,1,\"憤\"],[194734,1,\"憯\"],[194735,1,\"懞\"],[194736,1,\"懲\"],[194737,1,\"懶\"],[194738,1,\"成\"],[194739,1,\"戛\"],[194740,1,\"扝\"],[194741,1,\"抱\"],[194742,1,\"拔\"],[194743,1,\"捐\"],[194744,1,\"𢬌\"],[194745,1,\"挽\"],[194746,1,\"拼\"],[194747,1,\"捨\"],[194748,1,\"掃\"],[194749,1,\"揤\"],[194750,1,\"𢯱\"],[194751,1,\"搢\"],[194752,1,\"揅\"],[194753,1,\"掩\"],[194754,1,\"㨮\"],[194755,1,\"摩\"],[194756,1,\"摾\"],[194757,1,\"撝\"],[194758,1,\"摷\"],[194759,1,\"㩬\"],[194760,1,\"敏\"],[194761,1,\"敬\"],[194762,1,\"𣀊\"],[194763,1,\"旣\"],[194764,1,\"書\"],[194765,1,\"晉\"],[194766,1,\"㬙\"],[194767,1,\"暑\"],[194768,1,\"㬈\"],[194769,1,\"㫤\"],[194770,1,\"冒\"],[194771,1,\"冕\"],[194772,1,\"最\"],[194773,1,\"暜\"],[194774,1,\"肭\"],[194775,1,\"䏙\"],[194776,1,\"朗\"],[194777,1,\"望\"],[194778,1,\"朡\"],[194779,1,\"杞\"],[194780,1,\"杓\"],[194781,1,\"𣏃\"],[194782,1,\"㭉\"],[194783,1,\"柺\"],[194784,1,\"枅\"],[194785,1,\"桒\"],[194786,1,\"梅\"],[194787,1,\"𣑭\"],[194788,1,\"梎\"],[194789,1,\"栟\"],[194790,1,\"椔\"],[194791,1,\"㮝\"],[194792,1,\"楂\"],[194793,1,\"榣\"],[194794,1,\"槪\"],[194795,1,\"檨\"],[194796,1,\"𣚣\"],[194797,1,\"櫛\"],[194798,1,\"㰘\"],[194799,1,\"次\"],[194800,1,\"𣢧\"],[194801,1,\"歔\"],[194802,1,\"㱎\"],[194803,1,\"歲\"],[194804,1,\"殟\"],[194805,1,\"殺\"],[194806,1,\"殻\"],[194807,1,\"𣪍\"],[194808,1,\"𡴋\"],[194809,1,\"𣫺\"],[194810,1,\"汎\"],[194811,1,\"𣲼\"],[194812,1,\"沿\"],[194813,1,\"泍\"],[194814,1,\"汧\"],[194815,1,\"洖\"],[194816,1,\"派\"],[194817,1,\"海\"],[194818,1,\"流\"],[194819,1,\"浩\"],[194820,1,\"浸\"],[194821,1,\"涅\"],[194822,1,\"𣴞\"],[194823,1,\"洴\"],[194824,1,\"港\"],[194825,1,\"湮\"],[194826,1,\"㴳\"],[194827,1,\"滋\"],[194828,1,\"滇\"],[194829,1,\"𣻑\"],[194830,1,\"淹\"],[194831,1,\"潮\"],[194832,1,\"𣽞\"],[194833,1,\"𣾎\"],[194834,1,\"濆\"],[194835,1,\"瀹\"],[194836,1,\"瀞\"],[194837,1,\"瀛\"],[194838,1,\"㶖\"],[194839,1,\"灊\"],[194840,1,\"災\"],[194841,1,\"灷\"],[194842,1,\"炭\"],[194843,1,\"𠔥\"],[194844,1,\"煅\"],[194845,1,\"𤉣\"],[194846,1,\"熜\"],[194847,1,\"𤎫\"],[194848,1,\"爨\"],[194849,1,\"爵\"],[194850,1,\"牐\"],[194851,1,\"𤘈\"],[194852,1,\"犀\"],[194853,1,\"犕\"],[194854,1,\"𤜵\"],[194855,1,\"𤠔\"],[194856,1,\"獺\"],[194857,1,\"王\"],[194858,1,\"㺬\"],[194859,1,\"玥\"],[[194860,194861],1,\"㺸\"],[194862,1,\"瑇\"],[194863,1,\"瑜\"],[194864,1,\"瑱\"],[194865,1,\"璅\"],[194866,1,\"瓊\"],[194867,1,\"㼛\"],[194868,1,\"甤\"],[194869,1,\"𤰶\"],[194870,1,\"甾\"],[194871,1,\"𤲒\"],[194872,1,\"異\"],[194873,1,\"𢆟\"],[194874,1,\"瘐\"],[194875,1,\"𤾡\"],[194876,1,\"𤾸\"],[194877,1,\"𥁄\"],[194878,1,\"㿼\"],[194879,1,\"䀈\"],[194880,1,\"直\"],[194881,1,\"𥃳\"],[194882,1,\"𥃲\"],[194883,1,\"𥄙\"],[194884,1,\"𥄳\"],[194885,1,\"眞\"],[[194886,194887],1,\"真\"],[194888,1,\"睊\"],[194889,1,\"䀹\"],[194890,1,\"瞋\"],[194891,1,\"䁆\"],[194892,1,\"䂖\"],[194893,1,\"𥐝\"],[194894,1,\"硎\"],[194895,1,\"碌\"],[194896,1,\"磌\"],[194897,1,\"䃣\"],[194898,1,\"𥘦\"],[194899,1,\"祖\"],[194900,1,\"𥚚\"],[194901,1,\"𥛅\"],[194902,1,\"福\"],[194903,1,\"秫\"],[194904,1,\"䄯\"],[194905,1,\"穀\"],[194906,1,\"穊\"],[194907,1,\"穏\"],[194908,1,\"𥥼\"],[[194909,194910],1,\"𥪧\"],[194911,1,\"竮\"],[194912,1,\"䈂\"],[194913,1,\"𥮫\"],[194914,1,\"篆\"],[194915,1,\"築\"],[194916,1,\"䈧\"],[194917,1,\"𥲀\"],[194918,1,\"糒\"],[194919,1,\"䊠\"],[194920,1,\"糨\"],[194921,1,\"糣\"],[194922,1,\"紀\"],[194923,1,\"𥾆\"],[194924,1,\"絣\"],[194925,1,\"䌁\"],[194926,1,\"緇\"],[194927,1,\"縂\"],[194928,1,\"繅\"],[194929,1,\"䌴\"],[194930,1,\"𦈨\"],[194931,1,\"𦉇\"],[194932,1,\"䍙\"],[194933,1,\"𦋙\"],[194934,1,\"罺\"],[194935,1,\"𦌾\"],[194936,1,\"羕\"],[194937,1,\"翺\"],[194938,1,\"者\"],[194939,1,\"𦓚\"],[194940,1,\"𦔣\"],[194941,1,\"聠\"],[194942,1,\"𦖨\"],[194943,1,\"聰\"],[194944,1,\"𣍟\"],[194945,1,\"䏕\"],[194946,1,\"育\"],[194947,1,\"脃\"],[194948,1,\"䐋\"],[194949,1,\"脾\"],[194950,1,\"媵\"],[194951,1,\"𦞧\"],[194952,1,\"𦞵\"],[194953,1,\"𣎓\"],[194954,1,\"𣎜\"],[194955,1,\"舁\"],[194956,1,\"舄\"],[194957,1,\"辞\"],[194958,1,\"䑫\"],[194959,1,\"芑\"],[194960,1,\"芋\"],[194961,1,\"芝\"],[194962,1,\"劳\"],[194963,1,\"花\"],[194964,1,\"芳\"],[194965,1,\"芽\"],[194966,1,\"苦\"],[194967,1,\"𦬼\"],[194968,1,\"若\"],[194969,1,\"茝\"],[194970,1,\"荣\"],[194971,1,\"莭\"],[194972,1,\"茣\"],[194973,1,\"莽\"],[194974,1,\"菧\"],[194975,1,\"著\"],[194976,1,\"荓\"],[194977,1,\"菊\"],[194978,1,\"菌\"],[194979,1,\"菜\"],[194980,1,\"𦰶\"],[194981,1,\"𦵫\"],[194982,1,\"𦳕\"],[194983,1,\"䔫\"],[194984,1,\"蓱\"],[194985,1,\"蓳\"],[194986,1,\"蔖\"],[194987,1,\"𧏊\"],[194988,1,\"蕤\"],[194989,1,\"𦼬\"],[194990,1,\"䕝\"],[194991,1,\"䕡\"],[194992,1,\"𦾱\"],[194993,1,\"𧃒\"],[194994,1,\"䕫\"],[194995,1,\"虐\"],[194996,1,\"虜\"],[194997,1,\"虧\"],[194998,1,\"虩\"],[194999,1,\"蚩\"],[195000,1,\"蚈\"],[195001,1,\"蜎\"],[195002,1,\"蛢\"],[195003,1,\"蝹\"],[195004,1,\"蜨\"],[195005,1,\"蝫\"],[195006,1,\"螆\"],[195007,1,\"䗗\"],[195008,1,\"蟡\"],[195009,1,\"蠁\"],[195010,1,\"䗹\"],[195011,1,\"衠\"],[195012,1,\"衣\"],[195013,1,\"𧙧\"],[195014,1,\"裗\"],[195015,1,\"裞\"],[195016,1,\"䘵\"],[195017,1,\"裺\"],[195018,1,\"㒻\"],[195019,1,\"𧢮\"],[195020,1,\"𧥦\"],[195021,1,\"䚾\"],[195022,1,\"䛇\"],[195023,1,\"誠\"],[195024,1,\"諭\"],[195025,1,\"變\"],[195026,1,\"豕\"],[195027,1,\"𧲨\"],[195028,1,\"貫\"],[195029,1,\"賁\"],[195030,1,\"贛\"],[195031,1,\"起\"],[195032,1,\"𧼯\"],[195033,1,\"𠠄\"],[195034,1,\"跋\"],[195035,1,\"趼\"],[195036,1,\"跰\"],[195037,1,\"𠣞\"],[195038,1,\"軔\"],[195039,1,\"輸\"],[195040,1,\"𨗒\"],[195041,1,\"𨗭\"],[195042,1,\"邔\"],[195043,1,\"郱\"],[195044,1,\"鄑\"],[195045,1,\"𨜮\"],[195046,1,\"鄛\"],[195047,1,\"鈸\"],[195048,1,\"鋗\"],[195049,1,\"鋘\"],[195050,1,\"鉼\"],[195051,1,\"鏹\"],[195052,1,\"鐕\"],[195053,1,\"𨯺\"],[195054,1,\"開\"],[195055,1,\"䦕\"],[195056,1,\"閷\"],[195057,1,\"𨵷\"],[195058,1,\"䧦\"],[195059,1,\"雃\"],[195060,1,\"嶲\"],[195061,1,\"霣\"],[195062,1,\"𩅅\"],[195063,1,\"𩈚\"],[195064,1,\"䩮\"],[195065,1,\"䩶\"],[195066,1,\"韠\"],[195067,1,\"𩐊\"],[195068,1,\"䪲\"],[195069,1,\"𩒖\"],[[195070,195071],1,\"頋\"],[195072,1,\"頩\"],[195073,1,\"𩖶\"],[195074,1,\"飢\"],[195075,1,\"䬳\"],[195076,1,\"餩\"],[195077,1,\"馧\"],[195078,1,\"駂\"],[195079,1,\"駾\"],[195080,1,\"䯎\"],[195081,1,\"𩬰\"],[195082,1,\"鬒\"],[195083,1,\"鱀\"],[195084,1,\"鳽\"],[195085,1,\"䳎\"],[195086,1,\"䳭\"],[195087,1,\"鵧\"],[195088,1,\"𪃎\"],[195089,1,\"䳸\"],[195090,1,\"𪄅\"],[195091,1,\"𪈎\"],[195092,1,\"𪊑\"],[195093,1,\"麻\"],[195094,1,\"䵖\"],[195095,1,\"黹\"],[195096,1,\"黾\"],[195097,1,\"鼅\"],[195098,1,\"鼏\"],[195099,1,\"鼖\"],[195100,1,\"鼻\"],[195101,1,\"𪘀\"],[[195102,196605],3],[[196606,196607],3],[[196608,201546],2],[[201547,201551],3],[[201552,205743],2],[[205744,262141],3],[[262142,262143],3],[[262144,327677],3],[[327678,327679],3],[[327680,393213],3],[[393214,393215],3],[[393216,458749],3],[[458750,458751],3],[[458752,524285],3],[[524286,524287],3],[[524288,589821],3],[[589822,589823],3],[[589824,655357],3],[[655358,655359],3],[[655360,720893],3],[[720894,720895],3],[[720896,786429],3],[[786430,786431],3],[[786432,851965],3],[[851966,851967],3],[[851968,917501],3],[[917502,917503],3],[917504,3],[917505,3],[[917506,917535],3],[[917536,917631],3],[[917632,917759],3],[[917760,917999],7],[[918000,983037],3],[[983038,983039],3],[[983040,1048573],3],[[1048574,1048575],3],[[1048576,1114109],3],[[1114110,1114111],3]]","\"use strict\";\n\nmodule.exports.STATUS_MAPPING = {\n mapped: 1,\n valid: 2,\n disallowed: 3,\n deviation: 6,\n ignored: 7\n};\n","\"use strict\";\n\nconst punycode = require(\"punycode/\");\nconst regexes = require(\"./lib/regexes.js\");\nconst mappingTable = require(\"./lib/mappingTable.json\");\nconst { STATUS_MAPPING } = require(\"./lib/statusMapping.js\");\n\nfunction containsNonASCII(str) {\n return /[^\\x00-\\x7F]/u.test(str);\n}\n\nfunction findStatus(val) {\n let start = 0;\n let end = mappingTable.length - 1;\n\n while (start <= end) {\n const mid = Math.floor((start + end) / 2);\n\n const target = mappingTable[mid];\n const min = Array.isArray(target[0]) ? target[0][0] : target[0];\n const max = Array.isArray(target[0]) ? target[0][1] : target[0];\n\n if (min <= val && max >= val) {\n return target.slice(1);\n } else if (min > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nfunction mapChars(domainName, { transitionalProcessing }) {\n let processed = \"\";\n\n for (const ch of domainName) {\n const [status, mapping] = findStatus(ch.codePointAt(0));\n\n switch (status) {\n case STATUS_MAPPING.disallowed:\n processed += ch;\n break;\n case STATUS_MAPPING.ignored:\n break;\n case STATUS_MAPPING.mapped:\n if (transitionalProcessing && ch === \"ẞ\") {\n processed += \"ss\";\n } else {\n processed += mapping;\n }\n break;\n case STATUS_MAPPING.deviation:\n if (transitionalProcessing) {\n processed += mapping;\n } else {\n processed += ch;\n }\n break;\n case STATUS_MAPPING.valid:\n processed += ch;\n break;\n }\n }\n\n return processed;\n}\n\nfunction validateLabel(label, {\n checkHyphens,\n checkBidi,\n checkJoiners,\n transitionalProcessing,\n useSTD3ASCIIRules,\n isBidi\n}) {\n // \"must be satisfied for a non-empty label\"\n if (label.length === 0) {\n return true;\n }\n\n // \"1. The label must be in Unicode Normalization Form NFC.\"\n if (label.normalize(\"NFC\") !== label) {\n return false;\n }\n\n const codePoints = Array.from(label);\n\n // \"2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character in both the\n // third and fourth positions.\"\n //\n // \"3. If CheckHyphens, the label must neither begin nor end with a U+002D HYPHEN-MINUS character.\"\n if (checkHyphens) {\n if ((codePoints[2] === \"-\" && codePoints[3] === \"-\") ||\n (label.startsWith(\"-\") || label.endsWith(\"-\"))) {\n return false;\n }\n }\n\n // \"4. If not CheckHyphens, the label must not begin with “xn--”.\"\n if (!checkHyphens) {\n if (label.startsWith(\"xn--\")) {\n return false;\n }\n }\n\n // \"5. The label must not contain a U+002E ( . ) FULL STOP.\"\n if (label.includes(\".\")) {\n return false;\n }\n\n // \"6. The label must not begin with a combining mark, that is: General_Category=Mark.\"\n if (regexes.combiningMarks.test(codePoints[0])) {\n return false;\n }\n\n // \"7. Each code point in the label must only have certain Status values according to Section 5\"\n for (const ch of codePoints) {\n const codePoint = ch.codePointAt(0);\n const [status] = findStatus(codePoint);\n if (transitionalProcessing) {\n // \"For Transitional Processing (deprecated), each value must be valid.\"\n if (status !== STATUS_MAPPING.valid) {\n return false;\n }\n } else if (status !== STATUS_MAPPING.valid && status !== STATUS_MAPPING.deviation) {\n // \"For Nontransitional Processing, each value must be either valid or deviation.\"\n return false;\n }\n // \"In addition, if UseSTD3ASCIIRules=true and the code point is an ASCII code point (U+0000..U+007F), then it must\n // be a lowercase letter (a-z), a digit (0-9), or a hyphen-minus (U+002D). (Note: This excludes uppercase ASCII\n // A-Z which are mapped in UTS #46 and disallowed in IDNA2008.)\"\n if (useSTD3ASCIIRules && codePoint <= 0x7F) {\n if (!/^(?:[a-z]|[0-9]|-)$/u.test(ch)) {\n return false;\n }\n }\n }\n\n // \"8. If CheckJoiners, the label must satisify the ContextJ rules\"\n // https://tools.ietf.org/html/rfc5892#appendix-A\n if (checkJoiners) {\n let last = 0;\n for (const [i, ch] of codePoints.entries()) {\n if (ch === \"\\u200C\" || ch === \"\\u200D\") {\n if (i > 0) {\n if (regexes.combiningClassVirama.test(codePoints[i - 1])) {\n continue;\n }\n if (ch === \"\\u200C\") {\n // TODO: make this more efficient\n const next = codePoints.indexOf(\"\\u200C\", i + 1);\n const test = next < 0 ? codePoints.slice(last) : codePoints.slice(last, next);\n if (regexes.validZWNJ.test(test.join(\"\"))) {\n last = i + 1;\n continue;\n }\n }\n }\n return false;\n }\n }\n }\n\n // \"9. If CheckBidi, and if the domain name is a Bidi domain name, then the label must satisfy...\"\n // https://tools.ietf.org/html/rfc5893#section-2\n if (checkBidi && isBidi) {\n let rtl;\n\n // 1\n if (regexes.bidiS1LTR.test(codePoints[0])) {\n rtl = false;\n } else if (regexes.bidiS1RTL.test(codePoints[0])) {\n rtl = true;\n } else {\n return false;\n }\n\n if (rtl) {\n // 2-4\n if (!regexes.bidiS2.test(label) ||\n !regexes.bidiS3.test(label) ||\n (regexes.bidiS4EN.test(label) && regexes.bidiS4AN.test(label))) {\n return false;\n }\n } else if (!regexes.bidiS5.test(label) ||\n !regexes.bidiS6.test(label)) { // 5-6\n return false;\n }\n }\n\n return true;\n}\n\nfunction isBidiDomain(labels) {\n const domain = labels.map(label => {\n if (label.startsWith(\"xn--\")) {\n try {\n return punycode.decode(label.substring(4));\n } catch {\n return \"\";\n }\n }\n return label;\n }).join(\".\");\n return regexes.bidiDomain.test(domain);\n}\n\nfunction processing(domainName, options) {\n // 1. Map.\n let string = mapChars(domainName, options);\n\n // 2. Normalize.\n string = string.normalize(\"NFC\");\n\n // 3. Break.\n const labels = string.split(\".\");\n const isBidi = isBidiDomain(labels);\n\n // 4. Convert/Validate.\n let error = false;\n for (const [i, origLabel] of labels.entries()) {\n let label = origLabel;\n let transitionalProcessingForThisLabel = options.transitionalProcessing;\n if (label.startsWith(\"xn--\")) {\n if (containsNonASCII(label)) {\n error = true;\n continue;\n }\n\n try {\n label = punycode.decode(label.substring(4));\n } catch {\n if (!options.ignoreInvalidPunycode) {\n error = true;\n continue;\n }\n }\n labels[i] = label;\n\n if (label === \"\" || !containsNonASCII(label)) {\n error = true;\n }\n\n transitionalProcessingForThisLabel = false;\n }\n\n // No need to validate if we already know there is an error.\n if (error) {\n continue;\n }\n const validation = validateLabel(label, {\n ...options,\n transitionalProcessing: transitionalProcessingForThisLabel,\n isBidi\n });\n if (!validation) {\n error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error\n };\n}\n\nfunction toASCII(domainName, {\n checkHyphens = false,\n checkBidi = false,\n checkJoiners = false,\n useSTD3ASCIIRules = false,\n verifyDNSLength = false,\n transitionalProcessing = false,\n ignoreInvalidPunycode = false\n} = {}) {\n const result = processing(domainName, {\n checkHyphens,\n checkBidi,\n checkJoiners,\n useSTD3ASCIIRules,\n transitionalProcessing,\n ignoreInvalidPunycode\n });\n let labels = result.string.split(\".\");\n labels = labels.map(l => {\n if (containsNonASCII(l)) {\n try {\n return `xn--${punycode.encode(l)}`;\n } catch {\n result.error = true;\n }\n }\n return l;\n });\n\n if (verifyDNSLength) {\n const total = labels.join(\".\").length;\n if (total > 253 || total === 0) {\n result.error = true;\n }\n\n for (let i = 0; i < labels.length; ++i) {\n if (labels[i].length > 63 || labels[i].length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) {\n return null;\n }\n return labels.join(\".\");\n}\n\nfunction toUnicode(domainName, {\n checkHyphens = false,\n checkBidi = false,\n checkJoiners = false,\n useSTD3ASCIIRules = false,\n transitionalProcessing = false,\n ignoreInvalidPunycode = false\n} = {}) {\n const result = processing(domainName, {\n checkHyphens,\n checkBidi,\n checkJoiners,\n useSTD3ASCIIRules,\n transitionalProcessing,\n ignoreInvalidPunycode\n });\n\n return {\n domain: result.string,\n error: result.error\n };\n}\n\nmodule.exports = {\n toASCII,\n toUnicode\n};\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport { registryResourceDownloadContract } from \"@vm0/api-contracts/contracts/registry-resources\";\n\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\n// Keep registry resource downloads in the CLI release lifecycle.\nexport async function getRegistryResourceDownload(query: {\n id: string;\n expectedSha256: string;\n}): Promise<{\n url: string;\n id: string;\n type: \"tar.gz\";\n sha256: string;\n expiresInSeconds: number;\n versionId: string;\n fileCount: number;\n size: number;\n}> {\n const config = await getClientConfig();\n const client = initClient(registryResourceDownloadContract, config);\n\n const result = await client.download({ query });\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, `Registry resource \"${query.id}\" not found`);\n}\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const registryResourceDownloadContract = c.router({\n download: {\n method: \"GET\",\n path: \"/api/registry/resources/download\",\n headers: authHeadersSchema,\n query: z.object({\n id: z.string().min(1, \"Resource id is required\"),\n expectedSha256: z.string().regex(/^[a-f0-9]{64}$/),\n }),\n responses: {\n 200: z.object({\n url: z.url(),\n id: z.string(),\n type: z.literal(\"tar.gz\"),\n sha256: z.string().regex(/^[a-f0-9]{64}$/),\n expiresInSeconds: z.number().int().positive(),\n versionId: z.string(),\n fileCount: z.number().int().nonnegative(),\n size: z.number().nonnegative(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get a presigned URL for a private registry resource archive\",\n },\n});\n\nexport type RegistryResourceDownloadContract =\n typeof registryResourceDownloadContract;\n","import { z } from \"zod\";\n\nexport { initContract } from \"./trpc-contract\";\n\nconst MAX_DATE_TIMESTAMP_MS = 8_640_000_000_000_000;\n\nfunction rejectBlankQueryNumber(value: unknown): unknown {\n if (typeof value === \"string\" && value.trim().length === 0) {\n return Number.NaN;\n }\n\n return value;\n}\n\nexport function isValidDateTimestamp(value: number): boolean {\n return (\n Number.isSafeInteger(value) && Math.abs(value) <= MAX_DATE_TIMESTAMP_MS\n );\n}\n\nexport const timestampQueryNumberSchema = z.preprocess(\n rejectBlankQueryNumber,\n z.coerce\n .number()\n .refine(Number.isSafeInteger, {\n message: \"Value must be a safe integer\",\n })\n .refine(isValidDateTimestamp, {\n message: \"Timestamp is out of range\",\n }),\n);\n\n/**\n * Shared headers schema for endpoints requiring authentication.\n * The authorization header is optional - endpoints handle missing auth\n * by returning 401 responses.\n *\n */\nexport const authHeadersSchema = z.object({\n authorization: z.string().optional(),\n});\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n zeroUserPreferencesContract,\n type UserPreferencesResponse,\n} from \"@vm0/api-contracts/contracts/zero-user-preferences\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\n/**\n * Get current user's preferences\n */\nexport async function getZeroUserPreferences(): Promise<UserPreferencesResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroUserPreferencesContract, config);\n\n const result = await client.get({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to get user preferences\");\n}\n\n/**\n * Update user preferences\n */\nexport async function updateZeroUserPreferences(body: {\n timezone?: string;\n}): Promise<UserPreferencesResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroUserPreferencesContract, config);\n\n const result = await client.update({ body });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to update user preferences\");\n}\n","import { z } from \"zod\";\nimport { initContract, authHeadersSchema } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n/**\n * User preferences schemas (shared across contracts)\n */\nexport const sendModeSchema = z.enum([\"enter\", \"cmd-enter\"]);\nexport type SendMode = z.infer<typeof sendModeSchema>;\n\nexport const userPreferencesResponseSchema = z.object({\n timezone: z.string().nullable(),\n // Pinned agents are exposed as membership only. The API returns a stable\n // canonical order and ignores client-provided order on writes.\n pinnedAgentIds: z.array(z.string()),\n sendMode: sendModeSchema,\n morningBriefEnabled: z.boolean(),\n /**\n * Next scheduled Morning Brief send (ISO instant), or null when no run is\n * scheduled (preference off, timezone missing, or schedule not synced).\n */\n morningBriefNextRunAt: z.string().nullable(),\n captureNetworkBodiesRemaining: z.number().int().min(0),\n});\n\nexport type UserPreferencesResponse = z.infer<\n typeof userPreferencesResponseSchema\n>;\n\nexport const updateUserPreferencesRequestSchema = z\n .object({\n timezone: z.string().min(1).optional(),\n // Membership update only; request order is not used for display ordering.\n pinnedAgentIds: z.array(z.string()).optional(),\n sendMode: sendModeSchema.optional(),\n morningBriefEnabled: z.boolean().optional(),\n captureNetworkBodiesRemaining: z.number().int().min(0).optional(),\n })\n .refine(\n (data) => {\n return (\n data.timezone !== undefined ||\n data.pinnedAgentIds !== undefined ||\n data.sendMode !== undefined ||\n data.morningBriefEnabled !== undefined ||\n data.captureNetworkBodiesRemaining !== undefined\n );\n },\n {\n message: \"At least one preference must be provided\",\n },\n );\n\nexport type UpdateUserPreferencesRequest = z.infer<\n typeof updateUserPreferencesRequestSchema\n>;\n\n/**\n * Zero user preferences contract for /api/zero/user-preferences\n *\n * GET: Get current user's preferences\n * POST: Update user preferences\n */\nexport const zeroUserPreferencesContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/user-preferences\",\n headers: authHeadersSchema,\n responses: {\n 200: userPreferencesResponseSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get user preferences\",\n },\n update: {\n method: \"POST\",\n path: \"/api/zero/user-preferences\",\n headers: authHeadersSchema,\n body: updateUserPreferencesRequestSchema,\n responses: {\n 200: userPreferencesResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Update user preferences\",\n },\n});\n\nexport type ZeroUserPreferencesContract = typeof zeroUserPreferencesContract;\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n zeroOrgContract,\n zeroOrgLeaveContract,\n zeroOrgDeleteContract,\n} from \"@vm0/api-contracts/contracts/zero-org\";\nimport { zeroOrgListContract } from \"@vm0/api-contracts/contracts/zero-org-list\";\nimport {\n zeroOrgInviteContract,\n zeroOrgMembersContract,\n} from \"@vm0/api-contracts/contracts/zero-org-members\";\nimport type { OrgMembersResponse } from \"@vm0/api-contracts/contracts/org-members\";\nimport type { OrgResponse } from \"@vm0/api-contracts/contracts/orgs\";\nimport type { OrgListResponse } from \"@vm0/api-contracts/contracts/org-list\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\n/**\n * Get current org info via zero API\n */\nexport async function getZeroOrg(): Promise<OrgResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroOrgContract, config);\n\n const result = await client.get({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to get organization\");\n}\n\n/**\n * Update org slug via zero API\n */\nexport async function updateZeroOrg(body: {\n slug: string;\n force?: boolean;\n}): Promise<OrgResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroOrgContract, config);\n\n const result = await client.update({ body });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to update organization\");\n}\n\n/**\n * List all accessible orgs.\n */\nexport async function listZeroOrgs(): Promise<OrgListResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroOrgListContract, config);\n\n const result = await client.list({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list organizations\");\n}\n\n/**\n * Get org members via zero API\n */\nexport async function getZeroOrgMembers(): Promise<OrgMembersResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroOrgMembersContract, config);\n\n const result = await client.members({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to get organization members\");\n}\n\n/**\n * Invite a member to the org via zero API\n */\nexport async function inviteZeroOrgMember(\n email: string,\n role: \"member\" | \"admin\" = \"member\",\n): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroOrgInviteContract, config);\n\n const result = await client.invite({\n body: { email, role },\n });\n\n if (result.status === 200) {\n return;\n }\n\n handleError(result, \"Failed to invite member\");\n}\n\n/**\n * Remove a member from the org via zero API\n */\nexport async function removeZeroOrgMember(email: string): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroOrgMembersContract, config);\n\n const result = await client.removeMember({\n body: { email },\n });\n\n if (result.status === 200) {\n return;\n }\n\n handleError(result, \"Failed to remove member\");\n}\n\n/**\n * Leave the current org via zero API\n */\nexport async function leaveZeroOrg(): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroOrgLeaveContract, config);\n\n const result = await client.leave({\n body: {},\n });\n\n if (result.status === 200) {\n return;\n }\n\n handleError(result, \"Failed to leave organization\");\n}\n\n/**\n * Delete the current org via zero API\n */\nexport async function deleteZeroOrg(slug: string): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroOrgDeleteContract, config);\n\n const result = await client.delete({\n body: { slug },\n });\n\n if (result.status === 200) {\n return;\n }\n\n handleError(result, \"Failed to delete organization\");\n}\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { orgResponseSchema, updateOrgRequestSchema } from \"./orgs\";\nimport { orgMessageResponseSchema } from \"./org-members\";\n\nconst c = initContract();\n\n/**\n * Zero contract for /api/zero/org\n * Proxies to /api/org\n */\nexport const zeroOrgContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/org\",\n headers: authHeadersSchema,\n responses: {\n 200: orgResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get current org (zero proxy)\",\n },\n update: {\n method: \"PUT\",\n path: \"/api/zero/org\",\n headers: authHeadersSchema,\n body: updateOrgRequestSchema,\n responses: {\n 200: orgResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Update org slug (zero proxy)\",\n },\n});\n\nexport type ZeroOrgContract = typeof zeroOrgContract;\n\n/**\n * Zero contract for POST /api/zero/org/leave\n * Proxies to POST /api/org/leave\n */\nexport const zeroOrgLeaveContract = c.router({\n leave: {\n method: \"POST\",\n path: \"/api/zero/org/leave\",\n headers: authHeadersSchema,\n body: z.object({}),\n responses: {\n 200: orgMessageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Leave the current org (zero proxy)\",\n },\n});\n\nexport type ZeroOrgLeaveContract = typeof zeroOrgLeaveContract;\n\n/**\n * Zero contract for DELETE /api/zero/org/delete\n */\nexport const zeroOrgDeleteContract = c.router({\n delete: {\n method: \"POST\",\n path: \"/api/zero/org/delete\",\n headers: authHeadersSchema,\n body: z.object({ slug: z.string() }),\n responses: {\n 200: orgMessageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Delete the current org (zero proxy)\",\n },\n});\n\nexport type ZeroOrgDeleteContract = typeof zeroOrgDeleteContract;\n","import { z } from \"zod\";\nimport { initContract, authHeadersSchema } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { orgRoleSchema } from \"./org-members\";\n\nconst c = initContract();\n\n/**\n * Org tier values\n */\nexport const orgTierSchema = z.enum([\n \"free\",\n \"limited-free-1\",\n \"pro-suspend\",\n \"pro\",\n \"team\",\n \"custom\",\n]);\nexport type OrgTier = z.infer<typeof orgTierSchema>;\n\nconst ORG_TIER_SET: ReadonlySet<string> = new Set(orgTierSchema.options);\n\nexport function isOrgTier(value: string | null | undefined): value is OrgTier {\n return typeof value === \"string\" && ORG_TIER_SET.has(value);\n}\n\n/**\n * Org slug validation\n * - 3-64 characters (or 1-2 for single/double char slugs)\n * - lowercase letters, numbers, and hyphens only\n * - must start and end with alphanumeric\n */\nexport const orgSlugSchema = z\n .string()\n .min(3, \"Org slug must be at least 3 characters\")\n .max(64, \"Org slug must be at most 64 characters\")\n .regex(\n /^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]{1,2}$/,\n \"Org slug must contain only lowercase letters, numbers, and hyphens, and must start and end with an alphanumeric character\",\n )\n .transform((s) => {\n return s.toLowerCase();\n });\n\n/**\n * Org response schema\n */\nexport const orgResponseSchema = z.object({\n id: z.string(),\n slug: z.string(),\n name: z.string(),\n tier: z.string().optional(),\n role: orgRoleSchema.optional(),\n createdBy: z.string().optional(),\n});\n\nexport type OrgResponse = z.infer<typeof orgResponseSchema>;\n\n/**\n * Update org request schema\n */\nexport const updateOrgRequestSchema = z.object({\n slug: orgSlugSchema.optional(),\n name: z.string().min(1).max(128).optional(),\n force: z.boolean().optional().default(false),\n});\n\nexport type UpdateOrgRequest = z.infer<typeof updateOrgRequestSchema>;\n\n/**\n * Org default agent contract for /api/zero/default-agent\n */\nexport const orgDefaultAgentContract = c.router({\n /**\n * PUT /api/zero/default-agent\n * Set or unset the default agent for an org.\n * Only org admins can perform this action.\n * The agent must belong to the same org.\n */\n setDefaultAgent: {\n method: \"PUT\",\n path: \"/api/zero/default-agent\",\n headers: authHeadersSchema,\n query: z.object({}),\n body: z.object({\n agentId: z.uuid().nullable(),\n }),\n responses: {\n 200: z.object({\n agentId: z.uuid().nullable(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Set or unset the default agent for an org\",\n },\n});\n\nexport type OrgDefaultAgentContract = typeof orgDefaultAgentContract;\n","import { z } from \"zod\";\n\n/**\n * Org role enum\n */\nexport const orgRoleSchema = z.enum([\"admin\", \"member\"]);\nexport type OrgRole = z.infer<typeof orgRoleSchema>;\n\n/**\n * Org member schema\n */\nexport const orgMemberSchema = z.object({\n userId: z.string(),\n email: z.string(),\n firstName: z.string().nullable(),\n lastName: z.string().nullable(),\n imageUrl: z.string(),\n role: orgRoleSchema,\n joinedAt: z.string(),\n});\nexport type OrgMember = z.infer<typeof orgMemberSchema>;\n\n/**\n * Pending invitation schema\n */\nexport const orgPendingInvitationSchema = z.object({\n id: z.string(),\n email: z.string(),\n role: orgRoleSchema,\n createdAt: z.string(),\n});\nexport type OrgPendingInvitation = z.infer<typeof orgPendingInvitationSchema>;\n\n/**\n * Membership request schema\n */\nexport const orgMembershipRequestSchema = z.object({\n id: z.string(),\n userId: z.string(),\n email: z.string(),\n firstName: z.string().nullable(),\n lastName: z.string().nullable(),\n imageUrl: z.string(),\n createdAt: z.string(),\n});\nexport type OrgMembershipRequest = z.infer<typeof orgMembershipRequestSchema>;\n\n/**\n * Revoke invitation request schema\n */\nexport const revokeInvitationRequestSchema = z.object({\n invitationId: z.string(),\n});\nexport type RevokeInvitationRequest = z.infer<\n typeof revokeInvitationRequestSchema\n>;\n\n/**\n * Membership request action schema\n */\nexport const membershipRequestActionSchema = z.object({\n requestId: z.string(),\n});\nexport type MembershipRequestAction = z.infer<\n typeof membershipRequestActionSchema\n>;\n\n/**\n * Org members response schema (status + members list)\n */\nexport const orgMembersResponseSchema = z.object({\n slug: z.string(),\n role: orgRoleSchema,\n members: z.array(orgMemberSchema),\n pendingInvitations: z.array(orgPendingInvitationSchema).optional(),\n membershipRequests: z.array(orgMembershipRequestSchema).optional(),\n createdAt: z.string(),\n});\nexport type OrgMembersResponse = z.infer<typeof orgMembersResponseSchema>;\n\n/**\n * Invite member request schema\n */\nexport const inviteOrgMemberRequestSchema = z.object({\n email: z.string().email(),\n role: orgRoleSchema.optional().default(\"member\"),\n});\nexport type InviteOrgMemberRequest = z.infer<\n typeof inviteOrgMemberRequestSchema\n>;\n\n/**\n * Remove member request schema\n */\nexport const removeOrgMemberRequestSchema = z.object({\n email: z.string().email(),\n});\nexport type RemoveOrgMemberRequest = z.infer<\n typeof removeOrgMemberRequestSchema\n>;\n\n/**\n * Update member role request schema\n */\nexport const updateOrgMemberRoleRequestSchema = z.object({\n email: z.string().email(),\n role: orgRoleSchema,\n});\nexport type UpdateOrgMemberRoleRequest = z.infer<\n typeof updateOrgMemberRoleRequestSchema\n>;\n\n/**\n * Simple message response schema\n */\nexport const orgMessageResponseSchema = z.object({\n message: z.string(),\n});\nexport type OrgMessageResponse = z.infer<typeof orgMessageResponseSchema>;\n","import { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { orgListResponseSchema } from \"./org-list\";\n\nconst c = initContract();\n\n/**\n * Zero contract for GET /api/zero/org/list\n * Lists all accessible orgs for the authenticated user.\n */\nexport const zeroOrgListContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/org/list\",\n headers: authHeadersSchema,\n responses: {\n 200: orgListResponseSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"List all accessible orgs for the authenticated user\",\n },\n});\n\nexport type ZeroOrgListContract = typeof zeroOrgListContract;\n","import { z } from \"zod\";\n\n/**\n * Org list item schema\n */\nexport const orgListItemSchema = z.object({\n slug: z.string(),\n role: z.string(),\n});\nexport type OrgListItem = z.infer<typeof orgListItemSchema>;\n\n/**\n * Org list response schema\n */\nexport const orgListResponseSchema = z.object({\n orgs: z.array(orgListItemSchema),\n active: z.string().optional(),\n});\nexport type OrgListResponse = z.infer<typeof orgListResponseSchema>;\n","import { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport {\n orgMembersResponseSchema,\n inviteOrgMemberRequestSchema,\n removeOrgMemberRequestSchema,\n updateOrgMemberRoleRequestSchema,\n revokeInvitationRequestSchema,\n membershipRequestActionSchema,\n orgMessageResponseSchema,\n} from \"./org-members\";\n\nconst c = initContract();\n\n/**\n * Zero contract for /api/zero/org/members\n * Proxies to /api/org/members\n */\nexport const zeroOrgMembersContract = c.router({\n members: {\n method: \"GET\",\n path: \"/api/zero/org/members\",\n headers: authHeadersSchema,\n responses: {\n 200: orgMembersResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get org members (zero proxy)\",\n },\n updateRole: {\n method: \"PATCH\",\n path: \"/api/zero/org/members\",\n headers: authHeadersSchema,\n body: updateOrgMemberRoleRequestSchema,\n responses: {\n 200: orgMessageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Update a member's role (zero proxy)\",\n },\n removeMember: {\n method: \"DELETE\",\n path: \"/api/zero/org/members\",\n headers: authHeadersSchema,\n body: removeOrgMemberRequestSchema,\n responses: {\n 200: orgMessageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Remove a member from the org (zero proxy)\",\n },\n});\n\nexport type ZeroOrgMembersContract = typeof zeroOrgMembersContract;\n\n/**\n * Zero contract for POST /api/zero/org/invite\n * Proxies to POST /api/org/invite\n */\nexport const zeroOrgInviteContract = c.router({\n invite: {\n method: \"POST\",\n path: \"/api/zero/org/invite\",\n headers: authHeadersSchema,\n body: inviteOrgMemberRequestSchema,\n responses: {\n 200: orgMessageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Invite a member to the org (zero proxy)\",\n },\n revoke: {\n method: \"DELETE\",\n path: \"/api/zero/org/invite\",\n headers: authHeadersSchema,\n body: revokeInvitationRequestSchema,\n responses: {\n 200: orgMessageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Revoke a pending invitation (zero proxy)\",\n },\n});\n\nexport type ZeroOrgInviteContract = typeof zeroOrgInviteContract;\n\n/**\n * Zero contract for /api/zero/org/membership-requests\n */\nexport const zeroOrgMembershipRequestsContract = c.router({\n accept: {\n method: \"POST\",\n path: \"/api/zero/org/membership-requests\",\n headers: authHeadersSchema,\n body: membershipRequestActionSchema,\n responses: {\n 200: orgMessageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Accept a membership request (zero proxy)\",\n },\n reject: {\n method: \"DELETE\",\n path: \"/api/zero/org/membership-requests\",\n headers: authHeadersSchema,\n body: membershipRequestActionSchema,\n responses: {\n 200: orgMessageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Reject a membership request (zero proxy)\",\n },\n});\n\nexport type ZeroOrgMembershipRequestsContract =\n typeof zeroOrgMembershipRequestsContract;\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n zeroBillingStatusContract,\n zeroBillingCreditCheckoutContract,\n type BillingStatusResponse,\n} from \"@vm0/api-contracts/contracts/zero-billing\";\n\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport async function getZeroBillingStatus(): Promise<BillingStatusResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroBillingStatusContract, config);\n\n const result = await client.get({ headers: {} });\n if (result.status === 200) {\n return result.body;\n }\n handleError(result, \"Failed to get billing status\");\n}\n\nexport async function createZeroCreditCheckout(body: {\n readonly credits: number;\n readonly successUrl: string;\n readonly cancelUrl: string;\n readonly autoRecharge?: {\n readonly enabled: boolean;\n readonly threshold?: number;\n readonly amount?: number;\n };\n}): Promise<{ readonly url: string }> {\n const config = await getClientConfig();\n const client = initClient(zeroBillingCreditCheckoutContract, config);\n\n const result = await client.create({ body });\n if (result.status === 200) {\n return result.body;\n }\n handleError(result, \"Failed to create credit checkout\");\n}\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { adAttributionMetadataSchema } from \"./zero-attribution\";\n\nconst c = initContract();\n\n// ---------------------------------------------------------------------------\n// Response schemas\n// ---------------------------------------------------------------------------\n\nconst autoRechargeSchema = z.object({\n enabled: z.boolean(),\n threshold: z.number().nullable(),\n amount: z.number().nullable(),\n});\n\nconst creditExpirySchema = z.object({\n expiringNextCycle: z.number(),\n nextExpiryDate: z.string().nullable(),\n});\n\nconst creditBreakdownSegmentSchema = z.object({\n category: z.enum([\"plan\", \"free\", \"promotional\", \"payAsYouGo\"]),\n label: z.string(),\n credits: z.number(),\n // Only set on `plan` segments. Lets the UI decide whether a segment\n // represents the current plan or leftover credits from a previous plan\n // without round-tripping through the `label` string.\n tier: z.enum([\"pro\", \"team\"]).optional(),\n});\n\nconst creditGrantSchema = z.object({\n id: z.string(),\n source: z.string(),\n label: z.string(),\n amount: z.number(),\n remaining: z.number(),\n createdAt: z.string(),\n expiresAt: z.string(),\n});\n\nconst scheduledBillingChangeSchema = z.object({\n type: z.enum([\"cancel\", \"downgrade\"]),\n targetTier: z\n .enum([\"limited-free-1\", \"pro-suspend\", \"pro\", \"team\"])\n .nullable(),\n effectiveDate: z.string().nullable(),\n});\n\nconst concurrencySubscriptionSchema = z.object({\n id: z.string(),\n quantity: z.number().int().nonnegative(),\n currentPeriodEnd: z.string().nullable(),\n cancelAtPeriodEnd: z.boolean(),\n});\n\nconst usageAllowanceWindowSchema = z.object({\n kind: z.enum([\"short\", \"weekly\"]),\n windowSeconds: z.number().int().positive(),\n unitLimit: z.number(),\n consumedUnits: z.number(),\n remainingUnits: z.number(),\n startsAt: z.string().nullable(),\n expiresAt: z.string().nullable(),\n});\n\nconst usageAllowanceSchema = z.object({\n windows: z.array(usageAllowanceWindowSchema),\n});\n\nconst billingStatusResponseSchema = z.object({\n tier: z.string(),\n canBuyConcurrency: z.boolean().optional(),\n canBuyCredits: z.boolean().optional(),\n autoRechargeAllowed: z.boolean().optional(),\n supportByok: z.boolean().optional(),\n restrictedVm0Models: z.boolean().optional(),\n videoGenerationAllowed: z.boolean().optional(),\n workflowWebhookAutomationAllowed: z.boolean().optional(),\n credits: z.number(),\n onboardingPaymentPending: z.boolean(),\n subscriptionStatus: z.string().nullable(),\n currentPeriodEnd: z.string().nullable(),\n cancelAtPeriodEnd: z.boolean(),\n scheduledChange: scheduledBillingChangeSchema.nullable(),\n hasSubscription: z.boolean(),\n autoRecharge: autoRechargeSchema,\n creditExpiry: creditExpirySchema,\n creditBreakdown: z.array(creditBreakdownSegmentSchema),\n creditGrants: z.array(creditGrantSchema),\n concurrencyLimit: z.number().int().nonnegative(),\n concurrencySubscriptions: z.array(concurrencySubscriptionSchema),\n usageAllowance: usageAllowanceSchema.nullable().optional(),\n});\n\nconst checkoutResponseSchema = z.object({\n url: z.string(),\n});\n\nconst checkoutCompleteResponseSchema = z.object({\n completed: z.boolean(),\n});\n\nconst redeemCodeResponseSchema = z.object({\n redeemed: z.literal(true),\n});\n\nconst portalResponseSchema = z.object({\n url: z.string(),\n});\n\nconst redeemResponseSchema = z.discriminatedUnion(\"status\", [\n z.object({\n status: z.literal(\"ready\"),\n checkoutUrl: z.string().url(),\n }),\n z.object({\n status: z.literal(\"already_granted\"),\n }),\n z.object({\n status: z.literal(\"processing\"),\n }),\n z.object({\n status: z.literal(\"error\"),\n reason: z.enum([\n \"campaign_misconfigured\",\n \"admin_required\",\n \"billing_unavailable\",\n ]),\n }),\n]);\n\n// ---------------------------------------------------------------------------\n// Request schemas\n// ---------------------------------------------------------------------------\n\nconst checkoutRequestSchema = z.object({\n tier: z.enum([\"pro\", \"team\"]),\n successUrl: z.string().url(),\n cancelUrl: z.string().url(),\n trialDays: z.literal(7).optional(),\n adAttribution: adAttributionMetadataSchema.optional(),\n});\n\nconst checkoutCompleteRequestSchema = z.object({\n sessionId: z.string().min(1),\n});\n\nconst concurrencyCheckoutRequestSchema = z.object({\n quantity: z.number().int().min(1).max(1000),\n successUrl: z.string().url(),\n cancelUrl: z.string().url(),\n});\n\nconst concurrencySubscriptionCancelResponseSchema = z.object({\n success: z.literal(true),\n currentPeriodEnd: z.string().nullable(),\n});\n\nconst concurrencySubscriptionRestoreResponseSchema = z.object({\n success: z.literal(true),\n});\n\nconst creditCheckoutRequestSchema = z\n .object({\n credits: z.number().int().min(1000).max(10_000_000),\n customAmount: z.boolean().optional(),\n successUrl: z.string().url(),\n cancelUrl: z.string().url(),\n autoRecharge: z\n .object({\n enabled: z.boolean(),\n threshold: z.number().int().positive().max(10_000_000).optional(),\n amount: z.number().int().min(1000).max(10_000_000).optional(),\n })\n .optional(),\n })\n .refine(\n (data) => {\n return data.customAmount !== true || data.autoRecharge === undefined;\n },\n { message: \"auto-recharge is not supported for custom amount checkout\" },\n )\n .refine(\n (data) => {\n return (\n data.autoRecharge?.enabled !== true ||\n data.autoRecharge.threshold === undefined ||\n data.autoRecharge.amount === undefined ||\n data.autoRecharge.threshold < data.autoRecharge.amount\n );\n },\n { message: \"threshold must be less than amount to avoid recharge loops\" },\n );\n\nconst portalRequestSchema = z.object({\n returnUrl: z.string().url(),\n});\n\nconst autoRechargeUpdateRequestSchema = z\n .object({\n enabled: z.boolean(),\n threshold: z.number().int().positive().max(10_000_000).optional(),\n amount: z.number().int().min(1000).max(10_000_000).optional(),\n })\n .refine(\n (data) => {\n return (\n !data.enabled ||\n data.threshold === undefined ||\n data.amount === undefined ||\n data.threshold < data.amount\n );\n },\n { message: \"threshold must be less than amount to avoid recharge loops\" },\n );\n\nconst redeemRequestSchema = z.object({\n successUrl: z.string().url(),\n cancelUrl: z.string().url(),\n});\n\nconst redeemCodeRequestSchema = z.object({\n code: z.string().trim().min(1),\n});\n\n// ---------------------------------------------------------------------------\n// Contracts\n// ---------------------------------------------------------------------------\n\n/**\n * Zero contract for GET /api/zero/billing/status\n */\nexport const zeroBillingStatusContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/billing/status\",\n headers: authHeadersSchema,\n responses: {\n 200: billingStatusResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get billing status for current org\",\n },\n});\n\nexport type ZeroBillingStatusContract = typeof zeroBillingStatusContract;\n\n/**\n * Zero contract for POST /api/zero/billing/checkout\n */\nexport const zeroBillingCheckoutContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/billing/checkout\",\n headers: authHeadersSchema,\n body: checkoutRequestSchema,\n responses: {\n 200: checkoutResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Create Stripe checkout session\",\n },\n complete: {\n method: \"POST\",\n path: \"/api/zero/billing/checkout/complete\",\n headers: authHeadersSchema,\n body: checkoutCompleteRequestSchema,\n responses: {\n 200: checkoutCompleteResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Complete Stripe checkout session\",\n },\n});\n\nexport type ZeroBillingCheckoutContract = typeof zeroBillingCheckoutContract;\n\n/**\n * Zero contract for POST /api/zero/billing/concurrency-checkout\n */\nexport const zeroBillingConcurrencyCheckoutContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/billing/concurrency-checkout\",\n headers: authHeadersSchema,\n body: concurrencyCheckoutRequestSchema,\n responses: {\n 200: checkoutResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Create Stripe checkout session for concurrency add-on\",\n },\n});\n\nexport type ZeroBillingConcurrencyCheckoutContract =\n typeof zeroBillingConcurrencyCheckoutContract;\n\n/**\n * Zero contract for concurrency subscriptions.\n */\nexport const zeroBillingConcurrencySubscriptionContract = c.router({\n cancel: {\n method: \"POST\",\n path: \"/api/zero/billing/concurrency-subscriptions/:subscriptionId/cancel\",\n pathParams: z.object({\n subscriptionId: z.string().min(1),\n }),\n headers: authHeadersSchema,\n body: z.object({}),\n responses: {\n 200: concurrencySubscriptionCancelResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Cancel a concurrency add-on subscription at period end\",\n },\n restore: {\n method: \"POST\",\n path: \"/api/zero/billing/concurrency-subscriptions/:subscriptionId/restore\",\n pathParams: z.object({\n subscriptionId: z.string().min(1),\n }),\n headers: authHeadersSchema,\n body: z.object({}),\n responses: {\n 200: concurrencySubscriptionRestoreResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Restore a concurrency add-on subscription\",\n },\n});\n\nexport type ZeroBillingConcurrencySubscriptionContract =\n typeof zeroBillingConcurrencySubscriptionContract;\n\n/**\n * Zero contract for POST /api/zero/billing/credit-checkout\n */\nexport const zeroBillingCreditCheckoutContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/billing/credit-checkout\",\n headers: authHeadersSchema,\n body: creditCheckoutRequestSchema,\n responses: {\n 200: checkoutResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Create Stripe checkout session for credits\",\n },\n});\n\nexport type ZeroBillingCreditCheckoutContract =\n typeof zeroBillingCreditCheckoutContract;\n\n/**\n * Zero contract for POST /api/zero/billing/portal\n */\nexport const zeroBillingPortalContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/billing/portal\",\n headers: authHeadersSchema,\n body: portalRequestSchema,\n responses: {\n 200: portalResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Create Stripe billing portal session\",\n },\n});\n\nexport type ZeroBillingPortalContract = typeof zeroBillingPortalContract;\n\n/**\n * Zero contract for /api/zero/billing/auto-recharge\n */\nexport const zeroBillingAutoRechargeContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/billing/auto-recharge\",\n headers: authHeadersSchema,\n responses: {\n 200: autoRechargeSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get auto-recharge configuration\",\n },\n update: {\n method: \"PUT\",\n path: \"/api/zero/billing/auto-recharge\",\n headers: authHeadersSchema,\n body: autoRechargeUpdateRequestSchema,\n responses: {\n 200: autoRechargeSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Update auto-recharge configuration\",\n },\n});\n\nexport type ZeroBillingAutoRechargeContract =\n typeof zeroBillingAutoRechargeContract;\n\n/**\n * Zero contract for GET /api/zero/billing/invoices\n */\nconst invoiceSchema = z.object({\n id: z.string(),\n number: z.string().nullable(),\n date: z.number(),\n amount: z.number(),\n status: z.string().nullable(),\n hostedInvoiceUrl: z.string().nullable(),\n});\n\nconst billingInvoicesResponseSchema = z.object({\n invoices: z.array(invoiceSchema),\n});\n\nexport const zeroBillingInvoicesContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/billing/invoices\",\n headers: authHeadersSchema,\n responses: {\n 200: billingInvoicesResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get invoices for current org\",\n },\n});\n\nexport type ZeroBillingInvoicesContract = typeof zeroBillingInvoicesContract;\n\n// ---------------------------------------------------------------------------\n// Downgrade\n// ---------------------------------------------------------------------------\n\nconst downgradeRequestSchema = z.object({\n targetTier: z.enum([\"limited-free-1\", \"pro-suspend\", \"pro\"]),\n returnUrl: z.string().url().optional(),\n});\n\nconst downgradeResponseSchema = z.union([\n z.object({\n success: z.boolean(),\n effectiveDate: z.string().nullable(),\n }),\n z.object({\n status: z.literal(\"payment_method_required\"),\n checkoutUrl: z.string().url(),\n }),\n]);\n\nconst restoreRequestSchema = z.object({\n returnUrl: z.string().url().optional(),\n});\n\nconst restoreResponseSchema = z.discriminatedUnion(\"status\", [\n z.object({\n status: z.literal(\"restored\"),\n }),\n z.object({\n status: z.literal(\"payment_method_required\"),\n checkoutUrl: z.string().url(),\n }),\n]);\n\n/**\n * Zero contract for POST /api/zero/billing/downgrade\n */\nexport const zeroBillingDowngradeContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/billing/downgrade\",\n headers: authHeadersSchema,\n body: downgradeRequestSchema,\n responses: {\n 200: downgradeResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 409: apiErrorSchema,\n 500: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Downgrade subscription to a lower tier\",\n },\n});\n\nexport type ZeroBillingDowngradeContract = typeof zeroBillingDowngradeContract;\n\n/**\n * Zero contract for POST /api/zero/billing/restore\n */\nexport const zeroBillingRestoreContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/billing/restore\",\n headers: authHeadersSchema,\n body: restoreRequestSchema,\n responses: {\n 200: restoreResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 409: apiErrorSchema,\n 500: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Restore a subscription scheduled for cancellation\",\n },\n});\n\nexport type ZeroBillingRestoreContract = typeof zeroBillingRestoreContract;\n\n/**\n * Zero contract for POST /api/zero/billing/redeem/:campaign\n *\n * One-time campaign redemption. The handler validates the campaign whitelist,\n * creates (or resumes) a Stripe Checkout session, and returns a discriminated\n * union so a single landing page on the platform can render the appropriate\n * state (ready / already_granted / processing / error).\n */\nexport const zeroBillingRedeemContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/billing/redeem/:campaign\",\n pathParams: z.object({\n campaign: z.string(),\n }),\n headers: authHeadersSchema,\n body: redeemRequestSchema,\n responses: {\n 200: redeemResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Redeem a one-time campaign\",\n },\n});\n\nexport type ZeroBillingRedeemContract = typeof zeroBillingRedeemContract;\n\n/**\n * Zero contract for POST /api/zero/billing/redeem-code\n *\n * Proxies onboarding invite codes to the Atom redeem endpoint. The platform\n * waits for billing status to update through realtime before completing\n * onboarding.\n */\nexport const zeroBillingRedeemCodeContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/billing/redeem-code\",\n headers: authHeadersSchema,\n body: redeemCodeRequestSchema,\n responses: {\n 200: redeemCodeResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Redeem an onboarding billing code\",\n },\n});\n\nexport type ZeroBillingRedeemCodeContract =\n typeof zeroBillingRedeemCodeContract;\n\n// Inferred types from Zod schemas\nexport type BillingStatusResponse = z.infer<typeof billingStatusResponseSchema>;\nexport type AutoRechargeConfig = z.infer<typeof autoRechargeSchema>;\nexport type CheckoutResponse = z.infer<typeof checkoutResponseSchema>;\nexport type RedeemCodeResponse = z.infer<typeof redeemCodeResponseSchema>;\nexport type ConcurrencyCheckoutRequest = z.infer<\n typeof concurrencyCheckoutRequestSchema\n>;\nexport type CreditCheckoutRequest = z.infer<typeof creditCheckoutRequestSchema>;\nexport type PortalResponse = z.infer<typeof portalResponseSchema>;\nexport type BillingInvoice = z.infer<typeof invoiceSchema>;\nexport type BillingInvoicesResponse = z.infer<\n typeof billingInvoicesResponseSchema\n>;\nexport type DowngradeResponse = z.infer<typeof downgradeResponseSchema>;\nexport type RestoreResponse = z.infer<typeof restoreResponseSchema>;\nexport type RedeemRequest = z.infer<typeof redeemRequestSchema>;\nexport type RedeemCodeRequest = z.infer<typeof redeemCodeRequestSchema>;\nexport type RedeemResponse = z.infer<typeof redeemResponseSchema>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n// Canonical acquisition source-type taxonomy. Single source of truth shared by\n// the web classifier (apps/web), the app capture layer (apps/platform), and the\n// signup contract below, so the enum can't drift across the three.\nexport const SOURCE_TYPES = [\n \"paid\",\n \"organic_search\",\n \"referral\",\n \"direct\",\n \"internal\",\n \"unknown\",\n] as const;\n\nexport type SourceType = (typeof SOURCE_TYPES)[number];\n\n// First-party, root-domain (.vm0.ai) cookie carrying first-touch acquisition\n// attribution across the www.vm0.ai -> app.vm0.ai subdomain hop. Written by the\n// marketing site (consent-gated), read by the app on first load.\nexport const ACQUISITION_ATTRIBUTION_COOKIE = \"vm0_attribution\";\n\nexport const adAttributionMetadataSchema = z\n .object({\n source_type: z.enum(SOURCE_TYPES).optional(),\n referrer_domain: z.string().min(1).max(253).optional(),\n landing_host: z.string().min(1).max(253).optional(),\n landing_path: z.string().min(1).max(500).optional(),\n vm0_source: z.string().min(1).max(100).optional(),\n utm_source: z.string().min(1).max(100).optional(),\n utm_medium: z.string().min(1).max(100).optional(),\n utm_campaign: z.string().min(1).max(200).optional(),\n utm_content: z.string().min(1).max(200).optional(),\n utm_term: z.string().min(1).max(200).optional(),\n vm0_experiment: z.string().min(1).max(100).optional(),\n vm0_variant: z.string().min(1).max(100).optional(),\n lp_variant: z.string().min(1).max(100).optional(),\n gclid: z.string().min(1).max(200).optional(),\n gbraid: z.string().min(1).max(200).optional(),\n wbraid: z.string().min(1).max(200).optional(),\n gclid_present: z.literal(\"true\").optional(),\n gbraid_present: z.literal(\"true\").optional(),\n wbraid_present: z.literal(\"true\").optional(),\n })\n .strict();\n\nconst recordSignupAttributionRequestSchema = z.object({\n attribution: adAttributionMetadataSchema,\n});\n\nconst recordSignupAttributionResponseSchema = z.object({\n recorded: z.boolean(),\n});\n\nexport const zeroAttributionContract = c.router({\n recordSignup: {\n method: \"POST\",\n path: \"/api/zero/attribution/signup\",\n headers: authHeadersSchema,\n body: recordSignupAttributionRequestSchema,\n responses: {\n 200: recordSignupAttributionResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Record first-touch signup attribution on the current user\",\n },\n});\n\nexport type AdAttributionMetadata = z.infer<typeof adAttributionMetadataSchema>;\nexport type RecordSignupAttributionRequest = z.infer<\n typeof recordSignupAttributionRequestSchema\n>;\nexport type RecordSignupAttributionResponse = z.infer<\n typeof recordSignupAttributionResponseSchema\n>;\nexport type ZeroAttributionContract = typeof zeroAttributionContract;\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport { zeroModelPoliciesMainContract } from \"@vm0/api-contracts/contracts/zero-model-policies\";\nimport type { OrgModelPoliciesResponse } from \"@vm0/api-contracts/contracts/model-providers\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\n/**\n * List the current organization's model-first policies.\n */\nexport async function listZeroModelPolicies(): Promise<OrgModelPoliciesResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroModelPoliciesMainContract, config);\n\n const result = await client.list({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list model policies\");\n}\n","import { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport {\n orgModelPoliciesResponseSchema,\n updateOrgModelPoliciesRequestSchema,\n} from \"./model-providers\";\n\nconst c = initContract();\n\nexport const zeroModelPoliciesMainContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/model-policies\",\n headers: authHeadersSchema,\n responses: {\n 200: orgModelPoliciesResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"List org model-first policies\",\n },\n update: {\n method: \"PUT\",\n path: \"/api/zero/model-policies\",\n headers: authHeadersSchema,\n body: updateOrgModelPoliciesRequestSchema,\n responses: {\n 200: orgModelPoliciesResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Update org model-first policies\",\n },\n});\n\nexport type ZeroModelPoliciesMainContract =\n typeof zeroModelPoliciesMainContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst ORG_SLUG_HASH_LENGTH = 8;\nconst RANDOM_SLUG_SUFFIX_LENGTH = 8;\nconst PUBLIC_SLUG_SEPARATOR_LENGTH = 2;\nconst MAX_HOSTED_SITE_PUBLIC_SLUG_LENGTH = 96;\n\nexport const hostedArtifactKindSchema = z.enum([\n \"hosted-site\",\n \"presentation-html\",\n]);\nexport type HostedArtifactKind = z.infer<typeof hostedArtifactKindSchema>;\n\nexport const hostedSiteSlugSchema = z\n .string()\n .trim()\n .min(3)\n .max(63)\n .regex(\n /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,\n \"Site slug must use lowercase letters, numbers, and hyphens, and must start and end with a letter or number\",\n );\n\nexport const hostedSiteSlugSuffixSchema = z\n .string()\n .trim()\n .min(3)\n .max(32)\n .regex(\n /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,\n \"Site slug suffix must use lowercase letters, numbers, and hyphens, and must start and end with a letter or number\",\n );\n\nexport const hostedSitePublicSlugSchema = z\n .string()\n .trim()\n .min(3)\n .max(MAX_HOSTED_SITE_PUBLIC_SLUG_LENGTH)\n .regex(\n /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,\n \"Hosted site public slug must use lowercase letters, numbers, and hyphens, and must start and end with a letter or number\",\n );\n\nexport const hostedSiteFileSchema = z.object({\n path: z.string().min(1).max(1024).regex(/^\\//, \"File path must start with /\"),\n size: z.number().int().nonnegative(),\n sha256: z.string().regex(/^[a-f0-9]{64}$/),\n contentType: z.string().min(1).max(200),\n immutable: z.boolean().optional(),\n});\n\nexport const hostedSiteDownloadFileSchema = hostedSiteFileSchema.extend({\n downloadUrl: z.string().url(),\n});\n\nexport const hostedSitePrepareRequestSchema = z\n .object({\n site: hostedSiteSlugSchema,\n slugSuffix: hostedSiteSlugSuffixSchema.optional(),\n artifactKind: hostedArtifactKindSchema.default(\"hosted-site\"),\n spaFallback: z.boolean().default(false),\n files: z.array(hostedSiteFileSchema).min(1).max(5000),\n })\n .superRefine((value, ctx) => {\n const suffixLength = value.slugSuffix?.length ?? RANDOM_SLUG_SUFFIX_LENGTH;\n const publicSlugLength =\n value.site.length +\n ORG_SLUG_HASH_LENGTH +\n suffixLength +\n PUBLIC_SLUG_SEPARATOR_LENGTH;\n\n if (publicSlugLength > MAX_HOSTED_SITE_PUBLIC_SLUG_LENGTH) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: value.slugSuffix ? [\"slugSuffix\"] : [\"site\"],\n message:\n \"Hosted site public slug must be 96 characters or fewer; shorten site or slug suffix\",\n });\n }\n });\n\nexport const hostedSiteUploadSchema = z.object({\n path: z.string(),\n uploadUrl: z.string().url(),\n});\n\nexport const hostedSiteRedeployPresentationHtmlRequestSchema = z.object({\n url: z.string().url(),\n html: z.string().min(1),\n});\n\nexport const hostedSiteRedeployHtmlRequestSchema = z.object({\n url: z.string().url(),\n html: z.string().min(1),\n});\n\nexport const presentationSpeakerNotesPatchSchema = z.object({\n kind: z.literal(\"presentation-speaker-notes-patch\"),\n version: z.literal(1),\n slides: z\n .array(\n z.object({\n slideId: z.string().min(1),\n speakerNotes: z.string().min(1),\n }),\n )\n .max(500),\n});\n\nexport const htmlDomEditCommentSchema = z.object({\n id: z.string().min(1),\n targetNodeIds: z.array(z.string().min(1)).min(1).max(20),\n comment: z.string().min(1),\n});\n\nconst createHtmlEditDraftBaseRequestSchema = z.object({\n comments: z.array(htmlDomEditCommentSchema).min(1).max(100),\n});\n\nexport const createHtmlEditDraftRequestSchema = z.union([\n createHtmlEditDraftBaseRequestSchema.extend({\n html: z.string().min(1).max(500_000),\n htmlSnapshotUrl: z.never().optional(),\n }),\n createHtmlEditDraftBaseRequestSchema.extend({\n html: z.never().optional(),\n htmlSnapshotUrl: z.string().url(),\n }),\n]);\n\nexport const htmlEditDraftResponseSchema = z.object({\n kind: z.literal(\"html-edit-draft\"),\n version: z.literal(1),\n html: z.string().min(1),\n});\n\nexport const generatePresentationSpeakerNotesRequestSchema = z.object({\n html: z.string().min(1).max(500_000),\n mode: z.literal(\"fill-empty\"),\n});\n\nexport const hostedSitePrepareResponseSchema = z.object({\n siteId: z.string().uuid(),\n deploymentId: z.string().uuid(),\n publicSlug: z.string(),\n url: z.string().url(),\n deploymentVersion: z.number().int().positive().optional(),\n artifactUrl: z.string().url().optional(),\n aliasUrl: z.string().url().optional(),\n uploads: z.array(hostedSiteUploadSchema),\n});\n\nexport const hostedSiteCompleteResponseSchema = z.object({\n siteId: z.string().uuid(),\n deploymentId: z.string().uuid(),\n publicSlug: z.string(),\n url: z.string().url(),\n deploymentVersion: z.number().int().positive().optional(),\n artifactUrl: z.string().url().optional(),\n aliasUrl: z.string().url().optional(),\n isActive: z.boolean().optional(),\n activeDeploymentVersion: z.number().int().positive().optional(),\n status: z.literal(\"ready\"),\n});\n\nexport const hostedSiteFilesResponseSchema = z.object({\n siteId: z.string().uuid(),\n deploymentId: z.string().uuid(),\n publicSlug: hostedSitePublicSlugSchema,\n url: z.string().url(),\n deploymentVersion: z.number().int().positive().optional(),\n artifactUrl: z.string().url().optional(),\n aliasUrl: z.string().url().optional(),\n fileCount: z.number().int().nonnegative(),\n size: z.number().int().nonnegative(),\n files: z.array(hostedSiteDownloadFileSchema),\n});\n\nconst hostedSiteDeploymentSummarySchema = z.object({\n deploymentId: z.string().uuid(),\n deploymentVersion: z.number().int().positive().nullable(),\n artifactUrl: z.string().url().nullable(),\n status: z.enum([\"uploading\", \"ready\", \"failed\", \"deleted\"]),\n isActive: z.boolean(),\n createdAt: z.string().datetime(),\n readyAt: z.string().datetime().nullable(),\n});\n\nexport const hostedSiteDeploymentsResponseSchema = z.object({\n siteId: z.string().uuid(),\n site: hostedSiteSlugSchema,\n publicSlug: hostedSitePublicSlugSchema,\n aliasUrl: z.string().url(),\n activeDeploymentId: z.string().uuid().nullable(),\n activeDeploymentVersion: z.number().int().positive().nullable(),\n deployments: z.array(hostedSiteDeploymentSummarySchema),\n});\n\nexport const zeroHostContract = c.router({\n prepare: {\n method: \"POST\",\n path: \"/api/zero/host/deployments/prepare\",\n headers: authHeadersSchema,\n body: hostedSitePrepareRequestSchema,\n responses: {\n 200: hostedSitePrepareResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 409: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Prepare a static hosted-site deployment\",\n },\n complete: {\n method: \"POST\",\n path: \"/api/zero/host/deployments/:deploymentId/complete\",\n pathParams: z.object({\n deploymentId: z.string().uuid(),\n }),\n headers: authHeadersSchema,\n body: z.object({}),\n responses: {\n 200: hostedSiteCompleteResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Complete a static hosted-site deployment\",\n },\n files: {\n method: \"GET\",\n path: \"/api/zero/host/sites/:publicSlug/files\",\n pathParams: z.object({\n publicSlug: hostedSitePublicSlugSchema,\n }),\n query: z.object({\n version: z.coerce.number().int().positive().optional(),\n }),\n headers: authHeadersSchema,\n responses: {\n 200: hostedSiteFilesResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"List active hosted-site files for an owned site\",\n },\n deployments: {\n method: \"GET\",\n path: \"/api/zero/host/sites/:site/deployments\",\n pathParams: z.object({\n site: hostedSiteSlugSchema,\n }),\n headers: authHeadersSchema,\n responses: {\n 200: hostedSiteDeploymentsResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"List deployment versions for an owned hosted site\",\n },\n redeployPresentationHtml: {\n method: \"POST\",\n path: \"/api/zero/host/presentation-html/redeploy\",\n headers: authHeadersSchema,\n body: hostedSiteRedeployPresentationHtmlRequestSchema,\n responses: {\n 200: hostedSiteCompleteResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Redeploy an existing presentation HTML hosted site\",\n },\n redeployHtml: {\n method: \"POST\",\n path: \"/api/zero/host/html/redeploy\",\n headers: authHeadersSchema,\n body: hostedSiteRedeployHtmlRequestSchema,\n responses: {\n 200: hostedSiteCompleteResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Redeploy an existing HTML hosted site\",\n },\n generatePresentationSpeakerNotes: {\n method: \"POST\",\n path: \"/api/zero/host/presentation-html/speaker-notes\",\n headers: authHeadersSchema,\n body: generatePresentationSpeakerNotesRequestSchema,\n responses: {\n 200: presentationSpeakerNotesPatchSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Generate speaker notes for an existing presentation HTML\",\n },\n createHtmlEditDraft: {\n method: \"POST\",\n path: \"/api/zero/host/html-edit-draft\",\n headers: authHeadersSchema,\n body: createHtmlEditDraftRequestSchema,\n responses: {\n 200: htmlEditDraftResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 503: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Create an edited HTML draft from DOM comments\",\n },\n});\n\nexport type ZeroHostContract = typeof zeroHostContract;\nexport type HostedSitePrepareRequest = z.infer<\n typeof hostedSitePrepareRequestSchema\n>;\nexport type HostedSiteRedeployPresentationHtmlRequest = z.infer<\n typeof hostedSiteRedeployPresentationHtmlRequestSchema\n>;\nexport type HostedSiteRedeployHtmlRequest = z.infer<\n typeof hostedSiteRedeployHtmlRequestSchema\n>;\nexport type GeneratePresentationSpeakerNotesRequest = z.infer<\n typeof generatePresentationSpeakerNotesRequestSchema\n>;\nexport type PresentationSpeakerNotesPatch = z.infer<\n typeof presentationSpeakerNotesPatchSchema\n>;\nexport type CreateHtmlEditDraftRequest = z.infer<\n typeof createHtmlEditDraftRequestSchema\n>;\nexport type HtmlEditDraftResponse = z.infer<typeof htmlEditDraftResponseSchema>;\nexport type HostedSitePrepareResponse = z.infer<\n typeof hostedSitePrepareResponseSchema\n>;\nexport type HostedSiteCompleteResponse = z.infer<\n typeof hostedSiteCompleteResponseSchema\n>;\nexport type HostedSiteFilesResponse = z.infer<\n typeof hostedSiteFilesResponseSchema\n>;\nexport type HostedSiteDeploymentsResponse = z.infer<\n typeof hostedSiteDeploymentsResponseSchema\n>;\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n zeroAgentsMainContract,\n zeroAgentsByIdContract,\n zeroAgentInstructionsContract,\n type ZeroAgentResponse,\n type ZeroAgentRequest,\n type ZeroAgentInstructionsResponse,\n} from \"@vm0/api-contracts/contracts/zero-agents\";\nimport {\n zeroUserPermissionGrantsContract,\n type UserPermissionGrantResponse,\n} from \"@vm0/api-contracts/contracts/zero-user-permission-grants\";\nimport { zeroUserConnectorsContract } from \"@vm0/api-contracts/contracts/user-connectors\";\nimport { zeroAgentCustomConnectorsContract } from \"@vm0/api-contracts/contracts/zero-agent-custom-connectors\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport async function createZeroAgent(\n body: ZeroAgentRequest,\n): Promise<ZeroAgentResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentsMainContract, config);\n const result = await client.create({ body });\n if (result.status === 201) return result.body;\n handleError(result, \"Failed to create zero agent\");\n}\n\nexport async function listZeroAgents(): Promise<ZeroAgentResponse[]> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentsMainContract, config);\n const result = await client.list({ headers: {} });\n if (result.status === 200) return result.body;\n handleError(result, \"Failed to list zero agents\");\n}\n\nexport async function getZeroAgent(id: string): Promise<ZeroAgentResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentsByIdContract, config);\n const result = await client.get({ params: { id } });\n if (result.status === 200) return result.body;\n handleError(result, `Zero agent \"${id}\" not found`);\n}\n\nexport async function updateZeroAgent(\n id: string,\n body: ZeroAgentRequest,\n): Promise<ZeroAgentResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentsByIdContract, config);\n const result = await client.update({ params: { id }, body });\n if (result.status === 200) return result.body;\n handleError(result, `Failed to update zero agent \"${id}\"`);\n}\n\nexport async function deleteZeroAgent(id: string): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentsByIdContract, config);\n const result = await client.delete({ params: { id } });\n if (result.status === 204) return;\n handleError(result, `Zero agent \"${id}\" not found`);\n}\n\nexport async function getZeroAgentInstructions(\n id: string,\n): Promise<ZeroAgentInstructionsResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentInstructionsContract, config);\n const result = await client.get({ params: { id } });\n if (result.status === 200) return result.body;\n handleError(result, `Failed to get instructions for zero agent \"${id}\"`);\n}\n\nexport async function getZeroAgentUserConnectors(\n id: string,\n): Promise<string[]> {\n const config = await getClientConfig();\n const client = initClient(zeroUserConnectorsContract, config);\n const result = await client.get({ params: { id } });\n if (result.status === 200) return result.body.enabledTypes;\n handleError(\n result,\n `Failed to get connector permissions for zero agent \"${id}\"`,\n );\n}\n\nexport async function getZeroAgentCustomConnectors(\n id: string,\n): Promise<string[]> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentCustomConnectorsContract, config);\n const result = await client.get({ params: { id } });\n if (result.status === 200) return result.body.enabledIds;\n handleError(\n result,\n `Failed to get custom connector permissions for zero agent \"${id}\"`,\n );\n}\n\nexport async function listZeroUserPermissionGrants(\n agentId: string,\n): Promise<UserPermissionGrantResponse[]> {\n const config = await getClientConfig();\n const client = initClient(zeroUserPermissionGrantsContract, config);\n const result = await client.list({ query: { agentId } });\n if (result.status === 200) return result.body;\n handleError(\n result,\n `Failed to get permission grants for zero agent \"${agentId}\"`,\n );\n}\n\nexport async function updateZeroAgentInstructions(\n id: string,\n content: string,\n): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroAgentInstructionsContract, config);\n const result = await client.update({\n params: { id },\n body: { content },\n });\n if (result.status === 200) return;\n handleError(result, `Failed to update instructions for zero agent \"${id}\"`);\n}\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport {\n persistedAttachmentSchema,\n userMessageDocumentSchema,\n} from \"./chat-threads\";\n\nconst c = initContract();\n\nexport const zeroAgentVisibilitySchema = z.enum([\"public\", \"private\"]);\nexport type ZeroAgentVisibility = z.infer<typeof zeroAgentVisibilitySchema>;\n\n/**\n * Zero agent response schema\n */\nexport const zeroAgentResponseSchema = z.object({\n agentId: z.string(),\n ownerId: z.string(),\n description: z.string().nullable(),\n displayName: z.string().nullable(),\n sound: z.string().nullable(),\n avatarUrl: z.string().nullable(),\n modelProviderId: z.string().uuid().nullable().default(null),\n selectedModel: z.string().nullable().default(null),\n preferPersonalProvider: z.boolean().default(false),\n visibility: zeroAgentVisibilitySchema.optional(),\n});\n\n/**\n * Create/update zero agent request schema\n */\nexport const zeroAgentRequestSchema = z.object({\n description: z.string().optional(),\n displayName: z.string().optional(),\n sound: z.string().optional(),\n avatarUrl: z.string().optional(),\n visibility: zeroAgentVisibilitySchema.optional(),\n});\n\n/**\n * Partial metadata update request schema (for PATCH)\n */\nexport const zeroAgentMetadataRequestSchema = z.object({\n displayName: z.string().optional(),\n description: z.string().optional(),\n sound: z.string().optional(),\n avatarUrl: z.string().nullable().optional(),\n visibility: zeroAgentVisibilitySchema.optional(),\n});\n\n/**\n * Zero agent instructions response schema\n */\nexport const zeroAgentInstructionsResponseSchema = z.object({\n content: z.string().nullable(),\n filename: z.string().nullable(),\n});\n\n/**\n * Zero agent instructions update request schema\n */\nexport const zeroAgentInstructionsRequestSchema = z.object({\n content: z.string(),\n});\n\nexport const zeroAgentDraftResponseSchema = z.object({\n draftContent: z.string().nullable(),\n draftStructuredPrompt: userMessageDocumentSchema.nullable().optional(),\n draftAttachments: z.array(persistedAttachmentSchema).nullable(),\n});\n\nexport const zeroAgentDraftRequestSchema = z.object({\n draftContent: z.string().nullable().optional(),\n draftStructuredPrompt: userMessageDocumentSchema.nullable().optional(),\n draftAttachments: z.array(persistedAttachmentSchema).nullable().optional(),\n});\n\n/**\n * Contract for GET/POST /api/zero/agents (list/create agents)\n */\nexport const zeroAgentsMainContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/agents\",\n headers: authHeadersSchema,\n body: zeroAgentRequestSchema,\n responses: {\n 201: zeroAgentResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 409: apiErrorSchema,\n 422: apiErrorSchema,\n },\n summary: \"Create zero agent\",\n },\n list: {\n method: \"GET\",\n path: \"/api/zero/agents\",\n headers: authHeadersSchema,\n responses: {\n 200: z.array(zeroAgentResponseSchema),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"List zero agents\",\n },\n});\n\n/**\n * Contract for GET/PUT/PATCH/DELETE /api/zero/agents/:id\n */\nexport const zeroAgentsByIdContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/agents/:id\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n responses: {\n 200: zeroAgentResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get zero agent by id\",\n },\n update: {\n method: \"PUT\",\n path: \"/api/zero/agents/:id\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n body: zeroAgentRequestSchema,\n responses: {\n 200: zeroAgentResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n 422: apiErrorSchema,\n },\n summary: \"Update zero agent\",\n },\n updateMetadata: {\n method: \"PATCH\",\n path: \"/api/zero/agents/:id\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n body: zeroAgentMetadataRequestSchema,\n responses: {\n 200: zeroAgentResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Update zero agent metadata\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/agents/:id\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n body: c.noBody(),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Delete zero agent by id\",\n },\n});\n\n/**\n * Contract for GET/PUT /api/zero/agents/:id/instructions\n */\nexport const zeroAgentInstructionsContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/agents/:id/instructions\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n responses: {\n 200: zeroAgentInstructionsResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get zero agent instructions\",\n },\n update: {\n method: \"PUT\",\n path: \"/api/zero/agents/:id/instructions\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n body: zeroAgentInstructionsRequestSchema,\n responses: {\n 200: zeroAgentResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 422: apiErrorSchema,\n },\n summary: \"Update zero agent instructions\",\n },\n});\n\nexport const zeroAgentDraftContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/agents/:id/draft\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n responses: {\n 200: zeroAgentDraftResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get zero agent draft\",\n },\n patch: {\n method: \"PATCH\",\n path: \"/api/zero/agents/:id/draft\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n body: zeroAgentDraftRequestSchema,\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Update zero agent draft\",\n },\n});\n\n// Export types\nexport type ZeroAgentResponse = z.infer<typeof zeroAgentResponseSchema>;\nexport type ZeroAgentRequest = z.infer<typeof zeroAgentRequestSchema>;\nexport type ZeroAgentMetadataRequest = z.infer<\n typeof zeroAgentMetadataRequestSchema\n>;\nexport type ZeroAgentInstructionsResponse = z.infer<\n typeof zeroAgentInstructionsResponseSchema\n>;\nexport type ZeroAgentInstructionsRequest = z.infer<\n typeof zeroAgentInstructionsRequestSchema\n>;\nexport type ZeroAgentDraftResponse = z.infer<\n typeof zeroAgentDraftResponseSchema\n>;\nexport type ZeroAgentDraftRequest = z.infer<typeof zeroAgentDraftRequestSchema>;\n\nexport type ZeroAgentsMainContract = typeof zeroAgentsMainContract;\nexport type ZeroAgentsByIdContract = typeof zeroAgentsByIdContract;\nexport type ZeroAgentInstructionsContract =\n typeof zeroAgentInstructionsContract;\nexport type ZeroAgentDraftContract = typeof zeroAgentDraftContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { hostedArtifactKindSchema } from \"./zero-host\";\nimport { runStatusSchema } from \"./runs\";\nimport { zeroGoalEventSchema } from \"./zero-goals\";\nimport { triggerSourceSchema } from \"./logs\";\nimport { requestedRunModelSchema } from \"./model-providers\";\n\nconst c = initContract();\nexport const MODEL_FIRST_SELECTION_PROVIDER_ID =\n \"00000000-0000-4000-8000-000000000000\";\n\n/**\n * File attachment metadata stored alongside user messages.\n * The `id` is the attachment id — URLs are resolved at query time.\n */\nconst attachFileSchema = z.object({\n id: z.string(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number(),\n});\n\n/**\n * Attach file returned to the frontend with a resolved URL.\n * `url` is the public artifact CDN URL; consumers may render, cache, or share\n * it freely.\n */\nconst resolvedAttachFileSchema = attachFileSchema.extend({\n url: z.string(),\n});\n\nconst chatThreadArtifactGoogleDriveSyncSchema = z.discriminatedUnion(\"status\", [\n z.object({\n status: z.literal(\"synced\"),\n id: z.string(),\n name: z.string(),\n webViewLink: z.string().nullable(),\n }),\n z.object({ status: z.literal(\"not_synced\") }),\n z.object({ status: z.literal(\"disconnected\") }),\n z.object({ status: z.literal(\"unknown\") }),\n]);\n\nconst chatThreadArtifactFileSchema = resolvedAttachFileSchema.extend({\n createdAt: z.string(),\n artifactKind: hostedArtifactKindSchema.optional(),\n googleDriveSync: chatThreadArtifactGoogleDriveSyncSchema.optional(),\n});\n\nconst chatThreadArtifactRunSchema = z.object({\n runId: z.string(),\n files: z.array(chatThreadArtifactFileSchema),\n});\n\nconst artifactItemSchema = z.object({\n artifactItemId: z.string(),\n threadId: z.string(),\n runId: z.string(),\n fileId: z.string(),\n agentId: z.string(),\n agentName: z.string().nullable().optional(),\n agentAvatarUrl: z.string().nullable().optional(),\n threadTitle: z.string().nullable().optional(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number().default(0),\n url: z.string(),\n previewImageUrl: z.string().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n artifactKind: hostedArtifactKindSchema.optional(),\n googleDriveSync: chatThreadArtifactGoogleDriveSyncSchema.optional(),\n});\n\n/**\n * Keyset pagination for the artifacts list. Both fields are optional so\n * un-paginated callers (older frontend bundles) still get a valid first page.\n * `cursor` is an opaque token returned as `nextCursor` from a previous page.\n */\nconst artifactsListQuerySchema = z.object({\n limit: z.coerce.number().int().positive().max(10_000).optional(),\n cursor: z.string().optional(),\n updatedAfter: z.string().datetime().optional(),\n});\n\nconst artifactsListResponseSchema = z.object({\n artifacts: z.array(artifactItemSchema),\n /**\n * True when more artifacts exist beyond this page. Retained for backward\n * compatibility with older frontend bundles that read it; new clients follow\n * `nextCursor` instead.\n */\n truncated: z.boolean(),\n /**\n * Opaque cursor for the next page, or null when this is the last page.\n */\n nextCursor: z.string().nullable(),\n /**\n * Database time captured before the first page was read. Incremental clients\n * persist it only after the complete page chain has been cached.\n */\n syncUntil: z.string().datetime().optional(),\n});\n\nconst artifactFavoritesResponseSchema = z.object({\n artifactUrls: z.array(z.string()),\n});\n\nconst artifactFavoriteBodySchema = z.object({\n artifactUrl: z.string().min(1),\n});\n\nconst imageArtifactEditSnapshotItemSchema = z.object({\n url: z.string().url(),\n x: z.number(),\n y: z.number(),\n zIndex: z.number().int(),\n});\n\nconst imageArtifactEditSnapshotStateSchema = z.object({\n items: z.array(imageArtifactEditSnapshotItemSchema),\n version: z.literal(1),\n});\n\nconst imageArtifactEditSnapshotQuerySchema = z.object({\n url: z.string().url(),\n});\n\nconst imageArtifactEditSnapshotUpsertSchema = z.object({\n snapshot: imageArtifactEditSnapshotStateSchema,\n url: z.string().url(),\n});\n\nconst imageArtifactEditSnapshotSchema = z.object({\n artifactUrl: z.string().url(),\n snapshot: imageArtifactEditSnapshotStateSchema,\n updatedAt: z.string(),\n});\n\nconst htmlArtifactEditSnapshotQuerySchema = z.object({\n url: z.string().url(),\n});\n\nconst htmlArtifactEditSnapshotUpsertSchema = z.object({\n url: z.string().url(),\n html: z.string().min(1),\n});\n\nconst htmlArtifactEditSnapshotSchema = z.object({\n artifactUrl: z.string().url(),\n snapshotUrl: z.string().url(),\n updatedAt: z.string(),\n});\n\n/**\n * Attachment metadata persisted in chat_threads.draft_attachments.\n *\n * `url` is the public artifact CDN URL.\n * Historically this stored a 7-day presigned URL that could silently expire\n * while drafts sat in the DB; the public artifact URL removes that footgun.\n */\nconst persistedAttachmentSchema = z.object({\n id: z.string(),\n url: z.string(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number(),\n});\n\n/**\n * Per-agent unread snapshot. `unreadAt` is the creation time of the latest\n * run-finish marker — the one that made the thread unread.\n */\nconst chatThreadUnreadsSchema = z.object({\n unreads: z.array(\n z.object({\n threadId: z.string(),\n unreadAt: z.string(),\n }),\n ),\n});\n\nconst chatThreadUnreadAgentsSchema = z.object({\n agentIds: z.array(z.string()),\n});\n\nconst chatThreadEventIdSchema = z.string().uuid();\nconst codexServiceTierSchema = z.enum([\"fast\"]);\n\nconst chatThreadSnapshotProjectionSchema = z.object({\n id: z.string().uuid(),\n agentId: z.string().uuid(),\n title: z.string().nullable(),\n sortAt: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n pinnedAt: z.string().nullable(),\n renamedAt: z.string().nullable(),\n selectedModel: z.string().nullable().default(null),\n});\n\nconst chatThreadEventSchema = z.object({\n id: chatThreadEventIdSchema,\n kind: z.enum([\n \"created\",\n \"renamed\",\n \"deleted\",\n \"pinned\",\n \"unpinned\",\n \"model_selection_updated\",\n \"sort_touched\",\n ]),\n chatThreadId: z.string().uuid(),\n agentId: z.string().uuid(),\n title: z.string().nullable(),\n selectedModel: z.string().nullable().default(null),\n createdAt: z.string(),\n});\n\nconst chatMessageUsageProviderBreakdownSchema = z.object({\n provider: z.string(),\n credits: z.number().int().nonnegative(),\n});\n\nconst chatMessageUsageKindBreakdownSchema = z.object({\n kind: z.string(),\n credits: z.number().int().nonnegative(),\n providers: z.array(chatMessageUsageProviderBreakdownSchema),\n});\n\nconst chatMessageUsagePayloadSchema = z.object({\n version: z.literal(1),\n totalCredits: z.number().int().nonnegative(),\n settledAt: z.string(),\n breakdown: z.array(chatMessageUsageKindBreakdownSchema),\n});\n\nconst toolSummaryEntrySchema = z.object({\n kind: z.literal(\"tool\"),\n name: z.string(),\n input: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst textSummaryEntrySchema = z.object({\n kind: z.literal(\"text\"),\n text: z.string(),\n});\n\nconst summaryEntrySchema = z.union([\n z.string(),\n toolSummaryEntrySchema,\n textSummaryEntrySchema,\n]);\n\nconst presentationGenerationTemplateRequestSchema = z.object({\n type: z.literal(\"presentation\"),\n selection: z\n .object({\n templateId: z.string().min(1),\n colorSystemId: z.string().min(1).optional(),\n previewUrl: z.string().url().optional(),\n })\n .strict(),\n});\n\nconst videoGenerationTemplateRequestSchema = z.object({\n type: z.literal(\"video\"),\n selection: z.object({\n stylePresetId: z.string().min(1),\n }),\n});\n\nconst illustrationGenerationTemplateRequestSchema = z.object({\n type: z.literal(\"illustration\"),\n selection: z.object({\n illustrationStyleId: z.string().min(1),\n }),\n});\n\nconst workflowGenerationTemplateRequestSchema = z.object({\n type: z.literal(\"workflow\"),\n selection: z.object({\n workflowTemplateId: z.string().min(1),\n }),\n});\n\nconst websiteGenerationTemplateRequestSchema = z.object({\n type: z.literal(\"website\"),\n selection: z\n .object({\n websiteTemplateId: z.string().min(1),\n })\n .strict(),\n});\n\nconst generationTemplateRequestSchema = z.discriminatedUnion(\"type\", [\n presentationGenerationTemplateRequestSchema,\n videoGenerationTemplateRequestSchema,\n illustrationGenerationTemplateRequestSchema,\n workflowGenerationTemplateRequestSchema,\n websiteGenerationTemplateRequestSchema,\n]);\n\nconst userMessagePartSchema = z.discriminatedUnion(\"type\", [\n z\n .object({\n type: z.literal(\"text\"),\n text: z.string().min(1),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"chat_thread\"),\n threadId: z.string().uuid(),\n titleSnapshot: z.string().min(1),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"template\"),\n titleSnapshot: z.string().min(1),\n template: generationTemplateRequestSchema,\n })\n .strict(),\n z\n .object({\n type: z.literal(\"file\"),\n fileId: z.string().min(1),\n filenameSnapshot: z.string().min(1),\n contentType: z.string().min(1),\n })\n .strict(),\n]);\n\nconst userMessageDocumentSchema = z\n .object({\n version: z.literal(1),\n parts: z.array(userMessagePartSchema).min(1),\n })\n .strict();\n\nconst workflowSnapshotSchema = z.object({\n id: z.string().uuid().optional(),\n agentId: z.string().uuid().optional(),\n name: z.string(),\n displayName: z.string().nullable(),\n description: z.string().nullable(),\n automationId: z.string().uuid().optional(),\n triggerBrief: z.string().nullable().optional(),\n});\n\nconst pagedChatMessageBaseSchema = z.object({\n id: z.string(),\n content: z.string().nullable(),\n runId: z.string().optional(),\n runGroupId: z.string().optional(),\n triggerSource: triggerSourceSchema.optional(),\n slackMessagePermalink: z.string().url().optional(),\n isGoalRun: z.boolean().optional(),\n runEventId: z.string().optional(),\n goalEvent: zeroGoalEventSchema.optional(),\n goalSnapshot: z\n .object({\n objectiveBrief: z.string().min(1),\n })\n .optional(),\n usage: chatMessageUsagePayloadSchema.optional(),\n revokesMessageId: z.string().optional(),\n interruptsRunId: z.string().optional(),\n error: z.string().optional(),\n attachFiles: z.array(resolvedAttachFileSchema).optional(),\n generationTemplate: generationTemplateRequestSchema.optional(),\n /** Server-assigned strict position within the chat thread. */\n seqId: z.number().int().positive(),\n sequenceNumber: z.number().nullable().optional(),\n workflowSnapshot: workflowSnapshotSchema.optional(),\n createdAt: z.string(),\n});\n\nconst chatMessageRecommendedFollowupSchema = z.object({\n prompt: z.string(),\n kind: z.enum([\"talk\", \"generate\"]),\n generationType: z\n .enum([\"image\", \"video\", \"presentation\", \"website\"])\n .optional(),\n});\n\nconst chatMessageRecommendedFollowupsSchema = z.preprocess((value) => {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.flatMap((item) => {\n const parsed = chatMessageRecommendedFollowupSchema.safeParse(item);\n return parsed.success ? [parsed.data] : [];\n });\n}, z.array(chatMessageRecommendedFollowupSchema));\n\nconst pagedChatMessageSchema = z.discriminatedUnion(\"role\", [\n pagedChatMessageBaseSchema\n .extend({\n role: z.literal(\"user\"),\n structuredPrompt: userMessageDocumentSchema.optional(),\n })\n .strict(),\n pagedChatMessageBaseSchema.extend({\n role: z.literal(\"assistant\"),\n thinking: z.string().optional(),\n runLifecycleEvent: z.enum([\"completed\", \"failed\", \"cancelled\"]).optional(),\n recommendedFollowups: chatMessageRecommendedFollowupsSchema.optional(),\n }),\n]);\n\nconst chatThreadDetailSchema = z.object({\n /**\n * Read-state watermark. A thread is unread when its latest run-finish marker\n * is newer than this timestamp.\n */\n lastReadAt: z.string().nullable(),\n computerUseHostId: z.string().uuid().nullable(),\n codexServiceTier: codexServiceTierSchema.nullable(),\n});\n\nconst chatThreadMetadataSchema = z.object({\n id: z.string(),\n title: z.string().nullable(),\n selectedModel: z.string().nullable(),\n});\n\nconst chatThreadDraftSchema = z.object({\n draftContent: z.string().nullable(),\n draftStructuredPrompt: userMessageDocumentSchema.nullable().optional(),\n draftAttachments: z.array(persistedAttachmentSchema).nullable(),\n});\n\nconst selectedModelRequestSchema = requestedRunModelSchema;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction legacyModelSelectionModel(value: unknown): string | null | undefined {\n if (value === null) {\n return null;\n }\n if (!isRecord(value)) {\n return undefined;\n }\n const selectedModel = value.selectedModel;\n return typeof selectedModel === \"string\" ? selectedModel : undefined;\n}\n\nfunction normalizeLegacyModelSelectionInput(\n value: unknown,\n options: { readonly allowNull: boolean },\n): unknown {\n if (!isRecord(value) || \"model\" in value || !(\"modelSelection\" in value)) {\n return value;\n }\n const legacyModelSelection = legacyModelSelectionModel(value.modelSelection);\n if (\n legacyModelSelection === undefined ||\n (legacyModelSelection === null && !options.allowNull)\n ) {\n return value;\n }\n return { ...value, model: legacyModelSelection };\n}\n\nconst chatThreadCreateBodySchema = z.preprocess(\n (value) => {\n return normalizeLegacyModelSelectionInput(value, { allowNull: false });\n },\n z.object({\n agentId: z.string().min(1),\n clientThreadId: z.string().uuid().optional(),\n eventId: chatThreadEventIdSchema.optional(),\n /**\n * Selected model id. The API resolves the effective model provider from org\n * policy and available credentials.\n */\n model: selectedModelRequestSchema,\n title: z.string().optional(),\n }),\n);\n\nconst chatThreadModelSelectionUpdateBodySchema = z.preprocess(\n (value) => {\n return normalizeLegacyModelSelectionInput(value, { allowNull: true });\n },\n z.object({\n /**\n * Selected model id, or null to clear the thread's selected model.\n */\n model: selectedModelRequestSchema.nullable(),\n codexServiceTier: codexServiceTierSchema.nullable().optional(),\n eventId: chatThreadEventIdSchema.optional(),\n }),\n);\n\nconst chatRunOptionsRequestSchema = z.object({\n codexServiceTier: codexServiceTierSchema.optional(),\n});\n\nconst chatMessageNormalSendBodySchema = z.preprocess(\n (value) => {\n return normalizeLegacyModelSelectionInput(value, { allowNull: false });\n },\n z.object({\n agentId: z.string().min(1),\n prompt: z.string().min(1),\n threadId: z.string().optional(),\n clientThreadId: z.string().uuid().optional(),\n chatThreadEventId: chatThreadEventIdSchema.optional(),\n // Client-generated UUID for the sort touch created by direct user sends.\n // Lets event-sourced clients reconcile optimistic sidebar recency by id.\n chatThreadSortEventId: chatThreadEventIdSchema.optional(),\n /**\n * Selected model id. The API resolves the effective provider from org\n * policy and available credentials. Existing threads may omit it to\n * reuse the thread's persisted model.\n */\n model: selectedModelRequestSchema.optional(),\n runOptions: chatRunOptionsRequestSchema.optional(),\n structuredPrompt: userMessageDocumentSchema.optional(),\n generationTemplate: generationTemplateRequestSchema.optional(),\n computerUseHostId: z.string().uuid().nullable().optional(),\n // Optional for backward compatibility: older clients that omit this field\n // still trigger title generation (server guards with !== false, not === true).\n hasTextContent: z.boolean().optional(),\n attachFiles: z.array(attachFileSchema).optional(),\n // Client-generated UUID used as the user message's primary key.\n // Lets the client render an optimistic row and reconcile with the\n // server row by id — no temp-id swap, no React remount.\n clientMessageId: z.string().uuid().optional(),\n // Preview evaluation escape hatch: when enabled, the request asks the\n // runner to bypass preview mock CLIs and use the real agent runtime.\n realAgentInPreview: z.boolean().optional(),\n revokesMessageId: z.string().min(1).optional(),\n interruptsRunId: z.undefined().optional(),\n }),\n);\n\n/**\n * Chat thread collection route contract.\n */\nexport const chatThreadsContract = c.router({\n snapshot: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/snapshot\",\n headers: authHeadersSchema,\n responses: {\n 200: z.object({\n chatThreads: z.array(chatThreadSnapshotProjectionSchema),\n latestEventId: chatThreadEventIdSchema.nullable(),\n }),\n 401: apiErrorSchema,\n },\n summary:\n \"Get the compacted chat thread snapshot for the caller's current organization.\",\n },\n events: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/events\",\n headers: authHeadersSchema,\n query: z.object({\n sinceEventId: chatThreadEventIdSchema.optional(),\n }),\n responses: {\n 200: z.object({\n events: z.array(chatThreadEventSchema),\n hasMore: z.boolean(),\n }),\n 401: apiErrorSchema,\n 410: apiErrorSchema,\n },\n summary:\n \"List chat thread lifecycle events after an optional event id cursor.\",\n },\n activeIds: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/active-ids\",\n headers: authHeadersSchema,\n responses: {\n 200: z.object({\n threadIds: z.array(z.string().uuid()),\n }),\n 401: apiErrorSchema,\n },\n summary:\n \"List chat thread ids that currently have queued, pending, or running runs.\",\n },\n create: {\n method: \"POST\",\n path: \"/api/zero/chat-threads\",\n headers: authHeadersSchema,\n body: chatThreadCreateBodySchema,\n responses: {\n 201: z.object({\n id: z.string(),\n title: z.string().nullable(),\n createdAt: z.string(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Create a new chat thread\",\n },\n drafts: {\n method: \"GET\",\n // Sibling path (not nested under /chat-threads/) so it can never\n // collide with the /chat-threads/:id route pattern.\n path: \"/api/zero/chat-thread-drafts\",\n headers: authHeadersSchema,\n query: z.object({}),\n responses: {\n 200: z.object({\n /**\n * Thread ids owned by the caller that currently hold an unsent draft\n * (non-empty `draftContent`, a structured prompt, or one+\n * `draftAttachments`).\n */\n draftThreadIds: z.array(z.string()),\n }),\n 401: apiErrorSchema,\n },\n summary:\n \"Report which of the caller's chat threads hold an unsent composer draft. Fetched separately from the thread list so the sidebar draft dots don't gate the list query.\",\n },\n unreads: {\n method: \"GET\",\n path: \"/api/zero/chat-thread-unreads\",\n headers: authHeadersSchema,\n query: z.object({\n agentId: z.string().min(1),\n }),\n responses: {\n 200: chatThreadUnreadsSchema,\n 401: apiErrorSchema,\n },\n summary:\n \"List the caller's unread chat threads under an agent, each with the timestamp of the message that made it unread.\",\n },\n unreadAgents: {\n method: \"GET\",\n path: \"/api/zero/chat-thread-unread-agents\",\n headers: authHeadersSchema,\n responses: {\n 200: chatThreadUnreadAgentsSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary:\n \"List agent IDs with at least one unread chat thread for the caller.\",\n },\n});\n\n/**\n * Chat thread by ID route contract (/api/chat-threads/[id])\n */\nconst chatThreadIdPathParamsSchema = z.object({ id: z.string().uuid() });\nconst chatThreadThreadIdPathParamsSchema = z.object({\n threadId: z.string().uuid(),\n});\nconst chatThreadMessagePathParamsSchema =\n chatThreadThreadIdPathParamsSchema.extend({\n messageId: z.string().uuid(),\n });\n\nexport const chatThreadByIdContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:id\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n responses: {\n 200: chatThreadDetailSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get chat thread detail\",\n },\n patch: {\n method: \"PATCH\",\n path: \"/api/zero/chat-threads/:id\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n body: z.object({\n draftContent: z.string().nullable().optional(),\n draftStructuredPrompt: userMessageDocumentSchema.nullable().optional(),\n draftAttachments: z\n .array(persistedAttachmentSchema)\n .nullable()\n .optional(),\n }),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Update chat thread draft content and attachments\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/chat-threads/:id\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n query: z.object({ eventId: chatThreadEventIdSchema.optional() }).optional(),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Delete a chat thread\",\n body: c.noBody(),\n },\n});\n\n/**\n * Thread-scoped composer draft endpoint. Kept separate from thread detail so\n * draft hydration does not require the larger current-thread detail payload.\n */\nexport const chatThreadDraftContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:id/draft\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n responses: {\n 200: chatThreadDraftSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get chat thread draft content and attachments\",\n },\n});\n\n/**\n * Mark a chat thread as read up to its current latest run-finish marker.\n * Separate contract so it can be served by its own route file.\n */\nexport const chatThreadMarkReadContract = c.router({\n markRead: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:id/mark-read\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n body: c.noBody(),\n responses: {\n 200: z.object({\n lastReadAt: z.string().nullable(),\n /**\n * Fresh unread snapshot for the thread's agent (same shape as the\n * unreads endpoint). Clients should treat\n * `chatThreadReadCursorUpdated` as read-state invalidation.\n */\n unreads: chatThreadUnreadsSchema.shape.unreads,\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Mark a chat thread as read up to the latest run-finish marker\",\n },\n});\n\n/**\n * Mark every unread chat thread under an agent as read.\n * Separate sibling route so it cannot collide with the `:id` thread routes.\n */\nexport const chatThreadMarkAgentReadContract = c.router({\n markAgentRead: {\n method: \"POST\",\n path: \"/api/zero/chat-thread-unreads/mark-read\",\n headers: authHeadersSchema,\n body: z.object({\n agentId: z.string().min(1),\n }),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Mark all unread chat threads under an agent as read\",\n },\n});\n\n/**\n * Pin / unpin a chat thread. Two separate POST endpoints (no body) instead\n * of widening `chatThreadByIdContract.patch`, which is intentionally narrow\n * (draft fields only). Mirrors the `mark-read` precedent.\n *\n * Split into two contracts because each lives in its own Next.js route\n * folder; `tsr.router` requires every action in a contract to be handled\n * by the same router file.\n */\nexport const chatThreadPinContract = c.router({\n pin: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:id/pin\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n query: z.object({ eventId: chatThreadEventIdSchema.optional() }).optional(),\n body: c.noBody(),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Pin a chat thread to the top of the sidebar\",\n },\n});\n\nexport const chatThreadUnpinContract = c.router({\n unpin: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:id/unpin\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n query: z.object({ eventId: chatThreadEventIdSchema.optional() }).optional(),\n body: c.noBody(),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Remove the pin from a chat thread\",\n },\n});\n\n/**\n * Rename a chat thread POST endpoint. Sets both the title and the\n * `renamed_at` timestamp, which suppresses future automated title\n * generation for this thread.\n *\n * Split into a dedicated contract/route so any POST body widening\n * (e.g. future `{ icon, folder }` fields) stays invisible to the\n * unrelated draft PATCH on chatThreadByIdContract.\n */\nexport const chatThreadRenameContract = c.router({\n rename: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:id/rename\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n body: z.object({\n title: z.string().min(1),\n eventId: chatThreadEventIdSchema.optional(),\n }),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Rename a chat thread (suppresses automated title generation)\",\n },\n});\n\n/**\n * Narrow metadata endpoint for the current chat thread. This intentionally\n * does not expose messages or detail fields needed by the web UI.\n */\nexport const chatThreadMetadataContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:id/metadata\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n responses: {\n 200: chatThreadMetadataSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get chat thread metadata\",\n },\n});\n\n/**\n * Update a chat thread's model pin. Kept separate from\n * `chatThreadByIdContract.patch`, which intentionally remains draft-only.\n */\nexport const chatThreadModelSelectionContract = c.router({\n update: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:id/model-selection\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n body: chatThreadModelSelectionUpdateBodySchema,\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Update a chat thread model selection\",\n },\n});\n\n/**\n * Update a chat thread's Computer Use host binding. Kept separate from\n * `chatThreadByIdContract.patch`, which intentionally remains draft-only.\n */\nexport const chatThreadComputerUseHostContract = c.router({\n update: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:id/computer-use-host\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdPathParamsSchema,\n body: z.object({\n computerUseHostId: z.string().uuid().nullable(),\n }),\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Update a chat thread Computer Use host binding\",\n },\n});\n\n/**\n * Chat messages contract (/api/zero/chat/messages)\n * Unified endpoint: create thread (if needed) + run + association in one call.\n */\nexport const chatMessagesContract = c.router({\n send: {\n method: \"POST\",\n path: \"/api/zero/chat/messages\",\n headers: authHeadersSchema,\n body: z.union([\n chatMessageNormalSendBodySchema,\n z.object({\n agentId: z.string().min(1),\n threadId: z.string().min(1),\n revokesMessageId: z.string().min(1),\n clientMessageId: z.string().uuid().optional(),\n prompt: z.undefined().optional(),\n clientThreadId: z.undefined().optional(),\n chatThreadEventId: z.undefined().optional(),\n chatThreadSortEventId: z.undefined().optional(),\n model: z.undefined().optional(),\n runOptions: z.undefined().optional(),\n structuredPrompt: z.undefined().optional(),\n generationTemplate: z.undefined().optional(),\n computerUseHostId: z.undefined().optional(),\n hasTextContent: z.undefined().optional(),\n attachFiles: z.undefined().optional(),\n realAgentInPreview: z.undefined().optional(),\n interruptsRunId: z.undefined().optional(),\n }),\n z.object({\n agentId: z.string().min(1),\n threadId: z.string().min(1),\n interruptsRunId: z.string().uuid(),\n clientMessageId: z.string().uuid().optional(),\n prompt: z.undefined().optional(),\n clientThreadId: z.undefined().optional(),\n chatThreadEventId: z.undefined().optional(),\n chatThreadSortEventId: z.undefined().optional(),\n model: z.undefined().optional(),\n runOptions: z.undefined().optional(),\n structuredPrompt: z.undefined().optional(),\n generationTemplate: z.undefined().optional(),\n computerUseHostId: z.undefined().optional(),\n hasTextContent: z.undefined().optional(),\n attachFiles: z.undefined().optional(),\n realAgentInPreview: z.undefined().optional(),\n revokesMessageId: z.undefined().optional(),\n }),\n ]),\n responses: {\n 201: z.object({\n runId: z.string().nullable(),\n threadId: z.string(),\n status: runStatusSchema.optional(),\n createdAt: z.string().optional(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n 422: apiErrorSchema,\n },\n summary: \"Send a chat message (create thread + run + association)\",\n },\n});\n\n/**\n * Single chat message in a search result.\n * `content` is guaranteed non-null because the search route filters out\n * placeholder rows where content is NULL.\n */\nconst chatSearchMessageSchema = z.object({\n messageId: z.string(),\n chatThreadId: z.string(),\n role: z.enum([\"user\", \"assistant\"]),\n content: z.string(),\n createdAt: z.string(),\n seqId: z.number().int().positive(),\n sequenceNumber: z.number().nullable(),\n runId: z.string().nullable(),\n});\n\nconst chatSearchResultSchema = z.object({\n chatThreadId: z.string(),\n agentName: z.string(),\n matchedMessage: chatSearchMessageSchema,\n contextBefore: z.array(chatSearchMessageSchema),\n contextAfter: z.array(chatSearchMessageSchema),\n});\n\n/**\n * `hasMore` indicates that the server truncated the result set at `limit`.\n * There is intentionally no cursor/offset: `limit` is capped at 50 (see the\n * query schema below) and chat-message search is a lookup tool, not a bulk\n * export. Callers that hit `hasMore=true` should narrow the query (add\n * `agentId`, `since`, or a more specific `keyword`) rather than paginate. If\n * genuine pagination is ever needed, introduce `nextCursor` here — the\n * contract has no external consumers yet, so adding it later is safe.\n */\nconst chatSearchResponseSchema = z.object({\n results: z.array(chatSearchResultSchema),\n hasMore: z.boolean(),\n});\n\n/**\n * Chat search contract (GET /api/zero/chat/search)\n * Searches chat messages within the caller's own threads in the caller's org.\n * Authorization is enforced at the DB query level via userId + orgId filters.\n */\nexport const chatSearchContract = c.router({\n search: {\n method: \"GET\",\n path: \"/api/zero/chat/search\",\n headers: authHeadersSchema,\n query: z.object({\n keyword: z.string().trim().min(1),\n agentId: z.string().uuid().optional(),\n since: z.coerce.number().optional(),\n limit: z.coerce.number().min(1).max(50).default(20),\n before: z.coerce.number().min(0).max(10).default(0),\n after: z.coerce.number().min(0).max(10).default(0),\n }),\n responses: {\n 200: chatSearchResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Search chat messages within caller's org (zero proxy)\",\n },\n});\n\n/**\n * Paginated chat messages contract (/api/zero/chat-threads/:threadId/messages)\n * Cursor-based pagination using the thread-scoped message sequence.\n *\n * Query params (mutually exclusive):\n * sinceSeqId — forward pagination: messages strictly after this cursor\n * beforeSeqId — backward pagination: messages strictly before this cursor\n * sinceId / beforeId — previous frontend UUID cursors retained during rollout\n * (neither) — initial load anchored at the last user message\n *\n * Response includes `hasMore` for initial load and backward pagination so the\n * UI knows whether to offer upward scroll loading.\n */\nexport const chatThreadMessagesContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:threadId/messages\",\n headers: authHeadersSchema,\n pathParams: chatThreadThreadIdPathParamsSchema,\n query: z.object({\n sinceSeqId: z.coerce.number().int().positive().optional(),\n beforeSeqId: z.coerce.number().int().positive().optional(),\n // Remove after browser clients from the pre-seqId release can no longer\n // remain active against the current backend.\n sinceId: z.string().uuid().optional(),\n beforeId: z.string().uuid().optional(),\n limit: z.coerce.number().min(1).max(50).default(50),\n }),\n responses: {\n 200: z.object({\n messages: z.array(pagedChatMessageSchema),\n hasHistoryBefore: z.boolean().optional(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get paginated chat messages for a thread\",\n },\n get: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:threadId/messages/:messageId\",\n headers: authHeadersSchema,\n pathParams: chatThreadMessagePathParamsSchema,\n responses: {\n 200: pagedChatMessageSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get a chat message by id for a thread\",\n },\n});\n\nexport const chatThreadArtifactsContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:threadId/artifacts\",\n headers: authHeadersSchema,\n pathParams: chatThreadThreadIdPathParamsSchema,\n responses: {\n 200: z.object({\n runs: z.array(chatThreadArtifactRunSchema),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"List uploaded files associated with every run in a chat thread\",\n },\n getHtmlEditSnapshot: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:threadId/html-artifact-edit-snapshot\",\n headers: authHeadersSchema,\n pathParams: chatThreadThreadIdPathParamsSchema,\n query: htmlArtifactEditSnapshotQuerySchema,\n responses: {\n 200: z.object({ snapshot: htmlArtifactEditSnapshotSchema.nullable() }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get a resumable HTML artifact edit snapshot for a chat thread\",\n },\n upsertHtmlEditSnapshot: {\n method: \"PUT\",\n path: \"/api/zero/chat-threads/:threadId/html-artifact-edit-snapshot\",\n headers: authHeadersSchema,\n pathParams: chatThreadThreadIdPathParamsSchema,\n body: htmlArtifactEditSnapshotUpsertSchema,\n responses: {\n 200: htmlArtifactEditSnapshotSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Upsert a resumable HTML artifact edit snapshot for a chat thread\",\n },\n deleteHtmlEditSnapshot: {\n method: \"DELETE\",\n path: \"/api/zero/chat-threads/:threadId/html-artifact-edit-snapshot\",\n headers: authHeadersSchema,\n pathParams: chatThreadThreadIdPathParamsSchema,\n query: htmlArtifactEditSnapshotQuerySchema,\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Delete a resumable HTML artifact edit snapshot for a chat thread\",\n },\n syncGoogleDrive: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:threadId/artifacts\",\n headers: authHeadersSchema,\n pathParams: chatThreadThreadIdPathParamsSchema,\n body: z.object({\n runId: z.string(),\n fileId: z.string(),\n }),\n responses: {\n 200: z.object({\n id: z.string(),\n name: z.string(),\n webViewLink: z.string().nullable(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Sync a chat artifact file to the user's connected Google Drive\",\n },\n uploadGoogleSlides: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:threadId/artifacts/google-slides\",\n headers: authHeadersSchema,\n pathParams: chatThreadThreadIdPathParamsSchema,\n contentType: \"multipart/form-data\",\n body: c.type<FormData>(),\n responses: {\n 200: z.object({\n id: z.string(),\n name: z.string(),\n webViewLink: z.string().nullable(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary:\n \"Upload a presentation artifact to the user's Google Drive as a native Google Slides deck\",\n },\n});\n\nexport const artifactsContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/artifacts\",\n headers: authHeadersSchema,\n query: artifactsListQuerySchema,\n responses: {\n 200: artifactsListResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary:\n \"List artifacts for the caller's current organization (keyset-paginated)\",\n },\n listFavorites: {\n method: \"GET\",\n path: \"/api/zero/artifacts/favorites\",\n headers: authHeadersSchema,\n responses: {\n 200: artifactFavoritesResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"List artifact favorite URLs for the caller\",\n },\n favorite: {\n method: \"POST\",\n path: \"/api/zero/artifacts/favorite\",\n headers: authHeadersSchema,\n body: artifactFavoriteBodySchema,\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Favorite an artifact for the caller\",\n },\n unfavorite: {\n method: \"POST\",\n path: \"/api/zero/artifacts/unfavorite\",\n headers: authHeadersSchema,\n body: artifactFavoriteBodySchema,\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Remove an artifact favorite for the caller\",\n },\n getImageEditSnapshot: {\n method: \"GET\",\n path: \"/api/zero/artifacts/image-edit-snapshot\",\n headers: authHeadersSchema,\n query: imageArtifactEditSnapshotQuerySchema,\n responses: {\n 200: z.object({ snapshot: imageArtifactEditSnapshotSchema.nullable() }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get a resumable image artifact edit snapshot for the caller\",\n },\n upsertImageEditSnapshot: {\n method: \"PUT\",\n path: \"/api/zero/artifacts/image-edit-snapshot\",\n headers: authHeadersSchema,\n body: imageArtifactEditSnapshotUpsertSchema,\n responses: {\n 200: imageArtifactEditSnapshotSchema,\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Upsert a resumable image artifact edit snapshot for the caller\",\n },\n deleteImageEditSnapshot: {\n method: \"DELETE\",\n path: \"/api/zero/artifacts/image-edit-snapshot\",\n headers: authHeadersSchema,\n query: imageArtifactEditSnapshotQuerySchema,\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Delete a resumable image artifact edit snapshot for the caller\",\n },\n});\n\nexport type ChatThreadsContract = typeof chatThreadsContract;\nexport type ChatThreadByIdContract = typeof chatThreadByIdContract;\nexport type ChatThreadDraftContract = typeof chatThreadDraftContract;\nexport type ChatThreadMarkReadContract = typeof chatThreadMarkReadContract;\nexport type ChatThreadMarkAgentReadContract =\n typeof chatThreadMarkAgentReadContract;\nexport type ChatThreadPinContract = typeof chatThreadPinContract;\nexport type ChatThreadUnpinContract = typeof chatThreadUnpinContract;\nexport type ChatThreadRenameContract = typeof chatThreadRenameContract;\nexport type ChatThreadMetadataContract = typeof chatThreadMetadataContract;\nexport type ChatThreadModelSelectionContract =\n typeof chatThreadModelSelectionContract;\nexport type ChatThreadComputerUseHostContract =\n typeof chatThreadComputerUseHostContract;\nexport type ChatMessagesContract = typeof chatMessagesContract;\nexport type ChatThreadMessagesContract = typeof chatThreadMessagesContract;\nexport type ChatThreadArtifactsContract = typeof chatThreadArtifactsContract;\nexport type ArtifactsContract = typeof artifactsContract;\nexport type ChatSearchContract = typeof chatSearchContract;\nexport type ChatSearchResponse = z.infer<typeof chatSearchResponseSchema>;\nexport type ChatSearchResult = z.infer<typeof chatSearchResultSchema>;\nexport type ChatSearchMessage = z.infer<typeof chatSearchMessageSchema>;\n\nexport {\n chatThreadSnapshotProjectionSchema,\n chatThreadEventSchema,\n chatThreadDetailSchema,\n chatThreadMetadataSchema,\n chatThreadDraftSchema,\n chatRunOptionsRequestSchema,\n generationTemplateRequestSchema,\n userMessagePartSchema,\n userMessageDocumentSchema,\n presentationGenerationTemplateRequestSchema,\n videoGenerationTemplateRequestSchema,\n illustrationGenerationTemplateRequestSchema,\n websiteGenerationTemplateRequestSchema,\n pagedChatMessageSchema,\n chatMessageUsagePayloadSchema,\n summaryEntrySchema,\n persistedAttachmentSchema,\n attachFileSchema,\n resolvedAttachFileSchema,\n artifactItemSchema,\n artifactFavoriteBodySchema,\n artifactFavoritesResponseSchema,\n artifactsListResponseSchema,\n imageArtifactEditSnapshotSchema,\n imageArtifactEditSnapshotStateSchema,\n chatThreadArtifactFileSchema,\n chatThreadArtifactGoogleDriveSyncSchema,\n chatThreadArtifactRunSchema,\n htmlArtifactEditSnapshotSchema,\n};\n\nexport type CodexServiceTier = z.infer<typeof codexServiceTierSchema>;\nexport type ChatRunOptionsRequest = z.infer<typeof chatRunOptionsRequestSchema>;\nexport type GenerationTemplateRequest = z.infer<\n typeof generationTemplateRequestSchema\n>;\nexport type GenerationTemplateType = GenerationTemplateRequest[\"type\"];\nexport type UserMessagePart = z.infer<typeof userMessagePartSchema>;\nexport type UserMessageDocument = z.infer<typeof userMessageDocumentSchema>;\nexport type LegacyThreadGenerationTemplateType = Exclude<\n GenerationTemplateType,\n \"workflow\" | \"website\"\n>;\n/**\n * Legacy generation template shape retained for older thread-level storage.\n * Current prompt injection uses the generation template attached to the current\n * message only.\n */\nexport type ThreadGenerationTemplates = Partial<\n Record<\n LegacyThreadGenerationTemplateType,\n Extract<\n GenerationTemplateRequest,\n { type: LegacyThreadGenerationTemplateType }\n >\n >\n>;\nexport type PresentationGenerationTemplateRequest = z.infer<\n typeof presentationGenerationTemplateRequestSchema\n>;\nexport type VideoGenerationTemplateRequest = z.infer<\n typeof videoGenerationTemplateRequestSchema\n>;\nexport type IllustrationGenerationTemplateRequest = z.infer<\n typeof illustrationGenerationTemplateRequestSchema\n>;\nexport type WorkflowGenerationTemplateRequest = z.infer<\n typeof workflowGenerationTemplateRequestSchema\n>;\nexport type WebsiteGenerationTemplateRequest = z.infer<\n typeof websiteGenerationTemplateRequestSchema\n>;\n\nexport type SummaryEntry = z.infer<typeof summaryEntrySchema>;\nexport type ChatThreadSnapshotProjection = z.infer<\n typeof chatThreadSnapshotProjectionSchema\n>;\nexport type ChatThreadEvent = z.infer<typeof chatThreadEventSchema>;\nexport type ChatThreadDetail = z.infer<typeof chatThreadDetailSchema>;\nexport type ChatThreadMetadata = z.infer<typeof chatThreadMetadataSchema>;\nexport type ChatThreadDraft = z.infer<typeof chatThreadDraftSchema>;\nexport type PagedChatMessage = z.infer<typeof pagedChatMessageSchema>;\nexport type ChatMessageUsagePayload = z.infer<\n typeof chatMessageUsagePayloadSchema\n>;\nexport type PersistedAttachment = z.infer<typeof persistedAttachmentSchema>;\nexport type AttachFile = z.infer<typeof attachFileSchema>;\nexport type ResolvedAttachFile = z.infer<typeof resolvedAttachFileSchema>;\nexport type ChatThreadArtifactFile = z.infer<\n typeof chatThreadArtifactFileSchema\n>;\nexport type ChatThreadArtifactGoogleDriveSync = z.infer<\n typeof chatThreadArtifactGoogleDriveSyncSchema\n>;\nexport type ChatThreadArtifactRun = z.infer<typeof chatThreadArtifactRunSchema>;\nexport type ArtifactItem = z.infer<typeof artifactItemSchema>;\nexport type ArtifactFavoritesResponse = z.infer<\n typeof artifactFavoritesResponseSchema\n>;\nexport type ArtifactsListResponse = z.infer<typeof artifactsListResponseSchema>;\nexport type ImageArtifactEditSnapshot = z.infer<\n typeof imageArtifactEditSnapshotSchema\n>;\nexport type ImageArtifactEditSnapshotState = z.infer<\n typeof imageArtifactEditSnapshotStateSchema\n>;\nexport type HtmlArtifactEditSnapshot = z.infer<\n typeof htmlArtifactEditSnapshotSchema\n>;\n","import { z } from \"zod\";\nimport {\n authHeadersSchema,\n initContract,\n timestampQueryNumberSchema,\n} from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport { firewallPoliciesSchema } from \"@vm0/connectors/firewall-types\";\nimport {\n modelProviderTypeSchema,\n type ModelProviderType,\n} from \"./model-providers\";\nimport { triggerSourceSchema } from \"./logs\";\nimport { orgTierSchema } from \"./orgs\";\n\nconst c = initContract();\nexport type DirectRunModelProviderType = Exclude<ModelProviderType, \"vm0\">;\n\nconst directRunModelProviderTypeSchema = modelProviderTypeSchema.refine(\n (type) => {\n return type !== \"vm0\";\n },\n { message: \"vm0 model provider is only supported by zero runs\" },\n);\n\nexport const claudeToolEntrySchema = z\n .string()\n .refine(\n (tool) => {\n return tool.trim().length > 0;\n },\n {\n message: \"Claude tool name must not be empty\",\n },\n )\n .refine(\n (tool) => {\n return !tool.includes(\",\");\n },\n {\n message: \"Claude tool name must not contain commas\",\n },\n )\n .refine(\n (tool) => {\n return !tool.trimStart().startsWith(\"-\");\n },\n {\n message: \"Claude tool name must not start with a hyphen\",\n },\n );\n\n// Stored in Postgres `integer` columns. Keep request validation aligned with\n// the DB range so malformed sandbox payloads fail as 400s instead of DB errors.\nexport const MAX_EVENT_SEQUENCE_NUMBER = 2_147_483_647;\nexport const eventSequenceNumberSchema = z\n .number()\n .int()\n .nonnegative()\n .max(MAX_EVENT_SEQUENCE_NUMBER);\nconst eventSequenceCursorSchema = z\n .number()\n .int()\n .min(-1)\n .max(MAX_EVENT_SEQUENCE_NUMBER);\nconst eventSequenceCursorQuerySchema = z.coerce\n .number()\n .int()\n .min(-1)\n .max(MAX_EVENT_SEQUENCE_NUMBER);\n\n/**\n * All valid run status values\n */\nexport const ALL_RUN_STATUSES = [\n \"queued\",\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\",\n \"timeout\",\n \"cancelled\",\n] as const;\n\n/**\n * Run status enum\n */\nconst runStatusSchema = z.enum(ALL_RUN_STATUSES);\n\n/**\n * Unified run request schema - supports all run modes via optional parameters\n */\nconst unifiedRunRequestSchema = z\n .object({\n // High-level shortcut for continuing an existing session.\n sessionId: z.string().optional(),\n\n // Base parameters (can be used directly or overridden after shortcut expansion)\n agentComposeId: z.string().optional(),\n agentComposeVersionId: z.string().optional(),\n conversationId: z.string().optional(),\n // Multi-mount artifacts, each with its own mountPath.\n artifacts: z\n .array(\n z.object({\n name: z.string(),\n version: z.string().optional(),\n mountPath: z.string(),\n }),\n )\n .optional(),\n vars: z.record(z.string(), z.string()).optional(),\n secrets: z.record(z.string(), z.string()).optional(),\n volumeVersions: z.record(z.string(), z.string()).optional(),\n\n // Additional volumes passed directly at run time (bypass compose)\n additionalVolumes: z\n .array(\n z.object({\n name: z.string(),\n version: z.string().optional(),\n mountPath: z.string(),\n }),\n )\n .optional(),\n\n // Preview evaluation escape hatch: bypass preview mock CLIs and use the\n // real agent runtime.\n realAgentInPreview: z.boolean().optional(),\n\n // Capture HTTP header names, selected safe header values, request bodies, and response bodies\n // in network logs\n captureNetworkBodies: z.boolean().optional(),\n\n // Required\n prompt: z.string().min(1, \"Missing prompt\"),\n\n // Optional system prompt to append to the agent's system prompt\n appendSystemPrompt: z.string().optional(),\n\n // Optional list of tools to disable in Claude CLI (passed as --disallowed-tools)\n disallowedTools: z.array(claudeToolEntrySchema).optional(),\n\n // Optional list of tools to make available in Claude CLI (passed as --tools)\n tools: z.array(claudeToolEntrySchema).optional(),\n\n // Settings JSON to pass to Claude CLI (passed as --settings)\n settings: z.string().optional(),\n\n // How the run was triggered (defaults to \"cli\" on the server if not provided)\n triggerSource: triggerSourceSchema.optional(),\n\n // Per-permission policies (e.g., { \"github\": { \"actions:read\": \"allow\" } })\n permissionPolicies: firewallPoliciesSchema.optional(),\n\n // Internal: pin provider type for direct CLI runs used by E2E.\n // vm0 is intentionally excluded here because only zero runs enforce\n // vm0-managed-provider credits.\n modelProviderType: directRunModelProviderTypeSchema.optional(),\n })\n .strict();\n\n/**\n * Create run response schema\n */\nconst createRunResponseSchema = z.object({\n runId: z.string(),\n status: runStatusSchema,\n sandboxId: z.string().optional(),\n // Agent session id — eagerly created at run insertion, always present.\n sessionId: z.string().uuid(),\n output: z.string().optional(),\n error: z.string().optional(),\n executionTimeMs: z.number().optional(),\n createdAt: z.string().optional(),\n});\n\n/**\n * Get run response schema\n */\nconst getRunResponseSchema = z.object({\n runId: z.string(),\n agentComposeVersionId: z.string().nullable(),\n status: runStatusSchema,\n prompt: z.string(),\n appendSystemPrompt: z.string().nullable(),\n vars: z.record(z.string(), z.string()).optional(),\n sandboxId: z.string().optional(),\n result: z\n .object({\n output: z.string().optional(),\n executionTimeMs: z.number().optional(),\n agentSessionId: z.string().optional(),\n checkpointId: z.string().optional(),\n conversationId: z.string().optional(),\n })\n .passthrough()\n .optional(),\n error: z.string().optional(),\n createdAt: z.string(),\n startedAt: z.string().optional(),\n completedAt: z.string().optional(),\n});\n\n/**\n * Run event schema\n */\nconst runEventSchema = z.object({\n sequenceNumber: eventSequenceNumberSchema,\n eventType: z.string(),\n eventData: z.unknown(),\n createdAt: z.string(),\n});\n\n/**\n * Run result schema (present when status = 'completed')\n */\nconst runResultSchema = z.object({\n checkpointId: z.string(),\n agentSessionId: z.string(),\n conversationId: z.string(),\n artifact: z.record(z.string(), z.string()).optional(), // optional when run has no artifact\n volumes: z.record(z.string(), z.string()).optional(),\n});\n\n/**\n * Run state schema (replaces vm0_start/vm0_result/vm0_error events)\n */\nconst runStateSchema = z.object({\n status: runStatusSchema,\n result: runResultSchema.optional(),\n error: z.string().optional(),\n lastEventSequence: eventSequenceNumberSchema.optional(),\n});\n\n/**\n * Events response schema\n */\nconst eventsResponseSchema = z.object({\n events: z.array(runEventSchema),\n hasMore: z.boolean(),\n nextSequence: eventSequenceCursorSchema,\n run: runStateSchema,\n framework: z.string(),\n});\n\n/**\n * Run list item schema\n */\nconst runListItemSchema = z.object({\n id: z.string(),\n agentName: z.string(),\n status: runStatusSchema,\n prompt: z.string(),\n appendSystemPrompt: z.string().nullable(),\n createdAt: z.string(),\n startedAt: z.string().nullable(),\n});\n\n/**\n * Runs list response schema\n */\nconst runsListResponseSchema = z.object({\n runs: z.array(runListItemSchema),\n});\n\n/**\n * Runs main route contract (/api/agent/runs)\n * Handles GET list and POST create\n */\nexport const runsMainContract = c.router({\n /**\n * GET /api/agent/runs\n * List agent runs (pending and running by default)\n */\n list: {\n method: \"GET\",\n path: \"/api/agent/runs\",\n headers: authHeadersSchema,\n query: z.object({\n status: z.string().optional(), // comma-separated: \"pending,running\"\n agent: z.string().optional(), // agent name filter\n since: z.string().optional(), // ISO timestamp\n until: z.string().optional(), // ISO timestamp\n limit: z.coerce.number().min(1).max(100).default(50),\n }),\n responses: {\n 200: runsListResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"List agent runs\",\n },\n /**\n * POST /api/agent/runs\n * Create and execute a new agent run\n */\n create: {\n method: \"POST\",\n path: \"/api/agent/runs\",\n headers: authHeadersSchema,\n body: unifiedRunRequestSchema,\n responses: {\n 201: createRunResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 429: apiErrorSchema,\n 422: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Create and execute agent run\",\n },\n});\n\n/**\n * Runs by ID route contract (/api/agent/runs/[id])\n */\nexport const runsByIdContract = c.router({\n /**\n * GET /api/agent/runs/:id\n * Get agent run status and results\n */\n getById: {\n method: \"GET\",\n path: \"/api/agent/runs/:id\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.uuid(\"Run ID must be a valid UUID\"),\n }),\n responses: {\n 200: getRunResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get agent run by ID\",\n },\n});\n\n/**\n * Cancel run response schema\n */\nconst cancelRunResponseSchema = z.object({\n id: z.string(),\n status: z.literal(\"cancelled\"),\n message: z.string(),\n});\n\n/**\n * Runs cancel route contract (/api/agent/runs/[id]/cancel)\n */\nexport const runsCancelContract = c.router({\n /**\n * POST /api/agent/runs/:id/cancel\n * Cancel a pending or running run\n */\n cancel: {\n method: \"POST\",\n path: \"/api/agent/runs/:id/cancel\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.uuid(\"Run ID must be a valid UUID\"),\n }),\n body: z.undefined(),\n responses: {\n 200: cancelRunResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Cancel a pending or running run\",\n },\n});\n\n/**\n * Run events route contract (/api/agent/runs/[id]/events)\n */\nexport const runEventsContract = c.router({\n /**\n * GET /api/agent/runs/:id/events\n * Poll for agent run events with pagination\n */\n getEvents: {\n method: \"GET\",\n path: \"/api/agent/runs/:id/events\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.uuid(\"Run ID must be a valid UUID\"),\n }),\n query: z.object({\n since: eventSequenceCursorQuerySchema.default(-1),\n limit: z.coerce.number().int().min(1).max(100).default(100),\n }),\n responses: {\n 200: eventsResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get agent run events\",\n },\n});\n\n/**\n * Telemetry metric schema\n */\nconst telemetryMetricSchema = z.object({\n ts: z.string(),\n cpu: z.number(),\n mem_used: z.number(),\n mem_total: z.number(),\n disk_used: z.number(),\n disk_total: z.number(),\n});\n\ntype LogPaginationCursorKind = \"sequence\" | \"time\";\ntype LogPaginationOrder = \"asc\" | \"desc\";\n\ninterface LogPaginationQueryOptions {\n readonly cursorKind: LogPaginationCursorKind;\n readonly maxLimit?: number;\n readonly defaultLimit?: number;\n readonly defaultOrder?: LogPaginationOrder;\n}\n\nconst ISO_UTC_TIMESTAMP_PATTERN =\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.\\d{1,9})?Z$/;\n\nfunction rejectBlankQueryNumber(value: unknown): unknown {\n if (typeof value === \"string\" && value.trim().length === 0) {\n return Number.NaN;\n }\n\n return value;\n}\n\nconst safeIntegerQueryNumberSchema = z.preprocess(\n rejectBlankQueryNumber,\n z.coerce.number().refine(Number.isSafeInteger, {\n message: \"Value must be a safe integer\",\n }),\n);\n\nconst sequenceQueryNumberSchema = safeIntegerQueryNumberSchema\n .refine(\n (value) => {\n return value >= -1;\n },\n { message: \"Sequence cursor must be at least -1\" },\n )\n .refine(\n (value) => {\n return value <= MAX_EVENT_SEQUENCE_NUMBER;\n },\n { message: \"Sequence cursor is out of range\" },\n );\n\nfunction boundedIntegerQueryNumberSchema(min: number, max: number) {\n return z.preprocess(\n rejectBlankQueryNumber,\n z.coerce.number().int().min(min).max(max),\n );\n}\n\nfunction logSinceQuerySchema(cursorKind: LogPaginationCursorKind) {\n return cursorKind === \"time\"\n ? timestampQueryNumberSchema\n : sequenceQueryNumberSchema;\n}\n\nfunction exactUtcTimestamp(value: string): string | null {\n const match = ISO_UTC_TIMESTAMP_PATTERN.exec(value);\n if (!match) {\n return null;\n }\n\n const [, yearPart, monthPart, dayPart, hourPart, minutePart, secondPart] =\n match;\n if (\n yearPart === undefined ||\n monthPart === undefined ||\n dayPart === undefined ||\n hourPart === undefined ||\n minutePart === undefined ||\n secondPart === undefined\n ) {\n return null;\n }\n\n const year = Number(yearPart);\n const month = Number(monthPart);\n const day = Number(dayPart);\n const hour = Number(hourPart);\n const minute = Number(minutePart);\n const second = Number(secondPart);\n const date = new Date(0);\n date.setUTCFullYear(year, month - 1, day);\n date.setUTCHours(hour, minute, second, 0);\n\n return date.getUTCFullYear() === year &&\n date.getUTCMonth() === month - 1 &&\n date.getUTCDate() === day &&\n date.getUTCHours() === hour &&\n date.getUTCMinutes() === minute &&\n date.getUTCSeconds() === second\n ? value\n : null;\n}\n\nfunction timeCursorTimestampValue(rawValue: string): string | null {\n let decoded: string;\n try {\n decoded = decodeURIComponent(rawValue);\n } catch {\n return null;\n }\n return exactUtcTimestamp(decoded);\n}\n\nfunction hasControlCharacter(value: string): boolean {\n for (let index = 0; index < value.length; index++) {\n const code = value.charCodeAt(index);\n if (code <= 31 || code === 127) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction timeCursorTieBreakerValue(rawValue: string): string | null {\n let decoded: string;\n try {\n decoded = decodeURIComponent(rawValue);\n } catch {\n return null;\n }\n\n if (decoded.length === 0 || decoded.length > 2048) {\n return null;\n }\n\n return hasControlCharacter(decoded) ? null : decoded;\n}\n\ntype ParsedLogCursor =\n | {\n readonly kind: \"sequence\";\n readonly order: LogPaginationOrder;\n readonly value: number;\n }\n | {\n readonly kind: \"time\";\n readonly order: LogPaginationOrder;\n readonly timestamp: string;\n readonly tieBreaker: string;\n };\n\nfunction parseLogCursor(cursor: string): ParsedLogCursor | null {\n const timeMatch = /^time:(asc|desc):([^:]+):(.+)$/.exec(cursor);\n if (timeMatch) {\n const order = timeMatch[1];\n const rawTimestamp = timeMatch[2];\n const rawTieBreaker = timeMatch[3];\n if (\n (order !== \"asc\" && order !== \"desc\") ||\n rawTimestamp === undefined ||\n rawTieBreaker === undefined\n ) {\n return null;\n }\n\n const timestamp = timeCursorTimestampValue(rawTimestamp);\n const tieBreaker = timeCursorTieBreakerValue(rawTieBreaker);\n return timestamp === null || tieBreaker === null\n ? null\n : { kind: \"time\", order, timestamp, tieBreaker };\n }\n\n const sequenceMatch = /^sequence:(asc|desc):(-?\\d+)$/.exec(cursor);\n if (!sequenceMatch) {\n return null;\n }\n\n const order = sequenceMatch[1];\n const rawValue = sequenceMatch[2];\n if ((order !== \"asc\" && order !== \"desc\") || rawValue === undefined) {\n return null;\n }\n\n if (!/^-?\\d+$/.test(rawValue)) {\n return null;\n }\n\n const value = Number(rawValue);\n if (!Number.isSafeInteger(value)) {\n return null;\n }\n\n return { kind: \"sequence\", order, value };\n}\n\nfunction sequenceCursorOutOfRange(cursor: ParsedLogCursor): boolean {\n return (\n cursor.kind === \"sequence\" &&\n (cursor.value < -1 || cursor.value > MAX_EVENT_SEQUENCE_NUMBER)\n );\n}\n\nexport function createLogPaginationQuerySchema(\n options: LogPaginationQueryOptions,\n) {\n return z\n .object({\n since: logSinceQuerySchema(options.cursorKind).optional(),\n sinceTime: timestampQueryNumberSchema.optional(),\n cursor: z.string().min(1).optional(),\n limit: z\n .preprocess(\n rejectBlankQueryNumber,\n z.coerce\n .number()\n .int()\n .min(1)\n .max(options.maxLimit ?? 100),\n )\n .default(options.defaultLimit ?? 5),\n order: z.enum([\"asc\", \"desc\"]).default(options.defaultOrder ?? \"desc\"),\n })\n .superRefine((query, ctx) => {\n if (!query.cursor) {\n return;\n }\n\n const cursor = parseLogCursor(query.cursor);\n if (!cursor) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"cursor\"],\n message: \"Cursor is malformed\",\n });\n return;\n }\n\n if (cursor.kind !== options.cursorKind) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"cursor\"],\n message: `Cursor must be a ${options.cursorKind} cursor`,\n });\n }\n\n if (cursor.order !== query.order) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"cursor\"],\n message: \"Cursor order must match query order\",\n });\n }\n\n if (sequenceCursorOutOfRange(cursor)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"cursor\"],\n message: \"Sequence cursor is out of range\",\n });\n }\n });\n}\n\nconst timeLogPaginationQuerySchema = createLogPaginationQuerySchema({\n cursorKind: \"time\",\n});\n\n/**\n * System log response schema\n */\nconst systemLogResponseSchema = z.object({\n systemLog: z.string(),\n hasMore: z.boolean(),\n nextCursor: z.string().nullable().optional(),\n});\n\n/**\n * Metrics response schema\n */\nconst metricsResponseSchema = z.object({\n metrics: z.array(telemetryMetricSchema),\n hasMore: z.boolean(),\n nextCursor: z.string().nullable().optional(),\n});\n\n/**\n * Agent events response schema (for logs command)\n */\nconst agentEventsResponseSchema = z.object({\n events: z.array(runEventSchema),\n hasMore: z.boolean(),\n nextCursor: z.string().nullable().optional(),\n framework: z.string(),\n});\n\n/**\n * Network log action semantics:\n * ALLOW means the request was allowed to continue.\n * DENY means network policy denied the request.\n * BLOCK means vm0/proxy/auth/preconditions blocked the request locally.\n */\nconst networkLogActionSchema = z.enum([\"ALLOW\", \"DENY\", \"BLOCK\"]);\n\n/**\n * Network log entry schema.\n * [NETWORK_LOG_FIELDS] — keep in sync with all network log schemas\n */\nconst networkLogEntrySchema = z.object({\n timestamp: z.string(),\n type: z.string().optional(),\n action: networkLogActionSchema.optional(),\n host: z.string().optional(),\n port: z.number().optional(),\n method: z.string().optional(),\n url: z.string().optional(),\n status: z.number().optional(),\n latency_ms: z.number().optional(),\n request_size: z.number().optional(),\n response_size: z.number().optional(),\n browser_user_agent: z.boolean().optional(),\n dns_event: z.string().optional(),\n dns_query_type: z.string().optional(),\n dns_result: z.string().optional(),\n dns_serial: z.string().optional(),\n firewall_base: z.string().optional(),\n firewall_name: z.string().optional(),\n firewall_permission: z.string().optional(),\n firewall_rule_match: z.string().optional(),\n firewall_params: z.record(z.string(), z.string()).optional(),\n firewall_billable: z.boolean().optional(),\n firewall_error: z.string().optional(),\n upstream_binding_reason: z.string().optional(),\n upstream_binding_trusted_host: z.string().optional(),\n upstream_binding_request_host: z.string().optional(),\n upstream_binding_request_port: z.number().optional(),\n upstream_binding_server_connected: z.boolean().optional(),\n upstream_binding_server_address: z.string().optional(),\n upstream_binding_server_peername: z.string().optional(),\n upstream_binding_server_sockname: z.string().optional(),\n upstream_binding_client_sockname: z.string().optional(),\n upstream_binding_server_id: z.string().optional(),\n upstream_binding_client_id: z.string().optional(),\n upstream_binding_direct_binding_present: z.boolean().optional(),\n upstream_binding_direct_binding_host: z.string().optional(),\n upstream_binding_direct_binding_port: z.number().optional(),\n upstream_binding_direct_binding_kinds: z.string().optional(),\n upstream_binding_client_binding_count: z.number().optional(),\n upstream_binding_client_binding_match: z.boolean().optional(),\n upstream_binding_client_binding_endpoint_match: z.boolean().optional(),\n upstream_binding_client_binding_hosts: z.string().optional(),\n connector_diagnostic_type: z.string().optional(),\n connector_diagnostic_reason: z.string().optional(),\n connector_diagnostic_env_names: z.array(z.string()).optional(),\n connector_diagnostic_base: z.string().optional(),\n connector_route_reason: z.string().optional(),\n connector_route_candidates: z.array(z.string()).optional(),\n auth_resolved_secrets: z.array(z.string()).optional(),\n auth_refreshed_connectors: z.array(z.string()).optional(),\n auth_refreshed_secrets: z.array(z.string()).optional(),\n auth_cache_hit: z.boolean().optional(),\n auth_url_rewrite: z.boolean().optional(),\n error: z.string().optional(),\n // Capture-only fields (opt-in via captureNetworkBodies)\n request_headers: z.record(z.string(), z.string()).optional(),\n request_body: z.string().optional(),\n request_body_encoding: z.enum([\"utf-8\", \"base64\", \"binary\"]).optional(),\n request_body_truncated: z.boolean().optional(),\n response_headers: z.record(z.string(), z.string()).optional(),\n response_body: z.string().optional(),\n response_body_encoding: z.enum([\"utf-8\", \"base64\", \"binary\"]).optional(),\n response_body_truncated: z.boolean().optional(),\n});\n\n/**\n * Network logs response schema\n */\nconst networkLogsResponseSchema = z.object({\n networkLogs: z.array(networkLogEntrySchema),\n hasMore: z.boolean(),\n nextCursor: z.string().nullable().optional(),\n});\n\n/**\n * System log route contract (/api/agent/runs/[id]/telemetry/system-log)\n */\nexport const runSystemLogContract = c.router({\n /**\n * GET /api/agent/runs/:id/telemetry/system-log\n * Get system log with pagination\n */\n getSystemLog: {\n method: \"GET\",\n path: \"/api/agent/runs/:id/telemetry/system-log\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.uuid(\"Run ID must be a valid UUID\"),\n }),\n query: timeLogPaginationQuerySchema,\n responses: {\n 200: systemLogResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get system log with pagination\",\n },\n});\n\n/**\n * Metrics route contract (/api/agent/runs/[id]/telemetry/metrics)\n */\nexport const runMetricsContract = c.router({\n /**\n * GET /api/agent/runs/:id/telemetry/metrics\n * Get metrics with pagination\n */\n getMetrics: {\n method: \"GET\",\n path: \"/api/agent/runs/:id/telemetry/metrics\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.uuid(\"Run ID must be a valid UUID\"),\n }),\n query: timeLogPaginationQuerySchema,\n responses: {\n 200: metricsResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get metrics with pagination\",\n },\n});\n\nexport type RunsMainContract = typeof runsMainContract;\nexport type RunsByIdContract = typeof runsByIdContract;\nexport type RunsCancelContract = typeof runsCancelContract;\nexport type RunEventsContract = typeof runEventsContract;\nexport type RunSystemLogContract = typeof runSystemLogContract;\nexport type RunMetricsContract = typeof runMetricsContract;\n\n/**\n * Logs search result schema\n */\nconst searchResultSchema = z.object({\n runId: z.string(),\n agentName: z.string(),\n framework: z.string().nullable().optional(),\n matchedEvent: runEventSchema,\n contextBefore: z.array(runEventSchema),\n contextAfter: z.array(runEventSchema),\n});\n\n/**\n * Logs search response schema\n */\nconst logsSearchResponseSchema = z.object({\n results: z.array(searchResultSchema),\n hasMore: z.boolean(),\n});\n\nconst logsSearchQuerySchema = z.object({\n keyword: z.string().trim().min(1),\n agentId: z.string().uuid().optional(),\n runId: z.string().uuid().optional(),\n since: timestampQueryNumberSchema.optional(),\n limit: boundedIntegerQueryNumberSchema(1, 50).default(20),\n before: boundedIntegerQueryNumberSchema(0, 10).default(0),\n after: boundedIntegerQueryNumberSchema(0, 10).default(0),\n});\n\n/**\n * Queue entry schema — own entries have real data, others have null for private fields\n * Ownership is detected via runId: non-null = own entry, null = other user's entry\n */\nconst queueEntrySchema = z.object({\n position: z.number(),\n agentName: z.string().nullable(),\n agentDisplayName: z.string().nullable(),\n userEmail: z.string().nullable(),\n createdAt: z.string(),\n isOwner: z.boolean(),\n runId: z.string().nullable(),\n prompt: z.string().nullable(),\n triggerSource: triggerSourceSchema.nullable(),\n sessionLink: z.string().nullable(),\n});\n\n/**\n * Running task schema — shows currently executing runs\n */\nconst runningTaskSchema = z.object({\n runId: z.string().nullable(),\n agentName: z.string(),\n agentDisplayName: z.string().nullable(),\n userEmail: z.string(),\n startedAt: z.string().nullable(),\n isOwner: z.boolean(),\n});\n\n/**\n * Concurrency info schema\n */\nconst concurrencyInfoSchema = z.object({\n tier: orgTierSchema,\n limit: z.number(),\n active: z.number(),\n available: z.number(),\n});\n\n/**\n * Queue response schema\n */\nconst queueResponseSchema = z.object({\n concurrency: concurrencyInfoSchema,\n queue: z.array(queueEntrySchema),\n runningTasks: z.array(runningTaskSchema),\n estimatedTimePerRun: z.number().nullable(),\n});\n\n/**\n * Runs queue route contract (/api/agent/runs/queue)\n * Returns org-wide queue status with concurrency context\n */\nexport const runsQueueContract = c.router({\n /**\n * GET /api/agent/runs/queue\n * Get org run queue status including concurrency context and queued entries\n */\n getQueue: {\n method: \"GET\",\n path: \"/api/agent/runs/queue\",\n headers: authHeadersSchema,\n responses: {\n 200: queueResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Get org run queue status\",\n },\n});\n\nexport type RunsQueueContract = typeof runsQueueContract;\n\n// Export schemas for reuse\nexport {\n runStatusSchema,\n directRunModelProviderTypeSchema,\n unifiedRunRequestSchema,\n createRunResponseSchema,\n getRunResponseSchema,\n runListItemSchema,\n runsListResponseSchema,\n cancelRunResponseSchema,\n runEventSchema,\n runResultSchema,\n runStateSchema,\n eventsResponseSchema,\n telemetryMetricSchema,\n systemLogResponseSchema,\n metricsResponseSchema,\n agentEventsResponseSchema,\n networkLogActionSchema,\n networkLogEntrySchema,\n networkLogsResponseSchema,\n searchResultSchema,\n logsSearchQuerySchema,\n logsSearchResponseSchema,\n queueEntrySchema,\n runningTaskSchema,\n concurrencyInfoSchema,\n queueResponseSchema,\n};\n\n// Export inferred types for consumers\nexport type RunStatus = z.infer<typeof runStatusSchema>;\nexport type RunResult = z.infer<typeof runResultSchema>;\nexport type RunState = z.infer<typeof runStateSchema>;\nexport type RunEvent = z.infer<typeof runEventSchema>;\nexport type CreateRunResponse = z.infer<typeof createRunResponseSchema>;\nexport type GetRunResponse = z.infer<typeof getRunResponseSchema>;\nexport type RunListItem = z.infer<typeof runListItemSchema>;\nexport type RunsListResponse = z.infer<typeof runsListResponseSchema>;\nexport type CancelRunResponse = z.infer<typeof cancelRunResponseSchema>;\nexport type EventsResponse = z.infer<typeof eventsResponseSchema>;\nexport type TelemetryMetric = z.infer<typeof telemetryMetricSchema>;\nexport type SystemLogResponse = z.infer<typeof systemLogResponseSchema>;\nexport type MetricsResponse = z.infer<typeof metricsResponseSchema>;\nexport type AgentEventsResponse = z.infer<typeof agentEventsResponseSchema>;\nexport type NetworkLogAction = z.infer<typeof networkLogActionSchema>;\nexport type NetworkLogEntry = z.infer<typeof networkLogEntrySchema>;\nexport type NetworkLogsResponse = z.infer<typeof networkLogsResponseSchema>;\n/**\n * Axiom raw network event — the shape returned by `queryAxiom` for network logs.\n * Uses `_time` (Axiom's timestamp field) instead of `timestamp`, and includes\n * `runId`/`userId` used for Axiom filtering.\n */\nexport type AxiomNetworkEvent = Omit<NetworkLogEntry, \"timestamp\"> & {\n _time: string;\n runId: string;\n userId: string;\n};\nexport type SearchResult = z.infer<typeof searchResultSchema>;\nexport type LogsSearchResponse = z.infer<typeof logsSearchResponseSchema>;\nexport type QueueEntry = z.infer<typeof queueEntrySchema>;\nexport type RunningTask = z.infer<typeof runningTaskSchema>;\nexport type ConcurrencyInfo = z.infer<typeof concurrencyInfoSchema>;\nexport type QueueResponse = z.infer<typeof queueResponseSchema>;\n","import { z } from \"zod\";\n\nimport {\n canonicalizeFirewallDnsHostname,\n FIREWALL_HOSTNAME_POLICY_VERSION,\n} from \"./firewall-hostname-policy\";\nimport { hasRawWhitespace, hasUnsafeUrlCodepoint } from \"./firewall-url-utils\";\nimport { parseSegment, splitPathSegments } from \"./segment-parser\";\n\nconst HOST_DOT_EQUIVALENT_PATTERN = /[\\u3002\\uff0e\\uff61]/g;\nconst HOST_POLICY_HOST_FORBIDDEN_PATTERN = /[%*[\\]/?#@\\\\:{}<>^|]/u;\nconst DNS_HOST_FORBIDDEN_ASCII_CHARS = new Set([\"<\", \">\", \"[\", \"]\", \"^\", \"|\"]);\n\n/**\n * Proxy-side firewall configuration for token replacement.\n *\n * All firewall zod schemas are defined here as the single source of truth.\n * Other modules (composes.ts, runners.ts) import from here.\n */\n\n/**\n * Firewall permission schema — a named permission group with matching rules.\n * Rules use the format `METHOD /path` where path is relative to the API entry's base URL.\n */\nexport const firewallPermissionSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n rules: z.array(z.string()),\n});\n\nexport const firewallAwsSigv4AuthSchema = z\n .object({\n accessKeyId: z.string().min(1),\n secretAccessKey: z.string().min(1),\n sessionToken: z.string().min(1).optional(),\n })\n .strict();\n\nconst firewallAuthSchema = z\n .object({\n headers: z.record(z.string(), z.string()).optional(),\n base: z.string().min(1).optional(),\n query: z.record(z.string(), z.string()).optional(),\n awsSigv4: firewallAwsSigv4AuthSchema.optional(),\n })\n .superRefine((auth, ctx) => {\n if (!auth.awsSigv4) {\n return;\n }\n if (auth.headers && Object.keys(auth.headers).length > 0) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"headers\"],\n message: \"auth.headers cannot be combined with auth.awsSigv4\",\n });\n }\n if (auth.query && Object.keys(auth.query).length > 0) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"query\"],\n message: \"auth.query cannot be combined with auth.awsSigv4\",\n });\n }\n if (auth.base !== undefined) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"base\"],\n message: \"auth.base cannot be combined with auth.awsSigv4\",\n });\n }\n });\n\nfunction hostPolicyHostHasFixedOwnership(\n value: string,\n options: { readonly allowLeadingDot: boolean },\n): boolean {\n if (!options.allowLeadingDot && value.startsWith(\".\")) {\n return false;\n }\n const rawHost =\n options.allowLeadingDot && value.startsWith(\".\") ? value.slice(1) : value;\n const normalized = rawHost\n .replace(HOST_DOT_EQUIVALENT_PATTERN, \".\")\n .toLowerCase();\n const withoutTrailingDot = normalized.endsWith(\".\")\n ? normalized.slice(0, -1)\n : normalized;\n if (\n withoutTrailingDot === \"\" ||\n !isAscii(value) ||\n hasRawWhitespace(value) ||\n hasUnsafeUrlCodepoint(value) ||\n HOST_POLICY_HOST_FORBIDDEN_PATTERN.test(withoutTrailingDot)\n ) {\n return false;\n }\n if (\n isIpv4LiteralLike(withoutTrailingDot) ||\n parseIpv6Address(withoutTrailingDot)\n ) {\n return false;\n }\n const labels = withoutTrailingDot.split(\".\");\n return (\n labels.length >= 2 &&\n labels.every((label) => {\n return label !== \"\";\n })\n );\n}\n\nconst firewallProviderOwnedHostPolicySchema = z\n .object({\n kind: z.literal(\"providerOwned\"),\n exactHosts: z.array(z.string().min(1)).optional(),\n suffixes: z.array(z.string().min(1)).optional(),\n allowNonDefaultPort: z.boolean().optional(),\n })\n .strict()\n .superRefine((policy, ctx) => {\n if (\n (policy.exactHosts?.length ?? 0) === 0 &&\n (policy.suffixes?.length ?? 0) === 0\n ) {\n ctx.addIssue({\n code: \"custom\",\n message: \"providerOwned host policy requires exactHosts or suffixes\",\n });\n }\n for (const [index, exactHost] of (policy.exactHosts ?? []).entries()) {\n if (\n !hostPolicyHostHasFixedOwnership(exactHost, { allowLeadingDot: false })\n ) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"exactHosts\", index],\n message:\n \"providerOwned host policy exactHosts must be fixed hostnames with at least two labels\",\n });\n }\n }\n for (const [index, suffix] of (policy.suffixes ?? []).entries()) {\n if (!hostPolicyHostHasFixedOwnership(suffix, { allowLeadingDot: true })) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"suffixes\", index],\n message:\n \"providerOwned host policy suffixes must be fixed hostnames with at least two labels\",\n });\n }\n }\n });\n\nconst firewallPublicDestinationHostPolicySchema = z\n .object({\n kind: z.literal(\"publicDestination\"),\n })\n .strict();\n\nexport const firewallBaseHostPolicySchema = z.union([\n firewallProviderOwnedHostPolicySchema,\n firewallPublicDestinationHostPolicySchema,\n]);\n\n/**\n * Firewall API entry — a base URL with optional auth headers/query/base and permissions.\n * An entry without permissions is the owner's fallback when no concrete\n * permission route matches.\n */\nexport const firewallApiSchema = z.object({\n base: z.string(),\n hostPolicy: firewallBaseHostPolicySchema.optional(),\n auth: firewallAuthSchema,\n permissions: z.array(firewallPermissionSchema).optional(),\n});\n\n/**\n * A single firewall with its name and API entries.\n * Used in the expanded (post-compose) format.\n */\nexport const firewallSchema = z.object({\n name: z.string(),\n apis: z.array(firewallApiSchema),\n});\n\n/**\n * Firewall configuration for proxy-side token replacement.\n * Flat array of firewall entries: [{ name, apis }]\n */\nexport const firewallsSchema = z.array(firewallSchema);\n\nexport const executionFirewallBuiltinEntrySchema = z.object({\n kind: z.literal(\"builtin\"),\n name: z.string().min(1),\n baseUrlVars: z.record(z.string(), z.string()).optional(),\n});\n\nexport const executionFirewallInlineEntrySchema = z.object({\n kind: z.literal(\"inline\"),\n firewall: firewallSchema,\n});\n\nexport const executionFirewallEntrySchema = z.discriminatedUnion(\"kind\", [\n executionFirewallBuiltinEntrySchema,\n executionFirewallInlineEntrySchema,\n]);\n\nexport const executionFirewallsSchema = z.array(executionFirewallEntrySchema);\n\n/**\n * Reserved permission name used by user grant storage to represent the\n * unknown-endpoint policy row for a connector firewall.\n */\nexport const UNKNOWN_PERMISSION_GRANT = \"__unknown__\";\n\n/** Zod schema for validating firewall config definitions. */\nexport const firewallConfigSchema = z.object({\n name: z.string().min(1, \"Firewall name is required\"),\n description: z.string().optional(),\n apis: z\n .array(firewallApiSchema)\n .min(1, \"Firewall must have at least one API entry\"),\n placeholders: z.record(z.string(), z.string()).optional(),\n});\n\n/**\n * Firewall policy value — per-permission access control.\n * - \"allow\": always allow without prompting\n * - \"deny\": always deny\n * - \"ask\": prompt user for approval each time\n */\nexport const firewallPolicyValueSchema = z.enum([\"allow\", \"deny\", \"ask\"]);\nexport type FirewallPolicyValue = z.infer<typeof firewallPolicyValueSchema>;\n\n/**\n * Per-firewall permission policy: permission map + unknown endpoint handling.\n */\nexport const firewallPolicySchema = z.object({\n policies: z.record(z.string(), firewallPolicyValueSchema),\n unknownPolicy: firewallPolicyValueSchema.optional(),\n});\nexport type FirewallPolicy = z.infer<typeof firewallPolicySchema>;\n\n/**\n * Firewall policies — map of firewall name → firewall permission policy.\n * Example: { \"github\": { policies: { \"repo-read\": \"allow\" }, unknownPolicy: \"allow\" } }\n */\nexport const firewallPoliciesSchema = z.record(\n z.string(),\n firewallPolicySchema,\n);\nexport type FirewallPolicies = z.infer<typeof firewallPoliciesSchema>;\n\n/**\n * Per-firewall grant configuration — which permissions are granted and\n * what policy applies to unknown endpoints (not matching any permission rule).\n * Refs absent from the map are fully permissive (all granted + allow unknown).\n */\nexport const networkPolicySchema = z.object({\n allow: z.array(z.string()),\n deny: z.array(z.string()),\n ask: z.array(z.string()),\n unknownPolicy: firewallPolicyValueSchema,\n});\nexport type NetworkPolicy = z.infer<typeof networkPolicySchema>;\n\n/**\n * Network policies map — firewall name → runtime network policy config.\n * Example: { \"github\": { allow: [\"repo-read\"], deny: [\"admin\"], ask: [], unknownPolicy: \"deny\" } }\n */\nexport const networkPoliciesSchema = z.record(z.string(), networkPolicySchema);\nexport type NetworkPolicies = z.infer<typeof networkPoliciesSchema>;\n\n/** Inferred types */\nexport type FirewallApi = z.infer<typeof firewallApiSchema>;\nexport type FirewallBaseHostPolicy = z.infer<\n typeof firewallBaseHostPolicySchema\n>;\n\nexport class FirewallBaseUrlResolutionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"FirewallBaseUrlResolutionError\";\n }\n}\n\nexport type FirewallConfig = z.infer<typeof firewallConfigSchema>;\n/**\n * Extract the union of permission names from a firewall config object.\n * Requires the config to be declared with `as const satisfies FirewallConfig`\n * so that permission name strings are preserved as literal types.\n */\nexport type PermissionNamesOf<T extends FirewallConfig> =\n T[\"apis\"][number] extends infer Api\n ? Api extends { readonly permissions?: infer P }\n ? P extends ReadonlyArray<{ readonly name: infer N }>\n ? N extends string\n ? N\n : never\n : never\n : never\n : never;\nexport type Firewall = z.infer<typeof firewallSchema>;\nexport type Firewalls = z.infer<typeof firewallsSchema>;\nexport type ExecutionFirewallBuiltinEntry = z.infer<\n typeof executionFirewallBuiltinEntrySchema\n>;\nexport type ExecutionFirewallInlineEntry = z.infer<\n typeof executionFirewallInlineEntrySchema\n>;\nexport type ExecutionFirewallEntry = z.infer<\n typeof executionFirewallEntrySchema\n>;\nexport type ExecutionFirewalls = z.infer<typeof executionFirewallsSchema>;\n\n/**\n * Regex pattern matching `${{ secrets.XXX }}` references in auth header templates.\n * Tolerates optional whitespace inside braces: `${{ secrets.X }}` and `${{secrets.X}}`.\n */\nconst AUTH_SECRET_PATTERN =\n /\\$\\{\\{\\s*secrets\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\}\\}/g;\nconst AUTH_REFERENCE_PATTERN =\n /\\$\\{\\{\\s*(secrets|vars)\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\}\\}/g;\nconst AUTH_REFERENCE_PATTERN_G = new RegExp(AUTH_REFERENCE_PATTERN.source, \"g\");\nconst AUTH_REFERENCE_PREFIX_PATTERN = new RegExp(\n `^${AUTH_REFERENCE_PATTERN.source}`,\n);\nconst AUTH_TEMPLATE_START = \"${{\";\nconst AUTH_TEMPLATE_URL_PLACEHOLDER = \"placeholder\";\nconst IPV4_MAX_OCTET = 255;\nconst IPV4_OCTET_BASE = IPV4_MAX_OCTET + 1;\nconst IPV4_NON_PUBLIC_RANGES: readonly (readonly [number, number])[] = [\n [0x00000000, 0x00ffffff],\n [0x0a000000, 0x0affffff],\n [0x64400000, 0x647fffff],\n [0x7f000000, 0x7fffffff],\n [0xa9fe0000, 0xa9feffff],\n [0xac100000, 0xac1fffff],\n [0xc0000000, 0xc0000008],\n [0xc000000b, 0xc00000ff],\n [0xc0000200, 0xc00002ff],\n [0xc0586300, 0xc05863ff],\n [0xc0a80000, 0xc0a8ffff],\n [0xc6120000, 0xc613ffff],\n [0xc6336400, 0xc63364ff],\n [0xcb007100, 0xcb0071ff],\n [0xe0000000, 0xffffffff],\n];\n\nexport type FirewallTemplateReferenceNamespace = \"secrets\" | \"vars\";\n\nexport interface FirewallTemplateReferences {\n readonly secrets: readonly string[];\n readonly vars: readonly string[];\n}\n\nexport interface BasicAuthTemplateArg {\n readonly namespace?: FirewallTemplateReferenceNamespace;\n readonly key?: string;\n readonly literal?: string;\n}\n\nexport interface BasicAuthTemplateMatch {\n readonly start: number;\n readonly end: number;\n readonly first: BasicAuthTemplateArg;\n readonly second: BasicAuthTemplateArg;\n}\n\ninterface ParsedBasicArg {\n readonly arg: BasicAuthTemplateArg | null;\n readonly index: number;\n}\n\ninterface ParsedBasicTemplate {\n readonly match: BasicAuthTemplateMatch | null;\n readonly index: number;\n}\n\ninterface BasicAuthTemplateParserContext {\n readonly nextQuoteIndexes: Int32Array;\n readonly nextBackslashIndexes: Int32Array;\n readonly nextTemplateIndexes: Int32Array;\n}\n\nfunction isTemplateWhitespace(char: string): boolean {\n return (\n char === \" \" ||\n char === \"\\t\" ||\n char === \"\\n\" ||\n char === \"\\r\" ||\n char === \"\\f\" ||\n char === \"\\v\"\n );\n}\n\nfunction skipTemplateWhitespace(template: string, index: number): number {\n let nextIndex = index;\n while (\n nextIndex < template.length &&\n isTemplateWhitespace(template[nextIndex]!)\n ) {\n nextIndex += 1;\n }\n return nextIndex;\n}\n\nfunction isIdentifierStart(char: string): boolean {\n const code = char.charCodeAt(0);\n return (\n char === \"_\" || (code >= 65 && code <= 90) || (code >= 97 && code <= 122)\n );\n}\n\nfunction isIdentifierPart(char: string): boolean {\n const code = char.charCodeAt(0);\n return isIdentifierStart(char) || (code >= 48 && code <= 57);\n}\n\nfunction parseTemplateIdentifier(\n template: string,\n index: number,\n): { readonly value: string; readonly index: number } | null {\n if (index >= template.length || !isIdentifierStart(template[index]!)) {\n return null;\n }\n\n let nextIndex = index + 1;\n while (\n nextIndex < template.length &&\n isIdentifierPart(template[nextIndex]!)\n ) {\n nextIndex += 1;\n }\n return {\n value: template.slice(index, nextIndex),\n index: nextIndex,\n };\n}\n\nfunction createBasicAuthTemplateParserContext(\n template: string,\n): BasicAuthTemplateParserContext {\n const nextQuoteIndexes = new Int32Array(template.length + 1);\n const nextBackslashIndexes = new Int32Array(template.length + 1);\n const nextTemplateIndexes = new Int32Array(template.length + 1);\n let nextQuoteIndex = -1;\n let nextBackslashIndex = -1;\n let nextTemplateIndex = -1;\n nextQuoteIndexes[template.length] = nextQuoteIndex;\n nextBackslashIndexes[template.length] = nextBackslashIndex;\n nextTemplateIndexes[template.length] = nextTemplateIndex;\n\n for (let index = template.length - 1; index >= 0; index -= 1) {\n if (template[index] === '\"') {\n nextQuoteIndex = index;\n }\n if (template[index] === \"\\\\\") {\n nextBackslashIndex = index;\n }\n if (template.startsWith(\"${{\", index)) {\n nextTemplateIndex = index;\n }\n nextQuoteIndexes[index] = nextQuoteIndex;\n nextBackslashIndexes[index] = nextBackslashIndex;\n nextTemplateIndexes[index] = nextTemplateIndex;\n }\n\n return { nextQuoteIndexes, nextBackslashIndexes, nextTemplateIndexes };\n}\n\nfunction parseBasicAuthTemplateArg(\n context: BasicAuthTemplateParserContext,\n template: string,\n index: number,\n): ParsedBasicArg {\n let nextIndex = skipTemplateWhitespace(template, index);\n const char = template[nextIndex];\n if (char === \",\" || char === \")\") {\n return { arg: {}, index: nextIndex };\n }\n\n if (char === '\"') {\n const literalStart = nextIndex + 1;\n const quoteIndex = context.nextQuoteIndexes[literalStart] ?? -1;\n if (quoteIndex === -1) {\n const nestedTemplateStart =\n context.nextTemplateIndexes[literalStart] ?? -1;\n return {\n arg: null,\n index:\n nestedTemplateStart === -1 ? template.length : nestedTemplateStart,\n };\n }\n const escapeIndex = context.nextBackslashIndexes[literalStart] ?? -1;\n if (escapeIndex !== -1 && escapeIndex < quoteIndex) {\n const nestedTemplateStart =\n context.nextTemplateIndexes[literalStart] ?? -1;\n return {\n arg: null,\n index:\n nestedTemplateStart !== -1 && nestedTemplateStart < escapeIndex\n ? nestedTemplateStart\n : escapeIndex + 1,\n };\n }\n return {\n arg: { literal: template.slice(literalStart, quoteIndex) },\n index: quoteIndex + 1,\n };\n }\n\n let namespace: FirewallTemplateReferenceNamespace;\n if (template.startsWith(\"secrets.\", nextIndex)) {\n namespace = \"secrets\";\n nextIndex += \"secrets.\".length;\n } else if (template.startsWith(\"vars.\", nextIndex)) {\n namespace = \"vars\";\n nextIndex += \"vars.\".length;\n } else {\n return { arg: null, index: nextIndex };\n }\n\n const key = parseTemplateIdentifier(template, nextIndex);\n if (!key) {\n return { arg: null, index: nextIndex };\n }\n return {\n arg: { namespace, key: key.value },\n index: key.index,\n };\n}\n\nfunction parseBasicAuthTemplateAt(\n context: BasicAuthTemplateParserContext,\n template: string,\n start: number,\n): ParsedBasicTemplate {\n let index = start + \"${{\".length;\n index = skipTemplateWhitespace(template, index);\n if (!template.startsWith(\"basic(\", index)) {\n return { match: null, index: start + \"${{\".length };\n }\n index += \"basic(\".length;\n\n const first = parseBasicAuthTemplateArg(context, template, index);\n if (!first.arg) {\n return { match: null, index: first.index };\n }\n index = skipTemplateWhitespace(template, first.index);\n if (template[index] !== \",\") {\n return { match: null, index: Math.max(index + 1, first.index) };\n }\n index += 1;\n\n const second = parseBasicAuthTemplateArg(context, template, index);\n if (!second.arg) {\n return { match: null, index: second.index };\n }\n index = skipTemplateWhitespace(template, second.index);\n if (template[index] !== \")\") {\n return { match: null, index: Math.max(index + 1, second.index) };\n }\n index += 1;\n index = skipTemplateWhitespace(template, index);\n if (!template.startsWith(\"}}\", index)) {\n return { match: null, index: Math.max(index + 1, second.index) };\n }\n\n const end = index + \"}}\".length;\n return {\n match: {\n start,\n end,\n first: first.arg,\n second: second.arg,\n },\n index: end,\n };\n}\n\nfunction findNextBasicAuthTemplateStart(\n template: string,\n index: number,\n): number {\n let basicIndex = template.indexOf(\"basic(\", index);\n while (basicIndex !== -1) {\n let contentStart = basicIndex;\n while (\n contentStart > index &&\n isTemplateWhitespace(template[contentStart - 1]!)\n ) {\n contentStart -= 1;\n }\n\n const start = contentStart - \"${{\".length;\n if (start >= index && template.startsWith(\"${{\", start)) {\n return start;\n }\n\n basicIndex = template.indexOf(\"basic(\", basicIndex + \"basic(\".length);\n }\n return -1;\n}\n\n/**\n * Parse `${{ basic(username, password) }}` templates in linear time.\n * Each side is secrets.X, vars.X, \"literal\", or empty; comma is required.\n * Literal strings forbid `\"` and `\\`, and are not subject to simple template\n * resolution.\n */\nexport function parseBasicAuthTemplates(\n template: string,\n): readonly BasicAuthTemplateMatch[] {\n const matches: BasicAuthTemplateMatch[] = [];\n let start = findNextBasicAuthTemplateStart(template, 0);\n if (start === -1) {\n return matches;\n }\n\n const context = createBasicAuthTemplateParserContext(template);\n\n while (start !== -1) {\n const parsed = parseBasicAuthTemplateAt(context, template, start);\n if (parsed.match) {\n matches.push(parsed.match);\n start = findNextBasicAuthTemplateStart(template, parsed.index);\n } else {\n start = findNextBasicAuthTemplateStart(\n template,\n Math.max(parsed.index, start + \"${{\".length),\n );\n }\n }\n\n return matches;\n}\n\nexport function replaceBasicAuthTemplates(\n template: string,\n replacer: (match: BasicAuthTemplateMatch) => string,\n): string {\n const matches = parseBasicAuthTemplates(template);\n if (matches.length === 0) {\n return template;\n }\n\n const parts: string[] = [];\n let lastIndex = 0;\n for (const match of matches) {\n parts.push(template.slice(lastIndex, match.start), replacer(match));\n lastIndex = match.end;\n }\n parts.push(template.slice(lastIndex));\n return parts.join(\"\");\n}\n\nfunction forEachSimpleAuthReference(\n template: string,\n basicMatches: readonly BasicAuthTemplateMatch[],\n callback: (namespace: string, name: string) => void,\n): void {\n let basicMatchIndex = 0;\n\n for (const match of template.matchAll(AUTH_REFERENCE_PATTERN)) {\n if (!match[1] || !match[2] || match.index === undefined) {\n continue;\n }\n\n while (\n basicMatchIndex < basicMatches.length &&\n basicMatches[basicMatchIndex]!.end <= match.index\n ) {\n basicMatchIndex += 1;\n }\n\n const basicMatch = basicMatches[basicMatchIndex];\n if (\n basicMatch &&\n match.index >= basicMatch.start &&\n match.index < basicMatch.end\n ) {\n continue;\n }\n\n callback(match[1], match[2]);\n }\n}\n\n/**\n * Extract all secret names referenced in firewall rule auth header templates.\n * Handles both simple `${{ secrets.X }}` and `${{ basic(...) }}` templates.\n * E.g., `Bearer ${{ secrets.GITHUB_TOKEN }}` → `[\"GITHUB_TOKEN\"]`\n */\nexport function extractSecretNamesFromApis(\n apis: FirewallConfig[\"apis\"],\n): string[] {\n const names = new Set<string>();\n for (const entry of apis) {\n for (const value of Object.values(entry.auth.headers ?? {})) {\n const basicMatches = parseBasicAuthTemplates(value);\n forEachSimpleAuthReference(value, basicMatches, (namespace, name) => {\n if (namespace === \"secrets\") {\n names.add(name);\n }\n });\n // basic() args may reference secrets, vars, or be string literals;\n // only collect secrets here (vars don't need placeholders, literals\n // are baked into the config).\n for (const match of basicMatches) {\n if (match.first.namespace === \"secrets\" && match.first.key) {\n names.add(match.first.key);\n }\n if (match.second.namespace === \"secrets\" && match.second.key) {\n names.add(match.second.key);\n }\n }\n }\n // Scan auth.base for secret references (webhook-url connectors).\n // Only simple ${{ secrets.X }} — basic() makes no sense in a URL template.\n if (entry.auth.base) {\n for (const match of entry.auth.base.matchAll(AUTH_SECRET_PATTERN)) {\n names.add(match[1]!);\n }\n }\n // Scan auth.query for secret references (query-param auth connectors).\n // Only simple ${{ secrets.X }} — basic() makes no sense in query params.\n if (entry.auth.query) {\n for (const value of Object.values(entry.auth.query)) {\n for (const match of value.matchAll(AUTH_SECRET_PATTERN)) {\n names.add(match[1]!);\n }\n }\n }\n if (entry.auth.awsSigv4) {\n for (const value of Object.values(entry.auth.awsSigv4)) {\n if (!value) continue;\n for (const match of value.matchAll(AUTH_SECRET_PATTERN)) {\n names.add(match[1]!);\n }\n }\n }\n }\n return [...names];\n}\n\nfunction collectFirewallTemplateReferencesFromValue(\n template: string,\n references: { secrets: Set<string>; vars: Set<string> },\n): void {\n const basicMatches = parseBasicAuthTemplates(template);\n const addReference = (namespace: string, name: string): void => {\n if (namespace === \"secrets\") {\n references.secrets.add(name);\n } else if (namespace === \"vars\") {\n references.vars.add(name);\n }\n };\n\n forEachSimpleAuthReference(template, basicMatches, addReference);\n for (const match of basicMatches) {\n if (match.first.namespace && match.first.key) {\n addReference(match.first.namespace, match.first.key);\n }\n if (match.second.namespace && match.second.key) {\n addReference(match.second.namespace, match.second.key);\n }\n }\n}\n\nexport function extractFirewallTemplateReferences(\n apis: FirewallConfig[\"apis\"],\n): FirewallTemplateReferences {\n const references = {\n secrets: new Set<string>(),\n vars: new Set<string>(),\n };\n\n for (const entry of apis) {\n for (const value of Object.values(entry.auth.headers ?? {})) {\n collectFirewallTemplateReferencesFromValue(value, references);\n }\n if (entry.auth.base) {\n collectFirewallTemplateReferencesFromValue(entry.auth.base, references);\n }\n for (const value of Object.values(entry.auth.query ?? {})) {\n collectFirewallTemplateReferencesFromValue(value, references);\n }\n for (const value of Object.values(entry.auth.awsSigv4 ?? {})) {\n if (value) {\n collectFirewallTemplateReferencesFromValue(value, references);\n }\n }\n }\n\n return {\n secrets: [...references.secrets],\n vars: [...references.vars],\n };\n}\n\n/**\n * Regex pattern matching `${{ vars.XXX }}` references in base URL templates.\n */\nconst BASE_URL_VARS_PATTERN = /\\$\\{\\{\\s*vars\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\}\\}/;\nconst BASE_URL_VARS_PATTERN_G = new RegExp(BASE_URL_VARS_PATTERN.source, \"g\");\nconst URL_COMPONENT_DELIMITER_PATTERN = /[/?#]/;\nconst AUTHORITY_VAR_STRUCTURE_CHARS = new Set([\"/\", \"?\", \"#\", \"@\", \"\\\\\"]);\nconst AUTHORITY_FRAGMENT_VAR_STRUCTURE_CHARS = new Set([\n \"/\",\n \":\",\n \"?\",\n \"#\",\n \"@\",\n \"\\\\\",\n]);\nconst PERCENT_DECODED_BOUNDARY_CHARS = new Set([\"/\", \":\", \"?\", \"#\", \"@\", \"\\\\\"]);\nconst BASE_URL_VAR_PARAMETER_CHARS = new Set([\"{\", \"}\"]);\nconst PATH_VAR_STRUCTURE_CHARS = new Set([\"/\", \"?\", \"#\", \"\\\\\"]);\nconst PORT_VAR_PATTERN = /^[0-9]+$/;\nconst MAX_PATH_PERCENT_DECODE_PASSES = 5;\n\n/**\n * Check if a base URL contains `${{ vars.X }}` template references.\n */\nexport function hasBaseUrlVars(base: string): boolean {\n return BASE_URL_VARS_PATTERN.test(base);\n}\n\nexport function extractBaseUrlVarNames(base: string): string[] {\n const names = new Set<string>();\n for (const match of base.matchAll(BASE_URL_VARS_PATTERN_G)) {\n names.add(match[1]!);\n }\n return [...names];\n}\n\nfunction baseUrlVariableError(\n base: string,\n serviceName: string,\n name: string,\n detail: string,\n): Error {\n return new Error(\n errMsg(base, serviceName, `base URL variable \"${name}\" ${detail}`),\n );\n}\n\nfunction validateBaseUrlVariableCommonSyntax({\n base,\n serviceName,\n name,\n value,\n}: {\n readonly base: string;\n readonly serviceName: string;\n readonly name: string;\n readonly value: string;\n}): void {\n if (WHITESPACE_PATTERN.test(value)) {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"must not contain whitespace\",\n );\n }\n if (hasUnsafeUrlCodepoint(value)) {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"must not contain control characters or invalid Unicode\",\n );\n }\n for (const char of value) {\n if (BASE_URL_VAR_PARAMETER_CHARS.has(char)) {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"must not contain firewall parameter syntax\",\n );\n }\n }\n}\n\nfunction pathPartDotPrefix(part: string): string {\n return part.split(\";\", 1)[0]!;\n}\n\nfunction pathPartIsDotSegment(part: string): boolean {\n const dotPrefix = pathPartDotPrefix(part);\n return dotPrefix === \".\" || dotPrefix === \"..\";\n}\n\nfunction pathSegmentContainsDotPathPart(segment: string): boolean {\n if (pathPartIsDotSegment(segment)) return true;\n return segment.split(\"/\").some((part) => {\n return pathPartIsDotSegment(part);\n });\n}\n\nfunction pathSegmentHasUnsafeSyntaxParts(\n segment: string,\n rejectPathStructure: boolean,\n): boolean {\n if (hasUnsafeUrlCodepoint(segment)) return true;\n if (segment.includes(\"\\\\\")) return true;\n if (pathSegmentContainsDotPathPart(segment)) return true;\n if (!rejectPathStructure) return false;\n for (const char of segment) {\n if (PATH_VAR_STRUCTURE_CHARS.has(char)) return true;\n }\n return false;\n}\n\nfunction normalizedPathSegmentHasUnsafeSyntax(\n segment: string,\n rejectPathStructure: boolean,\n): boolean {\n const normalized = segment.normalize(\"NFKC\");\n if (normalized === segment) return false;\n if (normalized.includes(\"%\")) return true;\n return pathSegmentHasUnsafeSyntaxParts(normalized, rejectPathStructure);\n}\n\nfunction percentDecodePathSegment(\n segment: string,\n rejectPathStructure: boolean,\n): string | null {\n if (!segment.includes(\"%\")) return segment;\n for (let i = 0; i < segment.length; i += 1) {\n if (segment[i] !== \"%\") continue;\n if (\n i + 2 >= segment.length ||\n !isHexDigit(segment[i + 1]!) ||\n !isHexDigit(segment[i + 2]!)\n ) {\n return null;\n }\n }\n\n let decoded: string;\n try {\n decoded = decodeURIComponent(segment);\n } catch {\n return null;\n }\n if (rejectPathStructure) {\n for (const char of decoded) {\n if (\n PATH_VAR_STRUCTURE_CHARS.has(char) ||\n WHITESPACE_PATTERN.test(char) ||\n UNICODE_CONTROL_PATTERN.test(char)\n ) {\n return null;\n }\n }\n }\n return decoded;\n}\n\nfunction pathSegmentHasUnsafeSyntax(\n segment: string,\n rejectPathStructure: boolean,\n): boolean {\n let current = segment;\n for (let pass = 0; pass < MAX_PATH_PERCENT_DECODE_PASSES; pass += 1) {\n if (\n pathSegmentHasUnsafeSyntaxParts(current, rejectPathStructure) ||\n normalizedPathSegmentHasUnsafeSyntax(current, rejectPathStructure)\n ) {\n return true;\n }\n const decoded = percentDecodePathSegment(current, rejectPathStructure);\n if (decoded === null) return true;\n if (decoded === current) return false;\n current = decoded;\n }\n\n if (\n pathSegmentHasUnsafeSyntaxParts(current, rejectPathStructure) ||\n normalizedPathSegmentHasUnsafeSyntax(current, rejectPathStructure)\n ) {\n return true;\n }\n const decoded = percentDecodePathSegment(current, rejectPathStructure);\n return decoded === null || decoded !== current;\n}\n\nexport function hasUnsafeFirewallPath(path: string): boolean {\n return path.split(\"/\").some((segment) => {\n return pathSegmentHasUnsafeSyntax(segment, false);\n });\n}\n\nfunction validateBaseUrlVariablePercentEncoding({\n base,\n serviceName,\n name,\n value,\n structureChars,\n}: {\n readonly base: string;\n readonly serviceName: string;\n readonly name: string;\n readonly value: string;\n readonly structureChars: ReadonlySet<string>;\n}): string {\n for (let i = 0; i < value.length; i += 1) {\n if (value[i] !== \"%\") {\n continue;\n }\n if (\n i + 2 >= value.length ||\n !isHexDigit(value[i + 1]!) ||\n !isHexDigit(value[i + 2]!)\n ) {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"has invalid percent encoding\",\n );\n }\n\n let end = i;\n while (\n end + 2 < value.length &&\n value[end] === \"%\" &&\n isHexDigit(value[end + 1]!) &&\n isHexDigit(value[end + 2]!)\n ) {\n end += 3;\n }\n\n let decoded: string;\n try {\n decoded = decodeURIComponent(value.slice(i, end));\n } catch {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"has invalid percent encoding\",\n );\n }\n for (const char of decoded) {\n if (\n structureChars.has(char) ||\n WHITESPACE_PATTERN.test(char) ||\n UNICODE_CONTROL_PATTERN.test(char)\n ) {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"must not contain encoded URL structure\",\n );\n }\n }\n i = end - 1;\n }\n if (!value.includes(\"%\")) {\n return value;\n }\n try {\n return decodeURIComponent(value);\n } catch {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"has invalid percent encoding\",\n );\n }\n}\n\nfunction validateBaseUrlPathSegment({\n base,\n serviceName,\n name,\n segment,\n}: {\n readonly base: string;\n readonly serviceName: string;\n readonly name: string;\n readonly segment: string;\n}): void {\n if (pathSegmentHasUnsafeSyntax(segment, true)) {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"must not contain unsafe path segments\",\n );\n }\n}\n\nfunction rawPathFromBaseUrl(value: string): string {\n const schemeEnd = value.indexOf(\"://\");\n if (schemeEnd === -1) return \"\";\n const afterScheme = value.slice(schemeEnd + 3);\n const pathStart = afterScheme.search(/[/?#]/);\n if (pathStart === -1 || afterScheme[pathStart] !== \"/\") return \"\";\n const pathAndAfter = afterScheme.slice(pathStart);\n const pathEnd = pathAndAfter.search(/[?#]/);\n return pathEnd === -1 ? pathAndAfter : pathAndAfter.slice(0, pathEnd);\n}\n\nfunction validateBaseUrlPrefixVariable({\n base,\n serviceName,\n name,\n value,\n}: {\n readonly base: string;\n readonly serviceName: string;\n readonly name: string;\n readonly value: string;\n}): void {\n const rawPath = rawPathFromBaseUrl(value);\n if (hasUnsafeFirewallPath(rawPath)) {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"must not contain unsafe path segments before a fixed path suffix\",\n );\n }\n const canonicalValue = canonicalizeFirewallBaseUrl(value, serviceName);\n const url = urlForCanonicalBaseSyntax(canonicalValue);\n if (url.search || url.hash) {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"must not contain query or fragment before a fixed path suffix\",\n );\n }\n}\n\nfunction validateResolvedBaseUrlPathSafety(\n templateBase: string,\n serviceName: string,\n resolved: string,\n): void {\n const rawPath = rawPathFromBaseUrl(resolved);\n for (const segment of rawPath.split(\"/\")) {\n if (pathSegmentHasUnsafeSyntax(segment, false)) {\n throw new Error(\n errMsg(\n templateBase,\n serviceName,\n \"resolved base URL must not contain unsafe path segments\",\n ),\n );\n }\n }\n}\n\nfunction validateBaseUrlAuthorityVariable({\n base,\n serviceName,\n name,\n value,\n}: {\n readonly base: string;\n readonly serviceName: string;\n readonly name: string;\n readonly value: string;\n}): void {\n for (const char of value) {\n if (AUTHORITY_VAR_STRUCTURE_CHARS.has(char)) {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"must not introduce URL structure\",\n );\n }\n }\n validateBaseUrlVariablePercentEncoding({\n base,\n serviceName,\n name,\n value,\n structureChars: PERCENT_DECODED_BOUNDARY_CHARS,\n });\n validateBaseUrl(`https://${value}`, serviceName);\n}\n\nfunction validateBaseUrlAuthorityFragmentVariable({\n base,\n serviceName,\n name,\n value,\n}: {\n readonly base: string;\n readonly serviceName: string;\n readonly name: string;\n readonly value: string;\n}): void {\n for (const char of value) {\n if (AUTHORITY_FRAGMENT_VAR_STRUCTURE_CHARS.has(char)) {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"must not introduce URL structure\",\n );\n }\n }\n validateBaseUrlVariablePercentEncoding({\n base,\n serviceName,\n name,\n value,\n structureChars: PERCENT_DECODED_BOUNDARY_CHARS,\n });\n}\n\nfunction validateBaseUrlPortVariable({\n base,\n serviceName,\n name,\n value,\n}: {\n readonly base: string;\n readonly serviceName: string;\n readonly name: string;\n readonly value: string;\n}): void {\n if (!PORT_VAR_PATTERN.test(value)) {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"must be a numeric URL port\",\n );\n }\n}\n\nfunction validateBaseUrlPathVariable({\n base,\n serviceName,\n name,\n value,\n prefix,\n suffix,\n}: {\n readonly base: string;\n readonly serviceName: string;\n readonly name: string;\n readonly value: string;\n readonly prefix: string;\n readonly suffix: string;\n}): void {\n for (const char of value) {\n if (PATH_VAR_STRUCTURE_CHARS.has(char)) {\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"must not introduce path structure\",\n );\n }\n }\n const decoded = validateBaseUrlVariablePercentEncoding({\n base,\n serviceName,\n name,\n value,\n structureChars: PATH_VAR_STRUCTURE_CHARS,\n });\n const prefixSegment = prefix.slice(prefix.lastIndexOf(\"/\") + 1);\n const suffixSegmentEnd = suffix.search(URL_COMPONENT_DELIMITER_PATTERN);\n const suffixSegment =\n suffixSegmentEnd === -1 ? suffix : suffix.slice(0, suffixSegmentEnd);\n validateBaseUrlPathSegment({\n base,\n serviceName,\n name,\n segment: `${prefixSegment}${decoded}${suffixSegment}`,\n });\n}\n\nfunction prefixIsInsideAuthority(prefix: string): boolean {\n const schemeEnd = prefix.indexOf(\"://\");\n if (schemeEnd === -1) return false;\n const afterScheme = prefix.slice(schemeEnd + 3);\n return !URL_COMPONENT_DELIMITER_PATTERN.test(afterScheme);\n}\n\nfunction prefixIsInsidePath(prefix: string): boolean {\n const schemeEnd = prefix.indexOf(\"://\");\n if (schemeEnd === -1) return false;\n const afterScheme = prefix.slice(schemeEnd + 3);\n if (afterScheme.includes(\"?\") || afterScheme.includes(\"#\")) return false;\n return afterScheme.includes(\"/\");\n}\n\nfunction suffixAuthorityPrefix(suffix: string): string {\n const delimiterIndex = suffix.search(URL_COMPONENT_DELIMITER_PATTERN);\n return delimiterIndex === -1 ? suffix : suffix.slice(0, delimiterIndex);\n}\n\nfunction authoritySuffixHasFixedHostOwnership(\n authoritySuffix: string,\n): boolean {\n const hostSuffix = authoritySuffix\n .replace(/^[.]+/u, \"\")\n .replace(/:\\d*$/u, \"\");\n const labels = hostSuffix.split(\".\").filter((label) => {\n return label !== \"\";\n });\n return labels.length >= 2;\n}\n\nfunction validateBaseUrlTemplateVariable({\n base,\n serviceName,\n name,\n value,\n prefix,\n suffix,\n}: {\n readonly base: string;\n readonly serviceName: string;\n readonly name: string;\n readonly value: string;\n readonly prefix: string;\n readonly suffix: string;\n}): void {\n validateBaseUrlVariableCommonSyntax({ base, serviceName, name, value });\n if (prefix === \"\" && suffix === \"\") {\n return;\n }\n if (prefix === \"\" && suffix.startsWith(\"/\")) {\n validateBaseUrlPrefixVariable({ base, serviceName, name, value });\n return;\n }\n if (prefix.endsWith(\"://\") && (suffix === \"\" || suffix.startsWith(\"/\"))) {\n validateBaseUrlAuthorityVariable({ base, serviceName, name, value });\n return;\n }\n if (\n prefixIsInsideAuthority(prefix) &&\n prefix.endsWith(\":\") &&\n (suffix === \"\" || suffix.startsWith(\"/\"))\n ) {\n validateBaseUrlPortVariable({ base, serviceName, name, value });\n return;\n }\n if (prefixIsInsideAuthority(prefix)) {\n validateBaseUrlAuthorityFragmentVariable({\n base,\n serviceName,\n name,\n value,\n });\n return;\n }\n if (prefixIsInsidePath(prefix)) {\n validateBaseUrlPathVariable({\n base,\n serviceName,\n name,\n value,\n prefix,\n suffix,\n });\n return;\n }\n throw baseUrlVariableError(\n base,\n serviceName,\n name,\n \"is used in an unsupported base URL template position\",\n );\n}\n\nexport function firewallAuthInjectsCredentials(\n auth: FirewallApi[\"auth\"],\n): boolean {\n return (\n Object.keys(auth.headers ?? {}).length > 0 ||\n Object.keys(auth.query ?? {}).length > 0 ||\n Object.keys(auth.awsSigv4 ?? {}).length > 0 ||\n (typeof auth.base === \"string\" && auth.base.length > 0)\n );\n}\n\nfunction baseUrlScheme(base: string): string {\n const schemeEnd = base.indexOf(\"://\");\n if (schemeEnd === -1) return \"\";\n return base.slice(0, schemeEnd).toLowerCase();\n}\n\nexport function firewallBaseUrlTemplateNeedsHostPolicy(base: string): boolean {\n if (!hasBaseUrlVars(base)) return false;\n\n for (const match of base.matchAll(BASE_URL_VARS_PATTERN_G)) {\n const fullMatch = match[0];\n const matchIndex = match.index!;\n const prefix = base.slice(0, matchIndex);\n const suffix = base.slice(matchIndex + fullMatch.length);\n if (prefix === \"\" && (suffix === \"\" || suffix.startsWith(\"/\"))) {\n return true;\n }\n if (prefix.endsWith(\"://\")) {\n const authoritySuffix = suffixAuthorityPrefix(suffix);\n if (\n authoritySuffix === \"\" ||\n !authoritySuffixHasFixedHostOwnership(authoritySuffix)\n ) {\n return true;\n }\n }\n if (prefixIsInsideAuthority(prefix) && !prefix.endsWith(\":\")) {\n const authoritySuffix = suffixAuthorityPrefix(suffix);\n if (\n authoritySuffix === \"\" ||\n !authoritySuffixHasFixedHostOwnership(authoritySuffix)\n ) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction validateCredentialedBaseUrlTransportValue(\n base: string,\n serviceName: string,\n credentialed: boolean,\n): void {\n if (!credentialed) return;\n if (baseUrlScheme(base) === REQUIRED_AUTH_BASE_URL_SCHEME) return;\n throw new Error(\n `Invalid base URL \"${base}\" in firewall \"${serviceName}\": credentialed base URL must use https`,\n );\n}\n\nfunction normalizeHostPolicyHostname(hostname: string): string {\n let normalized = hostname\n .replace(HOST_DOT_EQUIVALENT_PATTERN, \".\")\n .toLowerCase();\n if (normalized.endsWith(\".\")) {\n normalized = normalized.slice(0, -1);\n }\n return normalized;\n}\n\nfunction normalizeHostPolicySuffix(suffix: string): string {\n const withoutLeadingDot = suffix.startsWith(\".\") ? suffix.slice(1) : suffix;\n return normalizeHostPolicyHostname(withoutLeadingDot);\n}\n\nfunction parseCanonicalIpv4Address(value: string): readonly number[] | null {\n if (!isCanonicalIpv4Address(value)) {\n return null;\n }\n return value.split(\".\").map((part) => {\n return Number(part);\n });\n}\n\nfunction ipv4PartsToNumber(parts: readonly number[]): number | null {\n if (parts.length !== 4) {\n return null;\n }\n return parts.reduce((acc, part) => {\n return acc * IPV4_OCTET_BASE + part;\n }, 0);\n}\n\nfunction isPublicIpv4Address(parts: readonly number[]): boolean {\n const value = ipv4PartsToNumber(parts);\n if (value === null) {\n return false;\n }\n return !IPV4_NON_PUBLIC_RANGES.some(([start, end]) => {\n return value >= start && value <= end;\n });\n}\n\nfunction parseIpv6Word(value: string): number | null {\n if (\n value === \"\" ||\n value.length > 4 ||\n ![...value].every((char) => {\n return isHexDigit(char);\n })\n ) {\n return null;\n }\n return Number.parseInt(value, 16);\n}\n\nfunction parseIpv6WordList(value: string): readonly number[] | null {\n if (value === \"\") {\n return [];\n }\n const words: number[] = [];\n for (const part of value.split(\":\")) {\n const word = parseIpv6Word(part);\n if (word === null) {\n return null;\n }\n words.push(word);\n }\n return words;\n}\n\nfunction parseIpv6Address(value: string): readonly number[] | null {\n if (value.includes(\"%\")) {\n return null;\n }\n\n let normalized = value.toLowerCase();\n if (normalized.includes(\".\")) {\n const lastColon = normalized.lastIndexOf(\":\");\n if (lastColon === -1) {\n return null;\n }\n const ipv4Parts = parseCanonicalIpv4Address(\n normalized.slice(lastColon + 1),\n );\n if (!ipv4Parts) {\n return null;\n }\n const highWord = (ipv4Parts[0]! << 8) + ipv4Parts[1]!;\n const lowWord = (ipv4Parts[2]! << 8) + ipv4Parts[3]!;\n normalized = `${normalized.slice(0, lastColon)}:${highWord.toString(16)}:${lowWord.toString(16)}`;\n }\n\n const compressed = normalized.split(\"::\");\n if (compressed.length > 2) {\n return null;\n }\n\n const left = parseIpv6WordList(compressed[0]!);\n const right =\n compressed.length === 2 ? parseIpv6WordList(compressed[1]!) : [];\n if (!left || !right) {\n return null;\n }\n\n if (compressed.length === 1) {\n return left.length === 8 ? left : null;\n }\n\n const zeroCount = 8 - left.length - right.length;\n if (zeroCount < 1) {\n return null;\n }\n return [\n ...left,\n ...Array.from({ length: zeroCount }, () => {\n return 0;\n }),\n ...right,\n ];\n}\n\nfunction isPublicIpv6SpecialRegistryException(\n words: readonly number[],\n): boolean {\n const second = words[1]!;\n if (\n second === 0x0001 &&\n words[2] === 0 &&\n words[3] === 0 &&\n words[4] === 0 &&\n words[5] === 0 &&\n words[6] === 0 &&\n words[7]! >= 1 &&\n words[7]! <= 3\n ) {\n return true;\n }\n if (second === 0x0003) {\n return true;\n }\n if (second === 0x0004 && words[2] === 0x0112) {\n return true;\n }\n if (second >= 0x0020 && second <= 0x002f) {\n return true;\n }\n return second >= 0x0030 && second <= 0x003f;\n}\n\nfunction isPublicIpv6Address(words: readonly number[]): boolean {\n if (words.length !== 8) {\n return false;\n }\n const first = words[0]!;\n const second = words[1]!;\n if ((first & 0xe000) !== 0x2000) {\n return false;\n }\n if (first === 0x2001 && second <= 0x01ff) {\n return isPublicIpv6SpecialRegistryException(words);\n }\n if (first === 0x2001 && second === 0x0db8) {\n return false;\n }\n if (first === 0x3fff && second <= 0x0fff) {\n return false;\n }\n if (first === 0x2002) {\n return false;\n }\n return true;\n}\n\nfunction hostPolicyIpLiteralIsPublic(hostname: string): boolean | null {\n if (hostname.startsWith(\"[\") && hostname.endsWith(\"]\")) {\n const words = parseIpv6Address(hostname.slice(1, -1));\n return words ? isPublicIpv6Address(words) : false;\n }\n\n const ipv4Parts = parseCanonicalIpv4Address(hostname);\n if (ipv4Parts) {\n return isPublicIpv4Address(ipv4Parts);\n }\n\n const normalizedIpv4Host = normalizeHostForIpv4LiteralSyntax(hostname);\n if (isIpv4LiteralLike(normalizedIpv4Host)) {\n return false;\n }\n return null;\n}\n\nfunction providerOwnedHostMatches(\n hostname: string,\n hostPolicy: Extract<\n FirewallBaseHostPolicy,\n { readonly kind: \"providerOwned\" }\n >,\n options: { readonly allowExactHosts?: boolean } = {},\n): boolean {\n if (options.allowExactHosts !== false) {\n const exactHosts = hostPolicy.exactHosts ?? [];\n for (const exactHost of exactHosts) {\n if (hostname === normalizeHostPolicyHostname(exactHost)) {\n return true;\n }\n }\n }\n\n const suffixes = hostPolicy.suffixes ?? [];\n for (const suffix of suffixes) {\n const normalizedSuffix = normalizeHostPolicySuffix(suffix);\n if (\n normalizedSuffix !== \"\" &&\n hostname.length > normalizedSuffix.length &&\n hostname.endsWith(`.${normalizedSuffix}`)\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction baseUrlAuthorityHasParams(base: string): boolean {\n const authority = rawAuthorityFromBaseUrl(base);\n return authority !== null && hasBaseUrlParams(authority);\n}\n\nfunction validateHostPolicyShape(\n base: string,\n serviceName: string,\n hostPolicy: FirewallBaseHostPolicy,\n): void {\n const result = firewallBaseHostPolicySchema.safeParse(hostPolicy);\n if (result.success) return;\n\n const message = result.error.issues\n .map((issue) => {\n return issue.message;\n })\n .join(\"; \");\n throw new Error(\n errMsg(base, serviceName, `hostPolicy is invalid: ${message}`),\n );\n}\n\ninterface HostPolicyValidationUrl {\n readonly hostname: string;\n readonly port: string;\n}\n\nfunction urlForHostPolicyValidation(\n base: string,\n serviceName: string,\n): HostPolicyValidationUrl {\n const authority = rawAuthorityFromBaseUrl(base);\n if (authority === null) {\n const url = urlForCanonicalBaseSyntax(base);\n return { hostname: url.hostname, port: url.port };\n }\n const authorityParts = splitParameterizedAuthority(\n authority,\n base,\n serviceName,\n );\n const hostname = splitAuthorityHostSegments(authorityParts.normalizedHost)\n .map((segment) => {\n return hostSegmentForSyntaxValidation(segment, base, serviceName);\n })\n .join(\".\");\n const schemeEnd = base.indexOf(\"://\");\n const scheme = schemeEnd === -1 ? \"https\" : base.slice(0, schemeEnd);\n const port = new URL(\n `${scheme}://vm0-host.invalid${authorityParts.portSuffix}`,\n ).port;\n return { hostname, port };\n}\n\nexport function validateBaseUrlHostPolicy({\n base,\n diagnosticBase = base,\n serviceName,\n hostPolicy,\n}: {\n readonly base: string;\n readonly diagnosticBase?: string;\n readonly serviceName: string;\n readonly hostPolicy: FirewallBaseHostPolicy | undefined;\n}): void {\n if (!hostPolicy) {\n return;\n }\n\n validateHostPolicyShape(diagnosticBase, serviceName, hostPolicy);\n if (hasBaseUrlVars(base)) {\n return;\n }\n\n const canonicalBase = canonicalizeFirewallBaseUrl(base, serviceName);\n const authorityHasParams = baseUrlAuthorityHasParams(canonicalBase);\n const url = urlForHostPolicyValidation(canonicalBase, serviceName);\n const rawAuthority = rawAuthorityFromBaseUrl(base);\n const hostname = normalizeHostPolicyHostname(url.hostname);\n if (hostPolicy.kind === \"providerOwned\") {\n if (\n !providerOwnedHostMatches(hostname, hostPolicy, {\n allowExactHosts: !authorityHasParams,\n })\n ) {\n throw new Error(\n errMsg(\n diagnosticBase,\n serviceName,\n `host policy does not allow resolved host \"${hostname}\"`,\n ),\n );\n }\n if (!hostPolicy.allowNonDefaultPort && url.port !== \"\") {\n throw new Error(\n errMsg(\n diagnosticBase,\n serviceName,\n \"host policy does not allow non-default ports\",\n ),\n );\n }\n return;\n }\n\n const publicDestinationHost =\n rawAuthority === null ? url.hostname : rawHostFromAuthority(rawAuthority);\n const publicIpLiteral = hostPolicyIpLiteralIsPublic(publicDestinationHost);\n if (publicIpLiteral === false) {\n throw new Error(\n errMsg(\n diagnosticBase,\n serviceName,\n `host policy does not allow non-public IP literal \"${hostname}\"`,\n ),\n );\n }\n}\n\nexport interface ResolveFirewallBaseUrlTemplateOptions {\n readonly serviceName: string;\n readonly base: string;\n readonly vars: Record<string, string> | undefined;\n readonly credentialed?: boolean;\n readonly hostPolicy?: FirewallBaseHostPolicy;\n}\n\nexport function resolveFirewallBaseUrlTemplate({\n serviceName,\n base,\n vars,\n credentialed = false,\n hostPolicy,\n}: ResolveFirewallBaseUrlTemplateOptions): string {\n if (!hasBaseUrlVars(base)) return base;\n\n try {\n let resolved = \"\";\n let lastIndex = 0;\n for (const match of base.matchAll(BASE_URL_VARS_PATTERN_G)) {\n const fullMatch = match[0];\n const name = match[1]!;\n const matchIndex = match.index!;\n const value = vars?.[name];\n if (!value) {\n throw new FirewallBaseUrlResolutionError(\n `Firewall \"${serviceName}\" base URL requires variable \"${name}\" but it was not provided`,\n );\n }\n validateBaseUrlTemplateVariable({\n base,\n serviceName,\n name,\n value,\n prefix: base.slice(0, matchIndex),\n suffix: base.slice(matchIndex + fullMatch.length),\n });\n resolved += base.slice(lastIndex, matchIndex) + value;\n lastIndex = matchIndex + fullMatch.length;\n }\n resolved += base.slice(lastIndex);\n validateResolvedBaseUrlPathSafety(base, serviceName, resolved);\n const canonicalBase = canonicalizeFirewallBaseUrl(resolved, serviceName);\n validateCredentialedBaseUrlTransportValue(\n canonicalBase,\n serviceName,\n credentialed,\n );\n validateBaseUrlHostPolicy({\n base: resolved,\n diagnosticBase: base,\n serviceName,\n hostPolicy,\n });\n return canonicalBase;\n } catch (error) {\n if (error instanceof FirewallBaseUrlResolutionError) {\n throw error;\n }\n if (error instanceof Error) {\n throw new FirewallBaseUrlResolutionError(error.message);\n }\n throw error;\n }\n}\n\nfunction canonicalAuthorityVariableValue(\n value: string,\n serviceName: string,\n): string {\n const canonicalBase = canonicalizeFirewallBaseUrl(\n `https://${value}`,\n serviceName,\n );\n const authority = rawAuthorityFromBaseUrl(canonicalBase);\n if (authority === null) {\n throw new FirewallBaseUrlResolutionError(\n `Firewall \"${serviceName}\" base URL variable is not a valid authority`,\n );\n }\n return authority;\n}\n\nfunction canonicalHostFragmentVariableValue({\n base,\n serviceName,\n name,\n value,\n}: {\n readonly base: string;\n readonly serviceName: string;\n readonly name: string;\n readonly value: string;\n}): string {\n validateHostPercentEncoding(value, base, serviceName);\n validateHostHasNoUnsafeIdnaMappings(value, base, serviceName);\n validateHostHasNoRawWildcards(value, base, serviceName);\n try {\n return canonicalizeDnsHostForExecution(value, base, serviceName);\n } catch (error) {\n if (error instanceof Error) {\n throw new FirewallBaseUrlResolutionError(\n `Firewall \"${serviceName}\" base URL variable \"${name}\" is not a valid hostname`,\n );\n }\n throw error;\n }\n}\n\nfunction canonicalBaseUrlVariableValue({\n base,\n serviceName,\n name,\n value,\n prefix,\n suffix,\n}: {\n readonly base: string;\n readonly serviceName: string;\n readonly name: string;\n readonly value: string;\n readonly prefix: string;\n readonly suffix: string;\n}): string {\n validateBaseUrlTemplateVariable({\n base,\n serviceName,\n name,\n value,\n prefix,\n suffix,\n });\n if (prefix === \"\" && (suffix === \"\" || suffix.startsWith(\"/\"))) {\n return canonicalizeFirewallBaseUrl(value, serviceName);\n }\n if (prefix.endsWith(\"://\") && (suffix === \"\" || suffix.startsWith(\"/\"))) {\n return canonicalAuthorityVariableValue(value, serviceName);\n }\n if (\n prefixIsInsideAuthority(prefix) &&\n prefix.endsWith(\":\") &&\n (suffix === \"\" || suffix.startsWith(\"/\"))\n ) {\n return value;\n }\n if (prefixIsInsideAuthority(prefix)) {\n const schemeEnd = prefix.indexOf(\"://\");\n const authorityPrefix = prefix.slice(schemeEnd + 3);\n const authoritySuffix = suffixAuthorityPrefix(suffix);\n const startsAtLabelBoundary =\n authorityPrefix === \"\" || authorityPrefix.endsWith(\".\");\n const endsAtLabelBoundary =\n authoritySuffix === \"\" ||\n authoritySuffix.startsWith(\".\") ||\n authoritySuffix.startsWith(\":\");\n if (!startsAtLabelBoundary || !endsAtLabelBoundary) {\n const decodedValue = validateBaseUrlVariablePercentEncoding({\n base,\n serviceName,\n name,\n value,\n structureChars: PERCENT_DECODED_BOUNDARY_CHARS,\n });\n if (isAscii(decodedValue)) return decodedValue.toLowerCase();\n throw new FirewallBaseUrlResolutionError(\n `Firewall \"${serviceName}\" base URL variable \"${name}\" cannot use a non-ASCII value inside a host label`,\n );\n }\n return canonicalHostFragmentVariableValue({\n base,\n serviceName,\n name,\n value,\n });\n }\n return value;\n}\n\n/**\n * Return the existing base-URL variable payload with hostname-bearing values\n * converted to the same canonical ASCII identity used by resolved firewalls.\n */\nexport function canonicalizeFirewallBaseUrlVarsForExecution(\n firewalls: Firewalls,\n vars: Record<string, string> | undefined,\n): Record<string, string> {\n resolveFirewallBaseUrlVars(firewalls, vars);\n const canonicalVars: Record<string, string> = {};\n for (const firewall of firewalls) {\n for (const api of firewall.apis) {\n for (const match of api.base.matchAll(BASE_URL_VARS_PATTERN_G)) {\n const fullMatch = match[0];\n const name = match[1]!;\n const matchIndex = match.index!;\n const value = vars?.[name];\n if (!value) {\n throw new FirewallBaseUrlResolutionError(\n `Firewall \"${firewall.name}\" base URL requires variable \"${name}\" but it was not provided`,\n );\n }\n const canonicalValue = canonicalBaseUrlVariableValue({\n base: api.base,\n serviceName: firewall.name,\n name,\n value,\n prefix: api.base.slice(0, matchIndex),\n suffix: api.base.slice(matchIndex + fullMatch.length),\n });\n const previousValue = canonicalVars[name];\n if (previousValue !== undefined && previousValue !== canonicalValue) {\n throw new FirewallBaseUrlResolutionError(\n `Firewall \"${firewall.name}\" base URL variable \"${name}\" requires incompatible execution representations`,\n );\n }\n canonicalVars[name] = canonicalValue;\n }\n }\n }\n return canonicalVars;\n}\n\n/**\n * Resolve `${{ vars.X }}` templates in firewall base URLs.\n * Static definitions are trusted catalog input and returned unchanged. Dynamic\n * values are validated and hostname-bearing values use canonical ASCII.\n */\nexport function resolveFirewallBaseUrlVars(\n firewalls: Firewalls,\n vars: Record<string, string> | undefined,\n): Firewalls {\n return firewalls.map((fw) => {\n return {\n ...fw,\n apis: fw.apis.map((api) => {\n if (!hasBaseUrlVars(api.base)) return api;\n const resolved = resolveFirewallBaseUrlTemplate({\n serviceName: fw.name,\n base: api.base,\n vars,\n credentialed: firewallAuthInjectsCredentials(api.auth),\n hostPolicy: api.hostPolicy,\n });\n return { ...api, base: resolved };\n }),\n };\n });\n}\n\n/**\n * Check if a base URL contains `{name}` style parameter placeholders\n * (as opposed to `${{ vars.X }}` template references).\n */\nexport function hasBaseUrlParams(base: string): boolean {\n // Strip ${{ ... }} template references, then check for remaining { }.\n // Uses string iteration instead of regex to avoid ReDoS risk.\n let stripped = base;\n let start = stripped.indexOf(\"${{\");\n while (start !== -1) {\n const end = stripped.indexOf(\"}}\", start + 3);\n if (end === -1) break;\n stripped = stripped.slice(0, start) + stripped.slice(end + 2);\n start = stripped.indexOf(\"${{\");\n }\n return stripped.includes(\"{\") && stripped.includes(\"}\");\n}\n\nconst HOST_WILDCARD_PARAM_PREFIX = \"hostWildcard\";\n\ninterface RawBaseUrlAuthority {\n readonly authority: string;\n readonly start: number;\n readonly end: number;\n}\n\ninterface RawWildcardAuthorityParts {\n readonly host: string;\n readonly portSuffix: string;\n}\n\nfunction rawBaseUrlAuthorityRange(base: string): RawBaseUrlAuthority | null {\n const schemeEnd = base.indexOf(\"://\");\n if (schemeEnd === -1) return null;\n const start = schemeEnd + 3;\n const rest = base.slice(start);\n const delimiterIndexes = [\n rest.indexOf(\"/\"),\n rest.indexOf(\"?\"),\n rest.indexOf(\"#\"),\n ].filter((index) => {\n return index !== -1;\n });\n const end =\n delimiterIndexes.length === 0\n ? base.length\n : start + Math.min(...delimiterIndexes);\n return {\n authority: base.slice(start, end),\n start,\n end,\n };\n}\n\nfunction splitRawWildcardAuthority(\n authority: string,\n): RawWildcardAuthorityParts | null {\n if (\n authority === \"\" ||\n authority.includes(\"@\") ||\n authorityHasEmptyPort(authority)\n ) {\n return null;\n }\n\n if (authority.startsWith(\"[\")) {\n return null;\n }\n\n const portSeparator = authority.lastIndexOf(\":\");\n if (portSeparator === -1) {\n return { host: authority, portSuffix: \"\" };\n }\n if (authority.indexOf(\":\") !== portSeparator) {\n return null;\n }\n return {\n host: authority.slice(0, portSeparator),\n portSuffix: authority.slice(portSeparator),\n };\n}\n\n/**\n * Convert user-facing `*` wildcards in a URL host into the existing\n * parameterized host grammar understood by the firewall matcher.\n *\n * Examples:\n * - https://*.example.com/ -> https://{hostWildcard1}.example.com/\n * - https://api-*.example.com/ -> https://api-{hostWildcard1}.example.com/\n * - https://*.*.example.com/ -> https://{hostWildcard1}.{hostWildcard2}.example.com/\n *\n * Each `*` is a single host-label wildcard. Only the host is transformed.\n * Path `*` characters remain literal.\n */\nexport function expandHostWildcardsInBaseUrl(base: string): string {\n if (base.includes(\"\\\\\")) {\n return base;\n }\n\n const authorityRange = rawBaseUrlAuthorityRange(base);\n if (authorityRange === null) {\n return base;\n }\n const authority = splitRawWildcardAuthority(authorityRange.authority);\n if (authority === null || !authority.host.includes(\"*\")) return base;\n\n let paramIndex = 0;\n const host = authority.host\n .split(\".\")\n .map((segment) => {\n if (!segment.includes(\"*\")) {\n return segment;\n }\n let expanded = \"\";\n for (let i = 0; i < segment.length; i++) {\n const ch = segment[i]!;\n if (ch === \"*\") {\n paramIndex += 1;\n expanded += `{${HOST_WILDCARD_PARAM_PREFIX}${paramIndex}}`;\n } else {\n expanded += ch;\n }\n }\n return expanded;\n })\n .join(\".\");\n\n return `${base.slice(0, authorityRange.start)}${host}${authority.portSuffix}${base.slice(\n authorityRange.end,\n )}`;\n}\n\nfunction errMsg(base: string, svc: string, detail: string): string {\n return `Invalid base URL \"${base}\" in firewall \"${svc}\": ${detail}`;\n}\n\nconst HOST_DOT_EQUIVALENTS = new Set([\".\", \"\\u3002\", \"\\uff0e\", \"\\uff61\"]);\nconst FORBIDDEN_NORMALIZED_LABEL_CHARS = new Set(\"#%,/:<>?@[\\\\]^|[]\".split(\"\"));\nconst ALLOWED_BASE_URL_SCHEMES = new Set([\"http\", \"https\"]);\nconst REQUIRED_AUTH_BASE_URL_SCHEME = \"https\";\nconst WHITESPACE_PATTERN = /\\s/u;\nconst UNICODE_CONTROL_PATTERN = /\\p{C}/u;\nconst UNICODE_DECIMAL_NUMBER_PATTERN = /^\\p{Decimal_Number}+$/u;\nconst UNICODE_MARK_PATTERN = /\\p{M}/u;\nconst UNICODE_LETTER_PATTERN = /\\p{L}/u;\nconst GREEK_COMBINING_YPOGEGRAMMENI = \"\\u0345\";\nconst GREEK_SMALL_IOTA = \"\\u03b9\";\n// WHATWG accepts these RTL-class label chars in places where Python's IDNA\n// bidi validation rejects mixed LTR/RTL labels at runtime.\nconst IDNA_BIDI_RTL_LABEL_RANGES = [\n [0x061d, 0x061d],\n [0x0870, 0x088e],\n [0x08b5, 0x08b5],\n [0x08c8, 0x08c9],\n [0xfbc2, 0xfbc2],\n [0x10f70, 0x10f81],\n [0x10f86, 0x10f89],\n] as const;\n// Keep creation-time host validation aligned with mitm-addon host_normalization.py.\nconst UNSAFE_UTS46_COLLISION_CHARS = new Set([\n \"\\u03f2\",\n \"\\u04c0\",\n \"\\u1e9e\",\n \"\\u1806\",\n \"\\u2132\",\n \"\\u2183\",\n \"\\u3164\",\n \"\\uffa0\",\n \"\\ufffc\",\n \"\\ufffd\",\n \"\\u{2f868}\",\n \"\\u{2f874}\",\n \"\\u{2f91f}\",\n \"\\u{2f95f}\",\n \"\\u{2f9bf}\",\n]);\nconst UNSAFE_UTS46_COLLISION_RANGES = [\n [0x10a0, 0x10c5],\n [0x115f, 0x1160],\n [0x17b4, 0x17b5],\n [0x2ff0, 0x2ffb],\n] as const;\nconst UNSAFE_UTS46_IGNORABLE_RANGES = [\n [0x034f, 0x034f],\n [0x180b, 0x180d],\n [0x180f, 0x180f],\n [0xfe00, 0xfe0f],\n [0xe0100, 0xe01ef],\n] as const;\n\ninterface ParameterizedAuthorityParts {\n readonly normalizedHost: string;\n readonly portSuffix: string;\n}\n\nfunction isHexDigit(char: string): boolean {\n return (\n (char >= \"0\" && char <= \"9\") ||\n (char >= \"a\" && char <= \"f\") ||\n (char >= \"A\" && char <= \"F\")\n );\n}\n\nfunction validateBaseUrlScheme(\n scheme: string,\n base: string,\n serviceName: string,\n): void {\n if (!ALLOWED_BASE_URL_SCHEMES.has(scheme.toLowerCase())) {\n throw new Error(errMsg(base, serviceName, \"scheme must be http or https\"));\n }\n}\n\nfunction validateUrlSchemeDelimiter(\n value: string,\n serviceName: string,\n label: \"base URL\" | \"auth.base URL\",\n displayValue = value,\n): void {\n if (value.includes(\"://\")) return;\n\n const colonIndex = value.indexOf(\":\");\n if (colonIndex !== -1) {\n const scheme = value.slice(0, colonIndex);\n const schemeDetail =\n label === \"auth.base URL\"\n ? \"scheme must be https\"\n : \"scheme must be http or https\";\n const allowedScheme =\n label === \"auth.base URL\"\n ? scheme.toLowerCase() === REQUIRED_AUTH_BASE_URL_SCHEME\n : ALLOWED_BASE_URL_SCHEMES.has(scheme.toLowerCase());\n if (!allowedScheme) {\n throw new Error(\n `Invalid ${label} \"${displayValue}\" in firewall \"${serviceName}\": ${schemeDetail}`,\n );\n }\n throw new Error(\n `Invalid ${label} \"${displayValue}\" in firewall \"${serviceName}\": URL must include \"://\" after the scheme`,\n );\n }\n\n throw new Error(\n `Invalid ${label} \"${displayValue}\" in firewall \"${serviceName}\": URL must include a scheme (e.g. \"https://${displayValue}\")`,\n );\n}\n\nfunction isAscii(value: string): boolean {\n for (let i = 0; i < value.length; i += 1) {\n if (value.charCodeAt(i) > 0x7f) return false;\n }\n return true;\n}\n\nfunction isIpv4NumberComponent(value: string): boolean {\n if (value === \"\") return false;\n if (value.toLowerCase().startsWith(\"0x\")) {\n return (\n value.length > 2 &&\n [...value.slice(2)].every((char) => {\n return isHexDigit(char);\n })\n );\n }\n return UNICODE_DECIMAL_NUMBER_PATTERN.test(value);\n}\n\nfunction isIpv4LiteralLike(value: string): boolean {\n const parts = value.split(\".\");\n return (\n parts.length >= 1 && parts.length <= 4 && parts.every(isIpv4NumberComponent)\n );\n}\n\nfunction isCanonicalIpv4Address(value: string): boolean {\n const parts = value.split(\".\");\n if (parts.length !== 4) return false;\n return parts.every((part) => {\n if (\n part === \"\" ||\n ![...part].every((char) => {\n return char >= \"0\" && char <= \"9\";\n })\n ) {\n return false;\n }\n if (part.length > 1 && part.startsWith(\"0\")) return false;\n return Number(part) <= IPV4_MAX_OCTET;\n });\n}\n\nfunction codePointInRanges(\n codePoint: number,\n ranges: readonly (readonly [number, number])[],\n): boolean {\n return ranges.some(([start, end]) => {\n return start <= codePoint && codePoint <= end;\n });\n}\n\nfunction hasUnsafeUts46MappingChar(value: string): boolean {\n for (const char of value) {\n const codePoint = char.codePointAt(0);\n if (\n UNSAFE_UTS46_COLLISION_CHARS.has(char) ||\n (codePoint !== undefined &&\n (codePointInRanges(codePoint, UNSAFE_UTS46_COLLISION_RANGES) ||\n codePointInRanges(codePoint, UNSAFE_UTS46_IGNORABLE_RANGES)))\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction normalizesToAscii(value: string): boolean {\n return isAscii(normalizeLabelTextForIdnaValidation(value));\n}\n\nfunction normalizeLabelTextForIdnaValidation(value: string): string {\n return value\n .replaceAll(GREEK_COMBINING_YPOGEGRAMMENI, GREEK_SMALL_IOTA)\n .normalize(\"NFKD\")\n .normalize(\"NFC\")\n .toLowerCase();\n}\n\nfunction hasForbiddenNormalizedLabelChar(value: string): boolean {\n for (const char of normalizeLabelTextForIdnaValidation(value)) {\n if (\n FORBIDDEN_NORMALIZED_LABEL_CHARS.has(char) ||\n HOST_DOT_EQUIVALENTS.has(char) ||\n WHITESPACE_PATTERN.test(char) ||\n UNICODE_CONTROL_PATTERN.test(char)\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction normalizedLabelStartsWithMark(value: string): boolean {\n const [firstChar] = normalizeLabelTextForIdnaValidation(value);\n return firstChar !== undefined && UNICODE_MARK_PATTERN.test(firstChar);\n}\n\nfunction isIdnaBidiRtlLabelChar(char: string): boolean {\n const codePoint = char.codePointAt(0);\n return (\n codePoint !== undefined &&\n codePointInRanges(codePoint, IDNA_BIDI_RTL_LABEL_RANGES)\n );\n}\n\nfunction isLtrLetterForBidiCheck(char: string): boolean {\n return UNICODE_LETTER_PATTERN.test(char) && !isIdnaBidiRtlLabelChar(char);\n}\n\nfunction isAsciiDigit(char: string): boolean {\n return char >= \"0\" && char <= \"9\";\n}\n\nfunction isArabicNumberForBidiCheck(char: string): boolean {\n const codePoint = char.codePointAt(0);\n return codePoint !== undefined && 0x0660 <= codePoint && codePoint <= 0x0669;\n}\n\nfunction effectiveBidiEndChar(chars: readonly string[]): string | undefined {\n for (let index = chars.length - 1; index >= 0; index -= 1) {\n const char = chars[index]!;\n if (!UNICODE_MARK_PATTERN.test(char)) return char;\n }\n return chars.at(-1);\n}\n\nfunction firstEffectiveBidiChar(chars: readonly string[]): string | undefined {\n return chars.find((char) => {\n return !UNICODE_MARK_PATTERN.test(char);\n });\n}\n\nfunction isRtlEndCharForBidiCheck(char: string): boolean {\n return (\n isIdnaBidiRtlLabelChar(char) ||\n isAsciiDigit(char) ||\n isArabicNumberForBidiCheck(char)\n );\n}\n\nfunction hasInvalidMixedBidiLabelText(value: string): boolean {\n const chars = Array.from(normalizeLabelTextForIdnaValidation(value));\n const firstRtlIndex = chars.findIndex((char) => {\n return isIdnaBidiRtlLabelChar(char);\n });\n if (firstRtlIndex === -1) return false;\n\n const suffix = chars.slice(firstRtlIndex + 1);\n if (firstRtlIndex === 0) {\n const suffixHasLtrLetter = suffix.some((char) => {\n return isLtrLetterForBidiCheck(char);\n });\n if (suffixHasLtrLetter) return true;\n\n const endChar = effectiveBidiEndChar(chars);\n return endChar !== undefined && !isRtlEndCharForBidiCheck(endChar);\n }\n\n const suffixHasLtrLetter = suffix.some((char) => {\n return isLtrLetterForBidiCheck(char);\n });\n if (suffixHasLtrLetter) return true;\n\n const prefix = chars.slice(0, firstRtlIndex);\n const prefixHasLtrLetter = prefix.some((char) => {\n return isLtrLetterForBidiCheck(char);\n });\n if (prefixHasLtrLetter) {\n if (prefix.some(isArabicNumberForBidiCheck)) return true;\n const firstPrefixChar = firstEffectiveBidiChar(prefix);\n if (\n firstPrefixChar === undefined ||\n !isLtrLetterForBidiCheck(firstPrefixChar)\n ) {\n return true;\n }\n return suffix.some((char) => {\n return !UNICODE_MARK_PATTERN.test(char);\n });\n }\n\n const endChar = effectiveBidiEndChar(chars);\n return endChar !== undefined && !isRtlEndCharForBidiCheck(endChar);\n}\n\nfunction baseUrlRawSyntaxTarget(base: string): string {\n return base.replace(BASE_URL_VARS_PATTERN_G, AUTH_TEMPLATE_URL_PLACEHOLDER);\n}\n\nfunction validateDecodedHostPercentCharacters(\n decoded: string,\n base: string,\n serviceName: string,\n): void {\n for (const char of decoded) {\n const codeUnit = char.charCodeAt(0);\n if (codeUnit <= 0x20 || codeUnit === 0x7f) {\n throw new Error(\n errMsg(\n base,\n serviceName,\n \"host must not contain percent-encoded control characters or whitespace\",\n ),\n );\n }\n if (PERCENT_DECODED_BOUNDARY_CHARS.has(char)) {\n throw new Error(\n errMsg(\n base,\n serviceName,\n \"host must not contain percent-encoded URL structure\",\n ),\n );\n }\n if (char === \"{\" || char === \"}\") {\n throw new Error(\n errMsg(\n base,\n serviceName,\n \"host must not contain percent-encoded braces\",\n ),\n );\n }\n if (HOST_DOT_EQUIVALENTS.has(char)) {\n throw new Error(\n errMsg(base, serviceName, \"host must not contain percent-encoded dots\"),\n );\n }\n if (char === \",\") {\n throw new Error(\n errMsg(base, serviceName, \"host must not contain commas\"),\n );\n }\n if (char === \"*\") {\n throw new Error(\n errMsg(base, serviceName, \"host must not contain wildcard characters\"),\n );\n }\n }\n}\n\nfunction validateHostPercentEncoding(\n host: string,\n base: string,\n serviceName: string,\n): void {\n if (host.includes(\",\")) {\n throw new Error(errMsg(base, serviceName, \"host must not contain commas\"));\n }\n for (let i = 0; i < host.length; i += 1) {\n if (host[i] !== \"%\") continue;\n if (\n i + 2 >= host.length ||\n !isHexDigit(host[i + 1]!) ||\n !isHexDigit(host[i + 2]!)\n ) {\n throw new Error(\n errMsg(base, serviceName, \"host has invalid percent encoding\"),\n );\n }\n\n let end = i;\n while (\n end + 2 < host.length &&\n host[end] === \"%\" &&\n isHexDigit(host[end + 1]!) &&\n isHexDigit(host[end + 2]!)\n ) {\n end += 3;\n }\n\n let decoded: string;\n try {\n decoded = decodeURIComponent(host.slice(i, end));\n } catch {\n throw new Error(\n errMsg(base, serviceName, \"host has invalid percent encoding\"),\n );\n }\n validateDecodedHostPercentCharacters(decoded, base, serviceName);\n i = end - 1;\n }\n if (host.includes(\"%\")) {\n let decoded: string;\n try {\n decoded = decodeURIComponent(host);\n } catch {\n throw new Error(\n errMsg(base, serviceName, \"host has invalid percent encoding\"),\n );\n }\n validateHostHasNoUnsafeIdnaMappings(decoded, base, serviceName);\n }\n}\n\nfunction rawAuthorityFromBaseUrl(base: string): string | null {\n const schemeEnd = base.indexOf(\"://\");\n if (schemeEnd === -1) return null;\n const rest = base.slice(schemeEnd + 3);\n const delimiterIndexes = [\n rest.indexOf(\"/\"),\n rest.indexOf(\"?\"),\n rest.indexOf(\"#\"),\n ].filter((index) => {\n return index !== -1;\n });\n const authorityEnd =\n delimiterIndexes.length === 0 ? -1 : Math.min(...delimiterIndexes);\n return authorityEnd === -1 ? rest : rest.slice(0, authorityEnd);\n}\n\nfunction authorityHasEmptyPort(authority: string): boolean {\n if (authority.startsWith(\"[\")) {\n const closeBracket = authority.indexOf(\"]\");\n if (closeBracket === -1) return false;\n return authority.slice(closeBracket + 1) === \":\";\n }\n\n const portSeparator = authority.lastIndexOf(\":\");\n if (portSeparator === -1) return false;\n return (\n authority.indexOf(\":\") === portSeparator &&\n portSeparator === authority.length - 1\n );\n}\n\nfunction validateNoUserinfo(\n authority: string,\n base: string,\n serviceName: string,\n): void {\n if (authority.includes(\"@\")) {\n throw new Error(errMsg(base, serviceName, \"must not contain userinfo\"));\n }\n}\n\nfunction validateHostHasNoEmptyLabels(\n host: string,\n base: string,\n serviceName: string,\n): string {\n let normalizedHost = host.replace(HOST_DOT_EQUIVALENT_PATTERN, \".\");\n if (normalizedHost.endsWith(\".\")) {\n normalizedHost = normalizedHost.slice(0, -1);\n }\n if (\n normalizedHost === \"\" ||\n normalizedHost.endsWith(\".\") ||\n normalizedHost.split(\".\").some((label) => {\n return label === \"\";\n })\n ) {\n throw new Error(\n errMsg(base, serviceName, \"host must not contain empty labels\"),\n );\n }\n return normalizedHost;\n}\n\nfunction normalizeHostForIpv4LiteralSyntax(host: string): string {\n let normalized = host.replace(HOST_DOT_EQUIVALENT_PATTERN, \".\").toLowerCase();\n if (normalized.endsWith(\".\")) {\n normalized = normalized.slice(0, -1);\n }\n return normalized;\n}\n\nfunction rawHostForCanonicalIpv4Syntax(host: string): string {\n const normalized = host.toLowerCase();\n return normalized.endsWith(\".\") ? normalized.slice(0, -1) : normalized;\n}\n\nfunction splitAuthorityHostSegments(host: string): string[] {\n if (host.startsWith(\"[\") && host.endsWith(\"]\")) {\n return [host];\n }\n return host.split(\".\");\n}\n\nfunction rawHostFromAuthority(authority: string): string {\n const withoutUserinfo = authority.slice(authority.lastIndexOf(\"@\") + 1);\n if (withoutUserinfo.startsWith(\"[\")) {\n const closeBracket = withoutUserinfo.indexOf(\"]\");\n return closeBracket === -1\n ? withoutUserinfo\n : withoutUserinfo.slice(0, closeBracket + 1);\n }\n const portSeparator = withoutUserinfo.lastIndexOf(\":\");\n return portSeparator === -1\n ? withoutUserinfo\n : withoutUserinfo.slice(0, portSeparator);\n}\n\nfunction canonicalizeDnsHostForExecution(\n rawHost: string,\n base: string,\n serviceName: string,\n): string {\n if (rawHost.startsWith(\"[\") && rawHost.endsWith(\"]\")) {\n return rawHost.toLowerCase();\n }\n const normalizedHost = validateHostHasNoEmptyLabels(\n rawHost,\n base,\n serviceName,\n );\n let decodedHost: string;\n try {\n decodedHost = decodeURIComponent(normalizedHost);\n } catch {\n throw new Error(\n errMsg(base, serviceName, \"host has invalid percent encoding\"),\n );\n }\n for (const char of decodedHost) {\n if (DNS_HOST_FORBIDDEN_ASCII_CHARS.has(char)) {\n throw new Error(\n errMsg(base, serviceName, \"host contains a forbidden ASCII character\"),\n );\n }\n }\n const canonicalHost = canonicalizeFirewallDnsHostname(decodedHost);\n if (canonicalHost === null || canonicalHost === \"\") {\n throw new Error(\n errMsg(\n base,\n serviceName,\n `host is not valid under hostname policy ${FIREWALL_HOSTNAME_POLICY_VERSION}`,\n ),\n );\n }\n validateHostHasNoEmptyLabels(canonicalHost, base, serviceName);\n return canonicalHost;\n}\n\nfunction canonicalizeAuthorityForExecution(\n authority: string,\n base: string,\n serviceName: string,\n): string {\n const rawHost = rawHostFromAuthority(authority);\n if (rawHost.startsWith(\"[\") && rawHost.endsWith(\"]\")) {\n return `${rawHost.toLowerCase()}${authority.slice(rawHost.length)}`;\n }\n const canonicalHost = canonicalizeDnsHostForExecution(\n rawHost,\n base,\n serviceName,\n );\n return `${canonicalHost}${authority.slice(rawHost.length)}`;\n}\n\nfunction baseWithAuthority(base: string, authority: string): string {\n const schemeEnd = base.indexOf(\"://\");\n const rawAuthority = rawAuthorityFromBaseUrl(base);\n if (schemeEnd === -1 || rawAuthority === null) {\n return base;\n }\n const authorityStart = schemeEnd + 3;\n return `${base.slice(0, authorityStart)}${authority}${base.slice(\n authorityStart + rawAuthority.length,\n )}`;\n}\n\nfunction authorityForUrlSyntaxValidation(authority: string): string {\n const rawHost = rawHostFromAuthority(authority);\n if (rawHost.startsWith(\"[\") && rawHost.endsWith(\"]\")) {\n return authority;\n }\n return `vm0-host.invalid${authority.slice(rawHost.length)}`;\n}\n\nfunction urlForCanonicalBaseSyntax(base: string): URL {\n const authority = rawAuthorityFromBaseUrl(base);\n return new URL(\n authority === null\n ? base\n : baseWithAuthority(base, authorityForUrlSyntaxValidation(authority)),\n );\n}\n\nfunction validateLabelHasNoUnsafeIdnaMappings(\n label: string,\n base: string,\n serviceName: string,\n): void {\n const parsed = parseSegment(label);\n const value =\n parsed.kind === \"param\" ? `${parsed.prefix}${parsed.suffix}` : label;\n if (value === \"\" || isAscii(value)) return;\n if (hasForbiddenNormalizedLabelChar(value)) {\n throw new Error(\n errMsg(\n base,\n serviceName,\n \"host must not contain characters that normalize to forbidden host syntax\",\n ),\n );\n }\n if (normalizedLabelStartsWithMark(value)) {\n throw new Error(\n errMsg(\n base,\n serviceName,\n \"host label must not start with a combining mark\",\n ),\n );\n }\n if (hasInvalidMixedBidiLabelText(value)) {\n throw new Error(\n errMsg(\n base,\n serviceName,\n \"host must not contain invalid bidirectional label text\",\n ),\n );\n }\n if (hasUnsafeUts46MappingChar(value) || normalizesToAscii(value)) {\n throw new Error(\n errMsg(\n base,\n serviceName,\n \"host must not contain unsafe IDNA compatibility mappings\",\n ),\n );\n }\n}\n\nfunction validateHostHasNoUnsafeIdnaMappings(\n authorityOrHost: string,\n base: string,\n serviceName: string,\n): void {\n const host = rawHostFromAuthority(authorityOrHost);\n if (host.startsWith(\"[\") && host.endsWith(\"]\")) return;\n for (const label of host\n .replace(HOST_DOT_EQUIVALENT_PATTERN, \".\")\n .split(\".\")) {\n validateLabelHasNoUnsafeIdnaMappings(label, base, serviceName);\n }\n}\n\nfunction validateHostHasCanonicalIpv4Syntax(\n authorityOrHost: string,\n base: string,\n serviceName: string,\n): void {\n const host = rawHostFromAuthority(authorityOrHost);\n if (host.startsWith(\"[\") && host.endsWith(\"]\")) return;\n const normalizedHost = normalizeHostForIpv4LiteralSyntax(host);\n if (\n isIpv4LiteralLike(normalizedHost) &&\n (rawHostForCanonicalIpv4Syntax(host) !== normalizedHost ||\n !isCanonicalIpv4Address(normalizedHost))\n ) {\n throw new Error(\n errMsg(base, serviceName, \"host must use canonical IPv4 address syntax\"),\n );\n }\n}\n\nfunction splitParameterizedAuthority(\n authority: string,\n base: string,\n serviceName: string,\n): ParameterizedAuthorityParts {\n let host = authority;\n let portSuffix = \"\";\n if (authority.startsWith(\"[\")) {\n const closeBracket = authority.indexOf(\"]\");\n if (closeBracket === -1) {\n throw new Error(errMsg(base, serviceName, \"not a valid URL authority\"));\n }\n host = authority.slice(0, closeBracket + 1);\n portSuffix = authority.slice(closeBracket + 1);\n if (portSuffix !== \"\" && !portSuffix.startsWith(\":\")) {\n throw new Error(errMsg(base, serviceName, \"not a valid URL authority\"));\n }\n } else {\n const portSeparator = authority.lastIndexOf(\":\");\n if (portSeparator !== -1) {\n host = authority.slice(0, portSeparator);\n portSuffix = authority.slice(portSeparator);\n }\n }\n\n const normalizedHost = validateHostHasNoEmptyLabels(host, base, serviceName);\n\n return { normalizedHost, portSuffix };\n}\n\nfunction validateStaticHostLabels(\n hostname: string,\n base: string,\n serviceName: string,\n): void {\n if (hostname.startsWith(\"[\") && hostname.endsWith(\"]\")) return;\n validateHostHasNoEmptyLabels(hostname, base, serviceName);\n validateHostHasNoRawWildcards(hostname, base, serviceName);\n}\n\nfunction hostSegmentHasRawWildcard(segment: string): boolean {\n const parsed = parseSegment(segment);\n if (parsed.kind === \"literal\") return parsed.value.includes(\"*\");\n if (parsed.kind === \"param\") {\n return parsed.prefix.includes(\"*\") || parsed.suffix.includes(\"*\");\n }\n return false;\n}\n\nfunction validateHostHasNoRawWildcards(\n host: string,\n base: string,\n serviceName: string,\n): void {\n if (host.startsWith(\"[\") && host.endsWith(\"]\")) return;\n for (const segment of host\n .replace(HOST_DOT_EQUIVALENT_PATTERN, \".\")\n .split(\".\")) {\n if (hostSegmentHasRawWildcard(segment)) {\n throw new Error(\n errMsg(base, serviceName, \"host must not contain wildcard characters\"),\n );\n }\n }\n}\n\nfunction hostSegmentForSyntaxValidation(\n seg: string,\n base: string,\n svc: string,\n): string {\n const parsed = parseSegment(seg);\n if (parsed.kind === \"literal\") return seg;\n if (parsed.kind === \"error\") {\n throw new Error(errMsg(base, svc, parsed.reason));\n }\n if (!isAscii(parsed.prefix) || !isAscii(parsed.suffix)) {\n throw new Error(\n errMsg(\n base,\n svc,\n `host parameter segment \"${seg}\" must use ASCII literal prefix and suffix`,\n ),\n );\n }\n return `${parsed.prefix}x${parsed.suffix}`;\n}\n\nfunction validateParameterizedHostUrlSyntax(\n scheme: string,\n authority: ParameterizedAuthorityParts,\n base: string,\n serviceName: string,\n): void {\n const syntaxHost = splitAuthorityHostSegments(authority.normalizedHost)\n .map((seg) => {\n hostSegmentForSyntaxValidation(seg, base, serviceName);\n const parsed = parseSegment(seg);\n if (parsed.kind === \"error\") {\n throw new Error(errMsg(base, serviceName, parsed.reason));\n }\n return \"x\";\n })\n .join(\".\");\n try {\n new URL(`${scheme}://${syntaxHost}${authority.portSuffix}`);\n } catch {\n throw new Error(errMsg(base, serviceName, \"not a valid URL authority\"));\n }\n}\n\n/**\n * Validate host segments (`.`-delimited) for parameterized base URLs.\n * Greedy params (`+`/`*`) must be the first (leftmost) host segment and\n * must not appear in mixed segments (prefix/suffix).\n * At least one pure-literal segment is required for security — a mixed\n * segment carrying a parameter is NOT counted as static.\n */\nfunction validateHostParams(\n segments: string[],\n paramNames: Set<string>,\n base: string,\n svc: string,\n): void {\n if (segments.length < 2) {\n throw new Error(errMsg(base, svc, \"host must have at least two segments\"));\n }\n let hasStatic = false;\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i]!;\n const parsed = parseSegment(seg);\n if (parsed.kind === \"error\") {\n throw new Error(errMsg(base, svc, parsed.reason));\n }\n if (parsed.kind === \"literal\") {\n hasStatic = true;\n continue;\n }\n const { name, greedy, prefix, suffix } = parsed;\n if (paramNames.has(name)) {\n throw new Error(\n errMsg(base, svc, `duplicate parameter name \"{${name}}\" in host`),\n );\n }\n paramNames.add(name);\n if (greedy && i !== 0) {\n throw new Error(\n errMsg(base, svc, `{${name}${greedy}} must be the first host segment`),\n );\n }\n if (greedy && (prefix !== \"\" || suffix !== \"\")) {\n throw new Error(\n errMsg(\n base,\n svc,\n `greedy parameter {${name}${greedy}} cannot be combined with a literal prefix or suffix in host segment \"${seg}\"`,\n ),\n );\n }\n }\n if (!hasStatic) {\n throw new Error(\n errMsg(base, svc, \"host must have at least one static segment\"),\n );\n }\n}\n\n/**\n * Validate path segments (`/`-delimited) for parameterized base URLs.\n * Greedy params (`+`/`*`) are rejected — they would consume the entire\n * remaining path, leaving nothing for permission rules to match against.\n * Mixed segments (`{param}.ext`, `prefix-{param}`) are accepted.\n */\nfunction validatePathParams(\n segments: string[],\n paramNames: Set<string>,\n base: string,\n svc: string,\n): void {\n for (const seg of segments) {\n const parsed = parseSegment(seg);\n if (parsed.kind === \"error\") {\n throw new Error(errMsg(base, svc, parsed.reason));\n }\n if (parsed.kind === \"literal\") continue;\n const { name, greedy } = parsed;\n if (greedy) {\n throw new Error(\n errMsg(\n base,\n svc,\n `greedy parameter {${name}${greedy}} is not allowed in base URL path`,\n ),\n );\n }\n if (paramNames.has(name)) {\n throw new Error(\n errMsg(base, svc, `duplicate parameter name \"{${name}}\"`),\n );\n }\n paramNames.add(name);\n }\n}\n\n/**\n * Validate parameter segments in a firewall base URL.\n *\n * Host portion: `{param}`, `{param+}`, `{param*}` allowed.\n * - Greedy (`+`/`*`) must be in the leftmost (first) host segment.\n * - At least one static host segment is required for security.\n *\n * Path portion: only `{param}` (single-segment) allowed.\n * - Greedy (`+`/`*`) is rejected — it would consume the entire remaining\n * path, leaving nothing for permission rules to match against.\n */\nfunction validateBaseUrlParams(base: string, serviceName: string): string {\n const schemeEnd = base.indexOf(\"://\");\n if (schemeEnd === -1) {\n throw new Error(errMsg(base, serviceName, \"missing scheme\"));\n }\n const scheme = base.slice(0, schemeEnd);\n if (scheme.includes(\"{\")) {\n throw new Error(\n errMsg(base, serviceName, \"scheme must not contain parameters\"),\n );\n }\n validateBaseUrlScheme(scheme, base, serviceName);\n if (base.includes(\"?\")) {\n throw new Error(errMsg(base, serviceName, \"must not contain query string\"));\n }\n if (base.includes(\"#\")) {\n throw new Error(errMsg(base, serviceName, \"must not contain fragment\"));\n }\n\n const rest = base.slice(schemeEnd + 3);\n const slashIdx = rest.indexOf(\"/\");\n const host = slashIdx === -1 ? rest : rest.slice(0, slashIdx);\n const path = slashIdx === -1 ? \"\" : rest.slice(slashIdx);\n if (authorityHasEmptyPort(host)) {\n throw new Error(errMsg(base, serviceName, \"not a valid URL authority\"));\n }\n validateNoUserinfo(host, base, serviceName);\n validateHostPercentEncoding(host, base, serviceName);\n const authority = splitParameterizedAuthority(host, base, serviceName);\n validateHostHasCanonicalIpv4Syntax(\n authority.normalizedHost,\n base,\n serviceName,\n );\n validateHostHasNoUnsafeIdnaMappings(\n authority.normalizedHost,\n base,\n serviceName,\n );\n validateHostHasNoRawWildcards(authority.normalizedHost, base, serviceName);\n const canonicalAuthority = {\n normalizedHost: splitAuthorityHostSegments(authority.normalizedHost)\n .map((segment) => {\n const parsed = parseSegment(segment);\n if (parsed.kind === \"error\") {\n throw new Error(errMsg(base, serviceName, parsed.reason));\n }\n if (parsed.kind === \"param\") {\n canonicalizeDnsHostForExecution(\n `${parsed.prefix}x${parsed.suffix}`,\n base,\n serviceName,\n );\n return segment;\n }\n const canonicalSegment = canonicalizeDnsHostForExecution(\n segment,\n base,\n serviceName,\n );\n if (\n !canonicalSegment.startsWith(\"[\") &&\n canonicalSegment.includes(\".\")\n ) {\n throw new Error(\n errMsg(\n base,\n serviceName,\n \"host label must not map to multiple labels\",\n ),\n );\n }\n return canonicalSegment;\n })\n .join(\".\"),\n portSuffix: authority.portSuffix,\n };\n const canonicalHostSegments = splitAuthorityHostSegments(\n canonicalAuthority.normalizedHost,\n );\n if (\n hasBaseUrlParams(canonicalAuthority.normalizedHost) &&\n canonicalHostSegments.length <= 4 &&\n canonicalHostSegments.some((segment) => {\n const parsed = parseSegment(segment);\n return parsed.kind === \"literal\" && isIpv4NumberComponent(parsed.value);\n }) &&\n canonicalHostSegments.every((segment) => {\n const parsed = parseSegment(segment);\n return (\n (parsed.kind === \"literal\" && isIpv4NumberComponent(parsed.value)) ||\n (parsed.kind === \"param\" &&\n parsed.prefix === \"\" &&\n parsed.suffix === \"\")\n );\n })\n ) {\n throw new Error(errMsg(base, serviceName, \"not a valid URL authority\"));\n }\n validateParameterizedHostUrlSyntax(\n base.slice(0, schemeEnd),\n canonicalAuthority,\n base,\n serviceName,\n );\n\n const paramNames = new Set<string>();\n validateHostParams(canonicalHostSegments, paramNames, base, serviceName);\n if (path) {\n validatePathParams(splitPathSegments(path), paramNames, base, serviceName);\n }\n return baseWithAuthority(\n base,\n `${canonicalAuthority.normalizedHost}${canonicalAuthority.portSuffix}`,\n );\n}\n\nfunction validateAndCanonicalizeBaseUrl(\n base: string,\n serviceName: string,\n): string {\n if (base.includes(\"\\\\\")) {\n throw new Error(\n `Invalid base URL \"${base}\" in firewall \"${serviceName}\": must not contain backslash`,\n );\n }\n\n const hasTemplateVars = hasBaseUrlVars(base);\n const rawSyntaxTarget = baseUrlRawSyntaxTarget(base);\n if (hasRawWhitespace(rawSyntaxTarget)) {\n throw new Error(\n `Invalid base URL \"${base}\" in firewall \"${serviceName}\": must not contain whitespace`,\n );\n }\n if (hasUnsafeUrlCodepoint(rawSyntaxTarget)) {\n throw new Error(\n `Invalid base URL \"${base}\" in firewall \"${serviceName}\": must not contain control characters or invalid Unicode`,\n );\n }\n\n let knownRawPath = rawPathFromBaseUrl(rawSyntaxTarget);\n if (\n knownRawPath === \"\" &&\n hasTemplateVars &&\n rawSyntaxTarget.startsWith(`${AUTH_TEMPLATE_URL_PLACEHOLDER}/`)\n ) {\n knownRawPath = rawSyntaxTarget.slice(AUTH_TEMPLATE_URL_PLACEHOLDER.length);\n }\n if (hasUnsafeFirewallPath(knownRawPath)) {\n throw new Error(\n errMsg(base, serviceName, \"must not contain unsafe path segments\"),\n );\n }\n\n // Template base URLs are validated after variable resolution at compose time.\n if (hasTemplateVars) return base;\n\n validateUrlSchemeDelimiter(base, serviceName, \"base URL\");\n\n // Parameterized base URLs have their own validation path.\n if (hasBaseUrlParams(base)) {\n return validateBaseUrlParams(base, serviceName);\n }\n\n const authority = rawAuthorityFromBaseUrl(base);\n let canonicalBase = base;\n if (authority !== null) {\n if (authority === \"\") {\n throw new Error(\n `Invalid base URL \"${base}\" in firewall \"${serviceName}\": not a valid URL authority`,\n );\n }\n if (authorityHasEmptyPort(authority)) {\n throw new Error(\n `Invalid base URL \"${base}\" in firewall \"${serviceName}\": not a valid URL authority`,\n );\n }\n validateNoUserinfo(authority, base, serviceName);\n validateHostPercentEncoding(authority, base, serviceName);\n validateHostHasCanonicalIpv4Syntax(authority, base, serviceName);\n validateHostHasNoUnsafeIdnaMappings(authority, base, serviceName);\n validateHostHasNoRawWildcards(\n rawHostFromAuthority(authority),\n base,\n serviceName,\n );\n canonicalBase = baseWithAuthority(\n base,\n canonicalizeAuthorityForExecution(authority, base, serviceName),\n );\n }\n let url: URL;\n try {\n url = urlForCanonicalBaseSyntax(canonicalBase);\n } catch {\n if (!base.includes(\"://\")) {\n throw new Error(\n `Invalid base URL \"${base}\" in firewall \"${serviceName}\": URL must include a scheme (e.g. \"https://${base}\")`,\n );\n }\n throw new Error(\n `Invalid base URL \"${base}\" in firewall \"${serviceName}\": not a valid URL`,\n );\n }\n validateBaseUrlScheme(url.protocol.slice(0, -1), base, serviceName);\n if (url.search) {\n throw new Error(\n `Invalid base URL \"${base}\" in firewall \"${serviceName}\": must not contain query string`,\n );\n }\n if (url.hash) {\n throw new Error(\n `Invalid base URL \"${base}\" in firewall \"${serviceName}\": must not contain fragment`,\n );\n }\n const canonicalAuthority = rawAuthorityFromBaseUrl(canonicalBase);\n const canonicalHostname =\n canonicalAuthority === null\n ? url.hostname\n : rawHostFromAuthority(canonicalAuthority);\n validateStaticHostLabels(canonicalHostname, base, serviceName);\n if (canonicalHostname.includes(\"{\") || canonicalHostname.includes(\"}\")) {\n throw new Error(\n `Invalid base URL \"${base}\" in firewall \"${serviceName}\": host must not contain braces`,\n );\n }\n return canonicalBase;\n}\n\nexport function validateBaseUrl(base: string, serviceName: string): void {\n validateAndCanonicalizeBaseUrl(base, serviceName);\n}\n\nexport function canonicalizeFirewallBaseUrl(\n base: string,\n serviceName: string,\n): string {\n return validateAndCanonicalizeBaseUrl(base, serviceName);\n}\n\ninterface AuthBaseStaticValidationTarget {\n readonly url: string | null;\n readonly dynamicPrefixSuffix: string;\n}\n\nfunction authBaseForStaticUrlValidation(\n authBase: string,\n): AuthBaseStaticValidationTarget {\n if (!authBase.includes(AUTH_TEMPLATE_START)) {\n return { url: authBase, dynamicPrefixSuffix: \"\" };\n }\n\n const replaced = authBase.replace(\n AUTH_REFERENCE_PATTERN_G,\n AUTH_TEMPLATE_URL_PLACEHOLDER,\n );\n if (replaced.includes(AUTH_TEMPLATE_START)) {\n return { url: authBase, dynamicPrefixSuffix: \"\" };\n }\n const prefixMatch = AUTH_REFERENCE_PREFIX_PATTERN.exec(authBase);\n if (prefixMatch) {\n return {\n url: null,\n dynamicPrefixSuffix: authBase\n .slice(prefixMatch[0].length)\n .replace(AUTH_REFERENCE_PATTERN_G, AUTH_TEMPLATE_URL_PLACEHOLDER),\n };\n }\n return { url: replaced, dynamicPrefixSuffix: \"\" };\n}\n\nfunction validateDynamicAuthBaseSuffix(\n authBase: string,\n suffix: string,\n serviceName: string,\n): void {\n if (suffix.includes(AUTH_TEMPLATE_START)) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": contains unsupported template reference`,\n );\n }\n if (hasRawWhitespace(suffix)) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": must not contain whitespace`,\n );\n }\n if (hasUnsafeUrlCodepoint(suffix)) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": must not contain control characters or invalid Unicode`,\n );\n }\n if (suffix.includes(\"#\")) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": must not contain fragment`,\n );\n }\n if (suffix !== \"\" && !suffix.startsWith(\"/\") && !suffix.startsWith(\"?\")) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": dynamic URL suffix must start with \"/\" or \"?\"`,\n );\n }\n}\n\nexport function validateAuthBaseUrl(\n authBase: string,\n serviceName: string,\n): void {\n if (authBase.includes(\"\\\\\")) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": must not contain backslash`,\n );\n }\n\n // Auth base URLs may be fully or partially secret/var-backed; resolved\n // values are only available in the sandbox when auth is applied.\n const target = authBaseForStaticUrlValidation(authBase);\n validateDynamicAuthBaseSuffix(\n authBase,\n target.dynamicPrefixSuffix,\n serviceName,\n );\n const validationUrl = target.url;\n if (validationUrl === null) return;\n if (validationUrl.includes(AUTH_TEMPLATE_START)) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": contains unsupported template reference`,\n );\n }\n\n if (hasRawWhitespace(validationUrl)) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": must not contain whitespace`,\n );\n }\n if (hasUnsafeUrlCodepoint(validationUrl)) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": must not contain control characters or invalid Unicode`,\n );\n }\n\n validateUrlSchemeDelimiter(\n validationUrl,\n serviceName,\n \"auth.base URL\",\n authBase,\n );\n\n const authority = rawAuthorityFromBaseUrl(validationUrl);\n let canonicalValidationUrl = validationUrl;\n if (authority !== null) {\n if (authority === \"\") {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": not a valid URL authority`,\n );\n }\n if (authorityHasEmptyPort(authority)) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": not a valid URL authority`,\n );\n }\n if (authority.includes(\"@\")) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": must not contain userinfo`,\n );\n }\n validateHostPercentEncoding(authority, validationUrl, serviceName);\n validateHostHasCanonicalIpv4Syntax(authority, validationUrl, serviceName);\n validateHostHasNoUnsafeIdnaMappings(authority, validationUrl, serviceName);\n validateHostHasNoRawWildcards(\n rawHostFromAuthority(authority),\n validationUrl,\n serviceName,\n );\n canonicalValidationUrl = baseWithAuthority(\n validationUrl,\n canonicalizeAuthorityForExecution(authority, validationUrl, serviceName),\n );\n }\n\n let url: URL;\n try {\n url = urlForCanonicalBaseSyntax(canonicalValidationUrl);\n } catch {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": not a valid URL`,\n );\n }\n if (\n url.protocol.slice(0, -1).toLowerCase() !== REQUIRED_AUTH_BASE_URL_SCHEME\n ) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": scheme must be https`,\n );\n }\n if (url.hash) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": must not contain fragment`,\n );\n }\n const canonicalAuthority = rawAuthorityFromBaseUrl(canonicalValidationUrl);\n validateStaticHostLabels(\n canonicalAuthority === null\n ? url.hostname\n : rawHostFromAuthority(canonicalAuthority),\n validationUrl,\n serviceName,\n );\n\n const rawAuthAuthority = rawAuthorityFromBaseUrl(authBase);\n if (\n rawAuthAuthority !== null &&\n rawAuthAuthority.includes(AUTH_TEMPLATE_START) &&\n (!isAscii(rawAuthAuthority) || rawAuthAuthority.includes(\"%\"))\n ) {\n throw new Error(\n `Invalid auth.base URL \"${authBase}\" in firewall \"${serviceName}\": dynamic authority must use ASCII static text`,\n );\n }\n}\n\n/**\n * Expanded firewall config stored in compose content.\n * Resolved from firewall name + FirewallConfig at compose time, then frozen.\n *\n * - `name`: firewall config name (e.g., \"slack\"). Also the key used in\n * vm0.yaml to reference this firewall config, and the map key in\n * `FirewallPolicies` / `NetworkPolicies`.\n * - `description`: optional description from the firewall config\n */\nexport interface ExpandedFirewallConfig {\n name: string;\n description?: string;\n apis: FirewallApi[];\n placeholders?: Record<string, string>;\n /**\n * Optional per-firewall default permission overrides for auto-generated\n * model-provider firewalls (which otherwise default to fully permissive).\n * Permission names listed in `deny`/`ask` are routed accordingly; all\n * others remain allowed. `unknownPolicy` controls handling of base-URL\n * matches that don't match any permission rule. Ignored on the connector\n * firewall path (which uses stored per-user policies instead).\n */\n defaultPolicies?: {\n deny?: string[];\n ask?: string[];\n unknownPolicy?: FirewallPolicyValue;\n };\n}\n","import { toASCII, type ToASCIIOptions } from \"tr46\";\n\n/**\n * Hostname identity accepted by the API before firewall values cross to a\n * runner. The policy version changes only after a deliberate Unicode-data and\n * runner-compatibility review.\n */\nexport const FIREWALL_HOSTNAME_POLICY_VERSION = \"vm0-uts46-16.0-v1\";\n\nconst FIREWALL_HOSTNAME_TO_ASCII_OPTIONS = {\n checkBidi: true,\n checkHyphens: false,\n checkJoiners: true,\n ignoreInvalidPunycode: false,\n transitionalProcessing: false,\n useSTD3ASCIIRules: false,\n verifyDNSLength: true,\n} as const satisfies ToASCIIOptions;\n\n/**\n * Return the fixed-policy ASCII identity for a dot-separated DNS hostname.\n * Callers remain responsible for vm0's stricter raw-input and IP-literal\n * checks before invoking this UTS #46 mapping step.\n */\nexport function canonicalizeFirewallDnsHostname(\n hostname: string,\n): string | null {\n return toASCII(hostname, FIREWALL_HOSTNAME_TO_ASCII_OPTIONS);\n}\n","const ASCII_CONTROL_MAX = 0x20;\nconst ASCII_DELETE = 0x7f;\nconst UNICODE_HIGH_SURROGATE_MIN = 0xd800;\nconst UNICODE_HIGH_SURROGATE_MAX = 0xdbff;\nconst UNICODE_LOW_SURROGATE_MIN = 0xdc00;\nconst UNICODE_LOW_SURROGATE_MAX = 0xdfff;\n\nexport function hasRawWhitespace(value: string): boolean {\n for (let i = 0; i < value.length; i += 1) {\n const char = value[i]!;\n if (\n char === \" \" ||\n char === \"\\t\" ||\n char === \"\\n\" ||\n char === \"\\r\" ||\n char === \"\\f\" ||\n char === \"\\v\"\n ) {\n return true;\n }\n }\n return false;\n}\n\nexport function hasUnsafeUrlCodepoint(value: string): boolean {\n for (let i = 0; i < value.length; i += 1) {\n const codeUnit = value.charCodeAt(i);\n if (codeUnit < ASCII_CONTROL_MAX || codeUnit === ASCII_DELETE) {\n return true;\n }\n if (\n UNICODE_HIGH_SURROGATE_MIN <= codeUnit &&\n codeUnit <= UNICODE_HIGH_SURROGATE_MAX\n ) {\n const nextCodeUnit = value.charCodeAt(i + 1);\n if (\n !(\n UNICODE_LOW_SURROGATE_MIN <= nextCodeUnit &&\n nextCodeUnit <= UNICODE_LOW_SURROGATE_MAX\n )\n ) {\n return true;\n }\n i += 1;\n continue;\n }\n if (\n UNICODE_LOW_SURROGATE_MIN <= codeUnit &&\n codeUnit <= UNICODE_LOW_SURROGATE_MAX\n ) {\n return true;\n }\n }\n return false;\n}\n","/**\n * Shared grammar for a single host/path segment used across firewall\n * base URL validation, permission rule path validation, and runtime URL\n * matching.\n *\n * Grammar mirrors crates/runner/mitm-addon/src/firewall_matching/patterns.py::parse_segment —\n * keep both implementations in lockstep. Any change to accepted or rejected\n * forms must land in both languages and the shared contract fixture at once:\n * turbo/packages/connectors/src/__tests__/firewall-semantics-contract.json.\n *\n * Accepted forms:\n * - Plain literal (no braces).\n * - `{name}` pure parameter.\n * - `{name}suffix` parameter + literal suffix.\n * - `prefix{name}` literal prefix + parameter.\n * - `prefix{name}suffix` literal prefix + parameter + literal suffix.\n * - Parameter names are opaque non-empty segment text and may carry a\n * trailing `+` or `*` for greedy matching;\n * greedy is only valid in positions the caller allows (leftmost host\n * segment, or last rule-path segment). Greedy names must NOT appear in\n * mixed segments — that combination is reserved.\n *\n * Rejected forms (error kind with a specific reason):\n * - `{}` / `prefix{}suffix` empty parameter name.\n * - `{a}{b}` adjacent parameters in one segment.\n * - `{a}.{b}` literal-separated parameters in one segment.\n * - `{name` / `name}` unbalanced brace.\n *\n * Match-time semantics for mixed segments (carried by `param` result):\n * - The runtime segment must startsWith(prefix) AND endsWith(suffix)\n * AND length > prefix.length + suffix.length (middle must be non-empty).\n * - Captured value is the middle slice.\n */\n\nconst ERROR_HINT =\n 'use \"{name}\", \"prefix{name}\", \"{name}suffix\", or \"prefix{name}suffix\"';\n\ntype SegmentParseResult =\n | { kind: \"literal\"; value: string }\n | {\n kind: \"param\";\n prefix: string;\n name: string;\n suffix: string;\n greedy: \"\" | \"+\" | \"*\";\n }\n | { kind: \"error\"; reason: string };\n\nexport function parseSegment(seg: string): SegmentParseResult {\n const openCount = countChar(seg, \"{\");\n const closeCount = countChar(seg, \"}\");\n\n if (openCount === 0 && closeCount === 0) {\n return { kind: \"literal\", value: seg };\n }\n if (openCount !== closeCount) {\n return {\n kind: \"error\",\n reason: `unbalanced brace in segment \"${seg}\" — ${ERROR_HINT}`,\n };\n }\n\n const open1 = seg.indexOf(\"{\");\n const close1 = seg.indexOf(\"}\");\n if (close1 < open1) {\n return {\n kind: \"error\",\n reason: `unbalanced brace in segment \"${seg}\" — ${ERROR_HINT}`,\n };\n }\n\n if (openCount >= 2) {\n const open2 = seg.indexOf(\"{\", close1 + 1);\n if (close1 + 1 === open2) {\n return {\n kind: \"error\",\n reason: `adjacent parameters in segment \"${seg}\" — only one parameter per segment is allowed; ${ERROR_HINT}`,\n };\n }\n return {\n kind: \"error\",\n reason: `literal-separated parameters in segment \"${seg}\" — only one parameter per segment is allowed; ${ERROR_HINT}`,\n };\n }\n\n const prefix = seg.slice(0, open1);\n const content = seg.slice(open1 + 1, close1);\n const suffix = seg.slice(close1 + 1);\n\n if (\n prefix.includes(\"{\") ||\n prefix.includes(\"}\") ||\n suffix.includes(\"{\") ||\n suffix.includes(\"}\")\n ) {\n return {\n kind: \"error\",\n reason: `unbalanced brace in segment \"${seg}\" — ${ERROR_HINT}`,\n };\n }\n\n // Strip optional trailing greedy marker BEFORE emptiness check so that\n // `{+}` / `{*}` report \"empty parameter name\", matching legacy behavior.\n let greedy: \"\" | \"+\" | \"*\" = \"\";\n let name = content;\n if (content.length > 0) {\n const last = content[content.length - 1]!;\n if (last === \"+\" || last === \"*\") {\n greedy = last;\n name = content.slice(0, -1);\n }\n }\n\n if (name.length === 0) {\n return {\n kind: \"error\",\n reason: `empty parameter name in segment \"${seg}\" — ${ERROR_HINT}`,\n };\n }\n\n return { kind: \"param\", prefix, name, suffix, greedy };\n}\n\nexport function splitPathSegments(path: string): string[] {\n if (path === \"\" || path === \"/\") return [];\n const pathWithoutLeadingSlash = path.startsWith(\"/\") ? path.slice(1) : path;\n if (pathWithoutLeadingSlash === \"\") return [];\n return pathWithoutLeadingSlash.split(\"/\");\n}\n\nfunction countChar(s: string, ch: string): number {\n let n = 0;\n for (let i = 0; i < s.length; i++) {\n if (s[i] === ch) n++;\n }\n return n;\n}\n","import { z } from \"zod\";\nimport {\n initContract,\n authHeadersSchema,\n timestampQueryNumberSchema,\n} from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\n/**\n * Cursor-based pagination schema with total pages\n */\nexport const paginationSchema = z.object({\n hasMore: z.boolean(),\n nextCursor: z.string().nullable(),\n totalPages: z.number(),\n});\n\nexport type Pagination = z.infer<typeof paginationSchema>;\n\n/**\n * Common query parameters for list endpoints\n */\nconst listQuerySchema = z.object({\n cursor: z.string().optional(),\n limit: z.coerce.number().int().min(1).max(100).default(20),\n});\n\nconst c = initContract();\n\n/**\n * Run status enum for logs\n */\nconst logStatusSchema = z.enum([\n \"queued\",\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\",\n \"timeout\",\n \"cancelled\",\n]);\n\n/**\n * Trigger source enum — how the run was initiated\n */\nexport const triggerSourceSchema = z.enum([\n \"web\",\n \"slack\",\n \"teams\",\n \"feishu\",\n \"email\",\n \"telegram\",\n \"agentphone\",\n \"github\",\n \"cli\",\n \"agent\",\n \"webhook\",\n \"workflow-schedule\",\n \"workflow-event\",\n]);\n\nexport type TriggerSource = z.infer<typeof triggerSourceSchema>;\n\n/**\n * Log entry in list response - includes basic fields for list display\n */\nconst logEntrySchema = z.object({\n id: z.uuid(),\n sessionId: z.string().nullable(),\n agentId: z.string().nullable(),\n displayName: z.string().nullable(),\n framework: z.string().nullable(),\n triggerSource: triggerSourceSchema.nullable(),\n triggerAgentName: z.string().nullable(),\n status: logStatusSchema,\n /** Prompt text the run was launched with. Used as a row description. */\n prompt: z.string(),\n createdAt: z.string(),\n startedAt: z.string().nullable(),\n completedAt: z.string().nullable(),\n});\n\n/**\n * Available filter values returned by the list endpoint.\n * agents contains canonical Zero agent IDs.\n */\nconst logsFiltersSchema = z.object({\n statuses: z.array(logStatusSchema),\n sources: z.array(triggerSourceSchema),\n agents: z.array(z.string()),\n});\n\nexport type LogsFilters = z.infer<typeof logsFiltersSchema>;\n\n/**\n * Logs list response schema with pagination\n */\nconst logsListResponseSchema = z.object({\n data: z.array(logEntrySchema),\n pagination: paginationSchema,\n filters: logsFiltersSchema,\n});\n\n/**\n * Artifact information schema\n */\nconst artifactSchema = z.object({\n name: z.string().nullable(),\n version: z.string().nullable(),\n});\n\n/**\n * Log detail response schema\n */\nconst logDetailSchema = z.object({\n id: z.uuid(),\n sessionId: z.string().nullable(),\n agentId: z.string().nullable(),\n displayName: z.string().nullable(),\n framework: z.string().nullable(),\n modelProvider: z.string().nullable(),\n selectedModel: z.string().nullable(),\n triggerSource: triggerSourceSchema.nullable(),\n triggerAgentName: z.string().nullable(),\n status: logStatusSchema,\n prompt: z.string(),\n appendSystemPrompt: z.string().nullable(),\n error: z.string().nullable(),\n createdAt: z.string(),\n startedAt: z.string().nullable(),\n completedAt: z.string().nullable(),\n artifact: artifactSchema,\n});\n\n/**\n * Logs list contract\n * GET /api/zero/logs\n */\nexport const logsListContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/logs\",\n headers: authHeadersSchema,\n query: listQuerySchema.extend({\n search: z.string().optional(),\n agentId: z.string().uuid().optional(),\n name: z.string().optional(),\n since: timestampQueryNumberSchema.optional(),\n\n status: logStatusSchema.optional(),\n triggerSource: triggerSourceSchema.optional(),\n }),\n responses: {\n 200: logsListResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"List agent run logs with pagination\",\n },\n});\n\n/**\n * Logs by ID contract\n * GET /api/zero/logs/:id\n */\nexport const logsByIdContract = c.router({\n getById: {\n method: \"GET\",\n path: \"/api/zero/logs/:id\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.string().uuid(\"Invalid log ID\"),\n }),\n responses: {\n 200: logDetailSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get agent run log details by ID\",\n },\n});\n\n// Contract type exports\nexport type LogsListContract = typeof logsListContract;\nexport type LogsByIdContract = typeof logsByIdContract;\n\n// Schema exports for reuse\nexport {\n logStatusSchema,\n logEntrySchema,\n logsListResponseSchema,\n artifactSchema,\n logDetailSchema,\n};\n\n// Inferred type exports\nexport type LogStatus = z.infer<typeof logStatusSchema>;\nexport type LogEntry = z.infer<typeof logEntrySchema>;\nexport type LogsListResponse = z.infer<typeof logsListResponseSchema>;\nexport type Artifact = z.infer<typeof artifactSchema>;\nexport type LogDetail = z.infer<typeof logDetailSchema>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const zeroGoalStatusSchema = z.enum([\n \"active\",\n \"paused\",\n \"blocked\",\n \"complete\",\n]);\nexport type ZeroGoalStatus = z.infer<typeof zeroGoalStatusSchema>;\n\nexport const zeroGoalEventSchema = z.union([\n z.object({\n type: z.literal(\"state\"),\n status: z.literal(\"active\"),\n objectiveBrief: z.string().min(1),\n }),\n z.object({\n type: z.literal(\"state\"),\n status: z.enum([\"paused\", \"blocked\", \"complete\"]),\n }),\n z.object({ type: z.literal(\"cleared\") }),\n]);\nexport type ZeroGoalEvent = z.infer<typeof zeroGoalEventSchema>;\n\nexport const zeroGoalCreateRequestSchema = z.object({\n objective: z.string().min(1).max(20_000),\n});\nexport type ZeroGoalCreateRequest = z.infer<typeof zeroGoalCreateRequestSchema>;\n\nexport const zeroGoalEditRequestSchema = z.object({\n objective: z.string().min(1).max(20_000),\n});\nexport type ZeroGoalEditRequest = z.infer<typeof zeroGoalEditRequestSchema>;\n\nexport const zeroGoalResponseSchema = z.object({\n objective: z.string(),\n objectiveBrief: z.string(),\n status: zeroGoalStatusSchema,\n});\nexport type ZeroGoalResponse = z.infer<typeof zeroGoalResponseSchema>;\n\nconst chatThreadGoalParamsSchema = z.object({\n threadId: z.string().min(1),\n});\n\nexport const zeroGoalsContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/goal\",\n headers: authHeadersSchema,\n body: zeroGoalCreateRequestSchema,\n responses: {\n 201: zeroGoalResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Create a persistent goal for the current thread\",\n },\n edit: {\n method: \"PATCH\",\n path: \"/api/zero/goal\",\n headers: authHeadersSchema,\n body: zeroGoalEditRequestSchema,\n responses: {\n 200: zeroGoalResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Edit the current thread goal objective\",\n },\n get: {\n method: \"GET\",\n path: \"/api/zero/goal\",\n headers: authHeadersSchema,\n responses: {\n 200: zeroGoalResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Get the current thread goal\",\n },\n getForChatThread: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:threadId/goal\",\n headers: authHeadersSchema,\n pathParams: chatThreadGoalParamsSchema,\n responses: {\n 200: zeroGoalResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Get a chat thread goal\",\n },\n complete: {\n method: \"POST\",\n path: \"/api/zero/goal/complete\",\n headers: authHeadersSchema,\n body: c.noBody(),\n responses: {\n 200: zeroGoalResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Mark the current thread goal complete\",\n },\n block: {\n method: \"POST\",\n path: \"/api/zero/goal/block\",\n headers: authHeadersSchema,\n body: c.noBody(),\n responses: {\n 200: zeroGoalResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Mark the current thread goal blocked\",\n },\n pause: {\n method: \"POST\",\n path: \"/api/zero/goal/pause\",\n headers: authHeadersSchema,\n body: c.noBody(),\n responses: {\n 200: zeroGoalResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Pause the current thread goal\",\n },\n pauseForChatThread: {\n method: \"POST\",\n path: \"/api/zero/chat-threads/:threadId/goal/pause\",\n headers: authHeadersSchema,\n pathParams: chatThreadGoalParamsSchema,\n body: c.noBody(),\n responses: {\n 200: zeroGoalResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Pause a chat thread goal\",\n },\n resume: {\n method: \"POST\",\n path: \"/api/zero/goal/resume\",\n headers: authHeadersSchema,\n body: c.noBody(),\n responses: {\n 200: zeroGoalResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Resume continuation for the current thread goal\",\n },\n clear: {\n method: \"DELETE\",\n path: \"/api/zero/goal\",\n headers: authHeadersSchema,\n body: c.noBody(),\n responses: {\n 200: z.object({ cleared: z.literal(true) }),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Clear the current thread goal\",\n },\n});\n\nexport type ZeroGoalsContract = typeof zeroGoalsContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { connectorRefSchema } from \"./connector-identity\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst agentIdSchema = z.string().uuid();\nconst permissionSchema = z.string().min(1).max(128);\n\nexport const userPermissionGrantActionSchema = z.enum([\"allow\", \"deny\"]);\nexport const userPermissionGrantApplyModeSchema = z.enum([\"patch\", \"replace\"]);\nexport const userPermissionGrantExpiresInSchema = z.enum([\n \"1h\",\n \"24h\",\n \"7d\",\n \"always\",\n]);\n\nconst agentPermissionGrantScopeSchema = z.object({\n agentId: agentIdSchema,\n});\n\nexport const userPermissionGrantScopeSchema = agentPermissionGrantScopeSchema;\n\nconst userPermissionGrantResponseBaseSchema = z.object({\n connectorRef: connectorRefSchema,\n permission: permissionSchema,\n action: userPermissionGrantActionSchema,\n expiresAt: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nexport const userPermissionGrantResponseSchema =\n userPermissionGrantResponseBaseSchema.extend({\n agentId: agentIdSchema,\n });\n\nconst listUserPermissionGrantsQuerySchema = userPermissionGrantScopeSchema;\n\nconst applyUserPermissionGrantBaseSchema = z.object({\n permission: permissionSchema,\n});\n\nexport const applyUserPermissionGrantSchema = z.discriminatedUnion(\"action\", [\n applyUserPermissionGrantBaseSchema.extend({\n action: z.literal(\"allow\"),\n expiresIn: userPermissionGrantExpiresInSchema.optional(),\n }),\n applyUserPermissionGrantBaseSchema.extend({\n action: z.literal(\"deny\"),\n expiresIn: z.never().optional(),\n }),\n]);\n\nexport const applyUserPermissionGrantsRequestSchema =\n userPermissionGrantScopeSchema.and(\n z.object({\n connectorRef: connectorRefSchema,\n mode: userPermissionGrantApplyModeSchema,\n grants: z.array(applyUserPermissionGrantSchema),\n }),\n );\n\nexport const zeroUserPermissionGrantsContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/user-permission-grants\",\n headers: authHeadersSchema,\n query: listUserPermissionGrantsQuerySchema,\n responses: {\n 200: z.array(userPermissionGrantResponseSchema),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"List current user's active permission grants for an agent\",\n },\n apply: {\n method: \"PUT\",\n path: \"/api/zero/user-permission-grants/apply\",\n headers: authHeadersSchema,\n body: applyUserPermissionGrantsRequestSchema,\n responses: {\n 200: z.array(userPermissionGrantResponseSchema),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary:\n \"Apply current user's explicit permission grant changes for one connector\",\n },\n});\n\nexport type UserPermissionGrantAction = z.infer<\n typeof userPermissionGrantActionSchema\n>;\nexport type UserPermissionGrantApplyMode = z.infer<\n typeof userPermissionGrantApplyModeSchema\n>;\nexport type UserPermissionGrantExpiresIn = z.infer<\n typeof userPermissionGrantExpiresInSchema\n>;\nexport type UserPermissionGrantResponse = z.infer<\n typeof userPermissionGrantResponseSchema\n>;\nexport type ListUserPermissionGrantsQuery = z.infer<\n typeof listUserPermissionGrantsQuerySchema\n>;\nexport type ApplyUserPermissionGrant = z.infer<\n typeof applyUserPermissionGrantSchema\n>;\nexport type ApplyUserPermissionGrantsRequest = z.infer<\n typeof applyUserPermissionGrantsRequestSchema\n>;\nexport type ZeroUserPermissionGrantsContract =\n typeof zeroUserPermissionGrantsContract;\n","import { z } from \"zod\";\n\nconst CONNECTOR_REF_MAX_LENGTH = 64;\nconst CONNECTOR_AUTH_METHOD_ID_MAX_LENGTH = 50;\n\nconst connectorIdentityPattern = /^[a-z0-9][a-z0-9-]*$/u;\n\nexport const connectorRefSchema = z\n .string()\n .min(1)\n .max(CONNECTOR_REF_MAX_LENGTH)\n .regex(connectorIdentityPattern);\n\nexport const connectorAuthMethodIdSchema = z\n .string()\n .min(1)\n .max(CONNECTOR_AUTH_METHOD_ID_MAX_LENGTH)\n .regex(connectorIdentityPattern);\n\nexport type ConnectorRef = z.infer<typeof connectorRefSchema>;\nexport type ConnectorAuthMethodId = z.infer<typeof connectorAuthMethodIdSchema>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { connectorRefSchema } from \"./connector-identity\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n/**\n * User connector enabled types schema\n * Sparse model: only connector types explicitly enabled by the user for this\n * agent.\n */\nexport const userConnectorEnabledTypesSchema = z.object({\n enabledTypes: z.array(connectorRefSchema),\n});\nexport type UserConnectorEnabledTypes = z.infer<\n typeof userConnectorEnabledTypesSchema\n>;\n\nexport const userConnectorUpdateSchema = userConnectorEnabledTypesSchema.extend(\n {\n operation: z.enum([\"replace\", \"add\", \"remove\"]).optional(),\n },\n);\nexport type UserConnectorUpdate = z.infer<typeof userConnectorUpdateSchema>;\n\n/**\n * Contract for GET/PUT /api/zero/agents/:id/user-connectors\n */\nexport const zeroUserConnectorsContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/agents/:id/user-connectors\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n responses: {\n 200: userConnectorEnabledTypesSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get enabled connector types for user on agent\",\n },\n update: {\n method: \"PUT\",\n path: \"/api/zero/agents/:id/user-connectors\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n body: userConnectorUpdateSchema,\n responses: {\n 200: userConnectorEnabledTypesSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Update enabled connector types for user on agent\",\n },\n});\nexport type ZeroUserConnectorsContract = typeof zeroUserConnectorsContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n/**\n * Per-agent custom connector enablement schema.\n * Sparse model: only custom connector ids explicitly enabled by the user\n * for this agent.\n */\nexport const agentCustomConnectorEnabledIdsSchema = z.object({\n enabledIds: z.array(z.string().uuid()),\n});\nexport type AgentCustomConnectorEnabledIds = z.infer<\n typeof agentCustomConnectorEnabledIdsSchema\n>;\n\nexport const agentCustomConnectorUpdateSchema =\n agentCustomConnectorEnabledIdsSchema.extend({\n operation: z.enum([\"replace\", \"add\", \"remove\"]).optional(),\n });\nexport type AgentCustomConnectorUpdate = z.infer<\n typeof agentCustomConnectorUpdateSchema\n>;\n\n/**\n * Contract for GET/PUT /api/zero/agents/:id/custom-connectors\n *\n * Mirrors {@link import(\"./user-connectors\").zeroUserConnectorsContract} but\n * over org custom connector UUIDs (not the built-in ConnectorType enum).\n * A user's secret alone does not authorize an agent — they must also enable\n * the custom connector here for every agent that should use it.\n */\nexport const zeroAgentCustomConnectorsContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/agents/:id/custom-connectors\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n responses: {\n 200: agentCustomConnectorEnabledIdsSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get enabled custom connector ids for user on agent\",\n },\n update: {\n method: \"PUT\",\n path: \"/api/zero/agents/:id/custom-connectors\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n body: agentCustomConnectorUpdateSchema,\n responses: {\n 200: agentCustomConnectorEnabledIdsSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Update enabled custom connector ids for user on agent\",\n },\n});\nexport type ZeroAgentCustomConnectorsContract =\n typeof zeroAgentCustomConnectorsContract;\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n zeroGoalsContract,\n type ZeroGoalCreateRequest,\n type ZeroGoalEditRequest,\n type ZeroGoalResponse,\n} from \"@vm0/api-contracts/contracts/zero-goals\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport async function createGoal(\n body: ZeroGoalCreateRequest,\n): Promise<ZeroGoalResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroGoalsContract, config);\n const result = await client.create({ body });\n if (result.status === 201) return result.body;\n handleError(result, \"Failed to create goal\");\n}\n\nexport async function editGoal(\n body: ZeroGoalEditRequest,\n): Promise<ZeroGoalResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroGoalsContract, config);\n const result = await client.edit({ body });\n if (result.status === 200) return result.body;\n handleError(result, \"Failed to edit goal\");\n}\n\nexport async function getGoal(): Promise<ZeroGoalResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroGoalsContract, config);\n const result = await client.get({ headers: {} });\n if (result.status === 200) return result.body;\n handleError(result, \"Goal not found\");\n}\n\nexport async function completeGoal(): Promise<ZeroGoalResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroGoalsContract, config);\n const result = await client.complete({});\n if (result.status === 200) return result.body;\n handleError(result, \"Failed to complete goal\");\n}\n\nexport async function blockGoal(): Promise<ZeroGoalResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroGoalsContract, config);\n const result = await client.block({});\n if (result.status === 200) return result.body;\n handleError(result, \"Failed to block goal\");\n}\n\nexport async function pauseGoal(): Promise<ZeroGoalResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroGoalsContract, config);\n const result = await client.pause({});\n if (result.status === 200) return result.body;\n handleError(result, \"Failed to pause goal\");\n}\n\nexport async function resumeGoal(): Promise<ZeroGoalResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroGoalsContract, config);\n const result = await client.resume({});\n if (result.status === 200) return result.body;\n handleError(result, \"Failed to resume goal\");\n}\n\nexport async function clearGoal(): Promise<{ readonly cleared: true }> {\n const config = await getClientConfig();\n const client = initClient(zeroGoalsContract, config);\n const result = await client.clear({});\n if (result.status === 200) return result.body;\n handleError(result, \"Failed to clear goal\");\n}\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport type {\n ConnectorAuthMethodId,\n ConnectorRef,\n} from \"@vm0/api-contracts/contracts/connector-identity\";\nimport {\n zeroConnectorManualGrantContract,\n zeroConnectorsByTypeContract,\n zeroConnectorsMainContract,\n} from \"@vm0/api-contracts/contracts/zero-connectors\";\nimport {\n zeroConnectorCatalogContract,\n type PublicConnectorCatalogListResponse,\n type PublicConnectorCatalogPermissionDetail,\n type PublicConnectorCatalogStatusResponse,\n} from \"@vm0/api-contracts/contracts/zero-connector-catalog\";\nimport {\n zeroConnectorCheckContract,\n type ConnectorCheckDiagnosticResult,\n type ConnectorCheckRequest,\n} from \"@vm0/api-contracts/contracts/zero-connector-check\";\nimport {\n zeroCustomConnectorByIdContract,\n zeroCustomConnectorsContract,\n type CustomConnectorResponse,\n} from \"@vm0/api-contracts/contracts/zero-custom-connectors\";\nimport type {\n ConnectorListResponse,\n ConnectorResponse,\n} from \"@vm0/api-contracts/contracts/connector-schemas\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\n/**\n * List all connectors for the authenticated user (zero proxy)\n */\nexport async function listZeroConnectors(): Promise<ConnectorListResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorsMainContract, config);\n\n const result = await client.list({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list connectors\");\n}\n\nexport async function listZeroConnectorCatalog(): Promise<PublicConnectorCatalogListResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorCatalogContract, config);\n\n const result = await client.list({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list connector catalog\");\n}\n\nexport async function listZeroConnectorCatalogStatus(): Promise<PublicConnectorCatalogStatusResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorCatalogContract, config);\n\n const result = await client.status({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list connector catalog status\");\n}\n\nexport async function getZeroConnectorCatalogPermissions(\n connectorRef: string,\n): Promise<PublicConnectorCatalogPermissionDetail | null> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorCatalogContract, config);\n\n const result = await client.permissions({\n params: { connectorRef },\n });\n\n if (result.status === 200) {\n if (result.body.permissions.connectorRef !== connectorRef) {\n throw new Error(\n `Permission metadata connectorRef mismatch: expected ${connectorRef}, got ${result.body.permissions.connectorRef}`,\n );\n }\n return result.body.permissions;\n }\n\n if (result.status === 404) {\n return null;\n }\n\n handleError(\n result,\n `Failed to get connector permission metadata for \"${connectorRef}\"`,\n );\n}\n\nexport async function diagnoseZeroConnectorCheck(\n request: ConnectorCheckRequest,\n): Promise<ConnectorCheckDiagnosticResult> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorCheckContract, {\n ...config,\n validateResponse: true,\n });\n\n const result = await client.check({ body: request });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to diagnose connector\");\n}\n\n/**\n * Get a connector by type (zero proxy)\n * Returns null if not connected (404 response)\n */\nexport async function getZeroConnector(\n type: ConnectorRef,\n): Promise<ConnectorResponse | null> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorsByTypeContract, config);\n\n const result = await client.get({\n params: { type },\n });\n\n if (result.status === 200) {\n return result.body;\n }\n\n if (result.status === 404) {\n return null;\n }\n\n handleError(result, `Failed to get connector \"${type}\"`);\n}\n\nexport async function connectZeroConnectorManualGrant(\n type: ConnectorRef,\n authMethod: ConnectorAuthMethodId,\n values: Record<string, string>,\n): Promise<ConnectorResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroConnectorManualGrantContract, config);\n\n const result = await client.connect({\n params: { type },\n body: { authMethod, values },\n });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, `Failed to connect connector \"${type}\"`);\n}\n\nexport async function listZeroCustomConnectors(): Promise<\n CustomConnectorResponse[]\n> {\n const config = await getClientConfig();\n const client = initClient(zeroCustomConnectorsContract, config);\n\n const result = await client.list({ headers: {} });\n if (result.status === 200) {\n return result.body.connectors;\n }\n\n handleError(result, \"Failed to list custom connectors\");\n}\n\nexport async function getZeroCustomConnector(\n id: string,\n): Promise<CustomConnectorResponse | null> {\n const config = await getClientConfig();\n const client = initClient(zeroCustomConnectorByIdContract, config);\n\n const result = await client.get({ params: { id }, headers: {} });\n if (result.status === 200) {\n return result.body;\n }\n if (result.status === 404) {\n return null;\n }\n\n handleError(result, `Failed to get custom connector \"${id}\"`);\n}\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport {\n connectorAuthMethodIdSchema,\n connectorRefSchema,\n} from \"./connector-identity\";\nimport { apiErrorSchema } from \"./errors\";\nimport {\n connectorOauthDeviceAuthSessionPollRequestSchema,\n connectorOauthDeviceAuthSessionPollResponseSchema,\n connectorOauthDeviceAuthSessionStartResponseSchema,\n connectorExternalCodeSessionCompleteRequestSchema,\n connectorExternalCodeSessionCompleteResponseSchema,\n connectorExternalCodeSessionStartResponseSchema,\n connectorOauthStartResponseSchema,\n connectorListResponseSchema,\n connectorResponseSchema,\n scopeDiffResponseSchema,\n} from \"./connector-schemas\";\n\nconst c = initContract();\n\n/**\n * Zero contract for GET /api/zero/connectors\n * Proxies to GET /api/connectors\n */\nexport const zeroConnectorsMainContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/connectors\",\n headers: authHeadersSchema,\n responses: {\n 200: connectorListResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"List all connectors (zero proxy)\",\n },\n});\n\n/**\n * Zero contract for GET/DELETE /api/zero/connectors/:type\n * Proxies to GET/DELETE /api/connectors/:type\n */\nexport const zeroConnectorsByTypeContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/connectors/:type\",\n headers: authHeadersSchema,\n pathParams: z.object({ type: connectorRefSchema }),\n responses: {\n 200: connectorResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get connector by type (zero proxy)\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/connectors/:type\",\n headers: authHeadersSchema,\n pathParams: z.object({ type: connectorRefSchema }),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Disconnect a connector (zero proxy)\",\n },\n});\n\n/**\n * Zero contract for GET /api/zero/connectors/:type/scope-diff\n * App-layer endpoint (direct service call, no proxy)\n */\nexport const zeroConnectorScopeDiffContract = c.router({\n getScopeDiff: {\n method: \"GET\",\n path: \"/api/zero/connectors/:type/scope-diff\",\n headers: authHeadersSchema,\n pathParams: z.object({ type: connectorRefSchema }),\n responses: {\n 200: scopeDiffResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get scope diff for a connector\",\n },\n});\n\nexport const zeroConnectorOauthStartContract = c.router({\n start: {\n method: \"POST\",\n path: \"/api/zero/connectors/:type/oauth/start\",\n headers: authHeadersSchema,\n pathParams: z.object({ type: connectorRefSchema }),\n body: z.object({\n authMethod: connectorAuthMethodIdSchema,\n agentId: z.uuid().optional(),\n authorizeAgent: z.literal(true).optional(),\n callbackTarget: z.literal(\"app\").optional(),\n }),\n responses: {\n 200: connectorOauthStartResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Create connector OAuth authorization URL\",\n },\n});\n\nexport const zeroConnectorOauthContinueContract = c.router({\n continue: {\n method: \"GET\",\n path: \"/api/zero/connectors/:type/oauth/continue\",\n pathParams: z.object({ type: connectorRefSchema }),\n query: z.object({ state: z.string().regex(/^[0-9a-f]{64}$/) }),\n responses: {\n 307: c.noBody(),\n 400: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Continue connector OAuth in the browser\",\n },\n});\n\nexport const zeroConnectorOpenIdStartContract = c.router({\n start: {\n method: \"POST\",\n path: \"/api/zero/connectors/:type/openid/start\",\n headers: authHeadersSchema,\n pathParams: z.object({ type: connectorRefSchema }),\n body: z.object({\n authMethod: connectorAuthMethodIdSchema,\n agentId: z.uuid().optional(),\n authorizeAgent: z.literal(true).optional(),\n }),\n responses: {\n 200: connectorOauthStartResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Create connector OpenID handoff and authorization URL\",\n },\n});\n\nexport const zeroConnectorManualGrantContract = c.router({\n connect: {\n method: \"POST\",\n path: \"/api/zero/connectors/:type/manual-grant\",\n headers: authHeadersSchema,\n pathParams: z.object({ type: connectorRefSchema }),\n body: z.object({\n authMethod: connectorAuthMethodIdSchema,\n agentId: z.uuid().optional(),\n authorizeAgent: z.literal(true).optional(),\n values: z.record(z.string(), z.string()),\n }),\n responses: {\n 200: connectorResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Connect a connector with a manual grant\",\n },\n});\n\nexport const zeroConnectorNoAuthGrantContract = c.router({\n connect: {\n method: \"POST\",\n path: \"/api/zero/connectors/:type/no-auth\",\n headers: authHeadersSchema,\n pathParams: z.object({ type: connectorRefSchema }),\n body: z.object({\n authMethod: connectorAuthMethodIdSchema,\n agentId: z.uuid().optional(),\n authorizeAgent: z.literal(true).optional(),\n }),\n responses: {\n 200: connectorResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Enable a connector with a no-auth grant\",\n },\n});\n\nexport const zeroConnectorOauthDeviceAuthSessionContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/connectors/:type/oauth/device/sessions\",\n headers: authHeadersSchema,\n pathParams: z.object({ type: connectorRefSchema }),\n body: z.object({\n authMethod: connectorAuthMethodIdSchema,\n agentId: z.uuid().optional(),\n authorizeAgent: z.literal(true).optional(),\n options: z.record(z.string(), z.string()).optional(),\n }),\n responses: {\n 200: connectorOauthDeviceAuthSessionStartResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Create connector OAuth device authorization session\",\n },\n poll: {\n method: \"POST\",\n path: \"/api/zero/connectors/:type/oauth/device/sessions/:sessionId/poll\",\n headers: authHeadersSchema,\n pathParams: z.object({\n type: connectorRefSchema,\n sessionId: z.uuid(),\n }),\n body: connectorOauthDeviceAuthSessionPollRequestSchema,\n responses: {\n 200: connectorOauthDeviceAuthSessionPollResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Poll connector OAuth device authorization session\",\n },\n});\n\nexport const zeroConnectorExternalCodeSessionContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/connectors/:type/external-code/sessions\",\n headers: authHeadersSchema,\n pathParams: z.object({ type: connectorRefSchema }),\n body: z.object({\n authMethod: connectorAuthMethodIdSchema,\n agentId: z.uuid().optional(),\n authorizeAgent: z.literal(true).optional(),\n }),\n responses: {\n 200: connectorExternalCodeSessionStartResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Create connector external-code authorization session\",\n },\n complete: {\n method: \"POST\",\n path: \"/api/zero/connectors/:type/external-code/sessions/:sessionId/complete\",\n headers: authHeadersSchema,\n pathParams: z.object({\n type: connectorRefSchema,\n sessionId: z.uuid(),\n }),\n body: connectorExternalCodeSessionCompleteRequestSchema,\n responses: {\n 200: connectorExternalCodeSessionCompleteResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Complete connector external-code authorization session\",\n },\n});\n\nconst connectorSearchItemSchema = z.object({\n id: connectorRefSchema,\n label: z.string(),\n description: z.string(),\n authMethods: z.array(connectorAuthMethodIdSchema),\n});\n\nconst connectorSearchResponseSchema = z.object({\n connectors: z.array(connectorSearchItemSchema),\n});\n\nexport type ConnectorSearchItem = z.infer<typeof connectorSearchItemSchema>;\nexport type ConnectorSearchResponse = z.infer<\n typeof connectorSearchResponseSchema\n>;\n\n/**\n * Zero contract for GET /api/zero/connectors/search\n * Returns all available connector type definitions with optional keyword search\n */\nexport const zeroConnectorsSearchContract = c.router({\n search: {\n method: \"GET\",\n path: \"/api/zero/connectors/search\",\n headers: authHeadersSchema,\n query: z.object({ keyword: z.string().optional() }),\n responses: {\n 200: connectorSearchResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Search available connector types\",\n },\n});\n\nexport type ZeroConnectorsMainContract = typeof zeroConnectorsMainContract;\nexport type ZeroConnectorsByTypeContract = typeof zeroConnectorsByTypeContract;\nexport type ZeroConnectorScopeDiffContract =\n typeof zeroConnectorScopeDiffContract;\nexport type ZeroConnectorManualGrantContract =\n typeof zeroConnectorManualGrantContract;\nexport type ZeroConnectorNoAuthGrantContract =\n typeof zeroConnectorNoAuthGrantContract;\nexport type ZeroConnectorOauthDeviceAuthSessionContract =\n typeof zeroConnectorOauthDeviceAuthSessionContract;\nexport type ZeroConnectorExternalCodeSessionContract =\n typeof zeroConnectorExternalCodeSessionContract;\nexport type ZeroConnectorsSearchContract = typeof zeroConnectorsSearchContract;\n","import { z } from \"zod\";\n\nimport {\n connectorAuthMethodIdSchema,\n connectorRefSchema,\n} from \"./connector-identity\";\n\n/**\n * Connector response schema\n */\nexport const connectorResponseConnectionStatusSchema = z.enum([\n \"connected\",\n \"reconnect-required\",\n]);\n\nexport type ConnectorResponseConnectionStatus = z.infer<\n typeof connectorResponseConnectionStatusSchema\n>;\n\nexport const connectorReconnectReasonSchema = z.enum([\n \"provider_session_expired\",\n \"authorization_expired_or_revoked\",\n \"credential_expired\",\n]);\n\nexport type ConnectorReconnectReason = z.infer<\n typeof connectorReconnectReasonSchema\n>;\n\nexport const connectorResponseSchema = z.object({\n id: z.uuid(),\n type: connectorRefSchema,\n authMethod: connectorAuthMethodIdSchema,\n externalId: z.string().nullable(),\n externalUsername: z.string().nullable(),\n externalEmail: z.string().nullable(),\n oauthScopes: z.array(z.string()).nullable(),\n connectionStatus: connectorResponseConnectionStatusSchema,\n reconnectReason: connectorReconnectReasonSchema.nullable().default(null),\n tokenExpiresAt: z.string().nullable().default(null),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nexport type ConnectorResponse = z.infer<typeof connectorResponseSchema>;\n\nexport const connectorProvidedBindingNamespaceSchema = z.enum([\n \"secrets\",\n \"vars\",\n]);\n\nexport const connectorProvidedBindingSourceSchema = z.discriminatedUnion(\n \"kind\",\n [\n z.object({\n kind: z.literal(\"connector-secret\"),\n name: z.string(),\n }),\n z.object({\n kind: z.literal(\"connector-variable\"),\n name: z.string(),\n }),\n ],\n);\n\nexport const connectorProvidedBindingSchema = z.object({\n connectorType: connectorRefSchema,\n authMethod: connectorAuthMethodIdSchema,\n namespace: connectorProvidedBindingNamespaceSchema,\n name: z.string(),\n optional: z.boolean(),\n source: connectorProvidedBindingSourceSchema,\n});\n\nexport type ConnectorProvidedBinding = z.infer<\n typeof connectorProvidedBindingSchema\n>;\nexport type ConnectorProvidedBindingNamespace = z.infer<\n typeof connectorProvidedBindingNamespaceSchema\n>;\n\n/**\n * Names that a stored connector guarantees at runtime. Optional bindings are\n * omitted because they describe possible connector supply, not guaranteed\n * connector supply.\n */\nexport function guaranteedConnectorProvidedBindingNames(args: {\n readonly bindings: readonly ConnectorProvidedBinding[];\n readonly namespace: ConnectorProvidedBindingNamespace;\n}): Set<string> {\n const names = new Set<string>();\n for (const binding of args.bindings) {\n if (binding.namespace === args.namespace && !binding.optional) {\n names.add(binding.name);\n }\n }\n return names;\n}\n\n/**\n * List connectors response\n */\nexport const connectorListResponseSchema = z.object({\n connectors: z.array(connectorResponseSchema),\n configuredTypes: z.array(connectorRefSchema),\n connectorProvidedBindings: z\n .array(connectorProvidedBindingSchema)\n .default([]),\n});\n\nexport type ConnectorListResponse = z.infer<typeof connectorListResponseSchema>;\n\n/**\n * Scope diff response schema\n */\nexport const scopeDiffResponseSchema = z.object({\n addedScopes: z.array(z.string()),\n removedScopes: z.array(z.string()),\n currentScopes: z.array(z.string()),\n storedScopes: z.array(z.string()),\n});\n\nexport type ScopeDiffResponse = z.infer<typeof scopeDiffResponseSchema>;\n\nexport const connectorOauthStartResponseSchema = z.object({\n authorizationUrl: z.string(),\n});\n\nexport type ConnectorOauthStartResponse = z.infer<\n typeof connectorOauthStartResponseSchema\n>;\n\nexport const connectorOauthDeviceAuthSessionStartResponseSchema = z.object({\n sessionId: z.uuid(),\n sessionToken: z.string(),\n type: connectorRefSchema,\n status: z.literal(\"pending\"),\n userCode: z.string(),\n verificationUri: z.string(),\n verificationUriComplete: z.string().optional(),\n expiresIn: z.number(),\n interval: z.number(),\n});\n\nexport type ConnectorOauthDeviceAuthSessionStartResponse = z.infer<\n typeof connectorOauthDeviceAuthSessionStartResponseSchema\n>;\n\nexport const connectorOauthDeviceAuthSessionPollRequestSchema = z.object({\n sessionToken: z.string(),\n});\n\nexport type ConnectorOauthDeviceAuthSessionPollRequest = z.infer<\n typeof connectorOauthDeviceAuthSessionPollRequestSchema\n>;\n\nexport const connectorOauthDeviceAuthSessionPollResponseSchema =\n z.discriminatedUnion(\"status\", [\n z.object({\n status: z.literal(\"pending\"),\n interval: z.number(),\n }),\n z.object({\n status: z.literal(\"complete\"),\n connector: connectorResponseSchema,\n }),\n z.object({\n status: z.literal(\"denied\"),\n errorCode: z.string().optional(),\n errorMessage: z.string().optional(),\n }),\n z.object({\n status: z.literal(\"expired\"),\n errorCode: z.string().optional(),\n errorMessage: z.string().optional(),\n }),\n z.object({\n status: z.literal(\"error\"),\n errorCode: z.string().optional(),\n errorMessage: z.string().optional(),\n }),\n ]);\n\nexport type ConnectorOauthDeviceAuthSessionPollResponse = z.infer<\n typeof connectorOauthDeviceAuthSessionPollResponseSchema\n>;\n\nexport const connectorExternalCodeSessionStartResponseSchema = z.object({\n sessionId: z.uuid(),\n sessionToken: z.string(),\n type: connectorRefSchema,\n status: z.literal(\"pending\"),\n authorizationUrl: z.string(),\n expiresIn: z.number(),\n});\n\nexport type ConnectorExternalCodeSessionStartResponse = z.infer<\n typeof connectorExternalCodeSessionStartResponseSchema\n>;\n\nexport const connectorExternalCodeSessionCompleteRequestSchema = z.object({\n sessionToken: z.string(),\n code: z.string().trim().min(1).max(4096),\n});\n\nexport type ConnectorExternalCodeSessionCompleteRequest = z.infer<\n typeof connectorExternalCodeSessionCompleteRequestSchema\n>;\n\nexport const connectorExternalCodeSessionCompleteResponseSchema = z.object({\n status: z.literal(\"complete\"),\n connector: connectorResponseSchema,\n});\n\nexport type ConnectorExternalCodeSessionCompleteResponse = z.infer<\n typeof connectorExternalCodeSessionCompleteResponseSchema\n>;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport {\n connectorAuthMethodIdSchema,\n connectorRefSchema,\n} from \"./connector-identity\";\nimport { connectorReconnectReasonSchema } from \"./connector-schemas\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst publicConnectorCatalogAuthMethodSummarySchema = z.object({\n id: connectorAuthMethodIdSchema,\n label: z.string(),\n description: z.string().nullable(),\n grantKind: z.enum([\n \"none\",\n \"manual\",\n \"auth-code\",\n \"openid-auth\",\n \"external-code\",\n \"device-auth\",\n \"managed\",\n ]),\n});\n\nconst publicConnectorCatalogPermissionSummarySchema = z.object({\n hasPermissions: z.boolean(),\n permissionCount: z.number().int().nonnegative(),\n hasCategories: z.boolean(),\n hasDefaultPolicyOverrides: z.boolean(),\n});\n\nexport const publicConnectorCatalogIconSchema = z.object({\n url: z.url({ protocol: /^https$/u }).max(2048),\n invertInDarkMode: z.boolean(),\n scale: z.number().min(1).max(3).optional(),\n});\n\nconst publicConnectorCatalogCategoryGroupSchema = z.object({\n id: z.string(),\n label: z.string(),\n menuLabel: z.string(),\n});\n\nconst publicConnectorCatalogCategorySchema = z.object({\n id: z.string(),\n label: z.string(),\n menuLabel: z.string(),\n groupId: z.string().nullable(),\n});\n\nconst publicConnectorCatalogCategoryMetadataSchema = z.object({\n categories: z.array(publicConnectorCatalogCategorySchema),\n groups: z.array(publicConnectorCatalogCategoryGroupSchema),\n});\n\nconst publicConnectorCatalogItemSchema = z.object({\n connectorRef: connectorRefSchema,\n label: z.string(),\n description: z.string(),\n icon: publicConnectorCatalogIconSchema,\n category: z.string(),\n generation: z.array(z.string()),\n tags: z.array(z.string()),\n authMethods: z.array(publicConnectorCatalogAuthMethodSummarySchema),\n permissionSummary: publicConnectorCatalogPermissionSummarySchema,\n});\n\nconst publicConnectorCatalogManualFieldSchema = z.object({\n id: z.string(),\n label: z.string(),\n required: z.boolean(),\n placeholder: z.string().nullable(),\n inputType: z.enum([\"password\", \"text\"]),\n});\n\nconst publicConnectorCatalogStartOptionChoiceSchema = z.object({\n value: z.string(),\n label: z.string(),\n});\n\nconst publicConnectorCatalogStartOptionSchema = z.object({\n id: z.string(),\n kind: z.literal(\"select\"),\n label: z.string(),\n required: z.boolean(),\n defaultValue: z.string().nullable(),\n options: z.array(publicConnectorCatalogStartOptionChoiceSchema),\n});\n\nconst publicConnectorCatalogAuthMethodDetailSchema =\n publicConnectorCatalogAuthMethodSummarySchema.extend({\n manualFields: z.array(publicConnectorCatalogManualFieldSchema),\n startOptions: z.array(publicConnectorCatalogStartOptionSchema),\n });\n\nconst publicConnectorCatalogDetailSchema =\n publicConnectorCatalogItemSchema.extend({\n authMethods: z.array(publicConnectorCatalogAuthMethodDetailSchema),\n });\n\nconst publicConnectorCatalogListResponseSchema = z.object({\n connectors: z.array(publicConnectorCatalogItemSchema),\n categoryMetadata: publicConnectorCatalogCategoryMetadataSchema.optional(),\n});\n\nconst publicConnectorCatalogDetailResponseSchema = z.object({\n connector: publicConnectorCatalogDetailSchema,\n});\n\nconst publicConnectorCatalogConnectionStatusSchema = z.enum([\n \"not-connected\",\n \"connected\",\n \"scope-mismatch\",\n \"reconnect-required\",\n]);\n\nconst publicConnectorCatalogConnectionSchema = z.object({\n authMethod: connectorAuthMethodIdSchema,\n externalUsername: z.string().nullable(),\n externalEmail: z.string().nullable(),\n reconnectReason: connectorReconnectReasonSchema.nullable(),\n});\n\nconst publicConnectorCatalogStatusItemSchema =\n publicConnectorCatalogDetailSchema.extend({\n connection: publicConnectorCatalogConnectionSchema.nullable(),\n connected: z.boolean(),\n connectionStatus: publicConnectorCatalogConnectionStatusSchema,\n scopeMismatch: z.boolean(),\n authMethodSupportsRefresh: z.boolean(),\n tokenExpiresAt: z.string().nullable(),\n singleAuthCodeAuthMethodId: connectorAuthMethodIdSchema.nullable(),\n connectNotice: z.enum([\"google-security-warning\"]).nullable(),\n });\n\nconst publicConnectorCatalogStatusResponseSchema = z.object({\n connectors: z.array(publicConnectorCatalogStatusItemSchema),\n categoryMetadata: publicConnectorCatalogCategoryMetadataSchema.optional(),\n});\n\nconst publicFirewallPolicyValueSchema = z.enum([\"allow\", \"deny\", \"ask\"]);\n\nconst publicConnectorCatalogPermissionSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n});\n\nconst publicConnectorCatalogPermissionCategoriesSchema = z.object({\n categories: z.record(z.string(), z.string()),\n displayOrder: z.array(z.string()),\n});\n\nconst publicConnectorCatalogDefaultPolicySchema = z.object({\n permissionDefault: publicFirewallPolicyValueSchema,\n permissionOverrides: z.record(z.string(), z.array(z.string())).optional(),\n unknownPolicy: publicFirewallPolicyValueSchema,\n});\n\nconst publicConnectorCatalogPermissionDetailSchema = z.object({\n connectorRef: connectorRefSchema,\n label: z.string(),\n icon: publicConnectorCatalogIconSchema,\n permissionCount: z.number().int().nonnegative(),\n permissions: z.array(publicConnectorCatalogPermissionSchema),\n categories: publicConnectorCatalogPermissionCategoriesSchema.nullable(),\n defaultPolicy: publicConnectorCatalogDefaultPolicySchema,\n});\n\nconst publicConnectorCatalogPermissionDetailResponseSchema = z.object({\n permissions: publicConnectorCatalogPermissionDetailSchema,\n});\n\nconst connectorCatalogPathParamsSchema = z.object({\n connectorRef: connectorRefSchema,\n});\n\nexport type PublicConnectorCatalogAuthMethodSummary = z.infer<\n typeof publicConnectorCatalogAuthMethodSummarySchema\n>;\nexport type PublicConnectorCatalogPermissionSummary = z.infer<\n typeof publicConnectorCatalogPermissionSummarySchema\n>;\nexport type PublicConnectorCatalogIcon = z.infer<\n typeof publicConnectorCatalogIconSchema\n>;\nexport type PublicConnectorCatalogCategoryGroup = z.infer<\n typeof publicConnectorCatalogCategoryGroupSchema\n>;\nexport type PublicConnectorCatalogCategory = z.infer<\n typeof publicConnectorCatalogCategorySchema\n>;\nexport type PublicConnectorCatalogCategoryMetadata = z.infer<\n typeof publicConnectorCatalogCategoryMetadataSchema\n>;\nexport type PublicConnectorCatalogItem = z.infer<\n typeof publicConnectorCatalogItemSchema\n>;\nexport type PublicConnectorCatalogManualField = z.infer<\n typeof publicConnectorCatalogManualFieldSchema\n>;\nexport type PublicConnectorCatalogStartOption = z.infer<\n typeof publicConnectorCatalogStartOptionSchema\n>;\nexport type PublicConnectorCatalogAuthMethodDetail = z.infer<\n typeof publicConnectorCatalogAuthMethodDetailSchema\n>;\nexport type PublicConnectorCatalogDetail = z.infer<\n typeof publicConnectorCatalogDetailSchema\n>;\nexport type PublicConnectorCatalogListResponse = z.infer<\n typeof publicConnectorCatalogListResponseSchema\n>;\nexport type PublicConnectorCatalogDetailResponse = z.infer<\n typeof publicConnectorCatalogDetailResponseSchema\n>;\nexport type PublicConnectorCatalogConnectionStatus = z.infer<\n typeof publicConnectorCatalogConnectionStatusSchema\n>;\nexport type PublicConnectorCatalogConnection = z.infer<\n typeof publicConnectorCatalogConnectionSchema\n>;\nexport type PublicConnectorCatalogStatusItem = z.infer<\n typeof publicConnectorCatalogStatusItemSchema\n>;\nexport type PublicConnectorCatalogStatusResponse = z.infer<\n typeof publicConnectorCatalogStatusResponseSchema\n>;\nexport type PublicConnectorCatalogPermissionDetail = z.infer<\n typeof publicConnectorCatalogPermissionDetailSchema\n>;\nexport type PublicConnectorCatalogPermissionDetailResponse = z.infer<\n typeof publicConnectorCatalogPermissionDetailResponseSchema\n>;\n\nexport const zeroConnectorCatalogContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/connector-catalog\",\n headers: authHeadersSchema,\n responses: {\n 200: publicConnectorCatalogListResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"List public connector catalog metadata\",\n },\n status: {\n method: \"GET\",\n path: \"/api/zero/connector-catalog/status\",\n headers: authHeadersSchema,\n responses: {\n 200: publicConnectorCatalogStatusResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"List public connector catalog metadata with connection status\",\n },\n get: {\n method: \"GET\",\n path: \"/api/zero/connector-catalog/:connectorRef\",\n headers: authHeadersSchema,\n pathParams: connectorCatalogPathParamsSchema,\n responses: {\n 200: publicConnectorCatalogDetailResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Get public connector catalog metadata\",\n },\n permissions: {\n method: \"GET\",\n path: \"/api/zero/connector-catalog/:connectorRef/permissions\",\n headers: authHeadersSchema,\n pathParams: connectorCatalogPathParamsSchema,\n responses: {\n 200: publicConnectorCatalogPermissionDetailResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Get public connector permission metadata\",\n },\n});\n\nexport type ZeroConnectorCatalogContract = typeof zeroConnectorCatalogContract;\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { connectorRefSchema } from \"./connector-identity\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst boundedNameSchema = z.string().min(1).max(255);\n\nconst connectorCheckUrlRequestSchema = z\n .object({\n mode: z.literal(\"url\"),\n method: z.string().min(1).max(16),\n url: z.string().min(1).max(8192),\n connectorRef: connectorRefSchema.optional(),\n environmentName: boundedNameSchema.optional(),\n })\n .strict();\n\nconst connectorCheckEnvironmentRequestSchema = z\n .object({\n mode: z.literal(\"environment\"),\n environmentName: boundedNameSchema,\n permission: boundedNameSchema.optional(),\n })\n .strict();\n\nexport const connectorCheckRequestSchema = z.discriminatedUnion(\"mode\", [\n connectorCheckUrlRequestSchema,\n connectorCheckEnvironmentRequestSchema,\n]);\n\nexport type ConnectorCheckRequest = z.infer<typeof connectorCheckRequestSchema>;\n\nconst connectorCheckIdentitySchema = z\n .object({\n connectorRef: connectorRefSchema,\n label: z.string().min(1),\n visibility: z.enum([\"available\", \"unavailable\"]),\n credentialResolution: z.enum([\"network-boundary\", \"none\"]),\n })\n .strict();\n\nconst connectorCheckCandidateSchema = z\n .object({\n connectorRef: connectorRefSchema,\n label: z.string().min(1),\n })\n .strict();\n\nconst connectorCheckNotScopedRunSchema = z\n .object({ status: z.literal(\"not-scoped\") })\n .strict();\n\nconst connectorCheckConfiguredRunSchema = z\n .object({\n status: z.literal(\"configured\"),\n bases: z.array(z.string().min(1)),\n })\n .strict();\n\nconst connectorCheckNotConfiguredRunSchema = z\n .object({ status: z.literal(\"not-configured\") })\n .strict();\n\nconst connectorCheckRunSchema = z.discriminatedUnion(\"status\", [\n connectorCheckNotScopedRunSchema,\n connectorCheckConfiguredRunSchema,\n connectorCheckNotConfiguredRunSchema,\n]);\n\nconst connectorCheckAllowPolicySchema = z\n .object({\n outcome: z.literal(\"allow\"),\n basis: z.enum([\"allow-list\", \"not-blocked\", \"no-policy\", \"unknown-policy\"]),\n })\n .strict();\n\nconst connectorCheckDenyPolicySchema = z\n .object({\n outcome: z.literal(\"deny\"),\n basis: z.enum([\"deny-list\", \"unknown-policy\"]),\n })\n .strict();\n\nconst connectorCheckAskPolicySchema = z\n .object({\n outcome: z.literal(\"ask\"),\n basis: z.enum([\"ask-list\", \"unknown-policy\"]),\n })\n .strict();\n\nconst connectorCheckUnavailablePolicySchema = z\n .object({\n outcome: z.literal(\"unavailable\"),\n basis: z.enum([\n \"not-run-scoped\",\n \"policies-unavailable\",\n \"connector-not-configured\",\n ]),\n })\n .strict();\n\nexport const connectorCheckPolicySchema = z.discriminatedUnion(\"outcome\", [\n connectorCheckAllowPolicySchema,\n connectorCheckDenyPolicySchema,\n connectorCheckAskPolicySchema,\n connectorCheckUnavailablePolicySchema,\n]);\n\nexport type ConnectorCheckPolicy = z.infer<typeof connectorCheckPolicySchema>;\n\nconst connectorCheckMatchedPermissionSchema = z\n .object({\n name: z.string().min(1),\n policy: connectorCheckPolicySchema,\n })\n .strict();\n\nconst connectorCheckMatchedPermissionsSchema = z\n .object({\n kind: z.literal(\"matched\"),\n permissions: z.array(connectorCheckMatchedPermissionSchema).min(1),\n })\n .strict();\n\nconst connectorCheckUnknownEndpointSchema = z\n .object({\n kind: z.literal(\"unknown-endpoint\"),\n policy: connectorCheckPolicySchema,\n })\n .strict();\n\nconst connectorCheckPermissionResultSchema = z.discriminatedUnion(\"kind\", [\n connectorCheckMatchedPermissionsSchema,\n connectorCheckUnknownEndpointSchema,\n]);\n\nconst connectorCheckResolvedUrlSchema = z\n .object({\n outcome: z.literal(\"resolved\"),\n mode: z.literal(\"url\"),\n connector: connectorCheckIdentitySchema,\n environmentNames: z.array(boundedNameSchema).nullable(),\n run: connectorCheckRunSchema,\n method: z.string().min(1).max(16),\n base: z.string().min(1),\n relativePath: z.string().min(1),\n permission: connectorCheckPermissionResultSchema,\n })\n .strict();\n\nconst connectorCheckResolvedEnvironmentSchema = z\n .object({\n outcome: z.literal(\"resolved\"),\n mode: z.literal(\"environment\"),\n connector: connectorCheckIdentitySchema,\n environmentName: boundedNameSchema,\n run: connectorCheckRunSchema,\n permission: connectorCheckPolicySchema.nullable(),\n })\n .strict();\n\nconst connectorCheckUnsafeInputSchema = z\n .object({\n outcome: z.literal(\"unsafe-input\"),\n reason: z.enum([\"invalid-method\", \"invalid-url\", \"unsafe-path\"]),\n })\n .strict();\n\nconst connectorCheckUnknownConnectorSchema = z\n .object({ outcome: z.literal(\"unknown-connector\") })\n .strict();\n\nconst connectorCheckUnknownEnvironmentSchema = z\n .object({ outcome: z.literal(\"unknown-environment\") })\n .strict();\n\nconst connectorCheckNoMatchSchema = z\n .object({\n outcome: z.literal(\"no-match\"),\n scope: z.enum([\"run\", \"catalog\"]),\n })\n .strict();\n\nconst connectorCheckAmbiguousSchema = z\n .object({\n outcome: z.literal(\"ambiguous\"),\n candidates: z.array(connectorCheckCandidateSchema).min(2),\n })\n .strict();\n\nconst connectorCheckMismatchSchema = z\n .object({\n outcome: z.literal(\"connector-mismatch\"),\n connector: connectorCheckIdentitySchema,\n })\n .strict();\n\nconst connectorCheckEnvironmentNotOwnedSchema = z\n .object({\n outcome: z.literal(\"environment-not-owned\"),\n connector: connectorCheckIdentitySchema,\n })\n .strict();\n\nconst connectorCheckEnvironmentNotUsedSchema = z\n .object({\n outcome: z.literal(\"environment-not-used\"),\n connector: connectorCheckIdentitySchema,\n environmentNames: z.array(boundedNameSchema),\n })\n .strict();\n\nconst connectorCheckUnresolvedDynamicBaseSchema = z\n .object({\n outcome: z.literal(\"unresolved-dynamic-base\"),\n connector: connectorCheckIdentitySchema,\n })\n .strict();\n\nconst connectorCheckRunContextUnavailableSchema = z\n .object({ outcome: z.literal(\"run-context-unavailable\") })\n .strict();\n\nexport const connectorCheckDiagnosticResultSchema = z.union([\n connectorCheckResolvedUrlSchema,\n connectorCheckResolvedEnvironmentSchema,\n connectorCheckUnsafeInputSchema,\n connectorCheckUnknownConnectorSchema,\n connectorCheckUnknownEnvironmentSchema,\n connectorCheckNoMatchSchema,\n connectorCheckAmbiguousSchema,\n connectorCheckMismatchSchema,\n connectorCheckEnvironmentNotOwnedSchema,\n connectorCheckEnvironmentNotUsedSchema,\n connectorCheckUnresolvedDynamicBaseSchema,\n connectorCheckRunContextUnavailableSchema,\n]);\n\nexport type ConnectorCheckDiagnosticResult = z.infer<\n typeof connectorCheckDiagnosticResultSchema\n>;\n\nexport const zeroConnectorCheckContract = c.router({\n check: {\n method: \"POST\",\n path: \"/api/zero/connectors/diagnostics/check\",\n headers: authHeadersSchema,\n body: connectorCheckRequestSchema,\n responses: {\n 200: connectorCheckDiagnosticResultSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Resolve connector runtime diagnostics\",\n },\n});\n\nexport type ZeroConnectorCheckContract = typeof zeroConnectorCheckContract;\n","import { z } from \"zod\";\nimport { initContract, authHeadersSchema } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const customConnectorFieldKindSchema = z.enum([\"secret\", \"variable\"]);\nexport type CustomConnectorFieldKind = z.infer<\n typeof customConnectorFieldKindSchema\n>;\n\nexport const customConnectorFieldSchema = z.object({\n key: z.string().min(1).max(64),\n label: z.string().min(1).max(128),\n kind: customConnectorFieldKindSchema,\n required: z.boolean(),\n description: z.string().max(512).optional(),\n});\nexport type CustomConnectorField = z.infer<typeof customConnectorFieldSchema>;\n\nexport const customConnectorHeaderInjectionSchema = z.object({\n name: z.string().min(1).max(128),\n valueTemplate: z.string().min(1).max(2048),\n});\nexport type CustomConnectorHeaderInjection = z.infer<\n typeof customConnectorHeaderInjectionSchema\n>;\n\nexport const customConnectorQueryInjectionSchema = z.object({\n name: z.string().min(1).max(128),\n valueTemplate: z.string().min(1).max(2048),\n});\nexport type CustomConnectorQueryInjection = z.infer<\n typeof customConnectorQueryInjectionSchema\n>;\n\n/**\n * Custom connector response — safe to return to any org member.\n * Never includes any secret material.\n */\nexport const customConnectorResponseSchema = z.object({\n id: z.string().uuid(),\n slug: z.string(),\n displayName: z.string(),\n prefixes: z.array(z.string()),\n headerName: z.string(),\n headerTemplate: z.string(),\n prefixTemplates: z.array(z.string()),\n fields: z.array(customConnectorFieldSchema),\n headerInjections: z.array(customConnectorHeaderInjectionSchema),\n queryInjections: z.array(customConnectorQueryInjectionSchema),\n connected: z.boolean(),\n missingRequiredFields: z.array(z.string()),\n configuredFieldKeys: z.array(z.string()),\n createdAt: z.string(),\n updatedAt: z.string(),\n hasSecret: z.boolean(),\n});\nexport type CustomConnectorResponse = z.infer<\n typeof customConnectorResponseSchema\n>;\n\nexport const customConnectorListResponseSchema = z.object({\n connectors: z.array(customConnectorResponseSchema),\n});\n\nexport const createCustomConnectorBodySchema = z.object({\n displayName: z.string().min(1).max(128),\n prefixes: z.array(z.string().min(1)).min(1).optional(),\n headerName: z.string().min(1).max(128).optional(),\n headerTemplate: z.string().min(1).optional(),\n prefixTemplates: z.array(z.string().min(1)).min(1).optional(),\n fields: z.array(customConnectorFieldSchema).optional(),\n headerInjections: z.array(customConnectorHeaderInjectionSchema).optional(),\n queryInjections: z.array(customConnectorQueryInjectionSchema).optional(),\n slug: z.string().optional(),\n});\nexport type CreateCustomConnectorBody = z.infer<\n typeof createCustomConnectorBodySchema\n>;\n\nexport const updateCustomConnectorBodySchema = z.object({\n displayName: z.string().min(1).max(128),\n prefixTemplates: z.array(z.string().min(1)).min(1),\n fields: z.array(customConnectorFieldSchema),\n headerInjections: z.array(customConnectorHeaderInjectionSchema),\n queryInjections: z.array(customConnectorQueryInjectionSchema),\n});\nexport type UpdateCustomConnectorBody = z.infer<\n typeof updateCustomConnectorBodySchema\n>;\n\nexport const setCustomConnectorSecretBodySchema = z.object({\n value: z.string().min(1),\n});\n\nexport const customConnectorValueInputSchema = z.object({\n key: z.string().min(1).max(64),\n kind: customConnectorFieldKindSchema,\n value: z.string().min(1),\n});\nexport type CustomConnectorValueInput = z.infer<\n typeof customConnectorValueInputSchema\n>;\n\nexport const patchCustomConnectorBodySchema = z.object({\n displayName: z.string().min(1).max(128),\n});\nexport type PatchCustomConnectorBody = z.infer<\n typeof patchCustomConnectorBodySchema\n>;\n\nexport const customConnectorProposalSchema = z.object({\n operation: z.enum([\"create\", \"update\"]),\n connectorId: z.string().uuid().optional(),\n displayName: z.string().min(1).max(128),\n prefixTemplates: z.array(z.string().min(1)).min(1),\n fields: z.array(customConnectorFieldSchema),\n headerInjections: z.array(customConnectorHeaderInjectionSchema),\n queryInjections: z.array(customConnectorQueryInjectionSchema),\n notes: z.string().max(2048).optional(),\n});\nexport type CustomConnectorProposal = z.infer<\n typeof customConnectorProposalSchema\n>;\n\nexport const saveCustomConnectorProposalBodySchema = z.object({\n proposal: customConnectorProposalSchema,\n values: z.array(customConnectorValueInputSchema),\n agentId: z.string().uuid().optional(),\n});\nexport type SaveCustomConnectorProposalBody = z.infer<\n typeof saveCustomConnectorProposalBodySchema\n>;\n\nexport const saveCustomConnectorProposalResponseSchema = z.object({\n connector: customConnectorResponseSchema,\n authorizedAgentId: z.string().uuid().optional(),\n});\nexport type SaveCustomConnectorProposalResponse = z.infer<\n typeof saveCustomConnectorProposalResponseSchema\n>;\n\n/**\n * Zero custom connectors contract for /api/zero/custom-connectors\n * GET: list all org custom connectors (with per-user hasSecret flag)\n * POST: create a new custom connector (admin only)\n */\nexport const zeroCustomConnectorsContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/custom-connectors\",\n headers: authHeadersSchema,\n responses: {\n 200: customConnectorListResponseSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"List org custom connectors\",\n },\n create: {\n method: \"POST\",\n path: \"/api/zero/custom-connectors\",\n headers: authHeadersSchema,\n body: createCustomConnectorBodySchema,\n responses: {\n 201: customConnectorResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Create an org custom connector\",\n },\n});\nexport type ZeroCustomConnectorsContract = typeof zeroCustomConnectorsContract;\n\n/**\n * Zero custom connector by id contract for /api/zero/custom-connectors/[id]\n * DELETE: delete a custom connector (admin only — cascades secrets)\n * PATCH: rename a custom connector (admin only — displayName only in v1)\n */\nexport const zeroCustomConnectorByIdContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/custom-connectors/:id\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n responses: {\n 200: customConnectorResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get an org custom connector\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/custom-connectors/:id\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Delete an org custom connector\",\n },\n patch: {\n method: \"PATCH\",\n path: \"/api/zero/custom-connectors/:id\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n body: patchCustomConnectorBodySchema,\n responses: {\n 200: customConnectorResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Rename an org custom connector\",\n },\n});\nexport type ZeroCustomConnectorByIdContract =\n typeof zeroCustomConnectorByIdContract;\n\n/**\n * Zero custom connector secret contract for /api/zero/custom-connectors/[id]/secret\n * PUT: set the calling user's secret for this connector\n * DELETE: clear the calling user's secret\n */\nexport const zeroCustomConnectorSecretContract = c.router({\n set: {\n method: \"PUT\",\n path: \"/api/zero/custom-connectors/:id/secret\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n body: setCustomConnectorSecretBodySchema,\n responses: {\n 204: c.noBody(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Set the calling user's secret for a custom connector\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/custom-connectors/:id/secret\",\n headers: authHeadersSchema,\n pathParams: z.object({ id: z.string().uuid() }),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Clear the calling user's secret for a custom connector\",\n },\n});\nexport type ZeroCustomConnectorSecretContract =\n typeof zeroCustomConnectorSecretContract;\n\nexport const zeroCustomConnectorProposalContract = c.router({\n save: {\n method: \"POST\",\n path: \"/api/zero/custom-connectors/proposals/save\",\n headers: authHeadersSchema,\n body: saveCustomConnectorProposalBodySchema,\n responses: {\n 200: saveCustomConnectorProposalResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Save a custom connector proposal\",\n },\n});\nexport type ZeroCustomConnectorProposalContract =\n typeof zeroCustomConnectorProposalContract;\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport { zeroRunAgentEventsContract } from \"@vm0/api-contracts/contracts/zero-runs\";\nimport type { AgentEventsResponse } from \"@vm0/api-contracts/contracts/runs\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\ninterface LogPaginationOptions {\n readonly since?: number;\n readonly sinceTime?: number;\n readonly cursor?: string;\n readonly limit?: number;\n readonly order?: \"asc\" | \"desc\";\n}\n\nexport async function getZeroRunAgentEvents(\n id: string,\n options?: LogPaginationOptions,\n): Promise<AgentEventsResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroRunAgentEventsContract, config);\n const result = await client.getAgentEvents({\n params: { id },\n query: {\n since: options?.since,\n sinceTime: options?.sinceTime,\n cursor: options?.cursor,\n limit: options?.limit,\n order: options?.order,\n },\n });\n if (result.status === 200) return result.body;\n handleError(result, `Failed to get zero run events for \"${id}\"`);\n}\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport {\n executionFirewallBuiltinEntrySchema,\n networkPoliciesSchema,\n} from \"@vm0/connectors/firewall-types\";\nimport {\n createRunResponseSchema,\n getRunResponseSchema,\n cancelRunResponseSchema,\n agentEventsResponseSchema,\n queueResponseSchema,\n unifiedRunRequestSchema,\n networkLogsResponseSchema,\n logsSearchQuerySchema,\n logsSearchResponseSchema,\n createLogPaginationQuerySchema,\n} from \"./runs\";\nimport { sandboxReuseResultSchema } from \"./webhooks\";\n\n/**\n * Zero run request schema — subset of unified schema.\n * Server-side defaults are injected by createZeroRun():\n * artifacts, disallowedTools.\n * Fields not used by unattended workflow runs are omitted:\n * triggerSource, vars, secrets, volumeVersions, permissionPolicies.\n */\nconst zeroRunRequestSchema = unifiedRunRequestSchema\n .omit({\n triggerSource: true,\n artifacts: true,\n disallowedTools: true,\n volumeVersions: true,\n vars: true,\n secrets: true,\n agentComposeId: true,\n appendSystemPrompt: true,\n modelProviderType: true,\n permissionPolicies: true,\n })\n .extend({\n agentId: z.string().optional(),\n modelProvider: z.string().optional(),\n });\n\nconst c = initContract();\n\nconst zeroLogPaginationQuerySchema = createLogPaginationQuerySchema({\n cursorKind: \"sequence\",\n});\n\nconst zeroNetworkLogPaginationQuerySchema = createLogPaginationQuerySchema({\n cursorKind: \"time\",\n maxLimit: 500,\n defaultLimit: 500,\n defaultOrder: \"asc\",\n});\n\n/**\n * Zero runs main contract (POST /api/zero/runs)\n * Proxies to runsMainContract.create\n */\nexport const zeroRunsMainContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/runs\",\n headers: authHeadersSchema,\n body: zeroRunRequestSchema,\n responses: {\n 201: createRunResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 429: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary: \"Create and execute agent run (zero proxy)\",\n },\n});\n\n/**\n * Zero runs by ID contract (GET /api/zero/runs/:id)\n * Proxies to runsByIdContract\n */\nexport const zeroRunsByIdContract = c.router({\n getById: {\n method: \"GET\",\n path: \"/api/zero/runs/:id\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.uuid(\"Run ID must be a valid UUID\"),\n }),\n responses: {\n 200: getRunResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get agent run by ID (zero proxy)\",\n },\n});\n\n/**\n * Zero runs cancel contract (POST /api/zero/runs/:id/cancel)\n * Proxies to runsCancelContract\n */\nexport const zeroRunsCancelContract = c.router({\n cancel: {\n method: \"POST\",\n path: \"/api/zero/runs/:id/cancel\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.uuid(\"Run ID must be a valid UUID\"),\n }),\n body: z.undefined(),\n responses: {\n 200: cancelRunResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Cancel a pending or running run (zero proxy)\",\n },\n});\n\n/**\n * Zero runs queue contract (GET /api/zero/runs/queue)\n * Proxies to runsQueueContract\n */\nexport const zeroRunsQueueContract = c.router({\n getQueue: {\n method: \"GET\",\n path: \"/api/zero/runs/queue\",\n headers: authHeadersSchema,\n responses: {\n 200: queueResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Get org run queue status (zero proxy)\",\n },\n});\n\n/**\n * Zero run agent events contract (GET /api/zero/runs/:id/telemetry/agent)\n * Zero-namespaced agent events read (same response shape as the retired /api/agent telemetry route)\n */\nexport const zeroRunAgentEventsContract = c.router({\n getAgentEvents: {\n method: \"GET\",\n path: \"/api/zero/runs/:id/telemetry/agent\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.uuid(\"Run ID must be a valid UUID\"),\n }),\n query: zeroLogPaginationQuerySchema,\n responses: {\n 200: agentEventsResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get agent events with pagination (zero proxy)\",\n },\n});\n\n/**\n * Run context snapshot — sanitized execution context for debugging.\n * Dynamic fields (environment, firewalls, volumes, artifact) are stored in Axiom.\n * Static fields (prompt, vars, secretNames) are merged from agent_runs at query time.\n */\nconst runContextVolumeSchema = z.object({\n name: z.string(),\n mountPath: z.string(),\n vasStorageName: z.string(),\n vasVersionId: z.string(),\n});\n\nconst runContextArtifactSchema = z.object({\n mountPath: z.string(),\n vasStorageName: z.string(),\n vasVersionId: z.string(),\n});\n\nconst runContextSanitizedFirewallSchema = z.object({\n name: z.string(),\n apis: z.array(\n z.object({\n base: z.string(),\n permissions: z\n .array(\n z.object({\n name: z.string(),\n description: z.string().optional(),\n rules: z.array(z.string()),\n }),\n )\n .optional(),\n }),\n ),\n});\n\nconst runContextFirewallSchema = z.union([\n executionFirewallBuiltinEntrySchema,\n runContextSanitizedFirewallSchema,\n]);\n\nexport const runContextResponseSchema = z.object({\n prompt: z.string(),\n appendSystemPrompt: z.string().nullable(),\n runId: z.string(),\n sessionId: z.string().nullable(),\n cliAgentType: z.string().optional(),\n secretNames: z.array(z.string()),\n vars: z.record(z.string(), z.string()).nullable(),\n environment: z.record(z.string(), z.string()),\n firewalls: z.array(runContextFirewallSchema),\n networkPolicies: networkPoliciesSchema.nullable(),\n volumes: z.array(runContextVolumeSchema),\n artifact: runContextArtifactSchema.nullable(),\n featureFlags: z.record(z.string(), z.boolean()).nullable(),\n});\n\n/**\n * Zero run context contract (GET /api/zero/runs/:id/context)\n * Returns sanitized execution context snapshot for debugging\n */\nexport const zeroRunContextContract = c.router({\n getContext: {\n method: \"GET\",\n path: \"/api/zero/runs/:id/context\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.uuid(\"Run ID must be a valid UUID\"),\n }),\n responses: {\n 200: runContextResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get run execution context snapshot for debugging\",\n },\n});\n\n/**\n * Zero run network logs contract (GET /api/zero/runs/:id/network)\n * Returns mitmproxy network logs for a run\n */\nexport const zeroRunNetworkLogsContract = c.router({\n getNetworkLogs: {\n method: \"GET\",\n path: \"/api/zero/runs/:id/network\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.uuid(\"Run ID must be a valid UUID\"),\n }),\n query: zeroNetworkLogPaginationQuerySchema,\n responses: {\n 200: networkLogsResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get network logs for a run\",\n },\n});\n\n/**\n * Zero run runner contract (GET /api/zero/runs/:id/runner)\n * Returns runner-level metadata about how the run was provisioned\n * (sandbox reuse decision, etc.). Kept separate from logDetailSchema\n * so runner-tab fields can grow without polluting the generic log\n * detail response.\n */\nconst runRunnerResponseSchema = z.object({\n sandboxReuseResult: sandboxReuseResultSchema.nullable(),\n});\n\nexport const zeroRunRunnerContract = c.router({\n getRunner: {\n method: \"GET\",\n path: \"/api/zero/runs/:id/runner\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.uuid(\"Run ID must be a valid UUID\"),\n }),\n responses: {\n 200: runRunnerResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get runner-level metadata for a run\",\n },\n});\n\n/**\n * Zero logs search contract (GET /api/zero/logs/search)\n * Search agent events across runs via zero token auth\n */\nexport const zeroLogsSearchContract = c.router({\n searchLogs: {\n method: \"GET\",\n path: \"/api/zero/logs/search\",\n headers: authHeadersSchema,\n query: logsSearchQuerySchema,\n responses: {\n 200: logsSearchResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Search agent events across runs (zero proxy)\",\n },\n});\n\n// Inferred types from Zod schemas\nexport type RunContextResponse = z.infer<typeof runContextResponseSchema>;\nexport type RunRunnerResponse = z.infer<typeof runRunnerResponseSchema>;\n\n// Type exports\nexport type ZeroLogsSearchContract = typeof zeroLogsSearchContract;\nexport type ZeroRunsMainContract = typeof zeroRunsMainContract;\nexport type ZeroRunsByIdContract = typeof zeroRunsByIdContract;\nexport type ZeroRunsCancelContract = typeof zeroRunsCancelContract;\nexport type ZeroRunsQueueContract = typeof zeroRunsQueueContract;\nexport type ZeroRunAgentEventsContract = typeof zeroRunAgentEventsContract;\nexport type ZeroRunContextContract = typeof zeroRunContextContract;\nexport type ZeroRunNetworkLogsContract = typeof zeroRunNetworkLogsContract;\nexport type ZeroRunRunnerContract = typeof zeroRunRunnerContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport {\n artifactMissingRootPolicySchema,\n RESUME_SESSION_HISTORY_MAX_BYTES,\n sessionHistoryDownloadSourceSchema,\n sessionHistoryEncodingSchema,\n sessionHistorySizeBucketSchema,\n secretConnectorMetadataMapSchema,\n} from \"./runners\";\nimport { eventSequenceNumberSchema, networkLogEntrySchema } from \"./runs\";\nimport {\n storageTypeSchema,\n fileEntryWithHashSchema,\n storageChangesSchema,\n presignedUploadSchema,\n} from \"./storages\";\n\nconst c = initContract();\n\n// Hash-backed resume history is keyed and verified as lowercase SHA-256 hex.\n// Accepting other 64-character strings would defer bad input until runner claim.\nconst sha256HexSchema = z\n .string()\n .regex(\n /^[a-f0-9]{64}$/,\n \"hash must be a lowercase 64-character SHA-256 hex string\",\n );\n\nconst thirdPartyWebhookErrorSchema = z.object({ error: z.string() });\nconst thirdPartyWebhookOkSchema = z.union([\n z.string(),\n z.object({ message: z.literal(\"pong\") }),\n]);\n\n/**\n * Clerk third-party webhook contract for /api/webhooks/clerk.\n */\nexport const webhookClerkContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/webhooks/clerk\",\n body: c.type<string>(),\n responses: {\n 200: thirdPartyWebhookOkSchema,\n 401: thirdPartyWebhookErrorSchema,\n },\n summary: \"Handle Clerk organization and user webhooks\",\n },\n});\n\n/**\n * GitHub App third-party webhook contract for /api/webhooks/github.\n */\nexport const webhookGithubContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/webhooks/github\",\n body: c.type<string>(),\n responses: {\n 200: thirdPartyWebhookOkSchema,\n 400: thirdPartyWebhookErrorSchema,\n 401: thirdPartyWebhookErrorSchema,\n 503: thirdPartyWebhookErrorSchema,\n },\n summary: \"Handle GitHub App webhooks\",\n },\n});\n\n/**\n * Stripe third-party webhook contract for /api/webhooks/stripe.\n */\nexport const webhookStripeContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/webhooks/stripe\",\n body: c.type<string>(),\n responses: {\n 200: thirdPartyWebhookOkSchema,\n 401: thirdPartyWebhookErrorSchema,\n 503: thirdPartyWebhookErrorSchema,\n },\n summary: \"Handle Stripe billing webhooks\",\n },\n});\n\nconst gmailWebhookResponseSchema = z.object({\n success: z.literal(true),\n watchStates: z.number(),\n dispatched: z.number(),\n duplicates: z.number(),\n});\n\nconst googleCalendarWebhookResponseSchema = z.object({\n success: z.literal(true),\n watchStates: z.number(),\n dispatched: z.number(),\n duplicates: z.number(),\n});\n\nconst googleWorkspaceEventsWebhookResponseSchema = z.object({\n success: z.literal(true),\n watchStates: z.number(),\n dispatched: z.number(),\n duplicates: z.number(),\n});\n\nconst notionWebhookResponseSchema = z.object({\n success: z.literal(true),\n kind: z.enum([\"verification\", \"event\"]),\n pending: z.number(),\n refreshed: z.number(),\n duplicates: z.number(),\n});\n\nconst workflowAutomationWebhookResponseSchema = z.object({\n success: z.literal(true),\n duplicate: z.boolean(),\n runId: z.string().uuid().optional(),\n});\n\n/**\n * Gmail Pub/Sub push webhook contract for /api/webhooks/gmail.\n */\nexport const webhookGmailContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/webhooks/gmail\",\n body: c.type<string>(),\n responses: {\n 200: gmailWebhookResponseSchema,\n 400: thirdPartyWebhookErrorSchema,\n 401: thirdPartyWebhookErrorSchema,\n 429: thirdPartyWebhookErrorSchema,\n 503: thirdPartyWebhookErrorSchema,\n },\n summary: \"Handle Gmail Pub/Sub push notifications\",\n },\n});\n\n/**\n * Google Calendar push webhook contract for /api/webhooks/google-calendar.\n */\nexport const webhookGoogleCalendarContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/webhooks/google-calendar\",\n body: c.type<string>(),\n responses: {\n 200: googleCalendarWebhookResponseSchema,\n 400: thirdPartyWebhookErrorSchema,\n 401: thirdPartyWebhookErrorSchema,\n 429: thirdPartyWebhookErrorSchema,\n 503: thirdPartyWebhookErrorSchema,\n },\n summary: \"Handle Google Calendar push notifications\",\n },\n});\n\n/**\n * Google Workspace Events Pub/Sub push webhook contract for\n * /api/webhooks/google-workspace-events.\n */\nexport const webhookGoogleWorkspaceEventsContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/webhooks/google-workspace-events\",\n body: c.type<string>(),\n responses: {\n 200: googleWorkspaceEventsWebhookResponseSchema,\n 400: thirdPartyWebhookErrorSchema,\n 401: thirdPartyWebhookErrorSchema,\n 429: thirdPartyWebhookErrorSchema,\n 503: thirdPartyWebhookErrorSchema,\n },\n summary: \"Handle Google Workspace Events Pub/Sub push notifications\",\n },\n});\n\n/**\n * Notion webhook contract for /api/webhooks/notion.\n */\nexport const webhookNotionContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/webhooks/notion\",\n body: c.type<string>(),\n responses: {\n 200: notionWebhookResponseSchema,\n 400: thirdPartyWebhookErrorSchema,\n 401: thirdPartyWebhookErrorSchema,\n 503: thirdPartyWebhookErrorSchema,\n },\n summary: \"Handle Notion webhook events\",\n },\n});\n\nconst workflowAutomationWebhookPostRoute = {\n method: \"POST\" as const,\n pathParams: z.object({\n token: z.string().min(1),\n }),\n body: c.type<string>(),\n responses: {\n 200: workflowAutomationWebhookResponseSchema,\n 400: thirdPartyWebhookErrorSchema,\n 401: thirdPartyWebhookErrorSchema,\n 404: thirdPartyWebhookErrorSchema,\n 413: thirdPartyWebhookErrorSchema,\n 429: thirdPartyWebhookErrorSchema,\n 500: thirdPartyWebhookErrorSchema,\n },\n};\n\n/**\n * Workflow automation inbound webhook contract for\n * /api/webhooks/workflow-automations/:token.\n */\nexport const webhookWorkflowAutomationContract = c.router({\n post: {\n ...workflowAutomationWebhookPostRoute,\n path: \"/api/webhooks/workflow-automations/:token\",\n summary: \"Handle inbound workflow automation webhooks\",\n },\n});\n\nexport const webhookBuiltInGenerationFalContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/webhooks/built-in-generations/fal/:generationId\",\n pathParams: z.object({\n generationId: z.uuid(),\n }),\n query: z.object({\n token: z.string().min(1),\n visualKey: z.string().min(1).optional(),\n }),\n body: c.type<string>(),\n responses: {\n 200: thirdPartyWebhookOkSchema,\n 400: thirdPartyWebhookErrorSchema,\n 401: thirdPartyWebhookErrorSchema,\n 503: thirdPartyWebhookErrorSchema,\n },\n summary: \"Handle fal built-in generation webhooks\",\n },\n});\n\nexport const webhookBuiltInGenerationBytePlusContract = c.router({\n post: {\n method: \"POST\",\n path: \"/api/webhooks/built-in-generations/byteplus/:generationId\",\n pathParams: z.object({\n generationId: z.uuid(),\n }),\n query: z.object({\n token: z.string().min(1),\n visualKey: z.string().min(1).optional(),\n }),\n body: c.type<string>(),\n responses: {\n 200: thirdPartyWebhookOkSchema,\n 400: thirdPartyWebhookErrorSchema,\n 401: thirdPartyWebhookErrorSchema,\n 503: thirdPartyWebhookErrorSchema,\n },\n summary: \"Handle BytePlus built-in generation webhooks\",\n },\n});\n\n/**\n * Sandbox reuse outcome. One enum value per code branch in the runner's\n * reuse-decision block. `reused` means the sandbox was unparked from the idle\n * pool; the remaining variants describe why reuse did not happen.\n *\n * `featureDisabled` is legacy: written by older runners while reuse was gated\n * by the `sandboxReuse` feature flag (removed when reuse went to full rollout\n * in #10744). Retained here so historical `agent_runs.sandbox_reuse_result`\n * rows still parse on read. The runner no longer emits it.\n */\nexport const sandboxReuseResultSchema = z.enum([\n \"reused\",\n \"featureDisabled\",\n \"noSessionId\",\n \"poolMiss\",\n \"profileMismatch\",\n \"deviceLimitMismatch\",\n \"unparkFailed\",\n]);\n\nexport type SandboxReuseResult = z.infer<typeof sandboxReuseResultSchema>;\n\n/**\n * Agent event schema for webhook events\n * Note: Claude Code JSONL events have varying structures with different fields\n * depending on the event type (system, assistant, user, result, etc.)\n * We require `type` and `sequenceNumber`, and allow any other fields to pass through\n */\nconst agentEventSchema = z\n .object({\n type: z.string(),\n sequenceNumber: eventSequenceNumberSchema,\n })\n .passthrough();\n\n/**\n * Artifact snapshots schema — canonical\n * `Array<{name, version, mountPath, missingRootPolicy?}>` form. Legacy\n * `Record<name, version>` support was removed in #10913 after the DB\n * migration and guest-agent writer flip completed.\n */\nconst artifactSnapshotsSchema = z.array(\n z.object({\n name: z.string(),\n version: z.string(),\n mountPath: z.string(),\n missingRootPolicy: artifactMissingRootPolicySchema.optional(),\n }),\n);\n\n/**\n * Volume versions snapshot schema\n */\nconst volumeVersionsSnapshotSchema = z.object({\n versions: z.record(z.string(), z.string()),\n});\n\nconst firewallAuthErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n code: z.string(),\n connectors: z.array(z.string()).optional(),\n failureReason: z\n .enum([\"upstream_provider\", \"reconnect_required\"])\n .optional(),\n }),\n});\n\nconst firewallAwsSigv4AuthSchema = z\n .object({\n accessKeyId: z.string().min(1),\n secretAccessKey: z.string().min(1),\n sessionToken: z.string().min(1).optional(),\n })\n .strict();\n\nconst firewallAuthResponseSchema = z.object({\n headers: z.record(z.string(), z.string()),\n base: z.string().optional(),\n query: z.record(z.string(), z.string()).optional(),\n awsSigv4: firewallAwsSigv4AuthSchema.optional(),\n // Effective addon cache expiry as Unix seconds. Access token expiry is the\n // normal source; billable firewall auth can shorten it to force credit\n // re-authorization. Null means non-expiring only for non-billable auth.\n expiresAt: z.number().nullable(),\n resolvedSecrets: z.array(z.string()),\n refreshedConnectors: z.array(z.string()),\n refreshedSecrets: z.array(z.string()),\n});\n\nexport const webhookFirewallAuthContract = c.router({\n /**\n * POST /api/webhooks/agent/firewall/auth\n * Resolve firewall auth templates and refresh access tokens on demand.\n */\n resolve: {\n method: \"POST\",\n path: \"/api/webhooks/agent/firewall/auth\",\n headers: authHeadersSchema,\n body: z.object({\n // Encrypted runtime secret namespace. After decryption, keys are the\n // `NAME` in `${{ secrets.NAME }}`.\n encryptedSecrets: z.string().min(1),\n authHeaders: z.record(z.string(), z.string()),\n authBase: z.string().optional(),\n authQuery: z.record(z.string(), z.string()).optional(),\n authAwsSigv4: firewallAwsSigv4AuthSchema.optional(),\n // Maps firewall auth secret env aliases (the `NAME` in `${{ secrets.NAME }}`)\n // to the connector or provider owner that can refresh/resolve access.\n secretConnectorMap: z.record(z.string(), z.string()).optional(),\n // Same keys as secretConnectorMap; adds source details when the owner\n // alone is not enough to locate access storage.\n secretConnectorMetadataMap: secretConnectorMetadataMapSchema.optional(),\n vars: z.record(z.string(), z.string()).optional(),\n // Set by mitm from billableFirewalls. Server uses this only to bound\n // auth cache lifetime by the current credit authorization lease.\n firewallBillable: z.boolean().optional(),\n forceRefresh: z.boolean().optional(),\n }),\n responses: {\n 200: firewallAuthResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 424: firewallAuthErrorSchema,\n 502: firewallAuthErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Resolve firewall auth templates\",\n },\n});\n\n/**\n * Webhook events contract for /api/webhooks/agent/events\n */\nexport const webhookEventsContract = c.router({\n /**\n * POST /api/webhooks/agent/events\n * Receive agent events from sandbox\n */\n send: {\n method: \"POST\",\n path: \"/api/webhooks/agent/events\",\n headers: authHeadersSchema,\n body: z.object({\n runId: z.string().min(1, \"runId is required\"),\n events: z.array(agentEventSchema).min(1, \"events array cannot be empty\"),\n }),\n responses: {\n 200: z.object({\n received: z.number(),\n firstSequence: z.number(),\n lastSequence: z.number(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Receive agent events from sandbox\",\n },\n});\n\n/**\n * Webhook complete contract for /api/webhooks/agent/complete\n */\nexport const webhookCompleteContract = c.router({\n /**\n * POST /api/webhooks/agent/complete\n * Handle agent run completion (success or failure)\n */\n complete: {\n method: \"POST\",\n path: \"/api/webhooks/agent/complete\",\n headers: authHeadersSchema,\n body: z.object({\n runId: z.string().min(1, \"runId is required\"),\n exitCode: z.number(),\n error: z.string().optional(),\n lastEventSequence: eventSequenceNumberSchema.optional(),\n // Sandbox id the run executed against. Optional because a run that fails\n // before VM creation has no sandbox. Persisted to agent_runs.sandbox_id;\n // the 255-char cap matches the DB column (defense in depth).\n sandboxId: z.string().max(255).optional(),\n // Sandbox reuse outcome. One enum value covers both \"reused\" and the\n // non-reuse reasons, because (reused, reason) is a partial function —\n // encoding it as one field makes inconsistent states unrepresentable.\n // Optional/nullable for old runners and historical rows.\n sandboxReuseResult: sandboxReuseResultSchema.optional(),\n }),\n responses: {\n 200: z.object({\n success: z.boolean(),\n status: z.enum([\"completed\", \"failed\"]),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Handle agent run completion\",\n },\n});\n\n/**\n * Webhook checkpoints contract for /api/webhooks/agent/checkpoints\n */\nexport const webhookCheckpointsContract = c.router({\n /**\n * POST /api/webhooks/agent/checkpoints\n * Create a recoverable checkpoint for an agent run.\n */\n create: {\n method: \"POST\",\n path: \"/api/webhooks/agent/checkpoints\",\n headers: authHeadersSchema,\n body: z\n .object({\n runId: z.string().min(1, \"runId is required\"),\n cliAgentType: z.string().min(1, \"cliAgentType is required\"),\n cliAgentSessionId: z.string().min(1, \"cliAgentSessionId is required\"),\n cliAgentSessionHistoryHash: sha256HexSchema,\n // Multi-artifact snapshots validated by artifactSnapshotsSchema and\n // persisted to checkpoints.artifact_snapshots.\n artifactSnapshots: artifactSnapshotsSchema.optional(),\n volumeVersionsSnapshot: volumeVersionsSnapshotSchema.optional(),\n })\n .strict(),\n responses: {\n 200: z.object({\n checkpointId: z.string(),\n agentSessionId: z.string(),\n conversationId: z.string(),\n artifacts: artifactSnapshotsSchema.optional(),\n volumes: z.record(z.string(), z.string()).optional(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Create checkpoint for agent run\",\n },\n});\n\n/**\n * Webhook checkpoint prepare-history contract for /api/webhooks/agent/checkpoints/prepare-history\n * Returns a presigned URL for uploading session history directly to S3,\n * bypassing Vercel's 4.5MB body size limit.\n */\nexport const webhookCheckpointsPrepareHistoryContract = c.router({\n prepare: {\n method: \"POST\",\n path: \"/api/webhooks/agent/checkpoints/prepare-history\",\n headers: authHeadersSchema,\n body: z.object({\n runId: z.string().min(1, \"runId is required\"),\n hash: sha256HexSchema,\n rawSize: z\n .number()\n .int()\n .positive(\"rawSize must be a positive integer\")\n .max(RESUME_SESSION_HISTORY_MAX_BYTES),\n encodedSize: z\n .number()\n .int()\n .positive(\"encodedSize must be a positive integer\")\n .max(RESUME_SESSION_HISTORY_MAX_BYTES),\n encoding: sessionHistoryEncodingSchema.optional(),\n }),\n responses: {\n 200: z.object({\n presignedUrl: z.string().optional(),\n existing: z.boolean(),\n encoding: sessionHistoryEncodingSchema.optional(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get presigned URL for uploading session history to S3\",\n },\n});\n\n/**\n * Webhook heartbeat contract for /api/webhooks/agent/heartbeat\n */\nexport const webhookHeartbeatContract = c.router({\n /**\n * POST /api/webhooks/agent/heartbeat\n * Receive heartbeat signals from sandbox\n */\n send: {\n method: \"POST\",\n path: \"/api/webhooks/agent/heartbeat\",\n headers: authHeadersSchema,\n body: z.object({\n runId: z.string().min(1, \"runId is required\"),\n }),\n responses: {\n 200: z.object({\n ok: z.boolean(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Receive heartbeat from sandbox\",\n },\n});\n\n/**\n * Webhook storages contract for /api/webhooks/agent/storages\n * Note: This endpoint handles multipart form data upload\n * The contract defines the JSON response schema\n */\nexport const webhookStoragesContract = c.router({\n /**\n * POST /api/webhooks/agent/storages\n * Create a new version of a storage from sandbox\n *\n * Form fields:\n * - runId: string (required)\n * - storageName: string (required)\n * - message: string (optional)\n * - file: File (required, tar.gz archive)\n */\n upload: {\n method: \"POST\",\n path: \"/api/webhooks/agent/storages\",\n headers: authHeadersSchema,\n contentType: \"multipart/form-data\",\n body: c.type<FormData>(),\n responses: {\n 200: z.object({\n versionId: z.string(),\n storageName: z.string(),\n size: z.number(),\n fileCount: z.number(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Upload storage version from sandbox\",\n },\n});\n\n/**\n * Webhook storages incremental contract for /api/webhooks/agent/storages/incremental\n * Note: This endpoint handles multipart form data upload\n */\nexport const webhookStoragesIncrementalContract = c.router({\n /**\n * POST /api/webhooks/agent/storages/incremental\n * Create a new version using incremental upload\n *\n * Form fields:\n * - runId: string (required)\n * - storageName: string (required)\n * - baseVersion: string (required)\n * - changes: JSON string (required)\n * - message: string (optional)\n * - file: File (optional, tar.gz of changed files)\n */\n upload: {\n method: \"POST\",\n path: \"/api/webhooks/agent/storages/incremental\",\n headers: authHeadersSchema,\n contentType: \"multipart/form-data\",\n body: c.type<FormData>(),\n responses: {\n 200: z.object({\n versionId: z.string(),\n storageName: z.string(),\n size: z.number(),\n fileCount: z.number(),\n incrementalStats: z\n .object({\n addedFiles: z.number(),\n modifiedFiles: z.number(),\n deletedFiles: z.number(),\n unchangedFiles: z.number(),\n bytesUploaded: z.number(),\n })\n .optional(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Upload storage version incrementally from sandbox\",\n },\n});\n\n/**\n * Metric data point schema\n */\nconst metricDataSchema = z.object({\n ts: z.string(),\n cpu: z.number(),\n mem_used: z.number(),\n mem_total: z.number(),\n disk_used: z.number(),\n disk_total: z.number(),\n});\n\nconst sessionHistoryCompressionRatioBucketSchema = z.enum([\n \"identity\",\n \"lt_0_25\",\n \"0_25_0_5\",\n \"0_5_0_75\",\n \"0_75_1\",\n \"ge_1\",\n]);\n\nconst booleanStringSchema = z.enum([\"true\", \"false\"]);\n\nconst sessionHistoryContentLengthStateSchema = z.enum([\n \"absent\",\n \"matches_expected\",\n \"mismatches_expected\",\n \"present_without_expected\",\n \"oversized\",\n]);\n\nconst sessionHistoryContentEncodingStateSchema = z.enum([\n \"absent\",\n \"gzip\",\n \"zstd\",\n \"other\",\n]);\n\nconst sessionHistoryTransferEncodingStateSchema = z.enum([\n \"absent\",\n \"chunked\",\n \"other\",\n]);\n\nconst sandboxOperationDownloadSourceSchema = z\n .preprocess((value) => {\n const parsed = sessionHistoryDownloadSourceSchema.safeParse(value);\n if (parsed.success) {\n return parsed.data;\n }\n if (typeof value === \"string\") {\n return undefined;\n }\n return value;\n }, sessionHistoryDownloadSourceSchema.optional())\n .optional();\n\n/**\n * Sandbox operation schema for internal sandbox operations (init, storage, cli, checkpoint, cleanup)\n */\nconst sandboxOperationSchema = z.object({\n ts: z.string(),\n action_type: z.string(),\n duration_ms: z.number(),\n success: z.boolean(),\n error: z.string().optional(),\n encoding: sessionHistoryEncodingSchema.optional(),\n session_history_raw_size_bucket: sessionHistorySizeBucketSchema.optional(),\n session_history_encoded_size_bucket:\n sessionHistorySizeBucketSchema.optional(),\n session_history_compression_ratio_bucket:\n sessionHistoryCompressionRatioBucketSchema.optional(),\n session_history_ref_seen_recently: booleanStringSchema.optional(),\n session_history_ref_download_inflight: booleanStringSchema.optional(),\n session_history_content_length_state:\n sessionHistoryContentLengthStateSchema.optional(),\n session_history_content_encoding_state:\n sessionHistoryContentEncodingStateSchema.optional(),\n session_history_transfer_encoding_state:\n sessionHistoryTransferEncodingStateSchema.optional(),\n session_history_download_source: sandboxOperationDownloadSourceSchema,\n});\n\n/**\n * Webhook telemetry contract for /api/webhooks/agent/telemetry\n */\nexport const webhookTelemetryContract = c.router({\n /**\n * POST /api/webhooks/agent/telemetry\n * Receive telemetry data (system log, metrics, network logs, and sandbox operations) from sandbox\n */\n send: {\n method: \"POST\",\n path: \"/api/webhooks/agent/telemetry\",\n headers: authHeadersSchema,\n body: z.object({\n runId: z.string().min(1, \"runId is required\"),\n systemLog: z.string().optional(),\n metrics: z.array(metricDataSchema).optional(),\n networkLogs: z.array(networkLogEntrySchema).optional(),\n sandboxOperations: z.array(sandboxOperationSchema).optional(),\n }),\n responses: {\n 200: z.object({\n success: z.boolean(),\n id: z.string(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Receive telemetry data from sandbox\",\n },\n});\n\n// ============================================================================\n// Direct Upload Contracts (Webhook endpoints for sandbox)\n// ============================================================================\n\n/**\n * Webhook storage prepare contract for /api/webhooks/agent/storages/prepare\n *\n * Sandbox version of storage prepare endpoint.\n * Uses JWT sandbox token authentication and verifies runId matches token.\n */\nexport const webhookStoragesPrepareContract = c.router({\n prepare: {\n method: \"POST\",\n path: \"/api/webhooks/agent/storages/prepare\",\n headers: authHeadersSchema,\n body: z.object({\n runId: z.string().min(1, \"runId is required\"), // Required for webhook auth\n storageName: z.string().min(1, \"Storage name is required\"),\n storageType: storageTypeSchema,\n files: z.array(fileEntryWithHashSchema),\n parentVersionId: z.string().optional(),\n force: z.boolean().optional(),\n baseVersion: z.string().optional(),\n changes: storageChangesSchema.optional(),\n }),\n responses: {\n 200: z.object({\n versionId: z.string(),\n existing: z.boolean(),\n uploads: z\n .object({\n archive: presignedUploadSchema,\n manifest: presignedUploadSchema,\n })\n .optional(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 413: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Prepare for direct S3 upload from sandbox\",\n },\n});\n\n/**\n * Webhook storage commit contract for /api/webhooks/agent/storages/commit\n *\n * Sandbox version of storage commit endpoint.\n * Uses JWT sandbox token authentication and verifies runId matches token.\n */\nexport const webhookStoragesCommitContract = c.router({\n commit: {\n method: \"POST\",\n path: \"/api/webhooks/agent/storages/commit\",\n headers: authHeadersSchema,\n body: z.object({\n runId: z.string().min(1, \"runId is required\"), // Required for webhook auth\n storageName: z.string().min(1, \"Storage name is required\"),\n storageType: storageTypeSchema,\n versionId: z.string().min(1, \"Version ID is required\"),\n parentVersionId: z.string().optional(),\n files: z.array(fileEntryWithHashSchema),\n message: z.string().optional(),\n }),\n responses: {\n 200: z.object({\n success: z.literal(true),\n versionId: z.string(),\n storageName: z.string(),\n size: z.number(),\n fileCount: z.number(),\n deduplicated: z.boolean().optional(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema, // S3 files missing\n 413: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Commit uploaded storage from sandbox\",\n },\n});\n\nexport type WebhookEventsContract = typeof webhookEventsContract;\nexport type WebhookClerkContract = typeof webhookClerkContract;\nexport type WebhookGithubContract = typeof webhookGithubContract;\nexport type WebhookGmailContract = typeof webhookGmailContract;\nexport type WebhookGoogleCalendarContract =\n typeof webhookGoogleCalendarContract;\nexport type WebhookGoogleWorkspaceEventsContract =\n typeof webhookGoogleWorkspaceEventsContract;\nexport type WebhookStripeContract = typeof webhookStripeContract;\nexport type WebhookWorkflowAutomationContract =\n typeof webhookWorkflowAutomationContract;\nexport type WebhookBuiltInGenerationFalContract =\n typeof webhookBuiltInGenerationFalContract;\nexport type WebhookBuiltInGenerationBytePlusContract =\n typeof webhookBuiltInGenerationBytePlusContract;\nexport type WebhookFirewallAuthContract = typeof webhookFirewallAuthContract;\nexport type WebhookCompleteContract = typeof webhookCompleteContract;\nexport type WebhookCheckpointsContract = typeof webhookCheckpointsContract;\nexport type WebhookCheckpointsPrepareHistoryContract =\n typeof webhookCheckpointsPrepareHistoryContract;\nexport type WebhookHeartbeatContract = typeof webhookHeartbeatContract;\nexport type WebhookStoragesContract = typeof webhookStoragesContract;\nexport type WebhookStoragesIncrementalContract =\n typeof webhookStoragesIncrementalContract;\nexport type WebhookTelemetryContract = typeof webhookTelemetryContract;\nexport type WebhookStoragesPrepareContract =\n typeof webhookStoragesPrepareContract;\nexport type WebhookStoragesCommitContract =\n typeof webhookStoragesCommitContract;\n\n/**\n * Webhook usage event contract for /api/webhooks/agent/usage-event\n *\n * Receives billing usage records from the sandbox for persistence in the\n * `usage_event` ledger. Reporters send `{ runId, events }` batches. Trusted\n * model-provider reporters may include `grossCredits`, calculated from a\n * signed proxy price schedule; other events use server pricing.\n */\nconst webhookUsageEventItemSchema = z\n .object({\n idempotencyKey: z.uuid(),\n kind: z.enum([\"connector\", \"model\", \"image\"]),\n provider: z.string().min(1).max(100),\n category: z.string().min(1).max(100),\n quantity: z.number().int().min(0),\n grossCredits: z.number().int().min(0).optional(),\n })\n .strict();\n\nexport const webhookUsageEventContract = c.router({\n send: {\n method: \"POST\",\n path: \"/api/webhooks/agent/usage-event\",\n headers: authHeadersSchema,\n body: z\n .object({\n runId: z.string().min(1, \"runId is required\"),\n events: z.array(webhookUsageEventItemSchema).min(1).max(100),\n })\n .strict(),\n responses: {\n 200: z.object({\n success: z.boolean(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Receive billing usage event data from sandbox\",\n },\n});\n\n/**\n * Webhook model usage observation contract for\n * /api/webhooks/agent/model-usage-observation\n *\n * Receives model token observations from the sandbox for model usage statistics.\n * This endpoint is not a billing ledger input.\n */\nconst modelUsageObservationCategorySchema = z.enum([\n \"tokens.input\",\n \"tokens.output\",\n \"tokens.cache_read\",\n \"tokens.cache_creation\",\n]);\n\nconst webhookModelUsageObservationItemSchema = z\n .object({\n idempotencyKey: z.uuid(),\n model: z.string().min(1).max(255),\n category: modelUsageObservationCategorySchema,\n quantity: z.number().int().min(1),\n })\n .strict();\n\nexport const webhookModelUsageObservationContract = c.router({\n send: {\n method: \"POST\",\n path: \"/api/webhooks/agent/model-usage-observation\",\n headers: authHeadersSchema,\n body: z\n .object({\n runId: z.string().min(1, \"runId is required\"),\n events: z.array(webhookModelUsageObservationItemSchema).min(1).max(100),\n })\n .strict(),\n responses: {\n 200: z.object({\n success: z.boolean(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Receive model usage observation data from sandbox\",\n },\n});\n\nexport type WebhookUsageEventContract = typeof webhookUsageEventContract;\nexport type WebhookModelUsageObservationContract =\n typeof webhookModelUsageObservationContract;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport {\n executionFirewallsSchema,\n firewallSchema,\n networkPolicySchema,\n networkPoliciesSchema,\n} from \"@vm0/connectors/firewall-types\";\nimport { connectorRefSchema } from \"./connector-identity\";\nimport { apiErrorSchema } from \"./errors\";\nimport { modelProviderCodexRuntimeConfigSchema } from \"./model-providers\";\n\nconst c = initContract();\n\nexport const MIN_EPOCH_MS_TIMESTAMP = 1_000_000_000_000;\nconst apiStartTimeSchema = z.number().int().min(MIN_EPOCH_MS_TIMESTAMP);\n\nexport const CANONICAL_GUEST_HOME_DIR = \"/home/user\";\nexport const CANONICAL_WORKING_DIR = `${CANONICAL_GUEST_HOME_DIR}/workspace`;\nconst CANONICAL_CLAUDE_PROJECT_NAME = CANONICAL_WORKING_DIR.replace(\n /^\\//,\n \"\",\n).replace(/\\//g, \"-\");\nexport const CANONICAL_CLAUDE_MEMORY_MOUNT_PATH = `${CANONICAL_GUEST_HOME_DIR}/.claude/projects/-${CANONICAL_CLAUDE_PROJECT_NAME}/memory`;\nexport const CANONICAL_CODEX_MEMORY_MOUNT_PATH = `${CANONICAL_GUEST_HOME_DIR}/.codex/memories`;\n// Shared resume history size contract. Rust consumers import the generated\n// binding from `api_contracts::generated::constants`.\nexport const RESUME_SESSION_HISTORY_MAX_BYTES = 128 * 1024 * 1024;\nexport const SESSION_HISTORY_ENCODING_IDENTITY = \"identity\";\nexport const SESSION_HISTORY_ENCODING_GZIP = \"gzip\";\nexport const SESSION_HISTORY_ENCODING_ZSTD = \"zstd\";\nexport const SESSION_HISTORY_DOWNLOAD_SOURCE_CONFIGURED_PUBLIC_ENDPOINT =\n \"configured_public_endpoint\";\nexport const SESSION_HISTORY_DOWNLOAD_SOURCE_DEFAULT_R2_ENDPOINT =\n \"default_r2_endpoint\";\nexport const SESSION_HISTORY_GZIP_MIN_BYTES = 64 * 1024;\nexport const NETWORK_POLICY_REFRESH_CONNECTOR_REFS_MAX = 256;\nexport const RUNNER_BUILTIN_FIREWALL_RESOLVE_NAMES_MAX = 512;\nexport const RUNNER_STORAGE_MOUNTS_CAPABILITY = \"storage-mounts-v1\";\nexport const sessionHistoryEncodingSchema = z.enum([\n SESSION_HISTORY_ENCODING_IDENTITY,\n SESSION_HISTORY_ENCODING_GZIP,\n SESSION_HISTORY_ENCODING_ZSTD,\n]);\nexport const sessionHistoryDownloadSourceSchema = z.enum([\n SESSION_HISTORY_DOWNLOAD_SOURCE_CONFIGURED_PUBLIC_ENDPOINT,\n SESSION_HISTORY_DOWNLOAD_SOURCE_DEFAULT_R2_ENDPOINT,\n]);\nexport const sessionHistorySizeBucketSchema = z.enum([\n \"lt_64_kib\",\n \"64_256_kib\",\n \"256_kib_1_mib\",\n \"1_4_mib\",\n \"4_16_mib\",\n \"16_64_mib\",\n \"64_128_mib\",\n]);\n\nexport function elapsedSinceApiStartMs(\n apiStartTimeMs: number | undefined,\n nowMs: number,\n): number | undefined {\n if (\n apiStartTimeMs === undefined ||\n !Number.isInteger(apiStartTimeMs) ||\n apiStartTimeMs < MIN_EPOCH_MS_TIMESTAMP\n ) {\n return undefined;\n }\n\n return Math.max(0, nowMs - apiStartTimeMs);\n}\n\nexport const runnerClaimPollReasonSchema = z.enum([\n \"immediate\",\n \"deferred\",\n \"wakeup_retry\",\n \"slow\",\n \"fast\",\n]);\n\nexport const sessionAffinityResourceSchema = z.enum([\n \"reusableSandbox\",\n \"workspaceCache\",\n]);\n\nconst runnerClaimDiscoverySourceSchema = z.enum([\"ably\", \"poll\"]);\nconst runnerClaimTelemetrySchema = z\n .object({\n discoverySource: runnerClaimDiscoverySourceSchema.optional(),\n jobDiscoveredToClaimRequestMs: z.number().int().nonnegative().optional(),\n localAdmissionToClaimRequestMs: z.number().int().nonnegative().optional(),\n directCandidateNotificationToEnqueueMs: z\n .number()\n .int()\n .nonnegative()\n .optional(),\n directCandidateInboxWaitMs: z.number().int().nonnegative().optional(),\n providerDiscoveryToMainLoopMs: z.number().int().nonnegative().optional(),\n mainLoopToLocalAdmissionMs: z.number().int().nonnegative().optional(),\n pollDueToJobDiscoveredMs: z.number().int().nonnegative().optional(),\n pollHttpRequestMs: z.number().int().nonnegative().optional(),\n pollReason: runnerClaimPollReasonSchema.optional(),\n })\n .catch({});\n\nconst runnerPollTelemetrySchema = z\n .object({\n pollReason: runnerClaimPollReasonSchema.optional(),\n })\n .catch({});\n\nconst runnerProfileListSchema = z.array(z.string());\nconst runnerSupportedProfileListSchema = runnerProfileListSchema.min(1);\nexport const RUNNER_POLL_EXCLUDED_RUN_IDS_MAX = 128;\n\nconst networkPolicyRefreshSchema = z.object({\n nextRefreshAt: z.string().datetime({ offset: true }),\n});\n\nconst networkPolicyRefreshesSchema = z.record(\n z.string(),\n networkPolicyRefreshSchema,\n);\nconst runnerBuiltinFirewallNameSchema = z\n .string()\n .min(1)\n .max(128)\n .regex(/^(?:[a-z0-9][a-z0-9-]*|model-provider:[a-z0-9][a-z0-9-]*)$/);\nconst runnerBuiltinFirewallsResolveBodySchema = z\n .object({\n names: z\n .array(runnerBuiltinFirewallNameSchema)\n .min(1)\n .max(RUNNER_BUILTIN_FIREWALL_RESOLVE_NAMES_MAX)\n .optional(),\n })\n .strict();\nconst runnerBuiltinFirewallsResolveResponseSchema = z.object({\n catalogDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),\n catalogVersion: z.string().min(1),\n firewalls: z.record(runnerBuiltinFirewallNameSchema, firewallSchema),\n});\n\n/**\n * Default profile when none is specified.\n * Must stay in sync with Rust: crates/runner/src/profile.rs → DEFAULT_PROFILE\n */\nexport const DEFAULT_PROFILE = \"vm0/default\";\n\n/**\n * Runner group format: vm0/<name> (e.g., \"vm0/production\")\n */\nexport const runnerGroupSchema = z\n .string()\n .regex(\n /^[a-z0-9-]+\\/[a-z0-9-]+$/,\n \"Runner group must be in vm0/<name> format (e.g., vm0/production)\",\n );\n\nconst runnersPollBodySchema = z.object({\n runnerId: z.uuid().optional(),\n group: runnerGroupSchema,\n supportedProfiles: runnerSupportedProfileListSchema,\n excludedRunIds: z\n .array(z.uuid())\n .max(RUNNER_POLL_EXCLUDED_RUN_IDS_MAX)\n .optional(),\n telemetry: runnerPollTelemetrySchema.optional(),\n});\n\n/**\n * Job schema for polling response\n */\nexport const jobSchema = z.object({\n runId: z.uuid(),\n prompt: z.string(),\n appendSystemPrompt: z.string().nullable(),\n agentComposeVersionId: z.string().nullable(),\n vars: z.record(z.string(), z.string()).nullable(),\n experimentalProfile: z.string().optional(),\n cliAgentSessionId: z.string().nullable().optional(),\n historyGenerationRunId: z.uuid().optional(),\n historyGenerationAffinityProtectedUntil: z\n .string()\n .datetime({ offset: true })\n .nullable()\n .optional(),\n affinityProtectedUntil: z\n .string()\n .datetime({ offset: true })\n .nullable()\n .optional(),\n sessionAffinityResource: sessionAffinityResourceSchema.optional(),\n});\n\nexport const heldSessionStateSchema = z.object({\n // Compatibility wire name. Semantically this is the Claude/Codex CLI agent\n // session id used to route work toward a runner with a reusable sandbox.\n sessionId: z.string(),\n lastCompletedAt: z.string().datetime({ offset: true }),\n reusableSandbox: z\n .object({\n profile: z.string(),\n historyGenerationRunId: z.uuid().optional(),\n })\n .optional(),\n workspaceCaches: z\n .array(\n z.object({\n profile: z.string(),\n workspaceAffinityVersion: z.literal(1).optional(),\n }),\n )\n .max(8)\n .optional(),\n});\n\n/**\n * Runners poll contract - POST /api/runners/poll\n * Long-polling endpoint to fetch pending jobs for a runner group\n *\n * NOTE: Uses POST instead of GET to avoid CDN caching issues on preview deployments.\n * POST requests are never cached, ensuring the Authorization header is always read fresh.\n */\nexport const runnersPollContract = c.router({\n poll: {\n method: \"POST\",\n path: \"/api/runners/poll\",\n headers: authHeadersSchema,\n body: runnersPollBodySchema,\n responses: {\n 200: z.object({\n job: jobSchema.nullable(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Poll for pending jobs (long-polling with 30s timeout)\",\n },\n});\n\n/**\n * Storage entry in manifest\n */\nconst archiveSizeSchema = z.number().int().min(1).max(Number.MAX_SAFE_INTEGER);\n\nexport const storageEntrySchema = z.object({\n name: z.string(),\n mountPath: z.string(),\n vasStorageName: z.string(),\n vasVersionId: z.string(),\n instructionsTargetFilename: z.string().optional(),\n archiveUrl: z.string(),\n archiveSize: archiveSizeSchema.optional(),\n});\n\n/**\n * Artifact entry in manifest\n */\n// Optional internal checkpoint behavior for a missing artifact root. Absence\n// is equivalent to \"fail\".\nexport const artifactMissingRootPolicySchema = z.enum([\n \"fail\",\n \"preserveParentVersion\",\n]);\n\nexport const artifactEntrySchema = z\n .object({\n mountPath: z.string(),\n vasStorageName: z.string(),\n vasStorageId: z.string(),\n vasVersionId: z.string(),\n archiveUrl: z.string().optional(),\n archiveSize: archiveSizeSchema.optional(),\n empty: z.boolean().optional(),\n missingRootPolicy: artifactMissingRootPolicySchema.optional(),\n })\n .superRefine((artifact, ctx) => {\n if (artifact.empty === true || artifact.archiveUrl !== undefined) {\n return;\n }\n\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"archiveUrl\"],\n message: \"archiveUrl is required unless empty is true\",\n });\n });\n\n/**\n * Canonical resolved Storage mount accepted by new runners.\n *\n * The API emits this representation only for runners that advertise the\n * storage-mounts-v1 claim capability. Older runners receive the legacy\n * projection instead.\n */\nexport const storageMountEntrySchema = z\n .object({\n name: z.string(),\n storageId: z.string(),\n versionId: z.string(),\n mountPath: z.string(),\n archiveUrl: z.string().optional(),\n archiveSize: archiveSizeSchema.optional(),\n empty: z.boolean().optional(),\n instructionsTargetFilename: z.string().optional(),\n missingRootPolicy: artifactMissingRootPolicySchema.optional(),\n writeback: z.boolean().optional(),\n })\n .superRefine((mount, ctx) => {\n const writeback = mount.writeback ?? false;\n if (\n mount.archiveUrl === undefined &&\n !(writeback && mount.empty === true)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"archiveUrl\"],\n message:\n \"archiveUrl is required unless an empty writeback mount is requested\",\n });\n }\n if (!writeback && mount.empty === true) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"empty\"],\n message: \"empty is only valid for writeback mounts\",\n });\n }\n if (writeback && mount.instructionsTargetFilename !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"instructionsTargetFilename\"],\n message: \"instructionsTargetFilename is not valid for writeback mounts\",\n });\n }\n if (!writeback && mount.missingRootPolicy !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"missingRootPolicy\"],\n message: \"missingRootPolicy is only valid for writeback mounts\",\n });\n }\n });\n\n/**\n * Canonical resolved Storage mount persisted by the API before claim-time\n * capability negotiation. Ownership is API-only metadata and is intentionally\n * omitted from the Runner wire representation.\n */\nexport const storedStorageMountEntrySchema = storageMountEntrySchema.extend({\n orgId: z.string(),\n userId: z.string(),\n});\n\n/**\n * Legacy Storage manifest with presigned URLs for download.\n */\nexport const legacyStorageManifestSchema = z.object({\n storages: z.array(storageEntrySchema),\n artifacts: z.array(artifactEntrySchema),\n});\n\nfunction uniqueStorageMountPaths<T extends { readonly mountPath: string }>(\n mounts: readonly T[],\n ctx: z.RefinementCtx,\n): void {\n const mountPaths = new Set<string>();\n for (const [index, mount] of mounts.entries()) {\n if (mountPaths.has(mount.mountPath)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [index, \"mountPath\"],\n message: `Duplicate Storage mount path \"${mount.mountPath}\"`,\n });\n }\n mountPaths.add(mount.mountPath);\n }\n}\n\n/** Canonical Runner wire representation. */\nexport const canonicalStorageManifestSchema = z.object({\n storageMounts: z\n .array(storageMountEntrySchema)\n .superRefine(uniqueStorageMountPaths),\n});\n\n/**\n * Runner Storage manifests contain exactly one complete representation. Other\n * runner-derived fields remain strip-compatible, but representation fields may\n * never be mixed or omitted.\n */\nexport const storageManifestSchema = z\n .unknown()\n .superRefine((manifest, ctx) => {\n if (typeof manifest !== \"object\" || manifest === null) {\n return;\n }\n const value = manifest as Record<string, unknown>;\n const hasStorageMounts = Object.hasOwn(value, \"storageMounts\");\n const hasStorages = Object.hasOwn(value, \"storages\");\n const hasArtifacts = Object.hasOwn(value, \"artifacts\");\n const hasCanonical = hasStorageMounts && !hasStorages && !hasArtifacts;\n const hasLegacy = !hasStorageMounts && hasStorages && hasArtifacts;\n if (!hasCanonical && !hasLegacy) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"storage manifest must contain exactly storageMounts or both storages and artifacts\",\n });\n }\n })\n .pipe(z.union([legacyStorageManifestSchema, canonicalStorageManifestSchema]));\n\n/**\n * Resume session information. The compatibility wire field is `sessionId`, but\n * its semantic name in API/runner code is `cliAgentSessionId`.\n */\nconst inlineResumeSessionSchema = z.object({\n sessionId: z.string(),\n sessionHistory: z.string(),\n});\n\nconst resumeSessionHistoryBlobRefSchema = z.object({\n kind: z.literal(\"blob\"),\n hash: z.string().regex(/^[a-f0-9]{64}$/),\n});\nconst resumeSessionHistoryDownloadSourceFieldSchema = {\n downloadSource: sessionHistoryDownloadSourceSchema.optional(),\n};\nconst resumeSessionHistoryRawSizeSchema = z\n .number()\n .int()\n .positive()\n .max(RESUME_SESSION_HISTORY_MAX_BYTES);\nconst resumeSessionHistoryEncodedSizeSchema = z\n .number()\n .int()\n .positive()\n .max(RESUME_SESSION_HISTORY_MAX_BYTES);\n\nconst storedResumeSessionRefSchema = z.object({\n sessionId: z.string(),\n historyGenerationRunId: z.uuid().optional(),\n historyRef: resumeSessionHistoryBlobRefSchema.extend({\n encoding: sessionHistoryEncodingSchema.optional(),\n }),\n});\n\nconst resumeSessionIdentityHistoryRefSchema = resumeSessionHistoryBlobRefSchema\n .extend({\n url: z.string().url(),\n encoding: z.literal(\"identity\").optional(),\n rawSize: resumeSessionHistoryRawSizeSchema,\n encodedSize: resumeSessionHistoryEncodedSizeSchema,\n ...resumeSessionHistoryDownloadSourceFieldSchema,\n })\n .strict();\n\nconst resumeSessionGzipHistoryRefSchema = resumeSessionHistoryBlobRefSchema\n .extend({\n url: z.string().url(),\n encoding: z.literal(\"gzip\"),\n rawSize: resumeSessionHistoryRawSizeSchema,\n encodedSize: resumeSessionHistoryEncodedSizeSchema,\n ...resumeSessionHistoryDownloadSourceFieldSchema,\n })\n .strict();\n\nconst resumeSessionZstdHistoryRefSchema = resumeSessionHistoryBlobRefSchema\n .extend({\n url: z.string().url(),\n encoding: z.literal(\"zstd\"),\n rawSize: resumeSessionHistoryRawSizeSchema,\n encodedSize: resumeSessionHistoryEncodedSizeSchema,\n ...resumeSessionHistoryDownloadSourceFieldSchema,\n })\n .strict();\n\nconst resumeSessionRefSchema = z.object({\n sessionId: z.string(),\n historyRef: z.union([\n resumeSessionGzipHistoryRefSchema,\n resumeSessionZstdHistoryRefSchema,\n resumeSessionIdentityHistoryRefSchema,\n ]),\n});\n\nexport const storedResumeSessionSchema = z.union([\n inlineResumeSessionSchema,\n storedResumeSessionRefSchema,\n]);\n\nexport const resumeSessionSchema = z.union([\n inlineResumeSessionSchema,\n resumeSessionRefSchema,\n]);\n\n// Capability names are intentionally open-ended so a newer runner can claim\n// jobs through an older API; the API ignores capabilities it does not know.\nexport const runnerClaimCapabilitySchema = z.string().min(1);\n\nexport const secretConnectorMetadataSchema = z.object({\n sourceType: z.enum([\"connector\", \"model-provider\", \"platform-secret\"]),\n sourceUserId: z.string().optional(),\n metadataKey: z.string().optional(),\n});\n\n// Keyed by the same firewall auth secret env aliases as secretConnectorMap.\nexport const secretConnectorMetadataMapSchema = z.record(\n z.string(),\n secretConnectorMetadataSchema,\n);\n\n/**\n * Stored execution context (subset stored in database for late routing)\n * Contains prepared context without runtime-generated fields\n * Secrets are encrypted with AES-256-GCM before storage\n */\nexport const storedExecutionContextSchema = z.object({\n // Claim-time compatibility projection for old runners. Queue rows have a\n // short TTL; long-lived run/session/checkpoint writers are canonical-only.\n storageManifest: legacyStorageManifestSchema.nullable(),\n storageMounts: z\n .array(storedStorageMountEntrySchema)\n .superRefine(uniqueStorageMountPaths)\n .optional(),\n environment: z.record(z.string(), z.string()).nullable(),\n // API-only references used to reconstruct runner masking values from the\n // stored environment. Null means no persistent secret map, and array\n // order/repetition follows secret-map values.\n // This field must not be included in the runner-facing ExecutionContext.\n secretValueEnvironmentKeys: z.array(z.string()).nullable(),\n // Connector-owned runtime vars used by proxy/firewall template resolution.\n // User-provided run vars stay in agent_runs.vars and are merged at claim time.\n vars: z.record(z.string(), z.string()).nullable().optional(),\n resumeSession: storedResumeSessionSchema.nullable(),\n // AES-256-GCM encrypted Record<string, string>. Keys are the runtime secret\n // names used by `${{ secrets.NAME }}`; connector/model-provider keys are env\n // aliases, not backing storage secret names.\n encryptedSecrets: z.string().nullable(),\n // Maps firewall auth secret env aliases (the `NAME` in `${{ secrets.NAME }}`) to\n // their connector or provider owner. Keys are env aliases, not storage secret names.\n secretConnectorMap: z.record(z.string(), z.string()).nullable().optional(),\n // Same keys as secretConnectorMap; adds source details when the owner alone\n // is not enough to locate access storage (for example, personal model providers).\n secretConnectorMetadataMap: secretConnectorMetadataMapSchema\n .nullable()\n .optional(),\n cliAgentType: z.string(),\n // Preview evaluation escape hatch: bypass preview mock CLIs and use the real\n // agent runtime.\n realAgentInPreview: z.boolean().optional(),\n // Capture HTTP header names, selected safe header values, request bodies, and response bodies\n // in network logs\n captureNetworkBodies: z.boolean().optional(),\n // Dispatch timestamp for E2E timing metrics, as Unix epoch milliseconds\n apiStartTime: apiStartTimeSchema.optional(),\n // User's timezone preference (IANA format, e.g., \"Asia/Shanghai\")\n userTimezone: z.string().optional(),\n // Firewall entries for proxy-side token replacement. Built-ins stay compact;\n // org custom connectors use inline firewall bodies.\n firewalls: executionFirewallsSchema.optional(),\n // Per-firewall network policies: which permissions are granted + unknownPolicy\n networkPolicies: networkPoliciesSchema.optional(),\n // Per-connector runtime network policy refresh deadlines. Used by runners to refresh\n // active sandbox policy when temporary allow grants expire.\n networkPolicyRefreshes: networkPolicyRefreshesSchema.optional(),\n // Tools to disable in Claude CLI (passed as --disallowed-tools)\n disallowedTools: z.array(z.string()).optional(),\n // Tools to make available in Claude CLI (passed as --tools)\n tools: z.array(z.string()).optional(),\n // Settings JSON to pass to Claude CLI (passed as --settings)\n settings: z.string().optional(),\n // VM profile for resource allocation (e.g., \"vm0/default\")\n experimentalProfile: z.string().optional(),\n // Feature flags evaluated at job creation time (all switch states for user/org)\n featureFlags: z.record(z.string(), z.boolean()).optional(),\n billableFirewalls: z.array(z.string()).optional(),\n // Canonical model id the proxy reports for model token usage. The API uses\n // this model id for built-in billing rows and model usage observations;\n // billing eligibility is decided from API-owned run context.\n modelUsageProvider: z.string().optional(),\n // API-owned Codex provider/runtime metadata forwarded through the runner.\n codexRuntimeConfig: modelProviderCodexRuntimeConfigSchema\n .nullable()\n .optional(),\n});\n\n/**\n * Execution context returned when claiming a job.\n *\n * This is the canonical producer schema. The runner's `ExecutionContext` is a\n * tolerant consumer projection and intentionally does not mirror every field.\n * See `crates/runner/src/types.rs`.\n */\nexport const executionContextSchema = z.object({\n runId: z.uuid(),\n prompt: z.string(),\n appendSystemPrompt: z.string().nullable(),\n agentComposeVersionId: z.string().nullable(),\n vars: z.record(z.string(), z.string()).nullable(),\n sandboxToken: z.string(),\n storageManifest: storageManifestSchema.nullable(),\n environment: z.record(z.string(), z.string()).nullable(),\n resumeSession: resumeSessionSchema.nullable(),\n // Plain secret values used by the runner for redaction. These are values, not\n // names, and are base64-encoded only when exported through VM0_SECRET_VALUES.\n secretValues: z.array(z.string()).nullable(),\n // AES-256-GCM encrypted Record<string, string>, passed through to mitm-addon\n // for auth resolution. Keys are runtime secret names used by\n // `${{ secrets.NAME }}`; connector/model-provider keys are env aliases, not\n // backing storage secret names.\n encryptedSecrets: z.string().nullable(),\n // Maps firewall auth secret env aliases (the `NAME` in `${{ secrets.NAME }}`) to\n // their connector or provider owner. Keys are env aliases, not storage secret names.\n secretConnectorMap: z.record(z.string(), z.string()).nullable().optional(),\n // Same keys as secretConnectorMap; adds source details when the owner alone\n // is not enough to locate access storage (for example, personal model providers).\n secretConnectorMetadataMap: secretConnectorMetadataMapSchema\n .nullable()\n .optional(),\n cliAgentType: z.string(),\n // Preview evaluation escape hatch: bypass preview mock CLIs and use the real\n // agent runtime.\n realAgentInPreview: z.boolean().optional(),\n // Capture HTTP header names, selected safe header values, request bodies, and response bodies\n // in network logs\n captureNetworkBodies: z.boolean().optional(),\n // Dispatch timestamp for E2E timing metrics, as Unix epoch milliseconds\n apiStartTime: apiStartTimeSchema.optional(),\n // User's timezone preference (IANA format, e.g., \"Asia/Shanghai\")\n userTimezone: z.string().optional(),\n // Firewall entries for proxy-side token replacement. Built-ins stay compact;\n // org custom connectors use inline firewall bodies.\n firewalls: executionFirewallsSchema.optional(),\n // Per-firewall network policies: which permissions are granted + unknownPolicy\n networkPolicies: networkPoliciesSchema.optional(),\n // Per-connector runtime network policy refresh deadlines. Used by runners to refresh\n // active sandbox policy when temporary allow grants expire.\n networkPolicyRefreshes: networkPolicyRefreshesSchema.optional(),\n // Tools to disable in Claude CLI (passed as --disallowed-tools)\n disallowedTools: z.array(z.string()).optional(),\n // Tools to make available in Claude CLI (passed as --tools)\n tools: z.array(z.string()).optional(),\n // Settings JSON to pass to Claude CLI (passed as --settings)\n settings: z.string().optional(),\n // VM profile for resource allocation (e.g., \"vm0/default\")\n experimentalProfile: z.string().optional(),\n // Feature flags evaluated at job creation time (all switch states for user/org)\n featureFlags: z.record(z.string(), z.boolean()).optional(),\n billableFirewalls: z.array(z.string()).optional(),\n // Canonical model id the proxy reports for model token usage. The API uses\n // this model id for built-in billing rows and model usage observations;\n // billing eligibility is decided from API-owned run context.\n modelUsageProvider: z.string().optional(),\n // API-owned Codex provider/runtime metadata forwarded through the runner.\n codexRuntimeConfig: modelProviderCodexRuntimeConfigSchema\n .nullable()\n .optional(),\n});\n\n/**\n * Runners job claim contract - POST /api/runners/jobs/:id/claim\n * Claim a pending job for execution\n * Verifies that the job's agent_run belongs to the authenticated user\n */\nexport const runnersJobClaimContract = c.router({\n claim: {\n method: \"POST\",\n path: \"/api/runners/jobs/:id/claim\",\n headers: authHeadersSchema,\n pathParams: z.object({\n id: z.uuid(),\n }),\n body: z.object({\n telemetry: runnerClaimTelemetrySchema.optional(),\n capabilities: z.array(runnerClaimCapabilitySchema).optional(),\n }),\n responses: {\n 200: executionContextSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema, // Job does not belong to user\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Claim a pending job for execution\",\n },\n});\n\nexport const runnersNetworkPolicyRefreshContract = c.router({\n refresh: {\n method: \"POST\",\n path: \"/api/runners/runs/:runId/network-policy-refresh\",\n headers: authHeadersSchema,\n pathParams: z.object({\n runId: z.uuid(),\n }),\n body: z.object({\n connectorRefs: z\n .array(connectorRefSchema)\n .min(1)\n .max(NETWORK_POLICY_REFRESH_CONNECTOR_REFS_MAX),\n }),\n responses: {\n 200: z.object({\n refreshes: z.array(\n z.object({\n connectorRef: connectorRefSchema,\n networkPolicy: networkPolicySchema,\n nextRefreshAt: z.string().datetime({ offset: true }).nullable(),\n }),\n ),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Refresh active run network policies\",\n },\n});\n\nexport const runnersBuiltinFirewallsResolveContract = c.router({\n resolve: {\n method: \"POST\",\n path: \"/api/runners/builtin-firewalls/resolve\",\n headers: authHeadersSchema,\n body: runnerBuiltinFirewallsResolveBodySchema,\n responses: {\n 200: runnerBuiltinFirewallsResolveResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Resolve builtin firewall definitions for runners\",\n },\n});\n\n/**\n * Runner heartbeat body — periodic state report from each runner\n */\nexport const heartbeatBodySchema = z\n .object({\n runnerId: z.uuid(),\n runnerName: z.string(),\n group: runnerGroupSchema,\n snapshotGeneration: z\n .number()\n .int()\n .positive()\n .max(Number.MAX_SAFE_INTEGER),\n snapshotSequence: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n totalVcpu: z.number().int().nonnegative(),\n totalMemoryMb: z.number().int().nonnegative(),\n maxConcurrent: z.number().int().nonnegative(),\n allocatedVcpu: z.number().int().nonnegative(),\n allocatedMemoryMb: z.number().int().nonnegative(),\n runningCount: z.number().int().nonnegative(),\n admittableProfiles: runnerProfileListSchema,\n heldSessionStates: z.array(heldSessionStateSchema).max(1024),\n mode: z.enum([\"starting\", \"running\", \"draining\", \"stopping\"]),\n })\n .superRefine((heartbeat, ctx) => {\n const workspaceCacheCount = heartbeat.heldSessionStates.reduce(\n (count, state) => {\n return count + (state.workspaceCaches?.length ?? 0);\n },\n 0,\n );\n if (workspaceCacheCount <= 1024) {\n return;\n }\n\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"heldSessionStates\"],\n message: \"heldSessionStates may contain at most 1024 workspace caches\",\n });\n });\n\n/**\n * Runners heartbeat contract - POST /api/runners/heartbeat\n * Periodic state report from runners for capacity tracking and dispatch\n */\nexport const runnersHeartbeatContract = c.router({\n heartbeat: {\n method: \"POST\",\n path: \"/api/runners/heartbeat\",\n headers: authHeadersSchema,\n body: heartbeatBodySchema,\n responses: {\n 200: z.object({ ok: z.literal(true) }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Report runner heartbeat with capacity and state\",\n },\n});\n\nexport type RunnersPollContract = typeof runnersPollContract;\nexport type RunnersJobClaimContract = typeof runnersJobClaimContract;\nexport type RunnersNetworkPolicyRefreshContract =\n typeof runnersNetworkPolicyRefreshContract;\nexport type RunnersHeartbeatContract = typeof runnersHeartbeatContract;\nexport type RunnersBuiltinFirewallsResolveContract =\n typeof runnersBuiltinFirewallsResolveContract;\nexport type Job = z.infer<typeof jobSchema>;\nexport type HeldSessionState = z.infer<typeof heldSessionStateSchema>;\nexport type ExecutionContext = z.infer<typeof executionContextSchema>;\nexport type StoredExecutionContext = z.infer<\n typeof storedExecutionContextSchema\n>;\nexport type NetworkPolicyRefresh = z.infer<typeof networkPolicyRefreshSchema>;\nexport type RunnerBuiltinFirewallsResolveBody = z.infer<\n typeof runnerBuiltinFirewallsResolveBodySchema\n>;\nexport type RunnerBuiltinFirewallsResolveResponse = z.infer<\n typeof runnerBuiltinFirewallsResolveResponseSchema\n>;\nexport type SecretConnectorMetadata = z.infer<\n typeof secretConnectorMetadataSchema\n>;\nexport type StorageEntry = z.infer<typeof storageEntrySchema>;\nexport type ArtifactEntry = z.infer<typeof artifactEntrySchema>;\nexport type StorageMountEntry = z.infer<typeof storageMountEntrySchema>;\nexport type StoredStorageMountEntry = z.infer<\n typeof storedStorageMountEntrySchema\n>;\nexport type LegacyStorageManifest = z.infer<typeof legacyStorageManifestSchema>;\nexport type CanonicalStorageManifest = z.infer<\n typeof canonicalStorageManifestSchema\n>;\nexport type StorageManifest = z.infer<typeof storageManifestSchema>;\nexport type StoredResumeSession = z.infer<typeof storedResumeSessionSchema>;\nexport type ResumeSession = z.infer<typeof resumeSessionSchema>;\nexport type SessionHistoryDownloadSource = z.infer<\n typeof sessionHistoryDownloadSourceSchema\n>;\nexport type SessionHistorySizeBucket = z.infer<\n typeof sessionHistorySizeBucketSchema\n>;\nexport type SessionAffinityResource = z.infer<\n typeof sessionAffinityResourceSchema\n>;\n\nexport type RunnerClaimCapability = z.infer<typeof runnerClaimCapabilitySchema>;\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n/**\n * Storage type enum\n */\nconst storageTypeSchema = z.enum([\"volume\", \"artifact\"]);\n\n/**\n * Version ID query parameter schema\n *\n * Validates hex format (8-64 characters). Used for version prefix resolution.\n */\nconst versionQuerySchema = z\n .string()\n .regex(/^[a-f0-9]{8,64}$/i, \"Version must be 8-64 hex characters\")\n .optional();\n\n/**\n * Upload storage response schema (JSON part of POST response)\n */\nconst uploadStorageResponseSchema = z.object({\n name: z.string(),\n versionId: z.string(),\n size: z.number(),\n fileCount: z.number(),\n type: storageTypeSchema,\n deduplicated: z.boolean(),\n});\n\n/**\n * Storages contract for /api/storages\n *\n * Note: This API handles binary file upload/download:\n * - POST: Multipart form data upload, returns JSON\n * - GET: Query params, returns binary tar.gz file\n *\n * The contract defines the JSON parts for type safety.\n * Binary response handling is done at the route level.\n */\nexport const storagesContract = c.router({\n /**\n * POST /api/storages\n * Upload a storage (tar.gz file)\n *\n * Content-Type: multipart/form-data\n * Form fields:\n * - name: string (storage name, 3-64 chars, lowercase alphanumeric with hyphens)\n * - file: File (tar.gz archive)\n * - type: \"volume\" | \"artifact\" (optional, defaults to \"volume\")\n * - force: \"true\" | \"false\" (optional, skip deduplication)\n */\n upload: {\n method: \"POST\",\n path: \"/api/storages\",\n headers: authHeadersSchema,\n contentType: \"multipart/form-data\",\n body: c.type<FormData>(),\n responses: {\n 200: uploadStorageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Upload storage archive\",\n },\n\n /**\n * GET /api/storages\n * Download a storage as tar.gz file\n *\n * Query params:\n * - name: string (required, storage name)\n * - version: string (optional, version ID or prefix)\n *\n * Returns: Binary tar.gz file (application/gzip)\n */\n download: {\n method: \"GET\",\n path: \"/api/storages\",\n headers: authHeadersSchema,\n query: z.object({\n name: z.string().min(1, \"Storage name is required\"),\n version: versionQuerySchema,\n }),\n responses: {\n // Binary response - actual handling done at route level\n 200: c.otherResponse({\n contentType: \"application/gzip\",\n body: c.type<Blob>(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Download storage archive\",\n },\n});\n\nexport type StoragesContract = typeof storagesContract;\n\n// ============================================================================\n// Direct Upload Schemas (for CLI and Webhook endpoints)\n// ============================================================================\n\n/**\n * Maximum file size per file in bytes (100MB)\n */\nexport const MAX_FILE_SIZE_BYTES = 104_857_600;\n\n/**\n * File entry with hash for content-addressable storage\n */\nexport const fileEntryWithHashSchema = z.object({\n path: z.string().min(1, \"File path is required\"),\n hash: z.string().length(64, \"Hash must be SHA-256 (64 hex chars)\"),\n size: z\n .number()\n .int()\n .min(0, \"Size must be non-negative\")\n .max(MAX_FILE_SIZE_BYTES, \"File size exceeds 100MB limit\"),\n});\n\n/**\n * Incremental changes schema for partial uploads\n */\nexport const storageChangesSchema = z.object({\n added: z.array(z.string()),\n modified: z.array(z.string()),\n deleted: z.array(z.string()),\n});\n\n/**\n * Presigned upload URL schema\n */\nexport const presignedUploadSchema = z.object({\n key: z.string(),\n presignedUrl: z.url(),\n});\n\n// ============================================================================\n// Direct Upload Contracts (CLI endpoints)\n// ============================================================================\n\n/**\n * Storage prepare contract for /api/storages/prepare\n *\n * Prepares for direct S3 upload by:\n * 1. Computing content hash from file metadata\n * 2. Checking for existing version (deduplication)\n * 3. Generating presigned URLs if upload needed\n */\nexport const storagesPrepareContract = c.router({\n prepare: {\n method: \"POST\",\n path: \"/api/storages/prepare\",\n headers: authHeadersSchema,\n body: z.object({\n storageName: z.string().min(1, \"Storage name is required\"),\n storageType: storageTypeSchema,\n files: z.array(fileEntryWithHashSchema),\n force: z.boolean().optional(),\n runId: z.string().optional(), // For sandbox auth\n baseVersion: z.string().optional(), // For incremental uploads\n changes: storageChangesSchema.optional(),\n }),\n responses: {\n 200: z.object({\n versionId: z.string(),\n existing: z.boolean(),\n uploads: z\n .object({\n archive: presignedUploadSchema,\n manifest: presignedUploadSchema,\n })\n .optional(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 413: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Prepare for direct S3 upload\",\n },\n});\n\n/**\n * Storage commit contract for /api/storages/commit\n *\n * Commits a direct S3 upload by:\n * 1. Verifying uploaded files exist in S3\n * 2. Creating storage version record\n * 3. Updating storage HEAD pointer\n */\nexport const storagesCommitContract = c.router({\n commit: {\n method: \"POST\",\n path: \"/api/storages/commit\",\n headers: authHeadersSchema,\n body: z.object({\n storageName: z.string().min(1, \"Storage name is required\"),\n storageType: storageTypeSchema,\n versionId: z.string().min(1, \"Version ID is required\"),\n files: z.array(fileEntryWithHashSchema),\n runId: z.string().optional(),\n message: z.string().optional(),\n }),\n responses: {\n 200: z.object({\n success: z.literal(true),\n versionId: z.string(),\n storageName: z.string(),\n size: z.number(),\n fileCount: z.number(),\n deduplicated: z.boolean().optional(),\n }),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema, // S3 files missing\n 413: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Commit uploaded storage\",\n },\n});\n\n/**\n * Storage download contract for /api/storages/download\n *\n * Returns presigned URL for downloading storage archive from S3.\n * Different from storagesContract.download which streams the file directly.\n */\nexport const storagesDownloadContract = c.router({\n download: {\n method: \"GET\",\n path: \"/api/storages/download\",\n headers: authHeadersSchema,\n query: z.object({\n name: z.string().min(1, \"Storage name is required\"),\n type: storageTypeSchema,\n version: versionQuerySchema,\n }),\n responses: {\n // Normal response with presigned URL\n 200: z.union([\n z.object({\n url: z.url(),\n versionId: z.string(),\n fileCount: z.number(),\n size: z.number(),\n }),\n // Empty artifact response\n z.object({\n empty: z.literal(true),\n versionId: z.string(),\n fileCount: z.literal(0),\n size: z.literal(0),\n }),\n ]),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Get presigned download URL\",\n },\n});\n\n/**\n * Storage list contract for /api/storages/list\n *\n * Lists all storages for the authenticated user, filtered by type.\n */\nexport const storagesListContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/storages/list\",\n headers: authHeadersSchema,\n query: z.object({\n type: storageTypeSchema,\n }),\n responses: {\n 200: z.array(\n z.object({\n name: z.string(),\n size: z.number(),\n fileCount: z.number(),\n updatedAt: z.string(),\n }),\n ),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"List user storages by type\",\n },\n});\n\nexport type StoragesPrepareContract = typeof storagesPrepareContract;\nexport type StoragesCommitContract = typeof storagesCommitContract;\nexport type StoragesDownloadContract = typeof storagesDownloadContract;\nexport type StoragesListContract = typeof storagesListContract;\n\n// Export schemas for reuse\nexport { storageTypeSchema, uploadStorageResponseSchema };\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n chatThreadMetadataContract,\n chatThreadModelSelectionContract,\n chatThreadRenameContract,\n chatSearchContract,\n type ChatThreadMetadata,\n type ChatSearchResponse,\n} from \"@vm0/api-contracts/contracts/chat-threads\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport async function searchZeroChat(options: {\n keyword: string;\n agentId?: string;\n since?: number;\n limit?: number;\n before?: number;\n after?: number;\n}): Promise<ChatSearchResponse> {\n const config = await getClientConfig();\n const client = initClient(chatSearchContract, config);\n const result = await client.search({\n query: {\n keyword: options.keyword,\n agentId: options.agentId,\n since: options.since,\n limit: options.limit,\n before: options.before,\n after: options.after,\n },\n });\n if (result.status === 200) return result.body;\n handleError(result, \"Failed to search chat messages\");\n}\n\nexport async function renameZeroChatThread(options: {\n threadId: string;\n title: string;\n}): Promise<{ threadId: string; title: string }> {\n const config = await getClientConfig();\n const client = initClient(chatThreadRenameContract, config);\n const result = await client.rename({\n params: { id: options.threadId },\n body: { title: options.title },\n });\n if (result.status === 204) {\n return { threadId: options.threadId, title: options.title };\n }\n handleError(result, \"Failed to rename chat thread\");\n}\n\nexport async function getZeroChatThread(options: {\n threadId: string;\n}): Promise<ChatThreadMetadata> {\n const config = await getClientConfig();\n const client = initClient(chatThreadMetadataContract, config);\n const result = await client.get({\n params: { id: options.threadId },\n });\n if (result.status === 200) {\n return result.body;\n }\n handleError(result, \"Failed to get chat thread\");\n}\n\nexport async function updateZeroChatThreadModelSelection(options: {\n threadId: string;\n model: string | null;\n}): Promise<{ threadId: string; selectedModel: string | null }> {\n const config = await getClientConfig();\n const client = initClient(chatThreadModelSelectionContract, config);\n const result = await client.update({\n params: { id: options.threadId },\n body: { model: options.model },\n });\n if (result.status === 204) {\n return {\n threadId: options.threadId,\n selectedModel: options.model,\n };\n }\n handleError(result, \"Failed to update chat thread model\");\n}\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport { zeroDeveloperSupportContract } from \"@vm0/api-contracts/contracts/zero-developer-support\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport async function requestDeveloperSupportConsent(body: {\n title: string;\n description: string;\n}): Promise<{ consentCode: string }> {\n const config = await getClientConfig();\n const client = initClient(zeroDeveloperSupportContract, config);\n const result = await client.submit({ body, headers: {} });\n if (result.status === 200) return result.body as { consentCode: string };\n handleError(result, \"Failed to request developer support consent\");\n}\n\nexport async function submitDeveloperSupport(body: {\n title: string;\n description: string;\n consentCode: string;\n}): Promise<{ reference: string }> {\n const config = await getClientConfig();\n const client = initClient(zeroDeveloperSupportContract, config);\n const result = await client.submit({ body, headers: {} });\n if (result.status === 200) return result.body as { reference: string };\n handleError(result, \"Failed to submit developer support request\");\n}\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nconst developerSupportBodySchema = z.object({\n title: z.string().min(1, \"Title is required\"),\n description: z.string().min(1, \"Description is required\"),\n consentCode: z.string().optional(),\n});\n\nconst consentCodeResponseSchema = z.object({\n consentCode: z.string(),\n});\n\nconst submitResponseSchema = z.object({\n reference: z.string(),\n});\n\nexport const zeroDeveloperSupportContract = c.router({\n submit: {\n method: \"POST\",\n path: \"/api/zero/developer-support\",\n headers: authHeadersSchema,\n body: developerSupportBodySchema,\n responses: {\n 200: z.union([consentCodeResponseSchema, submitResponseSchema]),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary:\n \"Developer support: consent code generation or diagnostic submission\",\n },\n});\n\nexport type ZeroDeveloperSupportContract = typeof zeroDeveloperSupportContract;\nexport {\n developerSupportBodySchema,\n consentCodeResponseSchema,\n submitResponseSchema,\n};\n","import { z } from \"zod\";\n\nexport const COMPUTER_USE_PLUGIN_CALL_KIND = \"plugin.call\" as const;\nexport const COMPUTER_USE_FILESYSTEM_PLUGIN = \"filesystem\" as const;\nexport const COMPUTER_USE_MCP_PLUGIN = \"mcp\" as const;\nexport const COMPUTER_USE_MCP_LIST_TOOLS = \"tools/list\" as const;\nexport const COMPUTER_USE_FILESYSTEM_MCP_PACKAGE =\n \"@modelcontextprotocol/server-filesystem\" as const;\nexport const COMPUTER_USE_FILESYSTEM_MCP_VERSION = \"2026.1.14\" as const;\n\nexport const COMPUTER_USE_PLUGIN_RESULT_INLINE_TEXT_MAX_BYTES = 64 * 1024;\nexport const COMPUTER_USE_PLUGIN_RESULT_INLINE_JSON_MAX_BYTES = 256 * 1024;\nexport const COMPUTER_USE_PLUGIN_RESULT_BLOB_MAX_BYTES = 10 * 1024 * 1024;\n\nexport const computerUseFilesystemToolNames = [\n \"list_allowed_directories\",\n \"read_text_file\",\n \"read_media_file\",\n \"read_multiple_files\",\n \"write_file\",\n \"edit_file\",\n \"create_directory\",\n \"list_directory\",\n \"list_directory_with_sizes\",\n \"directory_tree\",\n \"move_file\",\n \"search_files\",\n \"get_file_info\",\n] as const;\n\nexport type ComputerUseFilesystemTool =\n (typeof computerUseFilesystemToolNames)[number];\n\nexport const computerUseFilesystemToolSchema = z.enum(\n computerUseFilesystemToolNames,\n);\n\nexport const computerUsePluginNameSchema = z.literal(\n COMPUTER_USE_FILESYSTEM_PLUGIN,\n);\n\nexport type ComputerUsePluginName = z.infer<typeof computerUsePluginNameSchema>;\n\nconst pathArgumentSchema = z.string().trim().min(1).max(16_384);\nconst textContentSchema = z\n .string()\n .max(COMPUTER_USE_PLUGIN_RESULT_BLOB_MAX_BYTES);\nconst excludePatternsSchema = z.array(z.string().trim().min(1)).max(512);\n\nconst noArgumentsSchema = z.object({}).strict();\n\nconst readTextFileArgumentsSchema = z\n .object({\n path: pathArgumentSchema,\n tail: z.number().int().positive().optional(),\n head: z.number().int().positive().optional(),\n })\n .strict()\n .superRefine((args, ctx) => {\n if (args.head !== undefined && args.tail !== undefined) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"head\"],\n message: \"read_text_file accepts either head or tail, not both\",\n });\n }\n });\n\nconst readMediaFileArgumentsSchema = z\n .object({\n path: pathArgumentSchema,\n })\n .strict();\n\nconst readMultipleFilesArgumentsSchema = z\n .object({\n paths: z.array(pathArgumentSchema).min(1).max(100),\n })\n .strict();\n\nconst writeFileArgumentsSchema = z\n .object({\n path: pathArgumentSchema,\n content: textContentSchema,\n })\n .strict();\n\nconst editFileArgumentsSchema = z\n .object({\n path: pathArgumentSchema,\n edits: z\n .array(\n z\n .object({\n oldText: textContentSchema,\n newText: textContentSchema,\n })\n .strict(),\n )\n .min(1)\n .max(1_000),\n dryRun: z.boolean().optional(),\n })\n .strict();\n\nconst createDirectoryArgumentsSchema = z\n .object({\n path: pathArgumentSchema,\n })\n .strict();\n\nconst listDirectoryArgumentsSchema = z\n .object({\n path: pathArgumentSchema,\n })\n .strict();\n\nconst listDirectoryWithSizesArgumentsSchema = z\n .object({\n path: pathArgumentSchema,\n sortBy: z.enum([\"name\", \"size\"]).optional(),\n })\n .strict();\n\nconst directoryTreeArgumentsSchema = z\n .object({\n path: pathArgumentSchema,\n excludePatterns: excludePatternsSchema.optional(),\n })\n .strict();\n\nconst moveFileArgumentsSchema = z\n .object({\n source: pathArgumentSchema,\n destination: pathArgumentSchema,\n })\n .strict();\n\nconst searchFilesArgumentsSchema = z\n .object({\n path: pathArgumentSchema,\n pattern: z.string().trim().min(1).max(4_096),\n excludePatterns: excludePatternsSchema.optional(),\n })\n .strict();\n\nconst getFileInfoArgumentsSchema = z\n .object({\n path: pathArgumentSchema,\n })\n .strict();\n\nexport function isComputerUseFilesystemTool(\n value: string,\n): value is ComputerUseFilesystemTool {\n return computerUseFilesystemToolNames.some((tool) => {\n return tool === value;\n });\n}\n\nexport function computerUseFilesystemToolArgumentsSchema(\n tool: ComputerUseFilesystemTool,\n): z.ZodType<Record<string, unknown>> {\n switch (tool) {\n case \"list_allowed_directories\":\n return noArgumentsSchema;\n case \"read_text_file\":\n return readTextFileArgumentsSchema;\n case \"read_media_file\":\n return readMediaFileArgumentsSchema;\n case \"read_multiple_files\":\n return readMultipleFilesArgumentsSchema;\n case \"write_file\":\n return writeFileArgumentsSchema;\n case \"edit_file\":\n return editFileArgumentsSchema;\n case \"create_directory\":\n return createDirectoryArgumentsSchema;\n case \"list_directory\":\n return listDirectoryArgumentsSchema;\n case \"list_directory_with_sizes\":\n return listDirectoryWithSizesArgumentsSchema;\n case \"directory_tree\":\n return directoryTreeArgumentsSchema;\n case \"move_file\":\n return moveFileArgumentsSchema;\n case \"search_files\":\n return searchFilesArgumentsSchema;\n case \"get_file_info\":\n return getFileInfoArgumentsSchema;\n }\n}\n\nexport function parseComputerUseFilesystemToolArguments(\n tool: ComputerUseFilesystemTool,\n args: unknown,\n): Record<string, unknown> {\n return computerUseFilesystemToolArgumentsSchema(tool).parse(args);\n}\n\nexport function computerUsePluginCapability(\n plugin: ComputerUsePluginName,\n): string {\n return `plugin.${plugin}`;\n}\n\nexport function computerUsePluginToolCapability(\n plugin: ComputerUsePluginName,\n tool: ComputerUseFilesystemTool,\n): string {\n return `plugin.${plugin}.${tool}`;\n}\n\nexport function computerUsePluginCallRequiredCapabilities(params: {\n readonly plugin: ComputerUsePluginName;\n readonly tool: ComputerUseFilesystemTool;\n}): readonly string[] {\n return [\n COMPUTER_USE_PLUGIN_CALL_KIND,\n computerUsePluginCapability(params.plugin),\n computerUsePluginToolCapability(params.plugin, params.tool),\n ];\n}\n\nexport function computerUseFilesystemToolIsDestructive(\n tool: ComputerUseFilesystemTool,\n): boolean {\n return tool === \"write_file\" || tool === \"edit_file\" || tool === \"move_file\";\n}\n\nexport const computerUsePluginCallBodySchema = z\n .object({\n plugin: computerUsePluginNameSchema,\n tool: computerUseFilesystemToolSchema,\n arguments: z.record(z.string(), z.unknown()).default({}),\n timeoutMs: z.number().int().min(1_000).max(120_000).default(60_000),\n })\n .superRefine((body, ctx) => {\n const parsed = computerUseFilesystemToolArgumentsSchema(\n body.tool,\n ).safeParse(body.arguments);\n if (parsed.success) {\n return;\n }\n for (const issue of parsed.error.issues) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"arguments\", ...issue.path],\n message: issue.message,\n });\n }\n });\n\nexport type ComputerUsePluginCallBody = z.infer<\n typeof computerUsePluginCallBodySchema\n>;\n\nexport interface ComputerUsePluginCallPayload {\n readonly plugin: ComputerUsePluginName;\n readonly tool: ComputerUseFilesystemTool;\n readonly arguments: Record<string, unknown>;\n}\n\nexport function isComputerUsePluginCallPayload(\n value: unknown,\n): value is ComputerUsePluginCallPayload {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n const payload = value as {\n readonly plugin?: unknown;\n readonly tool?: unknown;\n readonly arguments?: unknown;\n };\n return (\n payload.plugin === COMPUTER_USE_FILESYSTEM_PLUGIN &&\n typeof payload.tool === \"string\" &&\n isComputerUseFilesystemTool(payload.tool) &&\n typeof payload.arguments === \"object\" &&\n payload.arguments !== null &&\n !Array.isArray(payload.arguments)\n );\n}\n\nexport const COMPUTER_USE_MCP_SERVER_NAME_PATTERN = /^[a-z0-9_-]{1,64}$/;\n\nexport function computerUseMcpServerCapability(server: string): string {\n return `plugin.${COMPUTER_USE_MCP_PLUGIN}.${server}`;\n}\n\nexport const computerUseMcpPluginCallBodySchema = z.object({\n plugin: z.literal(COMPUTER_USE_MCP_PLUGIN),\n server: z\n .string()\n .regex(\n COMPUTER_USE_MCP_SERVER_NAME_PATTERN,\n \"MCP server names must match [a-z0-9_-]{1,64}\",\n ),\n tool: z.string().trim().min(1).max(256),\n arguments: z.record(z.string(), z.unknown()).default({}),\n timeoutMs: z.number().int().min(1_000).max(120_000).default(60_000),\n});\n\nexport type ComputerUseMcpPluginCallBody = z.infer<\n typeof computerUseMcpPluginCallBodySchema\n>;\n\nexport const computerUseAnyPluginCallBodySchema = z.union([\n computerUsePluginCallBodySchema,\n computerUseMcpPluginCallBodySchema,\n]);\n\nexport type ComputerUseAnyPluginCallBody = z.infer<\n typeof computerUseAnyPluginCallBodySchema\n>;\n\nexport function computerUseMcpPluginCallRequiredCapabilities(\n server: string,\n): readonly string[] {\n return [\n COMPUTER_USE_PLUGIN_CALL_KIND,\n computerUseMcpServerCapability(server),\n ];\n}\n\nexport interface ComputerUseMcpPluginCallPayload {\n readonly plugin: typeof COMPUTER_USE_MCP_PLUGIN;\n readonly server: string;\n readonly tool: string;\n readonly arguments: Record<string, unknown>;\n}\n\nexport function isComputerUseMcpPluginCallPayload(\n value: unknown,\n): value is ComputerUseMcpPluginCallPayload {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n const payload = value as {\n readonly plugin?: unknown;\n readonly server?: unknown;\n readonly tool?: unknown;\n readonly arguments?: unknown;\n };\n return (\n payload.plugin === COMPUTER_USE_MCP_PLUGIN &&\n typeof payload.server === \"string\" &&\n COMPUTER_USE_MCP_SERVER_NAME_PATTERN.test(payload.server) &&\n typeof payload.tool === \"string\" &&\n payload.tool.length > 0 &&\n typeof payload.arguments === \"object\" &&\n payload.arguments !== null &&\n !Array.isArray(payload.arguments)\n );\n}\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport type {\n ComputerUseAuthorizationRequestCreateResponse,\n ComputerUseCommandCreateResponse,\n ComputerUseCommandResponse,\n ComputerUseHost,\n ComputerUseReadCommandKind,\n ComputerUseWriteCommandKind,\n} from \"@vm0/api-contracts/contracts/zero-computer-use\";\nimport type { ComputerUseAnyPluginCallBody } from \"@vm0/api-contracts/contracts/zero-computer-use-plugins\";\nimport {\n zeroComputerUseAuthorizationRequestsContract,\n zeroComputerUseCommandContract,\n zeroComputerUseHostsContract,\n zeroComputerUsePluginCommandContract,\n zeroComputerUseWriteCommandContract,\n} from \"@vm0/api-contracts/contracts/zero-computer-use\";\nimport {\n ApiRequestError,\n getBaseUrl,\n handleError,\n} from \"../core/client-factory\";\nimport { getActiveToken } from \"../config\";\nimport {\n cliClientHeaderApi,\n headersWithCliClientHeaders,\n} from \"../client-headers\";\n\nfunction normalizeConfiguredUrl(value: string): string {\n return value.startsWith(\"http\") ? value : `https://${value}`;\n}\n\nfunction resolveComputerUseApiBaseUrl(baseUrl: string): string {\n const override = process.env.VM0_API_BACKEND_URL;\n if (override) {\n return normalizeConfiguredUrl(override).replace(/\\/$/, \"\");\n }\n\n const url = new URL(baseUrl);\n if (url.hostname === \"www.vm0.ai\" || url.hostname === \"app.vm0.ai\") {\n url.hostname = \"api.vm0.ai\";\n }\n return url.toString().replace(/\\/$/, \"\");\n}\n\nfunction buildHeaders(token?: string): Record<string, string> {\n const headers: Record<string, string> = {};\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n return headers;\n}\n\nasync function getComputerUseClientConfig() {\n const baseUrl = resolveComputerUseApiBaseUrl(await getBaseUrl());\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n return {\n baseUrl,\n baseHeaders: buildHeaders(token),\n jsonQuery: false as const,\n api: cliClientHeaderApi,\n };\n}\n\ninterface ComputerUseCommandParams<\n Kind extends ComputerUseReadCommandKind | ComputerUseWriteCommandKind,\n> {\n readonly kind: Kind;\n readonly app?: string;\n readonly snapshotId?: string;\n readonly elementId?: string;\n readonly elementIndex?: number;\n readonly x?: number;\n readonly y?: number;\n readonly button?: \"left\" | \"right\" | \"middle\";\n readonly clickCount?: number;\n readonly direction?: \"up\" | \"down\" | \"left\" | \"right\";\n readonly pages?: number;\n readonly value?: string;\n readonly text?: string;\n readonly key?: string;\n readonly action?: string;\n readonly timeoutMs?: number;\n}\n\nfunction commandBody<\n Kind extends ComputerUseReadCommandKind | ComputerUseWriteCommandKind,\n>(params: ComputerUseCommandParams<Kind>) {\n return {\n kind: params.kind,\n timeoutMs: params.timeoutMs ?? 15_000,\n ...(params.app ? { app: params.app } : {}),\n ...(params.snapshotId ? { snapshotId: params.snapshotId } : {}),\n ...(params.elementId ? { elementId: params.elementId } : {}),\n ...(params.elementIndex !== undefined\n ? { elementIndex: params.elementIndex }\n : {}),\n ...(params.x !== undefined ? { x: params.x } : {}),\n ...(params.y !== undefined ? { y: params.y } : {}),\n ...(params.button ? { button: params.button } : {}),\n ...(params.clickCount !== undefined\n ? { clickCount: params.clickCount }\n : {}),\n ...(params.direction ? { direction: params.direction } : {}),\n ...(params.pages !== undefined ? { pages: params.pages } : {}),\n ...(params.value !== undefined ? { value: params.value } : {}),\n ...(params.text !== undefined ? { text: params.text } : {}),\n ...(params.key ? { key: params.key } : {}),\n ...(params.action ? { action: params.action } : {}),\n };\n}\n\nexport async function createComputerUseReadCommand(\n params: ComputerUseCommandParams<ComputerUseReadCommandKind>,\n): Promise<ComputerUseCommandCreateResponse> {\n const config = await getComputerUseClientConfig();\n const client = initClient(zeroComputerUseCommandContract, config);\n const result = await client.create({ body: commandBody(params) });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to create computer-use command\");\n}\n\nexport async function createComputerUseWriteCommand(\n params: ComputerUseCommandParams<ComputerUseWriteCommandKind>,\n): Promise<ComputerUseCommandCreateResponse> {\n const config = await getComputerUseClientConfig();\n const client = initClient(zeroComputerUseWriteCommandContract, config);\n const result = await client.create({ body: commandBody(params) });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to create computer-use write command\");\n}\n\nexport async function createComputerUsePluginCommand(\n params: ComputerUseAnyPluginCallBody,\n): Promise<ComputerUseCommandCreateResponse> {\n const config = await getComputerUseClientConfig();\n const client = initClient(zeroComputerUsePluginCommandContract, config);\n const result = await client.create({ body: params });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to create computer-use plugin command\");\n}\n\nexport async function listComputerUseHosts(): Promise<\n readonly ComputerUseHost[]\n> {\n const config = await getComputerUseClientConfig();\n const client = initClient(zeroComputerUseHostsContract, config);\n const result = await client.list({});\n\n if (result.status === 200) {\n return result.body.hosts;\n }\n\n handleError(result, \"Failed to list computer-use hosts\");\n}\n\nexport async function getComputerUseCommand(\n commandId: string,\n): Promise<ComputerUseCommandResponse> {\n const config = await getComputerUseClientConfig();\n const client = initClient(zeroComputerUseCommandContract, config);\n const result = await client.get({ params: { commandId } });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to get computer-use command\");\n}\n\nexport async function createComputerUseAuthorizationRequest(): Promise<ComputerUseAuthorizationRequestCreateResponse> {\n const config = await getComputerUseClientConfig();\n const client = initClient(\n zeroComputerUseAuthorizationRequestsContract,\n config,\n );\n const result = await client.create({ body: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to create computer-use authorization request\");\n}\n\n/**\n * Download a command screenshot through the authenticated API proxy. The bytes\n * never traverse a public URL; the API authorizes by command ownership and\n * streams the object back. Used when the command result carries an\n * object-storage pointer instead of an inline data URL.\n */\nexport async function fetchComputerUseScreenshot(\n commandId: string,\n): Promise<{ readonly buffer: Buffer; readonly mimeType: string }> {\n const config = await getComputerUseClientConfig();\n const response = await fetch(\n `${config.baseUrl}/api/zero/computer-use/commands/${encodeURIComponent(\n commandId,\n )}/screenshot`,\n { headers: headersWithCliClientHeaders(config.baseHeaders) },\n );\n\n if (!response.ok) {\n throw new ApiRequestError(\n \"Failed to download computer-use screenshot\",\n \"REQUEST_FAILED\",\n response.status,\n );\n }\n\n const arrayBuffer = await response.arrayBuffer();\n const mimeType =\n response.headers.get(\"content-type\") ?? \"application/octet-stream\";\n return { buffer: Buffer.from(arrayBuffer), mimeType };\n}\n\nexport async function fetchComputerUsePluginContent(\n commandId: string,\n): Promise<{\n readonly buffer: Buffer;\n readonly mimeType: string;\n readonly fileName: string;\n}> {\n const config = await getComputerUseClientConfig();\n const response = await fetch(\n `${config.baseUrl}/api/zero/computer-use/commands/${encodeURIComponent(\n commandId,\n )}/plugin-content`,\n { headers: headersWithCliClientHeaders(config.baseHeaders) },\n );\n\n if (!response.ok) {\n throw new ApiRequestError(\n \"Failed to download computer-use plugin content\",\n \"REQUEST_FAILED\",\n response.status,\n );\n }\n\n const arrayBuffer = await response.arrayBuffer();\n const mimeType =\n response.headers.get(\"content-type\") ?? \"application/octet-stream\";\n const disposition = response.headers.get(\"content-disposition\") ?? \"\";\n const fileName =\n /filename=\"([^\"]+)\"/.exec(disposition)?.[1] ?? \"plugin-content.bin\";\n return { buffer: Buffer.from(arrayBuffer), mimeType, fileName };\n}\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport {\n COMPUTER_USE_PLUGIN_CALL_KIND,\n computerUseAnyPluginCallBodySchema,\n} from \"./zero-computer-use-plugins\";\n\nconst c = initContract();\n\nexport const computerUseHostStatusSchema = z.enum([\"online\", \"offline\"]);\n\nexport const computerUseReadCommandKindSchema = z.enum([\n \"apps.list\",\n \"app.state\",\n]);\n\nexport const computerUseWriteCommandKindSchema = z.enum([\n \"app.open\",\n \"element.click\",\n \"element.scroll\",\n \"element.set_value\",\n \"element.perform_action\",\n \"keyboard.type_text\",\n \"keyboard.press_key\",\n]);\n\nexport const computerUsePluginCommandKindSchema = z.literal(\n COMPUTER_USE_PLUGIN_CALL_KIND,\n);\n\nexport const computerUseCommandKindSchema = z.enum([\n ...computerUseReadCommandKindSchema.options,\n ...computerUseWriteCommandKindSchema.options,\n COMPUTER_USE_PLUGIN_CALL_KIND,\n]);\n\nexport const computerUseCommandStatusSchema = z.enum([\n \"queued\",\n \"running\",\n \"succeeded\",\n \"failed\",\n]);\n\nexport const computerUseCommandErrorCodeSchema = z.enum([\n \"no_host\",\n \"permission_denied\",\n \"accessibility_unavailable\",\n \"automation_permission_denied\",\n \"window_unavailable\",\n \"screen_recording_unavailable\",\n \"app_not_found\",\n \"app_open_failed\",\n \"element_action_unsupported\",\n \"element_not_editable\",\n \"unsupported_command\",\n \"timeout\",\n \"command_timeout\",\n \"feature_disabled\",\n \"plugin_disabled\",\n \"plugin_unavailable\",\n \"plugin_restarting\",\n \"unknown_plugin\",\n \"unknown_tool\",\n \"invalid_arguments\",\n \"path_denied\",\n \"result_too_large\",\n \"input_too_large\",\n \"mcp_error\",\n]);\n\nconst hostNameSchema = z.string().trim().min(1).max(253);\nconst hostInstallationIdSchema = z.string().trim().uuid();\nconst hostVersionSchema = z.string().trim().min(1).max(64);\nconst hostOsVersionSchema = z.string().trim().min(1).max(128);\nconst hostIdPathParamsSchema = z.object({\n hostId: z.string().min(1),\n});\nconst authorizationRequestTokenPathParamsSchema = z.object({\n requestToken: z.string().min(1),\n});\nconst commandIdPathParamsSchema = z.object({\n commandId: z.string().min(1),\n});\nconst supportedCapabilitiesSchema = z\n .array(z.string().trim().min(1).max(128))\n .max(50);\nconst appNameSchema = z.string().trim().min(1).max(256);\nconst snapshotIdSchema = z.string().trim().min(1).max(256);\nconst elementIdSchema = z.string().trim().min(1).max(256);\nconst elementIndexSchema = z.number().int().min(0);\n\nconst computerUsePermissionsSchema = z.object({\n accessibility: z.boolean(),\n screenRecording: z.boolean(),\n automation: z\n .object({\n chrome: z\n .object({\n status: z.enum([\n \"unknown\",\n \"granted\",\n \"denied\",\n \"not_installed\",\n \"not_running\",\n ]),\n updatedAt: z.string().nullable().default(null),\n reason: z.string().nullable().default(null),\n })\n .default({ status: \"unknown\", updatedAt: null, reason: null }),\n safari: z\n .object({\n status: z.enum([\n \"unknown\",\n \"granted\",\n \"denied\",\n \"not_installed\",\n \"not_running\",\n ]),\n updatedAt: z.string().nullable().default(null),\n reason: z.string().nullable().default(null),\n })\n .default({ status: \"unknown\", updatedAt: null, reason: null }),\n })\n .default({\n chrome: { status: \"unknown\", updatedAt: null, reason: null },\n safari: { status: \"unknown\", updatedAt: null, reason: null },\n }),\n});\n\nconst computerUseRuntimeBodySchema = z.object({\n installationId: hostInstallationIdSchema.optional(),\n hostName: hostNameSchema,\n appVersion: hostVersionSchema,\n osVersion: hostOsVersionSchema,\n supportedCapabilities: supportedCapabilitiesSchema.default([]),\n permissions: computerUsePermissionsSchema,\n});\n\nconst computerUseCommandTargetShape = {\n timeoutMs: z.number().int().min(1_000).max(120_000).default(60_000),\n} as const;\n\nconst computerUseCommandPayloadShape = {\n app: appNameSchema.optional(),\n snapshotId: snapshotIdSchema.optional(),\n elementId: elementIdSchema.optional(),\n elementIndex: elementIndexSchema.optional(),\n x: z.number().int().min(0).optional(),\n y: z.number().int().min(0).optional(),\n button: z.enum([\"left\", \"right\", \"middle\"]).optional(),\n clickCount: z.number().int().min(1).max(3).optional(),\n direction: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional(),\n pages: z.number().positive().max(25).optional(),\n value: z.string().min(1).max(64_000).optional(),\n text: z.string().min(1).max(64_000).optional(),\n key: z.string().trim().min(1).max(256).optional(),\n action: z.string().trim().min(1).max(256).optional(),\n} as const;\n\nconst computerUseCommandCreateBodySchema = z\n .object({\n kind: computerUseReadCommandKindSchema,\n ...computerUseCommandTargetShape,\n ...computerUseCommandPayloadShape,\n })\n .superRefine((body, ctx) => {\n if (body.kind === \"app.state\" && !body.app) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"app\"],\n message: \"app.state requires app\",\n });\n }\n });\n\nconst computerUseWriteCommandCreateBaseSchema = z.object({\n kind: computerUseWriteCommandKindSchema,\n ...computerUseCommandTargetShape,\n ...computerUseCommandPayloadShape,\n});\n\ntype ComputerUseWriteCommandCreateBody = z.infer<\n typeof computerUseWriteCommandCreateBaseSchema\n>;\n\ninterface ComputerUseCommandValidationContext {\n addIssue(issue: {\n code: \"custom\";\n path: PropertyKey[];\n message: string;\n }): void;\n}\n\nfunction requireComputerUseField(\n ctx: ComputerUseCommandValidationContext,\n field: string,\n message: string,\n): void {\n ctx.addIssue({ code: \"custom\", path: [field], message });\n}\n\nfunction validateElementClickCommand(\n body: ComputerUseWriteCommandCreateBody,\n ctx: ComputerUseCommandValidationContext,\n): void {\n const hasPoint = body.x !== undefined && body.y !== undefined;\n if (!body.elementId && body.elementIndex === undefined && !hasPoint) {\n requireComputerUseField(\n ctx,\n \"elementIndex\",\n \"element.click requires elementId, elementIndex, or x/y\",\n );\n }\n if ((body.x === undefined) !== (body.y === undefined)) {\n requireComputerUseField(\n ctx,\n \"x\",\n \"element.click coordinates require both x and y\",\n );\n }\n}\n\nfunction validateElementScrollCommand(\n body: ComputerUseWriteCommandCreateBody,\n ctx: ComputerUseCommandValidationContext,\n): void {\n if (!body.elementId && body.elementIndex === undefined) {\n requireComputerUseField(\n ctx,\n \"elementIndex\",\n \"element.scroll requires elementId or elementIndex\",\n );\n }\n if (!body.direction) {\n requireComputerUseField(\n ctx,\n \"direction\",\n \"element.scroll requires direction\",\n );\n }\n}\n\nfunction validateElementSetValueCommand(\n body: ComputerUseWriteCommandCreateBody,\n ctx: ComputerUseCommandValidationContext,\n): void {\n if (!body.elementId && body.elementIndex === undefined) {\n requireComputerUseField(\n ctx,\n \"elementIndex\",\n \"element.set_value requires elementId or elementIndex\",\n );\n }\n if (!body.value) {\n requireComputerUseField(ctx, \"value\", \"element.set_value requires value\");\n }\n}\n\nfunction validateElementActionCommand(\n body: ComputerUseWriteCommandCreateBody,\n ctx: ComputerUseCommandValidationContext,\n): void {\n if (!body.elementId && body.elementIndex === undefined) {\n requireComputerUseField(\n ctx,\n \"elementIndex\",\n \"element.perform_action requires elementId or elementIndex\",\n );\n }\n if (!body.action) {\n requireComputerUseField(\n ctx,\n \"action\",\n \"element.perform_action requires action\",\n );\n }\n}\n\nfunction validateComputerUseWriteCommand(\n body: ComputerUseWriteCommandCreateBody,\n ctx: ComputerUseCommandValidationContext,\n): void {\n if (!body.app) {\n requireComputerUseField(ctx, \"app\", `${body.kind} requires app`);\n return;\n }\n\n switch (body.kind) {\n case \"app.open\":\n return;\n case \"element.click\":\n validateElementClickCommand(body, ctx);\n return;\n case \"element.scroll\":\n validateElementScrollCommand(body, ctx);\n return;\n case \"element.set_value\":\n validateElementSetValueCommand(body, ctx);\n return;\n case \"element.perform_action\":\n validateElementActionCommand(body, ctx);\n return;\n case \"keyboard.type_text\":\n if (!body.text) {\n requireComputerUseField(\n ctx,\n \"text\",\n \"keyboard.type_text requires text\",\n );\n }\n return;\n case \"keyboard.press_key\":\n if (!body.key) {\n requireComputerUseField(ctx, \"key\", \"keyboard.press_key requires key\");\n }\n }\n}\n\nconst computerUseWriteCommandCreateBodySchema =\n computerUseWriteCommandCreateBaseSchema.superRefine(\n validateComputerUseWriteCommand,\n );\n\nconst computerUseCommandErrorSchema = z.object({\n code: computerUseCommandErrorCodeSchema,\n message: z.string(),\n});\n\nconst computerUseCommandResultSchema = z.record(z.string(), z.unknown());\n\n/**\n * Screenshot pointer shapes for `computer_use_commands.result.screenshot`.\n *\n * Old rows store the screenshot as a `data:image/...;base64,...` string. New\n * rows store the bytes in private object storage and keep only a pointer here.\n * The stored pointer carries `bucket`/`key`; the client-facing pointer omits\n * them so internal storage layout never leaves the API. After retention\n * deletes the object the pointer is rewritten to `{ type: \"expired\" }`.\n */\nexport interface StoredScreenshotPointer {\n readonly type: \"s3\";\n readonly bucket: string;\n readonly key: string;\n readonly mimeType: string;\n readonly sizeBytes: number;\n readonly width: number;\n readonly height: number;\n}\n\nexport interface ClientScreenshotPointer {\n readonly type: \"s3\" | \"expired\";\n readonly mimeType?: string;\n readonly sizeBytes?: number;\n readonly width?: number;\n readonly height?: number;\n}\n\nexport interface StoredPluginContentPointer {\n readonly type: \"s3\";\n readonly bucket: string;\n readonly key: string;\n readonly mimeType: string;\n readonly sizeBytes: number;\n readonly fileName: string;\n}\n\nexport interface ClientPluginContentPointer {\n readonly type: \"s3\" | \"expired\";\n readonly mimeType?: string;\n readonly sizeBytes?: number;\n readonly fileName?: string;\n}\n\nexport function isStoredScreenshotPointer(\n value: unknown,\n): value is StoredScreenshotPointer {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { readonly type?: unknown }).type === \"s3\" &&\n typeof (value as { readonly key?: unknown }).key === \"string\"\n );\n}\n\nexport function isExpiredScreenshotPointer(\n value: unknown,\n): value is { readonly type: \"expired\" } {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { readonly type?: unknown }).type === \"expired\"\n );\n}\n\nexport function isStoredPluginContentPointer(\n value: unknown,\n): value is StoredPluginContentPointer {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { readonly type?: unknown }).type === \"s3\" &&\n typeof (value as { readonly bucket?: unknown }).bucket === \"string\" &&\n typeof (value as { readonly key?: unknown }).key === \"string\" &&\n typeof (value as { readonly mimeType?: unknown }).mimeType === \"string\" &&\n typeof (value as { readonly fileName?: unknown }).fileName === \"string\"\n );\n}\n\nexport function isExpiredPluginContentPointer(\n value: unknown,\n): value is { readonly type: \"expired\" } {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { readonly type?: unknown }).type === \"expired\"\n );\n}\n\nexport const computerUseHostSchema = z.object({\n id: z.string(),\n hostName: z.string().optional(),\n displayName: z.string(),\n appVersion: z.string(),\n osVersion: z.string(),\n supportedCapabilities: z.array(z.string()),\n permissions: computerUsePermissionsSchema,\n status: computerUseHostStatusSchema,\n lastSeenAt: z.string(),\n createdAt: z.string(),\n});\n\nexport const computerUseHostStartResponseSchema = z.object({\n hostId: z.string(),\n hostToken: z.string(),\n});\n\nexport const computerUseHeartbeatResponseSchema = z.object({\n ok: z.literal(true),\n hostId: z.string(),\n});\n\nexport const computerUseHostStopBodySchema = z.object({});\n\nexport const computerUseHostStopResponseSchema = z.object({\n ok: z.literal(true),\n hostId: z.string(),\n});\n\nexport const computerUseHostListResponseSchema = z.object({\n hosts: z.array(computerUseHostSchema),\n});\n\nexport const computerUseHostDeleteResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const computerUseAuthorizationSourceSchema = z.enum([\n \"chat\",\n \"slack\",\n \"teams\",\n]);\n\nconst computerUseAuthorizationRequestCreateBodySchema = z.object({});\n\nexport const computerUseAuthorizationRequestCreateResponseSchema = z.object({\n authorizationUrl: z.string().url(),\n source: computerUseAuthorizationSourceSchema,\n expiresAt: z.string(),\n});\n\nexport const computerUseAuthorizationRequestResponseSchema = z.object({\n source: computerUseAuthorizationSourceSchema,\n expiresAt: z.string(),\n completedAt: z.string().nullable(),\n computerUseHostId: z.string().uuid().nullable(),\n hosts: z.array(computerUseHostSchema),\n});\n\nconst computerUseAuthorizationRequestApplyBodySchema = z.object({\n computerUseHostId: z.string().uuid(),\n});\n\nexport const computerUseAuthorizationRequestApplyResponseSchema = z.object({\n ok: z.literal(true),\n source: computerUseAuthorizationSourceSchema,\n computerUseHostId: z.string().uuid(),\n});\n\nexport const computerUseCommandCreateResponseSchema = z.object({\n commandId: z.string(),\n status: z.literal(\"queued\"),\n});\n\nexport const computerUseCommandResponseSchema = z.object({\n id: z.string(),\n kind: computerUseCommandKindSchema,\n status: computerUseCommandStatusSchema,\n hostId: z.string().nullable(),\n hostName: z.string().nullable(),\n payload: z.record(z.string(), z.unknown()),\n result: computerUseCommandResultSchema.optional(),\n error: computerUseCommandErrorSchema.optional(),\n timeoutMs: z.number().int().nullable(),\n createdAt: z.string(),\n claimedAt: z.string().nullable(),\n completedAt: z.string().nullable(),\n});\n\nexport const computerUseHostCommandNextBodySchema = z.object({\n supportedCapabilities: supportedCapabilitiesSchema.default([]),\n});\n\nexport const computerUseHostCommandNextResponseSchema = z.discriminatedUnion(\n \"status\",\n [\n z.object({ status: z.literal(\"idle\") }),\n z.object({\n status: z.literal(\"command\"),\n command: computerUseCommandResponseSchema,\n }),\n ],\n);\n\nexport const computerUseHostCommandCompleteBodySchema = z.discriminatedUnion(\n \"status\",\n [\n z.object({\n status: z.literal(\"succeeded\"),\n result: computerUseCommandResultSchema,\n }),\n z.object({\n status: z.literal(\"failed\"),\n error: computerUseCommandErrorSchema,\n }),\n ],\n);\n\nexport const computerUseCommandCompleteResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const computerUseAuditEventSchema = z.object({\n id: z.string(),\n commandId: z.string(),\n runId: z.string().nullable(),\n hostId: z.string().nullable(),\n kind: computerUseCommandKindSchema,\n app: z.string().nullable(),\n event: z.literal(\"completed\"),\n redactedResult: z.record(z.string(), z.unknown()).nullable(),\n error: z.record(z.string(), z.unknown()).nullable(),\n createdAt: z.string(),\n});\n\nexport const computerUseAuditEventListResponseSchema = z.object({\n auditEvents: z.array(computerUseAuditEventSchema),\n});\n\nexport const zeroComputerUseHostsContract = c.router({\n start: {\n method: \"POST\",\n path: \"/api/zero/computer-use/hosts/start\",\n headers: authHeadersSchema,\n body: computerUseRuntimeBodySchema,\n responses: {\n 200: computerUseHostStartResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Start or reactivate a desktop computer-use host\",\n },\n list: {\n method: \"GET\",\n path: \"/api/zero/computer-use/hosts\",\n headers: authHeadersSchema,\n responses: {\n 200: computerUseHostListResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"List linked desktop computer-use hosts\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/computer-use/hosts/:hostId\",\n headers: authHeadersSchema,\n pathParams: hostIdPathParamsSchema,\n responses: {\n 200: computerUseHostDeleteResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Delete a desktop computer-use host\",\n },\n});\n\nexport const zeroComputerUseHeartbeatContract = c.router({\n heartbeat: {\n method: \"POST\",\n path: \"/api/zero/computer-use/heartbeat\",\n headers: authHeadersSchema,\n body: computerUseRuntimeBodySchema,\n responses: {\n 200: computerUseHeartbeatResponseSchema,\n 401: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Refresh a desktop computer-use host heartbeat\",\n },\n stop: {\n method: \"POST\",\n path: \"/api/zero/computer-use/host/stop\",\n headers: authHeadersSchema,\n body: computerUseHostStopBodySchema,\n responses: {\n 200: computerUseHostStopResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Stop a desktop computer-use host\",\n },\n});\n\nexport const zeroComputerUseAuthorizationRequestsContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/computer-use/authorization-requests\",\n headers: authHeadersSchema,\n body: computerUseAuthorizationRequestCreateBodySchema,\n responses: {\n 200: computerUseAuthorizationRequestCreateResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary:\n \"Create a short-lived Computer Use authorization request for the current run\",\n },\n get: {\n method: \"GET\",\n path: \"/api/zero/computer-use/authorization-requests/:requestToken\",\n headers: authHeadersSchema,\n pathParams: authorizationRequestTokenPathParamsSchema,\n responses: {\n 200: computerUseAuthorizationRequestResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 410: apiErrorSchema,\n },\n summary: \"Read a Computer Use authorization request\",\n },\n apply: {\n method: \"POST\",\n path: \"/api/zero/computer-use/authorization-requests/:requestToken/apply\",\n headers: authHeadersSchema,\n pathParams: authorizationRequestTokenPathParamsSchema,\n body: computerUseAuthorizationRequestApplyBodySchema,\n responses: {\n 200: computerUseAuthorizationRequestApplyResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 410: apiErrorSchema,\n },\n summary: \"Bind a Computer Use host for a delegated authorization request\",\n },\n});\n\nexport const zeroComputerUseCommandContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/computer-use/commands\",\n headers: authHeadersSchema,\n body: computerUseCommandCreateBodySchema,\n responses: {\n 200: computerUseCommandCreateResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Create a read-only desktop computer-use command\",\n },\n get: {\n method: \"GET\",\n path: \"/api/zero/computer-use/commands/:commandId\",\n headers: authHeadersSchema,\n pathParams: commandIdPathParamsSchema,\n responses: {\n 200: computerUseCommandResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get a desktop computer-use command result\",\n },\n getScreenshot: {\n method: \"GET\",\n path: \"/api/zero/computer-use/commands/:commandId/screenshot\",\n headers: authHeadersSchema,\n pathParams: commandIdPathParamsSchema,\n responses: {\n 200: c.type<Blob>(),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Download a desktop computer-use command screenshot\",\n },\n getPluginContent: {\n method: \"GET\",\n path: \"/api/zero/computer-use/commands/:commandId/plugin-content\",\n headers: authHeadersSchema,\n pathParams: commandIdPathParamsSchema,\n responses: {\n 200: c.type<Blob>(),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Download offloaded desktop computer-use plugin content\",\n },\n});\n\nexport const zeroComputerUseWriteCommandContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/computer-use/write-commands\",\n headers: authHeadersSchema,\n body: computerUseWriteCommandCreateBodySchema,\n responses: {\n 200: computerUseCommandCreateResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Create a desktop computer-use write command\",\n },\n});\n\nexport const zeroComputerUsePluginCommandContract = c.router({\n create: {\n method: \"POST\",\n path: \"/api/zero/computer-use/plugin-commands\",\n headers: authHeadersSchema,\n body: computerUseAnyPluginCallBodySchema,\n responses: {\n 200: computerUseCommandCreateResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Create a desktop computer-use plugin command\",\n },\n});\n\nexport const zeroComputerUseHostCommandsContract = c.router({\n next: {\n method: \"POST\",\n path: \"/api/zero/computer-use/host/commands/next\",\n headers: authHeadersSchema,\n body: computerUseHostCommandNextBodySchema,\n responses: {\n 200: computerUseHostCommandNextResponseSchema,\n 401: apiErrorSchema,\n },\n summary: \"Claim the next approved desktop computer-use command\",\n },\n complete: {\n method: \"POST\",\n path: \"/api/zero/computer-use/host/commands/:commandId/complete\",\n headers: authHeadersSchema,\n pathParams: commandIdPathParamsSchema,\n body: computerUseHostCommandCompleteBodySchema,\n responses: {\n 200: computerUseCommandCompleteResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Complete a desktop computer-use command\",\n },\n});\n\nexport const zeroComputerUseAuditEventsContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/computer-use/audit-events\",\n headers: authHeadersSchema,\n query: z.object({\n limit: z.coerce.number().int().positive().max(200).default(50),\n commandId: z.string().optional(),\n hostId: z.string().optional(),\n runId: z.string().optional(),\n }),\n responses: {\n 200: computerUseAuditEventListResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"List desktop computer-use write command audit events\",\n },\n});\n\nexport type ComputerUseAuditEvent = z.infer<typeof computerUseAuditEventSchema>;\nexport type ComputerUseAuditEventListResponse = z.infer<\n typeof computerUseAuditEventListResponseSchema\n>;\nexport type ComputerUseCommandCreateResponse = z.infer<\n typeof computerUseCommandCreateResponseSchema\n>;\nexport type ComputerUseCommandError = z.infer<\n typeof computerUseCommandErrorSchema\n>;\nexport type ComputerUseCommandKind = z.infer<\n typeof computerUseCommandKindSchema\n>;\nexport type ComputerUseCommandResponse = z.infer<\n typeof computerUseCommandResponseSchema\n>;\nexport type ComputerUseCommandResult = z.infer<\n typeof computerUseCommandResultSchema\n>;\nexport type ComputerUseCommandStatus = z.infer<\n typeof computerUseCommandStatusSchema\n>;\nexport type ComputerUseHost = z.infer<typeof computerUseHostSchema>;\nexport type ComputerUseHostDeleteResponse = z.infer<\n typeof computerUseHostDeleteResponseSchema\n>;\nexport type ComputerUseHostListResponse = z.infer<\n typeof computerUseHostListResponseSchema\n>;\nexport type ComputerUseAuthorizationRequestCreateResponse = z.infer<\n typeof computerUseAuthorizationRequestCreateResponseSchema\n>;\nexport type ComputerUseAuthorizationRequestResponse = z.infer<\n typeof computerUseAuthorizationRequestResponseSchema\n>;\nexport type ComputerUseAuthorizationRequestApplyResponse = z.infer<\n typeof computerUseAuthorizationRequestApplyResponseSchema\n>;\nexport type ComputerUseAuthorizationSource = z.infer<\n typeof computerUseAuthorizationSourceSchema\n>;\nexport type ComputerUseReadCommandKind = z.infer<\n typeof computerUseReadCommandKindSchema\n>;\nexport type ComputerUseWriteCommandKind = z.infer<\n typeof computerUseWriteCommandKindSchema\n>;\nexport type ComputerUsePluginCommandKind = z.infer<\n typeof computerUsePluginCommandKindSchema\n>;\nexport type ZeroComputerUseAuditEventsContract =\n typeof zeroComputerUseAuditEventsContract;\nexport type ZeroComputerUseCommandContract =\n typeof zeroComputerUseCommandContract;\nexport type ZeroComputerUseHeartbeatContract =\n typeof zeroComputerUseHeartbeatContract;\nexport type ZeroComputerUseAuthorizationRequestsContract =\n typeof zeroComputerUseAuthorizationRequestsContract;\nexport type ZeroComputerUseHostCommandsContract =\n typeof zeroComputerUseHostCommandsContract;\nexport type ZeroComputerUseHostsContract = typeof zeroComputerUseHostsContract;\nexport type ZeroComputerUseWriteCommandContract =\n typeof zeroComputerUseWriteCommandContract;\nexport type ZeroComputerUsePluginCommandContract =\n typeof zeroComputerUsePluginCommandContract;\n","import { ApiRequestError, getBaseUrl } from \"../core/client-factory\";\nimport { getActiveToken } from \"../config\";\nimport { headersWithCliClientHeaders } from \"../client-headers\";\n\ntype ZeroMapsOperation =\n | \"geocode\"\n | \"reverse-geocode\"\n | \"directions\"\n | \"places/search\"\n | \"places/details\"\n | \"osm/download\"\n | \"osm/render\";\n\nexport interface ZeroMapsResponse {\n readonly operation?: string;\n readonly provider?: string;\n readonly creditsCharged?: number;\n readonly billingCategory?: string;\n readonly billingQuantity?: number;\n readonly result?: unknown;\n}\n\nfunction authenticatedJsonHeaders(token: string): Record<string, string> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n return headers;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nasync function parseErrorBody(\n response: Response,\n): Promise<{ message: string; code: string }> {\n let message = `Zero Maps request failed (HTTP ${response.status})`;\n let code = response.status === 404 ? \"NOT_FOUND\" : \"UNKNOWN\";\n\n try {\n const body: unknown = await response.json();\n if (isRecord(body) && isRecord(body.error)) {\n if (typeof body.error.message === \"string\") {\n message = body.error.message;\n }\n if (typeof body.error.code === \"string\") {\n code = body.error.code;\n }\n }\n } catch {\n // Keep the status-based fallback when the response is not JSON.\n }\n\n if (response.status === 404 && code === \"NOT_FOUND\") {\n message =\n \"Zero Maps API is not available on this server yet. Try again after the maps backend is deployed.\";\n }\n\n return { message, code };\n}\n\nexport async function callZeroMaps(\n operation: ZeroMapsOperation,\n body: Record<string, unknown>,\n): Promise<ZeroMapsResponse> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const response = await fetch(\n new URL(`/api/zero/maps/${operation}`, baseUrl),\n {\n method: \"POST\",\n headers: headersWithCliClientHeaders(authenticatedJsonHeaders(token)),\n body: JSON.stringify(body),\n },\n );\n\n if (!response.ok) {\n const { message, code } = await parseErrorBody(response);\n throw new ApiRequestError(message, code, response.status);\n }\n\n return (await response.json()) as ZeroMapsResponse;\n}\n","import { ApiRequestError, getBaseUrl } from \"../core/client-factory\";\nimport { getActiveToken } from \"../config\";\nimport { headersWithCliClientHeaders } from \"../client-headers\";\n\ntype ZeroWeatherOperation =\n | \"current\"\n | \"forecast/hourly\"\n | \"forecast/daily\"\n | \"history/hourly\"\n | \"air-quality/current\";\n\nexport interface ZeroWeatherResponse {\n readonly operation?: string;\n readonly provider?: string;\n readonly attribution?: string;\n readonly creditsCharged?: number;\n readonly billingCategory?: string;\n readonly billingQuantity?: number;\n readonly result?: unknown;\n}\n\nfunction authenticatedJsonHeaders(token: string): Record<string, string> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n return headers;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nasync function parseErrorBody(\n response: Response,\n): Promise<{ message: string; code: string }> {\n let message = `Zero Weather request failed (HTTP ${response.status})`;\n let code = response.status === 404 ? \"NOT_FOUND\" : \"UNKNOWN\";\n\n try {\n const body: unknown = await response.json();\n if (isRecord(body) && isRecord(body.error)) {\n if (typeof body.error.message === \"string\") {\n message = body.error.message;\n }\n if (typeof body.error.code === \"string\") {\n code = body.error.code;\n }\n }\n } catch {\n // Keep the status-based fallback when the response is not JSON.\n }\n\n if (response.status === 404 && code === \"NOT_FOUND\") {\n message =\n \"Zero Weather API is not available on this server yet. Try again after the weather backend is deployed.\";\n }\n\n return { message, code };\n}\n\nexport async function callZeroWeather(\n operation: ZeroWeatherOperation,\n body: Record<string, unknown>,\n): Promise<ZeroWeatherResponse> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const response = await fetch(\n new URL(`/api/zero/weather/${operation}`, baseUrl),\n {\n method: \"POST\",\n headers: headersWithCliClientHeaders(authenticatedJsonHeaders(token)),\n body: JSON.stringify(body),\n },\n );\n\n if (!response.ok) {\n const { message, code } = await parseErrorBody(response);\n throw new ApiRequestError(message, code, response.status);\n }\n\n return (await response.json()) as ZeroWeatherResponse;\n}\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const zeroScrapeFormatSchema = z.enum([\"markdown\", \"links\"]);\nexport const zeroScrapeModeSchema = z.enum([\"standard\", \"enhanced\"]);\nexport const zeroScrapeBillingCategorySchema = z.enum([\n \"standard.markdown\",\n \"standard.links\",\n \"enhanced.markdown\",\n \"enhanced.links\",\n]);\n\nexport const zeroScrapeRequestSchema = z.object({\n url: z.string().trim().url().max(2_048),\n format: zeroScrapeFormatSchema.default(\"markdown\"),\n mode: zeroScrapeModeSchema.default(\"standard\"),\n});\n\nexport const zeroScrapeMetadataSchema = z.object({\n title: z.string().optional(),\n description: z.string().optional(),\n language: z.string().optional(),\n statusCode: z.number().int().optional(),\n publishedTime: z.string().optional(),\n});\n\nconst zeroScrapeResponseBaseSchema = z.object({\n requestedUrl: z.string().url(),\n finalUrl: z.string().url().optional(),\n provider: z.literal(\"firecrawl\"),\n creditsCharged: z.number().int().nonnegative(),\n billingQuantity: z.number().int().positive(),\n metadata: zeroScrapeMetadataSchema.optional(),\n});\n\nconst zeroScrapeMarkdownResultSchema = z.object({\n markdown: z.string(),\n});\n\nconst zeroScrapeLinksResultSchema = z.object({\n links: z.array(z.string()),\n});\n\nconst zeroScrapeStandardMarkdownResponseSchema =\n zeroScrapeResponseBaseSchema.extend({\n format: z.literal(\"markdown\"),\n mode: z.literal(\"standard\"),\n billingCategory: z.literal(\"standard.markdown\"),\n result: zeroScrapeMarkdownResultSchema,\n });\n\nconst zeroScrapeEnhancedMarkdownResponseSchema =\n zeroScrapeResponseBaseSchema.extend({\n format: z.literal(\"markdown\"),\n mode: z.literal(\"enhanced\"),\n billingCategory: z.literal(\"enhanced.markdown\"),\n result: zeroScrapeMarkdownResultSchema,\n });\n\nconst zeroScrapeStandardLinksResponseSchema =\n zeroScrapeResponseBaseSchema.extend({\n format: z.literal(\"links\"),\n mode: z.literal(\"standard\"),\n billingCategory: z.literal(\"standard.links\"),\n result: zeroScrapeLinksResultSchema,\n });\n\nconst zeroScrapeEnhancedLinksResponseSchema =\n zeroScrapeResponseBaseSchema.extend({\n format: z.literal(\"links\"),\n mode: z.literal(\"enhanced\"),\n billingCategory: z.literal(\"enhanced.links\"),\n result: zeroScrapeLinksResultSchema,\n });\n\nexport const zeroScrapeMarkdownResponseSchema = z.union([\n zeroScrapeStandardMarkdownResponseSchema,\n zeroScrapeEnhancedMarkdownResponseSchema,\n]);\n\nexport const zeroScrapeLinksResponseSchema = z.union([\n zeroScrapeStandardLinksResponseSchema,\n zeroScrapeEnhancedLinksResponseSchema,\n]);\n\nexport const zeroScrapeResponseSchema = z.union([\n zeroScrapeMarkdownResponseSchema,\n zeroScrapeLinksResponseSchema,\n]);\n\nexport type ZeroScrapeRequest = z.infer<typeof zeroScrapeRequestSchema>;\nexport type ZeroScrapeResponse = z.infer<typeof zeroScrapeResponseSchema>;\nexport type ZeroScrapeFormat = z.infer<typeof zeroScrapeFormatSchema>;\nexport type ZeroScrapeMode = z.infer<typeof zeroScrapeModeSchema>;\nexport type ZeroScrapeBillingCategory = z.infer<\n typeof zeroScrapeBillingCategorySchema\n>;\n\nconst scrapeResponses = {\n 200: zeroScrapeResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 502: apiErrorSchema,\n 503: apiErrorSchema,\n} as const;\n\nexport const zeroScrapeContract = c.router({\n scrape: {\n method: \"POST\",\n path: \"/api/zero/scrape\",\n headers: authHeadersSchema,\n body: zeroScrapeRequestSchema,\n responses: scrapeResponses,\n summary: \"Scrape a public web page through managed Zero Scrape\",\n },\n});\n\nexport type ZeroScrapeContract = typeof zeroScrapeContract;\n","import {\n zeroScrapeContract,\n type ZeroScrapeRequest,\n type ZeroScrapeResponse,\n} from \"@vm0/api-contracts/contracts/zero-scrape\";\nimport { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\n\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport type { ZeroScrapeResponse } from \"@vm0/api-contracts/contracts/zero-scrape\";\n\nexport async function callZeroScrape(\n body: ZeroScrapeRequest,\n): Promise<ZeroScrapeResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroScrapeContract, config);\n\n const result = await client.scrape({ headers: {}, body });\n if (result.status === 200) {\n return result.body;\n }\n handleError(result, \"Failed to scrape page\");\n}\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const ZERO_WEB_SEARCH_DEFAULT_LIMIT = 5;\nexport const ZERO_WEB_SEARCH_MAX_LIMIT = 10;\nexport const ZERO_WEB_SEARCH_MAX_QUERY_CHARS = 2_048;\nexport const ZERO_WEB_SEARCH_MAX_DOMAINS = 20;\nexport const ZERO_WEB_SEARCH_MAX_DOMAIN_CHARS = 253;\nexport const ZERO_WEB_SEARCH_MAX_TITLE_CHARS = 512;\nexport const ZERO_WEB_SEARCH_MAX_URL_CHARS = 2_048;\nexport const ZERO_WEB_SEARCH_MAX_SNIPPET_CHARS = 8_000;\nexport const ZERO_WEB_SEARCH_MAX_DATE_CHARS = 64;\n\nconst domainLabelPattern = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i;\n\nfunction isDomain(value: string): boolean {\n const labels = value.split(\".\");\n return (\n labels.length >= 2 &&\n labels.every((label) => {\n return domainLabelPattern.test(label);\n })\n );\n}\n\nexport const zeroWebSearchRecencySchema = z.enum([\n \"hour\",\n \"day\",\n \"week\",\n \"month\",\n \"year\",\n]);\n\nexport const zeroWebSearchDomainSchema = z\n .string()\n .trim()\n .min(1)\n .max(ZERO_WEB_SEARCH_MAX_DOMAIN_CHARS)\n .refine(isDomain, {\n message: \"Domain must be a domain or subdomain without a protocol or path\",\n })\n .transform((domain) => {\n return domain.toLowerCase();\n });\n\nconst zeroWebSearchDomainsSchema = z\n .array(zeroWebSearchDomainSchema)\n .max(ZERO_WEB_SEARCH_MAX_DOMAINS)\n .transform((domains) => {\n return [...new Set(domains)];\n });\n\nexport const zeroWebSearchRequestSchema = z.object({\n query: z.string().trim().min(1).max(ZERO_WEB_SEARCH_MAX_QUERY_CHARS),\n limit: z\n .number()\n .int()\n .min(1)\n .max(ZERO_WEB_SEARCH_MAX_LIMIT)\n .default(ZERO_WEB_SEARCH_DEFAULT_LIMIT),\n recency: zeroWebSearchRecencySchema.optional(),\n domains: zeroWebSearchDomainsSchema.optional(),\n});\n\nconst zeroWebSearchHttpUrlSchema = z\n .string()\n .max(ZERO_WEB_SEARCH_MAX_URL_CHARS)\n .url()\n .regex(/^https?:\\/\\//i, \"Result URL must use http or https\");\n\nexport const zeroWebSearchResultSchema = z.object({\n rank: z.number().int().min(1).max(ZERO_WEB_SEARCH_MAX_LIMIT),\n title: z.string().max(ZERO_WEB_SEARCH_MAX_TITLE_CHARS),\n url: zeroWebSearchHttpUrlSchema,\n snippet: z.string().max(ZERO_WEB_SEARCH_MAX_SNIPPET_CHARS),\n publishedDate: z.string().max(ZERO_WEB_SEARCH_MAX_DATE_CHARS).optional(),\n lastUpdatedDate: z.string().max(ZERO_WEB_SEARCH_MAX_DATE_CHARS).optional(),\n});\n\nexport const zeroWebSearchResponseSchema = z.object({\n query: z.string().max(ZERO_WEB_SEARCH_MAX_QUERY_CHARS),\n limit: z.number().int().min(1).max(ZERO_WEB_SEARCH_MAX_LIMIT),\n recency: zeroWebSearchRecencySchema.optional(),\n domains: z\n .array(zeroWebSearchDomainSchema)\n .max(ZERO_WEB_SEARCH_MAX_DOMAINS)\n .optional(),\n provider: z.literal(\"perplexity\"),\n billingCategory: z.literal(\"request\"),\n billingQuantity: z.literal(1),\n creditsCharged: z.number().int().nonnegative(),\n results: z.array(zeroWebSearchResultSchema).max(ZERO_WEB_SEARCH_MAX_LIMIT),\n});\n\nexport type ZeroWebSearchRecency = z.infer<typeof zeroWebSearchRecencySchema>;\nexport type ZeroWebSearchRequest = z.infer<typeof zeroWebSearchRequestSchema>;\nexport type ZeroWebSearchResult = z.infer<typeof zeroWebSearchResultSchema>;\nexport type ZeroWebSearchResponse = z.infer<typeof zeroWebSearchResponseSchema>;\n\nconst webSearchResponses = {\n 200: zeroWebSearchResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 502: apiErrorSchema,\n 503: apiErrorSchema,\n} as const;\n\nexport const zeroWebSearchContract = c.router({\n search: {\n method: \"POST\",\n path: \"/api/zero/web-search\",\n headers: authHeadersSchema,\n body: zeroWebSearchRequestSchema,\n responses: webSearchResponses,\n summary: \"Search the public web through managed Zero Web Search\",\n },\n});\n\nexport type ZeroWebSearchContract = typeof zeroWebSearchContract;\n","import {\n zeroWebSearchContract,\n type ZeroWebSearchRequest,\n type ZeroWebSearchResponse,\n} from \"@vm0/api-contracts/contracts/zero-web-search\";\nimport { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\n\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport type { ZeroWebSearchResponse } from \"@vm0/api-contracts/contracts/zero-web-search\";\n\nexport async function callZeroWebSearch(\n body: ZeroWebSearchRequest,\n): Promise<ZeroWebSearchResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroWebSearchContract, config);\n\n const result = await client.search({ headers: {}, body });\n if (result.status === 200) {\n return result.body;\n }\n handleError(result, \"Failed to search the web\");\n}\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const ZERO_FINANCE_DEFAULT_RANGE = \"1y\" as const;\nexport const ZERO_FINANCE_DEFAULT_INTERVAL = \"1d\" as const;\nexport const ZERO_FINANCE_MAX_QUERY_CHARS = 512;\nexport const ZERO_FINANCE_MAX_SYMBOL_CHARS = 64;\n\nexport const zeroFinanceRangeSchema = z.enum([\n \"1d\",\n \"5d\",\n \"1mo\",\n \"3mo\",\n \"6mo\",\n \"1y\",\n \"2y\",\n \"5y\",\n \"10y\",\n \"ytd\",\n \"max\",\n]);\n\nexport const zeroFinanceIntervalSchema = z.enum([\n \"1m\",\n \"2m\",\n \"5m\",\n \"15m\",\n \"30m\",\n \"60m\",\n \"1d\",\n \"1wk\",\n \"1mo\",\n]);\n\nexport const zeroFinanceSearchRequestSchema = z.object({\n query: z.string().trim().min(1).max(ZERO_FINANCE_MAX_QUERY_CHARS),\n});\n\nconst zeroFinanceSymbolSchema = z\n .string()\n .trim()\n .min(1)\n .max(ZERO_FINANCE_MAX_SYMBOL_CHARS);\n\nexport const zeroFinanceProfileRequestSchema = z.object({\n symbol: zeroFinanceSymbolSchema,\n});\n\nexport const zeroFinanceQuoteRequestSchema = z.object({\n symbol: zeroFinanceSymbolSchema,\n});\n\nexport const zeroFinanceChartRequestSchema = z.object({\n symbol: zeroFinanceSymbolSchema,\n range: zeroFinanceRangeSchema.default(ZERO_FINANCE_DEFAULT_RANGE),\n interval: zeroFinanceIntervalSchema.default(ZERO_FINANCE_DEFAULT_INTERVAL),\n});\n\nexport const zeroFinanceOperationSchema = z.enum([\n \"search\",\n \"profile\",\n \"quote\",\n \"chart\",\n]);\n\nexport const zeroFinanceResponseSchema = z.object({\n operation: zeroFinanceOperationSchema,\n provider: z.literal(\"apidojo\"),\n billingCategory: z.literal(\"request\"),\n billingQuantity: z.literal(1),\n creditsCharged: z.number().int().nonnegative(),\n result: z.unknown(),\n});\n\nexport type ZeroFinanceRange = z.infer<typeof zeroFinanceRangeSchema>;\nexport type ZeroFinanceInterval = z.infer<typeof zeroFinanceIntervalSchema>;\nexport type ZeroFinanceSearchRequest = z.infer<\n typeof zeroFinanceSearchRequestSchema\n>;\nexport type ZeroFinanceProfileRequest = z.infer<\n typeof zeroFinanceProfileRequestSchema\n>;\nexport type ZeroFinanceQuoteRequest = z.infer<\n typeof zeroFinanceQuoteRequestSchema\n>;\nexport type ZeroFinanceChartRequest = z.infer<\n typeof zeroFinanceChartRequestSchema\n>;\nexport type ZeroFinanceOperation = z.infer<typeof zeroFinanceOperationSchema>;\nexport type ZeroFinanceResponse = z.infer<typeof zeroFinanceResponseSchema>;\n\nconst financeResponses = {\n 200: zeroFinanceResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 502: apiErrorSchema,\n 503: apiErrorSchema,\n} as const;\n\nexport const zeroFinanceContract = c.router({\n search: {\n method: \"POST\",\n path: \"/api/zero/finance/search\",\n headers: authHeadersSchema,\n body: zeroFinanceSearchRequestSchema,\n responses: financeResponses,\n summary: \"Search financial instruments through managed Zero Finance\",\n },\n profile: {\n method: \"POST\",\n path: \"/api/zero/finance/profile\",\n headers: authHeadersSchema,\n body: zeroFinanceProfileRequestSchema,\n responses: financeResponses,\n summary: \"Fetch a company profile through managed Zero Finance\",\n },\n quote: {\n method: \"POST\",\n path: \"/api/zero/finance/quote\",\n headers: authHeadersSchema,\n body: zeroFinanceQuoteRequestSchema,\n responses: financeResponses,\n summary: \"Fetch a market quote through managed Zero Finance\",\n },\n chart: {\n method: \"POST\",\n path: \"/api/zero/finance/chart\",\n headers: authHeadersSchema,\n body: zeroFinanceChartRequestSchema,\n responses: financeResponses,\n summary: \"Fetch market chart data through managed Zero Finance\",\n },\n});\n\nexport type ZeroFinanceContract = typeof zeroFinanceContract;\n","import {\n zeroFinanceContract,\n type ZeroFinanceChartRequest,\n type ZeroFinanceProfileRequest,\n type ZeroFinanceQuoteRequest,\n type ZeroFinanceResponse,\n type ZeroFinanceSearchRequest,\n} from \"@vm0/api-contracts/contracts/zero-finance\";\nimport { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\n\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport type { ZeroFinanceResponse } from \"@vm0/api-contracts/contracts/zero-finance\";\n\nexport async function callZeroFinanceSearch(\n body: ZeroFinanceSearchRequest,\n): Promise<ZeroFinanceResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroFinanceContract, config);\n const result = await client.search({ headers: {}, body });\n if (result.status === 200) {\n return result.body;\n }\n handleError(result, \"Failed to search financial instruments\");\n}\n\nexport async function callZeroFinanceProfile(\n body: ZeroFinanceProfileRequest,\n): Promise<ZeroFinanceResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroFinanceContract, config);\n const result = await client.profile({ headers: {}, body });\n if (result.status === 200) {\n return result.body;\n }\n handleError(result, \"Failed to fetch finance profile\");\n}\n\nexport async function callZeroFinanceQuote(\n body: ZeroFinanceQuoteRequest,\n): Promise<ZeroFinanceResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroFinanceContract, config);\n const result = await client.quote({ headers: {}, body });\n if (result.status === 200) {\n return result.body;\n }\n handleError(result, \"Failed to fetch finance quote\");\n}\n\nexport async function callZeroFinanceChart(\n body: ZeroFinanceChartRequest,\n): Promise<ZeroFinanceResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroFinanceContract, config);\n const result = await client.chart({ headers: {}, body });\n if (result.status === 200) {\n return result.body;\n }\n handleError(result, \"Failed to fetch finance chart\");\n}\n","import { ApiRequestError, getBaseUrl } from \"../core/client-factory\";\nimport { getActiveToken } from \"../config\";\nimport { headersWithCliClientHeaders } from \"../client-headers\";\n\nexport type ZeroBankingOperation = \"accounts\" | \"balances\" | \"transactions\";\n\nexport interface ZeroBankingResponse {\n readonly operation: ZeroBankingOperation;\n readonly provider: \"finicity\";\n readonly accounts?: unknown[];\n readonly balance?: unknown;\n readonly accountId?: string;\n readonly transactions?: unknown[];\n}\n\nfunction authenticatedJsonHeaders(token: string): Record<string, string> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n \"Content-Type\": \"application/json\",\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n return headers;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nasync function parseErrorBody(\n response: Response,\n): Promise<{ message: string; code: string }> {\n let message = `Zero Banking request failed (HTTP ${response.status})`;\n let code = response.status === 404 ? \"NOT_FOUND\" : \"UNKNOWN\";\n\n try {\n const body: unknown = await response.json();\n if (isRecord(body) && isRecord(body.error)) {\n if (typeof body.error.message === \"string\") {\n message = body.error.message;\n }\n if (typeof body.error.code === \"string\") {\n code = body.error.code;\n }\n }\n } catch {\n // Keep the status-based fallback when the response is not JSON.\n }\n\n if (response.status === 404 && code === \"NOT_FOUND\") {\n message =\n \"Zero Banking API is not available on this server yet. Try again after the banking backend is deployed.\";\n }\n\n return { message, code };\n}\n\nexport async function callZeroBanking(\n operation: ZeroBankingOperation,\n body: Record<string, unknown>,\n): Promise<ZeroBankingResponse> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const response = await fetch(\n new URL(`/api/zero/banking/${operation}`, baseUrl),\n {\n method: \"POST\",\n headers: headersWithCliClientHeaders(authenticatedJsonHeaders(token)),\n body: JSON.stringify(body),\n },\n );\n\n if (!response.ok) {\n const { message, code } = await parseErrorBody(response);\n throw new ApiRequestError(message, code, response.status);\n }\n\n return (await response.json()) as ZeroBankingResponse;\n}\n","// Core types (only export what's actually used)\nexport type { RunResult } from \"./core/types\";\n\n// Custom error class\nexport { ApiRequestError } from \"./core/client-factory\";\n\n// HTTP utilities (only export what's actually used)\n\n// Domain modules - Registry Resources\nexport { getRegistryResourceDownload } from \"./domains/registry-resources\";\n\n// Domain modules - Zero User Preferences\nexport {\n getZeroUserPreferences,\n updateZeroUserPreferences,\n} from \"./domains/zero-user-preferences\";\n\n// Domain modules - Zero Organizations\nexport {\n getZeroOrg,\n updateZeroOrg,\n listZeroOrgs,\n getZeroOrgMembers,\n inviteZeroOrgMember,\n removeZeroOrgMember,\n leaveZeroOrg,\n deleteZeroOrg,\n} from \"./domains/zero-orgs\";\n\n// Domain modules - Zero Billing\nexport {\n getZeroBillingStatus,\n createZeroCreditCheckout,\n} from \"./domains/zero-billing\";\n\n// Domain modules - Zero Secrets\nexport {\n listZeroSecrets,\n setZeroSecret,\n deleteZeroSecret,\n} from \"./domains/zero-secrets\";\n\n// Domain modules - Zero Variables\nexport {\n listZeroVariables,\n setZeroVariable,\n deleteZeroVariable,\n} from \"./domains/zero-variables\";\n\n// Domain modules - Zero Org Secrets\nexport {\n listZeroOrgSecrets,\n setZeroOrgSecret,\n deleteZeroOrgSecret,\n} from \"./domains/zero-org-secrets\";\n\n// Domain modules - Zero Org Variables\nexport {\n listZeroOrgVariables,\n setZeroOrgVariable,\n deleteZeroOrgVariable,\n} from \"./domains/zero-org-variables\";\n\n// Domain modules - Zero Org Model Providers\nexport {\n listZeroOrgModelProviders,\n upsertZeroOrgModelProvider,\n deleteZeroOrgModelProvider,\n} from \"./domains/zero-org-model-providers\";\n\n// Domain modules - Zero Model Policies\nexport { listZeroModelPolicies } from \"./domains/zero-model-policies\";\n\n// Domain modules - Zero Agents\nexport {\n createZeroAgent,\n listZeroAgents,\n getZeroAgent,\n updateZeroAgent,\n deleteZeroAgent,\n getZeroAgentInstructions,\n updateZeroAgentInstructions,\n getZeroAgentUserConnectors,\n getZeroAgentCustomConnectors,\n listZeroUserPermissionGrants,\n} from \"./domains/zero-agents\";\n\n// Domain modules - Zero Workflows\nexport {\n type ZeroWorkflowAutomationCreateRequest,\n type ZeroWorkflowAutomationUpdateRequest,\n type ZeroWorkflowAutomationSummary,\n listWorkflows,\n createWorkflow,\n getWorkflow,\n updateWorkflow,\n deleteWorkflow,\n copyWorkflow,\n listWorkflowAutomations,\n createWorkflowAutomation,\n getWorkflowAutomation,\n updateWorkflowAutomation,\n deleteWorkflowAutomation,\n enableWorkflowAutomation,\n disableWorkflowAutomation,\n} from \"./domains/zero-workflows\";\n\n// Domain modules - Zero Goals\nexport {\n createGoal,\n editGoal,\n getGoal,\n completeGoal,\n blockGoal,\n pauseGoal,\n resumeGoal,\n clearGoal,\n} from \"./domains/zero-goals\";\n\n// Domain modules - Zero Connectors\nexport {\n listZeroConnectors,\n listZeroConnectorCatalog,\n listZeroConnectorCatalogStatus,\n getZeroConnectorCatalogPermissions,\n connectZeroConnectorManualGrant,\n listZeroCustomConnectors,\n getZeroCustomConnector,\n} from \"./domains/zero-connectors\";\n\n// Domain modules - Zero Mail\nexport { linkZeroMailDraft } from \"./domains/zero-mail\";\n\n// Domain modules - Integrations Slack\nexport {\n sendSlackMessage,\n initSlackFileUpload,\n completeSlackFileUpload,\n downloadSlackFile,\n} from \"./domains/integrations-slack\";\n\n// Domain modules - Integrations Telegram\nexport {\n listTelegramBots,\n sendTelegramMessage,\n downloadTelegramFile,\n initTelegramFileUpload,\n completeTelegramFileUpload,\n} from \"./domains/integrations-telegram\";\n\n// Domain modules - Integrations Teams\nexport {\n sendTeamsMessage,\n initTeamsFileUpload,\n completeTeamsFileUpload,\n downloadTeamsFile,\n} from \"./domains/integrations-teams\";\n\n// Domain modules - Integrations Feishu\nexport { sendFeishuMessage } from \"./domains/integrations-feishu\";\n\n// Domain modules - Integrations GitHub\nexport {\n downloadGithubFile,\n initGithubFileUpload,\n completeGithubFileUpload,\n} from \"./domains/integrations-github\";\n\n// Domain modules - Integrations Phone\nexport {\n sendPhoneMessage,\n downloadPhoneFile,\n initPhoneFileUpload,\n completePhoneFileUpload,\n} from \"./domains/integrations-phone\";\n\n// Domain modules - Zero Runs\nexport { getZeroRunAgentEvents } from \"./domains/zero-runs\";\nexport type {\n RunEvent,\n LogsSearchResponse,\n} from \"@vm0/api-contracts/contracts/runs\";\n\n// Domain modules - Zero Logs\nexport { listZeroLogs, searchZeroLogs } from \"./domains/zero-logs\";\n\n// Domain modules - Zero Chat\nexport {\n getZeroChatThread,\n renameZeroChatThread,\n searchZeroChat,\n updateZeroChatThreadModelSelection,\n} from \"./domains/zero-chat\";\n\n// Domain modules - Zero Developer Support\nexport {\n requestDeveloperSupportConsent,\n submitDeveloperSupport,\n} from \"./domains/zero-developer-support\";\n\n// Domain modules - Zero Computer Use\nexport {\n createComputerUseAuthorizationRequest,\n createComputerUsePluginCommand,\n listComputerUseHosts,\n createComputerUseReadCommand,\n createComputerUseWriteCommand,\n fetchComputerUsePluginContent,\n fetchComputerUseScreenshot,\n getComputerUseCommand,\n} from \"./domains/zero-computer-use\";\n\n// Domain modules - Zero Maps\nexport { callZeroMaps, type ZeroMapsResponse } from \"./domains/zero-maps\";\n\n// Domain modules - Zero Weather\nexport {\n callZeroWeather,\n type ZeroWeatherResponse,\n} from \"./domains/zero-weather\";\n\n// Domain modules - Zero Scrape\nexport { callZeroScrape, type ZeroScrapeResponse } from \"./domains/zero-scrape\";\nexport {\n callZeroWebSearch,\n type ZeroWebSearchResponse,\n} from \"./domains/zero-web-search\";\nexport {\n callZeroFinanceChart,\n callZeroFinanceProfile,\n callZeroFinanceQuote,\n callZeroFinanceSearch,\n type ZeroFinanceResponse,\n} from \"./domains/zero-finance\";\n\n// Domain modules - Zero Banking\nexport {\n callZeroBanking,\n type ZeroBankingResponse,\n} from \"./domains/zero-banking\";\n\n// Domain modules - Web\nexport {\n downloadWebFile,\n uploadWebFile,\n generateWebVoice,\n generateWebImage,\n generateWebVideo,\n} from \"./domains/web\";\n\n// Domain modules - Zero Host\nexport {\n prepareHostedSite,\n completeHostedSite,\n getHostedSiteFiles,\n getHostedSiteDeployments,\n} from \"./domains/zero-host\";\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n zeroSecretsContract,\n zeroSecretsByNameContract,\n} from \"@vm0/api-contracts/contracts/zero-secrets\";\nimport type {\n SecretListResponse,\n SecretResponse,\n} from \"@vm0/api-contracts/contracts/secrets\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\n/**\n * List user-level secrets via zero API (metadata only, no values)\n */\nexport async function listZeroSecrets(): Promise<SecretListResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroSecretsContract, config);\n\n const result = await client.list({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list secrets\");\n}\n\n/**\n * Set (create or update) a user-level secret via zero API\n */\nexport async function setZeroSecret(body: {\n name: string;\n value: string;\n description?: string;\n}): Promise<SecretResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroSecretsContract, config);\n\n const result = await client.set({ body });\n\n if (result.status === 200 || result.status === 201) {\n return result.body;\n }\n\n handleError(result, \"Failed to set secret\");\n}\n\n/**\n * Delete a user-level secret by name via zero API\n */\nexport async function deleteZeroSecret(name: string): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroSecretsByNameContract, config);\n\n const result = await client.delete({\n params: { name },\n });\n\n if (result.status === 204) {\n return;\n }\n\n handleError(result, `Secret \"${name}\" not found`);\n}\n","import { z } from \"zod\";\nimport { initContract, authHeadersSchema } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport {\n secretResponseSchema,\n secretListResponseSchema,\n secretNameSchema,\n setSecretRequestSchema,\n} from \"./secrets\";\nimport {\n variableResponseSchema,\n variableListResponseSchema,\n variableNameSchema,\n setVariableRequestSchema,\n} from \"./variables\";\n\nconst c = initContract();\n\n/**\n * Zero secrets contract for /api/zero/secrets\n *\n * GET: List all secrets (metadata only)\n * POST: Create or update a secret (platform → infra proxy)\n */\nexport const zeroSecretsContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/secrets\",\n headers: authHeadersSchema,\n responses: {\n 200: secretListResponseSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"List all secrets (metadata only)\",\n },\n set: {\n method: \"POST\",\n path: \"/api/zero/secrets\",\n headers: authHeadersSchema,\n body: setSecretRequestSchema,\n responses: {\n 200: secretResponseSchema,\n 201: secretResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Create or update a secret\",\n },\n});\n\nexport type ZeroSecretsContract = typeof zeroSecretsContract;\n\n/**\n * Zero secrets by name contract for /api/zero/secrets/[name]\n *\n * DELETE: Delete a secret by name\n */\nexport const zeroSecretsByNameContract = c.router({\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/secrets/:name\",\n headers: authHeadersSchema,\n pathParams: z.object({\n name: secretNameSchema,\n }),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Delete a secret by name\",\n },\n});\n\nexport type ZeroSecretsByNameContract = typeof zeroSecretsByNameContract;\n\n/**\n * Zero variables contract for /api/zero/variables\n *\n * GET: List all variables (includes values)\n * POST: Create or update a variable (platform → infra proxy)\n */\nexport const zeroVariablesContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/variables\",\n headers: authHeadersSchema,\n responses: {\n 200: variableListResponseSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"List all variables (includes values)\",\n },\n set: {\n method: \"POST\",\n path: \"/api/zero/variables\",\n headers: authHeadersSchema,\n body: setVariableRequestSchema,\n responses: {\n 200: variableResponseSchema,\n 201: variableResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Create or update a variable\",\n },\n});\n\nexport type ZeroVariablesContract = typeof zeroVariablesContract;\n\n/**\n * Zero variables by name contract for /api/zero/variables/[name]\n *\n * DELETE: Delete a variable by name\n */\nexport const zeroVariablesByNameContract = c.router({\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/variables/:name\",\n headers: authHeadersSchema,\n pathParams: z.object({\n name: variableNameSchema,\n }),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Delete a variable by name\",\n },\n});\n\nexport type ZeroVariablesByNameContract = typeof zeroVariablesByNameContract;\n","import { z } from \"zod\";\n\n/**\n * Secret name validation\n * Rules:\n * - 1-255 characters\n * - uppercase letters, numbers, and underscores only\n * - must start with a letter\n * Examples: MY_API_KEY, GITHUB_TOKEN, AWS_ACCESS_KEY_ID\n */\nexport const secretNameSchema = z\n .string()\n .min(1, \"Secret name is required\")\n .max(255, \"Secret name must be at most 255 characters\")\n .regex(\n /^[A-Z][A-Z0-9_]*$/,\n \"Secret name must contain only uppercase letters, numbers, and underscores, and must start with a letter (e.g., MY_API_KEY)\",\n );\n\n/**\n * Secret type schema\n */\nexport const secretTypeSchema = z.enum([\"user\", \"model-provider\", \"connector\"]);\n\nexport type SecretType = z.infer<typeof secretTypeSchema>;\n\n/**\n * Secret metadata response (value is never returned)\n */\nexport const secretResponseSchema = z.object({\n id: z.uuid(),\n name: z.string(),\n description: z.string().nullable(),\n type: secretTypeSchema,\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nexport type SecretResponse = z.infer<typeof secretResponseSchema>;\n\nconst secretListItemResponseSchema = secretResponseSchema.extend({\n connectorDisplay: z\n .object({\n label: z.string(),\n environmentNames: z.array(z.string()),\n })\n .nullable(),\n});\n\n/**\n * List secrets response\n */\nexport const secretListResponseSchema = z.object({\n secrets: z.array(secretListItemResponseSchema),\n});\n\nexport type SecretListResponse = z.infer<typeof secretListResponseSchema>;\n\n/**\n * Set secret request (create or update)\n */\nexport const setSecretRequestSchema = z.object({\n name: secretNameSchema,\n value: z.string().min(1, \"Secret value is required\"),\n description: z.string().max(1000).optional(),\n});\n\nexport type SetSecretRequest = z.infer<typeof setSecretRequestSchema>;\n","import { z } from \"zod\";\n\n/**\n * Variable name validation\n * Rules:\n * - 1-255 characters\n * - uppercase letters, numbers, and underscores only\n * - must start with a letter\n * Examples: MY_VAR, API_URL, DEBUG_MODE\n */\nexport const variableNameSchema = z\n .string()\n .min(1, \"Variable name is required\")\n .max(255, \"Variable name must be at most 255 characters\")\n .regex(\n /^[A-Z][A-Z0-9_]*$/,\n \"Variable name must contain only uppercase letters, numbers, and underscores, and must start with a letter (e.g., MY_VAR)\",\n );\n\n/**\n * Variable response (includes value - key difference from secrets)\n */\nexport const variableResponseSchema = z.object({\n id: z.uuid(),\n name: z.string(),\n value: z.string(),\n description: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nexport type VariableResponse = z.infer<typeof variableResponseSchema>;\n\n/**\n * List variables response\n */\nexport const variableListResponseSchema = z.object({\n variables: z.array(variableResponseSchema),\n});\n\nexport type VariableListResponse = z.infer<typeof variableListResponseSchema>;\n\n/**\n * Set variable request (create or update)\n */\nexport const setVariableRequestSchema = z.object({\n name: variableNameSchema,\n value: z.string().min(1, \"Variable value is required\"),\n description: z.string().max(1000).optional(),\n});\n\nexport type SetVariableRequest = z.infer<typeof setVariableRequestSchema>;\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n zeroVariablesContract,\n zeroVariablesByNameContract,\n} from \"@vm0/api-contracts/contracts/zero-secrets\";\nimport type {\n VariableListResponse,\n VariableResponse,\n} from \"@vm0/api-contracts/contracts/variables\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\n/**\n * List user-level variables via zero API (includes values)\n */\nexport async function listZeroVariables(): Promise<VariableListResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroVariablesContract, config);\n\n const result = await client.list({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list variables\");\n}\n\n/**\n * Set (create or update) a user-level variable via zero API\n */\nexport async function setZeroVariable(body: {\n name: string;\n value: string;\n description?: string;\n}): Promise<VariableResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroVariablesContract, config);\n\n const result = await client.set({ body });\n\n if (result.status === 200 || result.status === 201) {\n return result.body;\n }\n\n handleError(result, \"Failed to set variable\");\n}\n\n/**\n * Delete a user-level variable by name via zero API\n */\nexport async function deleteZeroVariable(name: string): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroVariablesByNameContract, config);\n\n const result = await client.delete({\n params: { name },\n });\n\n if (result.status === 204) {\n return;\n }\n\n handleError(result, `Variable \"${name}\" not found`);\n}\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n zeroSecretsContract,\n zeroSecretsByNameContract,\n} from \"@vm0/api-contracts/contracts/zero-secrets\";\nimport type {\n SecretResponse,\n SecretListResponse,\n} from \"@vm0/api-contracts/contracts/secrets\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\n/**\n * List org-level secrets via zero API (metadata only, no values)\n */\nexport async function listZeroOrgSecrets(): Promise<SecretListResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroSecretsContract, config);\n\n const result = await client.list({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list org secrets\");\n}\n\n/**\n * Set (create or update) an org-level secret via zero API\n */\nexport async function setZeroOrgSecret(body: {\n name: string;\n value: string;\n description?: string;\n}): Promise<SecretResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroSecretsContract, config);\n\n const result = await client.set({ body });\n\n if (result.status === 200 || result.status === 201) {\n return result.body;\n }\n\n handleError(result, \"Failed to set org secret\");\n}\n\n/**\n * Delete an org-level secret by name via zero API\n */\nexport async function deleteZeroOrgSecret(name: string): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroSecretsByNameContract, config);\n\n const result = await client.delete({\n params: { name },\n });\n\n if (result.status === 204) {\n return;\n }\n\n handleError(result, `Org secret \"${name}\" not found`);\n}\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n zeroVariablesContract,\n zeroVariablesByNameContract,\n} from \"@vm0/api-contracts/contracts/zero-secrets\";\nimport type {\n VariableResponse,\n VariableListResponse,\n} from \"@vm0/api-contracts/contracts/variables\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\n/**\n * List org-level variables via zero API (includes values)\n */\nexport async function listZeroOrgVariables(): Promise<VariableListResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroVariablesContract, config);\n\n const result = await client.list({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list org variables\");\n}\n\n/**\n * Set (create or update) an org-level variable via zero API\n */\nexport async function setZeroOrgVariable(body: {\n name: string;\n value: string;\n description?: string;\n}): Promise<VariableResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroVariablesContract, config);\n\n const result = await client.set({ body });\n\n if (result.status === 200 || result.status === 201) {\n return result.body;\n }\n\n handleError(result, \"Failed to set org variable\");\n}\n\n/**\n * Delete an org-level variable by name via zero API\n */\nexport async function deleteZeroOrgVariable(name: string): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroVariablesByNameContract, config);\n\n const result = await client.delete({\n params: { name },\n });\n\n if (result.status === 204) {\n return;\n }\n\n handleError(result, `Org variable \"${name}\" not found`);\n}\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n zeroModelProvidersByTypeContract,\n zeroModelProvidersMainContract,\n} from \"@vm0/api-contracts/contracts/zero-model-providers\";\nimport type {\n ModelProviderListResponse,\n ModelProviderType,\n UpsertModelProviderResponse,\n} from \"@vm0/api-contracts/contracts/model-providers\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\n/**\n * List all org-level model providers via zero API\n */\nexport async function listZeroOrgModelProviders(): Promise<ModelProviderListResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroModelProvidersMainContract, config);\n\n const result = await client.list({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list org model providers\");\n}\n\n/**\n * Create or update an org-level model provider via zero API (admin only)\n */\nexport async function upsertZeroOrgModelProvider(body: {\n type: ModelProviderType;\n secret?: string;\n authMethod?: string;\n secrets?: Record<string, string>;\n}): Promise<UpsertModelProviderResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroModelProvidersMainContract, config);\n\n const result = await client.upsert({ body });\n\n if (result.status === 200 || result.status === 201) {\n return result.body;\n }\n\n handleError(result, \"Failed to set org model provider\");\n}\n\n/**\n * Delete an org-level model provider via zero API (admin only)\n */\nexport async function deleteZeroOrgModelProvider(\n type: ModelProviderType,\n): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroModelProvidersByTypeContract, config);\n\n const result = await client.delete({\n params: { type },\n });\n\n if (result.status === 204) {\n return;\n }\n\n handleError(result, `Org model provider \"${type}\" not found`);\n}\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\nimport {\n modelProviderListResponseSchema,\n upsertModelProviderRequestSchema,\n upsertModelProviderResponseSchema,\n modelProviderTypeSchema,\n} from \"./model-providers\";\n\nconst c = initContract();\nconst orgUpsertModelProviderRequestSchema =\n upsertModelProviderRequestSchema.omit({ selectedModel: true });\n\n/**\n * Zero model providers main contract for /api/zero/model-providers\n *\n * GET: List org-level model providers (any member)\n * POST: Create or update an org-level model provider (admin only)\n */\nexport const zeroModelProvidersMainContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/model-providers\",\n headers: authHeadersSchema,\n responses: {\n 200: modelProviderListResponseSchema,\n 401: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"List org-level model providers\",\n },\n upsert: {\n method: \"POST\",\n path: \"/api/zero/model-providers\",\n headers: authHeadersSchema,\n body: orgUpsertModelProviderRequestSchema,\n responses: {\n 200: upsertModelProviderResponseSchema,\n 201: upsertModelProviderResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Create or update an org-level model provider (admin only)\",\n },\n});\n\nexport type ZeroModelProvidersMainContract =\n typeof zeroModelProvidersMainContract;\n\n/**\n * Zero model providers by type contract for /api/zero/model-providers/:type\n *\n * DELETE: Delete an org-level model provider (admin only)\n */\nexport const zeroModelProvidersByTypeContract = c.router({\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/model-providers/:type\",\n headers: authHeadersSchema,\n pathParams: z.object({\n type: modelProviderTypeSchema,\n }),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Delete an org-level model provider (admin only)\",\n },\n});\n\nexport type ZeroModelProvidersByTypeContract =\n typeof zeroModelProvidersByTypeContract;\n","import {\n initClient,\n type ServerInferRequest,\n type ServerInferResponseBody,\n} from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n zeroWorkflowsCollectionContract,\n zeroWorkflowsDetailContract,\n zeroWorkflowAutomationsContract,\n type WorkflowFileEntry,\n type ZeroWorkflowDetailResponse,\n type ZeroWorkflowSummary,\n} from \"@vm0/api-contracts/contracts/zero-workflows\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport type ZeroWorkflowAutomationCreateRequest = ServerInferRequest<\n typeof zeroWorkflowAutomationsContract.create\n>[\"body\"];\nexport type ZeroWorkflowAutomationUpdateRequest = ServerInferRequest<\n typeof zeroWorkflowAutomationsContract.update\n>[\"body\"];\nexport type ZeroWorkflowAutomationSummary = ServerInferResponseBody<\n typeof zeroWorkflowAutomationsContract.get,\n 200\n>;\n\nexport async function listWorkflows(query: {\n agentId?: string;\n}): Promise<ZeroWorkflowSummary[]> {\n const config = await getClientConfig();\n const client = initClient(zeroWorkflowsCollectionContract, config);\n const result = await client.list({ query });\n if (result.status === 200) return result.body;\n handleError(result, \"Failed to list workflows\");\n}\n\nexport async function createWorkflow(body: {\n agentId: string;\n chatThreadId?: string;\n name: string;\n instruction?: string;\n files?: WorkflowFileEntry[];\n displayName?: string;\n description?: string;\n visibility?: \"public\" | \"private\";\n}): Promise<ZeroWorkflowSummary> {\n const config = await getClientConfig();\n const client = initClient(zeroWorkflowsCollectionContract, config);\n const result = await client.create({ body });\n if (result.status === 201) return result.body;\n handleError(result, `Failed to create workflow \"${body.name}\"`);\n}\n\nexport async function getWorkflow(\n workflowId: string,\n): Promise<ZeroWorkflowDetailResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroWorkflowsDetailContract, config);\n const result = await client.get({ params: { workflowId } });\n if (result.status === 200) return result.body;\n handleError(result, `Workflow \"${workflowId}\" not found`);\n}\n\nexport async function updateWorkflow(\n workflowId: string,\n body: {\n instruction?: string | null;\n files?: WorkflowFileEntry[];\n displayName?: string | null;\n description?: string | null;\n },\n): Promise<ZeroWorkflowDetailResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroWorkflowsDetailContract, config);\n const result = await client.update({ params: { workflowId }, body });\n if (result.status === 200) return result.body;\n handleError(result, `Failed to update workflow \"${workflowId}\"`);\n}\n\nexport async function deleteWorkflow(workflowId: string): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroWorkflowsDetailContract, config);\n const result = await client.delete({ params: { workflowId } });\n if (result.status === 204) return;\n handleError(result, `Workflow \"${workflowId}\" not found`);\n}\n\nexport async function copyWorkflow(\n workflowId: string,\n toAgentId: string,\n): Promise<ZeroWorkflowSummary> {\n const config = await getClientConfig();\n const client = initClient(zeroWorkflowsDetailContract, config);\n const result = await client.copy({\n params: { workflowId },\n body: { toAgentId },\n });\n if (result.status === 201) return result.body;\n handleError(result, `Failed to copy workflow \"${workflowId}\"`);\n}\n\nexport async function listWorkflowAutomations(\n workflowId: string,\n): Promise<readonly ZeroWorkflowAutomationSummary[]> {\n const config = await getClientConfig();\n const client = initClient(zeroWorkflowAutomationsContract, config);\n const result = await client.list({ params: { workflowId } });\n if (result.status === 200) return result.body;\n handleError(\n result,\n `Failed to list automations for workflow \"${workflowId}\"`,\n );\n}\n\nexport async function createWorkflowAutomation(\n workflowId: string,\n body: ZeroWorkflowAutomationCreateRequest,\n): Promise<ZeroWorkflowAutomationSummary> {\n const config = await getClientConfig();\n const client = initClient(zeroWorkflowAutomationsContract, config);\n const result = await client.create({ params: { workflowId }, body });\n if (result.status === 201) return result.body;\n handleError(result, `Failed to add automation to workflow \"${workflowId}\"`);\n}\n\nexport async function getWorkflowAutomation(\n id: string,\n): Promise<ZeroWorkflowAutomationSummary> {\n const config = await getClientConfig();\n const client = initClient(zeroWorkflowAutomationsContract, config);\n const result = await client.get({ params: { id } });\n if (result.status === 200) return result.body;\n handleError(result, `Workflow automation \"${id}\" not found`);\n}\n\nexport async function updateWorkflowAutomation(\n id: string,\n body: ZeroWorkflowAutomationUpdateRequest,\n): Promise<ZeroWorkflowAutomationSummary> {\n const config = await getClientConfig();\n const client = initClient(zeroWorkflowAutomationsContract, config);\n const result = await client.update({ params: { id }, body });\n if (result.status === 200) return result.body;\n handleError(result, `Failed to update workflow automation \"${id}\"`);\n}\n\nexport async function deleteWorkflowAutomation(id: string): Promise<void> {\n const config = await getClientConfig();\n const client = initClient(zeroWorkflowAutomationsContract, config);\n const result = await client.delete({ params: { id } });\n if (result.status === 204) return;\n handleError(result, `Workflow automation \"${id}\" not found`);\n}\n\nexport async function enableWorkflowAutomation(\n id: string,\n): Promise<ZeroWorkflowAutomationSummary> {\n const config = await getClientConfig();\n const client = initClient(zeroWorkflowAutomationsContract, config);\n const result = await client.enable({ params: { id } });\n if (result.status === 200) return result.body;\n handleError(result, `Failed to enable workflow automation \"${id}\"`);\n}\n\nexport async function disableWorkflowAutomation(\n id: string,\n): Promise<ZeroWorkflowAutomationSummary> {\n const config = await getClientConfig();\n const client = initClient(zeroWorkflowAutomationsContract, config);\n const result = await client.disable({ params: { id } });\n if (result.status === 200) return result.body;\n handleError(result, `Failed to disable workflow automation \"${id}\"`);\n}\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { connectorRefSchema } from \"./connector-identity\";\nimport { apiErrorSchema } from \"./errors\";\nimport { publicConnectorCatalogIconSchema } from \"./zero-connector-catalog\";\n\nconst c = initContract();\n\nexport const zeroWorkflowVisibilitySchema = z.enum([\"public\", \"private\"]);\nexport type ZeroWorkflowVisibility = z.infer<\n typeof zeroWorkflowVisibilitySchema\n>;\n\n/**\n * Workflow name (slug) validation regex.\n * Must be lowercase alphanumeric with hyphens, no leading/trailing hyphens.\n * Minimum 2 characters. Slugs are NOT unique — duplicates across and within an\n * agent are allowed; run-time picks a winner by a fixed priority rule.\n */\nexport const zeroWorkflowNameSchema = z\n .string()\n .min(2)\n .max(64)\n .regex(/^[a-z0-9][a-z0-9-]*[a-z0-9]$/);\n\n/**\n * Reserved file name. `SKILL.md` is synthesized server-side from the workflow's\n * (name, description, instruction); users never author or see it.\n */\nexport const RESERVED_SKILL_FILE = \"SKILL.md\";\n\n/**\n * A single attached (supplementary) file. The synthesized SKILL.md is never\n * part of this set — `SKILL.md` is a reserved path and is rejected.\n */\nexport const workflowFileEntrySchema = z.object({\n path: z\n .string()\n .min(1)\n .max(256)\n .refine(\n (p) => {\n return !p.startsWith(\"/\");\n },\n { message: \"Path must be relative\" },\n )\n .refine(\n (p) => {\n return !p.includes(\"..\");\n },\n { message: \"Path must not contain ..\" },\n )\n .refine(\n (p) => {\n return p !== RESERVED_SKILL_FILE;\n },\n { message: \"SKILL.md is reserved and is generated automatically\" },\n ),\n content: z.string(),\n});\n\nconst WORKFLOW_FILES_MAX_BYTES = 5 * 1024 * 1024;\nconst WORKFLOW_FILES_MAX_COUNT = 500;\n\n/**\n * Attached files (excluding the synthesized SKILL.md). May be empty.\n */\nexport const workflowFilesSchema = z\n .array(workflowFileEntrySchema)\n .max(\n WORKFLOW_FILES_MAX_COUNT,\n `Maximum ${WORKFLOW_FILES_MAX_COUNT} files allowed`,\n )\n .refine(\n (files) => {\n const total = files.reduce((sum, f) => {\n return sum + new TextEncoder().encode(f.content).length;\n }, 0);\n return total <= WORKFLOW_FILES_MAX_BYTES;\n },\n { message: \"Total file size must not exceed 5MB\" },\n );\n\nexport const workflowFileMetadataSchema = z.object({\n path: z.string(),\n size: z.number(),\n});\n\nexport const workflowInstructionSchema = z\n .string()\n .max(WORKFLOW_FILES_MAX_BYTES);\n\nexport const zeroWorkflowScheduleTypeSchema = z.enum([\"cron\", \"loop\", \"once\"]);\nexport type ZeroWorkflowScheduleType = z.infer<\n typeof zeroWorkflowScheduleTypeSchema\n>;\n\nexport const zeroWorkflowAutomationKindSchema = z.enum([\"schedule\", \"event\"]);\nexport type ZeroWorkflowAutomationKind = z.infer<\n typeof zeroWorkflowAutomationKindSchema\n>;\n\nexport const zeroWorkflowEventTypeSchema = z.enum([\n \"gmail-new-message\",\n \"gmail-label-applied\",\n \"github-label-applied\",\n \"google-calendar-event-created\",\n \"google-calendar-event-updated\",\n \"google-calendar-event-cancelled\",\n \"google-meet-transcript-generated\",\n \"notion-child-page-created\",\n \"notion-database-item-created\",\n \"notion-page-content-updated\",\n \"webhook-received\",\n]);\nexport type ZeroWorkflowEventType = z.infer<typeof zeroWorkflowEventTypeSchema>;\n\nconst gmailTextMatchSchema = z\n .object({\n contains: z.string().min(1).optional(),\n containsAny: z.array(z.string().min(1)).min(1).optional(),\n doesNotContain: z.string().min(1).optional(),\n doesNotContainAny: z.array(z.string().min(1)).min(1).optional(),\n })\n .strict()\n .refine(\n (value) => {\n return (\n value.contains !== undefined ||\n value.containsAny !== undefined ||\n value.doesNotContain !== undefined ||\n value.doesNotContainAny !== undefined\n );\n },\n { message: \"At least one text matcher is required\" },\n );\n\nexport const gmailNewMessageEventConfigSchema = z\n .object({\n provider: z.literal(\"gmail\"),\n event: z.literal(\"new_message\"),\n match: z\n .object({\n from: gmailTextMatchSchema.optional(),\n subject: gmailTextMatchSchema.optional(),\n body: gmailTextMatchSchema.optional(),\n to: gmailTextMatchSchema.optional(),\n cc: gmailTextMatchSchema.optional(),\n })\n .strict()\n .optional(),\n })\n .strict();\nexport type GmailNewMessageEventConfig = z.infer<\n typeof gmailNewMessageEventConfigSchema\n>;\n\nexport const gmailLabelAppliedEventConfigSchema = z\n .object({\n provider: z.literal(\"gmail\"),\n event: z.literal(\"label_applied\"),\n labelName: z.string().trim().min(1).max(225),\n resolvedLabelId: z.string().min(1).max(128).optional(),\n })\n .strict();\nexport type GmailLabelAppliedEventConfig = z.infer<\n typeof gmailLabelAppliedEventConfigSchema\n>;\n\nexport const gmailWorkflowEventConfigSchema = z.discriminatedUnion(\"event\", [\n gmailNewMessageEventConfigSchema,\n gmailLabelAppliedEventConfigSchema,\n]);\nexport type GmailWorkflowEventConfig = z.infer<\n typeof gmailWorkflowEventConfigSchema\n>;\n\nexport const webhookReceivedEventConfigSchema = z\n .object({\n provider: z.literal(\"webhook\"),\n event: z.literal(\"received\"),\n auth: z\n .object({\n mode: z.literal(\"hmac-sha256\"),\n })\n .strict(),\n })\n .strict();\nexport type WebhookReceivedEventConfig = z.infer<\n typeof webhookReceivedEventConfigSchema\n>;\n\nexport const githubLabelAppliedSubjectFilterSchema = z.enum([\n \"both\",\n \"issues\",\n \"pull_requests\",\n]);\nexport type GithubLabelAppliedSubjectFilter = z.infer<\n typeof githubLabelAppliedSubjectFilterSchema\n>;\n\nexport const githubLabelAppliedActorFilterSchema = z\n .object({\n type: z.enum([\"me\", \"anyone\"]),\n })\n .strict();\nexport type GithubLabelAppliedActorFilter = z.infer<\n typeof githubLabelAppliedActorFilterSchema\n>;\n\nexport const githubLabelAppliedEventConfigSchema = z\n .object({\n provider: z.literal(\"github\"),\n event: z.literal(\"label_applied\"),\n labelName: z.string().trim().min(1).max(255),\n filters: z\n .object({\n subject: githubLabelAppliedSubjectFilterSchema.default(\"both\"),\n actor: githubLabelAppliedActorFilterSchema.default({ type: \"me\" }),\n })\n .strict()\n .default({ subject: \"both\", actor: { type: \"me\" } }),\n })\n .strict();\nexport type GithubLabelAppliedEventConfig = z.infer<\n typeof githubLabelAppliedEventConfigSchema\n>;\n\nexport type GithubWorkflowEventConfig = GithubLabelAppliedEventConfig;\n\nexport const googleCalendarEventCreatedEventConfigSchema = z\n .object({\n provider: z.literal(\"google-calendar\"),\n event: z.literal(\"event_created\"),\n calendarId: z.string().trim().min(1).max(1024).default(\"primary\"),\n })\n .strict();\nexport type GoogleCalendarEventCreatedEventConfig = z.infer<\n typeof googleCalendarEventCreatedEventConfigSchema\n>;\n\nexport const googleCalendarEventUpdatedEventConfigSchema = z\n .object({\n provider: z.literal(\"google-calendar\"),\n event: z.literal(\"event_updated\"),\n calendarId: z.string().trim().min(1).max(1024).default(\"primary\"),\n })\n .strict();\nexport type GoogleCalendarEventUpdatedEventConfig = z.infer<\n typeof googleCalendarEventUpdatedEventConfigSchema\n>;\n\nexport const googleCalendarEventCancelledEventConfigSchema = z\n .object({\n provider: z.literal(\"google-calendar\"),\n event: z.literal(\"event_cancelled\"),\n calendarId: z.string().trim().min(1).max(1024).default(\"primary\"),\n })\n .strict();\nexport type GoogleCalendarEventCancelledEventConfig = z.infer<\n typeof googleCalendarEventCancelledEventConfigSchema\n>;\n\nexport type GoogleCalendarWorkflowEventConfig =\n | GoogleCalendarEventCreatedEventConfig\n | GoogleCalendarEventUpdatedEventConfig\n | GoogleCalendarEventCancelledEventConfig;\n\nexport const googleMeetTranscriptGeneratedEventConfigSchema = z\n .object({\n provider: z.literal(\"google-meet\"),\n event: z.literal(\"transcript_generated\"),\n scope: z\n .object({\n type: z.literal(\"organizer_user\"),\n })\n .strict()\n .default({ type: \"organizer_user\" }),\n })\n .strict();\nexport type GoogleMeetTranscriptGeneratedEventConfig = z.infer<\n typeof googleMeetTranscriptGeneratedEventConfigSchema\n>;\nexport type GoogleMeetWorkflowEventConfig =\n GoogleMeetTranscriptGeneratedEventConfig;\n\nexport const notionPageReferenceSchema = z\n .object({\n id: z.string().uuid(),\n url: z.url(),\n title: z.string().nullable(),\n rawUrl: z.string().min(1).max(2048).optional(),\n })\n .strict();\nexport type NotionPageReference = z.infer<typeof notionPageReferenceSchema>;\n\nexport const notionDataSourceReferenceSchema = z\n .object({\n id: z.string().uuid(),\n url: z.url(),\n title: z.string().nullable(),\n rawUrl: z.string().min(1).max(2048).optional(),\n })\n .strict();\nexport type NotionDataSourceReference = z.infer<\n typeof notionDataSourceReferenceSchema\n>;\n\nexport const notionChildPageCreatedEventConfigSchema = z\n .object({\n provider: z.literal(\"notion\"),\n event: z.literal(\"child_page_created\"),\n connectorId: z.string().uuid(),\n parentPage: notionPageReferenceSchema,\n })\n .strict();\nexport type NotionChildPageCreatedEventConfig = z.infer<\n typeof notionChildPageCreatedEventConfigSchema\n>;\n\nexport const notionChildPageCreatedEventCreateConfigSchema = z\n .object({\n provider: z.literal(\"notion\"),\n event: z.literal(\"child_page_created\"),\n parentPageUrl: z.string().trim().min(1).max(2048),\n })\n .strict();\nexport type NotionChildPageCreatedEventCreateConfig = z.infer<\n typeof notionChildPageCreatedEventCreateConfigSchema\n>;\n\nexport const notionDatabaseItemCreatedEventConfigSchema = z\n .object({\n provider: z.literal(\"notion\"),\n event: z.literal(\"database_item_created\"),\n connectorId: z.string().uuid(),\n dataSource: notionDataSourceReferenceSchema,\n })\n .strict();\nexport type NotionDatabaseItemCreatedEventConfig = z.infer<\n typeof notionDatabaseItemCreatedEventConfigSchema\n>;\n\nexport const notionDatabaseItemCreatedEventCreateConfigSchema = z\n .object({\n provider: z.literal(\"notion\"),\n event: z.literal(\"database_item_created\"),\n databaseUrl: z.string().trim().min(1).max(2048),\n })\n .strict();\nexport type NotionDatabaseItemCreatedEventCreateConfig = z.infer<\n typeof notionDatabaseItemCreatedEventCreateConfigSchema\n>;\n\nexport const notionPageContentUpdatedScopeSchema = z.discriminatedUnion(\n \"type\",\n [\n z\n .object({\n type: z.literal(\"page\"),\n page: notionPageReferenceSchema,\n })\n .strict(),\n z\n .object({\n type: z.literal(\"data_source\"),\n dataSource: notionDataSourceReferenceSchema,\n })\n .strict(),\n ],\n);\nexport type NotionPageContentUpdatedScope = z.infer<\n typeof notionPageContentUpdatedScopeSchema\n>;\n\nexport const notionPageContentUpdatedEventConfigSchema = z\n .object({\n provider: z.literal(\"notion\"),\n event: z.literal(\"page_content_updated\"),\n connectorId: z.string().uuid(),\n scope: notionPageContentUpdatedScopeSchema,\n })\n .strict();\nexport type NotionPageContentUpdatedEventConfig = z.infer<\n typeof notionPageContentUpdatedEventConfigSchema\n>;\n\nexport const notionPageContentUpdatedEventCreateConfigSchema = z\n .object({\n provider: z.literal(\"notion\"),\n event: z.literal(\"page_content_updated\"),\n pageUrl: z.string().trim().min(1).max(2048).optional(),\n databaseUrl: z.string().trim().min(1).max(2048).optional(),\n })\n .strict()\n .refine(\n (value) => {\n return (\n (value.pageUrl !== undefined) !== (value.databaseUrl !== undefined)\n );\n },\n { message: \"Provide exactly one of pageUrl or databaseUrl\" },\n );\nexport type NotionPageContentUpdatedEventCreateConfig = z.infer<\n typeof notionPageContentUpdatedEventCreateConfigSchema\n>;\n\nexport type NotionWorkflowEventConfig =\n | NotionChildPageCreatedEventConfig\n | NotionDatabaseItemCreatedEventConfig\n | NotionPageContentUpdatedEventConfig;\n\n/**\n * Schedule configuration, discriminated by `type`. Aligned with Automation's\n * time-based Automation schedule model:\n * - `cron`: recurring at wall-clock times.\n * - `loop`: re-scheduled `intervalSeconds` after each completion.\n * - `once`: fires once at `atTime`, then auto-disables.\n */\nexport const zeroWorkflowScheduleSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"cron\"),\n cronExpression: z.string().min(1).max(100),\n timezone: z.string().min(1),\n }),\n z.object({\n type: z.literal(\"loop\"),\n intervalSeconds: z.number().int().positive(),\n }),\n z.object({\n type: z.literal(\"once\"),\n atTime: z.string().min(1),\n timezone: z.string().min(1),\n }),\n]);\nexport type ZeroWorkflowSchedule = z.infer<typeof zeroWorkflowScheduleSchema>;\n\n/**\n * Automation summary. Under 1:N the agent is derived from the workflow, so\n * automations no longer carry an agentId. Detail responses only ever list the\n * caller's own automations.\n */\nconst zeroWorkflowAutomationSummaryBaseSchema = z.object({\n id: z.string(),\n ownerUserId: z.string(),\n enabled: z.boolean(),\n chatThreadId: z.string().nullable(),\n nextRunAt: z.string().datetime().nullable(),\n lastRunAt: z.string().datetime().nullable(),\n});\n\nexport const zeroWorkflowScheduleAutomationSummarySchema =\n zeroWorkflowAutomationSummaryBaseSchema.extend({\n kind: z.literal(\"schedule\"),\n schedule: zeroWorkflowScheduleSchema,\n scheduleSummary: z.string(),\n });\n\nexport const zeroWorkflowGmailNewMessageAutomationSummarySchema =\n zeroWorkflowAutomationSummaryBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"gmail-new-message\"),\n eventConfig: gmailNewMessageEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const zeroWorkflowGmailLabelAppliedAutomationSummarySchema =\n zeroWorkflowAutomationSummaryBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"gmail-label-applied\"),\n eventConfig: gmailLabelAppliedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const zeroWorkflowGithubLabelAppliedAutomationSummarySchema =\n zeroWorkflowAutomationSummaryBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"github-label-applied\"),\n eventConfig: githubLabelAppliedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const zeroWorkflowGoogleCalendarEventCreatedAutomationSummarySchema =\n zeroWorkflowAutomationSummaryBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"google-calendar-event-created\"),\n eventConfig: googleCalendarEventCreatedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const zeroWorkflowGoogleCalendarEventUpdatedAutomationSummarySchema =\n zeroWorkflowAutomationSummaryBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"google-calendar-event-updated\"),\n eventConfig: googleCalendarEventUpdatedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const zeroWorkflowGoogleCalendarEventCancelledAutomationSummarySchema =\n zeroWorkflowAutomationSummaryBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"google-calendar-event-cancelled\"),\n eventConfig: googleCalendarEventCancelledEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const zeroWorkflowGoogleMeetTranscriptGeneratedAutomationSummarySchema =\n zeroWorkflowAutomationSummaryBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"google-meet-transcript-generated\"),\n eventConfig: googleMeetTranscriptGeneratedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const zeroWorkflowNotionChildPageCreatedAutomationSummarySchema =\n zeroWorkflowAutomationSummaryBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"notion-child-page-created\"),\n eventConfig: notionChildPageCreatedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const zeroWorkflowNotionDatabaseItemCreatedAutomationSummarySchema =\n zeroWorkflowAutomationSummaryBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"notion-database-item-created\"),\n eventConfig: notionDatabaseItemCreatedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const zeroWorkflowNotionPageContentUpdatedAutomationSummarySchema =\n zeroWorkflowAutomationSummaryBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"notion-page-content-updated\"),\n eventConfig: notionPageContentUpdatedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const zeroWorkflowWebhookReceivedAutomationSummarySchema =\n zeroWorkflowAutomationSummaryBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"webhook-received\"),\n eventConfig: webhookReceivedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n webhookUrl: z.url().optional(),\n secretLastFour: z.string().length(4),\n disabledReason: z.literal(\"paid_plan_required\").nullable().optional(),\n lastReceivedAt: z.string().datetime().nullable(),\n webhookSecret: z.string().min(1).optional(),\n });\n\nexport const zeroWorkflowEventAutomationSummarySchema = z.discriminatedUnion(\n \"eventType\",\n [\n zeroWorkflowGmailNewMessageAutomationSummarySchema,\n zeroWorkflowGmailLabelAppliedAutomationSummarySchema,\n zeroWorkflowGithubLabelAppliedAutomationSummarySchema,\n zeroWorkflowGoogleCalendarEventCreatedAutomationSummarySchema,\n zeroWorkflowGoogleCalendarEventUpdatedAutomationSummarySchema,\n zeroWorkflowGoogleCalendarEventCancelledAutomationSummarySchema,\n zeroWorkflowGoogleMeetTranscriptGeneratedAutomationSummarySchema,\n zeroWorkflowNotionChildPageCreatedAutomationSummarySchema,\n zeroWorkflowNotionDatabaseItemCreatedAutomationSummarySchema,\n zeroWorkflowNotionPageContentUpdatedAutomationSummarySchema,\n zeroWorkflowWebhookReceivedAutomationSummarySchema,\n ],\n);\n\nexport const zeroWorkflowAutomationSummarySchema = z.union([\n zeroWorkflowScheduleAutomationSummarySchema,\n zeroWorkflowEventAutomationSummarySchema,\n]);\nexport type ZeroWorkflowAutomationSummary = z.infer<\n typeof zeroWorkflowAutomationSummarySchema\n>;\n\nconst chatThreadWorkflowSchema = z.object({\n id: z.string().uuid(),\n agentId: z.string().uuid(),\n name: zeroWorkflowNameSchema,\n displayName: z.string().nullable(),\n description: z.string().nullable(),\n});\n\nconst chatThreadWorkflowAutomationBaseSchema =\n zeroWorkflowAutomationSummaryBaseSchema.extend({\n id: z.string().uuid(),\n chatThreadId: z.string().min(1),\n workflow: chatThreadWorkflowSchema,\n });\n\nexport const chatThreadWorkflowScheduleAutomationSchema =\n chatThreadWorkflowAutomationBaseSchema.extend({\n kind: z.literal(\"schedule\"),\n schedule: zeroWorkflowScheduleSchema,\n scheduleSummary: z.string(),\n });\n\nexport const chatThreadWorkflowGmailNewMessageAutomationSchema =\n chatThreadWorkflowAutomationBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"gmail-new-message\"),\n eventConfig: gmailNewMessageEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const chatThreadWorkflowGmailLabelAppliedAutomationSchema =\n chatThreadWorkflowAutomationBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"gmail-label-applied\"),\n eventConfig: gmailLabelAppliedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const chatThreadWorkflowGithubLabelAppliedAutomationSchema =\n chatThreadWorkflowAutomationBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"github-label-applied\"),\n eventConfig: githubLabelAppliedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const chatThreadWorkflowGoogleCalendarEventCreatedAutomationSchema =\n chatThreadWorkflowAutomationBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"google-calendar-event-created\"),\n eventConfig: googleCalendarEventCreatedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const chatThreadWorkflowGoogleCalendarEventUpdatedAutomationSchema =\n chatThreadWorkflowAutomationBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"google-calendar-event-updated\"),\n eventConfig: googleCalendarEventUpdatedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const chatThreadWorkflowGoogleCalendarEventCancelledAutomationSchema =\n chatThreadWorkflowAutomationBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"google-calendar-event-cancelled\"),\n eventConfig: googleCalendarEventCancelledEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const chatThreadWorkflowGoogleMeetTranscriptGeneratedAutomationSchema =\n chatThreadWorkflowAutomationBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"google-meet-transcript-generated\"),\n eventConfig: googleMeetTranscriptGeneratedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const chatThreadWorkflowNotionChildPageCreatedAutomationSchema =\n chatThreadWorkflowAutomationBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"notion-child-page-created\"),\n eventConfig: notionChildPageCreatedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const chatThreadWorkflowNotionDatabaseItemCreatedAutomationSchema =\n chatThreadWorkflowAutomationBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"notion-database-item-created\"),\n eventConfig: notionDatabaseItemCreatedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const chatThreadWorkflowNotionPageContentUpdatedAutomationSchema =\n chatThreadWorkflowAutomationBaseSchema.extend({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"notion-page-content-updated\"),\n eventConfig: notionPageContentUpdatedEventConfigSchema,\n schedule: z.null(),\n scheduleSummary: z.null(),\n });\n\nexport const chatThreadWorkflowWebhookReceivedAutomationSchema =\n zeroWorkflowWebhookReceivedAutomationSummarySchema.extend({\n id: z.string().uuid(),\n chatThreadId: z.string().min(1),\n workflow: chatThreadWorkflowSchema,\n });\n\nexport const chatThreadWorkflowAutomationSchema = z.union([\n chatThreadWorkflowScheduleAutomationSchema,\n chatThreadWorkflowGmailNewMessageAutomationSchema,\n chatThreadWorkflowGmailLabelAppliedAutomationSchema,\n chatThreadWorkflowGithubLabelAppliedAutomationSchema,\n chatThreadWorkflowGoogleCalendarEventCreatedAutomationSchema,\n chatThreadWorkflowGoogleCalendarEventUpdatedAutomationSchema,\n chatThreadWorkflowGoogleCalendarEventCancelledAutomationSchema,\n chatThreadWorkflowGoogleMeetTranscriptGeneratedAutomationSchema,\n chatThreadWorkflowNotionChildPageCreatedAutomationSchema,\n chatThreadWorkflowNotionDatabaseItemCreatedAutomationSchema,\n chatThreadWorkflowNotionPageContentUpdatedAutomationSchema,\n chatThreadWorkflowWebhookReceivedAutomationSchema,\n]);\nexport type ChatThreadWorkflowAutomation = z.infer<\n typeof chatThreadWorkflowAutomationSchema\n>;\n\nexport const zeroWorkflowScheduleAutomationCreateRequestSchema = z.object({\n kind: z.literal(\"schedule\").optional(),\n schedule: zeroWorkflowScheduleSchema,\n enabled: z.boolean().optional(),\n});\n\nexport const zeroWorkflowGmailNewMessageAutomationCreateRequestSchema =\n z.object({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"gmail-new-message\"),\n eventConfig: gmailNewMessageEventConfigSchema,\n enabled: z.boolean().optional(),\n });\n\nexport const zeroWorkflowGmailLabelAppliedAutomationCreateRequestSchema =\n z.object({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"gmail-label-applied\"),\n eventConfig: gmailLabelAppliedEventConfigSchema,\n enabled: z.boolean().optional(),\n });\n\nexport const zeroWorkflowGithubLabelAppliedAutomationCreateRequestSchema =\n z.object({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"github-label-applied\"),\n eventConfig: githubLabelAppliedEventConfigSchema,\n enabled: z.boolean().optional(),\n });\n\nexport const zeroWorkflowGoogleCalendarEventCreatedAutomationCreateRequestSchema =\n z.object({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"google-calendar-event-created\"),\n eventConfig: googleCalendarEventCreatedEventConfigSchema\n .optional()\n .default({\n provider: \"google-calendar\",\n event: \"event_created\",\n calendarId: \"primary\",\n }),\n enabled: z.boolean().optional(),\n });\n\nexport const zeroWorkflowGoogleCalendarEventUpdatedAutomationCreateRequestSchema =\n z.object({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"google-calendar-event-updated\"),\n eventConfig: googleCalendarEventUpdatedEventConfigSchema\n .optional()\n .default({\n provider: \"google-calendar\",\n event: \"event_updated\",\n calendarId: \"primary\",\n }),\n enabled: z.boolean().optional(),\n });\n\nexport const zeroWorkflowGoogleCalendarEventCancelledAutomationCreateRequestSchema =\n z.object({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"google-calendar-event-cancelled\"),\n eventConfig: googleCalendarEventCancelledEventConfigSchema\n .optional()\n .default({\n provider: \"google-calendar\",\n event: \"event_cancelled\",\n calendarId: \"primary\",\n }),\n enabled: z.boolean().optional(),\n });\n\nexport const zeroWorkflowGoogleMeetTranscriptGeneratedAutomationCreateRequestSchema =\n z.object({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"google-meet-transcript-generated\"),\n eventConfig: googleMeetTranscriptGeneratedEventConfigSchema\n .optional()\n .default({\n provider: \"google-meet\",\n event: \"transcript_generated\",\n scope: { type: \"organizer_user\" },\n }),\n enabled: z.boolean().optional(),\n });\n\nexport const zeroWorkflowNotionChildPageCreatedAutomationCreateRequestSchema =\n z.object({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"notion-child-page-created\"),\n eventConfig: notionChildPageCreatedEventCreateConfigSchema,\n enabled: z.boolean().optional(),\n });\n\nexport const zeroWorkflowNotionDatabaseItemCreatedAutomationCreateRequestSchema =\n z.object({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"notion-database-item-created\"),\n eventConfig: notionDatabaseItemCreatedEventCreateConfigSchema,\n enabled: z.boolean().optional(),\n });\n\nexport const zeroWorkflowNotionPageContentUpdatedAutomationCreateRequestSchema =\n z.object({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"notion-page-content-updated\"),\n eventConfig: notionPageContentUpdatedEventCreateConfigSchema,\n enabled: z.boolean().optional(),\n });\n\nexport const zeroWorkflowWebhookReceivedAutomationCreateRequestSchema =\n z.object({\n kind: z.literal(\"event\"),\n eventType: z.literal(\"webhook-received\"),\n eventConfig: webhookReceivedEventConfigSchema.optional(),\n enabled: z.boolean().optional(),\n });\n\nexport const zeroWorkflowAutomationCreateRequestSchema = z.union([\n zeroWorkflowScheduleAutomationCreateRequestSchema,\n zeroWorkflowGmailNewMessageAutomationCreateRequestSchema,\n zeroWorkflowGmailLabelAppliedAutomationCreateRequestSchema,\n zeroWorkflowGithubLabelAppliedAutomationCreateRequestSchema,\n zeroWorkflowGoogleCalendarEventCreatedAutomationCreateRequestSchema,\n zeroWorkflowGoogleCalendarEventUpdatedAutomationCreateRequestSchema,\n zeroWorkflowGoogleCalendarEventCancelledAutomationCreateRequestSchema,\n zeroWorkflowGoogleMeetTranscriptGeneratedAutomationCreateRequestSchema,\n zeroWorkflowNotionChildPageCreatedAutomationCreateRequestSchema,\n zeroWorkflowNotionDatabaseItemCreatedAutomationCreateRequestSchema,\n zeroWorkflowNotionPageContentUpdatedAutomationCreateRequestSchema,\n zeroWorkflowWebhookReceivedAutomationCreateRequestSchema,\n]);\nexport type ZeroWorkflowAutomationCreateRequest = z.infer<\n typeof zeroWorkflowAutomationCreateRequestSchema\n>;\n\nexport const zeroWorkflowScheduleAutomationUpdateRequestSchema = z.object({\n schedule: zeroWorkflowScheduleSchema,\n});\n\nexport const zeroWorkflowGmailEventAutomationUpdateRequestSchema = z.object({\n eventConfig: gmailWorkflowEventConfigSchema,\n});\n\nexport const zeroWorkflowGithubEventAutomationUpdateRequestSchema = z.object({\n eventConfig: githubLabelAppliedEventConfigSchema,\n});\n\nexport const zeroWorkflowAutomationUpdateRequestSchema = z.union([\n zeroWorkflowScheduleAutomationUpdateRequestSchema,\n zeroWorkflowGmailEventAutomationUpdateRequestSchema,\n zeroWorkflowGithubEventAutomationUpdateRequestSchema,\n]);\nexport type ZeroWorkflowAutomationUpdateRequest = z.infer<\n typeof zeroWorkflowAutomationUpdateRequestSchema\n>;\n\n/**\n * Workflow summary. A workflow belongs to exactly one agent (`agentId`).\n * `canManage` reflects the caller's effective rights (agent write-permission\n * for public workflows; ownership for private ones).\n */\nexport const zeroWorkflowSummarySchema = z.object({\n id: z.string().uuid(),\n agentId: z.string().uuid(),\n agentName: z.string().nullable(),\n agentDisplayName: z.string().nullable(),\n name: zeroWorkflowNameSchema,\n displayName: z.string().max(256).nullable(),\n description: z.string().max(1024).nullable(),\n visibility: zeroWorkflowVisibilitySchema,\n ownerUserId: z.string(),\n ownerUserDisplayName: z.string().nullable().optional(),\n ownerUserImageUrl: z.string().nullable().optional(),\n createdAt: z.string().datetime(),\n canManage: z.boolean(),\n canPublish: z.boolean(),\n shadowedBy: z\n .object({\n id: z.string().uuid(),\n name: zeroWorkflowNameSchema,\n displayName: z.string().max(256).nullable(),\n })\n .nullable()\n .optional(),\n});\n\nexport const zeroWorkflowDetailResponseSchema =\n zeroWorkflowSummarySchema.extend({\n createdByUserId: z.string(),\n updatedByUserId: z.string(),\n updatedAt: z.string().datetime(),\n instruction: z.string().nullable(),\n files: z.array(workflowFileMetadataSchema).nullable(),\n fileContents: z.array(workflowFileEntrySchema).nullable(),\n automations: z.array(zeroWorkflowAutomationSummarySchema),\n });\n\nexport const zeroWorkflowListResponseSchema = z.array(\n zeroWorkflowSummarySchema,\n);\n\nexport const zeroWorkflowAutomationsListEntrySchema = z.object({\n workflow: zeroWorkflowSummarySchema,\n automation: zeroWorkflowAutomationSummarySchema,\n});\nexport const zeroWorkflowAutomationsListResponseSchema = z.array(\n zeroWorkflowAutomationsListEntrySchema,\n);\n\nexport const zeroWorkflowCreateRequestSchema = z.object({\n agentId: z.string().uuid(),\n chatThreadId: z.string().uuid().optional(),\n name: zeroWorkflowNameSchema,\n instruction: workflowInstructionSchema.optional(),\n files: workflowFilesSchema.optional(),\n displayName: z.string().max(256).optional(),\n description: z.string().max(1024).optional(),\n visibility: zeroWorkflowVisibilitySchema.optional(),\n});\n\nexport const zeroWorkflowUpdateRequestSchema = z\n .object({\n name: zeroWorkflowNameSchema.optional(),\n instruction: workflowInstructionSchema.nullable().optional(),\n files: workflowFilesSchema.optional(),\n displayName: z.string().max(256).nullable().optional(),\n description: z.string().max(1024).nullable().optional(),\n })\n .refine(\n (body) => {\n return (\n body.name !== undefined ||\n body.instruction !== undefined ||\n body.files !== undefined ||\n body.displayName !== undefined ||\n body.description !== undefined\n );\n },\n { message: \"At least one workflow update is required\" },\n );\n\nexport const zeroWorkflowCopyRequestSchema = z.object({\n toAgentId: z.string().uuid(),\n});\n\nexport const zeroWorkflowRunResponseSchema = z.object({\n chatThreadId: z.string().uuid(),\n runId: z.string(),\n});\n\nexport const zeroWorkflowChatThreadResponseSchema = z.object({\n chatThreadId: z.string().uuid(),\n prompt: z.string(),\n});\n\nexport const zeroWorkflowConnectorReadinessStatusSchema = z.enum([\n \"connected\",\n \"not-connected\",\n \"scope-mismatch\",\n \"reconnect-required\",\n \"not-enabled-for-agent\",\n \"unavailable\",\n]);\nexport type ZeroWorkflowConnectorReadinessStatus = z.infer<\n typeof zeroWorkflowConnectorReadinessStatusSchema\n>;\n\nexport const zeroWorkflowConnectorReadinessEntrySchema = z\n .object({\n connectorRef: connectorRefSchema,\n label: z.string().min(1),\n icon: publicConnectorCatalogIconSchema,\n reason: z.string().min(1),\n status: zeroWorkflowConnectorReadinessStatusSchema,\n })\n .strict();\nexport type ZeroWorkflowConnectorReadinessEntry = z.infer<\n typeof zeroWorkflowConnectorReadinessEntrySchema\n>;\n\nexport const zeroWorkflowConnectorReadinessResponseSchema = z\n .object({\n connectors: z.array(zeroWorkflowConnectorReadinessEntrySchema),\n })\n .strict();\nexport type ZeroWorkflowConnectorReadinessResponse = z.infer<\n typeof zeroWorkflowConnectorReadinessResponseSchema\n>;\n\nconst workflowIdParams = z.object({ workflowId: z.string().uuid() });\n\nexport const zeroWorkflowsCollectionContract = c.router({\n list: {\n method: \"GET\",\n path: \"/api/zero/workflows\",\n headers: authHeadersSchema,\n query: z.object({ agentId: z.string().uuid().optional() }),\n responses: {\n 200: zeroWorkflowListResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"List visible workflows, optionally scoped to one agent\",\n },\n create: {\n method: \"POST\",\n path: \"/api/zero/workflows\",\n headers: authHeadersSchema,\n body: zeroWorkflowCreateRequestSchema,\n responses: {\n 201: zeroWorkflowSummarySchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Create a workflow under an agent\",\n },\n});\n\nexport const zeroWorkflowsDetailContract = c.router({\n get: {\n method: \"GET\",\n path: \"/api/zero/workflows/:workflowId\",\n headers: authHeadersSchema,\n pathParams: workflowIdParams,\n responses: {\n 200: zeroWorkflowDetailResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get a workflow with its instruction and files\",\n },\n update: {\n method: \"PATCH\",\n path: \"/api/zero/workflows/:workflowId\",\n headers: authHeadersSchema,\n pathParams: workflowIdParams,\n body: zeroWorkflowUpdateRequestSchema,\n responses: {\n 200: zeroWorkflowDetailResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Update a workflow's instruction, files, or metadata\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/workflows/:workflowId\",\n headers: authHeadersSchema,\n pathParams: workflowIdParams,\n body: c.noBody(),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Delete a workflow\",\n },\n copy: {\n method: \"POST\",\n path: \"/api/zero/workflows/:workflowId/copy\",\n headers: authHeadersSchema,\n pathParams: workflowIdParams,\n body: zeroWorkflowCopyRequestSchema,\n responses: {\n 201: zeroWorkflowSummarySchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Copy (fork) a workflow onto another agent\",\n },\n chatThread: {\n method: \"POST\",\n path: \"/api/zero/workflows/:workflowId/chat-thread\",\n headers: authHeadersSchema,\n pathParams: workflowIdParams,\n body: c.noBody(),\n responses: {\n 200: zeroWorkflowChatThreadResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get or create the shared chat thread for a workflow\",\n },\n run: {\n method: \"POST\",\n path: \"/api/zero/workflows/:workflowId/run\",\n headers: authHeadersSchema,\n pathParams: workflowIdParams,\n body: c.noBody(),\n responses: {\n 200: zeroWorkflowRunResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary:\n \"Run the workflow once in its shared chat thread (equivalent to /slug)\",\n },\n connectorReadiness: {\n method: \"POST\",\n path: \"/api/zero/workflows/:workflowId/connector-readiness\",\n headers: authHeadersSchema,\n pathParams: workflowIdParams,\n body: c.noBody(),\n responses: {\n 200: zeroWorkflowConnectorReadinessResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 413: apiErrorSchema,\n 503: apiErrorSchema,\n },\n summary:\n \"Detect the built-in connectors a workflow may need and report their readiness\",\n },\n});\n\n/** Visibility transitions. */\nexport const zeroWorkflowVisibilityContract = c.router({\n publish: {\n method: \"POST\",\n path: \"/api/zero/workflows/:workflowId/publish\",\n headers: authHeadersSchema,\n pathParams: workflowIdParams,\n body: c.noBody(),\n responses: {\n 200: zeroWorkflowSummarySchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Publish a private workflow\",\n },\n demote: {\n method: \"POST\",\n path: \"/api/zero/workflows/:workflowId/demote\",\n headers: authHeadersSchema,\n pathParams: workflowIdParams,\n body: c.noBody(),\n responses: {\n 200: zeroWorkflowSummarySchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary:\n \"Agent write-permission holder demotes a public workflow to private\",\n },\n});\n\nconst automationIdParams = z.object({ id: z.string().uuid() });\nconst chatThreadIdParams = z.object({ threadId: z.string().min(1) });\n\nexport const zeroWorkflowWebhookSecretResponseSchema = z.object({\n webhookUrl: z.url(),\n webhookSecret: z.string().min(1),\n});\nexport type ZeroWorkflowWebhookSecretResponse = z.infer<\n typeof zeroWorkflowWebhookSecretResponseSchema\n>;\n\nexport const zeroWorkflowAutomationsContract = c.router({\n listWorkspace: {\n method: \"GET\",\n path: \"/api/zero/workflow-automations\",\n headers: authHeadersSchema,\n responses: {\n 200: zeroWorkflowAutomationsListResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"List the caller's automations across visible workflows\",\n },\n listForChatThread: {\n method: \"GET\",\n path: \"/api/zero/chat-threads/:threadId/workflow-automations\",\n headers: authHeadersSchema,\n pathParams: chatThreadIdParams,\n responses: {\n 200: z.array(chatThreadWorkflowAutomationSchema),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"List workflow automations bound to a chat thread\",\n },\n list: {\n method: \"GET\",\n path: \"/api/zero/workflows/:workflowId/automations\",\n headers: authHeadersSchema,\n pathParams: workflowIdParams,\n responses: {\n 200: z.array(zeroWorkflowAutomationSummarySchema),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"List the caller's own automations for a workflow\",\n },\n create: {\n method: \"POST\",\n path: \"/api/zero/workflows/:workflowId/automations\",\n headers: authHeadersSchema,\n pathParams: workflowIdParams,\n body: zeroWorkflowAutomationCreateRequestSchema,\n responses: {\n 201: zeroWorkflowAutomationSummarySchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Create an automation on a workflow\",\n },\n get: {\n method: \"GET\",\n path: \"/api/zero/workflow-automations/:id\",\n headers: authHeadersSchema,\n pathParams: automationIdParams,\n responses: {\n 200: zeroWorkflowAutomationSummarySchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get a workflow automation\",\n },\n update: {\n method: \"PATCH\",\n path: \"/api/zero/workflow-automations/:id\",\n headers: authHeadersSchema,\n pathParams: automationIdParams,\n body: zeroWorkflowAutomationUpdateRequestSchema,\n responses: {\n 200: zeroWorkflowAutomationSummarySchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Update a workflow automation\",\n },\n delete: {\n method: \"DELETE\",\n path: \"/api/zero/workflow-automations/:id\",\n headers: authHeadersSchema,\n pathParams: automationIdParams,\n body: c.noBody(),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Delete a workflow automation\",\n },\n enable: {\n method: \"POST\",\n path: \"/api/zero/workflow-automations/:id/enable\",\n headers: authHeadersSchema,\n pathParams: automationIdParams,\n body: c.noBody(),\n responses: {\n 200: zeroWorkflowAutomationSummarySchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 402: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Enable a workflow automation\",\n },\n disable: {\n method: \"POST\",\n path: \"/api/zero/workflow-automations/:id/disable\",\n headers: authHeadersSchema,\n pathParams: automationIdParams,\n body: c.noBody(),\n responses: {\n 200: zeroWorkflowAutomationSummarySchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Disable a workflow automation\",\n },\n run: {\n method: \"POST\",\n path: \"/api/zero/workflow-automations/:id/run\",\n headers: authHeadersSchema,\n pathParams: automationIdParams,\n body: c.noBody(),\n responses: {\n 201: zeroWorkflowRunResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Run a workflow automation immediately in its bound chat thread\",\n },\n revealWebhookSecret: {\n method: \"POST\",\n path: \"/api/zero/workflow-automations/:id/webhook-secret\",\n headers: authHeadersSchema,\n pathParams: automationIdParams,\n body: c.noBody(),\n responses: {\n 200: zeroWorkflowWebhookSecretResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary:\n \"Reveal the webhook URL and signing secret for a workflow automation\",\n },\n});\n\nexport type WorkflowFileEntry = z.infer<typeof workflowFileEntrySchema>;\nexport type WorkflowFileMetadata = z.infer<typeof workflowFileMetadataSchema>;\nexport type ZeroWorkflowSummary = z.infer<typeof zeroWorkflowSummarySchema>;\nexport type ZeroWorkflowDetailResponse = z.infer<\n typeof zeroWorkflowDetailResponseSchema\n>;\nexport type ZeroWorkflowCreateRequest = z.infer<\n typeof zeroWorkflowCreateRequestSchema\n>;\nexport type ZeroWorkflowUpdateRequest = z.infer<\n typeof zeroWorkflowUpdateRequestSchema\n>;\nexport type ZeroWorkflowCopyRequest = z.infer<\n typeof zeroWorkflowCopyRequestSchema\n>;\nexport type ZeroWorkflowChatThreadResponse = z.infer<\n typeof zeroWorkflowChatThreadResponseSchema\n>;\nexport type ZeroWorkflowRunResponse = z.infer<\n typeof zeroWorkflowRunResponseSchema\n>;\nexport type ZeroWorkflowAutomationsListEntry = z.infer<\n typeof zeroWorkflowAutomationsListEntrySchema\n>;\nexport type ZeroWorkflowsCollectionContract =\n typeof zeroWorkflowsCollectionContract;\nexport type ZeroWorkflowsDetailContract = typeof zeroWorkflowsDetailContract;\nexport type ZeroWorkflowVisibilityContract =\n typeof zeroWorkflowVisibilityContract;\nexport type ZeroWorkflowAutomationsContract =\n typeof zeroWorkflowAutomationsContract;\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport { zeroMailContract } from \"@vm0/api-contracts/contracts/zero-mail\";\n\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport async function linkZeroMailDraft(args: {\n readonly threadId: string;\n readonly agentId: string;\n readonly gmailDraftId: string;\n}): Promise<{\n readonly mailDraftId: string;\n readonly mailDraftUrl: string;\n}> {\n const config = await getClientConfig();\n const client = initClient(zeroMailContract, config);\n const result = await client.linkDraft({\n body: {\n threadId: args.threadId,\n agentId: args.agentId,\n gmailDraftId: args.gmailDraftId,\n },\n });\n if (result.status === 200) {\n return result.body;\n }\n handleError(result, \"Failed to link Gmail draft\");\n}\n","import { z } from \"zod\";\n\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\nexport const zeroMailProviderSchema = z.enum([\"gmail\", \"outlook\"]);\n\nexport const zeroMailDraftStatusSchema = z.enum([\"draft\", \"sent\", \"deleted\"]);\n\nexport const zeroMailAttachmentSchema = z.object({\n filename: z.string(),\n contentType: z.string(),\n size: z.number().int().nonnegative(),\n});\n\nconst zeroMailDraftBaseSchema = z.object({\n provider: z.literal(\"gmail\"),\n from: z.email(),\n fromName: z.string().optional(),\n to: z.array(z.email()),\n cc: z.array(z.email()),\n bcc: z.array(z.email()),\n subject: z.string(),\n body: z.string(),\n replyTo: z.string().optional(),\n inReplyTo: z.string().optional(),\n references: z.array(z.string()),\n status: zeroMailDraftStatusSchema,\n detailAvailable: z.boolean(),\n gmailDraftId: z.string(),\n gmailThreadId: z.string(),\n gmailMessageId: z.string(),\n sentGmailMessageId: z.string().optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n sentAt: z.string().optional(),\n});\n\nexport const zeroMailDraftSchema = zeroMailDraftBaseSchema.extend({\n version: z.literal(3),\n attachments: z.array(zeroMailAttachmentSchema),\n});\n\nconst zeroMailDraftResponseSchema = z.object({\n mailDraftId: z.string().uuid(),\n mailDraftUrl: z.url(),\n mailDraft: zeroMailDraftSchema,\n});\n\nconst zeroMailLinkResponseSchema = zeroMailDraftResponseSchema.pick({\n mailDraftId: true,\n mailDraftUrl: true,\n});\n\nconst zeroMailDraftPathParamsSchema = z.object({\n mailDraftId: z.string().uuid(),\n});\n\nexport const zeroMailContract = c.router({\n linkDraft: {\n method: \"POST\",\n path: \"/api/zero/mail/drafts/link\",\n headers: authHeadersSchema,\n body: z.object({\n threadId: z.string().uuid(),\n agentId: z.string().uuid().optional(),\n gmailDraftId: z.string().min(1),\n }),\n responses: {\n 200: zeroMailLinkResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Link an existing Gmail draft to a web chat thread\",\n },\n getDraft: {\n method: \"GET\",\n path: \"/api/zero/mail/drafts/:mailDraftId\",\n headers: authHeadersSchema,\n pathParams: zeroMailDraftPathParamsSchema,\n responses: {\n 200: zeroMailDraftResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Get an email draft by ID\",\n },\n deleteDraft: {\n method: \"DELETE\",\n path: \"/api/zero/mail/drafts/:mailDraftId\",\n headers: authHeadersSchema,\n pathParams: zeroMailDraftPathParamsSchema,\n body: c.noBody(),\n responses: {\n 204: c.noBody(),\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Permanently delete a Gmail draft and its vm0 record\",\n },\n sendDraft: {\n method: \"POST\",\n path: \"/api/zero/mail/drafts/:mailDraftId/send\",\n headers: authHeadersSchema,\n pathParams: zeroMailDraftPathParamsSchema,\n body: c.noBody(),\n responses: {\n 200: zeroMailDraftResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 409: apiErrorSchema,\n },\n summary: \"Send a linked Gmail draft\",\n },\n});\n\nexport type ZeroMailProvider = z.infer<typeof zeroMailProviderSchema>;\nexport type ZeroMailDraftStatus = z.infer<typeof zeroMailDraftStatusSchema>;\nexport type ZeroMailAttachment = z.infer<typeof zeroMailAttachmentSchema>;\nexport type ZeroMailDraft = z.infer<typeof zeroMailDraftSchema>;\nexport type ZeroMailContract = typeof zeroMailContract;\n","import { createWriteStream } from \"node:fs\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n integrationsSlackMessageContract,\n integrationsSlackUploadInitContract,\n integrationsSlackUploadCompleteContract,\n type SendSlackMessageBody,\n type SendSlackMessageResponse,\n type SlackUploadInitBody,\n type SlackUploadInitResponse,\n type SlackUploadCompleteBody,\n type SlackUploadCompleteResponse,\n} from \"@vm0/api-contracts/contracts/integrations\";\nimport {\n ApiRequestError,\n getBaseUrl,\n getClientConfig,\n handleError,\n} from \"../core/client-factory\";\nimport { getActiveToken } from \"../config\";\nimport { headersWithCliClientHeaders } from \"../client-headers\";\n\nexport async function sendSlackMessage(\n body: SendSlackMessageBody,\n): Promise<SendSlackMessageResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsSlackMessageContract, config);\n\n const result = await client.sendMessage({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to send Slack message\");\n}\n\nexport async function initSlackFileUpload(\n body: SlackUploadInitBody,\n): Promise<SlackUploadInitResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsSlackUploadInitContract, config);\n\n const result = await client.init({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to initialize Slack file upload\");\n}\n\nexport async function completeSlackFileUpload(\n body: SlackUploadCompleteBody,\n): Promise<SlackUploadCompleteResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsSlackUploadCompleteContract, config);\n\n const result = await client.complete({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to complete Slack file upload\");\n}\n\ninterface DownloadSlackFileResult {\n path: string;\n mimetype: string;\n size: number;\n}\n\n/**\n * Download a Slack file to a local path, streaming the response body to disk.\n * Uses the org bot token on the server side; the CLI just authenticates via\n * ZERO_TOKEN and writes the bytes. Response is binary, so this bypasses the\n * typed contract client.\n */\nexport async function downloadSlackFile(\n fileId: string,\n outPath: string,\n): Promise<DownloadSlackFileResult> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const url = new URL(\"/api/zero/integrations/slack/download-file\", baseUrl);\n url.searchParams.set(\"file_id\", fileId);\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n\n const response = await fetch(url, {\n headers: headersWithCliClientHeaders(headers),\n });\n\n if (!response.ok) {\n let message = `Failed to download Slack file (HTTP ${response.status})`;\n let code = \"UNKNOWN\";\n try {\n const body = (await response.json()) as {\n error?: { message?: string; code?: string };\n };\n if (body.error?.message) message = body.error.message;\n if (body.error?.code) code = body.error.code;\n } catch {\n // ignore parse errors — keep generic message\n }\n throw new ApiRequestError(message, code, response.status);\n }\n\n if (!response.body) {\n throw new ApiRequestError(\n \"Slack download response has no body\",\n \"EMPTY_BODY\",\n 502,\n );\n }\n\n const mimetype =\n response.headers.get(\"x-file-mimetype\") ??\n response.headers.get(\"content-type\") ??\n \"application/octet-stream\";\n\n await pipeline(\n Readable.fromWeb(response.body as never),\n createWriteStream(outPath),\n );\n\n const contentLengthHeader = response.headers.get(\"content-length\");\n const size = contentLengthHeader ? Number(contentLengthHeader) : 0;\n\n return { path: outPath, mimetype, size };\n}\n","import { z } from \"zod\";\nimport { authHeadersSchema, initContract } from \"./base\";\nimport { apiErrorSchema } from \"./errors\";\n\nconst c = initContract();\n\n/**\n * Integration Slack message contract\n * POST /api/zero/integrations/slack/message\n *\n * Sends a Slack message via the org's installed bot token.\n * Requires `slack:write` capability (via ZERO_TOKEN).\n */\nconst sendSlackMessageBodySchema = z\n .object({\n channel: z.string().min(1, \"Channel ID is required\").optional(),\n user: z.string().min(1, \"User ID is required\").optional(),\n text: z.string().optional(),\n threadTs: z.string().optional(),\n blocks: z.array(z.object({ type: z.string() }).passthrough()).optional(),\n })\n .refine(\n (data) => {\n return Boolean(data.channel) !== Boolean(data.user);\n },\n { message: \"Exactly one of 'channel' or 'user' must be provided\" },\n );\n\nexport type SendSlackMessageBody = z.infer<typeof sendSlackMessageBodySchema>;\n\nconst sendSlackMessageResponseSchema = z.object({\n ok: z.literal(true),\n ts: z.string().optional(),\n channel: z.string().optional(),\n});\n\nexport type SendSlackMessageResponse = z.infer<\n typeof sendSlackMessageResponseSchema\n>;\n\nexport const integrationsSlackMessageContract = c.router({\n sendMessage: {\n method: \"POST\",\n path: \"/api/zero/integrations/slack/message\",\n headers: authHeadersSchema,\n body: sendSlackMessageBodySchema,\n responses: {\n 200: sendSlackMessageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Send a Slack message via org bot token\",\n },\n});\n\nexport type IntegrationsSlackMessageContract =\n typeof integrationsSlackMessageContract;\n\n/**\n * Integration Feishu message contract\n * POST /api/zero/integrations/feishu/message\n *\n * Sends a Feishu message via an org-owned custom app.\n * Requires `feishu:write` capability (via ZERO_TOKEN).\n */\nconst feishuCardSchema = z.record(z.string(), z.unknown());\n\nconst sendFeishuMessageBodySchema = z\n .object({\n installationId: z.string().uuid().optional(),\n chat: z.string().min(1, \"Chat ID is required\").optional(),\n user: z.string().min(1, \"Feishu open ID is required\").optional(),\n replyToMessageId: z.string().min(1, \"Message ID is required\").optional(),\n replyInThread: z.boolean().optional(),\n text: z.string().min(1, \"Message text is required\").optional(),\n card: feishuCardSchema.optional(),\n })\n .refine(\n (body) => {\n return (\n [body.chat, body.user, body.replyToMessageId].filter(Boolean).length ===\n 1\n );\n },\n {\n message: \"Exactly one of chat, user, or replyToMessageId is required\",\n path: [\"chat\"],\n },\n )\n .refine(\n (body) => {\n return Boolean(body.text) !== Boolean(body.card);\n },\n {\n message: \"Exactly one of text or card is required\",\n path: [\"text\"],\n },\n )\n .refine(\n (body) => {\n return !body.replyInThread || Boolean(body.replyToMessageId);\n },\n {\n message: \"replyInThread requires replyToMessageId\",\n path: [\"replyInThread\"],\n },\n );\n\nexport type SendFeishuMessageBody = z.infer<typeof sendFeishuMessageBodySchema>;\n\nconst sendFeishuMessageResponseSchema = z.object({\n ok: z.literal(true),\n messageId: z.string(),\n chatId: z.string().nullable(),\n});\n\nexport type SendFeishuMessageResponse = z.infer<\n typeof sendFeishuMessageResponseSchema\n>;\n\nexport const integrationsFeishuMessageContract = c.router({\n sendMessage: {\n method: \"POST\",\n path: \"/api/zero/integrations/feishu/message\",\n headers: authHeadersSchema,\n body: sendFeishuMessageBodySchema,\n responses: {\n 200: sendFeishuMessageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 502: apiErrorSchema,\n },\n summary: \"Send a Feishu message via an organization custom app\",\n },\n});\n\nexport type IntegrationsFeishuMessageContract =\n typeof integrationsFeishuMessageContract;\n\n/**\n * Integration Telegram message contract\n * POST /api/zero/integrations/telegram/message\n *\n * Sends a Telegram message via an org-owned bot token.\n * Requires `telegram:write` capability (via ZERO_TOKEN).\n */\nconst sendTelegramMessageBodySchema = z.object({\n botId: z.string().min(1, \"Bot ID is required\"),\n chatId: z.string().min(1, \"Chat ID is required\"),\n text: z.string().min(1, \"Message text is required\"),\n replyToMessageId: z.number().int().positive().optional(),\n messageThreadId: z.number().int().positive().optional(),\n});\n\nexport type SendTelegramMessageBody = z.infer<\n typeof sendTelegramMessageBodySchema\n>;\n\nconst sendTelegramMessageResponseSchema = z.object({\n ok: z.literal(true),\n messageId: z.number().int(),\n chatId: z.string(),\n});\n\nexport type SendTelegramMessageResponse = z.infer<\n typeof sendTelegramMessageResponseSchema\n>;\n\nexport const integrationsTelegramMessageContract = c.router({\n sendMessage: {\n method: \"POST\",\n path: \"/api/zero/integrations/telegram/message\",\n headers: authHeadersSchema,\n body: sendTelegramMessageBodySchema,\n responses: {\n 200: sendTelegramMessageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 502: apiErrorSchema,\n },\n summary: \"Send a Telegram message via org bot token\",\n },\n});\n\nexport type IntegrationsTelegramMessageContract =\n typeof integrationsTelegramMessageContract;\n\n/**\n * Integration Microsoft Teams message contract\n * POST /api/zero/integrations/teams/message\n *\n * Sends a Microsoft Teams message via the org's installed Teams bot.\n * Requires `teams:write` capability (via ZERO_TOKEN).\n */\nconst teamsAdaptiveCardSchema = z\n .object({\n type: z.literal(\"AdaptiveCard\"),\n version: z.string().min(1),\n body: z.array(z.record(z.string(), z.unknown())).optional(),\n actions: z.array(z.record(z.string(), z.unknown())).optional(),\n })\n .passthrough();\n\nconst sendTeamsMessageBodySchema = z\n .object({\n conversationId: z.string().min(1, \"Conversation ID is required\").optional(),\n user: z.string().min(1, \"Teams user ID is required\").optional(),\n text: z.string().min(1, \"Message text is required\").optional(),\n activityId: z.string().min(1, \"Activity ID is required\").optional(),\n card: teamsAdaptiveCardSchema.optional(),\n })\n .refine(\n (body) => {\n return Boolean(body.conversationId) !== Boolean(body.user);\n },\n {\n message: \"Exactly one of conversationId or user is required\",\n path: [\"conversationId\"],\n },\n )\n .refine(\n (body) => {\n return Boolean(body.text) || Boolean(body.card);\n },\n {\n message: \"Message text or card is required\",\n path: [\"text\"],\n },\n )\n .refine(\n (body) => {\n return !(body.user && body.activityId);\n },\n {\n message: \"activityId can only be used with conversationId\",\n path: [\"activityId\"],\n },\n );\n\nexport type SendTeamsMessageBody = z.infer<typeof sendTeamsMessageBodySchema>;\n\nconst sendTeamsMessageResponseSchema = z.object({\n ok: z.literal(true),\n activityId: z.string().optional(),\n conversationId: z.string(),\n});\n\nexport type SendTeamsMessageResponse = z.infer<\n typeof sendTeamsMessageResponseSchema\n>;\n\nexport const integrationsTeamsMessageContract = c.router({\n sendMessage: {\n method: \"POST\",\n path: \"/api/zero/integrations/teams/message\",\n headers: authHeadersSchema,\n body: sendTeamsMessageBodySchema,\n responses: {\n 200: sendTeamsMessageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 502: apiErrorSchema,\n },\n summary: \"Send a Microsoft Teams message via org bot\",\n },\n});\n\nexport type IntegrationsTeamsMessageContract =\n typeof integrationsTeamsMessageContract;\n\n/**\n * Integration AgentPhone message contract\n * POST /api/zero/integrations/phone/message\n *\n * Sends an AgentPhone text message to the connected phone handle.\n * Requires `phone:write` capability (via ZERO_TOKEN).\n */\nconst sendPhoneMessageBodySchema = z.object({\n agentphoneAgentId: z\n .string()\n .min(1, \"AgentPhone agent ID is required\")\n .optional(),\n toNumber: z.string().min(1, \"Phone number is required\"),\n text: z.string().min(1, \"Message text is required\"),\n});\n\nexport type SendPhoneMessageBody = z.infer<typeof sendPhoneMessageBodySchema>;\n\nconst sendPhoneMessageResponseSchema = z.object({\n ok: z.literal(true),\n messageId: z.string(),\n channel: z.string().nullable(),\n toNumber: z.string(),\n});\n\nexport type SendPhoneMessageResponse = z.infer<\n typeof sendPhoneMessageResponseSchema\n>;\n\nexport const integrationsPhoneMessageContract = c.router({\n sendMessage: {\n method: \"POST\",\n path: \"/api/zero/integrations/phone/message\",\n headers: authHeadersSchema,\n body: sendPhoneMessageBodySchema,\n responses: {\n 200: sendPhoneMessageResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 502: apiErrorSchema,\n },\n summary: \"Send an AgentPhone message\",\n },\n});\n\nexport type IntegrationsPhoneMessageContract =\n typeof integrationsPhoneMessageContract;\n\nconst phoneDownloadFileQuerySchema = z.object({\n file_id: z.string().min(1, \"file_id query parameter is required\"),\n});\n\nexport const integrationsPhoneDownloadFileContract = c.router({\n download: {\n method: \"GET\",\n path: \"/api/zero/integrations/phone/download-file\",\n headers: authHeadersSchema,\n query: phoneDownloadFileQuerySchema,\n responses: {\n 200: c.type<Blob>(),\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 413: apiErrorSchema,\n 502: apiErrorSchema,\n },\n summary: \"Download an AgentPhone media attachment\",\n },\n});\n\nexport type IntegrationsPhoneDownloadFileContract =\n typeof integrationsPhoneDownloadFileContract;\n\n/**\n * Integration Telegram bot list contract\n * GET /api/zero/integrations/telegram/bots\n *\n * Lists Telegram bots available in the authenticated user's org.\n * Requires `telegram:read` capability (via ZERO_TOKEN).\n */\nconst telegramBotTokenStatusSchema = z.enum([\"valid\", \"invalid\", \"unknown\"]);\n\nconst telegramConnectedUserSchema = z.object({\n telegramUserId: z.string(),\n telegramUsername: z.string().nullable(),\n telegramDisplayName: z.string().nullable(),\n});\n\nconst telegramBotListItemSchema = z.object({\n id: z.string(),\n kind: z.enum([\"custom\", \"official\"]).optional(),\n username: z.string().nullable(),\n agent: z.object({ id: z.string(), name: z.string() }).nullable(),\n isOwner: z.boolean(),\n isConnected: z.boolean(),\n connectedUser: telegramConnectedUserSchema.nullable().optional(),\n tokenStatus: telegramBotTokenStatusSchema,\n official: z\n .object({\n configured: z.boolean(),\n usesDefaultAgent: z.boolean(),\n linkedTelegramUserId: z.string().nullable(),\n })\n .optional(),\n});\n\nconst listTelegramBotsResponseSchema = z.object({\n bots: z.array(telegramBotListItemSchema),\n});\n\nexport type TelegramBotListItem = z.infer<typeof telegramBotListItemSchema>;\nexport type ListTelegramBotsResponse = z.infer<\n typeof listTelegramBotsResponseSchema\n>;\n\nexport const integrationsTelegramBotListContract = c.router({\n listBots: {\n method: \"GET\",\n path: \"/api/zero/integrations/telegram/bots\",\n headers: authHeadersSchema,\n responses: {\n 200: listTelegramBotsResponseSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"List Telegram bots available in the authenticated user's org\",\n },\n});\n\nexport type IntegrationsTelegramBotListContract =\n typeof integrationsTelegramBotListContract;\n\n/**\n * Integration Slack file upload — init contract\n * POST /api/zero/integrations/slack/upload-file/init\n *\n * Requests a pre-signed upload URL from Slack via the org's bot token.\n * The CLI then uploads the file directly to that URL (no auth needed).\n * Requires `slack:write` capability (via ZERO_TOKEN).\n */\nconst slackUploadInitBodySchema = z.object({\n filename: z.string().min(1, \"Filename is required\"),\n length: z.number().int().positive(\"File length must be a positive integer\"),\n});\n\nexport type SlackUploadInitBody = z.infer<typeof slackUploadInitBodySchema>;\n\nconst slackUploadInitResponseSchema = z.object({\n uploadUrl: z.string(),\n fileId: z.string(),\n});\n\nexport type SlackUploadInitResponse = z.infer<\n typeof slackUploadInitResponseSchema\n>;\n\nexport const integrationsSlackUploadInitContract = c.router({\n init: {\n method: \"POST\",\n path: \"/api/zero/integrations/slack/upload-file/init\",\n headers: authHeadersSchema,\n body: slackUploadInitBodySchema,\n responses: {\n 200: slackUploadInitResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Get a pre-signed Slack upload URL via org bot token\",\n },\n});\n\n/**\n * Integration Telegram file upload — init contract\n * POST /api/zero/integrations/telegram/upload-file/init\n *\n * Requests a pre-signed upload URL for a temporary VM0-hosted file. The CLI\n * uploads the file body directly to R2, then the complete route asks Telegram\n * to fetch that file URL with the org-owned bot token.\n * Requires `telegram:write` capability (via ZERO_TOKEN).\n */\nconst telegramUploadInitBodySchema = z.object({\n filename: z.string().min(1, \"Filename is required\").max(255),\n contentType: z.string().min(1, \"Content type is required\").max(200),\n length: z.number().int().positive(\"File length must be a positive integer\"),\n});\n\nexport type TelegramUploadInitBody = z.infer<\n typeof telegramUploadInitBodySchema\n>;\n\nconst telegramUploadInitResponseSchema = z.object({\n uploadId: z.string().uuid(),\n uploadUrl: z.string(),\n fileUrl: z.string(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number().int().nonnegative(),\n});\n\nexport type TelegramUploadInitResponse = z.infer<\n typeof telegramUploadInitResponseSchema\n>;\n\nexport const integrationsTelegramUploadInitContract = c.router({\n init: {\n method: \"POST\",\n path: \"/api/zero/integrations/telegram/upload-file/init\",\n headers: authHeadersSchema,\n body: telegramUploadInitBodySchema,\n responses: {\n 200: telegramUploadInitResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Get a pre-signed upload URL for Telegram file delivery\",\n },\n});\n\n/**\n * Integration Microsoft Teams file upload — init contract\n * POST /api/zero/integrations/teams/upload-file/init\n *\n * Requests a pre-signed upload URL for a temporary VM0-hosted file. The CLI\n * uploads the file body directly to R2, then the complete route sends a Teams\n * message with the file attachment and public file URL.\n * Requires `teams:write` capability (via ZERO_TOKEN).\n */\nconst teamsUploadInitBodySchema = z.object({\n filename: z.string().min(1, \"Filename is required\").max(255),\n contentType: z.string().min(1, \"Content type is required\").max(200),\n length: z.number().int().positive(\"File length must be a positive integer\"),\n});\n\nexport type TeamsUploadInitBody = z.infer<typeof teamsUploadInitBodySchema>;\n\nconst teamsUploadInitResponseSchema = z.object({\n uploadId: z.string().uuid(),\n uploadUrl: z.string(),\n fileUrl: z.string(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number().int().nonnegative(),\n});\n\nexport type TeamsUploadInitResponse = z.infer<\n typeof teamsUploadInitResponseSchema\n>;\n\nexport const integrationsTeamsUploadInitContract = c.router({\n init: {\n method: \"POST\",\n path: \"/api/zero/integrations/teams/upload-file/init\",\n headers: authHeadersSchema,\n body: teamsUploadInitBodySchema,\n responses: {\n 200: teamsUploadInitResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Get a pre-signed upload URL for Microsoft Teams file delivery\",\n },\n});\n\n/**\n * Integration Telegram file upload — complete contract\n * POST /api/zero/integrations/telegram/upload-file/complete\n *\n * Sends an uploaded file URL to a Telegram chat via sendDocument using the\n * requested org-owned bot token.\n * Requires `telegram:write` capability (via ZERO_TOKEN).\n */\nconst telegramUploadCompleteBodySchema = z.object({\n uploadId: z.string().uuid(\"Upload ID must be a UUID\"),\n botId: z.string().min(1, \"Bot ID is required\"),\n chatId: z.string().min(1, \"Chat ID is required\"),\n contentType: z.string().min(1).max(200).optional(),\n caption: z.string().max(1024).optional(),\n messageThreadId: z.number().int().positive().optional(),\n});\n\nexport type TelegramUploadCompleteBody = z.infer<\n typeof telegramUploadCompleteBodySchema\n>;\n\nconst telegramUploadCompleteResponseSchema = z.object({\n messageId: z.number().int(),\n chatId: z.string(),\n fileId: z.string().optional(),\n filename: z.string(),\n mimetype: z.string(),\n size: z.number().int().nonnegative(),\n url: z.string(),\n});\n\nexport type TelegramUploadCompleteResponse = z.infer<\n typeof telegramUploadCompleteResponseSchema\n>;\n\nexport const integrationsTelegramUploadCompleteContract = c.router({\n complete: {\n method: \"POST\",\n path: \"/api/zero/integrations/telegram/upload-file/complete\",\n headers: authHeadersSchema,\n body: telegramUploadCompleteBodySchema,\n responses: {\n 200: telegramUploadCompleteResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 502: apiErrorSchema,\n },\n summary: \"Finalize Telegram file upload and send it to a chat\",\n },\n});\n\n/**\n * Integration Microsoft Teams file upload — complete contract\n * POST /api/zero/integrations/teams/upload-file/complete\n *\n * Sends an uploaded file URL to a Microsoft Teams conversation using the org's\n * installed Teams bot.\n * Requires `teams:write` capability (via ZERO_TOKEN).\n */\nconst teamsUploadCompleteBodySchema = z.object({\n uploadId: z.string().uuid(\"Upload ID must be a UUID\"),\n conversationId: z.string().min(1, \"Conversation ID is required\"),\n activityId: z.string().min(1, \"Activity ID is required\").optional(),\n contentType: z.string().min(1).max(200).optional(),\n text: z.string().max(4000).optional(),\n});\n\nexport type TeamsUploadCompleteBody = z.infer<\n typeof teamsUploadCompleteBodySchema\n>;\n\nconst teamsUploadCompleteResponseSchema = z.object({\n activityId: z.string().optional(),\n conversationId: z.string(),\n filename: z.string(),\n mimetype: z.string(),\n size: z.number().int().nonnegative(),\n url: z.string(),\n});\n\nexport type TeamsUploadCompleteResponse = z.infer<\n typeof teamsUploadCompleteResponseSchema\n>;\n\nexport const integrationsTeamsUploadCompleteContract = c.router({\n complete: {\n method: \"POST\",\n path: \"/api/zero/integrations/teams/upload-file/complete\",\n headers: authHeadersSchema,\n body: teamsUploadCompleteBodySchema,\n responses: {\n 200: teamsUploadCompleteResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 502: apiErrorSchema,\n },\n summary:\n \"Finalize Microsoft Teams file upload and send it to a conversation\",\n },\n});\n\n/**\n * Integration GitHub file upload — init contract\n * POST /api/zero/integrations/github/upload-file/init\n *\n * Requests a pre-signed upload URL for a temporary VM0-hosted file. The CLI\n * uploads the file body directly to R2, then the complete route posts the file\n * URL back to a GitHub issue or pull request comment.\n * Requires `github:write` capability (via ZERO_TOKEN).\n */\nconst githubUploadInitBodySchema = z.object({\n filename: z.string().min(1, \"Filename is required\").max(255),\n contentType: z.string().min(1, \"Content type is required\").max(200),\n length: z.number().int().positive(\"File length must be a positive integer\"),\n});\n\nexport type GithubUploadInitBody = z.infer<typeof githubUploadInitBodySchema>;\n\nconst githubUploadInitResponseSchema = z.object({\n uploadId: z.string().uuid(),\n uploadUrl: z.string(),\n fileUrl: z.string(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number().int().nonnegative(),\n});\n\nexport type GithubUploadInitResponse = z.infer<\n typeof githubUploadInitResponseSchema\n>;\n\nexport const integrationsGithubUploadInitContract = c.router({\n init: {\n method: \"POST\",\n path: \"/api/zero/integrations/github/upload-file/init\",\n headers: authHeadersSchema,\n body: githubUploadInitBodySchema,\n responses: {\n 200: githubUploadInitResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 500: apiErrorSchema,\n 502: apiErrorSchema,\n },\n summary: \"Get a pre-signed upload URL for GitHub file delivery\",\n },\n});\n\n/**\n * Integration GitHub file upload — complete contract\n * POST /api/zero/integrations/github/upload-file/complete\n *\n * Posts an uploaded file URL to a GitHub issue or pull request comment using\n * the organization GitHub App installation token.\n * Requires `github:write` capability (via ZERO_TOKEN).\n */\nconst githubUploadCompleteBodySchema = z.object({\n uploadId: z.string().uuid(\"Upload ID must be a UUID\"),\n repo: z\n .string()\n .min(1, \"Repository is required\")\n .regex(/^[^/\\s]+\\/[^/\\s]+$/, \"Repository must be owner/name\"),\n issueNumber: z\n .number()\n .int()\n .positive(\"Issue or pull request number must be positive\"),\n contentType: z.string().min(1).max(200).optional(),\n caption: z.string().max(65_536).optional(),\n});\n\nexport type GithubUploadCompleteBody = z.infer<\n typeof githubUploadCompleteBodySchema\n>;\n\nconst githubUploadCompleteResponseSchema = z.object({\n commentId: z.string(),\n repo: z.string(),\n issueNumber: z.number().int(),\n filename: z.string(),\n mimetype: z.string(),\n size: z.number().int().nonnegative(),\n url: z.string(),\n});\n\nexport type GithubUploadCompleteResponse = z.infer<\n typeof githubUploadCompleteResponseSchema\n>;\n\nexport const integrationsGithubUploadCompleteContract = c.router({\n complete: {\n method: \"POST\",\n path: \"/api/zero/integrations/github/upload-file/complete\",\n headers: authHeadersSchema,\n body: githubUploadCompleteBodySchema,\n responses: {\n 200: githubUploadCompleteResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 502: apiErrorSchema,\n 500: apiErrorSchema,\n },\n summary: \"Finalize GitHub file upload and post it to an issue or PR\",\n },\n});\n\n/**\n * Integration AgentPhone file upload — init contract\n * POST /api/zero/integrations/phone/upload-file/init\n *\n * Requests a pre-signed upload URL for a VM0-hosted file. The CLI uploads the\n * file body directly to R2, then complete sends the public file URL through\n * AgentPhone.\n * Requires `phone:write` capability (via ZERO_TOKEN).\n */\nconst phoneUploadInitBodySchema = z.object({\n filename: z.string().min(1, \"Filename is required\").max(255),\n contentType: z.string().min(1, \"Content type is required\").max(200),\n length: z.number().int().positive(\"File length must be a positive integer\"),\n});\n\nexport type PhoneUploadInitBody = z.infer<typeof phoneUploadInitBodySchema>;\n\nconst phoneUploadInitResponseSchema = z.object({\n uploadId: z.string().uuid(),\n uploadUrl: z.string(),\n fileUrl: z.string(),\n filename: z.string(),\n contentType: z.string(),\n size: z.number().int().nonnegative(),\n});\n\nexport type PhoneUploadInitResponse = z.infer<\n typeof phoneUploadInitResponseSchema\n>;\n\nexport const integrationsPhoneUploadInitContract = c.router({\n init: {\n method: \"POST\",\n path: \"/api/zero/integrations/phone/upload-file/init\",\n headers: authHeadersSchema,\n body: phoneUploadInitBodySchema,\n responses: {\n 200: phoneUploadInitResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n },\n summary: \"Get a pre-signed upload URL for AgentPhone file delivery\",\n },\n});\n\n/**\n * Integration AgentPhone file upload — complete contract\n * POST /api/zero/integrations/phone/upload-file/complete\n *\n * Sends an uploaded file URL to a connected phone handle through AgentPhone.\n * Requires `phone:write` capability (via ZERO_TOKEN).\n */\nconst phoneUploadCompleteBodySchema = z.object({\n uploadId: z.string().uuid(\"Upload ID must be a UUID\"),\n agentphoneAgentId: z\n .string()\n .min(1, \"AgentPhone agent ID is required\")\n .optional(),\n toNumber: z.string().min(1, \"Phone number is required\"),\n contentType: z.string().min(1).max(200).optional(),\n caption: z.string().max(1024).optional(),\n});\n\nexport type PhoneUploadCompleteBody = z.infer<\n typeof phoneUploadCompleteBodySchema\n>;\n\nconst phoneUploadCompleteResponseSchema = z.object({\n messageId: z.string(),\n channel: z.string().nullable(),\n toNumber: z.string(),\n filename: z.string(),\n mimetype: z.string(),\n size: z.number().int().nonnegative(),\n url: z.string(),\n});\n\nexport type PhoneUploadCompleteResponse = z.infer<\n typeof phoneUploadCompleteResponseSchema\n>;\n\nexport const integrationsPhoneUploadCompleteContract = c.router({\n complete: {\n method: \"POST\",\n path: \"/api/zero/integrations/phone/upload-file/complete\",\n headers: authHeadersSchema,\n body: phoneUploadCompleteBodySchema,\n responses: {\n 200: phoneUploadCompleteResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n 502: apiErrorSchema,\n },\n summary: \"Finalize AgentPhone file upload and send it to a phone handle\",\n },\n});\n\n/**\n * Integration Slack file upload — complete contract\n * POST /api/zero/integrations/slack/upload-file/complete\n *\n * Finalizes a Slack file upload and shares it to a channel/thread.\n * Requires `slack:write` capability (via ZERO_TOKEN).\n */\nconst slackUploadCompleteBodySchema = z.object({\n fileId: z.string().min(1, \"File ID is required\"),\n channel: z.string().min(1, \"Channel ID is required\"),\n threadTs: z.string().optional(),\n title: z.string().optional(),\n initialComment: z.string().optional(),\n});\n\nexport type SlackUploadCompleteBody = z.infer<\n typeof slackUploadCompleteBodySchema\n>;\n\nconst slackUploadCompleteResponseSchema = z.object({\n fileId: z.string(),\n permalink: z.string(),\n});\n\nexport type SlackUploadCompleteResponse = z.infer<\n typeof slackUploadCompleteResponseSchema\n>;\n\nexport const integrationsSlackUploadCompleteContract = c.router({\n complete: {\n method: \"POST\",\n path: \"/api/zero/integrations/slack/upload-file/complete\",\n headers: authHeadersSchema,\n body: slackUploadCompleteBodySchema,\n responses: {\n 200: slackUploadCompleteResponseSchema,\n 400: apiErrorSchema,\n 401: apiErrorSchema,\n 403: apiErrorSchema,\n 404: apiErrorSchema,\n },\n summary: \"Finalize Slack file upload and share to channel\",\n },\n});\n","import { createWriteStream } from \"node:fs\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n integrationsTelegramBotListContract,\n integrationsTelegramMessageContract,\n integrationsTelegramUploadCompleteContract,\n integrationsTelegramUploadInitContract,\n type ListTelegramBotsResponse,\n type SendTelegramMessageBody,\n type SendTelegramMessageResponse,\n type TelegramUploadCompleteBody,\n type TelegramUploadCompleteResponse,\n type TelegramUploadInitBody,\n type TelegramUploadInitResponse,\n} from \"@vm0/api-contracts/contracts/integrations\";\nimport {\n ApiRequestError,\n getBaseUrl,\n getClientConfig,\n handleError,\n} from \"../core/client-factory\";\nimport { getActiveToken } from \"../config\";\nimport { headersWithCliClientHeaders } from \"../client-headers\";\n\ninterface DownloadTelegramFileResult {\n path: string;\n mimetype: string;\n size: number;\n}\n\nexport async function listTelegramBots(): Promise<ListTelegramBotsResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsTelegramBotListContract, config);\n\n const result = await client.listBots({ headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to list Telegram bots\");\n}\n\nexport async function sendTelegramMessage(\n body: SendTelegramMessageBody,\n): Promise<SendTelegramMessageResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsTelegramMessageContract, config);\n\n const result = await client.sendMessage({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to send Telegram message\");\n}\n\nexport async function initTelegramFileUpload(\n body: TelegramUploadInitBody,\n): Promise<TelegramUploadInitResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsTelegramUploadInitContract, config);\n\n const result = await client.init({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to initialize Telegram file upload\");\n}\n\nexport async function completeTelegramFileUpload(\n body: TelegramUploadCompleteBody,\n): Promise<TelegramUploadCompleteResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsTelegramUploadCompleteContract, config);\n\n const result = await client.complete({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to complete Telegram file upload\");\n}\n\n/**\n * Download a Telegram file to a local path, streaming the response body to disk.\n * Uses the bot token on the server side; the CLI authenticates via ZERO_TOKEN.\n */\nexport async function downloadTelegramFile(\n fileId: string,\n botId: string,\n outPath: string,\n): Promise<DownloadTelegramFileResult> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const url = new URL(\"/api/zero/integrations/telegram/download-file\", baseUrl);\n url.searchParams.set(\"file_id\", fileId);\n url.searchParams.set(\"bot_id\", botId);\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n\n const response = await fetch(url, {\n headers: headersWithCliClientHeaders(headers),\n });\n\n if (!response.ok) {\n let message = `Failed to download Telegram file (HTTP ${response.status})`;\n let code = \"UNKNOWN\";\n try {\n const body = (await response.json()) as {\n error?: { message?: string; code?: string };\n };\n if (body.error?.message) message = body.error.message;\n if (body.error?.code) code = body.error.code;\n } catch {\n // keep generic message when the body is not JSON\n }\n throw new ApiRequestError(message, code, response.status);\n }\n\n if (!response.body) {\n throw new ApiRequestError(\n \"Telegram download response has no body\",\n \"EMPTY_BODY\",\n 502,\n );\n }\n\n const mimetype =\n response.headers.get(\"x-file-mimetype\") ??\n response.headers.get(\"content-type\") ??\n \"application/octet-stream\";\n\n await pipeline(\n Readable.fromWeb(response.body as never),\n createWriteStream(outPath),\n );\n\n const contentLengthHeader = response.headers.get(\"content-length\");\n const size = contentLengthHeader ? Number(contentLengthHeader) : 0;\n\n return { path: outPath, mimetype, size };\n}\n","import { createWriteStream } from \"node:fs\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n integrationsTeamsMessageContract,\n integrationsTeamsUploadCompleteContract,\n integrationsTeamsUploadInitContract,\n type SendTeamsMessageBody,\n type SendTeamsMessageResponse,\n type TeamsUploadCompleteBody,\n type TeamsUploadCompleteResponse,\n type TeamsUploadInitBody,\n type TeamsUploadInitResponse,\n} from \"@vm0/api-contracts/contracts/integrations\";\nimport {\n ApiRequestError,\n getBaseUrl,\n getClientConfig,\n handleError,\n} from \"../core/client-factory\";\nimport { getActiveToken } from \"../config\";\nimport { headersWithCliClientHeaders } from \"../client-headers\";\n\nexport async function sendTeamsMessage(\n body: SendTeamsMessageBody,\n): Promise<SendTeamsMessageResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsTeamsMessageContract, config);\n\n const result = await client.sendMessage({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to send Microsoft Teams message\");\n}\n\nexport async function initTeamsFileUpload(\n body: TeamsUploadInitBody,\n): Promise<TeamsUploadInitResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsTeamsUploadInitContract, config);\n\n const result = await client.init({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to initialize Microsoft Teams file upload\");\n}\n\nexport async function completeTeamsFileUpload(\n body: TeamsUploadCompleteBody,\n): Promise<TeamsUploadCompleteResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsTeamsUploadCompleteContract, config);\n\n const result = await client.complete({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to complete Microsoft Teams file upload\");\n}\n\ninterface DownloadTeamsFileResult {\n path: string;\n mimetype: string;\n size: number;\n}\n\nexport async function downloadTeamsFile(\n fileId: string,\n outPath: string,\n): Promise<DownloadTeamsFileResult> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const url = new URL(\"/api/zero/integrations/teams/download-file\", baseUrl);\n url.searchParams.set(\"file_id\", fileId);\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n\n const response = await fetch(url, {\n headers: headersWithCliClientHeaders(headers),\n });\n\n if (!response.ok) {\n let message = `Failed to download Microsoft Teams file (HTTP ${response.status})`;\n let code = \"UNKNOWN\";\n try {\n const body = (await response.json()) as {\n error?: { message?: string; code?: string };\n };\n if (body.error?.message) message = body.error.message;\n if (body.error?.code) code = body.error.code;\n } catch {\n // Keep the generic HTTP message when the server returned non-JSON.\n }\n throw new ApiRequestError(message, code, response.status);\n }\n\n if (!response.body) {\n throw new ApiRequestError(\n \"Microsoft Teams download response has no body\",\n \"EMPTY_BODY\",\n 502,\n );\n }\n\n const mimetype =\n response.headers.get(\"x-file-mimetype\") ??\n response.headers.get(\"content-type\") ??\n \"application/octet-stream\";\n\n await pipeline(\n Readable.fromWeb(response.body as never),\n createWriteStream(outPath),\n );\n\n const contentLengthHeader = response.headers.get(\"content-length\");\n const size = contentLengthHeader ? Number(contentLengthHeader) : 0;\n\n return { path: outPath, mimetype, size };\n}\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n integrationsFeishuMessageContract,\n type SendFeishuMessageBody,\n type SendFeishuMessageResponse,\n} from \"@vm0/api-contracts/contracts/integrations\";\n\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport async function sendFeishuMessage(\n body: SendFeishuMessageBody,\n): Promise<SendFeishuMessageResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsFeishuMessageContract, config);\n const result = await client.sendMessage({ body, headers: {} });\n if (result.status === 200) {\n return result.body;\n }\n handleError(result, \"Failed to send Feishu message\");\n}\n","import { createWriteStream } from \"node:fs\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n integrationsGithubUploadCompleteContract,\n integrationsGithubUploadInitContract,\n type GithubUploadCompleteBody,\n type GithubUploadCompleteResponse,\n type GithubUploadInitBody,\n type GithubUploadInitResponse,\n} from \"@vm0/api-contracts/contracts/integrations\";\nimport {\n ApiRequestError,\n getBaseUrl,\n getClientConfig,\n handleError,\n} from \"../core/client-factory\";\nimport { getActiveToken } from \"../config\";\nimport { headersWithCliClientHeaders } from \"../client-headers\";\n\ninterface DownloadGithubFileResult {\n path: string;\n mimetype: string;\n size: number;\n}\n\nexport async function initGithubFileUpload(\n body: GithubUploadInitBody,\n): Promise<GithubUploadInitResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsGithubUploadInitContract, config);\n\n const result = await client.init({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to initialize GitHub file upload\");\n}\n\nexport async function completeGithubFileUpload(\n body: GithubUploadCompleteBody,\n): Promise<GithubUploadCompleteResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsGithubUploadCompleteContract, config);\n\n const result = await client.complete({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to complete GitHub file upload\");\n}\n\nexport async function downloadGithubFile(\n fileUrl: string,\n outPath: string,\n filename?: string,\n): Promise<DownloadGithubFileResult> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const url = new URL(\"/api/zero/integrations/github/download-file\", baseUrl);\n url.searchParams.set(\"url\", fileUrl);\n if (filename) {\n url.searchParams.set(\"filename\", filename);\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n\n const response = await fetch(url, {\n headers: headersWithCliClientHeaders(headers),\n });\n\n if (!response.ok) {\n let message = `Failed to download GitHub file (HTTP ${response.status})`;\n let code = \"UNKNOWN\";\n try {\n const body = (await response.json()) as {\n error?: { message?: string; code?: string };\n };\n if (body.error?.message) message = body.error.message;\n if (body.error?.code) code = body.error.code;\n } catch {\n // keep generic message when the body is not JSON\n }\n throw new ApiRequestError(message, code, response.status);\n }\n\n if (!response.body) {\n throw new ApiRequestError(\n \"GitHub download response has no body\",\n \"EMPTY_BODY\",\n 502,\n );\n }\n\n const mimetype =\n response.headers.get(\"x-file-mimetype\") ??\n response.headers.get(\"content-type\") ??\n \"application/octet-stream\";\n\n await pipeline(\n Readable.fromWeb(response.body as never),\n createWriteStream(outPath),\n );\n\n const contentLengthHeader = response.headers.get(\"content-length\");\n const size = contentLengthHeader ? Number(contentLengthHeader) : 0;\n\n return { path: outPath, mimetype, size };\n}\n","import { createWriteStream } from \"node:fs\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n integrationsPhoneMessageContract,\n integrationsPhoneUploadCompleteContract,\n integrationsPhoneUploadInitContract,\n type PhoneUploadCompleteBody,\n type PhoneUploadCompleteResponse,\n type PhoneUploadInitBody,\n type PhoneUploadInitResponse,\n type SendPhoneMessageBody,\n type SendPhoneMessageResponse,\n} from \"@vm0/api-contracts/contracts/integrations\";\nimport {\n ApiRequestError,\n getBaseUrl,\n getClientConfig,\n handleError,\n} from \"../core/client-factory\";\nimport { getActiveToken } from \"../config\";\nimport { headersWithCliClientHeaders } from \"../client-headers\";\n\ninterface DownloadPhoneFileResult {\n path: string;\n mimetype: string;\n size: number;\n}\n\nexport async function sendPhoneMessage(\n body: SendPhoneMessageBody,\n): Promise<SendPhoneMessageResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsPhoneMessageContract, config);\n\n const result = await client.sendMessage({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to send AgentPhone message\");\n}\n\nexport async function initPhoneFileUpload(\n body: PhoneUploadInitBody,\n): Promise<PhoneUploadInitResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsPhoneUploadInitContract, config);\n\n const result = await client.init({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to initialize AgentPhone file upload\");\n}\n\nexport async function completePhoneFileUpload(\n body: PhoneUploadCompleteBody,\n): Promise<PhoneUploadCompleteResponse> {\n const config = await getClientConfig();\n const client = initClient(integrationsPhoneUploadCompleteContract, config);\n\n const result = await client.complete({ body, headers: {} });\n\n if (result.status === 200) {\n return result.body;\n }\n\n handleError(result, \"Failed to complete AgentPhone file upload\");\n}\n\n/**\n * Download an AgentPhone media attachment to a local path.\n */\nexport async function downloadPhoneFile(\n fileId: string,\n outPath: string,\n): Promise<DownloadPhoneFileResult> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n\n const url = new URL(\"/api/zero/integrations/phone/download-file\", baseUrl);\n url.searchParams.set(\"file_id\", fileId);\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n };\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n\n const response = await fetch(url, {\n headers: headersWithCliClientHeaders(headers),\n });\n\n if (!response.ok) {\n let message = `Failed to download AgentPhone file (HTTP ${response.status})`;\n let code = \"UNKNOWN\";\n try {\n const body = (await response.json()) as {\n error?: { message?: string; code?: string };\n };\n if (body.error?.message) message = body.error.message;\n if (body.error?.code) code = body.error.code;\n } catch {\n // keep generic message when the body is not JSON\n }\n throw new ApiRequestError(message, code, response.status);\n }\n\n if (!response.body) {\n throw new ApiRequestError(\n \"AgentPhone download response has no body\",\n \"EMPTY_BODY\",\n 502,\n );\n }\n\n const mimetype =\n response.headers.get(\"x-file-mimetype\") ??\n response.headers.get(\"content-type\") ??\n \"application/octet-stream\";\n\n await pipeline(\n Readable.fromWeb(response.body as never),\n createWriteStream(outPath),\n );\n\n const contentLengthHeader = response.headers.get(\"content-length\");\n const size = contentLengthHeader ? Number(contentLengthHeader) : 0;\n\n return { path: outPath, mimetype, size };\n}\n","import { initClient } from \"@vm0/api-contracts/contracts/trpc-contract\";\nimport {\n logsListContract,\n type LogsListResponse,\n type LogStatus,\n} from \"@vm0/api-contracts/contracts/logs\";\nimport { type LogsSearchResponse } from \"@vm0/api-contracts/contracts/runs\";\nimport { zeroLogsSearchContract } from \"@vm0/api-contracts/contracts/zero-runs\";\nimport { getClientConfig, handleError } from \"../core/client-factory\";\n\nexport async function listZeroLogs(options?: {\n agentId?: string;\n status?: string;\n since?: number;\n limit?: number;\n cursor?: string;\n}): Promise<LogsListResponse> {\n const config = await getClientConfig();\n const client = initClient(logsListContract, config);\n const result = await client.list({\n query: {\n agentId: options?.agentId,\n status: options?.status as LogStatus | undefined,\n since: options?.since,\n limit: options?.limit,\n cursor: options?.cursor,\n },\n });\n if (result.status === 200) return result.body;\n handleError(result, \"Failed to list zero logs\");\n}\n\nexport async function searchZeroLogs(options: {\n keyword: string;\n agentId?: string;\n runId?: string;\n since?: number;\n limit?: number;\n before?: number;\n after?: number;\n}): Promise<LogsSearchResponse> {\n const config = await getClientConfig();\n const client = initClient(zeroLogsSearchContract, config);\n const result = await client.searchLogs({\n query: {\n keyword: options.keyword,\n agentId: options.agentId,\n runId: options.runId,\n since: options.since,\n limit: options.limit,\n before: options.before,\n after: options.after,\n },\n });\n if (result.status === 200) return result.body;\n handleError(result, \"Failed to search zero logs\");\n}\n","import type {\n HostedSitePrepareRequest,\n HostedSitePrepareResponse,\n HostedSiteCompleteResponse,\n HostedSiteDeploymentsResponse,\n HostedSiteFilesResponse,\n} from \"@vm0/api-contracts/contracts/zero-host\";\nimport { ApiRequestError, getBaseUrl } from \"../core/client-factory\";\nimport { getActiveToken } from \"../config\";\nimport { headersWithCliClientHeaders } from \"../client-headers\";\n\nfunction authHeaders(\n token: string,\n options: { readonly json?: boolean } = {},\n): Record<string, string> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${token}`,\n };\n if (options.json) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;\n if (bypassSecret) {\n headers[\"x-vercel-protection-bypass\"] = bypassSecret;\n }\n return headers;\n}\n\nasync function parseErrorBody(\n response: Response,\n fallback: string,\n): Promise<{ message: string; code: string }> {\n let message = `${fallback} (HTTP ${response.status})`;\n let code = \"UNKNOWN\";\n try {\n const body = (await response.json()) as {\n error?: { message?: string; code?: string };\n };\n if (body.error?.message) message = body.error.message;\n if (body.error?.code) code = body.error.code;\n } catch {\n // keep fallback\n }\n return { message, code };\n}\n\nasync function getAuthContext(): Promise<{\n readonly baseUrl: string;\n readonly token: string;\n}> {\n const baseUrl = await getBaseUrl();\n const token = await getActiveToken();\n if (!token) {\n throw new ApiRequestError(\"Not authenticated\", \"UNAUTHORIZED\", 401);\n }\n return { baseUrl, token };\n}\n\nexport async function prepareHostedSite(\n body: HostedSitePrepareRequest,\n): Promise<HostedSitePrepareResponse> {\n const { baseUrl, token } = await getAuthContext();\n const response = await fetch(\n new URL(\"/api/zero/host/deployments/prepare\", baseUrl),\n {\n method: \"POST\",\n headers: headersWithCliClientHeaders(authHeaders(token, { json: true })),\n body: JSON.stringify(body),\n },\n );\n if (!response.ok) {\n const { message, code } = await parseErrorBody(\n response,\n \"Failed to prepare hosted-site deployment\",\n );\n throw new ApiRequestError(message, code, response.status);\n }\n return (await response.json()) as HostedSitePrepareResponse;\n}\n\nexport async function completeHostedSite(\n deploymentId: string,\n): Promise<HostedSiteCompleteResponse> {\n const { baseUrl, token } = await getAuthContext();\n const response = await fetch(\n new URL(\n `/api/zero/host/deployments/${encodeURIComponent(deploymentId)}/complete`,\n baseUrl,\n ),\n {\n method: \"POST\",\n headers: headersWithCliClientHeaders(authHeaders(token, { json: true })),\n body: JSON.stringify({}),\n },\n );\n if (!response.ok) {\n const { message, code } = await parseErrorBody(\n response,\n \"Failed to complete hosted-site deployment\",\n );\n throw new ApiRequestError(message, code, response.status);\n }\n return (await response.json()) as HostedSiteCompleteResponse;\n}\n\nexport async function getHostedSiteFiles(\n publicSlug: string,\n version?: number,\n): Promise<HostedSiteFilesResponse> {\n const { baseUrl, token } = await getAuthContext();\n const url = new URL(\n `/api/zero/host/sites/${encodeURIComponent(publicSlug)}/files`,\n baseUrl,\n );\n if (version !== undefined) {\n url.searchParams.set(\"version\", String(version));\n }\n const response = await fetch(url, {\n method: \"GET\",\n headers: headersWithCliClientHeaders(authHeaders(token)),\n });\n if (!response.ok) {\n const { message, code } = await parseErrorBody(\n response,\n \"Failed to get hosted-site files\",\n );\n throw new ApiRequestError(message, code, response.status);\n }\n return (await response.json()) as HostedSiteFilesResponse;\n}\n\nexport async function getHostedSiteDeployments(\n site: string,\n): Promise<HostedSiteDeploymentsResponse> {\n const { baseUrl, token } = await getAuthContext();\n const response = await fetch(\n new URL(\n `/api/zero/host/sites/${encodeURIComponent(site)}/deployments`,\n baseUrl,\n ),\n {\n method: \"GET\",\n headers: headersWithCliClientHeaders(authHeaders(token)),\n },\n );\n if (!response.ok) {\n const { message, code } = await parseErrorBody(\n response,\n \"Failed to list hosted-site deployments\",\n );\n throw new ApiRequestError(message, code, response.status);\n }\n return (await response.json()) as HostedSiteDeploymentsResponse;\n}\n"],"mappings":"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AC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,IAAI,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,SAAI,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,GAAE,IAAI,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,GAAE,OAAI,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,SAAI,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,GAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,GAAE,SAAI,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,GAAE,IAAI,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,GAAE,IAAI,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,GAAE,IAAI,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,GAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,GAAG,GAAE,CAAC,KAAI,GAAE,GAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,GAAG,GAAE,CAAC,KAAI,GAAE,GAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,SAAI,GAAE,CAAC,KAAI,GAAE,SAAI,GAAE,CAAC,KAAI,GAAE,SAAI,GAAE,CAAC,KAAI,GAAE,SAAI,GAAE,CAAC,KAAI,GAAE,SAAI,GAAE,CAAC,KAAI,GAAE,SAAI,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,GAAG,GAAE,CAAC,KAAI,GAAE,GAAG,GAAE,CAAC,KAAI,GAAE,GAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,cAAI,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,SAAI,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,GAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,SAAI,GAAE,CAAC,KAAI,GAAE,eAAK,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,MAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,CAAC,KAAI,GAAG,GAAE,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAI,GAAE,QAAG,GAAE,CAAC,KAAI,CAAC,GAAE,CAAC,KAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,oBAAK,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,oBAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,GAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,MAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,MAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,SAAI,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,MAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,KAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,SAAI,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,SAAI,GAAE,CAAC,MAAK,GAAE,SAAI,GAAE,CAAC,MAAK,GAAE,eAAK,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,eAAK,GAAE,CAAC,MAAK,GAAE,eAAK,GAAE,CAAC,MAAK,GAAE,eAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,eAAK,GAAE,CAAC,MAAK,GAAE,eAAK,GAAE,CAAC,MAAK,GAAE,eAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,eAAK,GAAE,CAAC,MAAK,GAAE,eAAK,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,SAAI,GAAE,CAAC,MAAK,GAAE,SAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,GAAE,GAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,GAAE,EAAE,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,SAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,oBAAK,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,cAAI,GAAE,CAAC,MAAK,GAAE,oBAAK,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,SAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,0BAAM,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,OAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,OAAI,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,GAAE,GAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,GAAE,GAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,GAAE,GAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,MAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CAAC,MAAK,GAAE,QAAG,GAAE,CA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CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,IAAI,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,MAAM,GAAE,CAAC,MAAK,GAAE,MAAM,GAAE,CAAC,MAAK,GAAE,MAAM,GAAE,CAAC,MAAK,GAAE,MAAM,GAAE,CAAC,MAAK,GAAE,MAAM,GAAE,CAAC,MAAK,GAAE,MAAM,GAAE,CAAC,MAAK,GAAE,MAAM,GAAE,CAAC,MAAK,GAAE,MAAM,GAAE,CAAC,MAAK,GAAE,MAAM,GAAE,CAAC,MAAK,GAAE,MAAM,GAAE,CAAC,MAAK,GAAE,MAAM,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,KAAK,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,MAAK,GAAE,GAAG,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,MAAK,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,IAAI,GAAE,CAAC,GAAE,CAAC,CAAC,MAAK,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,KAAK,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,gBAAM,GAAE,CAAC,OAAM,GAAE,gBAAM,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,KAAK,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,MAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,KAAK,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,KAAK,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,sCAAQ,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,gCAAO,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAA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AM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,KAAK,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,KAAK,GAAE,CAAC,OAAM,GAAE,KAAK,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,KAAK,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,UAAK,GAAE,CAAC,OAAM,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,MAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,MAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,KAAK,GAAE,CAAC,OAAM,GAAE,KAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,IAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,eAAK,GAAE,CAAC,OAAM,GAAE,eAAK,GAAE,CAAC,OAAM,GAAE,eAAK,GAAE,CAAC,OAAM,GAAE,eAAK,GAAE,CAAC,OAAM,GAAE,eAAK,GAAE,CAAC,OAAM,GAAE,eAAK,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,GAAE,oBAAK,GAAE,CAAC,OAAM,GAAE,+FAAoB,GAAE,CAAC,OAAM,GAAE,6CAAU,GAAE,CAAC,OAAM,GAAE,0BAAM,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,SAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,cAAI,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,GAAE,cAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAI,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,IAAI,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,MAAG,GAAE,CAAC,OAAM,GAAE,MAAG,GAAE,CAAC,OAAM,GAAE,MAAG,GAAE,CAAC,OAAM,GAAE,SAAI,GAAE,CAAC,OAAM,GAAE,MAAG,GAAE,CAAC,OAAM,GAAE,MAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,MAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,MAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,MAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,GAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,QAAG,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,OAAM,GAAE,WAAI,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,OAAM,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,KAAK,GAAE,CAAC,GAAE,CAAC,CAAC,OAAM,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,OAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,oBAAM,GAAE,CAAC,QAAO,GAAE,oBAAM,GAAE,CAAC,QAAO,GAAE,6BAAQ,GAAE,CAAC,QAAO,GAAE,6BAAQ,GAAE,CAAC,QAAO,GAAE,6BAAQ,GAAE,CAAC,QAAO,GAAE,6BAAQ,GAAE,CAAC,QAAO,GAAE,6BAAQ,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,oBAAM,GAAE,CAAC,QAAO,GAAE,oBAAM,GAAE,CAAC,QAAO,GAAE,6BAAQ,GAAE,CAAC,QAAO,GAAE,6BAAQ,GAAE,CAAC,QAAO,GAAE,6BAAQ,GAAE,CAAC,QAAO,GAAE,6BAAQ,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,MAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,eAAK,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,KAAK,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,IAAI,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,cAAI,GAAE,CAAC,QAAO,GAAE,cAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,oBAAK,GAAE,CAAC,QAAO,GAAE,oBAAK,GAAE,CAAC,QAAO,GAAE,oBAAK,GAAE,CAAC,QAAO,GAAE,oBAAK,GAAE,CAAC,QAAO,GAAE,oBAAK,GAAE,CAAC,QAAO,GAAE,oBAAK,GAAE,CAAC,QAAO,GAAE,oBAAK,GAAE,CAAC,QAAO,GAAE,oBAAK,GAAE,CAAC,QAAO,GAAE,oBAAK,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,OAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,QAAO,GAAE,GAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,OAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,QAAG,GAAE,CAAC,QAAO,GAAE,WAAI,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,QAAO,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,OAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,MAAM,GAAE,CAAC,GAAE,CAAC,CAAC,QAAO,OAAO,GAAE,CAAC,GAAE,CAAC,CAAC,SAAQ,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","names":["punycode","error","toASCII","toUnicode","c","c","c","c","c","c","c","c","c","c","c","c","c","rejectBlankQueryNumber","order","c","c","c","c","c","c","c","c","c","c","c","c","c","c","c","firewallAwsSigv4AuthSchema","c","c","c","c","isRecord","authenticatedJsonHeaders","isRecord","parseErrorBody","c","c","c","authenticatedJsonHeaders","isRecord","parseErrorBody","c","c","c","c","c","createWriteStream","Readable","pipeline","pipeline","Readable","createWriteStream","createWriteStream","Readable","pipeline","pipeline","Readable","createWriteStream","createWriteStream","Readable","pipeline","pipeline","Readable","createWriteStream","createWriteStream","Readable","pipeline","pipeline","Readable","createWriteStream","parseErrorBody"]}