@cloudbase/ai 4.0.0 → 4.0.1-alpha.1

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 (83) hide show
  1. package/.eslintrc.js +1 -0
  2. package/CHANGELOG.md +1164 -0
  3. package/dist/cjs/AI.d.ts +6 -3
  4. package/dist/cjs/AI.js +67 -24
  5. package/dist/cjs/bot/index.js +1 -1
  6. package/dist/cjs/errors.d.ts +10 -0
  7. package/dist/cjs/errors.js +38 -0
  8. package/dist/cjs/index.d.ts +7 -3
  9. package/dist/cjs/index.js +22 -8
  10. package/dist/cjs/models/Ark/index.js +1 -1
  11. package/dist/cjs/models/DashScope/index.js +1 -1
  12. package/dist/cjs/models/DeepSeek/index.js +1 -1
  13. package/dist/cjs/models/Default/index.js +1 -1
  14. package/dist/cjs/models/HunYuan/index.js +1 -1
  15. package/dist/cjs/models/HunYuan/util.js +1 -1
  16. package/dist/cjs/models/HunYuanBeta/index.js +1 -1
  17. package/dist/cjs/models/HunYuanExp/index.js +1 -1
  18. package/dist/cjs/models/HunYuanOpen/index.js +1 -1
  19. package/dist/cjs/models/Moonshot/index.js +1 -1
  20. package/dist/cjs/models/Yi/index.js +1 -1
  21. package/dist/cjs/models/ZhiPu/index.js +1 -1
  22. package/dist/cjs/models/image-model.d.ts +19 -0
  23. package/dist/cjs/models/image-model.js +106 -0
  24. package/dist/cjs/models/index.d.ts +2 -1
  25. package/dist/cjs/models/index.js +4 -2
  26. package/dist/cjs/models/model.js +1 -1
  27. package/dist/cjs/type.d.ts +81 -0
  28. package/dist/cjs/type.js +1 -1
  29. package/dist/cjs/utils.d.ts +1 -1
  30. package/dist/cjs/utils.js +9 -4
  31. package/dist/esm/AI.d.ts +6 -3
  32. package/dist/esm/AI.js +67 -24
  33. package/dist/esm/bot/index.js +1 -1
  34. package/dist/esm/errors.d.ts +10 -0
  35. package/dist/esm/errors.js +35 -0
  36. package/dist/esm/index.d.ts +7 -3
  37. package/dist/esm/index.js +21 -8
  38. package/dist/esm/models/Ark/index.js +1 -1
  39. package/dist/esm/models/DashScope/index.js +1 -1
  40. package/dist/esm/models/DeepSeek/index.js +1 -1
  41. package/dist/esm/models/Default/index.js +1 -1
  42. package/dist/esm/models/HunYuan/index.js +1 -1
  43. package/dist/esm/models/HunYuan/util.js +1 -1
  44. package/dist/esm/models/HunYuanBeta/index.js +1 -1
  45. package/dist/esm/models/HunYuanExp/index.js +1 -1
  46. package/dist/esm/models/HunYuanOpen/index.js +1 -1
  47. package/dist/esm/models/Moonshot/index.js +1 -1
  48. package/dist/esm/models/Yi/index.js +1 -1
  49. package/dist/esm/models/ZhiPu/index.js +1 -1
  50. package/dist/esm/models/image-model.d.ts +19 -0
  51. package/dist/esm/models/image-model.js +103 -0
  52. package/dist/esm/models/index.d.ts +2 -1
  53. package/dist/esm/models/index.js +3 -2
  54. package/dist/esm/models/model.js +1 -1
  55. package/dist/esm/type.d.ts +81 -0
  56. package/dist/esm/type.js +1 -1
  57. package/dist/esm/utils.d.ts +1 -1
  58. package/dist/esm/utils.js +9 -4
  59. package/dist/miniprogram/index.js +1 -1
  60. package/dist/miniprogram/index.js.LICENSE.txt +2 -2
  61. package/package.json +4 -4
  62. package/src/AI.ts +64 -17
  63. package/src/bot/index.ts +2 -0
  64. package/src/errors.ts +23 -0
  65. package/src/index.ts +27 -7
  66. package/src/models/Ark/index.ts +2 -0
  67. package/src/models/DashScope/index.ts +2 -0
  68. package/src/models/DeepSeek/index.ts +2 -0
  69. package/src/models/Default/index.ts +2 -0
  70. package/src/models/HunYuan/index.ts +2 -0
  71. package/src/models/HunYuan/util.ts +2 -0
  72. package/src/models/HunYuanBeta/index.ts +2 -0
  73. package/src/models/HunYuanExp/index.ts +2 -0
  74. package/src/models/HunYuanOpen/index.ts +2 -0
  75. package/src/models/Moonshot/index.ts +3 -0
  76. package/src/models/Yi/index.ts +2 -0
  77. package/src/models/ZhiPu/index.ts +2 -0
  78. package/src/models/image-model.ts +100 -0
  79. package/src/models/index.ts +2 -0
  80. package/src/models/model.ts +2 -0
  81. package/src/type.ts +216 -1
  82. package/src/utils.ts +21 -4
  83. package/tsconfig.json +1 -1
@@ -478,4 +478,4 @@ function addToUsage(targetUsage, sourceUsage) {
478
478
  targetUsage.prompt_tokens += sourceUsage.prompt_tokens;
479
479
  targetUsage.total_tokens += sourceUsage.total_tokens;
480
480
  }
481
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0NBTWlCO0FBd0NqQixTQUFTLFlBQVksQ0FBQyxHQUFvQjs7SUFDaEMsSUFBQSxZQUFZLEdBQW9ELEdBQUcsYUFBdkQsRUFBRSxXQUFXLEdBQXVDLEdBQUcsWUFBMUMsRUFBRSxRQUFRLEdBQTZCLEdBQUcsU0FBaEMsRUFBRSxJQUFJLEdBQXVCLEdBQUcsS0FBMUIsRUFBRSxVQUFVLEdBQVcsR0FBRyxXQUFkLEVBQUssQ0FBQyxVQUFLLEdBQUcsRUFBckUsaUVBQStELENBQUYsQ0FBUTtJQUUzRSxJQUFJLFFBQVEsSUFBSSxJQUFJLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRTtRQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUE7S0FDdEQ7SUFFRCxPQUFPO1FBQ0wsRUFBRSxZQUFZLGNBQUEsRUFBRSxXQUFXLGFBQUEsRUFBRSxRQUFRLFVBQUEsRUFBRTs4QkFFbEMsQ0FBQyxLQUNKLEtBQUssRUFBRSxNQUFBLENBQUMsQ0FBQyxLQUFLLDBDQUFFLEdBQUcsQ0FBQyxVQUFDLElBQUk7Z0JBQ3ZCLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtvQkFDaEIsT0FBTyxJQUFBLCtCQUF1QixFQUFDLElBQUksQ0FBQyxDQUFBO2lCQUNyQztnQkFDRCxPQUFPLElBQUksQ0FBQTtZQUNiLENBQUMsQ0FBQyxFQUNGLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQ3BDLFdBQVcsRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFV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V0FBVyxDQUFDLFlBQVksSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFBO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjcmVhdGVBc3luY0l0ZXJhYmxlLFxuICBUcmFuc2Zvcm1TdHJlYW0sXG4gIGNyZWF0ZVByb21pc2UsXG4gIGlzVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlLFxuICBmdW5jdGlvblRvb2xUb01vZGVsVG9vbCxcbn0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQge1xuICBCYXNlQ2hhdE1vZGVsSW5wdXQsXG4gIEJhc2VEb1N0cmVhbU91dHB1dENodW5rLFxuICBEb1N0cmVhbU91dHB1dCxcbiAgRG9HZW5lcmF0ZU91dHB1dCxcbiAgU2ltcGxlQ2hhdE1vZGVsLFxuICBUb29sQ2FsbCxcbiAgQ2hhdE1vZGVsTWVzc2FnZSxcbiAgQXN5bmNJdGVyYWJsZVJlYWRhYmxlU3RyZWFtLFxuICBVc2FnZSxcbiAgVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlLFxuICBNb2RlbFRvb2wsXG4gIEZ1bmN0aW9uVG9vbCxcbiAgUmVxT3B0aW9ucyxcbn0gZnJvbSAnLi4vdHlwZSdcblxudHlwZSBSZWFjdE1vZGVsSW5wdXQgPSBSZWFjdFByb3BzICZcbk9taXQ8QmFzZUNoYXRNb2RlbElucHV0LCAndG9vbHMnPiAmIHtcbiAgdG9vbHM/OiBBcnJheTxNb2RlbFRvb2wgfCBGdW5jdGlvblRvb2w+XG4gIHRvcFA/OiBudW1iZXJcbiAgdG9vbENob2ljZT86ICdub25lJyB8ICdhdXRvJyB8ICdjdXN0b20nXG59XG5cbmludGVyZmFjZSBJT25TdGVwRmluaXNoIHtcbiAgbWVzc2FnZXM6IEFycmF5PENoYXRNb2RlbE1lc3NhZ2U+XG4gIHRleHQ/OiBzdHJpbmdcbiAgdG9vbENhbGw/OiBUb29sQ2FsbFxuICB0b29sUmVzdWx0PzogdW5rbm93blxuICBmaW5pc2hSZWFzb24/OiBzdHJpbmdcbiAgc3RlcFVzYWdlPzogVXNhZ2VcbiAgdG90YWxVc2FnZT86IFVzYWdlXG59XG5cbmludGVyZmFjZSBSZWFjdFByb3BzIHtcbiAgbWF4U3RlcHM/OiBudW1iZXJcbiAgb25TdGVwRmluaXNoPzogKHByb3A6IElPblN0ZXBGaW5pc2gpID0+IHVua25vd25cbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbCAvLyBUT0RPOiDlrp7njrAgYWJvcnRTaWduYWxcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0lucHV0KG9iajogUmVhY3RNb2RlbElucHV0KTogW1JlYWN0UHJvcHMsIEJhc2VDaGF0TW9kZWxJbnB1dF0ge1xuICBjb25zdCB7IG9uU3RlcEZpbmlzaCwgYWJvcnRTaWduYWwsIG1heFN0ZXBzLCB0b3BQLCB0b29sQ2hvaWNlLCAuLi5iIH0gPSBvYmpcblxuICBpZiAobWF4U3RlcHMgIT0gbnVsbCAmJiBtYXhTdGVwcyA8IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2BtYXhTdGVwc2AgbXVzZSBiZSBncmVhdGVyIHRoYW4gMC4nKVxuICB9XG5cbiAgcmV0dXJuIFtcbiAgICB7IG9uU3RlcEZpbmlzaCwgYWJvcnRTaWduYWwsIG1heFN0ZXBzIH0sXG4gICAge1xuICAgICAgLi4uYixcbiAgICAgIHRvb2xzOiBiLnRvb2xzPy5tYXAoKHRvb2wpID0+IHtcbiAgICAgICAgaWYgKCdmbicgaW4gdG9vbCkge1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvblRvb2xUb01vZGVsVG9vbCh0b29sKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b29sXG4gICAgICB9KSxcbiAgICAgIHRvcF9wOiB0b3BQICE9IG51bGwgPyB0b3BQIDogYi50b3BfcCxcbiAgICAgIHRvb2xfY2hvaWNlOiB0b29sQ2hvaWNlICE9IG51bGwgPyB0b29sQ2hvaWNlIDogYi50b29sX2Nob2ljZSxcbiAgICB9LFxuICBdXG59XG5cbmV4cG9ydCBjbGFzcyBSZWFjdE1vZGVsIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtb2RlbDogU2ltcGxlQ2hhdE1vZGVsKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBnZW5lcmF0ZVRleHQoX2lucHV0OiBSZWFjdE1vZGVsSW5wdXQsIG9wdGlvbnM/OiBSZXFPcHRpb25zKTogUHJvbWlzZTx7XG4gICAgdGV4dDogc3RyaW5nXG4gICAgbWVzc2FnZXM6IEFycmF5PENoYXRNb2RlbE1lc3NhZ2U+XG4gICAgdXNhZ2U6IFVzYWdlXG4gICAgcmF3UmVzcG9uc2VzOiBBcnJheTx1bmtub3duPlxuICAgIGVycm9yPzogYW55XG4gIH0+IHtcbiAgICBjb25zdCByYXdSZXNwb25zZXMgPSBbXVxuICAgIGNvbnN0IHRvdGFsVXNhZ2U6IFVzYWdlID0geyBjb21wbGV0aW9uX3Rva2VuczogMCwgcHJvbXB0X3Rva2VuczogMCwgdG90YWxfdG9rZW5zOiAwIH1cblxuICAgIGNvbnN0IFt7IG9uU3RlcEZpbmlzaCwgbWF4U3RlcHMgPSAxMCB9LCBpbnB1dF0gPSBwcm9jZXNzSW5wdXQoX2lucHV0KVxuXG4gICAgY29uc3QgZG9HZW5lcmF0ZSA9ICgpID0+IHRoaXMubW9kZWwuZG9HZW5lcmF0ZShpbnB1dCwgb3B0aW9ucykgLy8g5ZCO57ut5Luj56CB5Lya55u05o6l5a+5IGlucHV0Lm1lc3NhZ2VzIOWOn+WcsOS/ruaUue+8jOi/memHjOS4gOebtOeUqOWQjOS4gOS4quWvueixoeWwseihjFxuICAgIGxldCBjdXJyZW50UmVzID0gYXdhaXQgZG9HZW5lcmF0ZSgpXG4gICAgbGV0IGN1cnJlbnRTdGVwID0gMVxuICAgIGN1cnJlbnRSZXMucmF3UmVzcG9uc2UgJiYgcmF3UmVzcG9uc2VzLnB1c2goY3VycmVudFJlcy5yYXdSZXNwb25zZSlcblxuICAgIGxldCB0b29sQ2FsbDogVG9vbENhbGwgfCBudWxsID0gbnVsbFxuXG4gICAgLy8gVE9ETzog5LiA5qyh5a+56K+d5pyJ5aSa5LiqIHRvb2wgY2FsbD8g55uu5YmN5rKh5pyJ6L+Z56eN546w6LGh77yM5pqC5pe25LiN5aSE55CGXG4gICAgd2hpbGUgKGN1cnJlbnRTdGVwIDwgbWF4U3RlcHMgJiYgKHRvb2xDYWxsID0gZ2V0VG9vbENhbGxGcm9tR2VuZXJhdGUoY3VycmVudFJlcykpICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBVc2FnZSA9IGNyZWF0ZVNvbGlkVXNhZ2UoY3VycmVudFJlcy51c2FnZSlcbiAgICAgIGFkZFRvVXNhZ2UodG90YWxVc2FnZSwgc3RlcFVzYWdlKVxuXG4gICAgICAvLyDlvZPliKTmlq3pnIDopoHlt6XlhbfosIPnlKjml7ZcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRvb2xDYWxsUmVzdWx0ID0gYXdhaXQgY2FsbFRvb2wodG9vbENhbGwpIC8vIOiwg+eUqFxuXG4gICAgICAgIGNvbnN0IGNob2ljZSA9IGN1cnJlbnRSZXMuY2hvaWNlc1swXSAvLyBnZXRUb29sQ2FsbEZyb21HZW5lcmF0ZSDkv53or4HkuoYgY2hvaWNlIOiCr+WumuWtmOWcqFxuXG4gICAgICAgIGF3YWl0IG9uU3RlcEZpbmlzaD8uKHtcbiAgICAgICAgICBmaW5pc2hSZWFzb246IGNob2ljZS5maW5pc2hfcmVhc29uLFxuICAgICAgICAgIG1lc3NhZ2VzOiBpbnB1dC5tZXNzYWdlcy5zbGljZSgpLFxuICAgICAgICAgIHRleHQ6IGNob2ljZS5tZXNzYWdlLmNvbnRlbnQsXG4gICAgICAgICAgdG9vbENhbGwsXG4gICAgICAgICAgdG9vbFJlc3VsdDogdG9vbENhbGxSZXN1bHQsXG4gICAgICAgICAgc3RlcFVzYWdlLFxuICAgICAgICAgIHRvdGFsVXNhZ2U6IE9iamVjdC5hc3NpZ24oe30sIHRvdGFsVXNhZ2UpLFxuICAgICAgICB9KVxuXG4gICAgICAgIHB1c2hOZXdNZXNzYWdlcyhpbnB1dC5tZXNzYWdlcywgY2hvaWNlLm1lc3NhZ2UgYXMgVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlLCB0b29sQ2FsbFJlc3VsdCkgLy8g55So6LCD55So57uT5p6c5L+u5pS55pyA5paw55qE5raI5oGvXG5cbiAgICAgICAgY3VycmVudFJlcyA9IGF3YWl0IGRvR2VuZXJhdGUoKSAvLyDlvqrnjq/lr7nor51cbiAgICAgICAgY3VycmVudFJlcy5yYXdSZXNwb25zZSAmJiByYXdSZXNwb25zZXMucHVzaChjdXJyZW50UmVzLnJhd1Jlc3BvbnNlKVxuICAgICAgICBjdXJyZW50U3RlcCArPSAxXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgbWVzc2FnZXM6IGlucHV0Lm1lc3NhZ2VzLFxuICAgICAgICAgIHVzYWdlOiB0b3RhbFVzYWdlLFxuICAgICAgICAgIGVycm9yOiBlLFxuICAgICAgICAgIHJhd1Jlc3BvbnNlcyxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGxhc3RDaG9pY2UgPSBjdXJyZW50UmVzPy5jaG9pY2VzPy5bMF1cbiAgICBjb25zdCBsYXN0TWVzc2FnZSA9IGxhc3RDaG9pY2U/Lm1lc3NhZ2VcblxuICAgIGNvbnN0IHRleHQgPSBsYXN0TWVzc2FnZT8uY29udGVudCA/PyAnJ1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gbGFzdE1lc3NhZ2UgPyBbLi4uaW5wdXQubWVzc2FnZXMsIGxhc3RNZXNzYWdlXSA6IGlucHV0Lm1lc3NhZ2VzXG5cbiAgICBjb25zdCBzdGVwVXNhZ2UgPSBjcmVhdGVTb2xpZFVzYWdlKGN1cnJlbnRSZXMudXNhZ2UpXG4gICAgYWRkVG9Vc2FnZSh0b3RhbFVzYWdlLCBzdGVwVXNhZ2UpXG5cbiAgICBhd2FpdCBvblN0ZXBGaW5pc2g/Lih7XG4gICAgICBmaW5pc2hSZWFzb246IGxhc3RDaG9pY2UuZmluaXNoX3JlYXNvbixcbiAgICAgIG1lc3NhZ2VzOiBtZXNzYWdlcy5zbGljZSgpLFxuICAgICAgdGV4dCxcbiAgICAgIHRvb2xDYWxsOiBnZXRUb29sQ2FsbEZyb21HZW5lcmF0ZShjdXJyZW50UmVzKSxcbiAgICAgIHRvb2xSZXN1bHQ6IG51bGwsXG4gICAgICBzdGVwVXNhZ2UsXG4gICAgICB0b3RhbFVzYWdlOiBPYmplY3QuYXNzaWduKHt9LCB0b3RhbFVzYWdlKSxcbiAgICB9KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHQsXG4gICAgICBtZXNzYWdlcyxcbiAgICAgIHVzYWdlOiB0b3RhbFVzYWdlLFxuICAgICAgcmF3UmVzcG9uc2VzLFxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdHJlYW1UZXh0KF9pbnB1dDogUmVhY3RNb2RlbElucHV0LCBvcHRpb25zPzogUmVxT3B0aW9ucyk6IFByb21pc2U8e1xuICAgIGRhdGFTdHJlYW06IERvU3RyZWFtT3V0cHV0XG4gICAgdGV4dFN0cmVhbTogQXN5bmNJdGVyYWJsZVJlYWRhYmxlU3RyZWFtPHN0cmluZz5cbiAgICBtZXNzYWdlczogUHJvbWlzZTxBcnJheTxDaGF0TW9kZWxNZXNzYWdlPj5cbiAgICB1c2FnZTogUHJvbWlzZTxVc2FnZT5cbiAgICBlcnJvcj86IGFueVxuICB9PiB7XG4gICAgY29uc3QgdG90YWxVc2FnZTogVXNhZ2UgPSB7IGNvbXBsZXRpb25fdG9rZW5zOiAwLCBwcm9tcHRfdG9rZW5zOiAwLCB0b3RhbF90b2tlbnM6IDAgfVxuXG4gICAgY29uc3QgW3sgb25TdGVwRmluaXNoLCBtYXhTdGVwcyA9IDEwIH0sIGlucHV0XSA9IHByb2Nlc3NJbnB1dChfaW5wdXQpXG4gICAgY29uc3QgZG9TdHJlYW0gPSAoKSA9PiB0aGlzLm1vZGVsLmRvU3RyZWFtKGlucHV0LCBvcHRpb25zKSAvLyDlkI7nu63ku6PnoIHkvJrnm7TmjqXlr7kgaW5wdXQubWVzc2FnZXMg5Y6f5Zyw5L+u5pS577yM6L+Z6YeM5LiA55u055So5ZCM5LiA5Liq5a+56LGh5bCx6KGMXG4gICAgbGV0IGN1cnJlbnRSZXMgPSBhd2FpdCBkb1N0cmVhbSgpXG4gICAgY29uc3QgY3VycmVudFN0ZXAgPSAxXG4gICAgbGV0IHJlYWRSZXN1bHQ6IHsgbWVzc2FnZTogVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlOyB1c2FnZTogVXNhZ2UgfSB8IG51bGwgPSBudWxsXG5cbiAgICBjb25zdCByZWFkQ3VycmVudFN0cmVhbSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IFtvbGRTdHJlYW0sIG5ld1N0cmVhbV0gPSBjdXJyZW50UmVzLnRlZSgpXG4gICAgICBjdXJyZW50UmVzID0gY3JlYXRlQXN5bmNJdGVyYWJsZShvbGRTdHJlYW0pXG4gICAgICByZXR1cm4gcmVhZEZ1bmN0aW9uQ2FsbFN0cmVhbShuZXdTdHJlYW0pXG4gICAgfVxuXG4gICAgLy8gVE9ETzog5LiA5qyh5a+56K+d5pyJ5aSa5LiqIHRvb2wgY2FsbD8g55uu5YmN5rKh5pyJ6L+Z56eN546w6LGh77yM5pqC5pe25LiN5aSE55CGXG4gICAgLy8g6L+Z6YeM5ZKMIGdlbmVyYXRlVGV4dCDkuI3lpKrkuIDmoLfvvIzpmaTkuobop6PmnpDlh7ogdG9vbENhbGwg5aSW77yM6L+Y6ZyA6KaB5LuO5rWB5Lit5p6E6YCg5Ye65YW25LuW5a6M5pW055qE5L+h5oGvXG4gICAgd2hpbGUgKGN1cnJlbnRTdGVwIDwgbWF4U3RlcHMgJiYgKHJlYWRSZXN1bHQgPSBhd2FpdCByZWFkQ3VycmVudFN0cmVhbSgpKSAhPSBudWxsKSB7XG4gICAgICBjb25zdCB7IG1lc3NhZ2U6IGFzc2lzdGFudE1lc3NhZ2UsIHVzYWdlOiBzdGVwVXNhZ2UgfSA9IHJlYWRSZXN1bHRcbiAgICAgIGFkZFRvVXNhZ2UodG90YWxVc2FnZSwgc3RlcFVzYWdlKVxuXG4gICAgICAvLyDlvZPliKTmlq3pnIDopoHlt6XlhbfosIPnlKjml7ZcbiAgICAgIGNvbnN0IHRvb2xDYWxsID0gYXNzaXN0YW50TWVzc2FnZS50b29sX2NhbGxzPy5bMF0gLy8g6L+Z5LiqIHRvb2xDYWxsIOS4gOWumuWtmOWcqFxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdG9vbENhbGxSZXN1bHQgPSBhd2FpdCBjYWxsVG9vbCh0b29sQ2FsbCkgLy8g6LCD55SoXG5cbiAgICAgICAgYXdhaXQgb25TdGVwRmluaXNoPy4oe1xuICAgICAgICAgIGZpbmlzaFJlYXNvbjogJ3Rvb2xfY2FsbHMnLFxuICAgICAgICAgIG1lc3NhZ2VzOiBpbnB1dC5tZXNzYWdlcy5zbGljZSgpLFxuICAgICAgICAgIHRleHQ6IGFzc2lzdGFudE1lc3NhZ2UuY29udGVudCxcbiAgICAgICAgICB0b29sQ2FsbCxcbiAgICAgICAgICB0b29sUmVzdWx0OiB0b29sQ2FsbFJlc3VsdCxcbiAgICAgICAgICBzdGVwVXNhZ2UsXG4gICAgICAgICAgdG90YWxVc2FnZTogT2JqZWN0LmFzc2lnbih7fSwgdG90YWxVc2FnZSksXG4gICAgICAgIH0pXG5cbiAgICAgICAgcHVzaE5ld01lc3NhZ2VzKGlucHV0Lm1lc3NhZ2VzLCBhc3Npc3RhbnRNZXNzYWdlLCB0b29sQ2FsbFJlc3VsdCkgLy8g55So6LCD55So57uT5p6c5L+u5pS55pyA5paw55qE5raI5oGvXG4gICAgICAgIGN1cnJlbnRSZXMgPSBhd2FpdCBkb1N0cmVhbSgpIC8vIOW+queOr+WvueivnVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zdCBbczEsIHMyXSA9IGN1cnJlbnRSZXMudGVlKClcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlczogUHJvbWlzZS5yZXNvbHZlKGlucHV0Lm1lc3NhZ2VzKSxcbiAgICAgICAgICBkYXRhU3RyZWFtOiBjcmVhdGVBc3luY0l0ZXJhYmxlKHMxKSxcbiAgICAgICAgICB0ZXh0U3RyZWFtOiBjcmVhdGVBc3luY0l0ZXJhYmxlKHMyLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgICAgICAgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0ciA9IGNodW5rPy5jaG9pY2VzPy5bMF0/LmRlbHRhPy5jb250ZW50XG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RyID09PSAnc3RyaW5nJykgY29udHJvbGxlci5lbnF1ZXVlKHN0cilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksKSwpLFxuICAgICAgICAgIHVzYWdlOiBQcm9taXNlLnJlc29sdmUodG90YWxVc2FnZSksXG4gICAgICAgICAgZXJyb3I6IGUsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmnIDlkI7ov5Tlm57ml7bvvIzmnInlh6Dnp43mg4XlhrXvvJpcbiAgICAgKiAxLiDmsqHotoUgbWF4U3RlcCDml6Dlt6XlhbfosIPnlKhcbiAgICAgKiAyLiDotoXkuoYgbWF4U3RlcCDmnInlt6XlhbfosIPnlKhcbiAgICAgKiAzLiDotoXkuoYgbWF4U3RlcCDml6Dlt6XlhbfosIPnlKhcbiAgICAgKiBuZXZlci4g5rKh6LaFIG1heFN0ZXDvvIzmnInlt6XlhbfosIPnlKjvvIzov5nml7blgJnkvJrov5vliLDkuIrpnaLnmoQgd2hpbGUg5b6q546vIGJsb2NrIOS4reWkhOeQhlxuICAgICAqXG4gICAgICog5YW25LitIDEuIDMuIOWPr+S7peWQiOW5tu+8jOayoeacieW3peWFt+iwg+eUqOWwseW6lOivpeebtOaOpei/lOWbnu+8jOaXoOiuuiBtYXhTdGVwXG4gICAgICpcbiAgICAgKiDmiYDku6XlkIjlubbkuLrvvJpcbiAgICAgKiAxLiDml6Dlt6XlhbfosIPnlKhcbiAgICAgKiAyLiDmnInlt6XlhbfosIPnlKjvvIzkvYbmmK/otoXov4cgbWF4U3RlcFxuICAgICAqXG4gICAgICog6L+Z5Lik56eN5oOF5Ya16YO95rKh6L+b5YiwIHdoaWxlIOW+queOryBibG9jayDkuK3lpITnkIZcbiAgICAgKiDmiJHku6zpnIDopoEgYS4g5aGeIG1lc3NhZ2UgYi4g566XIFVzYWdlIGMuIOiwg+eUqCBvblN0ZXBGaW5pc2hcbiAgICAgKi9cblxuICAgIHJlYWRSZXN1bHQgPSBhd2FpdCByZWFkQ3VycmVudFN0cmVhbSgpXG5cbiAgICBpZiAocmVhZFJlc3VsdCkge1xuICAgICAgLy8g5oOF5Ya1IDIg5pyJ5bel5YW36LCD55So77yM5L2G5piv6LaF6L+HIG1heFN0ZXBcbiAgICAgIGNvbnN0IHsgbWVzc2FnZSwgdXNhZ2UgfSA9IHJlYWRSZXN1bHRcbiAgICAgIGFkZFRvVXNhZ2UodG90YWxVc2FnZSwgdXNhZ2UpXG5cbiAgICAgIGNvbnN0IG1lc3NhZ2VzID0gWy4uLmlucHV0Lm1lc3NhZ2VzLCBtZXNzYWdlXVxuXG4gICAgICBvblN0ZXBGaW5pc2goe1xuICAgICAgICBtZXNzYWdlczogbWVzc2FnZXMuc2xpY2UoKSxcbiAgICAgICAgZmluaXNoUmVhc29uOiAndG9vbF9jYWxsJyxcbiAgICAgICAgc3RlcFVzYWdlOiB1c2FnZSxcbiAgICAgICAgdGV4dDogbWVzc2FnZS5jb250ZW50LFxuICAgICAgICB0b29sQ2FsbDogbWVzc2FnZS50b29sX2NhbGxzWzBdLFxuICAgICAgICB0b3RhbFVzYWdlOiBPYmplY3QuYXNzaWduKHt9LCB0b3RhbFVzYWdlKSxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IFtzMSwgczJdID0gY3VycmVudFJlcy50ZWUoKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWVzc2FnZXM6IFByb21pc2UucmVzb2x2ZShbLi4uaW5wdXQubWVzc2FnZXMsIG1lc3NhZ2VdKSxcbiAgICAgICAgZGF0YVN0cmVhbTogY3JlYXRlQXN5bmNJdGVyYWJsZShzMSksXG4gICAgICAgIHRleHRTdHJlYW06IGNyZWF0ZUFzeW5jSXRlcmFibGUoczIucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICAgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBjb25zdCBzdHIgPSBjaHVuaz8uY2hvaWNlcz8uWzBdPy5kZWx0YT8uY29udGVudFxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnKSBjb250cm9sbGVyLmVucXVldWUoc3RyKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLCksKSxcbiAgICAgICAgdXNhZ2U6IFByb21pc2UucmVzb2x2ZSh0b3RhbFVzYWdlKSxcbiAgICAgIH1cbiAgICB9XG4gICAgLy8g5oOF5Ya1IDEg5peg5bel5YW36LCD55SoXG4gICAgY29uc3QgbWVzc2FnZVByb21pc2UgPSBjcmVhdGVQcm9taXNlPEFycmF5PENoYXRNb2RlbE1lc3NhZ2U+PigpXG4gICAgY29uc3QgdXNhZ2VQcm9taXNlID0gY3JlYXRlUHJvbWlzZTxVc2FnZT4oKVxuXG4gICAgY29uc3QgbWVzc2FnZTogQ2hhdE1vZGVsTWVzc2FnZSA9IHtcbiAgICAgIHJvbGU6ICdhc3Npc3RhbnQnLFxuICAgICAgY29udGVudDogJycsXG4gICAgfVxuICAgIGxldCBmaW5pc2hSZWFzb24gPSAnJ1xuICAgIGNvbnN0IHN0ZXBVc2FnZTogVXNhZ2UgPSB7IGNvbXBsZXRpb25fdG9rZW5zOiAwLCBwcm9tcHRfdG9rZW5zOiAwLCB0b3RhbF90b2tlbnM6IDAgfVxuXG4gICAgY29uc3Qgb3JpZ2luU3RyZWFtID0gY3VycmVudFJlcy5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtKHtcbiAgICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICAvLyDkuI3mlLnlj5ggY2h1bmsg5YaF5a6577yM5Y+q5piv5oum5oiq5LiL5YaF5a655ou85pyA5ZCO55qE57uT5p6cXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBjaHVuaz8uY2hvaWNlcz8uWzBdPy5kZWx0YT8uY29udGVudFxuICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgbWVzc2FnZS5jb250ZW50ICs9IGNvbnRlbnRcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlYXNvbiA9IGNodW5rPy5jaG9pY2VzPy5bMF0/LmZpbmlzaF9yZWFzb25cbiAgICAgICAgaWYgKHJlYXNvbikgZmluaXNoUmVhc29uID0gcmVhc29uXG5cbiAgICAgICAgLy8gVE9ETzog5LiN5ZCM5aSn5qih5Z6L55qEIHN0cmVhbSB1c2FnZSDmoLzlvI/kuI3kuIDmoLfvvIzlkI7nu63lj6/og73opoHosIPmlbQuXG4gICAgICAgIC8vIGh1bnl1YW4g5q+P5LiqIGNodW5rIOmDveS8muaciSB1c2FnZe+8jOmAkOatpeWinuWKoO+8jOS7peacgOWQjuS4gOS4queahOS4uuWHhjtcbiAgICAgICAgLy8gemhpcHUg5pyA5ZCOIGNodW5rIOS8muaciSB1c2FnZTtcbiAgICAgICAgaWYgKGNodW5rPy51c2FnZT8uY29tcGxldGlvbl90b2tlbnMpIHN0ZXBVc2FnZS5jb21wbGV0aW9uX3Rva2VucyA9IGNodW5rLnVzYWdlLmNvbXBsZXRpb25fdG9rZW5zXG4gICAgICAgIGlmIChjaHVuaz8udXNhZ2U/LnByb21wdF90b2tlbnMpIHN0ZXBVc2FnZS5wcm9tcHRfdG9rZW5zID0gY2h1bmsudXNhZ2UucHJvbXB0X3Rva2Vuc1xuICAgICAgICBpZiAoY2h1bms/LnVzYWdlPy50b3RhbF90b2tlbnMpIHN0ZXBVc2FnZS50b3RhbF90b2tlbnMgPSBjaHVuay51c2FnZS50b3RhbF90b2tlbnNcblxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspXG4gICAgICB9LFxuICAgICAgZmx1c2goKSB7XG4gICAgICAgIG1lc3NhZ2VQcm9taXNlLnJlcyhbLi4uaW5wdXQubWVzc2FnZXMsIG1lc3NhZ2VdKVxuICAgICAgICBhZGRUb1VzYWdlKHRvdGFsVXNhZ2UsIHN0ZXBVc2FnZSlcbiAgICAgICAgdXNhZ2VQcm9taXNlLnJlcyhPYmplY3QuYXNzaWduKHt9LCB0b3RhbFVzYWdlKSlcbiAgICAgICAgb25TdGVwRmluaXNoPy4oe1xuICAgICAgICAgIG1lc3NhZ2VzOiBbLi4uaW5wdXQubWVzc2FnZXMsIG1lc3NhZ2VdLFxuICAgICAgICAgIGZpbmlzaFJlYXNvbixcbiAgICAgICAgICB0ZXh0OiBtZXNzYWdlLmNvbnRlbnQsXG4gICAgICAgICAgc3RlcFVzYWdlLFxuICAgICAgICAgIHRvdGFsVXNhZ2U6IE9iamVjdC5hc3NpZ24oe30sIHRvdGFsVXNhZ2UpLFxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICB9KSwpXG5cbiAgICBjb25zdCBbczEsIHMyXSA9IG9yaWdpblN0cmVhbS50ZWUoKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2VzOiBtZXNzYWdlUHJvbWlzZS5wcm9taXNlLFxuICAgICAgZGF0YVN0cmVhbTogY3JlYXRlQXN5bmNJdGVyYWJsZShzMSksXG4gICAgICB0ZXh0U3RyZWFtOiBjcmVhdGVBc3luY0l0ZXJhYmxlKHMyLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgICAgICB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gY2h1bms/LmNob2ljZXM/LlswXT8uZGVsdGE/LmNvbnRlbnRcbiAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY29udGVudClcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KSwpLCksXG4gICAgICB1c2FnZTogdXNhZ2VQcm9taXNlLnByb21pc2UsXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFRvb2xDYWxsRnJvbUdlbmVyYXRlKG91dHB1dDogRG9HZW5lcmF0ZU91dHB1dCkge1xuICBjb25zdCBjaG9pY2UgPSBvdXRwdXQ/LmNob2ljZXM/LlswXVxuXG4gIGlmICghY2hvaWNlKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IHsgZmluaXNoX3JlYXNvbiwgbWVzc2FnZSB9ID0gY2hvaWNlXG5cbiAgaWYgKGZpbmlzaF9yZWFzb24gIT09ICd0b29sX2NhbGxzJykgcmV0dXJuIG51bGxcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gbnVsbFxuICBpZiAoIWlzVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlKG1lc3NhZ2UpKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiBtZXNzYWdlLnRvb2xfY2FsbHNbMF1cbn1cblxuZnVuY3Rpb24gcHVzaE5ld01lc3NhZ2VzKFxuICBtZXNzYWdlczogQXJyYXk8Q2hhdE1vZGVsTWVzc2FnZT4sXG4gIGFzc2lzdGFudE1lc3NhZ2U6IFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZSxcbiAgdG9vbENhbGxSZXN1bHQ6IHVua25vd24sXG4pIHtcbiAgbWVzc2FnZXMucHVzaChhc3Npc3RhbnRNZXNzYWdlLCB7XG4gICAgcm9sZTogJ3Rvb2wnLFxuICAgIHRvb2xfY2FsbF9pZDogYXNzaXN0YW50TWVzc2FnZS50b29sX2NhbGxzWzBdLmlkLFxuICAgIGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KHRvb2xDYWxsUmVzdWx0KSxcbiAgfSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEZ1bmN0aW9uQ2FsbFN0cmVhbShzdHJlYW06IFJlYWRhYmxlU3RyZWFtPEJhc2VEb1N0cmVhbU91dHB1dENodW5rPiwpOiBQcm9taXNlPHsgbWVzc2FnZTogVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlOyB1c2FnZTogVXNhZ2UgfSB8IG51bGw+IHtcbiAgY29uc3Qgc3RlcFVzYWdlOiBVc2FnZSA9IHsgY29tcGxldGlvbl90b2tlbnM6IDAsIHByb21wdF90b2tlbnM6IDAsIHRvdGFsX3Rva2VuczogMCB9XG4gIGNvbnN0IGFTdHJlYW0gPSBjcmVhdGVBc3luY0l0ZXJhYmxlKHN0cmVhbSlcblxuICBjb25zdCByZXRUb29sQ2FsbDogVG9vbENhbGwgPSB7XG4gICAgaWQ6ICcnLFxuICAgIGZ1bmN0aW9uOiB7XG4gICAgICBuYW1lOiAnJyxcbiAgICAgIGFyZ3VtZW50czogJycsXG4gICAgfSxcbiAgICB0eXBlOiAnJyxcbiAgfVxuXG4gIGNvbnN0IHJldE1lc3NhZ2U6IFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZSA9IHtcbiAgICByb2xlOiAnYXNzaXN0YW50JyxcbiAgICBjb250ZW50OiAnJyxcbiAgICB0b29sX2NhbGxzOiBbcmV0VG9vbENhbGxdLFxuICB9XG5cbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBhU3RyZWFtKSB7XG4gICAgY29uc3QgY2hvaWNlID0gY2h1bms/LmNob2ljZXNbMF1cbiAgICBpZiAoIWNob2ljZSkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHsgZmluaXNoX3JlYXNvbiwgZGVsdGEgfSA9IGNob2ljZVxuXG4gICAgaWYgKGZpbmlzaF9yZWFzb24gIT09ICd0b29sX2NhbGxzJykgcmV0dXJuIG51bGxcbiAgICBpZiAoIWRlbHRhKSBjb250aW51ZVxuXG4gICAgaWYgKGRlbHRhLmNvbnRlbnQpIHJldE1lc3NhZ2UuY29udGVudCArPSBkZWx0YS5jb250ZW50XG5cbiAgICBpZiAoISgndG9vbF9jYWxscycgaW4gZGVsdGEpKSBjb250aW51ZVxuICAgIGNvbnN0IHRvb2xDYWxsID0gZGVsdGE/LnRvb2xfY2FsbHM/LlswXVxuICAgIGlmICh0b29sQ2FsbD8uaWQpIHJldFRvb2xDYWxsLmlkID0gdG9vbENhbGwuaWRcbiAgICBpZiAodG9vbENhbGw/LnR5cGUpIHJldFRvb2xDYWxsLnR5cGUgPSB0b29sQ2FsbC50eXBlXG4gICAgaWYgKHRvb2xDYWxsPy5mdW5jdGlvbj8ubmFtZSkgcmV0VG9vbENhbGwuZnVuY3Rpb24ubmFtZSA9IHRvb2xDYWxsLmZ1bmN0aW9uLm5hbWVcbiAgICBpZiAodG9vbENhbGw/LmZ1bmN0aW9uPy5hcmd1bWVudHMpIHJldFRvb2xDYWxsLmZ1bmN0aW9uLmFyZ3VtZW50cyArPSB0b29sQ2FsbC5mdW5jdGlvbi5hcmd1bWVudHNcblxuICAgIC8vIFRPRE86IOS4jeWQjOWkp+aooeWei+eahCBzdHJlYW0gdXNhZ2Ug5qC85byP5LiN5LiA5qC377yM5ZCO57ut5Y+v6IO96KaB6LCD5pW0LlxuICAgIC8vIGh1bnl1YW4g5q+P5LiqIGNodW5rIOmDveS8muaciSB1c2FnZe+8jOmAkOatpeWinuWKoO+8jOS7peacgOWQjuS4gOS4queahOS4uuWHhjtcbiAgICAvLyB6aGlwdSDmnIDlkI4gY2h1bmsg5Lya5pyJIHVzYWdlO1xuICAgIGlmIChjaHVuaz8udXNhZ2U/LmNvbXBsZXRpb25fdG9rZW5zKSBzdGVwVXNhZ2UuY29tcGxldGlvbl90b2tlbnMgPSBjaHVuay51c2FnZS5jb21wbGV0aW9uX3Rva2Vuc1xuICAgIGlmIChjaHVuaz8udXNhZ2U/LnByb21wdF90b2tlbnMpIHN0ZXBVc2FnZS5wcm9tcHRfdG9rZW5zID0gY2h1bmsudXNhZ2UucHJvbXB0X3Rva2Vuc1xuICAgIGlmIChjaHVuaz8udXNhZ2U/LnRvdGFsX3Rva2Vucykgc3RlcFVzYWdlLnRvdGFsX3Rva2VucyA9IGNodW5rLnVzYWdlLnRvdGFsX3Rva2Vuc1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiByZXRNZXNzYWdlLFxuICAgIHVzYWdlOiBzdGVwVXNhZ2UsXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHRvb2xNYXAgPSBuZXcgTWFwPHN0cmluZywgQ2FsbGFibGVGdW5jdGlvbj4oKVxuXG5mdW5jdGlvbiBjYWxsVG9vbCh0b29sQ2FsbDogVG9vbENhbGwpIHtcbiAgcmV0dXJuIHRvb2xNYXAuZ2V0KHRvb2xDYWxsLmZ1bmN0aW9uLm5hbWUpKEpTT04ucGFyc2UodG9vbENhbGwuZnVuY3Rpb24uYXJndW1lbnRzKSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlU29saWRVc2FnZSh1c2FnZT86IFBhcnRpYWw8VXNhZ2U+KTogVXNhZ2Uge1xuICByZXR1cm4ge1xuICAgIGNvbXBsZXRpb25fdG9rZW5zOiB1c2FnZT8uY29tcGxldGlvbl90b2tlbnMgPz8gMCxcbiAgICBwcm9tcHRfdG9rZW5zOiB1c2FnZT8ucHJvbXB0X3Rva2VucyA/PyAwLFxuICAgIHRvdGFsX3Rva2VuczogdXNhZ2U/LnRvdGFsX3Rva2VucyA/PyAwLFxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZFRvVXNhZ2UodGFyZ2V0VXNhZ2U6IFVzYWdlLCBzb3VyY2VVc2FnZTogVXNhZ2UpIHtcbiAgdGFyZ2V0VXNhZ2UuY29tcGxldGlvbl90b2tlbnMgKz0gc291cmNlVXNhZ2UuY29tcGxldGlvbl90b2tlbnNcbiAgdGFyZ2V0VXNhZ2UucHJvbXB0X3Rva2VucyArPSBzb3VyY2VVc2FnZS5wcm9tcHRfdG9rZW5zXG4gIHRhcmdldFVzYWdlLnRvdGFsX3Rva2VucyArPSBzb3VyY2VVc2FnZS50b3RhbF90b2tlbnNcbn1cbiJdfQ==
481
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL21vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsa0NBTWlCO0FBd0NqQixTQUFTLFlBQVksQ0FBQyxHQUFvQjs7SUFDaEMsSUFBQSxZQUFZLEdBQW9ELEdBQUcsYUFBdkQsRUFBRSxXQUFXLEdBQXVDLEdBQUcsWUFBMUMsRUFBRSxRQUFRLEdBQTZCLEdBQUcsU0FBaEMsRUFBRSxJQUFJLEdBQXVCLEdBQUcsS0FBMUIsRUFBRSxVQUFVLEdBQVcsR0FBRyxXQUFkLEVBQUssQ0FBQyxVQUFLLEdBQUcsRUFBckUsaUVBQStELENBQUYsQ0FBUTtJQUUzRSxJQUFJLFFBQVEsSUFBSSxJQUFJLElBQUksUUFBUSxHQUFHLENBQUMsRUFBRTtRQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUE7S0FDdEQ7SUFFRCxPQUFPO1FBQ0wsRUFBRSxZQUFZLGNBQUEsRUFBRSxXQUFXLGFBQUEsRUFBRSxRQUFRLFVBQUEsRUFBRTs4QkFFbEMsQ0FBQyxLQUNKLEtBQUssRUFBRSxNQUFBLENBQUMsQ0FBQyxLQUFLLDBDQUFFLEdBQUcsQ0FBQyxVQUFDLElBQUk7Z0JBQ3ZCLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtvQkFDaEIsT0FBTyxJQUFBLCtCQUF1QixFQUFDLElBQUksQ0FBQyxDQUFBO2lCQUNyQztnQkFDRCxPQUFPLElBQUksQ0FBQTtZQUNiLENBQUMsQ0FBQyxFQUNGLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQ3BDLFdBQVcsRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFV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V0FBVyxDQUFDLFlBQVksSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFBO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSAqL1xuaW1wb3J0IHtcbiAgY3JlYXRlQXN5bmNJdGVyYWJsZSxcbiAgVHJhbnNmb3JtU3RyZWFtLFxuICBjcmVhdGVQcm9taXNlLFxuICBpc1Rvb2xDYWxsQXNzaXN0YW50TWVzc2FnZSxcbiAgZnVuY3Rpb25Ub29sVG9Nb2RlbFRvb2wsXG59IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHtcbiAgQmFzZUNoYXRNb2RlbElucHV0LFxuICBCYXNlRG9TdHJlYW1PdXRwdXRDaHVuayxcbiAgRG9TdHJlYW1PdXRwdXQsXG4gIERvR2VuZXJhdGVPdXRwdXQsXG4gIFNpbXBsZUNoYXRNb2RlbCxcbiAgVG9vbENhbGwsXG4gIENoYXRNb2RlbE1lc3NhZ2UsXG4gIEFzeW5jSXRlcmFibGVSZWFkYWJsZVN0cmVhbSxcbiAgVXNhZ2UsXG4gIFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZSxcbiAgTW9kZWxUb29sLFxuICBGdW5jdGlvblRvb2wsXG4gIFJlcU9wdGlvbnMsXG59IGZyb20gJy4uL3R5cGUnXG5cbnR5cGUgUmVhY3RNb2RlbElucHV0ID0gUmVhY3RQcm9wcyAmXG5PbWl0PEJhc2VDaGF0TW9kZWxJbnB1dCwgJ3Rvb2xzJz4gJiB7XG4gIHRvb2xzPzogQXJyYXk8TW9kZWxUb29sIHwgRnVuY3Rpb25Ub29sPlxuICB0b3BQPzogbnVtYmVyXG4gIHRvb2xDaG9pY2U/OiAnbm9uZScgfCAnYXV0bycgfCAnY3VzdG9tJ1xufVxuXG5pbnRlcmZhY2UgSU9uU3RlcEZpbmlzaCB7XG4gIG1lc3NhZ2VzOiBBcnJheTxDaGF0TW9kZWxNZXNzYWdlPlxuICB0ZXh0Pzogc3RyaW5nXG4gIHRvb2xDYWxsPzogVG9vbENhbGxcbiAgdG9vbFJlc3VsdD86IHVua25vd25cbiAgZmluaXNoUmVhc29uPzogc3RyaW5nXG4gIHN0ZXBVc2FnZT86IFVzYWdlXG4gIHRvdGFsVXNhZ2U/OiBVc2FnZVxufVxuXG5pbnRlcmZhY2UgUmVhY3RQcm9wcyB7XG4gIG1heFN0ZXBzPzogbnVtYmVyXG4gIG9uU3RlcEZpbmlzaD86IChwcm9wOiBJT25TdGVwRmluaXNoKSA9PiB1bmtub3duXG4gIGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWwgLy8gVE9ETzog5a6e546wIGFib3J0U2lnbmFsXG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NJbnB1dChvYmo6IFJlYWN0TW9kZWxJbnB1dCk6IFtSZWFjdFByb3BzLCBCYXNlQ2hhdE1vZGVsSW5wdXRdIHtcbiAgY29uc3QgeyBvblN0ZXBGaW5pc2gsIGFib3J0U2lnbmFsLCBtYXhTdGVwcywgdG9wUCwgdG9vbENob2ljZSwgLi4uYiB9ID0gb2JqXG5cbiAgaWYgKG1heFN0ZXBzICE9IG51bGwgJiYgbWF4U3RlcHMgPCAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdgbWF4U3RlcHNgIG11c2UgYmUgZ3JlYXRlciB0aGFuIDAuJylcbiAgfVxuXG4gIHJldHVybiBbXG4gICAgeyBvblN0ZXBGaW5pc2gsIGFib3J0U2lnbmFsLCBtYXhTdGVwcyB9LFxuICAgIHtcbiAgICAgIC4uLmIsXG4gICAgICB0b29sczogYi50b29scz8ubWFwKCh0b29sKSA9PiB7XG4gICAgICAgIGlmICgnZm4nIGluIHRvb2wpIHtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb25Ub29sVG9Nb2RlbFRvb2wodG9vbClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdG9vbFxuICAgICAgfSksXG4gICAgICB0b3BfcDogdG9wUCAhPSBudWxsID8gdG9wUCA6IGIudG9wX3AsXG4gICAgICB0b29sX2Nob2ljZTogdG9vbENob2ljZSAhPSBudWxsID8gdG9vbENob2ljZSA6IGIudG9vbF9jaG9pY2UsXG4gICAgfSxcbiAgXVxufVxuXG5leHBvcnQgY2xhc3MgUmVhY3RNb2RlbCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9kZWw6IFNpbXBsZUNoYXRNb2RlbCkge31cblxuICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVUZXh0KF9pbnB1dDogUmVhY3RNb2RlbElucHV0LCBvcHRpb25zPzogUmVxT3B0aW9ucyk6IFByb21pc2U8e1xuICAgIHRleHQ6IHN0cmluZ1xuICAgIG1lc3NhZ2VzOiBBcnJheTxDaGF0TW9kZWxNZXNzYWdlPlxuICAgIHVzYWdlOiBVc2FnZVxuICAgIHJhd1Jlc3BvbnNlczogQXJyYXk8dW5rbm93bj5cbiAgICBlcnJvcj86IGFueVxuICB9PiB7XG4gICAgY29uc3QgcmF3UmVzcG9uc2VzID0gW11cbiAgICBjb25zdCB0b3RhbFVzYWdlOiBVc2FnZSA9IHsgY29tcGxldGlvbl90b2tlbnM6IDAsIHByb21wdF90b2tlbnM6IDAsIHRvdGFsX3Rva2VuczogMCB9XG5cbiAgICBjb25zdCBbeyBvblN0ZXBGaW5pc2gsIG1heFN0ZXBzID0gMTAgfSwgaW5wdXRdID0gcHJvY2Vzc0lucHV0KF9pbnB1dClcblxuICAgIGNvbnN0IGRvR2VuZXJhdGUgPSAoKSA9PiB0aGlzLm1vZGVsLmRvR2VuZXJhdGUoaW5wdXQsIG9wdGlvbnMpIC8vIOWQjue7reS7o+eggeS8muebtOaOpeWvuSBpbnB1dC5tZXNzYWdlcyDljp/lnLDkv67mlLnvvIzov5nph4zkuIDnm7TnlKjlkIzkuIDkuKrlr7nosaHlsLHooYxcbiAgICBsZXQgY3VycmVudFJlcyA9IGF3YWl0IGRvR2VuZXJhdGUoKVxuICAgIGxldCBjdXJyZW50U3RlcCA9IDFcbiAgICBjdXJyZW50UmVzLnJhd1Jlc3BvbnNlICYmIHJhd1Jlc3BvbnNlcy5wdXNoKGN1cnJlbnRSZXMucmF3UmVzcG9uc2UpXG5cbiAgICBsZXQgdG9vbENhbGw6IFRvb2xDYWxsIHwgbnVsbCA9IG51bGxcblxuICAgIC8vIFRPRE86IOS4gOasoeWvueivneacieWkmuS4qiB0b29sIGNhbGw/IOebruWJjeayoeaciei/meenjeeOsOixoe+8jOaaguaXtuS4jeWkhOeQhlxuICAgIHdoaWxlIChjdXJyZW50U3RlcCA8IG1heFN0ZXBzICYmICh0b29sQ2FsbCA9IGdldFRvb2xDYWxsRnJvbUdlbmVyYXRlKGN1cnJlbnRSZXMpKSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwVXNhZ2UgPSBjcmVhdGVTb2xpZFVzYWdlKGN1cnJlbnRSZXMudXNhZ2UpXG4gICAgICBhZGRUb1VzYWdlKHRvdGFsVXNhZ2UsIHN0ZXBVc2FnZSlcblxuICAgICAgLy8g5b2T5Yik5pat6ZyA6KaB5bel5YW36LCD55So5pe2XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0b29sQ2FsbFJlc3VsdCA9IGF3YWl0IGNhbGxUb29sKHRvb2xDYWxsKSAvLyDosIPnlKhcblxuICAgICAgICBjb25zdCBjaG9pY2UgPSBjdXJyZW50UmVzLmNob2ljZXNbMF0gLy8gZ2V0VG9vbENhbGxGcm9tR2VuZXJhdGUg5L+d6K+B5LqGIGNob2ljZSDogq/lrprlrZjlnKhcblxuICAgICAgICBhd2FpdCBvblN0ZXBGaW5pc2g/Lih7XG4gICAgICAgICAgZmluaXNoUmVhc29uOiBjaG9pY2UuZmluaXNoX3JlYXNvbixcbiAgICAgICAgICBtZXNzYWdlczogaW5wdXQubWVzc2FnZXMuc2xpY2UoKSxcbiAgICAgICAgICB0ZXh0OiBjaG9pY2UubWVzc2FnZS5jb250ZW50LFxuICAgICAgICAgIHRvb2xDYWxsLFxuICAgICAgICAgIHRvb2xSZXN1bHQ6IHRvb2xDYWxsUmVzdWx0LFxuICAgICAgICAgIHN0ZXBVc2FnZSxcbiAgICAgICAgICB0b3RhbFVzYWdlOiBPYmplY3QuYXNzaWduKHt9LCB0b3RhbFVzYWdlKSxcbiAgICAgICAgfSlcblxuICAgICAgICBwdXNoTmV3TWVzc2FnZXMoaW5wdXQubWVzc2FnZXMsIGNob2ljZS5tZXNzYWdlIGFzIFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZSwgdG9vbENhbGxSZXN1bHQpIC8vIOeUqOiwg+eUqOe7k+aenOS/ruaUueacgOaWsOeahOa2iOaBr1xuXG4gICAgICAgIGN1cnJlbnRSZXMgPSBhd2FpdCBkb0dlbmVyYXRlKCkgLy8g5b6q546v5a+56K+dXG4gICAgICAgIGN1cnJlbnRSZXMucmF3UmVzcG9uc2UgJiYgcmF3UmVzcG9uc2VzLnB1c2goY3VycmVudFJlcy5yYXdSZXNwb25zZSlcbiAgICAgICAgY3VycmVudFN0ZXAgKz0gMVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICAgIG1lc3NhZ2VzOiBpbnB1dC5tZXNzYWdlcyxcbiAgICAgICAgICB1c2FnZTogdG90YWxVc2FnZSxcbiAgICAgICAgICBlcnJvcjogZSxcbiAgICAgICAgICByYXdSZXNwb25zZXMsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBsYXN0Q2hvaWNlID0gY3VycmVudFJlcz8uY2hvaWNlcz8uWzBdXG4gICAgY29uc3QgbGFzdE1lc3NhZ2UgPSBsYXN0Q2hvaWNlPy5tZXNzYWdlXG5cbiAgICBjb25zdCB0ZXh0ID0gbGFzdE1lc3NhZ2U/LmNvbnRlbnQgPz8gJydcbiAgICBjb25zdCBtZXNzYWdlcyA9IGxhc3RNZXNzYWdlID8gWy4uLmlucHV0Lm1lc3NhZ2VzLCBsYXN0TWVzc2FnZV0gOiBpbnB1dC5tZXNzYWdlc1xuXG4gICAgY29uc3Qgc3RlcFVzYWdlID0gY3JlYXRlU29saWRVc2FnZShjdXJyZW50UmVzLnVzYWdlKVxuICAgIGFkZFRvVXNhZ2UodG90YWxVc2FnZSwgc3RlcFVzYWdlKVxuXG4gICAgYXdhaXQgb25TdGVwRmluaXNoPy4oe1xuICAgICAgZmluaXNoUmVhc29uOiBsYXN0Q2hvaWNlLmZpbmlzaF9yZWFzb24sXG4gICAgICBtZXNzYWdlczogbWVzc2FnZXMuc2xpY2UoKSxcbiAgICAgIHRleHQsXG4gICAgICB0b29sQ2FsbDogZ2V0VG9vbENhbGxGcm9tR2VuZXJhdGUoY3VycmVudFJlcyksXG4gICAgICB0b29sUmVzdWx0OiBudWxsLFxuICAgICAgc3RlcFVzYWdlLFxuICAgICAgdG90YWxVc2FnZTogT2JqZWN0LmFzc2lnbih7fSwgdG90YWxVc2FnZSksXG4gICAgfSlcblxuICAgIHJldHVybiB7XG4gICAgICB0ZXh0LFxuICAgICAgbWVzc2FnZXMsXG4gICAgICB1c2FnZTogdG90YWxVc2FnZSxcbiAgICAgIHJhd1Jlc3BvbnNlcyxcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc3RyZWFtVGV4dChfaW5wdXQ6IFJlYWN0TW9kZWxJbnB1dCwgb3B0aW9ucz86IFJlcU9wdGlvbnMpOiBQcm9taXNlPHtcbiAgICBkYXRhU3RyZWFtOiBEb1N0cmVhbU91dHB1dFxuICAgIHRleHRTdHJlYW06IEFzeW5jSXRlcmFibGVSZWFkYWJsZVN0cmVhbTxzdHJpbmc+XG4gICAgbWVzc2FnZXM6IFByb21pc2U8QXJyYXk8Q2hhdE1vZGVsTWVzc2FnZT4+XG4gICAgdXNhZ2U6IFByb21pc2U8VXNhZ2U+XG4gICAgZXJyb3I/OiBhbnlcbiAgfT4ge1xuICAgIGNvbnN0IHRvdGFsVXNhZ2U6IFVzYWdlID0geyBjb21wbGV0aW9uX3Rva2VuczogMCwgcHJvbXB0X3Rva2VuczogMCwgdG90YWxfdG9rZW5zOiAwIH1cblxuICAgIGNvbnN0IFt7IG9uU3RlcEZpbmlzaCwgbWF4U3RlcHMgPSAxMCB9LCBpbnB1dF0gPSBwcm9jZXNzSW5wdXQoX2lucHV0KVxuICAgIGNvbnN0IGRvU3RyZWFtID0gKCkgPT4gdGhpcy5tb2RlbC5kb1N0cmVhbShpbnB1dCwgb3B0aW9ucykgLy8g5ZCO57ut5Luj56CB5Lya55u05o6l5a+5IGlucHV0Lm1lc3NhZ2VzIOWOn+WcsOS/ruaUue+8jOi/memHjOS4gOebtOeUqOWQjOS4gOS4quWvueixoeWwseihjFxuICAgIGxldCBjdXJyZW50UmVzID0gYXdhaXQgZG9TdHJlYW0oKVxuICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gMVxuICAgIGxldCByZWFkUmVzdWx0OiB7IG1lc3NhZ2U6IFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZTsgdXNhZ2U6IFVzYWdlIH0gfCBudWxsID0gbnVsbFxuXG4gICAgY29uc3QgcmVhZEN1cnJlbnRTdHJlYW0gPSAoKSA9PiB7XG4gICAgICBjb25zdCBbb2xkU3RyZWFtLCBuZXdTdHJlYW1dID0gY3VycmVudFJlcy50ZWUoKVxuICAgICAgY3VycmVudFJlcyA9IGNyZWF0ZUFzeW5jSXRlcmFibGUob2xkU3RyZWFtKVxuICAgICAgcmV0dXJuIHJlYWRGdW5jdGlvbkNhbGxTdHJlYW0obmV3U3RyZWFtKVxuICAgIH1cblxuICAgIC8vIFRPRE86IOS4gOasoeWvueivneacieWkmuS4qiB0b29sIGNhbGw/IOebruWJjeayoeaciei/meenjeeOsOixoe+8jOaaguaXtuS4jeWkhOeQhlxuICAgIC8vIOi/memHjOWSjCBnZW5lcmF0ZVRleHQg5LiN5aSq5LiA5qC377yM6Zmk5LqG6Kej5p6Q5Ye6IHRvb2xDYWxsIOWklu+8jOi/mOmcgOimgeS7jua1geS4reaehOmAoOWHuuWFtuS7luWujOaVtOeahOS/oeaBr1xuICAgIHdoaWxlIChjdXJyZW50U3RlcCA8IG1heFN0ZXBzICYmIChyZWFkUmVzdWx0ID0gYXdhaXQgcmVhZEN1cnJlbnRTdHJlYW0oKSkgIT0gbnVsbCkge1xuICAgICAgY29uc3QgeyBtZXNzYWdlOiBhc3Npc3RhbnRNZXNzYWdlLCB1c2FnZTogc3RlcFVzYWdlIH0gPSByZWFkUmVzdWx0XG4gICAgICBhZGRUb1VzYWdlKHRvdGFsVXNhZ2UsIHN0ZXBVc2FnZSlcblxuICAgICAgLy8g5b2T5Yik5pat6ZyA6KaB5bel5YW36LCD55So5pe2XG4gICAgICBjb25zdCB0b29sQ2FsbCA9IGFzc2lzdGFudE1lc3NhZ2UudG9vbF9jYWxscz8uWzBdIC8vIOi/meS4qiB0b29sQ2FsbCDkuIDlrprlrZjlnKhcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRvb2xDYWxsUmVzdWx0ID0gYXdhaXQgY2FsbFRvb2wodG9vbENhbGwpIC8vIOiwg+eUqFxuXG4gICAgICAgIGF3YWl0IG9uU3RlcEZpbmlzaD8uKHtcbiAgICAgICAgICBmaW5pc2hSZWFzb246ICd0b29sX2NhbGxzJyxcbiAgICAgICAgICBtZXNzYWdlczogaW5wdXQubWVzc2FnZXMuc2xpY2UoKSxcbiAgICAgICAgICB0ZXh0OiBhc3Npc3RhbnRNZXNzYWdlLmNvbnRlbnQsXG4gICAgICAgICAgdG9vbENhbGwsXG4gICAgICAgICAgdG9vbFJlc3VsdDogdG9vbENhbGxSZXN1bHQsXG4gICAgICAgICAgc3RlcFVzYWdlLFxuICAgICAgICAgIHRvdGFsVXNhZ2U6IE9iamVjdC5hc3NpZ24oe30sIHRvdGFsVXNhZ2UpLFxuICAgICAgICB9KVxuXG4gICAgICAgIHB1c2hOZXdNZXNzYWdlcyhpbnB1dC5tZXNzYWdlcywgYXNzaXN0YW50TWVzc2FnZSwgdG9vbENhbGxSZXN1bHQpIC8vIOeUqOiwg+eUqOe7k+aenOS/ruaUueacgOaWsOeahOa2iOaBr1xuICAgICAgICBjdXJyZW50UmVzID0gYXdhaXQgZG9TdHJlYW0oKSAvLyDlvqrnjq/lr7nor51cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc3QgW3MxLCBzMl0gPSBjdXJyZW50UmVzLnRlZSgpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZXM6IFByb21pc2UucmVzb2x2ZShpbnB1dC5tZXNzYWdlcyksXG4gICAgICAgICAgZGF0YVN0cmVhbTogY3JlYXRlQXN5bmNJdGVyYWJsZShzMSksXG4gICAgICAgICAgdGV4dFN0cmVhbTogY3JlYXRlQXN5bmNJdGVyYWJsZShzMi5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtKHtcbiAgICAgICAgICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICAgICAgICBjb25zdCBzdHIgPSBjaHVuaz8uY2hvaWNlcz8uWzBdPy5kZWx0YT8uY29udGVudFxuICAgICAgICAgICAgICBpZiAodHlwZW9mIHN0ciA9PT0gJ3N0cmluZycpIGNvbnRyb2xsZXIuZW5xdWV1ZShzdHIpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLCksKSxcbiAgICAgICAgICB1c2FnZTogUHJvbWlzZS5yZXNvbHZlKHRvdGFsVXNhZ2UpLFxuICAgICAgICAgIGVycm9yOiBlLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5pyA5ZCO6L+U5Zue5pe277yM5pyJ5Yeg56eN5oOF5Ya177yaXG4gICAgICogMS4g5rKh6LaFIG1heFN0ZXAg5peg5bel5YW36LCD55SoXG4gICAgICogMi4g6LaF5LqGIG1heFN0ZXAg5pyJ5bel5YW36LCD55SoXG4gICAgICogMy4g6LaF5LqGIG1heFN0ZXAg5peg5bel5YW36LCD55SoXG4gICAgICogbmV2ZXIuIOayoei2hSBtYXhTdGVw77yM5pyJ5bel5YW36LCD55So77yM6L+Z5pe25YCZ5Lya6L+b5Yiw5LiK6Z2i55qEIHdoaWxlIOW+queOryBibG9jayDkuK3lpITnkIZcbiAgICAgKlxuICAgICAqIOWFtuS4rSAxLiAzLiDlj6/ku6XlkIjlubbvvIzmsqHmnInlt6XlhbfosIPnlKjlsLHlupTor6Xnm7TmjqXov5Tlm57vvIzml6DorrogbWF4U3RlcFxuICAgICAqXG4gICAgICog5omA5Lul5ZCI5bm25Li677yaXG4gICAgICogMS4g5peg5bel5YW36LCD55SoXG4gICAgICogMi4g5pyJ5bel5YW36LCD55So77yM5L2G5piv6LaF6L+HIG1heFN0ZXBcbiAgICAgKlxuICAgICAqIOi/meS4pOenjeaDheWGtemDveayoei/m+WIsCB3aGlsZSDlvqrnjq8gYmxvY2sg5Lit5aSE55CGXG4gICAgICog5oiR5Lus6ZyA6KaBIGEuIOWhniBtZXNzYWdlIGIuIOeulyBVc2FnZSBjLiDosIPnlKggb25TdGVwRmluaXNoXG4gICAgICovXG5cbiAgICByZWFkUmVzdWx0ID0gYXdhaXQgcmVhZEN1cnJlbnRTdHJlYW0oKVxuXG4gICAgaWYgKHJlYWRSZXN1bHQpIHtcbiAgICAgIC8vIOaDheWGtSAyIOacieW3peWFt+iwg+eUqO+8jOS9huaYr+i2hei/hyBtYXhTdGVwXG4gICAgICBjb25zdCB7IG1lc3NhZ2UsIHVzYWdlIH0gPSByZWFkUmVzdWx0XG4gICAgICBhZGRUb1VzYWdlKHRvdGFsVXNhZ2UsIHVzYWdlKVxuXG4gICAgICBjb25zdCBtZXNzYWdlcyA9IFsuLi5pbnB1dC5tZXNzYWdlcywgbWVzc2FnZV1cblxuICAgICAgb25TdGVwRmluaXNoKHtcbiAgICAgICAgbWVzc2FnZXM6IG1lc3NhZ2VzLnNsaWNlKCksXG4gICAgICAgIGZpbmlzaFJlYXNvbjogJ3Rvb2xfY2FsbCcsXG4gICAgICAgIHN0ZXBVc2FnZTogdXNhZ2UsXG4gICAgICAgIHRleHQ6IG1lc3NhZ2UuY29udGVudCxcbiAgICAgICAgdG9vbENhbGw6IG1lc3NhZ2UudG9vbF9jYWxsc1swXSxcbiAgICAgICAgdG90YWxVc2FnZTogT2JqZWN0LmFzc2lnbih7fSwgdG90YWxVc2FnZSksXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBbczEsIHMyXSA9IGN1cnJlbnRSZXMudGVlKClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1lc3NhZ2VzOiBQcm9taXNlLnJlc29sdmUoWy4uLmlucHV0Lm1lc3NhZ2VzLCBtZXNzYWdlXSksXG4gICAgICAgIGRhdGFTdHJlYW06IGNyZWF0ZUFzeW5jSXRlcmFibGUoczEpLFxuICAgICAgICB0ZXh0U3RyZWFtOiBjcmVhdGVBc3luY0l0ZXJhYmxlKHMyLnBpcGVUaHJvdWdoKG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xuICAgICAgICAgIHRyYW5zZm9ybShjaHVuaywgY29udHJvbGxlcikge1xuICAgICAgICAgICAgY29uc3Qgc3RyID0gY2h1bms/LmNob2ljZXM/LlswXT8uZGVsdGE/LmNvbnRlbnRcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RyID09PSAnc3RyaW5nJykgY29udHJvbGxlci5lbnF1ZXVlKHN0cilcbiAgICAgICAgICB9LFxuICAgICAgICB9KSwpLCksXG4gICAgICAgIHVzYWdlOiBQcm9taXNlLnJlc29sdmUodG90YWxVc2FnZSksXG4gICAgICB9XG4gICAgfVxuICAgIC8vIOaDheWGtSAxIOaXoOW3peWFt+iwg+eUqFxuICAgIGNvbnN0IG1lc3NhZ2VQcm9taXNlID0gY3JlYXRlUHJvbWlzZTxBcnJheTxDaGF0TW9kZWxNZXNzYWdlPj4oKVxuICAgIGNvbnN0IHVzYWdlUHJvbWlzZSA9IGNyZWF0ZVByb21pc2U8VXNhZ2U+KClcblxuICAgIGNvbnN0IG1lc3NhZ2U6IENoYXRNb2RlbE1lc3NhZ2UgPSB7XG4gICAgICByb2xlOiAnYXNzaXN0YW50JyxcbiAgICAgIGNvbnRlbnQ6ICcnLFxuICAgIH1cbiAgICBsZXQgZmluaXNoUmVhc29uID0gJydcbiAgICBjb25zdCBzdGVwVXNhZ2U6IFVzYWdlID0geyBjb21wbGV0aW9uX3Rva2VuczogMCwgcHJvbXB0X3Rva2VuczogMCwgdG90YWxfdG9rZW5zOiAwIH1cblxuICAgIGNvbnN0IG9yaWdpblN0cmVhbSA9IGN1cnJlbnRSZXMucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgICB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgLy8g5LiN5pS55Y+YIGNodW5rIOWGheWuue+8jOWPquaYr+aLpuaIquS4i+WGheWuueaLvOacgOWQjueahOe7k+aenFxuICAgICAgICBjb25zdCBjb250ZW50ID0gY2h1bms/LmNob2ljZXM/LlswXT8uZGVsdGE/LmNvbnRlbnRcbiAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIG1lc3NhZ2UuY29udGVudCArPSBjb250ZW50XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWFzb24gPSBjaHVuaz8uY2hvaWNlcz8uWzBdPy5maW5pc2hfcmVhc29uXG4gICAgICAgIGlmIChyZWFzb24pIGZpbmlzaFJlYXNvbiA9IHJlYXNvblxuXG4gICAgICAgIC8vIFRPRE86IOS4jeWQjOWkp+aooeWei+eahCBzdHJlYW0gdXNhZ2Ug5qC85byP5LiN5LiA5qC377yM5ZCO57ut5Y+v6IO96KaB6LCD5pW0LlxuICAgICAgICAvLyBodW55dWFuIOavj+S4qiBjaHVuayDpg73kvJrmnIkgdXNhZ2XvvIzpgJDmraXlop7liqDvvIzku6XmnIDlkI7kuIDkuKrnmoTkuLrlh4Y7XG4gICAgICAgIC8vIHpoaXB1IOacgOWQjiBjaHVuayDkvJrmnIkgdXNhZ2U7XG4gICAgICAgIGlmIChjaHVuaz8udXNhZ2U/LmNvbXBsZXRpb25fdG9rZW5zKSBzdGVwVXNhZ2UuY29tcGxldGlvbl90b2tlbnMgPSBjaHVuay51c2FnZS5jb21wbGV0aW9uX3Rva2Vuc1xuICAgICAgICBpZiAoY2h1bms/LnVzYWdlPy5wcm9tcHRfdG9rZW5zKSBzdGVwVXNhZ2UucHJvbXB0X3Rva2VucyA9IGNodW5rLnVzYWdlLnByb21wdF90b2tlbnNcbiAgICAgICAgaWYgKGNodW5rPy51c2FnZT8udG90YWxfdG9rZW5zKSBzdGVwVXNhZ2UudG90YWxfdG9rZW5zID0gY2h1bmsudXNhZ2UudG90YWxfdG9rZW5zXG5cbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rKVxuICAgICAgfSxcbiAgICAgIGZsdXNoKCkge1xuICAgICAgICBtZXNzYWdlUHJvbWlzZS5yZXMoWy4uLmlucHV0Lm1lc3NhZ2VzLCBtZXNzYWdlXSlcbiAgICAgICAgYWRkVG9Vc2FnZSh0b3RhbFVzYWdlLCBzdGVwVXNhZ2UpXG4gICAgICAgIHVzYWdlUHJvbWlzZS5yZXMoT2JqZWN0LmFzc2lnbih7fSwgdG90YWxVc2FnZSkpXG4gICAgICAgIG9uU3RlcEZpbmlzaD8uKHtcbiAgICAgICAgICBtZXNzYWdlczogWy4uLmlucHV0Lm1lc3NhZ2VzLCBtZXNzYWdlXSxcbiAgICAgICAgICBmaW5pc2hSZWFzb24sXG4gICAgICAgICAgdGV4dDogbWVzc2FnZS5jb250ZW50LFxuICAgICAgICAgIHN0ZXBVc2FnZSxcbiAgICAgICAgICB0b3RhbFVzYWdlOiBPYmplY3QuYXNzaWduKHt9LCB0b3RhbFVzYWdlKSxcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgfSksKVxuXG4gICAgY29uc3QgW3MxLCBzMl0gPSBvcmlnaW5TdHJlYW0udGVlKClcblxuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlczogbWVzc2FnZVByb21pc2UucHJvbWlzZSxcbiAgICAgIGRhdGFTdHJlYW06IGNyZWF0ZUFzeW5jSXRlcmFibGUoczEpLFxuICAgICAgdGV4dFN0cmVhbTogY3JlYXRlQXN5bmNJdGVyYWJsZShzMi5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtKHtcbiAgICAgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgICAgY29uc3QgY29udGVudCA9IGNodW5rPy5jaG9pY2VzPy5bMF0/LmRlbHRhPy5jb250ZW50XG4gICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNvbnRlbnQpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSksKSwpLFxuICAgICAgdXNhZ2U6IHVzYWdlUHJvbWlzZS5wcm9taXNlLFxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRUb29sQ2FsbEZyb21HZW5lcmF0ZShvdXRwdXQ6IERvR2VuZXJhdGVPdXRwdXQpIHtcbiAgY29uc3QgY2hvaWNlID0gb3V0cHV0Py5jaG9pY2VzPy5bMF1cblxuICBpZiAoIWNob2ljZSkgcmV0dXJuIG51bGxcblxuICBjb25zdCB7IGZpbmlzaF9yZWFzb24sIG1lc3NhZ2UgfSA9IGNob2ljZVxuXG4gIGlmIChmaW5pc2hfcmVhc29uICE9PSAndG9vbF9jYWxscycpIHJldHVybiBudWxsXG4gIGlmICghbWVzc2FnZSkgcmV0dXJuIG51bGxcbiAgaWYgKCFpc1Rvb2xDYWxsQXNzaXN0YW50TWVzc2FnZShtZXNzYWdlKSkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gbWVzc2FnZS50b29sX2NhbGxzWzBdXG59XG5cbmZ1bmN0aW9uIHB1c2hOZXdNZXNzYWdlcyhcbiAgbWVzc2FnZXM6IEFycmF5PENoYXRNb2RlbE1lc3NhZ2U+LFxuICBhc3Npc3RhbnRNZXNzYWdlOiBUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UsXG4gIHRvb2xDYWxsUmVzdWx0OiB1bmtub3duLFxuKSB7XG4gIG1lc3NhZ2VzLnB1c2goYXNzaXN0YW50TWVzc2FnZSwge1xuICAgIHJvbGU6ICd0b29sJyxcbiAgICB0b29sX2NhbGxfaWQ6IGFzc2lzdGFudE1lc3NhZ2UudG9vbF9jYWxsc1swXS5pZCxcbiAgICBjb250ZW50OiBKU09OLnN0cmluZ2lmeSh0b29sQ2FsbFJlc3VsdCksXG4gIH0pXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRGdW5jdGlvbkNhbGxTdHJlYW0oc3RyZWFtOiBSZWFkYWJsZVN0cmVhbTxCYXNlRG9TdHJlYW1PdXRwdXRDaHVuaz4sKTogUHJvbWlzZTx7IG1lc3NhZ2U6IFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZTsgdXNhZ2U6IFVzYWdlIH0gfCBudWxsPiB7XG4gIGNvbnN0IHN0ZXBVc2FnZTogVXNhZ2UgPSB7IGNvbXBsZXRpb25fdG9rZW5zOiAwLCBwcm9tcHRfdG9rZW5zOiAwLCB0b3RhbF90b2tlbnM6IDAgfVxuICBjb25zdCBhU3RyZWFtID0gY3JlYXRlQXN5bmNJdGVyYWJsZShzdHJlYW0pXG5cbiAgY29uc3QgcmV0VG9vbENhbGw6IFRvb2xDYWxsID0ge1xuICAgIGlkOiAnJyxcbiAgICBmdW5jdGlvbjoge1xuICAgICAgbmFtZTogJycsXG4gICAgICBhcmd1bWVudHM6ICcnLFxuICAgIH0sXG4gICAgdHlwZTogJycsXG4gIH1cblxuICBjb25zdCByZXRNZXNzYWdlOiBUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UgPSB7XG4gICAgcm9sZTogJ2Fzc2lzdGFudCcsXG4gICAgY29udGVudDogJycsXG4gICAgdG9vbF9jYWxsczogW3JldFRvb2xDYWxsXSxcbiAgfVxuXG4gIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgYVN0cmVhbSkge1xuICAgIGNvbnN0IGNob2ljZSA9IGNodW5rPy5jaG9pY2VzWzBdXG4gICAgaWYgKCFjaG9pY2UpIHJldHVybiBudWxsXG5cbiAgICBjb25zdCB7IGZpbmlzaF9yZWFzb24sIGRlbHRhIH0gPSBjaG9pY2VcblxuICAgIGlmIChmaW5pc2hfcmVhc29uICE9PSAndG9vbF9jYWxscycpIHJldHVybiBudWxsXG4gICAgaWYgKCFkZWx0YSkgY29udGludWVcblxuICAgIGlmIChkZWx0YS5jb250ZW50KSByZXRNZXNzYWdlLmNvbnRlbnQgKz0gZGVsdGEuY29udGVudFxuXG4gICAgaWYgKCEoJ3Rvb2xfY2FsbHMnIGluIGRlbHRhKSkgY29udGludWVcbiAgICBjb25zdCB0b29sQ2FsbCA9IGRlbHRhPy50b29sX2NhbGxzPy5bMF1cbiAgICBpZiAodG9vbENhbGw/LmlkKSByZXRUb29sQ2FsbC5pZCA9IHRvb2xDYWxsLmlkXG4gICAgaWYgKHRvb2xDYWxsPy50eXBlKSByZXRUb29sQ2FsbC50eXBlID0gdG9vbENhbGwudHlwZVxuICAgIGlmICh0b29sQ2FsbD8uZnVuY3Rpb24/Lm5hbWUpIHJldFRvb2xDYWxsLmZ1bmN0aW9uLm5hbWUgPSB0b29sQ2FsbC5mdW5jdGlvbi5uYW1lXG4gICAgaWYgKHRvb2xDYWxsPy5mdW5jdGlvbj8uYXJndW1lbnRzKSByZXRUb29sQ2FsbC5mdW5jdGlvbi5hcmd1bWVudHMgKz0gdG9vbENhbGwuZnVuY3Rpb24uYXJndW1lbnRzXG5cbiAgICAvLyBUT0RPOiDkuI3lkIzlpKfmqKHlnovnmoQgc3RyZWFtIHVzYWdlIOagvOW8j+S4jeS4gOagt++8jOWQjue7reWPr+iDveimgeiwg+aVtC5cbiAgICAvLyBodW55dWFuIOavj+S4qiBjaHVuayDpg73kvJrmnIkgdXNhZ2XvvIzpgJDmraXlop7liqDvvIzku6XmnIDlkI7kuIDkuKrnmoTkuLrlh4Y7XG4gICAgLy8gemhpcHUg5pyA5ZCOIGNodW5rIOS8muaciSB1c2FnZTtcbiAgICBpZiAoY2h1bms/LnVzYWdlPy5jb21wbGV0aW9uX3Rva2Vucykgc3RlcFVzYWdlLmNvbXBsZXRpb25fdG9rZW5zID0gY2h1bmsudXNhZ2UuY29tcGxldGlvbl90b2tlbnNcbiAgICBpZiAoY2h1bms/LnVzYWdlPy5wcm9tcHRfdG9rZW5zKSBzdGVwVXNhZ2UucHJvbXB0X3Rva2VucyA9IGNodW5rLnVzYWdlLnByb21wdF90b2tlbnNcbiAgICBpZiAoY2h1bms/LnVzYWdlPy50b3RhbF90b2tlbnMpIHN0ZXBVc2FnZS50b3RhbF90b2tlbnMgPSBjaHVuay51c2FnZS50b3RhbF90b2tlbnNcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogcmV0TWVzc2FnZSxcbiAgICB1c2FnZTogc3RlcFVzYWdlLFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB0b29sTWFwID0gbmV3IE1hcDxzdHJpbmcsIENhbGxhYmxlRnVuY3Rpb24+KClcblxuZnVuY3Rpb24gY2FsbFRvb2wodG9vbENhbGw6IFRvb2xDYWxsKSB7XG4gIHJldHVybiB0b29sTWFwLmdldCh0b29sQ2FsbC5mdW5jdGlvbi5uYW1lKShKU09OLnBhcnNlKHRvb2xDYWxsLmZ1bmN0aW9uLmFyZ3VtZW50cykpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNvbGlkVXNhZ2UodXNhZ2U/OiBQYXJ0aWFsPFVzYWdlPik6IFVzYWdlIHtcbiAgcmV0dXJuIHtcbiAgICBjb21wbGV0aW9uX3Rva2VuczogdXNhZ2U/LmNvbXBsZXRpb25fdG9rZW5zID8/IDAsXG4gICAgcHJvbXB0X3Rva2VuczogdXNhZ2U/LnByb21wdF90b2tlbnMgPz8gMCxcbiAgICB0b3RhbF90b2tlbnM6IHVzYWdlPy50b3RhbF90b2tlbnMgPz8gMCxcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRUb1VzYWdlKHRhcmdldFVzYWdlOiBVc2FnZSwgc291cmNlVXNhZ2U6IFVzYWdlKSB7XG4gIHRhcmdldFVzYWdlLmNvbXBsZXRpb25fdG9rZW5zICs9IHNvdXJjZVVzYWdlLmNvbXBsZXRpb25fdG9rZW5zXG4gIHRhcmdldFVzYWdlLnByb21wdF90b2tlbnMgKz0gc291cmNlVXNhZ2UucHJvbXB0X3Rva2Vuc1xuICB0YXJnZXRVc2FnZS50b3RhbF90b2tlbnMgKz0gc291cmNlVXNhZ2UudG90YWxfdG9rZW5zXG59XG4iXX0=
@@ -108,4 +108,85 @@ export interface BaseDoStreamOutputChunk {
108
108
  }>;
109
109
  usage?: Usage;
110
110
  }
111
+ export interface ImageGenerateInput {
112
+ model: string;
113
+ prompt: string;
114
+ size?: string;
115
+ n?: number;
116
+ [key: string]: unknown;
117
+ }
118
+ export interface ImageEditInput {
119
+ model: string;
120
+ prompt: string;
121
+ size?: string;
122
+ n?: number;
123
+ [key: string]: unknown;
124
+ }
125
+ export interface HunyuanGenerateImageInput {
126
+ model: 'hunyuan-image';
127
+ prompt: string;
128
+ version?: 'v1.8.1' | 'v1.9' | (string & {});
129
+ size?: string;
130
+ negative_prompt?: string;
131
+ style?: '古风二次元风格' | '都市二次元风格' | '悬疑风格' | '校园风格' | '都市异能风格' | (string & {});
132
+ revise?: boolean;
133
+ n?: number;
134
+ footnote?: string;
135
+ seed?: number;
136
+ }
137
+ export interface HunyuanARGenerateImageInput {
138
+ model: 'HY-Image-3.0-Plus-4090-Tob-v1.0' | 'HY-Image-v3.0-I2I-ToB-v1.0.1' | 'hunyuan-image-v3.0-v1.0.4' | 'hunyuan-image-v3.0-v1.0.1' | 'hunyuan-image-v3.0-v1.0.5';
139
+ prompt: string;
140
+ size?: string;
141
+ seed?: number;
142
+ footnote?: string;
143
+ revise?: {
144
+ value: boolean;
145
+ };
146
+ enable_thinking?: {
147
+ value: boolean;
148
+ };
149
+ image_urls?: string[];
150
+ images?: string[];
151
+ }
152
+ export interface HunyuanARGenerateImageOutput {
153
+ id: string;
154
+ created: number;
155
+ data: Array<{
156
+ url: string;
157
+ revised_prompt?: string;
158
+ }>;
159
+ }
160
+ export type HunyuanEditImageInput = {
161
+ model: 'hunyuan-image' | (string & {});
162
+ prompt: string;
163
+ version?: string;
164
+ size?: string;
165
+ n?: number;
166
+ seed?: number;
167
+ footnote?: string;
168
+ image?: string;
169
+ image_url?: string;
170
+ } & ({
171
+ mask: string;
172
+ mask_url?: never;
173
+ } | {
174
+ mask?: never;
175
+ mask_url: string;
176
+ });
177
+ export interface HunyuanGenerateImageOutput {
178
+ id: string;
179
+ created: number;
180
+ data: Array<{
181
+ url: string;
182
+ revised_prompt?: string;
183
+ }>;
184
+ }
185
+ export interface HunyuanEditImageOutput {
186
+ id: string;
187
+ created: number;
188
+ data: Array<{
189
+ url: string;
190
+ }>;
191
+ }
111
192
  export {};
package/dist/cjs/type.js CHANGED
@@ -7,4 +7,4 @@ var SimpleChatModel = (function () {
7
7
  return SimpleChatModel;
8
8
  }());
9
9
  exports.SimpleChatModel = SimpleChatModel;
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBO0lBQUE7SUFJQSxDQUFDO0lBQUQsc0JBQUM7QUFBRCxDQUFDLEFBSkQsSUFJQztBQUpxQiwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTaW1wbGVDaGF0TW9kZWwge1xuICBwdWJsaWMgYWJzdHJhY3QgZG9HZW5lcmF0ZShkYXRhOiBCYXNlQ2hhdE1vZGVsSW5wdXQsIG9wdGlvbnM/OiBSZXFPcHRpb25zKTogUHJvbWlzZTxEb0dlbmVyYXRlT3V0cHV0PlxuXG4gIHB1YmxpYyBhYnN0cmFjdCBkb1N0cmVhbShkYXRhOiBCYXNlQ2hhdE1vZGVsSW5wdXQsIG9wdGlvbnM/OiBSZXFPcHRpb25zKTogUHJvbWlzZTxEb1N0cmVhbU91dHB1dD5cbn1cblxudHlwZSBSYXdSZXNwb25zZSA9IHsgcmF3UmVzcG9uc2U/OiBhbnkgfVxuXG5leHBvcnQgdHlwZSBEb0dlbmVyYXRlT3V0cHV0ID0gQmFzZURvR2VuZXJhdGVPdXRwdXQgJiBSYXdSZXNwb25zZVxuXG5leHBvcnQgdHlwZSBEb1N0cmVhbU91dHB1dCA9IEFzeW5jSXRlcmFibGVSZWFkYWJsZVN0cmVhbTxCYXNlRG9TdHJlYW1PdXRwdXRDaHVuayAmIFJhd1Jlc3BvbnNlPlxuXG5leHBvcnQgdHlwZSBDaGF0TW9kZWxDb25zdHJ1Y3RvciA9IHR5cGVvZiBTaW1wbGVDaGF0TW9kZWxcblxuZXhwb3J0IHR5cGUgQXN5bmNJdGVyYWJsZVJlYWRhYmxlU3RyZWFtPFQ+ID0gUmVhZGFibGVTdHJlYW08VD4gJiB7XG4gIFtTeW1ib2wuYXN5bmNJdGVyYXRvcl06ICgpID0+IHsgbmV4dCgpOiBQcm9taXNlPEl0ZXJhdG9yUmVzdWx0PFQ+PiB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1vZGVsUmVxSW5wdXQge1xuICB1cmw6IHN0cmluZ1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICBkYXRhPzogT2JqZWN0XG4gIHN0cmVhbT86IGJvb2xlYW4sXG4gIHRpbWVvdXQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgTW9kZWxSZXEgPSA8VCBleHRlbmRzIElNb2RlbFJlcUlucHV0PihcbiAgcHJvcHM6IFQsXG4pID0+IFRbJ3N0cmVhbSddIGV4dGVuZHMgdHJ1ZSA/IFByb21pc2U8UmVhZGFibGVTdHJlYW08VWludDhBcnJheT4+IDogUHJvbWlzZTxPYmplY3Q+XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJvdFJlcUlucHV0IHtcbiAgdXJsOiBzdHJpbmdcbiAgbWV0aG9kOiBzdHJpbmdcbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgZGF0YT86IE9iamVjdFxuICBzdHJlYW0/OiBib29sZWFuXG4gIHRpbWVvdXQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXFPcHRpb25zIHtcbiAgdGltZW91dD86IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBCb3RSZXEgPSA8VCBleHRlbmRzIElCb3RSZXFJbnB1dD4oXG4gIHByb3BzOiBULFxuKSA9PiBUWydzdHJlYW0nXSBleHRlbmRzIHRydWUgPyBQcm9taXNlPFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+PiA6IFByb21pc2U8T2JqZWN0PlxuXG5leHBvcnQgdHlwZSBVc2VyTWVzc2FnZSA9IHtcbiAgcm9sZTogJ3VzZXInXG4gIGNvbnRlbnQ6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBTeXN0ZW1NZXNzYWdlID0ge1xuICByb2xlOiAnc3lzdGVtJ1xuICBjb250ZW50OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQXNzaXN0YW50TWVzc2FnZSA9IFBsYWluQXNzaXN0YW50TWVzc2FnZSB8IFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZVxuXG5leHBvcnQgdHlwZSBQbGFpbkFzc2lzdGFudE1lc3NhZ2UgPSB7XG4gIHJvbGU6ICdhc3Npc3RhbnQnXG4gIGNvbnRlbnQ6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UgPSB7XG4gIHJvbGU6ICdhc3Npc3RhbnQnXG4gIHRvb2xfY2FsbHM6IEFycmF5PFRvb2xDYWxsPlxuICBjb250ZW50Pzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFRvb2xNZXNzYWdlID0ge1xuICByb2xlOiAndG9vbCdcbiAgdG9vbF9jYWxsX2lkOiBzdHJpbmdcbiAgY29udGVudDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIENoYXRNb2RlbE1lc3NhZ2UgPSBVc2VyTWVzc2FnZSB8IFN5c3RlbU1lc3NhZ2UgfCBBc3Npc3RhbnRNZXNzYWdlIHwgVG9vbE1lc3NhZ2VcblxuZXhwb3J0IHR5cGUgRnVuY3Rpb25Ub29sID0ge1xuICBuYW1lOiBzdHJpbmdcbiAgZGVzY3JpcHRpb246IHN0cmluZ1xuICBmbjogQ2FsbGFibGVGdW5jdGlvblxuICBwYXJhbWV0ZXJzOiBvYmplY3Rcbn1cblxuLy8gI3JlZ2lvbiDlpKfmqKHlnovmoIflh4bovpPlhaXnsbvlnotcbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUNoYXRNb2RlbElucHV0IHtcbiAgbW9kZWw6IHN0cmluZ1xuICBtZXNzYWdlczogQXJyYXk8Q2hhdE1vZGVsTWVzc2FnZT5cbiAgdGVtcGVyYXR1cmU/OiBudW1iZXJcbiAgdG9wX3A/OiBudW1iZXJcbiAgdG9vbHM/OiBBcnJheTxNb2RlbFRvb2w+XG4gIHRvb2xfY2hvaWNlPzogJ25vbmUnIHwgJ2F1dG8nIHwgJ2N1c3RvbSdcbn1cblxuLyoqXG4gKiDnu5kgTExNIOWPkeivt+axguaXtuimgeS8oOeahOW3peWFt1xuICovXG5leHBvcnQgdHlwZSBNb2RlbFRvb2wgPSB7XG4gIHR5cGU6IHN0cmluZ1xuICBmdW5jdGlvbjogTW9kZWxUb29sRnVuY3Rpb25cbn1cblxuLyoqXG4gKiDnu5kgTExNIOWPkeivt+axguaXtuimgeS8oOeahOW3peWFt+WHveaVsFxuICovXG5leHBvcnQgdHlwZSBNb2RlbFRvb2xGdW5jdGlvbiA9IHtcbiAgbmFtZTogc3RyaW5nXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmdcbiAgLyoqXG4gICAqIOaPj+i/sOWHveaVsOWPguaVsOeahCBKU09OIFNjaGVtYVxuICAgKi9cbiAgcGFyYW1ldGVyczogb2JqZWN0XG59XG4vLyAjZW5kcmVnaW9uXG5cbi8vICNyZWdpb24g5aSn5qih5Z6L5qCH5YeG5ZON5bqU57G75Z6LXG5leHBvcnQgdHlwZSBUb29sQ2FsbCA9IHtcbiAgaWQ6IHN0cmluZ1xuICB0eXBlOiBzdHJpbmdcbiAgZnVuY3Rpb246IHsgbmFtZTogc3RyaW5nOyBhcmd1bWVudHM6IHN0cmluZyB9XG59XG5cbnR5cGUgRmluaXNoUmVhc29uID0gJ3Rvb2xfY2FsbHMnIHwgKHN0cmluZyAmIHt9KVxuXG5leHBvcnQgdHlwZSBVc2FnZSA9IHtcbiAgY29tcGxldGlvbl90b2tlbnM6IG51bWJlclxuICBwcm9tcHRfdG9rZW5zOiBudW1iZXJcbiAgdG90YWxfdG9rZW5zOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRG9HZW5lcmF0ZU91dHB1dCB7XG4gIGNob2ljZXM/OiBBcnJheTx7XG4gICAgZmluaXNoX3JlYXNvbj86IEZpbmlzaFJlYXNvblxuICAgIG1lc3NhZ2U/OiBDaGF0TW9kZWxNZXNzYWdlXG4gIH0+XG4gIHVzYWdlPzogVXNhZ2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRG9TdHJlYW1PdXRwdXRDaHVuayB7XG4gIGNob2ljZXM/OiBBcnJheTx7XG4gICAgZmluaXNoX3JlYXNvbj86IEZpbmlzaFJlYXNvblxuICAgIGRlbHRhPzogQ2hhdE1vZGVsTWVzc2FnZVxuICB9PlxuICB1c2FnZT86IFVzYWdlXG59XG4vLyAjZW5kcmVnaW9uXG4iXX0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBO0lBQUE7SUFJQSxDQUFDO0lBQUQsc0JBQUM7QUFBRCxDQUFDLEFBSkQsSUFJQztBQUpxQiwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTaW1wbGVDaGF0TW9kZWwge1xuICBwdWJsaWMgYWJzdHJhY3QgZG9HZW5lcmF0ZShkYXRhOiBCYXNlQ2hhdE1vZGVsSW5wdXQsIG9wdGlvbnM/OiBSZXFPcHRpb25zKTogUHJvbWlzZTxEb0dlbmVyYXRlT3V0cHV0PlxuXG4gIHB1YmxpYyBhYnN0cmFjdCBkb1N0cmVhbShkYXRhOiBCYXNlQ2hhdE1vZGVsSW5wdXQsIG9wdGlvbnM/OiBSZXFPcHRpb25zKTogUHJvbWlzZTxEb1N0cmVhbU91dHB1dD5cbn1cblxudHlwZSBSYXdSZXNwb25zZSA9IHsgcmF3UmVzcG9uc2U/OiBhbnkgfVxuXG5leHBvcnQgdHlwZSBEb0dlbmVyYXRlT3V0cHV0ID0gQmFzZURvR2VuZXJhdGVPdXRwdXQgJiBSYXdSZXNwb25zZVxuXG5leHBvcnQgdHlwZSBEb1N0cmVhbU91dHB1dCA9IEFzeW5jSXRlcmFibGVSZWFkYWJsZVN0cmVhbTxCYXNlRG9TdHJlYW1PdXRwdXRDaHVuayAmIFJhd1Jlc3BvbnNlPlxuXG5leHBvcnQgdHlwZSBDaGF0TW9kZWxDb25zdHJ1Y3RvciA9IHR5cGVvZiBTaW1wbGVDaGF0TW9kZWxcblxuZXhwb3J0IHR5cGUgQXN5bmNJdGVyYWJsZVJlYWRhYmxlU3RyZWFtPFQ+ID0gUmVhZGFibGVTdHJlYW08VD4gJiB7XG4gIFtTeW1ib2wuYXN5bmNJdGVyYXRvcl06ICgpID0+IHsgbmV4dCgpOiBQcm9taXNlPEl0ZXJhdG9yUmVzdWx0PFQ+PiB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1vZGVsUmVxSW5wdXQge1xuICB1cmw6IHN0cmluZ1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICBkYXRhPzogT2JqZWN0XG4gIHN0cmVhbT86IGJvb2xlYW5cbiAgdGltZW91dD86IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBNb2RlbFJlcSA9IDxUIGV4dGVuZHMgSU1vZGVsUmVxSW5wdXQ+KFxuICBwcm9wczogVCxcbikgPT4gVFsnc3RyZWFtJ10gZXh0ZW5kcyB0cnVlID8gUHJvbWlzZTxSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5Pj4gOiBQcm9taXNlPE9iamVjdD5cblxuZXhwb3J0IGludGVyZmFjZSBJQm90UmVxSW5wdXQge1xuICB1cmw6IHN0cmluZ1xuICBtZXRob2Q6IHN0cmluZ1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICBkYXRhPzogT2JqZWN0XG4gIHN0cmVhbT86IGJvb2xlYW5cbiAgdGltZW91dD86IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcU9wdGlvbnMge1xuICB0aW1lb3V0PzogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIEJvdFJlcSA9IDxUIGV4dGVuZHMgSUJvdFJlcUlucHV0PihcbiAgcHJvcHM6IFQsXG4pID0+IFRbJ3N0cmVhbSddIGV4dGVuZHMgdHJ1ZSA/IFByb21pc2U8UmVhZGFibGVTdHJlYW08VWludDhBcnJheT4+IDogUHJvbWlzZTxPYmplY3Q+XG5cbmV4cG9ydCB0eXBlIFVzZXJNZXNzYWdlID0ge1xuICByb2xlOiAndXNlcidcbiAgY29udGVudDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFN5c3RlbU1lc3NhZ2UgPSB7XG4gIHJvbGU6ICdzeXN0ZW0nXG4gIGNvbnRlbnQ6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBBc3Npc3RhbnRNZXNzYWdlID0gUGxhaW5Bc3Npc3RhbnRNZXNzYWdlIHwgVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlXG5cbmV4cG9ydCB0eXBlIFBsYWluQXNzaXN0YW50TWVzc2FnZSA9IHtcbiAgcm9sZTogJ2Fzc2lzdGFudCdcbiAgY29udGVudDogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZSA9IHtcbiAgcm9sZTogJ2Fzc2lzdGFudCdcbiAgdG9vbF9jYWxsczogQXJyYXk8VG9vbENhbGw+XG4gIGNvbnRlbnQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgVG9vbE1lc3NhZ2UgPSB7XG4gIHJvbGU6ICd0b29sJ1xuICB0b29sX2NhbGxfaWQ6IHN0cmluZ1xuICBjb250ZW50OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgQ2hhdE1vZGVsTWVzc2FnZSA9IFVzZXJNZXNzYWdlIHwgU3lzdGVtTWVzc2FnZSB8IEFzc2lzdGFudE1lc3NhZ2UgfCBUb29sTWVzc2FnZVxuXG5leHBvcnQgdHlwZSBGdW5jdGlvblRvb2wgPSB7XG4gIG5hbWU6IHN0cmluZ1xuICBkZXNjcmlwdGlvbjogc3RyaW5nXG4gIGZuOiBDYWxsYWJsZUZ1bmN0aW9uXG4gIHBhcmFtZXRlcnM6IG9iamVjdFxufVxuXG4vLyAjcmVnaW9uIOWkp+aooeWei+agh+WHhui+k+WFpeexu+Wei1xuZXhwb3J0IGludGVyZmFjZSBCYXNlQ2hhdE1vZGVsSW5wdXQge1xuICBtb2RlbDogc3RyaW5nXG4gIG1lc3NhZ2VzOiBBcnJheTxDaGF0TW9kZWxNZXNzYWdlPlxuICB0ZW1wZXJhdHVyZT86IG51bWJlclxuICB0b3BfcD86IG51bWJlclxuICB0b29scz86IEFycmF5PE1vZGVsVG9vbD5cbiAgdG9vbF9jaG9pY2U/OiAnbm9uZScgfCAnYXV0bycgfCAnY3VzdG9tJ1xufVxuXG4vKipcbiAqIOe7mSBMTE0g5Y+R6K+35rGC5pe26KaB5Lyg55qE5bel5YW3XG4gKi9cbmV4cG9ydCB0eXBlIE1vZGVsVG9vbCA9IHtcbiAgdHlwZTogc3RyaW5nXG4gIGZ1bmN0aW9uOiBNb2RlbFRvb2xGdW5jdGlvblxufVxuXG4vKipcbiAqIOe7mSBMTE0g5Y+R6K+35rGC5pe26KaB5Lyg55qE5bel5YW35Ye95pWwXG4gKi9cbmV4cG9ydCB0eXBlIE1vZGVsVG9vbEZ1bmN0aW9uID0ge1xuICBuYW1lOiBzdHJpbmdcbiAgZGVzY3JpcHRpb246IHN0cmluZ1xuICAvKipcbiAgICog5o+P6L+w5Ye95pWw5Y+C5pWw55qEIEpTT04gU2NoZW1hXG4gICAqL1xuICBwYXJhbWV0ZXJzOiBvYmplY3Rcbn1cbi8vICNlbmRyZWdpb25cblxuLy8gI3JlZ2lvbiDlpKfmqKHlnovmoIflh4blk43lupTnsbvlnotcbmV4cG9ydCB0eXBlIFRvb2xDYWxsID0ge1xuICBpZDogc3RyaW5nXG4gIHR5cGU6IHN0cmluZ1xuICBmdW5jdGlvbjogeyBuYW1lOiBzdHJpbmc7IGFyZ3VtZW50czogc3RyaW5nIH1cbn1cblxudHlwZSBGaW5pc2hSZWFzb24gPSAndG9vbF9jYWxscycgfCAoc3RyaW5nICYge30pXG5cbmV4cG9ydCB0eXBlIFVzYWdlID0ge1xuICBjb21wbGV0aW9uX3Rva2VuczogbnVtYmVyXG4gIHByb21wdF90b2tlbnM6IG51bWJlclxuICB0b3RhbF90b2tlbnM6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VEb0dlbmVyYXRlT3V0cHV0IHtcbiAgY2hvaWNlcz86IEFycmF5PHtcbiAgICBmaW5pc2hfcmVhc29uPzogRmluaXNoUmVhc29uXG4gICAgbWVzc2FnZT86IENoYXRNb2RlbE1lc3NhZ2VcbiAgfT5cbiAgdXNhZ2U/OiBVc2FnZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VEb1N0cmVhbU91dHB1dENodW5rIHtcbiAgY2hvaWNlcz86IEFycmF5PHtcbiAgICBmaW5pc2hfcmVhc29uPzogRmluaXNoUmVhc29uXG4gICAgZGVsdGE/OiBDaGF0TW9kZWxNZXNzYWdlXG4gIH0+XG4gIHVzYWdlPzogVXNhZ2Vcbn1cbi8vICNlbmRyZWdpb25cblxuLy8gI3JlZ2lvbiBJbWFnZSBNb2RlbCBUeXBlc1xuLyoqXG4gKiDlm77niYfnlJ/miJDovpPlhaXlj4LmlbBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZUdlbmVyYXRlSW5wdXQge1xuICBtb2RlbDogc3RyaW5nIC8vIOaooeWei+WQjeensO+8jOS+i+WmgiAnaHVueXVhbi1pbWFnZSfjgIEnZGFsbC1lLTMnXG4gIHByb21wdDogc3RyaW5nIC8vIOeUqOS6juaPj+i/sOimgeeUn+aIkOeahOWbvueJh+WGheWuuVxuICBzaXplPzogc3RyaW5nIC8vIOWwuuWvuFxuICBuPzogbnVtYmVyIC8vIOW8oOaVsFxuICBba2V5OiBzdHJpbmddOiB1bmtub3duIC8vIOWFgeiuuOmineWklueahOWOguWVhueJueWumuWPguaVsFxufVxuXG4vKipcbiAqIOWbvueJh+e8lui+kei+k+WFpeWPguaVsFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltYWdlRWRpdElucHV0IHtcbiAgbW9kZWw6IHN0cmluZ1xuICBwcm9tcHQ6IHN0cmluZ1xuICBzaXplPzogc3RyaW5nIC8vIOWwuuWvuFxuICBuPzogbnVtYmVyIC8vIOW8oOaVsFxuICBba2V5OiBzdHJpbmddOiB1bmtub3duIC8vIOWFgeiuuOmineWklueahOWOguWVhueJueWumuWPguaVsFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEh1bnl1YW5HZW5lcmF0ZUltYWdlSW5wdXQge1xuICBtb2RlbDogJ2h1bnl1YW4taW1hZ2UnXG4gIC8qKiDnlKjmnaXnlJ/miJDlm77lg4/nmoTmlofmnKzmj4/ov7AgKi9cbiAgcHJvbXB0OiBzdHJpbmdcbiAgLyoqXG4gICAqIOaooeWei+eJiOacrO+8jOaUr+aMgSB2MS44LjEg5ZKMIHYxLjnvvIzpu5jorqTniYjmnKwgdjEuOC4xXG4gICAqIC0gdjEuOC4xOiDph4fnlKjkuozpmLbmrrXmqKHlnovmlK/mjIHmlofnlJ/lm77ku7vliqHvvIzpkojlr7nlm77lg4/nu4boioLjgIHnqLPlrprmgKfnrYnopoHmsYLpq5jnmoTku7vliqHovoPkuLrlkIjpgIJcbiAgICogLSB2MS45OiDph4fnlKjmqKHlnovnn6npmLXog73lipvmlK/mjIHmlofnlJ/lm77ku7vliqHvvIzlkI7nq6/nlLHkurrlg4/jgIHmuLjmiI/jgIHpgJrnlKjmqKHlnovvvIzku6Xlj4rlkITnsbvlip/og73mj5Lku7bnu4TmiJDvvIzngbXmtLvpgILphY3lpJrnp43mlofnlJ/lm77ku7vliqFcbiAgICovXG4gIHZlcnNpb24/OiAndjEuOC4xJyB8ICd2MS45JyB8IChzdHJpbmcgJiB7fSlcbiAgLyoqXG4gICAqIOWbvueJh+WwuuWvuO+8jOm7mOiupCBcIjEwMjR4MTAyNFwiXG4gICAqIHYxLjkg5LuF5pSv5oyB5Lul5LiL5Yeg5Liq5bC65a+477yaXG4gICAqIC0gMTAyNHgxMDI0XG4gICAqIC0gMTAyNHg3NjgsIDExNTJ4ODY0XG4gICAqIC0gNzY4eDEwMjQsIDg2NHgxMTUyXG4gICAqIC0gMTI4MHg3NjggKDE2OjkpXG4gICAqIC0gNzY4eDEyODAgKDk6MTYpXG4gICAqIC0gMTI4MHg3MjAgKDE2OjkpXG4gICAqIC0gNzIweDEyODAgKDk6MTYpXG4gICAqXG4gICAqIOaUr+aMgeeUqOaIt+iHquWumuS5ieWwuuWvuO+8jOS9hui+k+WFpeWwuuWvuOWPquaUr+aMgSA3NjgtMTI4MCDkuYvpl7TkuJTkuLogNjQg55qE5YCN5pWw55qE5pWw5a2XXG4gICAqL1xuICBzaXplPzogc3RyaW5nXG4gIC8qKlxuICAgKiDku4UgdjEuOSDmlK/mjIHvvIzotJ/lkJHor41cbiAgICog5aaC5p6c5LiN5Lyg5YiZ5L2/55So5ZCE5Liq5qih5Z6L5YaF6YOo55qE6buY6K6k6LSf5ZCR6K+NXG4gICAqL1xuICBuZWdhdGl2ZV9wcm9tcHQ/OiBzdHJpbmdcbiAgLyoqXG4gICAqIOS7hSB2MS45IOaUr+aMge+8jOWPr+aMh+WumumjjuagvO+8mlxuICAgKiAtIOWPpOmjjuS6jOasoeWFg+mjjuagvFxuICAgKiAtIOmDveW4guS6jOasoeWFg+mjjuagvFxuICAgKiAtIOaCrOeWkemjjuagvFxuICAgKiAtIOagoeWbremjjuagvFxuICAgKiAtIOmDveW4guW8guiDvemjjuagvFxuICAgKi9cbiAgc3R5bGU/OiAn5Y+k6aOO5LqM5qyh5YWD6aOO5qC8JyB8ICfpg73luILkuozmrKHlhYPpo47moLwnIHwgJ+aCrOeWkemjjuagvCcgfCAn5qCh5Zut6aOO5qC8JyB8ICfpg73luILlvILog73po47moLwnIHwgKHN0cmluZyAmIHt9KVxuICAvKipcbiAgICog5Li6IHRydWUg5pe25a+5IHByb21wdCDov5vooYzmlLnlhpnvvIzlrp7pmYXnlJ/miJDnmoTlm77niYfkvJrkvb/nlKjmlLnlhpnlkI7nmoQgcHJvbXB0IOi/m+ihjOeUn+aIkFxuICAgKiDlpJrmlbDlnLrmma/lj6/mj5DljYfnlJ/miJDnmoTlm77niYfmlYjmnpzvvIzpu5jorqTkuLogdHJ1ZVxuICAgKi9cbiAgcmV2aXNlPzogYm9vbGVhblxuICAvKipcbiAgICog55Sf5oiQ5Zu+54mH5Liq5pWw77yM6buY6K6k5Li6IDFcbiAgICog55uu5YmN5Y+q5pSv5oyB55Sf5oiQ5LiA5byg77yM5Zu65a6a5Li6IDHvvIzkvKDlhbbku5bnmoTlgLzkvJrmiqXplJlcbiAgICovXG4gIG4/OiBudW1iZXJcbiAgLyoqXG4gICAqIOS4muWKoeiHquWumuS5ieawtOWNsOWGheWuuVxuICAgKiDpmZDliLYgMTYg5Liq5a2X56ym6ZW/5bqm77yI5LiN5Yy65YiG5Lit6Iux5paH77yJ77yM55Sf5oiQ5Zyo5Zu+54mH5Y+z5LiL6KeSXG4gICAqL1xuICBmb290bm90ZT86IHN0cmluZ1xuICAvKipcbiAgICog55Sf5oiQ56eN5a2Q77yM5LuF5b2T55Sf5oiQ5Zu+54mH5pWw5Li6IDEg5pe255Sf5pWIXG4gICAqIOiMg+WbtCBbMSwgNDI5NDk2NzI5NV3vvIzkuI3kvKDml7bpu5jorqTpmo/mnLpcbiAgICovXG4gIHNlZWQ/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdW55dWFuQVJHZW5lcmF0ZUltYWdlSW5wdXQge1xuICAvKiog5qih5Z6L5ZCN56ew77yaaHVueXVhbi1pbWFnZS12My4wLXYxLjAuNO+8iOaOqOiNkO+8ieaIliBodW55dWFuLWltYWdlLXYzLjAtdjEuMC4xICovXG4gIG1vZGVsOlxuICB8ICdIWS1JbWFnZS0zLjAtUGx1cy00MDkwLVRvYi12MS4wJ1xuICB8ICdIWS1JbWFnZS12My4wLUkySS1Ub0ItdjEuMC4xJ1xuICB8ICdodW55dWFuLWltYWdlLXYzLjAtdjEuMC40J1xuICB8ICdodW55dWFuLWltYWdlLXYzLjAtdjEuMC4xJ1xuICB8ICdodW55dWFuLWltYWdlLXYzLjAtdjEuMC41J1xuICAvKiog55Sf5oiQ5Zu+54mH5L2/55So55qE5paH5pys77yM5LiN6LaF6L+HIDgxOTIg5a2X56ymICovXG4gIHByb21wdDogc3RyaW5nXG4gIC8qKlxuICAgKiDlm77niYflsLrlr7jvvIzmoLzlvI8gXCIke+WuvX14JHvpq5h9XCLvvIzpu5jorqQgXCIxMDI0eDEwMjRcIlxuICAgKiBIWS1JbWFnZS0zLjAtUGx1cy00MDkwLVRvYi12MS4wIGh1bnl1YW4taW1hZ2UtdjMuMC12MS4wLjTvvJrlrr3pq5ggWzUxMiwgMjA0OF3vvIzpnaLnp6/kuI3otoXov4cgMTAyNHgxMDI0XG4gICAqIGh1bnl1YW4taW1hZ2UtdjMuMC12MS4wLjHvvJrmlK/mjIHlm7rlrprlsLrlr7jliJfooahcbiAgICovXG4gIHNpemU/OiBzdHJpbmdcbiAgLyoqIOeUn+aIkOenjeWtkO+8jOS7heW9k+eUn+aIkOWbvueJh+aVsOS4uiAxIOaXtueUn+aViO+8jOiMg+WbtCBbMSwgNDI5NDk2NzI5NV0gKi9cbiAgc2VlZD86IG51bWJlclxuICAvKiog5Lia5Yqh6Ieq5a6a5LmJ5rC05Y2w5YaF5a6577yM6ZmQ5Yi2IDE2IOWtl+espu+8jOeUn+aIkOWcqOWbvueJh+WPs+S4i+inkiAqL1xuICBmb290bm90ZT86IHN0cmluZ1xuICAvKiog5piv5ZCm5a+5IHByb21wdCDmlLnlhpnvvIzpu5jorqTlvIDlkK/jgILmlLnlhpnkvJrlop7liqDnuqYgMzBzIOiAl+aXtiAqL1xuICByZXZpc2U/OiB7IHZhbHVlOiBib29sZWFuIH1cbiAgLyoqIOaUueWGmeaYr+WQpuW8gOWQryB0aGlua2luZyDmqKHlvI/vvIzpu5jorqTlvIDlkK/jgILlvIDlkK/lkI7mlYjmnpzmj5DljYfkvYbogJfml7blop7liqDvvIjmnIDlpKcgNjBz77yJICovXG4gIGVuYWJsZV90aGlua2luZz86IHsgdmFsdWU6IGJvb2xlYW4gfVxuICAvKipcbiAgICog5Z6r5Zu+dXJs5YiX6KGo77yM5LiOaW1hZ2XkuozpgInkuIDvvIzkvJjlhYjpgIlpbWFnZe+8jOWkp+Wwj+S4jei2hei/hzEwTULvvIzmlK/mjIEganBnIGpwZWcgcG5nIOagvOW8j++8jOacgOWkmjPlvKDlm77vvIxpbWFnZV91cmxz5ZKMaW1hZ2Vz5b+F5pyJ5LiA5Liq6Z2e56m6XG4gICAqL1xuICBpbWFnZV91cmxzPzogc3RyaW5nW11cbiAgLyoqXG4gICAqIOWeq+WbvmJhc2U2NOWIl+ihqO+8jOS4jmltYWdlX3VybOS6jOmAieS4gO+8jOS8mOWFiOmAiWltYWdl77yM5aSn5bCP5LiN6LaF6L+HMTBNQu+8jOaUr+aMgSBqcGcganBlZyBwbmcg5qC85byP77yM5pyA5aSaM+W8oOWbvlxuICAgKi9cbiAgaW1hZ2VzPzogc3RyaW5nW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdW55dWFuQVJHZW5lcmF0ZUltYWdlT3V0cHV0IHtcbiAgLyoqIOatpOasoeivt+axgueahCBpZCAqL1xuICBpZDogc3RyaW5nXG4gIC8qKiB1bml4IOaXtumXtOaIsyAqL1xuICBjcmVhdGVkOiBudW1iZXJcbiAgLyoqIOi/lOWbnueahOWbvueJh+eUn+aIkOWGheWuuSAqL1xuICBkYXRhOiBBcnJheTx7XG4gICAgLyoqIOeUn+aIkOeahOWbvueJhyB1cmzvvIzmnInmlYjmnJ8gMjQg5bCP5pe2ICovXG4gICAgdXJsOiBzdHJpbmdcbiAgICAvKiog5pS55YaZ5ZCO55qEIHByb21wdCAqL1xuICAgIHJldmlzZWRfcHJvbXB0Pzogc3RyaW5nXG4gIH0+XG59XG5cbmV4cG9ydCB0eXBlIEh1bnl1YW5FZGl0SW1hZ2VJbnB1dCA9IHtcbiAgLyoqIOaooeWei+WQjeensO+8jOacrOacn+S4uiBodW55dWFuLWltYWdl77yM5Y2z5Li65ZWG5ZOB5Zu+57yW6L6R5Zy65pmvICovXG4gIG1vZGVsOiAnaHVueXVhbi1pbWFnZScgfCAoc3RyaW5nICYge30pXG4gIC8qKiDnvJbovpHnmoTmlofmnKzmj4/ov7AgKi9cbiAgcHJvbXB0OiBzdHJpbmdcbiAgLyoqIOaooeWei+eJiOacrCAqL1xuICB2ZXJzaW9uPzogc3RyaW5nXG4gIC8qKlxuICAgKiDlm77niYflsLrlr7jvvIzpu5jorqQgXCI4MDB4ODAwXCJcbiAgICog5pSv5oyB55So5oi36Ieq5a6a5LmJ5bC65a+477yM5L2G6L6T5YWl5bC65a+45Y+q5pSv5oyBIDUxMi0xMjgwIOS5i+mXtFxuICAgKiDnm67liY3lj6rmlK/mjIEgMTox44CBMTY6OeOAgTk6MTYg5LiJ5Liq5bC65a+4XG4gICAqL1xuICBzaXplPzogc3RyaW5nXG4gIC8qKlxuICAgKiDnlJ/miJDlm77niYfkuKrmlbDvvIzpu5jorqTkuLogMVxuICAgKiDnm67liY3lj6rmlK/mjIHnlJ/miJDkuIDlvKDvvIzlm7rlrprkuLogMe+8jOS8oOWFtuS7lueahOWAvOS8muaKpemUmVxuICAgKi9cbiAgbj86IG51bWJlclxuICAvKipcbiAgICogYmV0YSDlj4LmlbDvvIzpmo/mnLrnp43lrZBcbiAgICog6IyD5Zu0IFsxLCA0Mjk0OTY3Mjk1Xe+8jOS4jeS8oOaXtum7mOiupOmaj+aculxuICAgKi9cbiAgc2VlZD86IG51bWJlclxuICAvKipcbiAgICog5Lia5Yqh6Ieq5a6a5LmJ6KeS5qCH5YaF5a65XG4gICAqIOmZkOWItiAxNiDkuKrlrZfnrKbplb/luqbvvIjkuI3ljLrliIbkuK3oi7HmlofvvIlcbiAgICovXG4gIGZvb3Rub3RlPzogc3RyaW5nXG4gIC8qKlxuICAgKiDlm74gYmFzZTY0IOe8luegge+8jOWkp+Wwj+S4jei2hei/hyA2TVxuICAgKiDmlK/mjIEganBnL2pwZWcg5qC85byP77yM5ZKMIGltYWdlX3VybCDkuozpgInkuIBcbiAgICog6ZW/55+t6L655q+U5L6L6KaB5rGCIDI6MSDlhoVcbiAgICovXG4gIGltYWdlPzogc3RyaW5nXG4gIC8qKlxuICAgKiDlm77niYcgdXJsXG4gICAqIOmVv+efrei+ueavlOS+i+imgeaxgiAyOjEg5YaF77yM5ZKMIGltYWdlIOS6jOmAieS4gFxuICAgKi9cbiAgaW1hZ2VfdXJsPzogc3RyaW5nXG59ICYgKFxuICB8IHtcbiAgICBtYXNrOiBzdHJpbmdcbiAgICBtYXNrX3VybD86IG5ldmVyXG4gIH1cbiAgfCB7XG4gICAgbWFzaz86IG5ldmVyXG4gICAgbWFza191cmw6IHN0cmluZ1xuICB9XG4pXG5cbi8qKlxuICog5re35YWD5Zu+54mH55Sf5oiQ6L6T5Ye6XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHVueXVhbkdlbmVyYXRlSW1hZ2VPdXRwdXQge1xuICAvKiog5q2k5qyh6K+35rGC55qEIGlkICovXG4gIGlkOiBzdHJpbmdcbiAgLyoqIHVuaXgg5pe26Ze05oizICovXG4gIGNyZWF0ZWQ6IG51bWJlclxuICAvKiog6L+U5Zue55qE5Zu+54mH55Sf5oiQ5YaF5a65ICovXG4gIGRhdGE6IEFycmF5PHtcbiAgICAvKiog55Sf5oiQ55qE5Zu+54mHIHVybO+8jOacieaViOacn+S4uiAyNCDlsI/ml7YgKi9cbiAgICB1cmw6IHN0cmluZ1xuICAgIC8qKiDljp8gcHJvbXB0IOaUueWGmeWQjueahOaWh+acrOOAguiLpSByZXZpc2Ug5Li6IGZhbHNl77yM5YiZ5Li65Y6fIHByb21wdCAqL1xuICAgIHJldmlzZWRfcHJvbXB0Pzogc3RyaW5nXG4gIH0+XG59XG5cbi8qKlxuICog5re35YWD5Zu+54mH57yW6L6R6L6T5Ye6XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHVueXVhbkVkaXRJbWFnZU91dHB1dCB7XG4gIC8qKiDmraTmrKHor7fmsYLnmoQgaWQgKi9cbiAgaWQ6IHN0cmluZ1xuICAvKiogdW5peCDml7bpl7TmiLMgKi9cbiAgY3JlYXRlZDogbnVtYmVyXG4gIC8qKiDov5Tlm57nmoTlm77niYfnlJ/miJDlhoXlrrkgKi9cbiAgZGF0YTogQXJyYXk8e1xuICAgIC8qKiDnlJ/miJDnmoTlm77niYcgdXJs77yM5pyJ5pWI5pyf5Li6IDI0IOWwj+aXtiAqL1xuICAgIHVybDogc3RyaW5nXG4gIH0+XG59XG5cbi8vICNlbmRyZWdpb25cbiJdfQ==
@@ -13,7 +13,7 @@ export declare const TransformStream: {
13
13
  prototype: TransformStream;
14
14
  };
15
15
  export declare const createEventSourceParserTransformStream: () => TransformStream<string, ParsedEvent>;
16
- export declare const toPolyfillReadable: import("@mattiasbuelens/web-streams-adapter").ReadableStreamWrapper;
16
+ export declare const toPolyfillReadable: (readable: any) => any;
17
17
  export declare class TextDecoderStream {
18
18
  private handle;
19
19
  private transform;
package/dist/cjs/utils.js CHANGED
@@ -48,8 +48,11 @@ var web_streams_polyfill_1 = require("web-streams-polyfill");
48
48
  var web_streams_adapter_1 = require("@mattiasbuelens/web-streams-adapter");
49
49
  var eventsource_parser_1 = require("./eventsource_parser");
50
50
  var text_encoding_shim_1 = require("text-encoding-shim");
51
- exports.ReadableStream = web_streams_polyfill_1.ReadableStream;
52
- exports.TransformStream = web_streams_polyfill_1.TransformStream;
51
+ var hasNativeStreams = typeof globalThis.ReadableStream === 'function'
52
+ && typeof globalThis.TransformStream === 'function'
53
+ && typeof globalThis.ReadableStream.prototype.pipeThrough === 'function';
54
+ exports.ReadableStream = (hasNativeStreams ? globalThis.ReadableStream : web_streams_polyfill_1.ReadableStream);
55
+ exports.TransformStream = (hasNativeStreams ? globalThis.TransformStream : web_streams_polyfill_1.TransformStream);
53
56
  var createEventSourceParserTransformStream = function () {
54
57
  var parser;
55
58
  return new exports.TransformStream({
@@ -66,7 +69,9 @@ var createEventSourceParserTransformStream = function () {
66
69
  });
67
70
  };
68
71
  exports.createEventSourceParserTransformStream = createEventSourceParserTransformStream;
69
- exports.toPolyfillReadable = (0, web_streams_adapter_1.createReadableStreamWrapper)(exports.ReadableStream);
72
+ exports.toPolyfillReadable = hasNativeStreams
73
+ ? function (readable) { return readable; }
74
+ : (0, web_streams_adapter_1.createReadableStreamWrapper)(exports.ReadableStream);
70
75
  var TextDecoderStream = (function () {
71
76
  function TextDecoderStream(encoding, options) {
72
77
  if (encoding === void 0) { encoding = 'utf-8'; }
@@ -260,4 +265,4 @@ function functionToolToModelTool(tool) {
260
265
  };
261
266
  }
262
267
  exports.functionToolToModelTool = functionToolToModelTool;
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUE2RztBQUM3RywyRUFBaUY7QUFDakYsMkRBQTZGO0FBUTdGLHlEQUFnRDtBQUVuQyxRQUFBLGNBQWMsR0FBRyxxQ0FXN0IsQ0FBQTtBQUVZLFFBQUEsZUFBZSxHQUFHLHNDQVE5QixDQUFBO0FBRU0sSUFBTSxzQ0FBc0MsR0FBRztJQUNwRCxJQUFJLE1BQTBCLENBQUE7SUFFOUIsT0FBTyxJQUFJLHVCQUFlLENBQXNCO1FBQzlDLEtBQUssWUFBQyxVQUFVO1lBQ2QsTUFBTSxHQUFHLElBQUEsaUNBQVksRUFBQyxVQUFDLEtBQUs7Z0JBQzFCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7b0JBQzFCLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7aUJBQzFCO1lBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsU0FBUyxZQUFDLEtBQUs7WUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3BCLENBQUM7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFmWSxRQUFBLHNDQUFzQywwQ0FlbEQ7QUFFWSxRQUFBLGtCQUFrQixHQUFHLElBQUEsaURBQTJCLEVBQUMsc0JBQWMsQ0FBQyxDQUFBO0FBRTdFO0lBcUJFLDJCQUFZLFFBQWtCLEVBQUUsT0FBZ0M7UUFBcEQseUJBQUEsRUFBQSxrQkFBa0I7UUFBRSx3QkFBQSxFQUFBLFlBQWdDO1FBQWhFLGlCQUVDO1FBcEJPLGNBQVMsR0FBRyxJQUFJLHVCQUFlLENBQUM7WUFDdEMsU0FBUyxFQUFFLFVBQUMsS0FBSyxFQUFFLFVBQVU7Z0JBQzNCLElBQU0sS0FBSyxHQUFHLEtBQUksQ0FBQyxNQUFNLENB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QUE7QUFDOUIsQ0FBQztBQVJELHNDQVFDO0FBRUQsU0FBZ0IsMEJBQTBCLENBQUMsT0FBeUI7O0lBQ2xFLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksWUFBWSxJQUFJLE9BQU8sSUFBSSxDQUFBLE1BQUEsT0FBTyxDQUFDLFVBQVUsMENBQUcsQ0FBQyxDQUFDLEtBQUksSUFBSSxDQUFBO0FBQ25HLENBQUM7QUFGRCxnRUFFQztBQUVELFNBQWdCLHVCQUF1QixDQUFDLElBQWtCO0lBQ3hELE9BQU87UUFDTCxJQUFJLEVBQUUsVUFBVTtRQUNoQixRQUFRLEVBQUU7WUFDUixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzVCO0tBQ0YsQ0FBQTtBQUNILENBQUM7QUFURCwwREFTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zZm9ybVN0cmVhbSBhcyBfVHJhbnNmb3JtU3RyZWFtLCBSZWFkYWJsZVN0cmVhbSBhcyBfUmVhZGFibGVTdHJlYW0gfSBmcm9tICd3ZWItc3RyZWFtcy1wb2x5ZmlsbCdcbmltcG9ydCB7IGNyZWF0ZVJlYWRhYmxlU3RyZWFtV3JhcHBlciB9IGZyb20gJ0BtYXR0aWFzYnVlbGVucy93ZWItc3RyZWFtcy1hZGFwdGVyJ1xuaW1wb3J0IHsgY3JlYXRlUGFyc2VyLCB0eXBlIEV2ZW50U291cmNlUGFyc2VyLCB0eXBlIFBhcnNlZEV2ZW50IH0gZnJvbSAnLi9ldmVudHNvdXJjZV9wYXJzZXInXG5pbXBvcnQgdHlwZSB7XG4gIEFzeW5jSXRlcmFibGVSZWFkYWJsZVN0cmVhbSxcbiAgQ2hhdE1vZGVsTWVzc2FnZSxcbiAgVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlLFxuICBNb2RlbFRvb2wsXG4gIEZ1bmN0aW9uVG9vbCxcbn0gZnJvbSAnLi90eXBlJ1xuaW1wb3J0IHsgVGV4dERlY29kZXIgfSBmcm9tICd0ZXh0LWVuY29kaW5nLXNoaW0nXG5cbmV4cG9ydCBjb25zdCBSZWFkYWJsZVN0cmVhbSA9IF9SZWFkYWJsZVN0cmVhbSBhcyB7XG4gIHByb3RvdHlwZTogUmVhZGFibGVTdHJlYW1cblxuICBuZXcgKFxuICAgIHVuZGVybHlpbmdTb3VyY2U6IFVuZGVybHlpbmdCeXRlU291cmNlLFxuICAgIHN0cmF0ZWd5Pzoge1xuICAgICAgaGlnaFdhdGVyTWFyaz86IG51bWJlclxuICAgIH0sXG4gICk6IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+XG4gIG5ldyA8UiA9IGFueT4odW5kZXJseWluZ1NvdXJjZTogVW5kZXJseWluZ0RlZmF1bHRTb3VyY2U8Uj4sIHN0cmF0ZWd5PzogUXVldWluZ1N0cmF0ZWd5PFI+KTogUmVhZGFibGVTdHJlYW08Uj5cbiAgbmV3IDxSID0gYW55Pih1bmRlcmx5aW5nU291cmNlPzogVW5kZXJseWluZ1NvdXJjZTxSPiwgc3RyYXRlZ3k/OiBRdWV1aW5nU3RyYXRlZ3k8Uj4pOiBSZWFkYWJsZVN0cmVhbTxSPlxufVxuXG5leHBvcnQgY29uc3QgVHJhbnNmb3JtU3RyZWFtID0gX1RyYW5zZm9ybVN0cmVhbSBhcyB7XG4gIHByb3RvdHlwZTogVHJhbnNmb3JtU3RyZWFtXG5cbiAgbmV3IDxJID0gYW55LCBPID0gYW55PihcbiAgICB0cmFuc2Zvcm1lcj86IFRyYW5zZm9ybWVyPEksIE8+LFxuICAgIHdyaXRhYmxlU3RyYXRlZ3k/OiBRdWV1aW5nU3RyYXRlZ3k8ST4sXG4gICAgcmVhZGFibGVTdHJhdGVneT86IFF1ZXVpbmdTdHJhdGVneTxPPixcbiAgKTogVHJhbnNmb3JtU3RyZWFtPEksIE8+XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVFdmVudFNvdXJjZVBhcnNlclRyYW5zZm9ybVN0cmVhbSA9ICgpID0+IHtcbiAgbGV0IHBhcnNlciE6IEV2ZW50U291cmNlUGFyc2VyXG5cbiAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW08c3RyaW5nLCBQYXJzZWRFdmVudD4oe1xuICAgIHN0YXJ0KGNvbnRyb2xsZXIpIHtcbiAgICAgIHBhcnNlciA9IGNyZWF0ZVBhcnNlcigoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdldmVudCcpIHtcbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZXZlbnQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSxcbiAgICB0cmFuc2Zvcm0oY2h1bmspIHtcbiAgICAgIHBhcnNlci5mZWVkKGNodW5rKVxuICAgIH0sXG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCB0b1BvbHlmaWxsUmVhZGFibGUgPSBjcmVhdGVSZWFkYWJsZVN0cmVhbVdyYXBwZXIoUmVhZGFibGVTdHJlYW0pXG5cbmV4cG9ydCBjbGFzcyBUZXh0RGVjb2RlclN0cmVhbSB7XG4gIHByaXZhdGUgaGFuZGxlOiBUZXh0RGVjb2RlclxuXG4gIHByaXZhdGUgdHJhbnNmb3JtID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgdHJhbnNmb3JtOiAoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5oYW5kbGUuZGVjb2RlKG5ldyBVaW50OEFycmF5KGNodW5rKSwgeyBzdHJlYW06IHRydWUgfSlcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2YWx1ZSlcbiAgICAgIH1cbiAgICB9LFxuICAgIGZsdXNoOiAoY29udHJvbGxlcikgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmhhbmRsZS5kZWNvZGUoKVxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2YWx1ZSlcbiAgICAgIH1cblxuICAgICAgY29udHJvbGxlci50ZXJtaW5hdGUoKVxuICAgIH0sXG4gIH0pXG5cbiAgY29uc3RydWN0b3IoZW5jb2RpbmcgPSAndXRmLTgnLCBvcHRpb25zOiBUZXh0RGVjb2Rlck9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMuaGFuZGxlID0gbmV3IFRleHREZWNvZGVyKGVuY29kaW5nLCBvcHRpb25zKVxuICB9XG5cbiAgZ2V0IGVuY29kaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZS5lbmNvZGluZ1xuICB9XG5cbiAgZ2V0IGZhdGFsKCkge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZS5mYXRhbFxuICB9XG5cbiAgZ2V0IGlnbm9yZUJPTSgpIHtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGUuaWdub3JlQk9NXG4gIH1cblxuICBnZXQgcmVhZGFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtLnJlYWRhYmxlXG4gIH1cblxuICBnZXQgd3JpdGFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtLndyaXRhYmxlXG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdUZXh0RGVjb2RlclN0cmVhbSdcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXN5bmNJdGVyYWJsZTxUPihzdHJlYW06IFJlYWRhYmxlU3RyZWFtPFQ+KSB7XG4gIGNvbnN0IF9zdHJlYW0gPSBzdHJlYW0gYXMgQXN5bmNJdGVyYWJsZVJlYWRhYmxlU3RyZWFtPFQ+XG4gIF9zdHJlYW1bU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gKCkgPT4ge1xuICAgIGNvbnN0IHJlYWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKVxuICAgIHJldHVybiB7XG4gICAgICBhc3luYyBuZXh0KCk6IFByb21pc2U8SXRlcmF0b3JSZXN1bHQ8VD4+IHtcbiAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKVxuICAgICAgICByZXR1cm4gZG9uZSA/IHsgZG9uZTogdHJ1ZSwgdmFsdWU6IHVuZGVmaW5lZCB9IDogeyBkb25lOiBmYWxzZSwgdmFsdWUgfVxuICAgICAgfSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIF9zdHJlYW1cbn1cblxuLyoqXG4gKiDlsIYgU1NFIOS6jOi/m+WItua1gei9rOaNouS4uiBUIOexu+Wei+eahOa1gVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW50b1N0YW5kYXJkU3RyZWFtPFQ+KHN0cmVhbTogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT4pOiBSZWFkYWJsZVN0cmVhbTxUPiB7XG4gIHJldHVybiBjcmVhdGVBc3luY0l0ZXJhYmxlKHN0cmVhbVxuICAgIC5waXBlVGhyb3VnaChuZXcgVGV4dERlY29kZXJTdHJlYW0oKSlcbiAgICAucGlwZVRocm91Z2goY3JlYXRlRXZlbnRTb3VyY2VQYXJzZXJUcmFuc2Zvcm1TdHJlYW0oKSlcbiAgICAucGlwZVRocm91Z2gobmV3IFRyYW5zZm9ybVN0cmVhbTxQYXJzZWRFdmVudCwgVD4oe1xuICAgICAgdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoY2h1bmsuZGF0YSkgYXMgVFxuICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShkYXRhKVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaWYgKGNodW5rLmRhdGEgIT09ICdbRE9ORV0nKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0Vycm9yIHdoZW4gdHJhbnNmb3JtaW5nIGV2ZW50IHNvdXJjZSBkYXRhIHRvIGpzb24nLCBlLCBjaHVuaylcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udHJvbGxlci50ZXJtaW5hdGUoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KSwpLClcbn1cblxuLyoqXG4gKiDlsIYgU1NFIOS6jOi/m+WItua1gei9rOaNouS4uuWtl+espuS4sua1gVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW50b1RleHRTdHJlYW0oc3RyZWFtOiBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5Pik6IEFzeW5jSXRlcmFibGVSZWFkYWJsZVN0cmVhbTxzdHJpbmc+IHtcbiAgcmV0dXJuIGNyZWF0ZUFzeW5jSXRlcmFibGUoKHRvUG9seWZpbGxSZWFkYWJsZShzdHJlYW0pIGFzIHR5cGVvZiBzdHJlYW0pLnBpcGVUaHJvdWdoKG5ldyBUZXh0RGVjb2RlclN0cmVhbSgpKSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRhYmxlU3RyZWFtMkpzb25PYmplY3Qoc3RyZWFtOiBSZWFkYWJsZVN0cmVhbSkge1xuICBjb25zdCBzID0gaW50b1RleHRTdHJlYW0oc3RyZWFtKVxuICBsZXQgdG90YWwgPSAnJ1xuICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHMpIHtcbiAgICB0b3RhbCArPSBjaHVua1xuICB9XG4gIHJldHVybiBKU09OLnBhcnNlKHRvdGFsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUHJvbWlzZTxUID0gdW5rbm93bj4oKSB7XG4gIGxldCByZXM6ICh2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KSA9PiB2b2lkXG4gIGxldCByZWo6IChyZWFzb24/OiBhbnkpID0+IHZvaWRcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPFQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICByZXMgPSByZXNvbHZlXG4gICAgcmVqID0gcmVqZWN0XG4gIH0pXG4gIHJldHVybiB7IHByb21pc2UsIHJlcywgcmVqIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlKG1lc3NhZ2U6IENoYXRNb2RlbE1lc3NhZ2UpOiBtZXNzYWdlIGlzIFRvb2xDYWxsQXNzaXN0YW50TWVzc2FnZSB7XG4gIHJldHVybiBtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnICYmICd0b29sX2NhbGxzJyBpbiBtZXNzYWdlICYmIG1lc3NhZ2UudG9vbF9jYWxscz8uWzBdICE9IG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZ1bmN0aW9uVG9vbFRvTW9kZWxUb29sKHRvb2w6IEZ1bmN0aW9uVG9vbCk6IE1vZGVsVG9vbCB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICBmdW5jdGlvbjoge1xuICAgICAgZGVzY3JpcHRpb246IHRvb2wuZGVzY3JpcHRpb24sXG4gICAgICBuYW1lOiB0b29sLm5hbWUsXG4gICAgICBwYXJhbWV0ZXJzOiB0b29sLnBhcmFtZXRlcnMsXG4gICAgfSxcbiAgfVxufVxuIl19
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZEQUE2RztBQUM3RywyRUFBaUY7QUFDakYsMkRBQTZGO0FBUTdGLHlEQUFnRDtBQU1oRCxJQUFNLGdCQUFnQixHQUFHLE9BQU8sVUFBVSxDQUFDLGNBQWMsS0FBSyxVQUFVO09BQ25FLE9BQU8sVUFBVSxDQUFDLGVBQWUsS0FBSyxVQUFVO09BQ2hELE9BQU8sVUFBVSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsV0FBVyxLQUFLLFVBQVUsQ0FBQTtBQUU3RCxRQUFBLGNBQWMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxxQ0FBZSxDQVc1RixDQUFBO0FBRVksUUFBQSxlQUFlLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsc0NBQWdCLENBUS9GLENBQUE7QUFFTSxJQUFNLHNDQUFzQyxHQUFHO0lBQ3BELElBQUksTUFBMEIsQ0FBQTtJQUU5QixPQUFPLElBQUksdUJBQWUsQ0FBc0I7UUFDOUMsS0FBSyxZQUFDLFVBQVU7WUFDZCxNQUFNLEdBQUcsSUFBQSxpQ0FBWSxFQUFDLFVBQUMsS0FBSztnQkFDMUIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtvQkFDMUIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtpQkFDMUI7WUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFDRCxTQUFTLFlBQUMsS0FBSztZQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDcEIsQ0FBQztLQUNGLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQWZZ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LEtBQUssQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCQUVoQixXQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUE7Ozs7Q0FDekI7QUFQRCw4REFPQztBQUVELFNBQWdCLGFBQWE7SUFDM0IsSUFBSSxHQUF3QyxDQUFBO0lBQzVDLElBQUksR0FBMkIsQ0FBQTtJQUMvQixJQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBSSxVQUFDLE9BQU8sRUFBRSxNQUFNO1FBQzdDLEdBQUcsR0FBRyxPQUFPLENBQUE7UUFDYixHQUFHLEdBQUcsTUFBTSxDQUFBO0lBQ2QsQ0FBQyxDQUFDLENBQUE7SUFDRixPQUFPLEVBQUUsT0FBTyxTQUFBLEVBQUUsR0FBRyxLQUFBLEVBQUUsR0FBRyxLQUFBLEVBQUUsQ0FBQTtBQUM5QixDQUFDO0FBUkQsc0NBUUM7QUFFRCxTQUFnQiwwQkFBMEIsQ0FBQyxPQUF5Qjs7SUFFbEUsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsSUFBSSxZQUFZLElBQUksT0FBTyxJQUFJLENBQUEsTUFBQSxPQUFPLENBQUMsVUFBVSwwQ0FBRyxDQUFDLENBQUMsS0FBSSxJQUFJLENBQUE7QUFDbkcsQ0FBQztBQUhELGdFQUdDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQUMsSUFBa0I7SUFDeEQsT0FBTztRQUNMLElBQUksRUFBRSxVQUFVO1FBQ2hCLFFBQVEsRUFBRTtZQUNSLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDNUI7S0FDRixDQUFBO0FBQ0gsQ0FBQztBQVRELDBEQVNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNmb3JtU3RyZWFtIGFzIF9UcmFuc2Zvcm1TdHJlYW0sIFJlYWRhYmxlU3RyZWFtIGFzIF9SZWFkYWJsZVN0cmVhbSB9IGZyb20gJ3dlYi1zdHJlYW1zLXBvbHlmaWxsJ1xuaW1wb3J0IHsgY3JlYXRlUmVhZGFibGVTdHJlYW1XcmFwcGVyIH0gZnJvbSAnQG1hdHRpYXNidWVsZW5zL3dlYi1zdHJlYW1zLWFkYXB0ZXInXG5pbXBvcnQgeyBjcmVhdGVQYXJzZXIsIHR5cGUgRXZlbnRTb3VyY2VQYXJzZXIsIHR5cGUgUGFyc2VkRXZlbnQgfSBmcm9tICcuL2V2ZW50c291cmNlX3BhcnNlcidcbmltcG9ydCB0eXBlIHtcbiAgQXN5bmNJdGVyYWJsZVJlYWRhYmxlU3RyZWFtLFxuICBDaGF0TW9kZWxNZXNzYWdlLFxuICBUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UsXG4gIE1vZGVsVG9vbCxcbiAgRnVuY3Rpb25Ub29sLFxufSBmcm9tICcuL3R5cGUnXG5pbXBvcnQgeyBUZXh0RGVjb2RlciB9IGZyb20gJ3RleHQtZW5jb2Rpbmctc2hpbSdcblxuLyoqXG4gKiDmo4DmtYvlvZPliY3njq/looPmmK/lkKbljp/nlJ/mlK/mjIHlrozmlbTnmoQgV2ViIFN0cmVhbXMgQVBJ77yITm9kZS5qcyA+PSAxOCDmiJbnjrDku6PmtY/op4jlmajvvIlcbiAqIOWmguaenOWOn+eUn+aUr+aMge+8jOWImeaXoOmcgOS9v+eUqCBwb2x5ZmlsbO+8jOmBv+WFjSB3ZWItc3RyZWFtcy1hZGFwdGVyIOWcqOmrmOeJiOacrCBOb2RlLmpzIOS4reeahOWFvOWuuemXrumimFxuICovXG5jb25zdCBoYXNOYXRpdmVTdHJlYW1zID0gdHlwZW9mIGdsb2JhbFRoaXMuUmVhZGFibGVTdHJlYW0gPT09ICdmdW5jdGlvbidcbiAgJiYgdHlwZW9mIGdsb2JhbFRoaXMuVHJhbnNmb3JtU3RyZWFtID09PSAnZnVuY3Rpb24nXG4gICYmIHR5cGVvZiBnbG9iYWxUaGlzLlJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCA9PT0gJ2Z1bmN0aW9uJ1xuXG5leHBvcnQgY29uc3QgUmVhZGFibGVTdHJlYW0gPSAoaGFzTmF0aXZlU3RyZWFtcyA/IGdsb2JhbFRoaXMuUmVhZGFibGVTdHJlYW0gOiBfUmVhZGFibGVTdHJlYW0pIGFzIHtcbiAgcHJvdG90eXBlOiBSZWFkYWJsZVN0cmVhbVxuXG4gIG5ldyAoXG4gICAgdW5kZXJseWluZ1NvdXJjZTogVW5kZXJseWluZ0J5dGVTb3VyY2UsXG4gICAgc3RyYXRlZ3k/OiB7XG4gICAgICBoaWdoV2F0ZXJNYXJrPzogbnVtYmVyXG4gICAgfSxcbiAgKTogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT5cbiAgbmV3IDxSID0gYW55Pih1bmRlcmx5aW5nU291cmNlOiBVbmRlcmx5aW5nRGVmYXVsdFNvdXJjZTxSPiwgc3RyYXRlZ3k/OiBRdWV1aW5nU3RyYXRlZ3k8Uj4pOiBSZWFkYWJsZVN0cmVhbTxSPlxuICBuZXcgPFIgPSBhbnk+KHVuZGVybHlpbmdTb3VyY2U/OiBVbmRlcmx5aW5nU291cmNlPFI+LCBzdHJhdGVneT86IFF1ZXVpbmdTdHJhdGVneTxSPik6IFJlYWRhYmxlU3RyZWFtPFI+XG59XG5cbmV4cG9ydCBjb25zdCBUcmFuc2Zvcm1TdHJlYW0gPSAoaGFzTmF0aXZlU3RyZWFtcyA/IGdsb2JhbFRoaXMuVHJhbnNmb3JtU3RyZWFtIDogX1RyYW5zZm9ybVN0cmVhbSkgYXMge1xuICBwcm90b3R5cGU6IFRyYW5zZm9ybVN0cmVhbVxuXG4gIG5ldyA8SSA9IGFueSwgTyA9IGFueT4oXG4gICAgdHJhbnNmb3JtZXI/OiBUcmFuc2Zvcm1lcjxJLCBPPixcbiAgICB3cml0YWJsZVN0cmF0ZWd5PzogUXVldWluZ1N0cmF0ZWd5PEk+LFxuICAgIHJlYWRhYmxlU3RyYXRlZ3k/OiBRdWV1aW5nU3RyYXRlZ3k8Tz4sXG4gICk6IFRyYW5zZm9ybVN0cmVhbTxJLCBPPlxufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlRXZlbnRTb3VyY2VQYXJzZXJUcmFuc2Zvcm1TdHJlYW0gPSAoKSA9PiB7XG4gIGxldCBwYXJzZXIhOiBFdmVudFNvdXJjZVBhcnNlclxuXG4gIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtPHN0cmluZywgUGFyc2VkRXZlbnQ+KHtcbiAgICBzdGFydChjb250cm9sbGVyKSB7XG4gICAgICBwYXJzZXIgPSBjcmVhdGVQYXJzZXIoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudC50eXBlID09PSAnZXZlbnQnKSB7XG4gICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGV2ZW50KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0sXG4gICAgdHJhbnNmb3JtKGNodW5rKSB7XG4gICAgICBwYXJzZXIuZmVlZChjaHVuaylcbiAgICB9LFxuICB9KVxufVxuXG4vKipcbiAqIOWwhuS7u+aEjyBSZWFkYWJsZVN0cmVhbSDovazmjaLkuLrlvZPliY3njq/looPkvb/nlKjnmoQgUmVhZGFibGVTdHJlYW0g5a6e546wXG4gKiAtIOWcqOWOn+eUn+aUr+aMgSBXZWIgU3RyZWFtcyDnmoTnjq/looPvvIhOb2RlLmpzID49IDE444CB546w5Luj5rWP6KeI5Zmo77yJ5Lit77yM55u05o6l6L+U5Zue5Y6f5aeLIHN0cmVhbe+8iOaXoOmcgOi9rOaNou+8iVxuICogLSDlnKjkuI3mlK/mjIHljp/nlJ8gV2ViIFN0cmVhbXMg55qE546v5aKD77yI5pen5rWP6KeI5Zmo44CB5bCP56iL5bqP77yJ5Lit77yM5L2/55SoIHdlYi1zdHJlYW1zLWFkYXB0ZXIg6L+b6KGM6L2s5o2iXG4gKi9cbmV4cG9ydCBjb25zdCB0b1BvbHlmaWxsUmVhZGFibGU6IChyZWFkYWJsZTogYW55KSA9PiBhbnkgPSBoYXNOYXRpdmVTdHJlYW1zXG4gID8gcmVhZGFibGUgPT4gcmVhZGFibGVcbiAgOiBjcmVhdGVSZWFkYWJsZVN0cmVhbVdyYXBwZXIoUmVhZGFibGVTdHJlYW0pXG5cbmV4cG9ydCBjbGFzcyBUZXh0RGVjb2RlclN0cmVhbSB7XG4gIHByaXZhdGUgaGFuZGxlOiBUZXh0RGVjb2RlclxuXG4gIHByaXZhdGUgdHJhbnNmb3JtID0gbmV3IFRyYW5zZm9ybVN0cmVhbSh7XG4gICAgdHJhbnNmb3JtOiAoY2h1bmssIGNvbnRyb2xsZXIpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5oYW5kbGUuZGVjb2RlKG5ldyBVaW50OEFycmF5KGNodW5rKSwgeyBzdHJlYW06IHRydWUgfSlcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2YWx1ZSlcbiAgICAgIH1cbiAgICB9LFxuICAgIGZsdXNoOiAoY29udHJvbGxlcikgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmhhbmRsZS5kZWNvZGUoKVxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2YWx1ZSlcbiAgICAgIH1cblxuICAgICAgY29udHJvbGxlci50ZXJtaW5hdGUoKVxuICAgIH0sXG4gIH0pXG5cbiAgY29uc3RydWN0b3IoZW5jb2RpbmcgPSAndXRmLTgnLCBvcHRpb25zOiBUZXh0RGVjb2Rlck9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMuaGFuZGxlID0gbmV3IFRleHREZWNvZGVyKGVuY29kaW5nLCBvcHRpb25zKVxuICB9XG5cbiAgZ2V0IGVuY29kaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZS5lbmNvZGluZ1xuICB9XG5cbiAgZ2V0IGZhdGFsKCkge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZS5mYXRhbFxuICB9XG5cbiAgZ2V0IGlnbm9yZUJPTSgpIHtcbiAgICByZXR1cm4gdGhpcy5oYW5kbGUuaWdub3JlQk9NXG4gIH1cblxuICBnZXQgcmVhZGFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtLnJlYWRhYmxlXG4gIH1cblxuICBnZXQgd3JpdGFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtLndyaXRhYmxlXG4gIH1cblxuICBnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7XG4gICAgcmV0dXJuICdUZXh0RGVjb2RlclN0cmVhbSdcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXN5bmNJdGVyYWJsZTxUPihzdHJlYW06IFJlYWRhYmxlU3RyZWFtPFQ+KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgY29uc3QgX3N0cmVhbSA9IHN0cmVhbSBhcyBBc3luY0l0ZXJhYmxlUmVhZGFibGVTdHJlYW08VD5cbiAgKF9zdHJlYW0gYXMgYW55KVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSAoKSA9PiB7XG4gICAgY29uc3QgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpXG4gICAgcmV0dXJuIHtcbiAgICAgIGFzeW5jIG5leHQoKTogUHJvbWlzZTxJdGVyYXRvclJlc3VsdDxUPj4ge1xuICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICAgIHJldHVybiBkb25lID8geyBkb25lOiB0cnVlLCB2YWx1ZTogdW5kZWZpbmVkIH0gOiB7IGRvbmU6IGZhbHNlLCB2YWx1ZSB9XG4gICAgICB9LFxuICAgIH1cbiAgfVxuICByZXR1cm4gX3N0cmVhbVxufVxuXG4vKipcbiAqIOWwhiBTU0Ug5LqM6L+b5Yi25rWB6L2s5o2i5Li6IFQg57G75Z6L55qE5rWBXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnRvU3RhbmRhcmRTdHJlYW08VD4oc3RyZWFtOiBSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5Pik6IFJlYWRhYmxlU3RyZWFtPFQ+IHtcbiAgcmV0dXJuIGNyZWF0ZUFzeW5jSXRlcmFibGUoc3RyZWFtXG4gICAgLnBpcGVUaHJvdWdoKG5ldyBUZXh0RGVjb2RlclN0cmVhbSgpKVxuICAgIC5waXBlVGhyb3VnaChjcmVhdGVFdmVudFNvdXJjZVBhcnNlclRyYW5zZm9ybVN0cmVhbSgpKVxuICAgIC5waXBlVGhyb3VnaChuZXcgVHJhbnNmb3JtU3RyZWFtPFBhcnNlZEV2ZW50LCBUPih7XG4gICAgICB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShjaHVuay5kYXRhKSBhcyBUXG4gICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGRhdGEpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoY2h1bmsuZGF0YSAhPT0gJ1tET05FXScpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRXJyb3Igd2hlbiB0cmFuc2Zvcm1pbmcgZXZlbnQgc291cmNlIGRhdGEgdG8ganNvbicsIGUsIGNodW5rKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLnRlcm1pbmF0ZSgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pLCksKVxufVxuXG4vKipcbiAqIOWwhiBTU0Ug5LqM6L+b5Yi25rWB6L2s5o2i5Li65a2X56ym5Liy5rWBXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnRvVGV4dFN0cmVhbShzdHJlYW06IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+KTogQXN5bmNJdGVyYWJsZVJlYWRhYmxlU3RyZWFtPHN0cmluZz4ge1xuICByZXR1cm4gY3JlYXRlQXN5bmNJdGVyYWJsZSgodG9Qb2x5ZmlsbFJlYWRhYmxlKHN0cmVhbSkgYXMgdHlwZW9mIHN0cmVhbSkucGlwZVRocm91Z2gobmV3IFRleHREZWNvZGVyU3RyZWFtKCkpKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZGFibGVTdHJlYW0ySnNvbk9iamVjdChzdHJlYW06IFJlYWRhYmxlU3RyZWFtKSB7XG4gIGNvbnN0IHMgPSBpbnRvVGV4dFN0cmVhbShzdHJlYW0pXG4gIGxldCB0b3RhbCA9ICcnXG4gIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2Ygcykge1xuICAgIHRvdGFsICs9IGNodW5rXG4gIH1cbiAgcmV0dXJuIEpTT04ucGFyc2UodG90YWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm9taXNlPFQgPSB1bmtub3duPigpIHtcbiAgbGV0IHJlczogKHZhbHVlOiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWRcbiAgbGV0IHJlajogKHJlYXNvbj86IGFueSkgPT4gdm9pZFxuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8VD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHJlcyA9IHJlc29sdmVcbiAgICByZWogPSByZWplY3RcbiAgfSlcbiAgcmV0dXJuIHsgcHJvbWlzZSwgcmVzLCByZWogfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUb29sQ2FsbEFzc2lzdGFudE1lc3NhZ2UobWVzc2FnZTogQ2hhdE1vZGVsTWVzc2FnZSk6IG1lc3NhZ2UgaXMgVG9vbENhbGxBc3Npc3RhbnRNZXNzYWdlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuICByZXR1cm4gbWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50JyAmJiAndG9vbF9jYWxscycgaW4gbWVzc2FnZSAmJiBtZXNzYWdlLnRvb2xfY2FsbHM/LlswXSAhPSBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmdW5jdGlvblRvb2xUb01vZGVsVG9vbCh0b29sOiBGdW5jdGlvblRvb2wpOiBNb2RlbFRvb2wge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdmdW5jdGlvbicsXG4gICAgZnVuY3Rpb246IHtcbiAgICAgIGRlc2NyaXB0aW9uOiB0b29sLmRlc2NyaXB0aW9uLFxuICAgICAgbmFtZTogdG9vbC5uYW1lLFxuICAgICAgcGFyYW1ldGVyczogdG9vbC5wYXJhbWV0ZXJzLFxuICAgIH0sXG4gIH1cbn1cbiJdfQ==
package/dist/esm/AI.d.ts CHANGED
@@ -6,21 +6,24 @@ import { ICloudbaseConfig } from '@cloudbase/types';
6
6
  declare class AI {
7
7
  private req;
8
8
  baseUrl: string;
9
- aiBaseUrl: string;
10
- aiBotBaseUrl: string;
11
9
  bot: Bot;
12
10
  i18n: ICloudbaseConfig['i18n'];
13
11
  defaultHeaders: {
14
12
  [x: string]: any;
15
13
  };
16
- constructor(req: SDKRequestInterface, baseUrl: string, i18n: ICloudbaseConfig['i18n']);
14
+ private _getBaseUrl?;
15
+ get aiBaseUrl(): string;
16
+ get aiBotBaseUrl(): string;
17
+ constructor(req: SDKRequestInterface, baseUrl: string, i18n: ICloudbaseConfig['i18n'], getBaseUrl?: () => string);
17
18
  handleResponseData(responseData: Promise<unknown> | ReadableStream<Uint8Array>, header?: Headers): Promise<unknown>;
18
19
  createModel(model: string, options?: {
19
20
  defaultModelSubUrl?: string;
20
21
  }): models.ReactModel;
21
22
  registerModel(name: string, model: types.ChatModelConstructor): void;
23
+ createImageModel<T extends 'hunyuan-image' | (string & {})>(provider: T): models.DefaultImageModel<T>;
22
24
  modelRequest: types.ModelReq;
23
25
  botRequest: types.BotReq;
24
26
  registerFunctionTool(functionTool: types.FunctionTool): void;
27
+ private resolveUrl;
25
28
  }
26
29
  export { AI };