@elementspanel/panel 0.0.0-stage → 1.0.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 (139) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +6 -2
  3. package/app.js +6400 -0
  4. package/app.js.map +1 -0
  5. package/bin/panel.cjs +2 -0
  6. package/package.json +107 -4
  7. package/public/assets/AppDialog.vue_vue_type_style_index_0_lang-e6e38e8b.js +2 -0
  8. package/public/assets/AppDialog.vue_vue_type_style_index_0_lang-e6e38e8b.js.map +1 -0
  9. package/public/assets/CardPanel-59b7da2e.js +2 -0
  10. package/public/assets/CardPanel-59b7da2e.js.map +1 -0
  11. package/public/assets/DesktopDialog-e4041e4e.js +2 -0
  12. package/public/assets/DesktopDialog-e4041e4e.js.map +1 -0
  13. package/public/assets/Loading.vue_vue_type_script_setup_true_lang-1b74dd54.js +2 -0
  14. package/public/assets/Loading.vue_vue_type_script_setup_true_lang-1b74dd54.js.map +1 -0
  15. package/public/assets/PageToolbar-7130e13d.js +2 -0
  16. package/public/assets/PageToolbar-7130e13d.js.map +1 -0
  17. package/public/assets/_elements-sdk_cordis-b0b88a2c.js +2 -0
  18. package/public/assets/_elements-sdk_cordis-b0b88a2c.js.map +1 -0
  19. package/public/assets/_elements-sdk_cordis-e3bebc89.js +9 -0
  20. package/public/assets/_elements-sdk_cordis-e3bebc89.js.map +1 -0
  21. package/public/assets/_elements-sdk_cosmokit-e4842f5c.js +2 -0
  22. package/public/assets/_elements-sdk_cosmokit-e4842f5c.js.map +1 -0
  23. package/public/assets/_elements-sdk_pinia-2c56d2c1.js +6 -0
  24. package/public/assets/_elements-sdk_pinia-2c56d2c1.js.map +1 -0
  25. package/public/assets/_elements-sdk_vue-80f42d87.js +2 -0
  26. package/public/assets/_elements-sdk_vue-80f42d87.js.map +1 -0
  27. package/public/assets/_elements-sdk_vue-i18n-4b8a106a.js +2 -0
  28. package/public/assets/_elements-sdk_vue-i18n-4b8a106a.js.map +1 -0
  29. package/public/assets/_elements-sdk_vue-router-a171591a.js +2 -0
  30. package/public/assets/_elements-sdk_vue-router-a171591a.js.map +1 -0
  31. package/public/assets/_plugin-vue_export-helper-c27b6911.js +2 -0
  32. package/public/assets/_plugin-vue_export-helper-c27b6911.js.map +1 -0
  33. package/public/assets/chartjs-1e331dfb.js +19 -0
  34. package/public/assets/chartjs-1e331dfb.js.map +1 -0
  35. package/public/assets/codemirror-1b74112a.js +29 -0
  36. package/public/assets/codemirror-1b74112a.js.map +1 -0
  37. package/public/assets/const-93b324c0.js +2 -0
  38. package/public/assets/const-93b324c0.js.map +1 -0
  39. package/public/assets/const-ea30795c.js +38 -0
  40. package/public/assets/const-ea30795c.js.map +1 -0
  41. package/public/assets/context-cc90576e.js +2 -0
  42. package/public/assets/context-cc90576e.js.map +1 -0
  43. package/public/assets/copy-b106bb10.js +2 -0
  44. package/public/assets/copy-b106bb10.js.map +1 -0
  45. package/public/assets/core-d3bfdede.js +2 -0
  46. package/public/assets/core-d3bfdede.js.map +1 -0
  47. package/public/assets/daemon_connection_error-9eb654cc.png +0 -0
  48. package/public/assets/dayjs.min-25183c0a.js +2 -0
  49. package/public/assets/dayjs.min-25183c0a.js.map +1 -0
  50. package/public/assets/desktopNotice-5ca3448c.js +2 -0
  51. package/public/assets/desktopNotice-5ca3448c.js.map +1 -0
  52. package/public/assets/dom-ff483262.js +2 -0
  53. package/public/assets/dom-ff483262.js.map +1 -0
  54. package/public/assets/htmlparser2-bcb8f9db.js +3 -0
  55. package/public/assets/htmlparser2-bcb8f9db.js.map +1 -0
  56. package/public/assets/i18n-e810b9fa.js +2 -0
  57. package/public/assets/i18n-e810b9fa.js.map +1 -0
  58. package/public/assets/index-6e8d74f8.js +2 -0
  59. package/public/assets/index-6e8d74f8.js.map +1 -0
  60. package/public/assets/index-c684efbd.js +2 -0
  61. package/public/assets/index-c684efbd.js.map +1 -0
  62. package/public/assets/index-e3f35709.js +2 -0
  63. package/public/assets/index-e3f35709.js.map +1 -0
  64. package/public/assets/instance-cc59e210.js +2 -0
  65. package/public/assets/instance-cc59e210.js.map +1 -0
  66. package/public/assets/instance_contract-0115efe5.js +2 -0
  67. package/public/assets/instance_contract-0115efe5.js.map +1 -0
  68. package/public/assets/lodash-001e4f93.js +28 -0
  69. package/public/assets/lodash-001e4f93.js.map +1 -0
  70. package/public/assets/logo-9e2a668b.svg +15 -0
  71. package/public/assets/logo_b-35ccadda.svg +8 -0
  72. package/public/assets/materialdesignicons-webfont-0b183104.eot +0 -0
  73. package/public/assets/materialdesignicons-webfont-61e8aba5.ttf +0 -0
  74. package/public/assets/materialdesignicons-webfont-662fefa8.woff2 +0 -0
  75. package/public/assets/materialdesignicons-webfont-a5928a0d.woff +0 -0
  76. package/public/assets/msl-logo-699c8076.png +0 -0
  77. package/public/assets/nodes-a56b1b35.js +2 -0
  78. package/public/assets/nodes-a56b1b35.js.map +1 -0
  79. package/public/assets/plugin_contract-691cd37a.js +2 -0
  80. package/public/assets/plugin_contract-691cd37a.js.map +1 -0
  81. package/public/assets/preload-helper-a4192956.js +2 -0
  82. package/public/assets/preload-helper-a4192956.js.map +1 -0
  83. package/public/assets/protocol-97f7bab7.js +2 -0
  84. package/public/assets/protocol-97f7bab7.js.map +1 -0
  85. package/public/assets/randId-56f93901.js +2 -0
  86. package/public/assets/randId-56f93901.js.map +1 -0
  87. package/public/assets/router-eff205cc.js +3 -0
  88. package/public/assets/router-eff205cc.js.map +1 -0
  89. package/public/assets/safe-87846d89.js +89 -0
  90. package/public/assets/safe-87846d89.js.map +1 -0
  91. package/public/assets/sdk-3f2277ab.js +2 -0
  92. package/public/assets/sdk-3f2277ab.js.map +1 -0
  93. package/public/assets/shared-597ef52b.js +2 -0
  94. package/public/assets/shared-597ef52b.js.map +1 -0
  95. package/public/assets/useAppConfigStore-352fe033.js +2 -0
  96. package/public/assets/useAppConfigStore-352fe033.js.map +1 -0
  97. package/public/assets/useAppRouters-747b627a.js +2 -0
  98. package/public/assets/useAppRouters-747b627a.js.map +1 -0
  99. package/public/assets/useAppStateStore-a438b9a6.js +2 -0
  100. package/public/assets/useAppStateStore-a438b9a6.js.map +1 -0
  101. package/public/assets/useAppToolsStore-288c4fe8.js +2 -0
  102. package/public/assets/useAppToolsStore-288c4fe8.js.map +1 -0
  103. package/public/assets/useDefineApi-b726db1e.js +7 -0
  104. package/public/assets/useDefineApi-b726db1e.js.map +1 -0
  105. package/public/assets/useInstanceActionAvailability-16de3001.js +2 -0
  106. package/public/assets/useInstanceActionAvailability-16de3001.js.map +1 -0
  107. package/public/assets/useKeyboardEvents-6f7f845c.js +2 -0
  108. package/public/assets/useKeyboardEvents-6f7f845c.js.map +1 -0
  109. package/public/assets/useMountComponent-4043cb4c.js +2 -0
  110. package/public/assets/useMountComponent-4043cb4c.js.map +1 -0
  111. package/public/assets/useOverviewChart-7d758bc4.js +2 -0
  112. package/public/assets/useOverviewChart-7d758bc4.js.map +1 -0
  113. package/public/assets/useOverviewInfo-9ca25ab9.js +2 -0
  114. package/public/assets/useOverviewInfo-9ca25ab9.js.map +1 -0
  115. package/public/assets/usePolling-1bc2009b.js +2 -0
  116. package/public/assets/usePolling-1bc2009b.js.map +1 -0
  117. package/public/assets/useScreen-fad29b7c.js +2 -0
  118. package/public/assets/useScreen-fad29b7c.js.map +1 -0
  119. package/public/assets/useSocketIo-ea3c9a61.js +2 -0
  120. package/public/assets/useSocketIo-ea3c9a61.js.map +1 -0
  121. package/public/assets/useThemeSwitch-dc70883c.js +2 -0
  122. package/public/assets/useThemeSwitch-dc70883c.js.map +1 -0
  123. package/public/assets/vue-4c6a2976.css +1 -0
  124. package/public/assets/vue-6b52a630.js +64 -0
  125. package/public/assets/vue-6b52a630.js.map +1 -0
  126. package/public/assets/vuetifyModal-8382b175.js +2 -0
  127. package/public/assets/vuetifyModal-8382b175.js.map +1 -0
  128. package/public/assets/xterm-62ba073f.js +67 -0
  129. package/public/assets/xterm-62ba073f.js.map +1 -0
  130. package/public/favicon.ico +0 -0
  131. package/public/index.html +207 -0
  132. package/public/robots.txt +2 -0
  133. package/public/stats.html +4950 -0
  134. package/runtime/cli.cjs +305 -0
  135. package/runtime/daemon-tools.cjs +113 -0
  136. package/runtime/npm-plugins.cjs +207 -0
  137. package/runtime/plugin-resolution.cjs +141 -0
  138. package/runtime/shared-dependencies.cjs +35 -0
  139. package/runtime/worker.cjs +25 -0
package/app.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","mappings":";;;;;;;AAAa;AACb,aAAa,4EAA8B;;AAE3C;AACA;AACA;;AAEA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,WAAW;AAC3B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA;;AAEA;AACA,oBAAoB,yBAAyB;AAC7C;;AAEA;AACA;AACA,+CAA+C;;AAE/C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2BAA2B,WAAW;AACtC;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA,mCAAmC,WAAW;AAC9C;AACA;AACA,sBAAsB;AACtB;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA,uCAAuC,WAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,wCAAwC;AAChE;AACA;AACA;AACA;AACA,uCAAuC,aAAa;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,UAAU;AACrB;AACA;AACA;;AAEA;AACA,iCAAiC,OAAO,OAAO;AAC/C;;AAEA,iCAAiC;AACjC;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAoB,kBAAkB;AACtC;AACA,wCAAwC;AACxC,4BAA4B,gBAAgB;AAC5C;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA,oCAAoC,SAAS;AAC7C,wDAAwD;;AAExD;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,6CAA6C;AAC7C;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B;AACA,2DAA2D;AAC3D;AACA;;AAEA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;;AAEA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,8CAA8C;AAC9C,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;AACjD,kCAAkC;AAClC;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB;AAClD;AACA;;AAEA;AACA;AACA,2DAA2D;AAC3D;AACA,+CAA+C;AAC/C;AACA;;AAEA,cAAc,uCAAuC;AACrD;;AAEA,cAAc,iCAAiC;;AAE/C;AACA;AACA;AACA,wCAAwC;AACxC,sCAAsC;;AAEtC,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE,sEAAsE;AACtE,oEAAoE;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;;AAEhB;;AAEA,uBAAuB;AACvB;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,+CAA+C;AAC/C;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,gBAAgB;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA,uCAAuC;AACvC;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACnlBa;;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,OAAO,mBAAO,CAAC,kEAAwB,GAAG;AACtE,oBAAoB,+BAA+B;AACnD,0BAA0B,yBAAyB;AACnD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,OAAO,mBAAO,CAAC,+DAAqB,GAAG;AACnE,oBAAoB,+BAA+B;AACnD,KAAK;;AAEL;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO,mBAAO,CAAC,+DAAqB,GAAG;AACnE,KAAK;;AAEL;AACA;AACA;AACA,4BAA4B,OAAO,6FAAqC,CAAC,mBAAO,CAAC,mEAAyB,IAAI;AAC9G,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO,6FAAqC,CAAC,mBAAO,CAAC,mEAAyB,IAAI;AAC9G,8BAA8B,OAAO,mBAAO,CAAC,wEAA8B,GAAG;AAC9E;AACA,oBAAoB,YAAY;AAChC,KAAK;;AAEL;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO,mBAAO,CAAC,+DAAqB,GAAG;AACnE,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO,mBAAO,CAAC,+DAAqB,GAAG;AACnE,KAAK;;AAEL;AACA;AACA;AACA;AACA,4BAA4B,OAAO,6FAAqC,CAAC,mBAAO,CAAC,oEAA0B,IAAI;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;;;;;;;;AC3La;;AAEb;AACA;AACA;AACA,IAAI,mBAAO,CAAC,yDAAY;AACxB,IAAI,mBAAO,CAAC,sDAAS;AACrB,IAAI,mBAAO,CAAC,sDAAS;AACrB,IAAI,mBAAO,CAAC,qDAAQ;AACpB,IAAI,mBAAO,CAAC,2DAAc;AAC1B,IAAI,mBAAO,CAAC,0DAAa;AACzB,IAAI,mBAAO,CAAC,oEAAuB;AACnC,IAAI,mBAAO,CAAC,2DAAc;AAC1B,IAAI,mBAAO,CAAC,0DAAa;AACzB;;AAEA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;;;;;;;;;ACtBa;AACb,aAAa,4EAA8B;;AAE3C;;AAEA;AACA;AACA,cAAc,kCAAkC;AAChD,cAAc,kCAAkC;AAChD;;AAEA,cAAc,kCAAkC;AAChD;;AAEA,cAAc,mBAAmB;AACjC,cAAc,mBAAmB;AACjC,cAAc,mBAAmB;;AAEjC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,oBAAoB,qDAAuC;;AAE3D;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA,yCAAyC;AACzC,iCAAiC;AACjC;AACA;AACA;;AAEA,kCAAkC;AAClC;AACA,cAAc,2BAA2B;AACzC;AACA,+BAA+B;AAC/B,cAAc,2BAA2B;AACzC;AACA,+BAA+B;AAC/B,cAAc,OAAO;AACrB;AACA;AACA,UAAU,OAAO;AACjB,iCAAiC;AACjC;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrMa;AACb,aAAa,4EAA8B;;AAE3C;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB,+BAA+B;AACnD;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;ACvEa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,uNAAuN,iEAAiE,EAAE;AAC1R,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,2JAA2J,iEAAiE,EAAE;AAC9N,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,yLAAyL,iEAAiE,EAAE;AAC5P,GAAG;AACH;AACA;AACA,uNAAuN,iEAAiE,EAAE;AAC1R,GAAG;AACH;AACA;AACA,uNAAuN,gEAAgE,EAAE;AACzR,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,C;;;;;;;;AClca;;AAEb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;ACjLa;AACb,aAAa,4EAA8B;;AAE3C;;AAEA;;AAEA,eAAe;AACf;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB,gBAAgB;AACpC,0BAA0B,mBAAmB;AAC7C;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;;AAEA,WAAW,kBAAkB;AAC7B;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,+DAA+D,4BAA4B;;AAE3F;;AAEA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,6BAA6B;AACrD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,6BAA6B;AACrD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C;;AAE5C;AACA,oBAAoB,iBAAiB;AACrC;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;AClMa;;AAEb,aAAa,4EAA8B;;AAE3C;;AAEA,cAAc;;AAEd;AACA;AACA;AACA;AACA;;AAEA,eAAe,KAAK;AACpB,eAAe,KAAK;;AAEpB;AACA,cAAc;AACd,cAAc;;AAEd;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,gBAAgB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,uCAAuC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,oBAAoB;AAC/B;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA,WAAW,gBAAgB;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE,4BAA4B;;AAEnG,qEAAqE;;AAErE,aAAa;AACb,YAAY;;AAEZ;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,6BAA6B;AACrD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,6BAA6B;AACrD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,wCAAwC;AACxC,wCAAwC;;AAExC;AACA,oBAAoB,iBAAiB;AACrC;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;AC9Ta;AACb,aAAa,4EAA8B;;AAE3C;AACA;;AAEA,YAAY;AACZ,qBAAqB,WAAW;AAChC;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,oBAAoB,gBAAgB;AACpC,yBAAyB;AACzB;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA,UAAU,OAAO;AACjB,wCAAwC;AACxC,wDAAwD;AACxD;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA6D;AAC7D,MAAM;AACN;;AAEA,gEAAgE;AAChE,kDAAkD;AAClD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,gBAAgB;AACpC;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;;AAEA,2CAA2C;AAC3C;AACA;;AAEA;AACA,uCAAuC;;AAEvC;AACA;AACA;;AAEA,UAAU,OAAO;AACjB;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC;AACnC;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oBAAoB,gBAAgB;AACpC,yBAAyB;AACzB;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA,UAAU,OAAO;AACjB,4CAA4C;AAC5C,yDAAyD;AACzD;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA6D;AAC7D,MAAM;AACN;;AAEA,gEAAgE;AAChE,kDAAkD;AAClD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;AC/Ra;;AAEb;;AAEA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;AClDa;;AAEb,aAAa,4EAA8B;;AAE3C,kBAAkB,mBAAO,CAAC,uDAAgB;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uDAAuD;AACvD;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,mBAAO,CAAC,sDAAc,GAAG;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0EAA0E;AAC1E;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oDAAoD,EAAE;AACtD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,mBAAO,CAAC,kDAAW;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,mBAAO,CAAC,QAAQ;AACpC,EAAE;;AAEF;AACA;;AAEA,EAAE;AACF;AACA;AACA,mHAAmH;AACnH;AACA;;AAEA,IAAI,KAAe,EAAE;AAAA,EAEpB;;;;;;;;;ACnLY;;AAEb,aAAa,4EAA8B;;AAE3C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;;AAEA;AACA,uBAAuB;AACvB,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C,qBAAqB;AAC/D;AACA;AACA,SAAS;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","sources":["webpack://elements-panel/../common/node_modules/iconv-lite/encodings/dbcs-codec.js","webpack://elements-panel/../common/node_modules/iconv-lite/encodings/dbcs-data.js","webpack://elements-panel/../common/node_modules/iconv-lite/encodings/index.js","webpack://elements-panel/../common/node_modules/iconv-lite/encodings/internal.js","webpack://elements-panel/../common/node_modules/iconv-lite/encodings/sbcs-codec.js","webpack://elements-panel/../common/node_modules/iconv-lite/encodings/sbcs-data-generated.js","webpack://elements-panel/../common/node_modules/iconv-lite/encodings/sbcs-data.js","webpack://elements-panel/../common/node_modules/iconv-lite/encodings/utf16.js","webpack://elements-panel/../common/node_modules/iconv-lite/encodings/utf32.js","webpack://elements-panel/../common/node_modules/iconv-lite/encodings/utf7.js","webpack://elements-panel/../common/node_modules/iconv-lite/lib/bom-handling.js","webpack://elements-panel/../common/node_modules/iconv-lite/lib/index.js","webpack://elements-panel/../common/node_modules/iconv-lite/lib/streams.js","webpack://elements-panel/../common/node_modules/safer-buffer/safer.js","webpack://elements-panel/../common/src/array.ts","webpack://elements-panel/../common/src/docker_utils.ts","webpack://elements-panel/../common/src/global_variable.ts","webpack://elements-panel/../common/src/index.ts","webpack://elements-panel/../common/src/instance_stream.ts","webpack://elements-panel/../common/src/mcping.ts","webpack://elements-panel/../common/src/plugin_contract.ts","webpack://elements-panel/../common/src/plugin_lifecycle.ts","webpack://elements-panel/../common/src/plugin_manifest.ts","webpack://elements-panel/../common/src/plugin_modules.ts","webpack://elements-panel/../common/src/plugin_npm.ts","webpack://elements-panel/../common/src/plugin_overrides.ts","webpack://elements-panel/../common/src/plugin_revision.ts","webpack://elements-panel/../common/src/plugin_watch.ts","webpack://elements-panel/../common/src/process_tools.ts","webpack://elements-panel/../common/src/query_wrapper.ts","webpack://elements-panel/../common/src/runtime_paths.ts","webpack://elements-panel/../common/src/string_utils.ts","webpack://elements-panel/../common/src/system_info.ts","webpack://elements-panel/../common/src/system_storage.ts","webpack://elements-panel/../common/src/typecheck.ts","webpack://elements-panel/./src/app/plugin/context.ts","webpack://elements-panel/./src/app/plugin/loader.ts","webpack://elements-panel/external commonjs \"crypto\"","webpack://elements-panel/external commonjs \"fs-extra\"","webpack://elements-panel/external commonjs \"os-utils\"","webpack://elements-panel/external commonjs2 \"cordis\"","webpack://elements-panel/external node-commonjs \"buffer\"","webpack://elements-panel/external node-commonjs \"child_process\"","webpack://elements-panel/external node-commonjs \"events\"","webpack://elements-panel/external node-commonjs \"fs\"","webpack://elements-panel/external node-commonjs \"module\"","webpack://elements-panel/external node-commonjs \"net\"","webpack://elements-panel/external node-commonjs \"node:crypto\"","webpack://elements-panel/external node-commonjs \"node:fs\"","webpack://elements-panel/external node-commonjs \"node:module\"","webpack://elements-panel/external node-commonjs \"node:os\"","webpack://elements-panel/external node-commonjs \"node:path\"","webpack://elements-panel/external node-commonjs \"node:url\"","webpack://elements-panel/external node-commonjs \"os\"","webpack://elements-panel/external node-commonjs \"path\"","webpack://elements-panel/external node-commonjs \"process\"","webpack://elements-panel/external node-commonjs \"stream\"","webpack://elements-panel/external node-commonjs \"string_decoder\"","webpack://elements-panel/../../scripts/workspace-layout.cjs","webpack://elements-panel/webpack/bootstrap","webpack://elements-panel/./src/app.ts"],"sourcesContent":["\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n GB18030_CODE = -2,\n SEQ_START = -10,\n NODE_START = -1000,\n UNASSIGNED_NODE = new Array(0x100),\n DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n this.encodingName = codecOptions.encodingName;\n if (!codecOptions)\n throw new Error(\"DBCS codec is called without the data.\")\n if (!codecOptions.table)\n throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n // Load tables.\n var mappingTable = codecOptions.table();\n\n\n // Decode tables: MBCS -> Unicode.\n\n // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n // Trie root is decodeTables[0].\n // Values: >= 0 -> unicode character code. can be > 0xFFFF\n // == UNASSIGNED -> unknown/unassigned sequence.\n // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n // <= NODE_START -> index of the next node in our trie to process next byte.\n // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq.\n this.decodeTables = [];\n this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n this.decodeTableSeq = [];\n\n // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n for (var i = 0; i < mappingTable.length; i++)\n this._addDecodeChunk(mappingTable[i]);\n\n // Load & create GB18030 tables when needed.\n if (typeof codecOptions.gb18030 === 'function') {\n this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n // Add GB18030 common decode nodes.\n var commonThirdByteNodeIdx = this.decodeTables.length;\n this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n var commonFourthByteNodeIdx = this.decodeTables.length;\n this.decodeTables.push(UNASSIGNED_NODE.slice(0));\n\n // Fill out the tree\n var firstByteNode = this.decodeTables[0];\n for (var i = 0x81; i <= 0xFE; i++) {\n var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]];\n for (var j = 0x30; j <= 0x39; j++) {\n if (secondByteNode[j] === UNASSIGNED) {\n secondByteNode[j] = NODE_START - commonThirdByteNodeIdx;\n } else if (secondByteNode[j] > NODE_START) {\n throw new Error(\"gb18030 decode tables conflict at byte 2\");\n }\n\n var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]];\n for (var k = 0x81; k <= 0xFE; k++) {\n if (thirdByteNode[k] === UNASSIGNED) {\n thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx;\n } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {\n continue;\n } else if (thirdByteNode[k] > NODE_START) {\n throw new Error(\"gb18030 decode tables conflict at byte 3\");\n }\n\n var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]];\n for (var l = 0x30; l <= 0x39; l++) {\n if (fourthByteNode[l] === UNASSIGNED)\n fourthByteNode[l] = GB18030_CODE;\n }\n }\n }\n }\n }\n\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n \n // Encode tables: Unicode -> DBCS.\n\n // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n // == UNASSIGNED -> no conversion found. Output a default char.\n // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n this.encodeTable = [];\n \n // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n // means end of sequence (needed when one sequence is a strict subsequence of another).\n // Objects are kept separately from encodeTable to increase performance.\n this.encodeTableSeq = [];\n\n // Some chars can be decoded, but need not be encoded.\n var skipEncodeChars = {};\n if (codecOptions.encodeSkipVals)\n for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n var val = codecOptions.encodeSkipVals[i];\n if (typeof val === 'number')\n skipEncodeChars[val] = true;\n else\n for (var j = val.from; j <= val.to; j++)\n skipEncodeChars[j] = true;\n }\n \n // Use decode trie to recursively fill out encode tables.\n this._fillEncodeTable(0, 0, skipEncodeChars);\n\n // Add more encoding pairs when needed.\n if (codecOptions.encodeAdd) {\n for (var uChar in codecOptions.encodeAdd)\n if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n }\n\n this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n var bytes = [];\n for (; addr > 0; addr >>>= 8)\n bytes.push(addr & 0xFF);\n if (bytes.length == 0)\n bytes.push(0);\n\n var node = this.decodeTables[0];\n for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n var val = node[bytes[i]];\n\n if (val == UNASSIGNED) { // Create new node.\n node[bytes[i]] = NODE_START - this.decodeTables.length;\n this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n }\n else if (val <= NODE_START) { // Existing node.\n node = this.decodeTables[NODE_START - val];\n }\n else\n throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n }\n return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n // First element of chunk is the hex mbcs code where we start.\n var curAddr = parseInt(chunk[0], 16);\n\n // Choose the decoding node where we'll write our chars.\n var writeTable = this._getDecodeTrieNode(curAddr);\n curAddr = curAddr & 0xFF;\n\n // Write all other elements of the chunk to the table.\n for (var k = 1; k < chunk.length; k++) {\n var part = chunk[k];\n if (typeof part === \"string\") { // String, write as-is.\n for (var l = 0; l < part.length;) {\n var code = part.charCodeAt(l++);\n if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n var codeTrail = part.charCodeAt(l++);\n if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n else\n throw new Error(\"Incorrect surrogate pair in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n var len = 0xFFF - code + 2;\n var seq = [];\n for (var m = 0; m < len; m++)\n seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n this.decodeTableSeq.push(seq);\n }\n else\n writeTable[curAddr++] = code; // Basic char\n }\n } \n else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n var charCode = writeTable[curAddr - 1] + 1;\n for (var l = 0; l < part; l++)\n writeTable[curAddr++] = charCode++;\n }\n else\n throw new Error(\"Incorrect type '\" + typeof part + \"' given in \" + this.encodingName + \" at chunk \" + chunk[0]);\n }\n if (curAddr > 0xFF)\n throw new Error(\"Incorrect chunk in \" + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n if (this.encodeTable[high] === undefined)\n this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n if (bucket[low] <= SEQ_START)\n this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n else if (bucket[low] == UNASSIGNED)\n bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n \n // Get the root of character tree according to first character of the sequence.\n var uCode = seq[0];\n var bucket = this._getEncodeBucket(uCode);\n var low = uCode & 0xFF;\n\n var node;\n if (bucket[low] <= SEQ_START) {\n // There's already a sequence with - use it.\n node = this.encodeTableSeq[SEQ_START-bucket[low]];\n }\n else {\n // There was no sequence object - allocate a new one.\n node = {};\n if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n bucket[low] = SEQ_START - this.encodeTableSeq.length;\n this.encodeTableSeq.push(node);\n }\n\n // Traverse the character tree, allocating new nodes as needed.\n for (var j = 1; j < seq.length-1; j++) {\n var oldVal = node[uCode];\n if (typeof oldVal === 'object')\n node = oldVal;\n else {\n node = node[uCode] = {}\n if (oldVal !== undefined)\n node[DEF_CHAR] = oldVal\n }\n }\n\n // Set the leaf to given dbcsCode.\n uCode = seq[seq.length-1];\n node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n var node = this.decodeTables[nodeIdx];\n var hasValues = false;\n var subNodeEmpty = {};\n for (var i = 0; i < 0x100; i++) {\n var uCode = node[i];\n var mbCode = prefix + i;\n if (skipEncodeChars[mbCode])\n continue;\n\n if (uCode >= 0) {\n this._setEncodeChar(uCode, mbCode);\n hasValues = true;\n } else if (uCode <= NODE_START) {\n var subNodeIdx = NODE_START - uCode;\n if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030).\n var newPrefix = (mbCode << 8) >>> 0; // NOTE: '>>> 0' keeps 32-bit num positive.\n if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars))\n hasValues = true;\n else\n subNodeEmpty[subNodeIdx] = true;\n }\n } else if (uCode <= SEQ_START) {\n this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n hasValues = true;\n }\n }\n return hasValues;\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n // Encoder state\n this.leadSurrogate = -1;\n this.seqObj = undefined;\n \n // Static data\n this.encodeTable = codec.encodeTable;\n this.encodeTableSeq = codec.encodeTableSeq;\n this.defaultCharSingleByte = codec.defCharSB;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n leadSurrogate = this.leadSurrogate,\n seqObj = this.seqObj, nextChar = -1,\n i = 0, j = 0;\n\n while (true) {\n // 0. Get next character.\n if (nextChar === -1) {\n if (i == str.length) break;\n var uCode = str.charCodeAt(i++);\n }\n else {\n var uCode = nextChar;\n nextChar = -1; \n }\n\n // 1. Handle surrogates.\n if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n if (uCode < 0xDC00) { // We've got lead surrogate.\n if (leadSurrogate === -1) {\n leadSurrogate = uCode;\n continue;\n } else {\n leadSurrogate = uCode;\n // Double lead surrogate found.\n uCode = UNASSIGNED;\n }\n } else { // We've got trail surrogate.\n if (leadSurrogate !== -1) {\n uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n leadSurrogate = -1;\n } else {\n // Incomplete surrogate pair - only trail surrogate found.\n uCode = UNASSIGNED;\n }\n \n }\n }\n else if (leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n leadSurrogate = -1;\n }\n\n // 2. Convert uCode character.\n var dbcsCode = UNASSIGNED;\n if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n var resCode = seqObj[uCode];\n if (typeof resCode === 'object') { // Sequence continues.\n seqObj = resCode;\n continue;\n\n } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n dbcsCode = resCode;\n\n } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n // Try default character for this sequence\n resCode = seqObj[DEF_CHAR];\n if (resCode !== undefined) {\n dbcsCode = resCode; // Found. Write it.\n nextChar = uCode; // Current character will be written too in the next iteration.\n\n } else {\n // TODO: What if we have no default? (resCode == undefined)\n // Then, we should write first char of the sequence as-is and try the rest recursively.\n // Didn't do it for now because no encoding has this situation yet.\n // Currently, just skip the sequence and write current char.\n }\n }\n seqObj = undefined;\n }\n else if (uCode >= 0) { // Regular character\n var subtable = this.encodeTable[uCode >> 8];\n if (subtable !== undefined)\n dbcsCode = subtable[uCode & 0xFF];\n \n if (dbcsCode <= SEQ_START) { // Sequence start\n seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n continue;\n }\n\n if (dbcsCode == UNASSIGNED && this.gb18030) {\n // Use GB18030 algorithm to find character(s) to write.\n var idx = findIdx(this.gb18030.uChars, uCode);\n if (idx != -1) {\n var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n newBuf[j++] = 0x30 + dbcsCode;\n continue;\n }\n }\n }\n\n // 3. Write dbcsCode character.\n if (dbcsCode === UNASSIGNED)\n dbcsCode = this.defaultCharSingleByte;\n \n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else if (dbcsCode < 0x10000) {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n else if (dbcsCode < 0x1000000) {\n newBuf[j++] = dbcsCode >> 16;\n newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n newBuf[j++] = dbcsCode & 0xFF;\n } else {\n newBuf[j++] = dbcsCode >>> 24;\n newBuf[j++] = (dbcsCode >>> 16) & 0xFF;\n newBuf[j++] = (dbcsCode >>> 8) & 0xFF;\n newBuf[j++] = dbcsCode & 0xFF;\n }\n }\n\n this.seqObj = seqObj;\n this.leadSurrogate = leadSurrogate;\n return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n if (this.leadSurrogate === -1 && this.seqObj === undefined)\n return; // All clean. Most often case.\n\n var newBuf = Buffer.alloc(10), j = 0;\n\n if (this.seqObj) { // We're in the sequence.\n var dbcsCode = this.seqObj[DEF_CHAR];\n if (dbcsCode !== undefined) { // Write beginning of the sequence.\n if (dbcsCode < 0x100) {\n newBuf[j++] = dbcsCode;\n }\n else {\n newBuf[j++] = dbcsCode >> 8; // high byte\n newBuf[j++] = dbcsCode & 0xFF; // low byte\n }\n } else {\n // See todo above.\n }\n this.seqObj = undefined;\n }\n\n if (this.leadSurrogate !== -1) {\n // Incomplete surrogate pair - only lead surrogate found.\n newBuf[j++] = this.defaultCharSingleByte;\n this.leadSurrogate = -1;\n }\n \n return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n // Decoder state\n this.nodeIdx = 0;\n this.prevBytes = [];\n\n // Static data\n this.decodeTables = codec.decodeTables;\n this.decodeTableSeq = codec.decodeTableSeq;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n var newBuf = Buffer.alloc(buf.length*2),\n nodeIdx = this.nodeIdx, \n prevBytes = this.prevBytes, prevOffset = this.prevBytes.length,\n seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence.\n uCode;\n\n for (var i = 0, j = 0; i < buf.length; i++) {\n var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset];\n\n // Lookup in current trie node.\n var uCode = this.decodeTables[nodeIdx][curByte];\n\n if (uCode >= 0) { \n // Normal character, just use it.\n }\n else if (uCode === UNASSIGNED) { // Unknown char.\n // TODO: Callback with seq.\n uCode = this.defaultCharUnicode.charCodeAt(0);\n i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again.\n }\n else if (uCode === GB18030_CODE) {\n if (i >= 3) {\n var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30);\n } else {\n var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + \n (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + \n (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + \n (curByte-0x30);\n }\n var idx = findIdx(this.gb18030.gbChars, ptr);\n uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n }\n else if (uCode <= NODE_START) { // Go to next trie node.\n nodeIdx = NODE_START - uCode;\n continue;\n }\n else if (uCode <= SEQ_START) { // Output a sequence of chars.\n var seq = this.decodeTableSeq[SEQ_START - uCode];\n for (var k = 0; k < seq.length - 1; k++) {\n uCode = seq[k];\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n }\n uCode = seq[seq.length-1];\n }\n else\n throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n // Write the character to buffer, handling higher planes using surrogate pair.\n if (uCode >= 0x10000) { \n uCode -= 0x10000;\n var uCodeLead = 0xD800 | (uCode >> 10);\n newBuf[j++] = uCodeLead & 0xFF;\n newBuf[j++] = uCodeLead >> 8;\n\n uCode = 0xDC00 | (uCode & 0x3FF);\n }\n newBuf[j++] = uCode & 0xFF;\n newBuf[j++] = uCode >> 8;\n\n // Reset trie node.\n nodeIdx = 0; seqStart = i+1;\n }\n\n this.nodeIdx = nodeIdx;\n this.prevBytes = (seqStart >= 0)\n ? Array.prototype.slice.call(buf, seqStart)\n : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf));\n\n return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n var ret = '';\n\n // Try to parse all remaining chars.\n while (this.prevBytes.length > 0) {\n // Skip 1 character in the buffer.\n ret += this.defaultCharUnicode;\n var bytesArr = this.prevBytes.slice(1);\n\n // Parse remaining as usual.\n this.prevBytes = [];\n this.nodeIdx = 0;\n if (bytesArr.length > 0)\n ret += this.write(bytesArr);\n }\n\n this.prevBytes = [];\n this.nodeIdx = 0;\n return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n if (table[0] > val)\n return -1;\n\n var l = 0, r = table.length;\n while (l < r-1) { // always table[l] <= val < table[r]\n var mid = l + ((r-l+1) >> 1);\n if (table[mid] <= val)\n l = mid;\n else\n r = mid;\n }\n return l;\n}\n\n","\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n \n // == Japanese/ShiftJIS ====================================================\n // All japanese encodings are based on JIS X set of standards:\n // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.\n // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n // Has several variations in 1978, 1983, 1990 and 1997.\n // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n // 2 planes, first is superset of 0208, second - revised 0212.\n // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n // Byte encodings are:\n // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes.\n // 0x00-0x7F - lower part of 0201\n // 0x8E, 0xA1-0xDF - upper part of 0201\n // (0xA1-0xFE)x2 - 0208 plane (94x94).\n // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n // Used as-is in ISO2022 family.\n // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n // 0201-1976 Roman, 0208-1978, 0208-1983.\n // * ISO2022-JP-1: Adds esc seq for 0212-1990.\n // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n // * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n //\n // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n //\n // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n 'shiftjis': {\n type: '_dbcs',\n table: function() { return require('./tables/shiftjis.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n },\n 'csshiftjis': 'shiftjis',\n 'mskanji': 'shiftjis',\n 'sjis': 'shiftjis',\n 'windows31j': 'shiftjis',\n 'ms31j': 'shiftjis',\n 'xsjis': 'shiftjis',\n 'windows932': 'shiftjis',\n 'ms932': 'shiftjis',\n '932': 'shiftjis',\n 'cp932': 'shiftjis',\n\n 'eucjp': {\n type: '_dbcs',\n table: function() { return require('./tables/eucjp.json') },\n encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n },\n\n // TODO: KDDI extension to Shift_JIS\n // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n // == Chinese/GBK ==========================================================\n // http://en.wikipedia.org/wiki/GBK\n // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n 'gb2312': 'cp936',\n 'gb231280': 'cp936',\n 'gb23121980': 'cp936',\n 'csgb2312': 'cp936',\n 'csiso58gb231280': 'cp936',\n 'euccn': 'cp936',\n\n // Microsoft's CP936 is a subset and approximation of GBK.\n 'windows936': 'cp936',\n 'ms936': 'cp936',\n '936': 'cp936',\n 'cp936': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json') },\n },\n\n // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n 'gbk': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n },\n 'xgbk': 'gbk',\n 'isoir58': 'gbk',\n\n // GB18030 is an algorithmic extension of GBK.\n // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n // http://icu-project.org/docs/papers/gb18030.html\n // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n 'gb18030': {\n type: '_dbcs',\n table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n gb18030: function() { return require('./tables/gb18030-ranges.json') },\n encodeSkipVals: [0x80],\n encodeAdd: {'€': 0xA2E3},\n },\n\n 'chinese': 'gb18030',\n\n\n // == Korean ===============================================================\n // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n 'windows949': 'cp949',\n 'ms949': 'cp949',\n '949': 'cp949',\n 'cp949': {\n type: '_dbcs',\n table: function() { return require('./tables/cp949.json') },\n },\n\n 'cseuckr': 'cp949',\n 'csksc56011987': 'cp949',\n 'euckr': 'cp949',\n 'isoir149': 'cp949',\n 'korean': 'cp949',\n 'ksc56011987': 'cp949',\n 'ksc56011989': 'cp949',\n 'ksc5601': 'cp949',\n\n\n // == Big5/Taiwan/Hong Kong ================================================\n // There are lots of tables for Big5 and cp950. Please see the following links for history:\n // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n // Variations, in roughly number of defined chars:\n // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n // * Big5-2003 (Taiwan standard) almost superset of cp950.\n // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n // Plus, it has 4 combining sequences.\n // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n // Implementations are not consistent within browsers; sometimes labeled as just big5.\n // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n // \n // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n 'windows950': 'cp950',\n 'ms950': 'cp950',\n '950': 'cp950',\n 'cp950': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json') },\n },\n\n // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n 'big5': 'big5hkscs',\n 'big5hkscs': {\n type: '_dbcs',\n table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n encodeSkipVals: [\n // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of\n // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.\n // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.\n 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,\n 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,\n 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,\n 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,\n 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,\n\n // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345\n 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce,\n ],\n },\n\n 'cnbig5': 'big5hkscs',\n 'csbig5': 'big5hkscs',\n 'xxbig5': 'big5hkscs',\n};\n","\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n require(\"./internal\"),\n require(\"./utf32\"),\n require(\"./utf16\"),\n require(\"./utf7\"),\n require(\"./sbcs-codec\"),\n require(\"./sbcs-data\"),\n require(\"./sbcs-data-generated\"),\n require(\"./dbcs-codec\"),\n require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it.\nfor (var i = 0; i < modules.length; i++) {\n var module = modules[i];\n for (var enc in module)\n if (Object.prototype.hasOwnProperty.call(module, enc))\n exports[enc] = module[enc];\n}\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n // Encodings\n utf8: { type: \"_internal\", bomAware: true},\n cesu8: { type: \"_internal\", bomAware: true},\n unicode11utf8: \"utf8\",\n\n ucs2: { type: \"_internal\", bomAware: true},\n utf16le: \"ucs2\",\n\n binary: { type: \"_internal\" },\n base64: { type: \"_internal\" },\n hex: { type: \"_internal\" },\n\n // Codec.\n _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n this.enc = codecOptions.encodingName;\n this.bomAware = codecOptions.bomAware;\n\n if (this.enc === \"base64\")\n this.encoder = InternalEncoderBase64;\n else if (this.enc === \"cesu8\") {\n this.enc = \"utf8\"; // Use utf8 for decoding.\n this.encoder = InternalEncoderCesu8;\n\n // Add decoder for versions of Node not supporting CESU-8\n if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') {\n this.decoder = InternalDecoderCesu8;\n this.defaultCharUnicode = iconv.defaultCharUnicode;\n }\n }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n this.decoder = new StringDecoder(codec.enc);\n}\n\nInternalDecoder.prototype.write = function(buf) {\n if (!Buffer.isBuffer(buf)) {\n buf = Buffer.from(buf);\n }\n\n return this.decoder.write(buf);\n}\n\nInternalDecoder.prototype.end = function() {\n return this.decoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n str = this.prevStr + str;\n var completeQuads = str.length - (str.length % 4);\n this.prevStr = str.slice(completeQuads);\n str = str.slice(0, completeQuads);\n\n return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n for (var i = 0; i < str.length; i++) {\n var charCode = str.charCodeAt(i);\n // Naive implementation, but it works because CESU-8 is especially easy\n // to convert from UTF-16 (which all JS strings are encoded in).\n if (charCode < 0x80)\n buf[bufIdx++] = charCode;\n else if (charCode < 0x800) {\n buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n else { // charCode will always be < 0x10000 in javascript.\n buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n }\n }\n return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n this.acc = 0;\n this.contBytes = 0;\n this.accBytes = 0;\n this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n res = '';\n for (var i = 0; i < buf.length; i++) {\n var curByte = buf[i];\n if ((curByte & 0xC0) !== 0x80) { // Leading byte\n if (contBytes > 0) { // Previous code is invalid\n res += this.defaultCharUnicode;\n contBytes = 0;\n }\n\n if (curByte < 0x80) { // Single-byte code\n res += String.fromCharCode(curByte);\n } else if (curByte < 0xE0) { // Two-byte code\n acc = curByte & 0x1F;\n contBytes = 1; accBytes = 1;\n } else if (curByte < 0xF0) { // Three-byte code\n acc = curByte & 0x0F;\n contBytes = 2; accBytes = 1;\n } else { // Four or more are not supported for CESU-8.\n res += this.defaultCharUnicode;\n }\n } else { // Continuation byte\n if (contBytes > 0) { // We're waiting for it.\n acc = (acc << 6) | (curByte & 0x3f);\n contBytes--; accBytes++;\n if (contBytes === 0) {\n // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n if (accBytes === 2 && acc < 0x80 && acc > 0)\n res += this.defaultCharUnicode;\n else if (accBytes === 3 && acc < 0x800)\n res += this.defaultCharUnicode;\n else\n // Actually add character.\n res += String.fromCharCode(acc);\n }\n } else { // Unexpected continuation byte\n res += this.defaultCharUnicode;\n }\n }\n }\n this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n var res = 0;\n if (this.contBytes > 0)\n res += this.defaultCharUnicode;\n return res;\n}\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n if (!codecOptions)\n throw new Error(\"SBCS codec is called without the data.\")\n \n // Prepare char buffer for decoding.\n if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n \n if (codecOptions.chars.length === 128) {\n var asciiString = \"\";\n for (var i = 0; i < 128; i++)\n asciiString += String.fromCharCode(i);\n codecOptions.chars = asciiString + codecOptions.chars;\n }\n\n this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n \n // Encoding buffer.\n var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n for (var i = 0; i < codecOptions.chars.length; i++)\n encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n var buf = Buffer.alloc(str.length);\n for (var i = 0; i < str.length; i++)\n buf[i] = this.encodeBuf[str.charCodeAt(i)];\n \n return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n var decodeBuf = this.decodeBuf;\n var newBuf = Buffer.alloc(buf.length*2);\n var idx1 = 0, idx2 = 0;\n for (var i = 0; i < buf.length; i++) {\n idx1 = buf[i]*2; idx2 = i*2;\n newBuf[idx2] = decodeBuf[idx1];\n newBuf[idx2+1] = decodeBuf[idx1+1];\n }\n return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n","\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n \"437\": \"cp437\",\n \"737\": \"cp737\",\n \"775\": \"cp775\",\n \"850\": \"cp850\",\n \"852\": \"cp852\",\n \"855\": \"cp855\",\n \"856\": \"cp856\",\n \"857\": \"cp857\",\n \"858\": \"cp858\",\n \"860\": \"cp860\",\n \"861\": \"cp861\",\n \"862\": \"cp862\",\n \"863\": \"cp863\",\n \"864\": \"cp864\",\n \"865\": \"cp865\",\n \"866\": \"cp866\",\n \"869\": \"cp869\",\n \"874\": \"windows874\",\n \"922\": \"cp922\",\n \"1046\": \"cp1046\",\n \"1124\": \"cp1124\",\n \"1125\": \"cp1125\",\n \"1129\": \"cp1129\",\n \"1133\": \"cp1133\",\n \"1161\": \"cp1161\",\n \"1162\": \"cp1162\",\n \"1163\": \"cp1163\",\n \"1250\": \"windows1250\",\n \"1251\": \"windows1251\",\n \"1252\": \"windows1252\",\n \"1253\": \"windows1253\",\n \"1254\": \"windows1254\",\n \"1255\": \"windows1255\",\n \"1256\": \"windows1256\",\n \"1257\": \"windows1257\",\n \"1258\": \"windows1258\",\n \"28591\": \"iso88591\",\n \"28592\": \"iso88592\",\n \"28593\": \"iso88593\",\n \"28594\": \"iso88594\",\n \"28595\": \"iso88595\",\n \"28596\": \"iso88596\",\n \"28597\": \"iso88597\",\n \"28598\": \"iso88598\",\n \"28599\": \"iso88599\",\n \"28600\": \"iso885910\",\n \"28601\": \"iso885911\",\n \"28603\": \"iso885913\",\n \"28604\": \"iso885914\",\n \"28605\": \"iso885915\",\n \"28606\": \"iso885916\",\n \"windows874\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"win874\": \"windows874\",\n \"cp874\": \"windows874\",\n \"windows1250\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n },\n \"win1250\": \"windows1250\",\n \"cp1250\": \"windows1250\",\n \"windows1251\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"win1251\": \"windows1251\",\n \"cp1251\": \"windows1251\",\n \"windows1252\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"win1252\": \"windows1252\",\n \"cp1252\": \"windows1252\",\n \"windows1253\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n },\n \"win1253\": \"windows1253\",\n \"cp1253\": \"windows1253\",\n \"windows1254\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n },\n \"win1254\": \"windows1254\",\n \"cp1254\": \"windows1254\",\n \"windows1255\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\"\n },\n \"win1255\": \"windows1255\",\n \"cp1255\": \"windows1255\",\n \"windows1256\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے\"\n },\n \"win1256\": \"windows1256\",\n \"cp1256\": \"windows1256\",\n \"windows1257\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙\"\n },\n \"win1257\": \"windows1257\",\n \"cp1257\": \"windows1257\",\n \"windows1258\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"win1258\": \"windows1258\",\n \"cp1258\": \"windows1258\",\n \"iso88591\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"cp28591\": \"iso88591\",\n \"iso88592\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\"\n },\n \"cp28592\": \"iso88592\",\n \"iso88593\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙\"\n },\n \"cp28593\": \"iso88593\",\n \"iso88594\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙\"\n },\n \"cp28594\": \"iso88594\",\n \"iso88595\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ\"\n },\n \"cp28595\": \"iso88595\",\n \"iso88596\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������\"\n },\n \"cp28596\": \"iso88596\",\n \"iso88597\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\"\n },\n \"cp28597\": \"iso88597\",\n \"iso88598\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\"\n },\n \"cp28598\": \"iso88598\",\n \"iso88599\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\"\n },\n \"cp28599\": \"iso88599\",\n \"iso885910\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ\"\n },\n \"cp28600\": \"iso885910\",\n \"iso885911\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"cp28601\": \"iso885911\",\n \"iso885913\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’\"\n },\n \"cp28603\": \"iso885913\",\n \"iso885914\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ\"\n },\n \"cp28604\": \"iso885914\",\n \"iso885915\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"cp28605\": \"iso885915\",\n \"iso885916\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ\"\n },\n \"cp28606\": \"iso885916\",\n \"cp437\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm437\": \"cp437\",\n \"csibm437\": \"cp437\",\n \"cp737\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ \"\n },\n \"ibm737\": \"cp737\",\n \"csibm737\": \"cp737\",\n \"cp775\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ \"\n },\n \"ibm775\": \"cp775\",\n \"csibm775\": \"cp775\",\n \"cp850\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm850\": \"cp850\",\n \"csibm850\": \"cp850\",\n \"cp852\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ \"\n },\n \"ibm852\": \"cp852\",\n \"csibm852\": \"cp852\",\n \"cp855\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ \"\n },\n \"ibm855\": \"cp855\",\n \"csibm855\": \"cp855\",\n \"cp856\": {\n \"type\": \"_sbcs\",\n \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm856\": \"cp856\",\n \"csibm856\": \"cp856\",\n \"cp857\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm857\": \"cp857\",\n \"csibm857\": \"cp857\",\n \"cp858\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ \"\n },\n \"ibm858\": \"cp858\",\n \"csibm858\": \"cp858\",\n \"cp860\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm860\": \"cp860\",\n \"csibm860\": \"cp860\",\n \"cp861\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm861\": \"cp861\",\n \"csibm861\": \"cp861\",\n \"cp862\": {\n \"type\": \"_sbcs\",\n \"chars\": \"אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm862\": \"cp862\",\n \"csibm862\": \"cp862\",\n \"cp863\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm863\": \"cp863\",\n \"csibm863\": \"cp863\",\n \"cp864\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�\"\n },\n \"ibm864\": \"cp864\",\n \"csibm864\": \"cp864\",\n \"cp865\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n \"ibm865\": \"cp865\",\n \"csibm865\": \"cp865\",\n \"cp866\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ \"\n },\n \"ibm866\": \"cp866\",\n \"csibm866\": \"cp866\",\n \"cp869\": {\n \"type\": \"_sbcs\",\n \"chars\": \"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ \"\n },\n \"ibm869\": \"cp869\",\n \"csibm869\": \"cp869\",\n \"cp922\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ\"\n },\n \"ibm922\": \"cp922\",\n \"csibm922\": \"cp922\",\n \"cp1046\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�\"\n },\n \"ibm1046\": \"cp1046\",\n \"csibm1046\": \"cp1046\",\n \"cp1124\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ\"\n },\n \"ibm1124\": \"cp1124\",\n \"csibm1124\": \"cp1124\",\n \"cp1125\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ \"\n },\n \"ibm1125\": \"cp1125\",\n \"csibm1125\": \"cp1125\",\n \"cp1129\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"ibm1129\": \"cp1129\",\n \"csibm1129\": \"cp1129\",\n \"cp1133\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�\"\n },\n \"ibm1133\": \"cp1133\",\n \"csibm1133\": \"cp1133\",\n \"cp1161\": {\n \"type\": \"_sbcs\",\n \"chars\": \"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ \"\n },\n \"ibm1161\": \"cp1161\",\n \"csibm1161\": \"cp1161\",\n \"cp1162\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n },\n \"ibm1162\": \"cp1162\",\n \"csibm1162\": \"cp1162\",\n \"cp1163\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\"\n },\n \"ibm1163\": \"cp1163\",\n \"csibm1163\": \"cp1163\",\n \"maccroatian\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ\"\n },\n \"maccyrillic\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n },\n \"macgreek\": {\n \"type\": \"_sbcs\",\n \"chars\": \"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�\"\n },\n \"maciceland\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macroman\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macromania\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macthai\": {\n \"type\": \"_sbcs\",\n \"chars\": \"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����\"\n },\n \"macturkish\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"macukraine\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\"\n },\n \"koi8r\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8u\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8ru\": {\n \"type\": \"_sbcs\",\n \"chars\": \"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"koi8t\": {\n \"type\": \"_sbcs\",\n \"chars\": \"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\"\n },\n \"armscii8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�\"\n },\n \"rk1048\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"tcvn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000ÚỤ\\u0003ỪỬỮ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010ỨỰỲỶỸÝỴ\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ\"\n },\n \"georgianacademy\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"georgianps\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\"\n },\n \"pt154\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\"\n },\n \"viscii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001Ẳ\\u0003\\u0004ẴẪ\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013Ỷ\\u0015\\u0016\\u0017\\u0018Ỹ\\u001a\\u001b\\u001c\\u001dỴ\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ\"\n },\n \"iso646cn\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"iso646jp\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"hproman8\": {\n \"type\": \"_sbcs\",\n \"chars\": \"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�\"\n },\n \"macintosh\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\"\n },\n \"ascii\": {\n \"type\": \"_sbcs\",\n \"chars\": \"��������������������������������������������������������������������������������������������������������������������������������\"\n },\n \"tis620\": {\n \"type\": \"_sbcs\",\n \"chars\": \"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\"\n }\n}","\"use strict\";\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n // Not supported by iconv, not sure why.\n \"10029\": \"maccenteuro\",\n \"maccenteuro\": {\n \"type\": \"_sbcs\",\n \"chars\": \"ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ\"\n },\n\n \"808\": \"cp808\",\n \"ibm808\": \"cp808\",\n \"cp808\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ \"\n },\n\n \"mik\": {\n \"type\": \"_sbcs\",\n \"chars\": \"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \"\n },\n\n \"cp720\": {\n \"type\": \"_sbcs\",\n \"chars\": \"\\x80\\x81éâ\\x84à\\x86çêëèïî\\x8d\\x8e\\x8f\\x90\\u0651\\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\\u064b\\u064c\\u064d\\u064e\\u064f\\u0650≈°∙·√ⁿ²■\\u00a0\"\n },\n\n // Aliases of generated encodings.\n \"ascii8bit\": \"ascii\",\n \"usascii\": \"ascii\",\n \"ansix34\": \"ascii\",\n \"ansix341968\": \"ascii\",\n \"ansix341986\": \"ascii\",\n \"csascii\": \"ascii\",\n \"cp367\": \"ascii\",\n \"ibm367\": \"ascii\",\n \"isoir6\": \"ascii\",\n \"iso646us\": \"ascii\",\n \"iso646irv\": \"ascii\",\n \"us\": \"ascii\",\n\n \"latin1\": \"iso88591\",\n \"latin2\": \"iso88592\",\n \"latin3\": \"iso88593\",\n \"latin4\": \"iso88594\",\n \"latin5\": \"iso88599\",\n \"latin6\": \"iso885910\",\n \"latin7\": \"iso885913\",\n \"latin8\": \"iso885914\",\n \"latin9\": \"iso885915\",\n \"latin10\": \"iso885916\",\n\n \"csisolatin1\": \"iso88591\",\n \"csisolatin2\": \"iso88592\",\n \"csisolatin3\": \"iso88593\",\n \"csisolatin4\": \"iso88594\",\n \"csisolatincyrillic\": \"iso88595\",\n \"csisolatinarabic\": \"iso88596\",\n \"csisolatingreek\" : \"iso88597\",\n \"csisolatinhebrew\": \"iso88598\",\n \"csisolatin5\": \"iso88599\",\n \"csisolatin6\": \"iso885910\",\n\n \"l1\": \"iso88591\",\n \"l2\": \"iso88592\",\n \"l3\": \"iso88593\",\n \"l4\": \"iso88594\",\n \"l5\": \"iso88599\",\n \"l6\": \"iso885910\",\n \"l7\": \"iso885913\",\n \"l8\": \"iso885914\",\n \"l9\": \"iso885915\",\n \"l10\": \"iso885916\",\n\n \"isoir14\": \"iso646jp\",\n \"isoir57\": \"iso646cn\",\n \"isoir100\": \"iso88591\",\n \"isoir101\": \"iso88592\",\n \"isoir109\": \"iso88593\",\n \"isoir110\": \"iso88594\",\n \"isoir144\": \"iso88595\",\n \"isoir127\": \"iso88596\",\n \"isoir126\": \"iso88597\",\n \"isoir138\": \"iso88598\",\n \"isoir148\": \"iso88599\",\n \"isoir157\": \"iso885910\",\n \"isoir166\": \"tis620\",\n \"isoir179\": \"iso885913\",\n \"isoir199\": \"iso885914\",\n \"isoir203\": \"iso885915\",\n \"isoir226\": \"iso885916\",\n\n \"cp819\": \"iso88591\",\n \"ibm819\": \"iso88591\",\n\n \"cyrillic\": \"iso88595\",\n\n \"arabic\": \"iso88596\",\n \"arabic8\": \"iso88596\",\n \"ecma114\": \"iso88596\",\n \"asmo708\": \"iso88596\",\n\n \"greek\" : \"iso88597\",\n \"greek8\" : \"iso88597\",\n \"ecma118\" : \"iso88597\",\n \"elot928\" : \"iso88597\",\n\n \"hebrew\": \"iso88598\",\n \"hebrew8\": \"iso88598\",\n\n \"turkish\": \"iso88599\",\n \"turkish8\": \"iso88599\",\n\n \"thai\": \"iso885911\",\n \"thai8\": \"iso885911\",\n\n \"celtic\": \"iso885914\",\n \"celtic8\": \"iso885914\",\n \"isoceltic\": \"iso885914\",\n\n \"tis6200\": \"tis620\",\n \"tis62025291\": \"tis620\",\n \"tis62025330\": \"tis620\",\n\n \"10000\": \"macroman\",\n \"10006\": \"macgreek\",\n \"10007\": \"maccyrillic\",\n \"10079\": \"maciceland\",\n \"10081\": \"macturkish\",\n\n \"cspc8codepage437\": \"cp437\",\n \"cspc775baltic\": \"cp775\",\n \"cspc850multilingual\": \"cp850\",\n \"cspcp852\": \"cp852\",\n \"cspc862latinhebrew\": \"cp862\",\n \"cpgr\": \"cp869\",\n\n \"msee\": \"cp1250\",\n \"mscyrl\": \"cp1251\",\n \"msansi\": \"cp1252\",\n \"msgreek\": \"cp1253\",\n \"msturk\": \"cp1254\",\n \"mshebr\": \"cp1255\",\n \"msarab\": \"cp1256\",\n \"winbaltrim\": \"cp1257\",\n\n \"cp20866\": \"koi8r\",\n \"20866\": \"koi8r\",\n \"ibm878\": \"koi8r\",\n \"cskoi8r\": \"koi8r\",\n\n \"cp21866\": \"koi8u\",\n \"21866\": \"koi8u\",\n \"ibm1168\": \"koi8u\",\n\n \"strk10482002\": \"rk1048\",\n\n \"tcvn5712\": \"tcvn\",\n \"tcvn57121\": \"tcvn\",\n\n \"gb198880\": \"iso646cn\",\n \"cn\": \"iso646cn\",\n\n \"csiso14jisc6220ro\": \"iso646jp\",\n \"jisc62201969ro\": \"iso646jp\",\n \"jp\": \"iso646jp\",\n\n \"cshproman8\": \"hproman8\",\n \"r8\": \"hproman8\",\n \"roman8\": \"hproman8\",\n \"xroman8\": \"hproman8\",\n \"ibm1051\": \"hproman8\",\n\n \"mac\": \"macintosh\",\n \"csmacintosh\": \"macintosh\",\n};\n\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n var buf = Buffer.from(str, 'ucs2');\n for (var i = 0; i < buf.length; i += 2) {\n var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n }\n return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n if (buf.length == 0)\n return '';\n\n var buf2 = Buffer.alloc(buf.length + 1),\n i = 0, j = 0;\n\n if (this.overflowByte !== -1) {\n buf2[0] = buf[0];\n buf2[1] = this.overflowByte;\n i = 1; j = 2;\n }\n\n for (; i < buf.length-1; i += 2, j+= 2) {\n buf2[j] = buf[i+1];\n buf2[j+1] = buf[i];\n }\n\n this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n this.overflowByte = -1;\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n options = options || {};\n if (options.addBOM === undefined)\n options.addBOM = true;\n this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n this.decoder = null;\n this.initialBufs = [];\n this.initialBufsLen = 0;\n\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n if (!this.decoder) {\n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBufs.push(buf);\n this.initialBufsLen += buf.length;\n \n if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n\n return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n if (!this.decoder) {\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n var trail = this.decoder.end();\n if (trail)\n resStr += trail;\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n return this.decoder.end();\n}\n\nfunction detectEncoding(bufs, defaultEncoding) {\n var b = [];\n var charsProcessed = 0;\n var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE.\n\n outer_loop:\n for (var i = 0; i < bufs.length; i++) {\n var buf = bufs[i];\n for (var j = 0; j < buf.length; j++) {\n b.push(buf[j]);\n if (b.length === 2) {\n if (charsProcessed === 0) {\n // Check BOM first.\n if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le';\n if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be';\n }\n\n if (b[0] === 0 && b[1] !== 0) asciiCharsBE++;\n if (b[0] !== 0 && b[1] === 0) asciiCharsLE++;\n\n b.length = 0;\n charsProcessed++;\n\n if (charsProcessed >= 100) {\n break outer_loop;\n }\n }\n }\n }\n\n // Make decisions.\n // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n // So, we count ASCII as if it was LE or BE, and decide from that.\n if (asciiCharsBE > asciiCharsLE) return 'utf-16be';\n if (asciiCharsBE < asciiCharsLE) return 'utf-16le';\n\n // Couldn't decide (likely all zeros or not enough data).\n return defaultEncoding || 'utf-16le';\n}\n\n\n","'use strict';\n\nvar Buffer = require('safer-buffer').Buffer;\n\n// == UTF32-LE/BE codec. ==========================================================\n\nexports._utf32 = Utf32Codec;\n\nfunction Utf32Codec(codecOptions, iconv) {\n this.iconv = iconv;\n this.bomAware = true;\n this.isLE = codecOptions.isLE;\n}\n\nexports.utf32le = { type: '_utf32', isLE: true };\nexports.utf32be = { type: '_utf32', isLE: false };\n\n// Aliases\nexports.ucs4le = 'utf32le';\nexports.ucs4be = 'utf32be';\n\nUtf32Codec.prototype.encoder = Utf32Encoder;\nUtf32Codec.prototype.decoder = Utf32Decoder;\n\n// -- Encoding\n\nfunction Utf32Encoder(options, codec) {\n this.isLE = codec.isLE;\n this.highSurrogate = 0;\n}\n\nUtf32Encoder.prototype.write = function(str) {\n var src = Buffer.from(str, 'ucs2');\n var dst = Buffer.alloc(src.length * 2);\n var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;\n var offset = 0;\n\n for (var i = 0; i < src.length; i += 2) {\n var code = src.readUInt16LE(i);\n var isHighSurrogate = (0xD800 <= code && code < 0xDC00);\n var isLowSurrogate = (0xDC00 <= code && code < 0xE000);\n\n if (this.highSurrogate) {\n if (isHighSurrogate || !isLowSurrogate) {\n // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low\n // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character\n // (technically wrong, but expected by some applications, like Windows file names).\n write32.call(dst, this.highSurrogate, offset);\n offset += 4;\n }\n else {\n // Create 32-bit value from high and low surrogates;\n var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000;\n\n write32.call(dst, codepoint, offset);\n offset += 4;\n this.highSurrogate = 0;\n\n continue;\n }\n }\n\n if (isHighSurrogate)\n this.highSurrogate = code;\n else {\n // Even if the current character is a low surrogate, with no previous high surrogate, we'll\n // encode it as a semi-invalid stand-alone character for the same reasons expressed above for\n // unpaired high surrogates.\n write32.call(dst, code, offset);\n offset += 4;\n this.highSurrogate = 0;\n }\n }\n\n if (offset < dst.length)\n dst = dst.slice(0, offset);\n\n return dst;\n};\n\nUtf32Encoder.prototype.end = function() {\n // Treat any leftover high surrogate as a semi-valid independent character.\n if (!this.highSurrogate)\n return;\n\n var buf = Buffer.alloc(4);\n\n if (this.isLE)\n buf.writeUInt32LE(this.highSurrogate, 0);\n else\n buf.writeUInt32BE(this.highSurrogate, 0);\n\n this.highSurrogate = 0;\n\n return buf;\n};\n\n// -- Decoding\n\nfunction Utf32Decoder(options, codec) {\n this.isLE = codec.isLE;\n this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);\n this.overflow = [];\n}\n\nUtf32Decoder.prototype.write = function(src) {\n if (src.length === 0)\n return '';\n\n var i = 0;\n var codepoint = 0;\n var dst = Buffer.alloc(src.length + 4);\n var offset = 0;\n var isLE = this.isLE;\n var overflow = this.overflow;\n var badChar = this.badChar;\n\n if (overflow.length > 0) {\n for (; i < src.length && overflow.length < 4; i++)\n overflow.push(src[i]);\n \n if (overflow.length === 4) {\n // NOTE: codepoint is a signed int32 and can be negative.\n // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).\n if (isLE) {\n codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24);\n } else {\n codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24);\n }\n overflow.length = 0;\n\n offset = _writeCodepoint(dst, offset, codepoint, badChar);\n }\n }\n\n // Main loop. Should be as optimized as possible.\n for (; i < src.length - 3; i += 4) {\n // NOTE: codepoint is a signed int32 and can be negative.\n if (isLE) {\n codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24);\n } else {\n codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24);\n }\n offset = _writeCodepoint(dst, offset, codepoint, badChar);\n }\n\n // Keep overflowing bytes.\n for (; i < src.length; i++) {\n overflow.push(src[i]);\n }\n\n return dst.slice(0, offset).toString('ucs2');\n};\n\nfunction _writeCodepoint(dst, offset, codepoint, badChar) {\n // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.\n if (codepoint < 0 || codepoint > 0x10FFFF) {\n // Not a valid Unicode codepoint\n codepoint = badChar;\n } \n\n // Ephemeral Planes: Write high surrogate.\n if (codepoint >= 0x10000) {\n codepoint -= 0x10000;\n\n var high = 0xD800 | (codepoint >> 10);\n dst[offset++] = high & 0xff;\n dst[offset++] = high >> 8;\n\n // Low surrogate is written below.\n var codepoint = 0xDC00 | (codepoint & 0x3FF);\n }\n\n // Write BMP char or low surrogate.\n dst[offset++] = codepoint & 0xff;\n dst[offset++] = codepoint >> 8;\n\n return offset;\n};\n\nUtf32Decoder.prototype.end = function() {\n this.overflow.length = 0;\n};\n\n// == UTF-32 Auto codec =============================================================\n// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.\n// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32\n// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});\n\n// Encoder prepends BOM (which can be overridden with (addBOM: false}).\n\nexports.utf32 = Utf32AutoCodec;\nexports.ucs4 = 'utf32';\n\nfunction Utf32AutoCodec(options, iconv) {\n this.iconv = iconv;\n}\n\nUtf32AutoCodec.prototype.encoder = Utf32AutoEncoder;\nUtf32AutoCodec.prototype.decoder = Utf32AutoDecoder;\n\n// -- Encoding\n\nfunction Utf32AutoEncoder(options, codec) {\n options = options || {};\n\n if (options.addBOM === undefined)\n options.addBOM = true;\n\n this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options);\n}\n\nUtf32AutoEncoder.prototype.write = function(str) {\n return this.encoder.write(str);\n};\n\nUtf32AutoEncoder.prototype.end = function() {\n return this.encoder.end();\n};\n\n// -- Decoding\n\nfunction Utf32AutoDecoder(options, codec) {\n this.decoder = null;\n this.initialBufs = [];\n this.initialBufsLen = 0;\n this.options = options || {};\n this.iconv = codec.iconv;\n}\n\nUtf32AutoDecoder.prototype.write = function(buf) {\n if (!this.decoder) { \n // Codec is not chosen yet. Accumulate initial bytes.\n this.initialBufs.push(buf);\n this.initialBufsLen += buf.length;\n\n if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)\n return '';\n\n // We have enough bytes -> detect endianness.\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n\n return this.decoder.write(buf);\n};\n\nUtf32AutoDecoder.prototype.end = function() {\n if (!this.decoder) {\n var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);\n this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n var resStr = '';\n for (var i = 0; i < this.initialBufs.length; i++)\n resStr += this.decoder.write(this.initialBufs[i]);\n\n var trail = this.decoder.end();\n if (trail)\n resStr += trail;\n\n this.initialBufs.length = this.initialBufsLen = 0;\n return resStr;\n }\n\n return this.decoder.end();\n};\n\nfunction detectEncoding(bufs, defaultEncoding) {\n var b = [];\n var charsProcessed = 0;\n var invalidLE = 0, invalidBE = 0; // Number of invalid chars when decoded as LE or BE.\n var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE.\n\n outer_loop:\n for (var i = 0; i < bufs.length; i++) {\n var buf = bufs[i];\n for (var j = 0; j < buf.length; j++) {\n b.push(buf[j]);\n if (b.length === 4) {\n if (charsProcessed === 0) {\n // Check BOM first.\n if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {\n return 'utf-32le';\n }\n if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {\n return 'utf-32be';\n }\n }\n\n if (b[0] !== 0 || b[1] > 0x10) invalidBE++;\n if (b[3] !== 0 || b[2] > 0x10) invalidLE++;\n\n if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++;\n if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++;\n\n b.length = 0;\n charsProcessed++;\n\n if (charsProcessed >= 100) {\n break outer_loop;\n }\n }\n }\n }\n\n // Make decisions.\n if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return 'utf-32be';\n if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return 'utf-32le';\n\n // Couldn't decide (likely all zeros or not enough data).\n return defaultEncoding || 'utf-32le';\n}\n","\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n // Naive implementation.\n // Non-direct chars are encoded as \"+<base64>-\"; single \"+\" char is encoded as \"+-\".\n return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n return \"+\" + (chunk === '+' ? '' : \n this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n + \"-\";\n }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n minusChar = '-'.charCodeAt(0),\n andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '+'\n if (buf[i] == plusChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64Chars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n res += \"+\";\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\");\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus is absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\");\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n// * Base64 part is started by \"&\" instead of \"+\"\n// * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n// * In Base64, \",\" is used instead of \"/\"\n// * Base64 must not be used to represent direct characters.\n// * No implicit shift back from Base64 (should always end with '-')\n// * String must end in non-shifted position.\n// * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = Buffer.alloc(6);\n this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n var inBase64 = this.inBase64,\n base64Accum = this.base64Accum,\n base64AccumIdx = this.base64AccumIdx,\n buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n for (var i = 0; i < str.length; i++) {\n var uChar = str.charCodeAt(i);\n if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n if (inBase64) {\n if (base64AccumIdx > 0) {\n bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n inBase64 = false;\n }\n\n if (!inBase64) {\n buf[bufIdx++] = uChar; // Write direct character\n\n if (uChar === andChar) // Ampersand -> '&-'\n buf[bufIdx++] = minusChar;\n }\n\n } else { // Non-direct character\n if (!inBase64) {\n buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n inBase64 = true;\n }\n if (inBase64) {\n base64Accum[base64AccumIdx++] = uChar >> 8;\n base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n if (base64AccumIdx == base64Accum.length) {\n bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n base64AccumIdx = 0;\n }\n }\n }\n }\n\n this.inBase64 = inBase64;\n this.base64AccumIdx = base64AccumIdx;\n\n return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n var buf = Buffer.alloc(10), bufIdx = 0;\n if (this.inBase64) {\n if (this.base64AccumIdx > 0) {\n bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n this.base64AccumIdx = 0;\n }\n\n buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n this.inBase64 = false;\n }\n\n return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n this.iconv = codec.iconv;\n this.inBase64 = false;\n this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n var res = \"\", lastI = 0,\n inBase64 = this.inBase64,\n base64Accum = this.base64Accum;\n\n // The decoder is more involved as we must handle chunks in stream.\n // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n for (var i = 0; i < buf.length; i++) {\n if (!inBase64) { // We're in direct mode.\n // Write direct chars until '&'\n if (buf[i] == andChar) {\n res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n lastI = i+1;\n inBase64 = true;\n }\n } else { // We decode base64.\n if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n res += \"&\";\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\").replace(/,/g, '/');\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n if (buf[i] != minusChar) // Minus may be absorbed after base64.\n i--;\n\n lastI = i+1;\n inBase64 = false;\n base64Accum = '';\n }\n }\n }\n\n if (!inBase64) {\n res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n } else {\n var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\").replace(/,/g, '/');\n\n var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n b64str = b64str.slice(0, canBeDecoded);\n\n res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n }\n\n this.inBase64 = inBase64;\n this.base64Accum = base64Accum;\n\n return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n var res = \"\";\n if (this.inBase64 && this.base64Accum.length > 0)\n res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n this.inBase64 = false;\n this.base64Accum = '';\n return res;\n}\n\n\n","\"use strict\";\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n this.encoder = encoder;\n this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n if (this.addBOM) {\n str = BOMChar + str;\n this.addBOM = false;\n }\n\n return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n this.decoder = decoder;\n this.pass = false;\n this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n var res = this.decoder.write(buf);\n if (this.pass || !res)\n return res;\n\n if (res[0] === BOMChar) {\n res = res.slice(1);\n if (typeof this.options.stripBOM === 'function')\n this.options.stripBOM();\n }\n\n this.pass = true;\n return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n return this.decoder.end();\n}\n\n","\"use strict\";\n\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '�';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n str = \"\" + (str || \"\"); // Ensure string.\n\n var encoder = iconv.getEncoder(encoding, options);\n\n var res = encoder.write(str);\n var trail = encoder.end();\n \n return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n if (typeof buf === 'string') {\n if (!iconv.skipDecodeWarning) {\n console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n iconv.skipDecodeWarning = true;\n }\n\n buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n }\n\n var decoder = iconv.getDecoder(encoding, options);\n\n var res = decoder.write(buf);\n var trail = decoder.end();\n\n return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n try {\n iconv.getCodec(enc);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n if (!iconv.encodings)\n iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n \n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n var enc = iconv._canonicalizeEncoding(encoding);\n\n // Traverse iconv.encodings to find actual codec.\n var codecOptions = {};\n while (true) {\n var codec = iconv._codecDataCache[enc];\n if (codec)\n return codec;\n\n var codecDef = iconv.encodings[enc];\n\n switch (typeof codecDef) {\n case \"string\": // Direct alias to other encoding.\n enc = codecDef;\n break;\n\n case \"object\": // Alias with options. Can be layered.\n for (var key in codecDef)\n codecOptions[key] = codecDef[key];\n\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n \n enc = codecDef.type;\n break;\n\n case \"function\": // Codec itself.\n if (!codecOptions.encodingName)\n codecOptions.encodingName = enc;\n\n // The codec function must load all tables and return object with .encoder and .decoder methods.\n // It'll be called only once (for each different options object).\n codec = new codecDef(codecOptions, iconv);\n\n iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n return codec;\n\n default:\n throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n }\n }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n encoder = new codec.encoder(options, codec);\n\n if (codec.bomAware && options && options.addBOM)\n encoder = new bomHandling.PrependBOM(encoder, options);\n\n return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n var codec = iconv.getCodec(encoding),\n decoder = new codec.decoder(options, codec);\n\n if (codec.bomAware && !(options && options.stripBOM === false))\n decoder = new bomHandling.StripBOM(decoder, options);\n\n return decoder;\n}\n\n// Streaming API\n// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add\n// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.\n// If you would like to enable it explicitly, please add the following code to your app:\n// > iconv.enableStreamingAPI(require('stream'));\niconv.enableStreamingAPI = function enableStreamingAPI(stream_module) {\n if (iconv.supportsStreams)\n return;\n\n // Dependency-inject stream module to create IconvLite stream classes.\n var streams = require(\"./streams\")(stream_module);\n\n // Not public API yet, but expose the stream classes.\n iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;\n iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;\n\n // Streaming API.\n iconv.encodeStream = function encodeStream(encoding, options) {\n return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n }\n\n iconv.decodeStream = function decodeStream(encoding, options) {\n return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n }\n\n iconv.supportsStreams = true;\n}\n\n// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).\nvar stream_module;\ntry {\n stream_module = require(\"stream\");\n} catch (e) {}\n\nif (stream_module && stream_module.Transform) {\n iconv.enableStreamingAPI(stream_module);\n\n} else {\n // In rare cases where 'stream' module is not available by default, throw a helpful exception.\n iconv.encodeStream = iconv.decodeStream = function() {\n throw new Error(\"iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.\");\n };\n}\n\nif (\"Ā\" != \"\\u0100\") {\n console.error(\"iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n","\"use strict\";\n\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), \n// we opt to dependency-inject it instead of creating a hard dependency.\nmodule.exports = function(stream_module) {\n var Transform = stream_module.Transform;\n\n // == Encoder stream =======================================================\n\n function IconvLiteEncoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n Transform.call(this, options);\n }\n\n IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteEncoderStream }\n });\n\n IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n if (typeof chunk != 'string')\n return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteEncoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res);\n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteEncoderStream.prototype.collect = function(cb) {\n var chunks = [];\n this.on('error', cb);\n this.on('data', function(chunk) { chunks.push(chunk); });\n this.on('end', function() {\n cb(null, Buffer.concat(chunks));\n });\n return this;\n }\n\n\n // == Decoder stream =======================================================\n\n function IconvLiteDecoderStream(conv, options) {\n this.conv = conv;\n options = options || {};\n options.encoding = this.encoding = 'utf8'; // We output strings.\n Transform.call(this, options);\n }\n\n IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n constructor: { value: IconvLiteDecoderStream }\n });\n\n IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array))\n return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n try {\n var res = this.conv.write(chunk);\n if (res && res.length) this.push(res, this.encoding);\n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteDecoderStream.prototype._flush = function(done) {\n try {\n var res = this.conv.end();\n if (res && res.length) this.push(res, this.encoding); \n done();\n }\n catch (e) {\n done(e);\n }\n }\n\n IconvLiteDecoderStream.prototype.collect = function(cb) {\n var res = '';\n this.on('error', cb);\n this.on('data', function(chunk) { res += chunk; });\n this.on('end', function() {\n cb(null, res);\n });\n return this;\n }\n\n return {\n IconvLiteEncoderStream: IconvLiteEncoderStream,\n IconvLiteDecoderStream: IconvLiteDecoderStream,\n };\n};\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","export function arrayUnique<T>(arr: T[], felidName?: string): T[] {\n if (!felidName) return Array.from(new Set(arr));\n const map = new Map();\n return arr.filter((v: any) => !map.has(v[felidName]) && map.set(v[felidName], v));\n}\n","/**\n * Normalizes Docker platform architecture names to standard format\n * @param architecture The architecture string from Docker manifest\n * @returns Normalized architecture string (amd64, arm64, arm, or original if not recognized)\n */\nexport function normalizeDockerArchitecture(architecture: string | undefined): string {\n if (!architecture) {\n return \"amd64\"; // default fallback\n }\n\n // Return original if not one of the standard architectures\n return architecture;\n}\n\n/**\n * Normalizes Docker platform OS name\n * @param os The OS string from Docker manifest\n * @returns Normalized OS string (defaults to \"linux\" if not provided)\n */\nexport function normalizeDockerOS(os: string | undefined): string {\n return os || \"linux\";\n}\n\n/**\n * Normalizes a Docker platform from manifest format to standard platform string\n * @param platform Platform object from Docker manifest with os and architecture\n * @returns Normalized platform string in format \"os/arch\" (e.g., \"linux/amd64\")\n */\nexport function normalizeDockerPlatform(platform: { os?: string; architecture?: string }): string {\n const os = normalizeDockerOS(platform.os);\n const arch = normalizeDockerArchitecture(platform.architecture);\n return `${os}/${arch}`;\n}\n","export default class GlobalVariable {\n public static readonly map = new Map<string, any>();\n\n public static set(k: string, v: any) {\n GlobalVariable.map.set(k, v);\n }\n\n public static get(k: string, def?: any) {\n if (GlobalVariable.map.has(k)) {\n return GlobalVariable.map.get(k);\n } else {\n return def;\n }\n }\n\n public static del(k: string) {\n return GlobalVariable.map.delete(k);\n }\n}\n","import GlobalVariable from \"./global_variable\";\nimport InstanceStreamListener from \"./instance_stream\";\nimport StorageSubsystem from \"./system_storage\";\n\nimport MCServerStatus from \"./mcping\";\n\nexport { ProcessWrapper, killProcess } from \"./process_tools\";\nexport {\n IDataSource,\n LocalFileSource,\n MySqlSource,\n QueryMapWrapper,\n QueryWrapper\n} from \"./query_wrapper\";\nexport { systemInfo } from \"./system_info\";\n\nexport {\n configureEntityParams,\n isEmpty,\n supposeValue,\n toBoolean,\n toNumber,\n toText\n} from \"./typecheck\";\n\nexport { arrayUnique } from \"./array\";\nexport * from \"./plugin_contract\";\nexport * from \"./plugin_overrides\";\nexport * from \"./plugin_lifecycle\";\nexport * from \"./plugin_revision\";\nexport * from \"./plugin_modules\";\nexport * from \"./plugin_watch\";\nexport * from \"./runtime_paths\";\n\nexport {\n discoverPlugins,\n discoverPluginsFromRoots,\n createFrontendPluginMetadata,\n readPluginManifest,\n resolvePluginEntry,\n sortPlugins\n} from \"./plugin_manifest\";\nexport type {\n DiscoveredPlugin,\n DiscoverPluginsOptions,\n FrontendPluginMetadata,\n PluginDiscoveryRoot,\n PluginManifest\n} from \"./plugin_manifest\";\n\nexport {\n currentPackageRoot,\n currentProjectRoot,\n installNpmPlugin,\n listNpmPlugins,\n npmPluginRoots,\n npmPluginOperationPending,\n isEssentialNpmPlugin,\n uninstallNpmPlugin\n} from \"./plugin_npm\";\nexport type {\n InstallNpmPluginOptions,\n NpmPluginRecord,\n NpmPluginRoots,\n NpmPluginSide\n} from \"./plugin_npm\";\n\nexport { removeTrail } from \"./string_utils\";\n\nexport {\n normalizeDockerArchitecture,\n normalizeDockerOS,\n normalizeDockerPlatform\n} from \"./docker_utils\";\n\nexport { GlobalVariable, InstanceStreamListener, MCServerStatus, StorageSubsystem };\n","// Only the transport operations used by forwarding belong in this shared API.\n// Keep the concrete socket type local to each consumer's Socket.IO installation.\nexport interface ForwardSocket {\n id: string;\n connected: boolean;\n once(event: \"disconnect\", listener: () => void): unknown;\n off(event: \"disconnect\", listener: () => void): unknown;\n emit(event: string, data: any): unknown;\n}\n\n// Application instance data stream forwarding adapter\nexport default class InstanceStreamListener<S extends ForwardSocket = ForwardSocket> {\n public readonly listenMap = new Map<string, S[]>();\n private readonly disconnectHandlers = new Map<S, () => void>();\n\n public requestForward(socket: S, instanceUuid: string) {\n const sockets = this.listenMap.get(instanceUuid) ?? [];\n if (sockets.some((listener) => listener.id === socket.id)) return;\n sockets.push(socket);\n this.listenMap.set(instanceUuid, sockets);\n if (!this.disconnectHandlers.has(socket)) {\n const disconnect = () => {\n for (const uuid of this.listenMap.keys()) this.cannelForward(socket, uuid);\n };\n this.disconnectHandlers.set(socket, disconnect);\n socket.once(\"disconnect\", disconnect);\n }\n }\n\n public cannelForward(socket: S, instanceUuid: string) {\n const remaining = this.listenMap\n .get(instanceUuid)\n ?.filter((listener) => listener.id !== socket.id);\n if (remaining?.length) this.listenMap.set(instanceUuid, remaining);\n else this.listenMap.delete(instanceUuid);\n if (![...this.listenMap.values()].some((sockets) => sockets.includes(socket))) {\n const disconnect = this.disconnectHandlers.get(socket);\n if (disconnect) socket.off(\"disconnect\", disconnect);\n this.disconnectHandlers.delete(socket);\n }\n }\n\n public forward(instanceUuid: string, data: any) {\n this.forwardViaCallback(instanceUuid, (socket) => socket.emit(\"instance/stdout\", data));\n }\n\n public forwardViaCallback(instanceUuid: string, callback: (socket: S) => void) {\n for (const socket of this.listenMap.get(instanceUuid) ?? []) {\n if (socket.connected) callback(socket);\n else this.cannelForward(socket, instanceUuid);\n }\n }\n\n public hasListenInstance(instanceUuid: string) {\n return this.listenMap.get(instanceUuid)?.some((socket) => socket.connected) ?? false;\n }\n}\n","import net from \"net\";\n\nexport interface MinecraftPingResponse {\n host: string;\n port: number;\n online: boolean;\n version: string;\n motd: string;\n current_players: number;\n max_players: number;\n latency: number;\n}\n\nexport default class PingMinecraftServer {\n public status: MinecraftPingResponse;\n public client?: net.Socket;\n private pending?: Promise<MinecraftPingResponse>;\n\n constructor(\n public port: number,\n public host: string\n ) {\n this.status = this.offlineStatus();\n }\n\n private offlineStatus(): MinecraftPingResponse {\n return {\n online: false,\n host: this.host,\n port: this.port,\n version: \"\",\n motd: \"\",\n current_players: 0,\n max_players: 0,\n latency: 0\n };\n }\n\n getStatus(): Promise<MinecraftPingResponse> {\n if (this.pending) return this.pending;\n this.status = this.offlineStatus();\n this.pending = new Promise<MinecraftPingResponse>((resolve, reject) => {\n const startedAt = Date.now();\n const client = net.connect({ host: this.host, port: this.port });\n this.client = client;\n let received = Buffer.alloc(0);\n let settled = false;\n const finish = (error?: Error) => {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n client.destroy();\n this.client = undefined;\n if (error) reject(error);\n else resolve(this.status);\n };\n const timeout = setTimeout(\n () => finish(new Error(\"Minecraft status request timed out\")),\n 15000\n );\n client.once(\"connect\", () => client.write(Buffer.from([0xfe, 0x01])));\n client.on(\"data\", (chunk: Buffer) => {\n if (settled) return;\n try {\n received = Buffer.concat([received, chunk]);\n // Legacy status packets contain an unsigned UTF-16 character count.\n if (received.length > 3 + 0xffff * 2)\n throw new Error(\"Minecraft status response is too large\");\n if (received.length < 3) return;\n if (received[0] !== 0xff) throw new Error(\"Invalid Minecraft status packet\");\n const length = 3 + received.readUInt16BE(1) * 2;\n if (received.length < length) return;\n const fields = Buffer.from(received.subarray(3, length))\n .swap16()\n .toString(\"utf16le\")\n .split(\"\\0\");\n if (\n fields.length !== 6 ||\n fields[0] !== \"§1\" ||\n !/^\\d+$/.test(fields[4]) ||\n !/^\\d+$/.test(fields[5])\n ) {\n throw new Error(\"Invalid Minecraft status response\");\n }\n const currentPlayers = Number(fields[4]);\n const maxPlayers = Number(fields[5]);\n if (!Number.isSafeInteger(currentPlayers) || !Number.isSafeInteger(maxPlayers)) {\n throw new Error(\"Invalid Minecraft player count\");\n }\n this.status = {\n host: this.host,\n port: this.port,\n online: true,\n version: fields[2],\n motd: fields[3],\n current_players: currentPlayers,\n max_players: maxPlayers,\n latency: Date.now() - startedAt\n };\n finish();\n } catch (error) {\n finish(error instanceof Error ? error : new Error(String(error)));\n }\n });\n client.once(\"error\", finish);\n client.once(\"close\", () =>\n finish(received.length ? new Error(\"Incomplete Minecraft status response\") : undefined)\n );\n }).finally(() => {\n this.pending = undefined;\n });\n return this.pending;\n }\n\n asyncStatus() {\n return this.getStatus();\n }\n}\n","/** Versioned contract shared by the host, plugin compiler and package registry. */\nexport const PLUGIN_API_VERSION = 1;\nexport const PLUGIN_SDK_VERSION = \"1.0.0\";\n\nexport interface PluginCompatibility {\n api: number;\n sdk?: number;\n}\n\n/** Omitted metadata denotes a legacy package. Unknown versions never execute. */\nexport function validatePluginCompatibility(value: unknown): void {\n if (value === undefined) return;\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new Error(\"Invalid ElementsPanel plugin compatibility metadata.\");\n const contract = value as PluginCompatibility;\n if (contract.api !== PLUGIN_API_VERSION || (contract.sdk !== undefined && contract.sdk !== 1))\n throw new Error(`Unsupported ElementsPanel plugin API/SDK: ${JSON.stringify(value)}`);\n}\n\nexport type PluginState =\n | \"disabled\"\n | \"pending\"\n | \"loading\"\n | \"active\"\n | \"failed\"\n | \"unloading\"\n | \"restart-required\";\nexport interface PluginChangeResult {\n saved: boolean;\n application: \"applied\" | \"pending\" | \"failed\" | \"restart-required\";\n error?: string;\n}\n\nexport interface PluginDependencyIssue {\n type: \"missing-dependency\" | \"dependency-cycle\" | \"dependency-unavailable\";\n dependencies: readonly string[];\n message: string;\n}\n\nexport interface PluginDependencyOrder<T> {\n ordered: T[];\n issues: Map<string, PluginDependencyIssue>;\n}\n\n/**\n * Stable topological ordering shared by plugin hosts.\n *\n * Invalid nodes are kept out of `ordered`: direct missing dependencies are\n * reported first, then anything depending on an invalid node, and finally\n * cycles (plus nodes blocked behind a cycle). Independent nodes retain the\n * caller's priority/id comparator.\n */\nexport function resolvePluginDependencyOrder<T>(\n items: readonly T[],\n options: {\n id(item: T): string;\n dependencies(item: T): readonly string[] | undefined;\n compare(a: T, b: T): number;\n }\n): PluginDependencyOrder<T> {\n const sorted = [...items].sort(options.compare);\n const byId = new Map(sorted.map((item) => [options.id(item), item]));\n const dependencies = new Map(\n sorted.map((item) => [\n options.id(item),\n [...new Set(options.dependencies(item) || [])].filter(Boolean)\n ])\n );\n const issues = new Map<string, PluginDependencyIssue>();\n\n for (const item of sorted) {\n const id = options.id(item);\n const missing = dependencies.get(id)!.filter((dependency) => !byId.has(dependency));\n if (!missing.length) continue;\n issues.set(id, {\n type: \"missing-dependency\",\n dependencies: missing,\n message: `Missing frontend plugin dependencies: ${missing.join(\", \")}`\n });\n }\n\n const markUnavailable = () => {\n let changed = false;\n for (const item of sorted) {\n const id = options.id(item);\n if (issues.has(id)) continue;\n const unavailable = dependencies.get(id)!.filter((dependency) => issues.has(dependency));\n if (!unavailable.length) continue;\n issues.set(id, {\n type: \"dependency-unavailable\",\n dependencies: unavailable,\n message: `Frontend plugin dependencies are unavailable: ${unavailable.join(\", \")}`\n });\n changed = true;\n }\n return changed;\n };\n while (markUnavailable()) {\n // Propagate direct graph failures before sorting the remaining nodes.\n }\n\n const candidates = sorted.filter((item) => !issues.has(options.id(item)));\n const candidateIds = new Set(candidates.map(options.id));\n const indegree = new Map(candidates.map((item) => [options.id(item), 0]));\n const dependents = new Map<string, T[]>();\n for (const item of candidates) {\n const id = options.id(item);\n for (const dependency of dependencies.get(id)!) {\n if (!candidateIds.has(dependency)) continue;\n indegree.set(id, indegree.get(id)! + 1);\n const bucket = dependents.get(dependency) || [];\n bucket.push(item);\n dependents.set(dependency, bucket);\n }\n }\n\n const ready = candidates.filter((item) => indegree.get(options.id(item)) === 0);\n ready.sort(options.compare);\n const ordered: T[] = [];\n while (ready.length) {\n const item = ready.shift()!;\n const id = options.id(item);\n ordered.push(item);\n for (const dependent of dependents.get(id) || []) {\n const dependentId = options.id(dependent);\n const next = indegree.get(dependentId)! - 1;\n indegree.set(dependentId, next);\n if (next === 0) {\n ready.push(dependent);\n ready.sort(options.compare);\n }\n }\n }\n\n const unresolved = candidates.filter((item) => !ordered.includes(item));\n if (unresolved.length) {\n const unresolvedIds = new Set(unresolved.map(options.id));\n for (const item of unresolved) {\n const id = options.id(item);\n const blockedBy = dependencies.get(id)!.filter((dependency) => unresolvedIds.has(dependency));\n issues.set(id, {\n type: \"dependency-cycle\",\n dependencies: blockedBy,\n message: `Frontend plugin dependency cycle: ${[id, ...blockedBy].join(\" -> \")}`\n });\n }\n }\n\n return { ordered, issues };\n}\n\n/** A queue survives failures, so a failed change cannot block subsequent repairs. */\nexport function createPluginQueue() {\n let tail: Promise<unknown> = Promise.resolve();\n return <T>(operation: () => Promise<T>): Promise<T> => {\n const next = tail.then(operation);\n tail = next.catch(() => undefined);\n return next;\n };\n}\n\nexport interface PluginSettingField {\n key?: string;\n type: string;\n title?: string;\n min?: number;\n max?: number;\n required?: boolean;\n options?: Array<{ value: unknown }>;\n fields?: PluginSettingField[];\n maxItems?: number;\n}\n\n/** Validate the form contract on the server before invoking plugin-owned validation. */\nexport function validatePluginSettings(\n fields: readonly PluginSettingField[],\n values: unknown\n): asserts values is Record<string, unknown> {\n if (!values || typeof values !== \"object\" || Array.isArray(values))\n throw new Error(\"Invalid plugin settings.\");\n const input = values as Record<string, unknown>;\n for (const field of fields) {\n if (!field.key || field.type === \"link\") continue;\n const value = input[field.key];\n if (value === undefined || value === null) {\n if (field.required) throw new Error(`${field.title || field.key}: required`);\n continue;\n }\n if (field.type === \"list\") {\n if (!Array.isArray(value) || value.length > (field.maxItems ?? 100))\n throw new Error(`${field.title || field.key}: invalid list`);\n for (const item of value) validatePluginSettings(field.fields || [], item);\n continue;\n }\n const valid =\n field.type === \"number\"\n ? typeof value === \"number\" &&\n Number.isFinite(value) &&\n (field.min === undefined || value >= field.min) &&\n (field.max === undefined || value <= field.max)\n : field.type === \"boolean\"\n ? typeof value === \"boolean\"\n : field.type === \"select\"\n ? field.options?.some((option) => option.value === value)\n : typeof value === \"string\";\n if (!valid) throw new Error(`${field.title || field.key}: invalid value`);\n }\n}\n","/** Cordis 3 starts async disposers without awaiting them. Track them per host. */\nexport function trackPluginDisposal(ctx: any) {\n const pending = new Set<Promise<unknown>>();\n const failures: unknown[] = [];\n const tracked = new WeakSet<Function>();\n const scopes = new WeakSet<object>();\n const observe = (scope: any) => {\n if (scopes.has(scope)) return;\n scopes.add(scope);\n const reset = scope.reset;\n scope.reset = function () {\n this.disposables = this.disposables.map((dispose: Function) => {\n if (tracked.has(dispose)) return dispose;\n const wrapper = (...args: unknown[]) => {\n let result: unknown;\n try {\n result = dispose(...args);\n } catch (error) {\n failures.push(error);\n throw error;\n }\n if (result && typeof (result as Promise<unknown>).then === \"function\") {\n const task = Promise.resolve(result)\n .catch((error) => {\n failures.push(error);\n })\n .finally(() => pending.delete(task));\n pending.add(task);\n }\n return result;\n };\n // Cordis marks persistent disposers with a symbol; preserve its semantics.\n for (const key of Object.getOwnPropertySymbols(dispose))\n Object.defineProperty(wrapper, key, Object.getOwnPropertyDescriptor(dispose, key)!);\n tracked.add(wrapper);\n return wrapper;\n });\n return reset.call(this);\n };\n };\n ctx.on(\"internal/runtime\", observe);\n ctx.on(\"internal/fork\", observe);\n return async () => {\n do {\n await ctx.events.flush();\n await Promise.all([...pending]);\n } while (pending.size);\n if (failures.length) {\n const errors = failures.splice(0);\n throw new Error(`Plugin cleanup failed: ${errors.map(String).join(\"; \")}`);\n }\n };\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\n\n/**\n * Plugin manifest discovery, shared by every process that has to find plugins:\n * the panel and daemon backend loaders, the panel's frontend manifest endpoint,\n * and the Vite plugin that compiles frontend entries.\n *\n * They used to hold a copy of this logic each, and the copies drifted. Nothing\n * here needs more than `node:fs`, which is what lets the Vite config import this\n * source file directly without pulling in the rest of the common layer.\n */\n\nexport interface PluginManifest {\n id: string;\n version?: string;\n description?: string;\n /** Set to false to skip the plugin entirely. */\n enabled?: boolean;\n /** Ascending load order among plugins that do not depend on each other. */\n priority?: number;\n /** Passed to the plugin as its configuration. */\n config?: unknown;\n [key: string]: unknown;\n}\n\n/** Browser-safe plugin metadata shared by the Vite and runtime manifests. */\nexport interface FrontendPluginMetadata {\n id: string;\n version?: string;\n description?: string;\n priority?: number;\n elements?: unknown;\n /** Plugin ids that must be activated before this browser entry. */\n frontendInject?: string[];\n /** Loads in the foundation/prefetch tier. */\n frontendImmediate?: boolean;\n /** A failed or pending entry prevents application startup. */\n frontendRequired?: boolean;\n /** Browser-only configuration; backend `config` is never exposed. */\n config?: unknown;\n restartRequired?: boolean;\n}\n\nfunction stringArray(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const result = value.filter((item): item is string => typeof item === \"string\" && !!item.trim());\n return result.length ? [...new Set(result.map((item) => item.trim()))] : undefined;\n}\n\n/**\n * Redacts a full plugin manifest to the fields a browser is allowed to see.\n * Backend `config` may contain credentials, so only `frontendConfig` crosses\n * this boundary.\n */\nexport function createFrontendPluginMetadata(\n manifest: PluginManifest,\n extras: Pick<FrontendPluginMetadata, \"restartRequired\"> = {}\n): FrontendPluginMetadata {\n const frontendInject = stringArray(manifest.frontendInject);\n return {\n id: manifest.id,\n ...(manifest.version === undefined ? {} : { version: manifest.version }),\n ...(manifest.description === undefined ? {} : { description: manifest.description }),\n ...(manifest.priority === undefined ? {} : { priority: manifest.priority }),\n ...(manifest.elements === undefined ? {} : { elements: manifest.elements }),\n ...(frontendInject === undefined ? {} : { frontendInject }),\n ...(manifest.frontendImmediate === undefined\n ? {}\n : { frontendImmediate: Boolean(manifest.frontendImmediate) }),\n ...(manifest.frontendRequired === undefined\n ? {}\n : { frontendRequired: Boolean(manifest.frontendRequired) }),\n ...(manifest.frontendConfig === undefined ? {} : { config: manifest.frontendConfig }),\n ...(extras.restartRequired === undefined ? {} : extras)\n };\n}\n\nexport interface DiscoveredPlugin {\n /** npm package boundary, absent for development source plugins. */\n packageRoot?: string;\n packageName?: string;\n npmSource?: \"bundled\" | \"project\";\n manifest: PluginManifest;\n /** Absolute path of the plugin directory. */\n directory: string;\n /** Directory name, which is also the URL segment a packaged plugin is served at. */\n folder: string;\n /** Absolute path of the resolved entry module, when one was found. */\n entry?: string;\n}\n\nexport interface DiscoverPluginsOptions {\n /**\n * Manifest fields naming the entry, most specific first. The first one present\n * wins, and no fallback is attempted once a field is set.\n */\n entryFields: string[];\n /** Relative entries tried when no `entryFields` value is set. */\n entryCandidates?: string[];\n /**\n * Include plugins whose manifest sets `enabled: false`. Loaders leave this\n * off; the plugin inventory the panel reports turns it on, because a disabled\n * plugin still has to be listed to be enabled again.\n */\n includeDisabled?: boolean;\n /**\n * Report a plugin that could not be used. Discovery never throws: one broken\n * plugin directory must not stop the others from loading.\n */\n onWarning?: (message: string, error?: unknown) => void;\n}\n\n/** A plugin directory to scan, optionally with a public folder name override. */\nexport interface PluginDiscoveryRoot {\n packageRoot?: string;\n packageName?: string;\n npmSource?: \"bundled\" | \"project\";\n directory: string;\n /** Stable public asset name for npm plugins whose manifest lives below a side directory. */\n folder?: string;\n /**\n * Root-level enablement policy. Runtime packages use false to keep project\n * plugins dormant until the user enables them from plugin configuration.\n */\n defaultEnabled?: boolean;\n}\n\nconst MANIFEST_FILES = [\"plugin.json\", \"manifest.json\", \"package.json\"];\nconst ENTRY_FIELDS = [\"backend\", \"frontend\", \"panel\", \"daemon\", \"main\", \"entry\", \"ui\"];\n\nfunction objectValue(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : {};\n}\n\n/**\n * Source plugins keep package.json beside plugin.json. Published npm plugins\n * keep it at the package root, with runtime metadata under elementspanel.<side>.\n * Stop at the first package boundary so a host's metadata cannot reach a plugin.\n */\nfunction readPackageMetadata(directory: string): Record<string, unknown> {\n const pluginDirectory = path.resolve(directory);\n let current = pluginDirectory;\n while (true) {\n const filename = path.join(current, \"package.json\");\n if (fs.existsSync(filename)) {\n const { elementspanel, ...metadata } = objectValue(\n JSON.parse(fs.readFileSync(filename, \"utf8\"))\n );\n const { id: packageId, panel, daemon, ...shared } = objectValue(elementspanel);\n const definition = [panel, daemon]\n .map(objectValue)\n .find(\n (side) =>\n typeof side.directory === \"string\" &&\n path.resolve(current, side.directory) === pluginDirectory\n );\n if (current !== pluginDirectory && (typeof packageId !== \"string\" || !definition)) return {};\n const { directory: _directory, folder: _folder, ...sideMetadata } = definition ?? {};\n const result: Record<string, unknown> = {\n ...metadata,\n ...shared,\n ...sideMetadata,\n ...(packageId === undefined ? {} : { id: packageId })\n };\n if (metadata.version !== undefined) result.version = metadata.version;\n // npm's main/entry fields do not define a side's execution entry.\n for (const field of ENTRY_FIELDS) delete result[field];\n return result;\n }\n const parent = path.dirname(current);\n if (parent === current) return {};\n current = parent;\n }\n}\n\n/** Combines execution entries with package metadata. Legacy manifests still load. */\nexport function readPluginManifest(\n directory: string,\n onWarning?: (message: string, error?: unknown) => void,\n fallbackId = path.basename(directory)\n): PluginManifest | null {\n for (const file of MANIFEST_FILES) {\n const filePath = path.join(directory, file);\n if (!fs.existsSync(filePath)) continue;\n try {\n const value = JSON.parse(fs.readFileSync(filePath, \"utf8\")) as Record<string, unknown> | null;\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const packageMetadata = readPackageMetadata(directory);\n const id =\n typeof packageMetadata.id === \"string\"\n ? packageMetadata.id\n : typeof value.id === \"string\"\n ? value.id\n : fallbackId;\n if (!id.trim()) return null;\n const manifest: Record<string, unknown> = {\n ...value,\n ...packageMetadata,\n id: id.trim()\n };\n // Only execution paths come from plugin.json; package.json owns identity,\n // version, dual status and all other metadata.\n for (const field of ENTRY_FIELDS) {\n if (value[field] !== undefined) manifest[field] = value[field];\n }\n return manifest as PluginManifest;\n } catch (error) {\n onWarning?.(`Failed to read plugin manifest: ${filePath}`, error);\n return null;\n }\n }\n return null;\n}\n\n/**\n * Resolves one plugin's entry module. Returns null when the manifest names an\n * entry that does not exist, or when none of the fallback candidates is present.\n * Paths that would escape the plugin directory are rejected.\n */\nexport function resolvePluginEntry(\n directory: string,\n manifest: PluginManifest,\n options: Pick<DiscoverPluginsOptions, \"entryFields\" | \"entryCandidates\">\n): string | null {\n const configured = options.entryFields\n .map((field) => manifest[field])\n .find((entry): entry is string => typeof entry === \"string\" && entry.length > 0);\n const candidates = configured ? [configured] : options.entryCandidates ?? [];\n const root = path.resolve(directory);\n for (const candidate of candidates) {\n const entry = path.resolve(directory, candidate);\n if (entry.startsWith(`${root}${path.sep}`) && fs.existsSync(entry)) return entry;\n }\n return null;\n}\n\nfunction discoverPluginDirectory(\n directory: string,\n options: DiscoverPluginsOptions,\n folder = path.basename(directory)\n): DiscoveredPlugin | null {\n // Npm packages expose a side directory; its name is not the public plugin id.\n const manifest = readPluginManifest(directory, options.onWarning, folder);\n if (!manifest) return null;\n if (manifest.enabled === false && !options.includeDisabled) return null;\n\n const entry = resolvePluginEntry(directory, manifest, options);\n if (!entry && options.entryFields.some((field) => typeof manifest[field] === \"string\")) {\n options.onWarning?.(`Plugin \"${manifest.id}\" has no valid entry module.`);\n return null;\n }\n return { manifest, directory, folder, entry: entry ?? undefined };\n}\n\n/**\n * Lists the usable plugins below `root`, in load order: ascending `priority`,\n * then by id so the order is stable. Duplicate ids are dropped, and disabled\n * ones too unless `includeDisabled` says otherwise. A plugin whose manifest names an entry that cannot be resolved is\n * dropped too; one that names none keeps `entry` undefined, because a plugin may\n * legitimately contribute to only one side of the panel.\n */\nexport function discoverPlugins(root: string, options: DiscoverPluginsOptions): DiscoveredPlugin[] {\n if (!fs.existsSync(root)) return [];\n\n const plugins: DiscoveredPlugin[] = [];\n const seenIds = new Set<string>();\n for (const item of fs.readdirSync(root, { withFileTypes: true })) {\n if (!item.isDirectory()) continue;\n const directory = path.join(root, item.name);\n const plugin = discoverPluginDirectory(directory, options, item.name);\n if (!plugin || seenIds.has(plugin.manifest.id)) {\n if (plugin && seenIds.has(plugin.manifest.id)) {\n options.onWarning?.(`Ignoring duplicate plugin id: ${plugin.manifest.id}`);\n }\n continue;\n }\n seenIds.add(plugin.manifest.id);\n plugins.push(plugin);\n }\n\n return sortPlugins(plugins);\n}\n\n/**\n * Discovers plugins from several roots while keeping the first root's plugin\n * when ids collide. The built-in root is intentionally passed first by the\n * panel and daemon loaders, so an installed market plugin cannot shadow a\n * built-in npm dependency. A root can also force an installed project plugin\n * into the disabled state; the user-owned override layer may enable it later.\n */\nexport function discoverPluginsFromRoots(\n roots: readonly PluginDiscoveryRoot[],\n options: DiscoverPluginsOptions\n): DiscoveredPlugin[] {\n const discovered: DiscoveredPlugin[] = [];\n const seenIds = new Set<string>();\n for (const root of roots) {\n const isDirectPlugin = MANIFEST_FILES.some((file) =>\n fs.existsSync(path.join(root.directory, file))\n );\n const plugins = isDirectPlugin\n ? [discoverPluginDirectory(root.directory, options, root.folder)]\n : discoverPlugins(root.directory, options);\n for (const plugin of plugins) {\n if (!plugin) continue;\n const manifest =\n root.defaultEnabled === false ? { ...plugin.manifest, enabled: false } : plugin.manifest;\n if (manifest.enabled === false && !options.includeDisabled) continue;\n if (seenIds.has(plugin.manifest.id)) {\n options.onWarning?.(`Ignoring duplicate plugin id: ${plugin.manifest.id}`);\n continue;\n }\n seenIds.add(plugin.manifest.id);\n discovered.push({\n ...plugin,\n manifest,\n ...(root.packageRoot\n ? {\n packageRoot: root.packageRoot,\n packageName: root.packageName,\n npmSource: root.npmSource\n }\n : {}),\n ...(root.folder ? { folder: root.folder } : {})\n });\n }\n }\n return sortPlugins(discovered);\n}\n\n/** Load order: ascending `priority`, then by id so it never depends on the filesystem. */\nexport function sortPlugins<T extends { manifest: PluginManifest }>(plugins: T[]): T[] {\n return plugins.sort(\n (a, b) =>\n (Number(a.manifest.priority) || 0) - (Number(b.manifest.priority) || 0) ||\n a.manifest.id.localeCompare(b.manifest.id)\n );\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath, pathToFileURL } from \"node:url\";\nimport { createHash } from \"node:crypto\";\nimport { createRequire } from \"node:module\";\nimport { pluginDirectoryRevision } from \"./plugin_revision\";\n\nconst REVISION = \"epanelPluginRevision\";\nconst graphs = new Map<string, string[]>();\nconst previousRoots = new Map<string, string[]>();\nlet hooksInstalled = false;\nconst sharedModules = new Set([\n \"cordis\",\n \"@cordisjs/core\",\n \"@cordisjs/logger\",\n \"@cordisjs/timer\",\n \"@cordisjs/schema\",\n \"cosmokit\",\n \"schemastery\",\n \"reggol\"\n]);\n\nfunction dependencyRoots(directory: string) {\n const visited = new Set([directory]);\n const walk = (root: string) => {\n const filename = path.join(root, \"package.json\");\n if (!fs.existsSync(filename)) return;\n const metadata = JSON.parse(fs.readFileSync(filename, \"utf8\"));\n const localRequire = createRequire(filename);\n for (const name of Object.keys({\n ...metadata.dependencies,\n ...metadata.optionalDependencies\n })) {\n if (sharedModules.has(name)) continue;\n const target = (localRequire.resolve.paths(name) || [])\n .map((directory) => path.join(directory, name, \"package.json\"))\n .find((candidate) => fs.existsSync(candidate));\n if (!target) continue;\n const dependency = fs.realpathSync(path.dirname(target));\n if (visited.has(dependency)) continue;\n visited.add(dependency);\n walk(dependency);\n }\n };\n walk(directory);\n visited.delete(directory);\n return [...visited];\n}\n\n/** Include transitive dependency versions so npm updates replace the affected graph. */\nexport function pluginBackendRevision(entry: string, directory: string): string {\n const hash = createHash(\"sha256\").update(pluginDirectoryRevision(path.dirname(entry)));\n for (const root of [directory, ...dependencyRoots(directory)]) {\n const filename = path.join(root, \"package.json\");\n if (fs.existsSync(filename)) hash.update(root).update(fs.readFileSync(filename));\n }\n return hash.digest(\"hex\").slice(0, 24);\n}\n\nfunction within(root: string, filename: string) {\n const relative = path.relative(root, filename);\n return (\n relative === \"\" ||\n (!relative.startsWith(`..${path.sep}`) && relative !== \"..\" && !path.isAbsolute(relative))\n );\n}\n\n/** Clear the plugin's complete CJS graph, keeping shared host modules intact. */\nexport function forgetPluginModules(directory: string) {\n const runtimeRequire = eval(\"require\") as NodeRequire;\n const owned = [directory, ...(previousRoots.get(directory) || []), ...dependencyRoots(directory)];\n previousRoots.delete(directory);\n const belongs = (filename: string) => {\n const parts = filename.split(`${path.sep}node_modules${path.sep}`);\n if (\n parts.slice(1).some((part) => {\n const name = part.startsWith(\"@\")\n ? part.split(path.sep).slice(0, 2).join(\"/\")\n : part.split(path.sep)[0];\n return sharedModules.has(name);\n })\n )\n return false;\n return owned.some((root) => within(root, filename));\n };\n for (const filename of Object.keys(runtimeRequire.cache)) {\n if (belongs(filename)) delete runtimeRequire.cache[filename];\n }\n for (const mod of Object.values(runtimeRequire.cache)) {\n if (mod) mod.children = mod.children.filter((child) => !belongs(child.filename));\n }\n // npm can move a dependency or change its main entry. Node's CJS resolver\n // retains those paths separately from require.cache.\n const pathCache = runtimeRequire(\"node:module\")._pathCache as Record<string, string>;\n for (const [key, filename] of Object.entries(pathCache)) {\n if (belongs(filename) || owned.some((root) => key.includes(root))) delete pathCache[key];\n }\n}\n\nfunction isEsm(entry: string) {\n if (entry.endsWith(\".mjs\")) return true;\n if (entry.endsWith(\".cjs\")) return false;\n let directory = path.dirname(entry);\n while (true) {\n const filename = path.join(directory, \"package.json\");\n if (fs.existsSync(filename))\n return JSON.parse(fs.readFileSync(filename, \"utf8\")).type === \"module\";\n const parent = path.dirname(directory);\n if (parent === directory) return false;\n directory = parent;\n }\n}\n\n/** Give an ESM entry and its local imports the same immutable revision URL. */\nexport async function loadPluginModule(\n entry: string,\n directory: string,\n revision: string\n): Promise<unknown> {\n const runtimeRequire = eval(\"require\") as NodeRequire;\n previousRoots.set(directory, dependencyRoots(directory));\n if (!isEsm(entry)) {\n try {\n return runtimeRequire(entry);\n } catch (error: any) {\n if (error?.code !== \"ERR_REQUIRE_ESM\") throw error;\n }\n }\n graphs.set(revision, [directory, ...dependencyRoots(directory)]);\n if (!hooksInstalled) {\n const { registerHooks } = runtimeRequire(\"node:module\");\n if (typeof registerHooks !== \"function\")\n throw new Error(\"ESM plugin updates require Node.js 22.15 or newer.\");\n registerHooks({\n resolve(specifier: string, context: any, nextResolve: any) {\n const resolved = nextResolve(specifier, context);\n if (!context.parentURL?.startsWith(\"file:\") || !resolved.url.startsWith(\"file:\"))\n return resolved;\n const parent = new URL(context.parentURL);\n const parentRevision = parent.searchParams.get(REVISION);\n if (!parentRevision) return resolved;\n const roots = graphs.get(parentRevision);\n if (\n !roots?.some((root) => within(root, fileURLToPath(parent))) ||\n !roots.some((root) => within(root, fileURLToPath(resolved.url)))\n )\n return resolved;\n const url = new URL(resolved.url);\n url.searchParams.set(REVISION, parentRevision);\n return { ...resolved, url: url.href };\n }\n });\n hooksInstalled = true;\n }\n const url = pathToFileURL(entry);\n url.searchParams.set(REVISION, revision);\n const dynamicImport = new Function(\"specifier\", \"return import(specifier)\") as (\n specifier: string\n ) => Promise<unknown>;\n return dynamicImport(url.href);\n}\n","import { spawn } from \"child_process\";\nimport fs from \"fs-extra\";\nimport path from \"path\";\nimport { createRequire } from \"module\";\nimport { discoverPlugins, readPluginManifest, resolvePluginEntry } from \"./plugin_manifest\";\nimport { validatePluginCompatibility } from \"./plugin_contract\";\n\n/**\n * npm dependency management for plugins.\n *\n * A plugin installed from the market is a normal dependency of the installation\n * project: it is written into the project's `package.json`, installed by npm and\n * then resolved by the runtime like any other npm plugin. The market only indexes\n * npm packages; it never hosts the package files.\n *\n * `elementspanel.plugins` maps a plugin id to the npm package name, which is what\n * the runtime resolver reads. A project plugin lives next to the built-in plugins\n * of the runtime package and is loaded through the same path.\n */\n\nexport type NpmPluginSide = \"panel\" | \"daemon\";\n\nexport interface NpmPluginRecord {\n pluginId: string;\n /** The npm package name, e.g. `epanel-plugin-example`. */\n name: string;\n version: string;\n sides: NpmPluginSide[];\n /** The directory the loader discovers for the requested side. */\n directory: string;\n /** The asset folder name the plug-in declares (unique per side). */\n folder: string;\n packageRoot: string;\n /** The manifest that owns this dependency: runtime package or installation project. */\n source: \"bundled\" | \"project\";\n}\n\nexport interface InstallNpmPluginOptions {\n name: string;\n pluginId?: string;\n version?: string;\n side: NpmPluginSide;\n packageRoot?: string;\n projectRoot?: string;\n}\n\nexport interface NpmPluginRoots {\n packageRoot: string;\n projectRoot: string;\n}\n\nconst PLUGIN_ID = /^[a-z][a-z0-9_-]{1,63}$/;\nconst PACKAGE_NAME = /^(?:@[a-z0-9_.-]+\\/)?epanel-plugin-[a-z0-9_.-]+$/;\nconst VERSION = /^[a-zA-Z0-9][a-zA-Z0-9._+-]{0,63}$/;\n\nfunction readJson(filename: string): Record<string, unknown> | null {\n try {\n const parsed: unknown = JSON.parse(fs.readFileSync(filename, \"utf8\"));\n return parsed && typeof parsed === \"object\" && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : null;\n } catch (error: any) {\n if (error?.code === \"ENOENT\") return null;\n throw error;\n }\n}\n\nfunction objectValue(value: unknown): Record<string, unknown> | undefined {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nfunction stringValue(value: unknown): string {\n return typeof value === \"string\" ? value : \"\";\n}\n\nexport function currentPackageRoot(): string {\n return path.resolve(\n process.env.EPANEL_PACKAGE_ROOT || process.env.EPANEL_SOURCE_ROOT || process.cwd()\n );\n}\n\nexport function currentProjectRoot(packageRoot = currentPackageRoot()): string {\n // The npm worker sets EPANEL_PROJECT_ROOT to the installation directory. In a\n // development checkout the runtime package sits directly under the project.\n if (process.env.EPANEL_PROJECT_ROOT) return path.resolve(process.env.EPANEL_PROJECT_ROOT);\n const scope = path.resolve(packageRoot, \"..\");\n if (path.basename(scope) === \"core\") return path.dirname(scope);\n const nodeModules = path.dirname(scope);\n if (path.basename(nodeModules) === \"node_modules\" && path.basename(scope).startsWith(\"@\"))\n return path.dirname(nodeModules);\n return scope;\n}\n\nexport function npmPluginRoots(\n options: { packageRoot?: string; projectRoot?: string } = {}\n): NpmPluginRoots {\n const packageRoot = path.resolve(options.packageRoot ?? currentPackageRoot());\n return {\n packageRoot,\n projectRoot: path.resolve(options.projectRoot ?? currentProjectRoot(packageRoot))\n };\n}\n\nfunction projectManifestFile(projectRoot: string): string {\n return path.join(projectRoot, \"package.json\");\n}\n\nfunction readProjectManifest(projectRoot: string): Record<string, unknown> {\n return (\n readJson(projectManifestFile(projectRoot)) ?? {\n private: true,\n dependencies: {},\n elementspanel: { plugins: {} }\n }\n );\n}\n\nfunction writeProjectManifest(projectRoot: string, manifest: Record<string, unknown>): void {\n fs.writeFileSync(projectManifestFile(projectRoot), `${JSON.stringify(manifest, null, 2)}\\n`);\n}\n\nfunction dependenciesOf(manifest: Record<string, unknown> | null): Record<string, unknown> {\n return objectValue(manifest?.dependencies) ?? {};\n}\n\nfunction mappingsOf(manifest: Record<string, unknown> | null): Record<string, unknown> {\n return objectValue(objectValue(manifest?.elementspanel)?.plugins) ?? {};\n}\n\nfunction pluginRecord(\n pluginId: string,\n name: string,\n source: NpmPluginRecord[\"source\"],\n packageRoot: string,\n directory: string,\n folder: string,\n version: string\n): NpmPluginRecord {\n return { pluginId, name, version, sides: [], directory, folder, packageRoot, source };\n}\n\nfunction readPackageEntry(\n packageRoot: string,\n name: string\n): { root: string; metadata: Record<string, unknown> } {\n // Read package boundaries directly: Node caches require.resolve() paths even\n // after npm moves an installation between nested and hoisted node_modules.\n let manifestPath: string | undefined;\n for (const root of [packageRoot, currentProjectRoot(packageRoot)]) {\n const localRequire = createRequire(path.join(root, \"package.json\"));\n manifestPath = (localRequire.resolve.paths(name) || [])\n .map((directory) => path.join(directory, name, \"package.json\"))\n .find((filename) => fs.existsSync(filename));\n if (manifestPath) break;\n }\n if (!manifestPath) throw new Error(`Missing npm plugin package: ${name}.`);\n manifestPath = fs.realpathSync(manifestPath);\n const metadata = readJson(manifestPath);\n if (!metadata) throw new Error(`Missing package metadata for ${name}.`);\n return { root: path.dirname(manifestPath), metadata };\n}\n\nfunction sideDirectory(\n packageRoot: string,\n metadata: Record<string, unknown>,\n side: NpmPluginSide\n): string | undefined {\n const elements = objectValue(metadata.elementspanel);\n const definition = objectValue(elements?.[side]);\n const directory = stringValue(definition?.directory);\n if (!definition || !directory) return undefined;\n const target = path.resolve(packageRoot, directory);\n const relative = path.relative(packageRoot, target);\n if (\n relative === \"\" ||\n relative === \"..\" ||\n relative.startsWith(`..${path.sep}`) ||\n path.isAbsolute(relative)\n )\n return undefined;\n return target;\n}\n\nfunction recordFromPackage(\n pluginId: string,\n name: string,\n source: NpmPluginRecord[\"source\"],\n packageRoot: string,\n metadata: Record<string, unknown>,\n side?: NpmPluginSide\n): NpmPluginRecord | undefined {\n const elements = objectValue(metadata.elementspanel);\n if (!elements || elements.id !== pluginId) return undefined;\n const version = stringValue(metadata.version);\n const sides = ([\"panel\", \"daemon\"] as const).filter((item) =>\n Boolean(sideDirectory(packageRoot, metadata, item))\n );\n if (!sides.length) return undefined;\n const target = side ?? sides[0]!;\n if (!sides.includes(target)) return undefined;\n const directory = sideDirectory(packageRoot, metadata, target);\n const folder = stringValue(objectValue(elements[target])?.folder);\n if (!directory || !PLUGIN_ID.test(folder)) return undefined;\n return {\n ...pluginRecord(pluginId, name, source, packageRoot, directory, folder, version),\n sides\n };\n}\n\n/**\n * Every npm plugin the runtime can load for a side, built-in and project-installed.\n *\n * Built-in mappings win over a project mapping for the same id: a third-party\n * package must not shadow a plugin that ships with the runtime. A project package\n * that does not describe the requested side is skipped instead of failing, which\n * is what lets a two-sided project share one dependency list between sides.\n */\nexport function listNpmPlugins(\n side?: NpmPluginSide,\n options: { packageRoot?: string; projectRoot?: string; skipInvalid?: boolean } = {}\n): NpmPluginRecord[] {\n const { packageRoot, projectRoot } = npmPluginRoots(options);\n const host = readJson(path.join(packageRoot, \"package.json\"));\n if (!host) throw new Error(`Missing runtime package metadata: ${packageRoot}`);\n const project =\n path.resolve(projectRoot) === path.resolve(packageRoot)\n ? null\n : readProjectManifest(projectRoot);\n\n const hostMappings = mappingsOf(host);\n const projectMappings = { ...mappingsOf(project) };\n for (const name of Object.keys(dependenciesOf(project))) {\n if (!PACKAGE_NAME.test(name) || Object.values(projectMappings).includes(name)) continue;\n try {\n const entry = readPackageEntry(projectRoot, name);\n const id = stringValue(objectValue(entry.metadata.elementspanel)?.id);\n if (PLUGIN_ID.test(id) && projectMappings[id] === undefined) projectMappings[id] = name;\n } catch {\n /* npm may still be writing the package. */\n }\n }\n const mappings = new Map<string, { name: string; source: NpmPluginRecord[\"source\"] }>();\n for (const [pluginId, name] of Object.entries(projectMappings)) {\n if (!PLUGIN_ID.test(pluginId) || typeof name !== \"string\" || !PACKAGE_NAME.test(name)) continue;\n mappings.set(pluginId, { name, source: \"project\" });\n }\n for (const [pluginId, name] of Object.entries(hostMappings)) {\n if (!PLUGIN_ID.test(pluginId) || typeof name !== \"string\" || !PACKAGE_NAME.test(name)) continue;\n if (dependenciesOf(host)[name] === undefined) continue;\n mappings.set(pluginId, { name, source: \"bundled\" });\n }\n\n const hostDependencies = dependenciesOf(host);\n const projectDependencies = dependenciesOf(project);\n const folders = new Set<string>();\n const records: NpmPluginRecord[] = [];\n for (const [pluginId, mapping] of mappings) {\n const declared = hostDependencies[mapping.name] ?? projectDependencies[mapping.name];\n if (declared === undefined) {\n if (options.skipInvalid) continue;\n throw new Error(\n `Missing npm plugin dependency: ${mapping.name}. Run npm install in the project directory.`\n );\n }\n let entry: { root: string; metadata: Record<string, unknown> };\n try {\n entry = readPackageEntry(\n mapping.source === \"project\" ? projectRoot : packageRoot,\n mapping.name\n );\n } catch (error) {\n if (options.skipInvalid) continue;\n throw error;\n }\n const record = recordFromPackage(\n pluginId,\n mapping.name,\n mapping.source,\n entry.root,\n entry.metadata,\n side\n );\n if (!record) {\n if (options.skipInvalid || mapping.source === \"project\") continue;\n throw new Error(`Invalid ${side ?? \"plugin\"} entry in npm plugin ${mapping.name}.`);\n }\n const folder = record.folder;\n if (folders.has(folder)) {\n if (options.skipInvalid) continue;\n throw new Error(`Duplicate npm plugin asset directory: ${folder}.`);\n }\n folders.add(folder);\n records.push(record);\n }\n return records;\n}\n\nfunction runNpm(args: string[], cwd: string): Promise<string> {\n return new Promise((resolve, reject) => {\n const npmCLI = process.env.npm_execpath;\n const invocation =\n npmCLI && /npm(?:-cli)?\\.(?:c?js|mjs)$/.test(npmCLI)\n ? { command: process.execPath, args: [npmCLI, ...args], shell: false }\n : process.platform === \"win32\"\n ? {\n command: process.env.ComSpec || \"cmd.exe\",\n args: [\n \"/d\",\n \"/s\",\n \"/c\",\n `npm ${args.map((item) => `\"${item.replace(/\"/g, '\"\"')}\"`).join(\" \")}`\n ],\n shell: false\n }\n : { command: \"npm\", args, shell: false };\n const child = spawn(invocation.command, invocation.args, {\n cwd,\n shell: invocation.shell,\n windowsHide: true,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n env: { ...process.env, npm_config_update_notifier: \"false\" }\n });\n let output = \"\";\n const append = (data: Buffer) => {\n output += data.toString();\n if (output.length > 16000) output = output.slice(-16000);\n };\n child.stdout?.on(\"data\", append);\n child.stderr?.on(\"data\", append);\n const action =\n args.find((argument) => argument === \"install\" || argument === \"uninstall\") || \"operation\";\n const timer = setTimeout(\n () => {\n child.kill(\"SIGKILL\");\n reject(new Error(`npm ${action} timed out.`));\n },\n 10 * 60 * 1000\n );\n timer.unref?.();\n child.once(\"error\", (error) => {\n clearTimeout(timer);\n reject(error);\n });\n child.once(\"close\", (code) => {\n clearTimeout(timer);\n if (code === 0) return resolve(output);\n reject(new Error(`npm ${action} failed (${code}): ${output.trim()}`));\n });\n });\n}\n\nconst operationsKey = Symbol.for(\"elementspanel.npm.operations\");\nconst shared = globalThis as typeof globalThis & {\n [operationsKey]?: Map<string, Promise<unknown>>;\n};\nconst operations = (shared[operationsKey] ??= new Map<string, Promise<unknown>>());\nconst LOCK_NAME = \".elementspanel-npm.lock\";\n\nasync function acquireProjectLock(projectRoot: string) {\n await fs.ensureDir(projectRoot);\n const directory = path.join(projectRoot, LOCK_NAME);\n const deadline = Date.now() + 11 * 60 * 1000;\n while (true) {\n try {\n await fs.mkdir(directory);\n await fs.writeJson(path.join(directory, \"owner.json\"), { pid: process.pid });\n return () => fs.remove(directory);\n } catch (error: any) {\n if (error.code !== \"EEXIST\") throw error;\n try {\n const owner = await fs.readJson(path.join(directory, \"owner.json\"));\n try {\n process.kill(owner.pid, 0);\n } catch (failure: any) {\n if (failure.code === \"ESRCH\") {\n await fs.remove(directory);\n continue;\n }\n }\n } catch {\n if (\n Date.now() - ((await fs.stat(directory).catch(() => null))?.mtimeMs ?? Date.now()) >\n 60_000\n ) {\n await fs.remove(directory);\n continue;\n }\n }\n if (Date.now() > deadline) throw new Error(\"Another npm plugin operation is still running.\");\n await new Promise((resolve) => setTimeout(resolve, 200));\n }\n }\n}\n\nexport function npmPluginOperationPending(): boolean {\n const { packageRoot, projectRoot } = npmPluginRoots();\n return (\n operations.size > 0 ||\n [packageRoot, projectRoot].some((root) => fs.existsSync(path.join(root, LOCK_NAME)))\n );\n}\n\nfunction withProjectLock<T>(projectRoot: string, operation: () => Promise<T>): Promise<T> {\n const key = process.platform === \"win32\" ? projectRoot.toLowerCase() : projectRoot;\n const previous = operations.get(key) ?? Promise.resolve();\n const result = previous.then(async () => {\n const release = await acquireProjectLock(projectRoot);\n try {\n return await operation();\n } finally {\n await release();\n }\n });\n const settled = result.then(\n () => {},\n () => {}\n );\n operations.set(key, settled);\n return result.finally(() => {\n if (operations.get(key) === settled) operations.delete(key);\n }) as Promise<T>;\n}\n\n/** Core services keep the connection and management interface available. */\nexport function isEssentialNpmPlugin(pluginId: string) {\n return [\"i18n\", \"storage\", \"runtime\", \"server\", \"console\", \"config\"].includes(pluginId);\n}\n\n/** npm changes dependencies and lockfiles; only append our plugin mapping afterwards. */\nexport async function installNpmPlugin(options: InstallNpmPluginOptions): Promise<NpmPluginRecord> {\n const { name, side } = options;\n const version = options.version || \"latest\";\n if (!PACKAGE_NAME.test(name)) throw new Error(`Invalid npm plugin package: ${name}`);\n if (options.pluginId && !PLUGIN_ID.test(options.pluginId))\n throw new Error(`Invalid plugin id: ${options.pluginId}`);\n if (!VERSION.test(version)) throw new Error(`Invalid plugin version: ${version}`);\n const { packageRoot, projectRoot } = npmPluginRoots(options);\n return withProjectLock(projectRoot, async () => {\n const host = readJson(path.join(packageRoot, \"package.json\"));\n if (!host) throw new Error(`Missing runtime package metadata: ${packageRoot}`);\n const hostId = Object.entries(mappingsOf(host)).find(\n ([, value]) => value === name && dependenciesOf(host)[name] !== undefined\n )?.[0];\n const targetRoot = hostId ? packageRoot : projectRoot;\n if (hostId && isEssentialNpmPlugin(hostId))\n throw new Error(`The essential plugin \"${hostId}\" cannot be replaced while running.`);\n if (\n options.pluginId &&\n mappingsOf(host)[options.pluginId] &&\n dependenciesOf(host)[String(mappingsOf(host)[options.pluginId])] !== undefined &&\n mappingsOf(host)[options.pluginId] !== name\n )\n throw new Error(`BUNDLED:${options.pluginId}`);\n const original = readProjectManifest(targetRoot);\n const previous = dependenciesOf(original)[name];\n let previousVersion = previous;\n if (previous) {\n try {\n previousVersion = readPackageEntry(targetRoot, name).metadata.version || previous;\n } catch {\n /* Keep the declared spec if the previous package is incomplete. */\n }\n }\n const backups = new Map<string, Buffer | null>();\n for (const filename of [\"package.json\", \"package-lock.json\", \"npm-shrinkwrap.json\"]) {\n const target = path.join(targetRoot, filename);\n backups.set(target, fs.existsSync(target) ? fs.readFileSync(target) : null);\n }\n try {\n await runNpm(\n [\n \"--prefix\",\n targetRoot,\n \"install\",\n `${name}@${version}`,\n \"--save\",\n \"--save-exact\",\n \"--no-fund\",\n \"--no-audit\",\n \"--ignore-scripts\"\n ],\n targetRoot\n );\n const entry = readPackageEntry(targetRoot, name);\n const pluginId =\n options.pluginId || stringValue(objectValue(entry.metadata.elementspanel)?.id);\n if (!PLUGIN_ID.test(pluginId)) throw new Error(`Invalid plugin id in ${name}.`);\n if (\n mappingsOf(host)[pluginId] &&\n dependenciesOf(host)[String(mappingsOf(host)[pluginId])] !== undefined &&\n mappingsOf(host)[pluginId] !== name\n )\n throw new Error(`Plugin id ${pluginId} belongs to a bundled dependency.`);\n if (hostId && pluginId !== hostId)\n throw new Error(`The package ${name} changed its plugin id from ${hostId} to ${pluginId}.`);\n const mapped = mappingsOf(readProjectManifest(targetRoot))[pluginId];\n if (mapped !== undefined && mapped !== name)\n throw new Error(`Plugin id ${pluginId} is already installed as ${String(mapped)}.`);\n const record = recordFromPackage(\n pluginId,\n name,\n hostId ? \"bundled\" : \"project\",\n entry.root,\n entry.metadata,\n side\n );\n if (!record)\n throw new Error(`The package ${name} does not provide a ${side} plugin named ${pluginId}.`);\n if (/^[0-9]/.test(version) && record.version !== version)\n throw new Error(`The installed package ${name} is ${record.version}, expected ${version}.`);\n if (\n !process.env.EPANEL_PACKAGE_ROOT &&\n discoverPlugins(path.join(packageRoot, \"plugins\"), {\n entryFields: [],\n includeDisabled: true\n }).some((plugin) => plugin.manifest.id === pluginId)\n )\n throw new Error(`Source plugin ${pluginId} cannot be replaced with an npm dependency.`);\n const manifest = readPluginManifest(record.directory);\n if (!manifest || manifest.id !== pluginId || manifest.version !== record.version)\n throw new Error(`The plugin manifest in ${name} does not match its package.`);\n validatePluginCompatibility(manifest.elements);\n for (const field of [\"backend\", \"frontend\", \"panel\", \"daemon\", \"main\", \"entry\", \"ui\"]) {\n if (\n typeof manifest[field] === \"string\" &&\n !resolvePluginEntry(record.directory, manifest, { entryFields: [field] })\n )\n throw new Error(`Invalid ${field} entry in ${name}.`);\n }\n const others = listNpmPlugins(side, { packageRoot, projectRoot, skipInvalid: true });\n if (others.some((plugin) => plugin.pluginId === pluginId && plugin.name !== name))\n throw new Error(`Plugin id ${pluginId} is already provided by another dependency.`);\n const collision = others.find(\n (plugin) => plugin.pluginId !== pluginId && plugin.folder === record.folder\n );\n if (collision)\n throw new Error(\n `Plugin asset directory ${record.folder} is already used by ${collision.name}.`\n );\n const updated = readProjectManifest(targetRoot);\n updated.dependencies = { ...dependenciesOf(updated), [name]: record.version };\n updated.elementspanel = {\n ...objectValue(updated.elementspanel),\n plugins: { ...mappingsOf(updated), [pluginId]: name }\n };\n writeProjectManifest(targetRoot, updated);\n return record;\n } catch (error) {\n try {\n await runNpm(\n previous\n ? [\n \"--prefix\",\n targetRoot,\n \"install\",\n `${name}@${String(previousVersion)}`,\n \"--save\",\n \"--no-fund\",\n \"--no-audit\",\n \"--ignore-scripts\"\n ]\n : [\n \"--prefix\",\n targetRoot,\n \"uninstall\",\n name,\n \"--no-fund\",\n \"--no-audit\",\n \"--ignore-scripts\"\n ],\n targetRoot\n );\n } catch (rollback) {\n throw new Error(`${String(error)}; npm rollback failed: ${String(rollback)}`);\n } finally {\n for (const [filename, content] of backups) {\n if (content === null) await fs.remove(filename);\n else await fs.writeFile(filename, content);\n }\n }\n throw error;\n }\n });\n}\n\n/** Remove the dependency from the manifest that owns it, preserving user configuration. */\nexport async function uninstallNpmPlugin(\n pluginId: string,\n options: { packageRoot?: string; projectRoot?: string } = {}\n): Promise<NpmPluginRecord | null> {\n if (!PLUGIN_ID.test(pluginId)) throw new Error(`Invalid plugin id: ${pluginId}`);\n if (isEssentialNpmPlugin(pluginId))\n throw new Error(`The essential plugin \"${pluginId}\" cannot be uninstalled.`);\n const { packageRoot, projectRoot } = npmPluginRoots(options);\n return withProjectLock(projectRoot, async () => {\n const host = readJson(path.join(packageRoot, \"package.json\"));\n const bundledName = mappingsOf(host)[pluginId];\n const targetRoot =\n typeof bundledName === \"string\" && dependenciesOf(host)[bundledName] !== undefined\n ? packageRoot\n : projectRoot;\n const manifest = readProjectManifest(targetRoot);\n const name =\n mappingsOf(manifest)[pluginId] ??\n listNpmPlugins(undefined, { packageRoot, projectRoot, skipInvalid: true }).find(\n (item) => item.pluginId === pluginId\n )?.name;\n if (typeof name !== \"string\" || !PACKAGE_NAME.test(name)) return null;\n const record = listNpmPlugins(undefined, { packageRoot, projectRoot, skipInvalid: true }).find(\n (item) => item.pluginId === pluginId\n );\n await runNpm(\n [\"--prefix\", targetRoot, \"uninstall\", name, \"--no-fund\", \"--no-audit\", \"--ignore-scripts\"],\n targetRoot\n );\n const updated = readProjectManifest(targetRoot);\n const plugins = { ...mappingsOf(updated) };\n delete plugins[pluginId];\n updated.elementspanel = { ...objectValue(updated.elementspanel), plugins };\n writeProjectManifest(targetRoot, updated);\n return record ?? null;\n });\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { randomBytes } from \"node:crypto\";\nimport type { DiscoveredPlugin } from \"./plugin_manifest\";\n\nexport interface PluginOverride {\n enabled?: boolean;\n config?: Record<string, unknown>;\n}\ninterface Overrides {\n version: 1;\n plugins: Record<string, PluginOverride>;\n}\n\nexport function pluginOverridesPath(): string {\n return path.resolve(process.cwd(), \"data\", \"plugin-overrides.json\");\n}\n\n/** Package defaults stay immutable; only the user's last layer lives in data. */\nexport function readPluginOverrides(filename = pluginOverridesPath()): Overrides {\n let raw: string;\n try {\n raw = fs.readFileSync(filename, \"utf8\");\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return { version: 1, plugins: {} };\n throw error;\n }\n const data = JSON.parse(raw);\n if (\n data?.version !== 1 ||\n !data.plugins ||\n typeof data.plugins !== \"object\" ||\n Array.isArray(data.plugins)\n )\n throw new Error(\"Invalid plugin-overrides.json\");\n for (const entry of Object.values(data.plugins)) validatePluginOverride(entry);\n return data;\n}\n\nexport function validatePluginOverride(value: unknown): asserts value is PluginOverride {\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n throw new Error(\"Invalid plugin override.\");\n const entry = value as PluginOverride;\n if (entry.enabled !== undefined && typeof entry.enabled !== \"boolean\")\n throw new Error(\"Invalid plugin enablement.\");\n if (\n entry.config !== undefined &&\n (!entry.config || typeof entry.config !== \"object\" || Array.isArray(entry.config))\n )\n throw new Error(\"Plugin config must be an object.\");\n if (Object.keys(value).some((key) => ![\"enabled\", \"config\"].includes(key)))\n throw new Error(\"Unknown plugin override field.\");\n}\n\nexport function applyPluginOverrides(\n plugins: DiscoveredPlugin[],\n filename = pluginOverridesPath()\n): DiscoveredPlugin[] {\n const overrides = readPluginOverrides(filename).plugins;\n return plugins.map((plugin) => ({\n ...plugin,\n manifest: {\n ...plugin.manifest,\n ...(Object.prototype.hasOwnProperty.call(overrides, plugin.manifest.id)\n ? overrides[plugin.manifest.id]\n : {})\n }\n }));\n}\n\n/** Call inside the host's change queue; rename keeps readers off partial JSON. */\nexport function writePluginOverride(\n id: string,\n patch: PluginOverride,\n filename = pluginOverridesPath()\n): void {\n validatePluginOverride(patch);\n if (!id || [\"__proto__\", \"constructor\", \"prototype\"].includes(id))\n throw new Error(\"Invalid plugin id.\");\n const data = readPluginOverrides(filename);\n data.plugins[id] = {\n ...(Object.prototype.hasOwnProperty.call(data.plugins, id) ? data.plugins[id] : {}),\n ...patch\n };\n fs.mkdirSync(path.dirname(filename), { recursive: true });\n const temporary = `${filename}.${randomBytes(8).toString(\"hex\")}.tmp`;\n try {\n fs.writeFileSync(temporary, `${JSON.stringify(data, null, 2)}\\n`, { mode: 0o600, flag: \"wx\" });\n fs.renameSync(temporary, filename);\n } finally {\n fs.rmSync(temporary, { force: true });\n }\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { createHash } from \"node:crypto\";\n\nconst cache = new Map<string, { signature: string; revision: string }>();\n\n/** One revision addresses the complete module graph, including CSS and nested chunks. */\nexport function pluginDirectoryRevision(directory: string): string {\n const files: Array<{ relative: string; absolute: string; stat: fs.Stats }> = [];\n const walk = (root: string) => {\n if (!fs.existsSync(root)) return;\n for (const item of fs\n .readdirSync(root, { withFileTypes: true })\n .sort((a, b) => a.name.localeCompare(b.name))) {\n const absolute = path.join(root, item.name);\n if (item.isDirectory()) walk(absolute);\n else if (item.isFile())\n files.push({\n relative: path.relative(directory, absolute),\n absolute,\n stat: fs.statSync(absolute)\n });\n }\n };\n walk(directory);\n const signature = JSON.stringify(\n files.map(({ relative, stat }) => [relative, stat.size, stat.mtimeMs, stat.ctimeMs])\n );\n const previous = cache.get(directory);\n if (previous?.signature === signature) return previous.revision;\n const hash = createHash(\"sha256\");\n for (const file of files)\n hash\n .update(file.relative)\n .update(\"\\0\")\n .update(new Uint8Array(fs.readFileSync(file.absolute)))\n .update(\"\\0\");\n const revision = hash.digest(\"hex\").slice(0, 24);\n if (cache.size > 1024) cache.clear();\n cache.set(directory, { signature, revision });\n return revision;\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport {\n npmPluginRoots,\n listNpmPlugins,\n npmPluginOperationPending,\n type NpmPluginSide\n} from \"./plugin_npm\";\n\n/** Poll package boundaries, allowing npm to finish replacing files before reconciliation. */\nexport function watchNpmPlugins(\n ctx: {\n setInterval(callback: () => void, delay: number): unknown;\n logger: { warn(...args: unknown[]): void };\n },\n side: NpmPluginSide,\n reload: () => Promise<unknown>,\n changed?: () => void\n) {\n const stamp = () => {\n const { packageRoot, projectRoot } = npmPluginRoots();\n if (!fs.existsSync(path.join(packageRoot, \"package.json\"))) return \"\";\n const files: string[] = [];\n for (const root of [packageRoot, projectRoot])\n for (const name of [\n \"package.json\",\n \"package-lock.json\",\n \"npm-shrinkwrap.json\",\n \"node_modules/.package-lock.json\"\n ])\n files.push(path.join(root, name));\n for (const plugin of listNpmPlugins(side, { skipInvalid: true }))\n files.push(\n path.join(plugin.packageRoot, \"package.json\"),\n path.join(plugin.directory, \"plugin.json\")\n );\n return JSON.stringify(\n files.map((filename) => {\n try {\n const stat = fs.statSync(filename);\n return [filename, stat.size, stat.mtimeMs, stat.ctimeMs];\n } catch {\n return [filename, null];\n }\n })\n );\n };\n let applied = stamp();\n let candidate = applied;\n let busy = false;\n ctx.setInterval(() => {\n if (busy || npmPluginOperationPending()) return;\n try {\n const next = stamp();\n if (next === applied) {\n candidate = next;\n return;\n }\n if (next !== candidate) {\n candidate = next;\n return;\n }\n busy = true;\n void reload()\n .then(() => {\n applied = next;\n candidate = next;\n changed?.();\n })\n .catch((error) => ctx.logger.warn(\"Failed to synchronize npm plugins\", error))\n .finally(() => {\n busy = false;\n });\n } catch (error) {\n ctx.logger.warn(\"Failed to inspect npm plugins\", error);\n }\n }, 2000);\n}\n","import { ChildProcess, execFileSync, SpawnOptionsWithoutStdio } from \"child_process\";\nimport os from \"os\";\nimport child_process from \"child_process\";\nimport path from \"path\";\nimport EventEmitter from \"events\";\nimport iconv from \"iconv-lite\";\nimport nodeProcess from \"process\";\n\nexport class StartError extends Error {}\n\nexport class ProcessWrapper extends EventEmitter {\n public process?: ChildProcess;\n public pid?: number;\n private lastExitCode?: number | null;\n private completed = false;\n\n public errMsg = {\n timeoutErr: \"task timeout!\",\n exitErr: \"task error!\",\n startErr: \"task start error!\"\n };\n\n constructor(\n public readonly file: string,\n public readonly args: string[],\n public readonly cwd: string,\n public readonly timeout: number = 0,\n public readonly code = \"utf-8\",\n public readonly option: SpawnOptionsWithoutStdio = {}\n ) {\n super();\n }\n\n public setErrMsg(errMsg: { timeoutErr: string; exitErr: string; startErr: string }) {\n this.errMsg = errMsg;\n }\n\n public start(): Promise<boolean> {\n if (this.process) return Promise.reject(new Error(\"The process is already running\"));\n return new Promise((resolve, reject) => {\n const stdoutDecoder = iconv.decodeStream(this.code);\n const stderrDecoder = iconv.decodeStream(this.code);\n let timeTask: NodeJS.Timeout | undefined;\n let settled = false;\n let spawned = false;\n const settle = (error?: Error) => {\n if (settled) return;\n settled = true;\n if (timeTask) clearTimeout(timeTask);\n if (error) reject(error);\n else resolve(true);\n };\n const subProcess = child_process.spawn(this.file, this.args, {\n stdio: \"pipe\",\n windowsHide: true,\n cwd: path.normalize(this.cwd),\n ...this.option\n });\n this.process = subProcess;\n this.pid = subProcess.pid;\n this.lastExitCode = undefined;\n this.completed = false;\n\n const fail = (error: Error) => {\n if (settled) return;\n settle(error);\n if (subProcess.pid && subProcess.exitCode === null && subProcess.signalCode === null) {\n try {\n killProcess(subProcess.pid, subProcess);\n } catch (error) {\n console.error(\"[ProcessWrapper kill error]\", error);\n }\n }\n };\n\n subProcess.once(\"spawn\", () => {\n spawned = true;\n this.emit(\"start\", subProcess.pid);\n });\n for (const [source, decoder] of [\n [subProcess.stdout, stdoutDecoder],\n [subProcess.stderr, stderrDecoder]\n ] as const) {\n decoder.on(\"data\", (text) => this.emit(\"data\", text));\n decoder.on(\"error\", fail);\n source.on(\"error\", fail);\n source.pipe(decoder);\n }\n subProcess.stdin.on(\"error\", fail);\n subProcess.once(\"error\", (error) => {\n fail(new Error(`${spawned ? this.errMsg.exitErr : this.errMsg.startErr} ${error.message}`));\n });\n subProcess.once(\"exit\", (code) => {\n this.lastExitCode = code;\n this.emit(\"exit\", code);\n });\n // `close` follows the final stdout/stderr data and also follows a failed spawn.\n subProcess.once(\"close\", (code) => {\n this.lastExitCode = code;\n this.completed = true;\n this.process = undefined;\n settle(code === 0 ? undefined : new Error(this.errMsg.exitErr));\n });\n\n if (this.timeout > 0) {\n timeTask = setTimeout(() => {\n fail(new Error(this.errMsg.timeoutErr));\n }, 1000 * this.timeout);\n }\n });\n }\n\n public getPid() {\n return this.process?.pid;\n }\n\n public write(data?: any) {\n return this.process?.stdin?.write(iconv.encode(data, this.code));\n }\n\n public kill() {\n if (this.process?.pid) killProcess(this.process?.pid, this.process);\n }\n\n public status() {\n return this.completed;\n }\n\n public exitCode() {\n return this.process?.exitCode ?? this.lastExitCode;\n }\n}\n\nexport function killProcess(\n pid: string | number,\n process: { kill(signal?: any): any },\n signal?: any\n) {\n const numericPid = Number(pid);\n if (!Number.isSafeInteger(numericPid) || numericPid <= 0) {\n throw new Error(\"Invalid process ID\");\n }\n try {\n if (os.platform() === \"win32\") {\n execFileSync(\"taskkill\", [\"/PID\", String(numericPid), \"/T\", \"/F\"], { windowsHide: true });\n return true;\n }\n return nodeProcess.kill(numericPid, signal || \"SIGKILL\");\n } catch (err) {\n return signal ? process.kill(signal) : process.kill(\"SIGKILL\");\n }\n}\n","interface IMap {\n size: number;\n forEach: (value: any, key?: any) => void;\n}\n\ninterface Page<T> {\n page: number;\n pageSize: number;\n maxPage: number;\n total: number;\n data: T[];\n}\n\nfunction paginate<T>(data: T[], page: number, pageSize: number): Page<T> {\n if (!Number.isSafeInteger(page) || page < 1 || !Number.isSafeInteger(pageSize) || pageSize < 1) {\n throw new RangeError(\"page and pageSize must be positive integers\");\n }\n const start = (page - 1) * pageSize;\n return {\n page,\n pageSize,\n maxPage: Math.ceil(data.length / pageSize),\n total: data.length,\n data: data.slice(start, start + pageSize)\n };\n}\n\n// Provide the MAP query interface used by the routing layer\nexport class QueryMapWrapper {\n constructor(public map: IMap) {}\n\n select<T>(condition: (v: T) => boolean): T[] {\n const result: T[] = [];\n this.map.forEach((v: T) => {\n if (condition(v)) result.push(v);\n });\n return result;\n }\n\n page<T>(data: T[], page = 1, pageSize = 10) {\n return paginate(data, page, pageSize);\n }\n}\n\n// Data source interface for QueryWrapper to use\nexport interface IDataSource<T> {\n selectPage: (condition: any, page: number, pageSize: number) => Page<T>;\n select: (condition: any) => any[];\n update: (condition: any, data: any) => void;\n delete: (condition: any) => void;\n insert: (data: any) => void;\n}\n\n// MYSQL data source\nexport class MySqlSource<T> implements IDataSource<T> {\n constructor(public data: any) {}\n selectPage(condition: any, page: number, pageSize: number) {\n return {\n page,\n pageSize,\n maxPage: 0,\n total: 0,\n data: []\n };\n }\n select(condition: any) {\n return [];\n }\n update(condition: any, data: any) {}\n delete(condition: any) {}\n insert(data: any) {}\n}\n\n// local file data source (embedded microdatabase)\nexport class LocalFileSource<T> implements IDataSource<T> {\n constructor(public data: any) {}\n\n selectPage(condition: any, page = 1, pageSize = 10) {\n return this.page(this.select(condition), page, pageSize);\n }\n\n page(data: T[], page = 1, pageSize = 10) {\n return paginate(data, page, pageSize);\n }\n\n select(condition: Record<string, unknown> = {}): T[] {\n const result: T[] = [];\n const entries = Object.entries(condition);\n this.data.forEach((v: any) => {\n for (const [key, targetValue] of entries) {\n const dataValue = v[key];\n if (\n typeof targetValue === \"string\" &&\n targetValue.startsWith(\"%\") &&\n targetValue.endsWith(\"%\")\n ) {\n if (typeof dataValue !== \"string\" || !dataValue.includes(targetValue.slice(1, -1)))\n return;\n } else if (targetValue !== dataValue) {\n return;\n }\n }\n result.push(v);\n });\n return result;\n }\n update(condition: any, data: any) {}\n delete(condition: any) {}\n insert(data: any) {}\n}\n\n// Provide the unified data query interface used by the routing layer\nexport class QueryWrapper<T> {\n constructor(public dataSource: IDataSource<T>) {}\n\n selectPage(condition: any, page = 1, pageSize = 10) {\n return this.dataSource.selectPage(condition, page, pageSize);\n }\n}\n","import fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport type { PluginDiscoveryRoot } from \"./plugin_manifest\";\n// @ts-ignore Shared source layout is also consumed by the Node build tools.\nimport { sourcePlugins } from \"../../../scripts/workspace-layout.cjs\";\n\n/** Set by the npm worker before any application module is loaded. */\nexport function isPackagedRuntime(): boolean {\n return Boolean(process.env.EPANEL_PACKAGE_ROOT);\n}\n\n/** Code and bundled assets belong to the package; cwd always belongs to the user. */\nexport function packagePath(...parts: string[]): string {\n return path.resolve(\n process.env.EPANEL_PACKAGE_ROOT || process.env.EPANEL_SOURCE_ROOT || process.cwd(),\n ...parts\n );\n}\n\nfunction npmPluginRoots(side?: \"panel\" | \"daemon\"): PluginDiscoveryRoot[] {\n // The same resolver is used by the CLI before the bundled application starts.\n // A development checkout keeps it in the repository above core/<side>,\n // so project-installed npm plugins work there as well.\n const runtimeRequire = eval(\"require\") as NodeRequire;\n const resolver = isPackagedRuntime()\n ? packagePath(\"runtime/npm-plugins.cjs\")\n : path.resolve(packagePath(), \"../..\", \"scripts\", \"runtime\", \"npm-plugins.cjs\");\n // A development process may run from a fixture directory without a runtime\n // package; there is nothing to resolve in that case.\n if (!fs.existsSync(path.join(packagePath(), \"package.json\"))) return [];\n if (!isPackagedRuntime() && !fs.existsSync(resolver)) return [];\n const { resolveNpmPlugins } = runtimeRequire(resolver);\n return resolveNpmPlugins(packagePath(), side, { skipInvalid: true }).map((record: any) => ({\n directory: record.directory,\n packageRoot: record.packageRoot,\n packageName: record.name,\n npmSource: record.source,\n ...(record.folder ? { folder: record.folder } : {}),\n // Built-in packages are part of the runtime's default configuration. A\n // project dependency is installed but remains dormant until the user\n // enables it through the plugin configuration service.\n defaultEnabled: record.defaultEnabled !== false\n }));\n}\n\nexport function packagePluginRoots(side: \"panel\" | \"daemon\"): PluginDiscoveryRoot[] {\n const sourceCheckout =\n process.env.EPANEL_SOURCE_ROOT || path.basename(path.dirname(packagePath())) === \"core\";\n const roots: PluginDiscoveryRoot[] = isPackagedRuntime()\n ? []\n : !sourceCheckout\n ? [{ directory: packagePath(\"plugins\"), defaultEnabled: true }]\n : sourcePlugins(side, path.resolve(packagePath(), \"../..\")).map(\n (plugin: { directory: string; folder: string }) => ({\n directory: plugin.directory,\n folder: plugin.folder,\n defaultEnabled: true\n })\n );\n // Project-installed npm plugins load in development too: they are dependencies\n // of the development project, not of the published runtime package.\n roots.push(...npmPluginRoots(side));\n return roots;\n}\n\nexport function isPackagePlugin(directory: string): boolean {\n return npmPluginRoots().some((root) => {\n const relative = path.relative(root.directory, path.resolve(directory));\n return (\n relative === \"\" ||\n (!relative.startsWith(`..${path.sep}`) && relative !== \"..\" && !path.isAbsolute(relative))\n );\n });\n}\n\nexport function bundledToolPath(name: string): string {\n const platform = os.platform();\n const arch = os.arch();\n const suffix = platform === \"win32\" ? \".exe\" : \"\";\n const filename = `${name}_${platform}_${arch}${suffix}`;\n // Published daemon packages download native tools into the installation's\n // writable lib directory on first start. Development checkouts use the same\n // repository-local sibling of data and logs.\n const root = path.resolve(process.cwd(), \"lib\");\n const primary = path.join(root, filename);\n // Zip-Tools names its Intel macOS binary \"amd64\", while Node reports \"x64\".\n if (!fs.existsSync(primary) && name === \"file_zip\" && platform === \"darwin\" && arch === \"x64\") {\n const alternate = path.join(root, \"file_zip_darwin_amd64\");\n if (fs.existsSync(alternate)) return alternate;\n }\n return primary;\n}\n\n/** Published binaries already carry executable permissions, including in read-only installs. */\nexport function ensureExecutable(filename: string): void {\n if (os.platform() === \"win32\") return;\n try {\n fs.accessSync(filename, fs.constants.X_OK);\n } catch {\n fs.chmodSync(filename, 0o755);\n }\n}\n","export function removeTrail(origin: string, trail: string) {\n if (origin.endsWith(trail)) {\n return origin.slice(0, origin.length - trail.length);\n } else {\n return origin;\n }\n}\n","import os from \"os\";\nimport osUtils from \"os-utils\";\nimport fs from \"fs\";\n\ninterface IInfoTable {\n [key: string]: number;\n}\n\ninterface ISystemInfo {\n cpuUsage: number;\n memUsage: number;\n totalmem: number;\n freemem: number;\n type: string;\n hostname: string;\n platform: string;\n release: string;\n uptime: number;\n cwd: string;\n processCpu: number;\n processMem: number;\n loadavg: number[];\n}\n\n// System details are updated every time\nconst info: ISystemInfo = {\n type: os.type(),\n hostname: os.hostname(),\n platform: os.platform(),\n release: os.release(),\n uptime: os.uptime(),\n cwd: process.cwd(),\n loadavg: os.loadavg(),\n freemem: 0,\n cpuUsage: 0,\n memUsage: 0,\n totalmem: 0,\n processCpu: 0,\n processMem: 0\n};\n\nlet previousCpu = process.cpuUsage();\nlet previousTime = process.hrtime.bigint();\n\n// periodically refresh the cache\nfunction refresh() {\n const now = process.hrtime.bigint();\n const cpu = process.cpuUsage();\n const elapsed = Number(now - previousTime) / 1000;\n info.processCpu =\n elapsed > 0 ? (cpu.user - previousCpu.user + cpu.system - previousCpu.system) / elapsed : 0;\n previousCpu = cpu;\n previousTime = now;\n info.uptime = os.uptime();\n info.loadavg = os.loadavg();\n info.processMem = process.memoryUsage().rss;\n if (os.platform() === \"linux\") {\n return setLinuxSystemInfo();\n }\n return otherSystemInfo();\n}\n\nrefresh();\nsetInterval(refresh, 3000).unref();\n\nfunction otherSystemInfo() {\n info.freemem = os.freemem();\n info.totalmem = os.totalmem();\n info.memUsage = (os.totalmem() - os.freemem()) / os.totalmem();\n osUtils.cpuUsage((p) => (info.cpuUsage = p));\n}\n\nfunction setLinuxSystemInfo() {\n try {\n // read memory data based on /proc/meminfo\n const data = fs.readFileSync(\"/proc/meminfo\", { encoding: \"utf-8\" });\n const list = data.split(\"\\n\");\n const infoTable: IInfoTable = {};\n list.forEach((line) => {\n const kv = line.split(\":\");\n if (kv.length === 2) {\n const k = kv[0].replace(/ /gim, \"\").replace(/\\t/gim, \"\").trim().toLowerCase();\n let v = kv[1].replace(/ /gim, \"\").replace(/\\t/gim, \"\").trim().toLowerCase();\n v = v.replace(/kb/gim, \"\").replace(/mb/gim, \"\").replace(/gb/gim, \"\");\n let vNumber = parseInt(v);\n if (isNaN(vNumber)) vNumber = 0;\n infoTable[k] = vNumber;\n }\n });\n const memAvailable = infoTable[\"memavailable\"] ?? infoTable[\"memfree\"];\n const memTotal = infoTable[\"memtotal\"];\n info.freemem = memAvailable * 1024;\n info.totalmem = memTotal * 1024;\n info.memUsage = (info.totalmem - info.freemem) / info.totalmem;\n osUtils.cpuUsage((p) => (info.cpuUsage = p));\n } catch (error: any) {\n // If the reading is wrong, the default general reading method is automatically used\n otherSystemInfo();\n }\n}\n\nexport function systemInfo() {\n return info;\n}\n","import { randomUUID } from \"crypto\";\nimport path from \"path\";\nimport fs from \"fs-extra\";\n\nexport default class StorageSubsystem {\n public static readonly DATA_PATH = path.resolve(process.cwd(), \"data\");\n public static readonly INDEX_PATH = path.join(StorageSubsystem.DATA_PATH, \"Index\");\n\n private resolvePath(name: string) {\n if (\n typeof name !== \"string\" ||\n !name ||\n /[\\0:]/.test(name) ||\n path.isAbsolute(name) ||\n path.win32.isAbsolute(name)\n ) {\n throw new Error(`Invalid storage path: ${name}`);\n }\n const target = path.resolve(StorageSubsystem.DATA_PATH, name);\n const relative = path.relative(StorageSubsystem.DATA_PATH, target);\n if (\n !relative ||\n relative === \"..\" ||\n relative.startsWith(`..${path.sep}`) ||\n path.isAbsolute(relative)\n ) {\n throw new Error(`Invalid storage path: ${name}`);\n }\n const realRelative = path.relative(\n this.realPath(StorageSubsystem.DATA_PATH),\n this.realPath(target)\n );\n if (\n realRelative === \"..\" ||\n realRelative.startsWith(`..${path.sep}`) ||\n path.isAbsolute(realRelative)\n ) {\n throw new Error(`Invalid storage path: ${name}`);\n }\n return target;\n }\n\n private realPath(target: string): string {\n if (fs.existsSync(target)) return fs.realpathSync(target);\n const parent = path.dirname(target);\n return parent === target ? target : path.join(this.realPath(parent), path.basename(target));\n }\n\n private entityPath(category: string, uuid: string) {\n if (typeof uuid !== \"string\" || !uuid || /[\\\\/\\0:]/.test(uuid) || uuid.includes(\"..\")) {\n throw new Error(`UUID ${uuid} does not conform to specification`);\n }\n this.resolvePath(category);\n return path.join(category, `${uuid}.json`);\n }\n\n public writeFile(name: string, data: string) {\n const targetPath = this.resolvePath(name);\n fs.ensureDirSync(path.dirname(targetPath));\n const temporaryPath = `${targetPath}.${randomUUID()}.tmp`;\n const mode = fs.existsSync(targetPath) ? fs.statSync(targetPath).mode : 0o600;\n try {\n fs.writeFileSync(temporaryPath, data, { encoding: \"utf8\", flag: \"wx\", mode });\n fs.renameSync(temporaryPath, targetPath);\n } finally {\n if (fs.existsSync(temporaryPath)) fs.unlinkSync(temporaryPath);\n }\n }\n\n public readFile(name: string) {\n return fs.readFileSync(this.resolvePath(name), \"utf8\");\n }\n\n public readDir(dirName: string) {\n const targetPath = this.resolvePath(dirName);\n if (!fs.existsSync(targetPath)) return [];\n return fs.readdirSync(targetPath).map((name) => path.join(dirName, name));\n }\n\n public deleteFile(name: string) {\n fs.removeSync(this.resolvePath(name));\n }\n\n public fileExists(name: string) {\n return fs.existsSync(this.resolvePath(name));\n }\n\n public store(category: string, uuid: string, object: any) {\n this.writeFile(this.entityPath(category, uuid), JSON.stringify(object, null, 4));\n }\n\n // Restore declared fields while keeping defaults for fields absent in older data.\n protected defineAttr(target: any, object: any): any {\n for (const key of Object.keys(target)) {\n if (!Object.prototype.hasOwnProperty.call(object, key) || object[key] === undefined) continue;\n const value = object[key];\n if (\n value !== null &&\n typeof value === \"object\" &&\n !Array.isArray(value) &&\n target[key] !== null &&\n typeof target[key] === \"object\" &&\n !Array.isArray(target[key])\n ) {\n this.defineAttr(target[key], value);\n } else {\n target[key] = value;\n }\n }\n return target;\n }\n\n public load(category: string, classz: any, uuid: string) {\n const file = this.entityPath(category, uuid);\n if (!this.fileExists(file)) return null;\n const object = JSON.parse(this.readFile(file));\n if (!object || typeof object !== \"object\" || Array.isArray(object)) {\n throw new Error(`Invalid stored entity: ${file}`);\n }\n return this.defineAttr(new classz(), object);\n }\n\n public list(category: string) {\n const directory = this.resolvePath(category);\n if (!fs.existsSync(directory)) return [];\n return fs\n .readdirSync(directory, { withFileTypes: true })\n .filter((entry) => entry.isFile() && entry.name.endsWith(\".json\"))\n .map((entry) => entry.name.slice(0, -5));\n }\n\n public delete(category: string, uuid: string) {\n this.deleteFile(this.entityPath(category, uuid));\n }\n}\n","export function configureEntityParams(self: any, args: any, key: string, typeFn?: Function): any {\n const selfDefaultValue = self[key] ?? null;\n const v = args[key] != null ? args[key] : selfDefaultValue;\n\n if (typeFn === Number) {\n if (v === \"\" || v == null) {\n self[key] = null;\n } else {\n if (isNaN(Number(v)))\n throw new Error(\n `ConfigureEntityParams Error: Expected type to be Number, but got ${typeof v}`\n );\n self[key] = Number(v);\n }\n return;\n }\n\n if (typeFn === String) {\n if (v == null) {\n self[key] = null;\n } else {\n self[key] = String(v);\n }\n return;\n }\n\n if (typeFn === Boolean) {\n if (v == null) {\n self[key] = false;\n } else {\n self[key] = Boolean(v);\n }\n return;\n }\n\n if (typeFn) {\n self[key] = typeFn(v);\n } else {\n self[key] = v;\n }\n}\n\nexport function toText(v: any): string | null {\n if (isEmpty(v)) return null;\n return String(v);\n}\n\nexport function toNumber(v: any): number | null {\n if (isEmpty(v)) return null;\n if (isNaN(Number(v))) return null;\n return Number(v);\n}\n\nexport function toBoolean(v: any): boolean | null {\n if (isEmpty(v)) return null;\n return Boolean(v);\n}\n\nexport function isEmpty(v: any): boolean {\n return v === null || v === undefined;\n}\n\nexport function supposeValue<T>(v: any, def?: T) {\n if (isEmpty(v)) return def;\n return v;\n}\n","import type { PluginChangeResult } from \"mcsmanager-common\";\nimport type Router from \"@koa/router\";\nimport { Context } from \"cordis\";\nimport type i18next from \"i18next\";\nimport type Koa from \"koa\";\nimport type { Server } from \"socket.io\";\nimport type { GlobalVariable } from \"mcsmanager-common\";\nimport type { IRemoteService, RemoteMappingEntry } from \"./packets\";\nimport type { ROLE } from \"../../../../../plugins/runtime/panel/src/backend/roles\";\nimport type validator from \"../../../../../plugins/runtime/panel/src/backend/middleware/validator\";\nimport type { OperationLoggerItem, OperationLoggerItemPayload } from \"../../types/operation_logger\";\nimport type {\n AuthStats,\n GuardedRoute,\n RequestGuard,\n RequestIdentity,\n UserAccessPolicy,\n UserRecords\n} from \"./guard\";\nimport type { systemConfig } from \"../../../../../plugins/runtime/panel/src/backend/setting\";\nimport type { LoadedPanelPlugin, PanelFrontendPluginEntry, PanelPluginRecord } from \"./loader\";\n\n/**\n * The panel's cordis container, and the complete list of what a plugin can see.\n *\n * Every capability is a service on the context; every registration a plugin\n * makes is an effect owned by that plugin's scope, so unloading a plugin undoes\n * its contributions and no plugin ever writes cleanup code. `ctx.logger` and the\n * timer helpers (`ctx.setTimeout`, `ctx.setInterval`, `ctx.sleep`,\n * `ctx.throttle`, `ctx.debounce`) come with cordis itself.\n *\n * The declarations below are the API documentation: only `import type` here, so\n * this module stays a leaf that core code can import without a cycle. The\n * runtime values are provided by the foundation plugins (`storage`, `i18n`,\n * and `runtime`).\n */\nexport const ctx = new Context();\n\n/** What a declared setting renders as. `link` reads and writes nothing. */\nexport type PanelSettingFieldType =\n | \"string\"\n /** Multi-line string. */\n | \"text\"\n | \"number\"\n | \"boolean\"\n | \"select\"\n | \"list\"\n | \"link\";\n\nexport interface PanelSettingOption {\n value: string | number | boolean;\n label: string;\n}\n\n/**\n * One row of a plugin's configuration form, described rather than drawn.\n *\n * Labels are plain strings, already translated: the daemon's plugins are\n * rendered by this same form, and the browser has no copy of a daemon plugin's\n * catalogue. Whoever declares the field resolves it.\n */\nexport interface PanelSettingField {\n /** The key in `read()`'s result and `write()`'s argument. Absent for `link`. */\n key?: string;\n type: PanelSettingFieldType;\n title: string;\n description?: string;\n placeholder?: string;\n /** `number`: inclusive bounds, enforced by the form and by `write()`. */\n min?: number;\n max?: number;\n /** `select`: the allowed values. */\n options?: PanelSettingOption[];\n /** `string`: render as a password input. */\n secret?: boolean;\n /** `string`: offer the installed file manager's upload dialog. */\n fileUpload?: boolean;\n /**\n * Shown only while every listed condition holds. A condition is either a field\n * name, true when that field is truthy, or `\"name=value\"`, true when that\n * field's value stringifies to `value`.\n */\n visibleWhen?: string | string[];\n /** `link`: a frontend route the form offers as a button. */\n route?: string;\n /** `list`: an editable array of objects, each rendered using these fields. */\n fields?: PanelSettingField[];\n maxItems?: number;\n itemTitleKey?: string;\n listEditor?: \"inline\" | \"dialog\";\n addLabel?: string;\n editLabel?: string;\n removeLabel?: string;\n required?: boolean;\n}\n\n/**\n * A plugin's configuration, as its backend declares it.\n *\n * `fields` is a function so that it is resolved per request: a plugin's titles\n * come from its own catalogue, and the panel's language can change while it runs.\n */\nexport interface PanelSettingsDeclaration {\n /** Changes to this form require a process restart. */\n restartRequired?: boolean;\n fields(): PanelSettingField[];\n read(): Record<string, unknown> | Promise<Record<string, unknown>>;\n write(values: Record<string, unknown>): void | Promise<void>;\n}\n\n/** One plugin's form and its current values, as the page fetches them. */\nexport interface PanelSettingsSchema {\n id: string;\n fields: PanelSettingField[];\n values: Record<string, unknown>;\n}\n\n/** Panel settings, plus the call that persists them. */\nexport interface PanelSettingsService {\n readonly config: NonNullable<typeof systemConfig>;\n save(): Promise<void>;\n}\n\n/** Entity and file persistence supplied by `plugins/storage`. */\nexport interface PanelStorageService {\n readonly TYPE: { readonly FILE: 0; readonly REDIS: 1 };\n getStorage(): {\n store(category: string, uuid: string, object: any): Promise<void>;\n load(category: string, classz: any, uuid: string): Promise<any>;\n list(category: string): Promise<string[]>;\n delete(category: string, uuid: string): Promise<void>;\n };\n setStorageType(type: number): void;\n initialize(url: string): Promise<void>;\n readDir(category: string): string[];\n readFile(name: string): string;\n writeFile(name: string, data: string): void;\n}\n\n/**\n * The register of plugin configuration forms.\n *\n * A plugin describes its settings here instead of shipping a component for them,\n * which is what lets one generic form render a panel plugin's configuration and a\n * daemon plugin's alike — the browser has no copy of a daemon plugin at all.\n */\nexport interface PanelSettingsFormService {\n /** Declares the calling plugin's form. An effect: it leaves with the plugin. */\n declare(declaration: PanelSettingsDeclaration): () => void;\n /** The ids that declared a form, in declaration order. */\n declared(): string[];\n /** One plugin's fields and values, or `null` when it declared nothing. */\n read(id: string): Promise<PanelSettingsSchema | null>;\n /** Hands `values` to that plugin's own `write()`. */\n write(id: string, values: Record<string, unknown>): Promise<PluginChangeResult>;\n}\n\n/** Translation, and the way a plugin contributes its own strings. */\nexport interface PanelI18nService {\n readonly $t: typeof i18next.t;\n readonly i18next: typeof i18next;\n /**\n * Merge the plugin's translations, keyed by locale (`en_us`, `zh_cn`, ...).\n * Removed again when the plugin unloads, so its strings arrive and leave with\n * it instead of living in the foundational `plugins/i18n` catalogue.\n */\n define(messages: Record<string, Record<string, unknown>>): () => void;\n}\n\n/**\n * The panel's Koa application. `use()` and `router()` are scoped to the calling\n * plugin: both are removed when it unloads, which is why the web server mounts\n * one composed stack for each of them when it starts rather than calling\n * `app.use()` per registration.\n *\n * Provided by `plugins/server`, which owns the application itself.\n */\nexport interface PanelKoaService {\n readonly app: Koa;\n /** Adds a middleware, ahead of feature-plugin routers. */\n use(middleware: Koa.Middleware): () => void;\n /** Creates a router owned by the calling plugin and mounts it. */\n router(prefix?: string): Router;\n}\n\n/**\n * The panel's browser-facing Socket.IO server. It shares the HTTP listener and\n * its path prefix; plugins attach their own authentication middleware and rooms.\n */\nexport interface PanelWebsocketService {\n readonly io: Server;\n}\n\n/** The shared request middleware. Policy comes from the installed guard. */\nexport interface PanelMiddlewareService {\n permission(route: GuardedRoute): Koa.Middleware;\n readonly validator: typeof validator;\n readonly instanceAccess: Koa.Middleware;\n /** Per-caller rate limit; elevated callers pass through. */\n speedLimit(seconds: number, errMsg?: string): Koa.Middleware;\n requestConcurrencyLimiter(url: string): Koa.Middleware;\n}\n\n/** The stored configuration of one daemon node, as the panel reads it. */\nexport interface PanelRemoteNodeConfig {\n ip: string;\n port: number;\n prefix: string;\n remarks: string;\n apiKey: string;\n brand: string;\n remoteMappings: RemoteMappingEntry[];\n /** `ip:port`. */\n readonly addr: string;\n /** The prefix, trimmed and without a trailing slash. */\n readonly canonicalPrefix: string;\n /** `addr` plus `canonicalPrefix` — what a client is told to connect to. */\n readonly fullAddr: string;\n /** The mappings in the `{ addr, prefix }` shape responses use. */\n getConvertedRemoteMappings(): Array<{\n from: { addr: string; prefix: string };\n to: { addr: string; prefix: string };\n }>;\n}\n\n/** One daemon node: its identity, its connection state and its socket. */\nexport interface PanelRemoteNode {\n readonly uuid: string;\n /** Whether the daemon is connected *and* authenticated. */\n readonly available: boolean;\n readonly config: PanelRemoteNodeConfig;\n connect(): void;\n disconnect(): void;\n refreshReconnect(): void;\n setLanguage(language?: string): Promise<unknown>;\n}\n\n/** The set of daemon nodes this panel knows about. */\nexport interface PanelRemoteSubsystem {\n readonly services: ReadonlyMap<string, PanelRemoteNode>;\n getInstance(uuid: string): PanelRemoteNode | undefined;\n count(): { available: number; total: number };\n changeDaemonLanguage(language: string): void;\n registerRemoteService(config: IRemoteService): Promise<PanelRemoteNode>;\n deleteRemoteService(uuid: string): Promise<void>;\n edit(uuid: string, config: IRemoteService): Promise<void>;\n newInstance(config: IRemoteService): Promise<PanelRemoteNode>;\n initConnectLocalhost(key?: string): Promise<PanelRemoteNode | undefined>;\n}\n\n/** One request/response round trip to a daemon over its socket. */\nexport interface PanelRemoteRequest {\n request<T = any>(event: string, data?: any, timeout?: number, force?: boolean): Promise<T>;\n}\n\n/**\n * The daemon nodes: the subsystem that tracks them and the request helper.\n *\n * **Provided by `plugins/node`.** The core declares only the shape it needs and\n * exposes it through this contract, so removing that\n * plugin removes the panel's ability to reach a daemon rather than breaking the\n * build.\n */\nexport interface PanelRemoteService {\n readonly services: PanelRemoteSubsystem;\n readonly Request: new (service?: PanelRemoteNode) => PanelRemoteRequest;\n /** The error a timed-out request throws, so a caller can recognise it. */\n readonly RequestTimeoutError: new (msg: string) => Error;\n}\n\n/**\n * Identity and user capabilities reported by whichever guard is installed.\n * Always present: an unguarded panel reports one anonymous, elevated caller,\n * so no consumer has to branch on whether authentication exists.\n */\nexport interface PanelIdentityService {\n of(requestCtx: Koa.ParameterizedContext): RequestIdentity;\n canAccessInstance(\n requestCtx: Koa.ParameterizedContext,\n daemonId: string,\n instanceUuid: string\n ): boolean;\n readonly accessPolicy: UserAccessPolicy;\n /** Account records, present only while a guard plugin provides them. */\n readonly users: UserRecords | undefined;\n readonly stats: AuthStats;\n}\n\n/** Fields a plugin adds to `GET /api/overview`. */\nexport type PanelOverviewProvider = () =>\n | Record<string, unknown>\n | Promise<Record<string, unknown>>;\n\nexport interface PanelOverviewService {\n /**\n * Contribute extra fields to an overview payload. The owning feature plugin\n * decides which base fields it serves; anything collected purely for display\n * lives in a plugin and disappears with it.\n */\n provide(provider: PanelOverviewProvider): () => void;\n collect(): Promise<Record<string, unknown>>;\n}\n\n/** Operation records are owned by the monitor plugin and shared by feature plugins. */\nexport interface PanelOperationLogger {\n log<T extends keyof OperationLoggerItemPayload>(\n type: T,\n payload: Omit<\n OperationLoggerItemPayload[T],\n \"operation_id\" | \"operation_time\" | \"operation_level\"\n >,\n level?: \"info\" | \"warning\" | \"error\"\n ): string;\n info<T extends keyof OperationLoggerItemPayload>(\n type: T,\n payload: Omit<\n OperationLoggerItemPayload[T],\n \"operation_id\" | \"operation_time\" | \"operation_level\"\n >\n ): string;\n warning<T extends keyof OperationLoggerItemPayload>(\n type: T,\n payload: Omit<\n OperationLoggerItemPayload[T],\n \"operation_id\" | \"operation_time\" | \"operation_level\"\n >\n ): string;\n error<T extends keyof OperationLoggerItemPayload>(\n type: T,\n payload: Omit<\n OperationLoggerItemPayload[T],\n \"operation_id\" | \"operation_time\" | \"operation_level\"\n >\n ): string;\n get(limit?: number): Promise<OperationLoggerItem[]>;\n getByInstance(\n instanceId: string,\n daemonId: string,\n limit?: number\n ): Promise<OperationLoggerItem[]>;\n}\n\n/** What is installed and what is loaded, plus the switch that decides. */\nexport interface PanelPluginsService {\n readonly loaded: readonly LoadedPanelPlugin[];\n /** The manifest the browser fetches to discover frontend entries. */\n frontendManifest(): PanelFrontendPluginEntry[];\n /** Every installed plugin, disabled ones included. */\n inventory(): PanelPluginRecord[];\n /**\n * Turns a plugin on or off: persists the switch in data/plugin-overrides.json and\n * applies it to the running panel. Disabling disposes the backend scope, so\n * its routes, middleware, timers and services go with it.\n */\n setEnabled(id: string, enabled: boolean): Promise<PanelPluginRecord>;\n install(options: {\n name: string;\n version?: string;\n pluginId?: string;\n }): Promise<PanelPluginRecord>;\n /** Unloads and removes an installed panel plugin package. */\n remove(id: string): Promise<void>;\n configure(id: string, config: Record<string, unknown>): Promise<PanelPluginRecord>;\n configuration(id: string): PanelSettingsSchema;\n runExclusive<T>(operation: () => Promise<T>): Promise<T>;\n /**\n * Re-scans the plugin directories: a plugin that has appeared since startup is\n * installed, updated, removed and disabled plugins are reconciled in place.\n */\n reload(): Promise<readonly LoadedPanelPlugin[]>;\n}\n\ndeclare module \"cordis\" {\n interface Context {\n // Shared services supplied by foundation plugins before feature plugins load.\n settings: PanelSettingsService;\n storage: PanelStorageService;\n i18n: PanelI18nService;\n middleware: PanelMiddlewareService;\n roles: typeof ROLE;\n identity: PanelIdentityService;\n // Feature services are provided by their owning plugins.\n settingsForm: PanelSettingsFormService;\n operations: PanelOperationLogger;\n /** Instance details, without account data, provided by the `instance` plugin. */\n instances: {\n getDetails(instances: readonly { instanceUuid: string; daemonId: string }[]): Promise<any[]>;\n /** @deprecated Resolve profiles through the account service instead. */\n getByUuid(uuid: string, targetDaemonId?: string, advanced?: boolean): Promise<any>;\n };\n globals: typeof GlobalVariable;\n overview: PanelOverviewService;\n plugins: PanelPluginsService;\n\n // Provided by plugins. Resolve optional services with `get()` or declare an `inject` dependency.\n /**\n * The Koa application every route in the panel is mounted on. Provided by\n * `plugins/server`, the web server — without it the panel listens on\n * nothing, so almost every plugin injects it.\n */\n koa: PanelKoaService;\n /** Browser-facing Socket.IO transport, provided by `plugins/server`. */\n websocket: PanelWebsocketService;\n /**\n * The daemon nodes. Provided by `plugins/node`, which owns the subsystem —\n * the panel reaches no daemon without it.\n */\n remote: PanelRemoteService;\n /** Request authorization for the whole panel. Provided by `plugins/user`. */\n guard: RequestGuard;\n }\n}\n\n/** The context a panel plugin's `apply()` receives. */\nexport type PanelPluginContext = Context;\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport {\n packagePluginRoots,\n installNpmPlugin,\n uninstallNpmPlugin,\n isEssentialNpmPlugin,\n forgetPluginModules,\n loadPluginModule,\n pluginBackendRevision,\n resolvePluginEntry,\n watchNpmPlugins,\n pluginDirectoryRevision,\n createFrontendPluginMetadata,\n applyPluginOverrides,\n writePluginOverride,\n readPluginOverrides,\n validatePluginCompatibility,\n validatePluginSettings,\n createPluginQueue,\n trackPluginDisposal,\n type PluginState,\n type PluginChangeResult,\n discoverPluginsFromRoots,\n sortPlugins,\n type DiscoverPluginsOptions,\n type DiscoveredPlugin,\n type PluginManifest\n} from \"mcsmanager-common\";\nimport { Logger, type ForkScope } from \"cordis\";\nimport { ctx, type PanelPluginContext, type PanelSettingsSchema } from \"./context\";\n\n/**\n * Turns the plugin directories into cordis plugins.\n *\n * Discovery is shared with the daemon and the frontend build\n * (`mcsmanager-common`); everything past it is cordis: each plugin module is\n * handed to `ctx.plugin()`, which resolves its `inject` list, calls `apply()`\n * with a scope of its own, and undoes every effect that scope registered when it\n * is disposed. A plugin that throws is isolated by cordis and reported through\n * `ctx.logger`, so the panel keeps running.\n */\n\nconst logger = new Logger(\"plugin\");\nconst change = createPluginQueue();\nconst settle = trackPluginDisposal(ctx);\nconst unloading = new Set<string>();\nconst codeRevisions = new Map<string, string>();\nlet watching = false;\n\nconst ENTRY_FIELDS = [\"panel\", \"backend\", \"main\", \"entry\"];\nconst ENTRY_CANDIDATES = [\n \"src/index.js\",\n \"src/index.cjs\",\n \"src/index.mjs\",\n \"src/panel.js\",\n \"src/panel.cjs\",\n \"src/panel.mjs\"\n];\nconst FOUNDATION_PLUGIN_IDS = new Set([\"i18n\", \"storage\", \"runtime\"]);\nconst ESSENTIAL_PLUGIN_IDS = new Set([\"i18n\", \"storage\", \"runtime\", \"console\"]);\nconst RESTART_PLUGIN_IDS = new Set([...ESSENTIAL_PLUGIN_IDS, \"server\", \"config\"]);\n\n/** A panel plugin module, as its backend entry exports it. */\nexport interface PanelPluginModule {\n /** Services the plugin cannot work without. cordis waits for them to appear. */\n inject?: string[] | Record<string, { required: boolean }>;\n apply(ctx: PanelPluginContext, config?: unknown): void | Promise<void>;\n}\n\nexport interface LoadedPanelPlugin {\n packageRoot?: string;\n manifest: PluginManifest;\n directory: string;\n folder: string;\n /** Absent for a plugin that only contributes a frontend. */\n entry?: string;\n backendRevision?: string;\n restartRequired?: boolean;\n fork?: ForkScope;\n error?: Error;\n}\n\n/** One entry of `/plugins/manifest.json`, as the browser consumes it. */\nexport interface PanelFrontendPluginEntry {\n metadata: ReturnType<typeof createFrontendPluginMetadata>;\n directory: string;\n assetDirectory: string;\n entry: string;\n styles: string[];\n revision: string;\n /** Filesystem location; stripped from HTTP responses. */\n frontendDirectory: string;\n}\n\nconst loaded: LoadedPanelPlugin[] = [];\nconst frontendManifestWarnings = new Set<string>();\n\nfunction warnFrontendManifest(message: string, error?: unknown) {\n const detail = error instanceof Error ? `${error.name}:${error.message}` : String(error || \"\");\n const signature = `${message}\\0${detail}`;\n if (frontendManifestWarnings.has(signature)) return;\n frontendManifestWarnings.add(signature);\n if (error === undefined) logger.warn(message);\n else logger.warn(message, error);\n}\n\nfunction discoverPanelPlugins(options: DiscoverPluginsOptions) {\n // Only npm packages are plugins now: the published runtime resolves its own\n // dependencies, and a development checkout resolves the source packages that\n // the side package ships. Legacy data/plugins and market_plugins directories\n // are deliberately not read any more.\n return applyPluginOverrides(\n discoverPluginsFromRoots(packagePluginRoots(\"panel\"), {\n ...options,\n includeDisabled: true\n })\n ).filter((plugin) => options.includeDisabled || plugin.manifest.enabled !== false);\n}\n\n/** Exposes the loader's own registry without pulling it into a plugin bundle. */\nfunction ensurePanelPluginService() {\n if (ctx.get(\"plugins\")) return;\n ctx.provide(\"plugins\", undefined, true);\n ctx.set(\"plugins\", {\n get loaded() {\n return getLoadedPanelPlugins();\n },\n frontendManifest: getPanelFrontendManifest,\n inventory: getPanelPluginInventory,\n setEnabled: setPanelPluginEnabled,\n install: installPanelNpmPlugin,\n remove: removePanelPlugin,\n configure: configurePanelPlugin,\n configuration: (id: string): PanelSettingsSchema => {\n const manifest = findPlugin(id).manifest;\n return {\n id,\n fields: (Array.isArray(manifest.configFields)\n ? manifest.configFields\n : []) as PanelSettingsSchema[\"fields\"],\n values: (manifest.config || {}) as Record<string, unknown>\n };\n },\n runExclusive: change,\n reload: reloadPanelPlugins\n });\n}\n\n/**\n * The plugin object a module exports, whether as named exports or as `default`.\n *\n * Only an object counts: every function has `Function.prototype.apply`, so a\n * module whose default export is a function would otherwise be mistaken for a\n * plugin and then called with the context as `this`.\n */\nfunction toModule(value: any, id: string): PanelPluginModule | undefined {\n for (const candidate of [value, value?.default]) {\n if (typeof candidate !== \"object\" || candidate === null) continue;\n if (typeof candidate.apply === \"function\") return candidate;\n }\n logger.warn(`Panel plugin \"${id}\" must export an apply() function.`);\n return undefined;\n}\n\nfunction forgetCachedModule(entry?: string, directory?: string) {\n if (directory || entry) forgetPluginModules(directory || path.dirname(entry!));\n}\n\n/** Requires one plugin's backend entry and hands it to cordis. */\nasync function installPlugin(plugin: DiscoveredPlugin): Promise<LoadedPanelPlugin> {\n const record: LoadedPanelPlugin = { ...plugin, backendRevision: \"\" };\n if (!plugin.entry) return record;\n try {\n record.backendRevision = backendRevision(plugin);\n validatePluginCompatibility(plugin.manifest.elements);\n const previousRevision = codeRevisions.get(plugin.manifest.id);\n if (\n RESTART_PLUGIN_IDS.has(plugin.manifest.id) &&\n previousRevision &&\n previousRevision !== record.backendRevision\n ) {\n record.restartRequired = true;\n return record;\n }\n codeRevisions.set(plugin.manifest.id, record.backendRevision!);\n const module = toModule(\n await loadPluginModule(\n plugin.entry,\n plugin.packageRoot || plugin.directory,\n record.backendRevision!\n ),\n plugin.manifest.id\n );\n if (!module) throw new Error(`Plugin \"${plugin.manifest.id}\" must export apply().`);\n // Plugins are applied one at a time, in `priority` order, and an async\n // `apply()` is awaited before the next plugin starts.\n //\n // cordis catches a synchronous throw from `apply()` and cancels the scope\n // itself, so the wrapper keeps a copy of it: without that, a plugin that\n // failed on its first line would still be reported as loaded.\n let applied: unknown;\n let thrown: unknown;\n // The manifest id is the plugin's name, so `ctx.name` — which is what\n // appears in its log lines — always matches the package metadata.\n record.fork = ctx.plugin(\n {\n ...module,\n name: plugin.manifest.id,\n apply: (...args) => {\n try {\n return (applied = module.apply(...args));\n } catch (error) {\n thrown = error;\n throw error;\n }\n }\n },\n plugin.manifest.config\n );\n if (thrown) throw thrown;\n await applied;\n logger.info(`Panel plugin loaded: ${plugin.manifest.id}`);\n } catch (error: any) {\n // Failure is atomic: whatever the plugin managed to register before it threw\n // goes with its scope, so a half-loaded plugin never stays behind — a plugin\n // that had already claimed the request guard, in particular.\n record.error = error instanceof Error ? error : new Error(String(error));\n record.fork?.dispose();\n record.fork = undefined;\n logger.error(`Panel plugin failed to load: ${plugin.manifest.id}`, error);\n }\n return record;\n}\n\n/** Discovers, requires and installs every enabled plugin, in manifest order. */\nexport async function loadPanelPlugins(): Promise<readonly LoadedPanelPlugin[]> {\n ensurePanelPluginService();\n const discovered = discoverPanelPlugins({\n entryFields: ENTRY_FIELDS,\n entryCandidates: ENTRY_CANDIDATES,\n onWarning: (message, error) => logger.warn(message, error)\n });\n for (const plugin of discovered) {\n if (loaded.some((record) => record.manifest.id === plugin.manifest.id)) continue;\n loaded.push(await installPlugin(plugin));\n }\n sortPlugins(loaded);\n if (!watching) {\n watching = true;\n watchNpmPlugins(ctx, \"panel\", reloadPanelPlugins);\n }\n return loaded;\n}\n\n/** Reconcile npm installation changes after all effects from the previous revision are disposed. */\nexport function reloadPanelPlugins(): Promise<readonly LoadedPanelPlugin[]> {\n return change(reconcilePlugins);\n}\n\nfunction backendEntry(plugin: DiscoveredPlugin) {\n return resolvePluginEntry(plugin.directory, plugin.manifest, {\n entryFields: ENTRY_FIELDS,\n entryCandidates: ENTRY_CANDIDATES\n });\n}\n\nfunction backendRevision(plugin: DiscoveredPlugin) {\n const entry = backendEntry(plugin);\n return entry ? pluginBackendRevision(entry, plugin.packageRoot || plugin.directory) : \"\";\n}\n\nasync function reconcilePlugins() {\n ensurePanelPluginService();\n const discovered = discoverPanelPlugins({\n entryFields: ENTRY_FIELDS,\n entryCandidates: ENTRY_CANDIDATES,\n onWarning: (message, error) => logger.warn(message, error)\n });\n const next = new Map(discovered.map((plugin) => [plugin.manifest.id, plugin]));\n for (const running of [...loaded].reverse()) {\n const plugin = next.get(running.manifest.id);\n const changed =\n plugin &&\n (running.entry !== backendEntry(plugin) ||\n running.manifest.version !== plugin.manifest.version ||\n running.backendRevision !== backendRevision(plugin) ||\n JSON.stringify(running.manifest.config) !== JSON.stringify(plugin.manifest.config));\n if ((!plugin || changed) && !RESTART_PLUGIN_IDS.has(running.manifest.id)) {\n await removeRunning(running.manifest.id);\n forgetCachedModule(running.entry, running.packageRoot || running.directory);\n }\n }\n for (const plugin of discovered) {\n if (loaded.some((record) => record.manifest.id === plugin.manifest.id)) continue;\n forgetCachedModule(plugin.entry, plugin.packageRoot || plugin.directory);\n loaded.push(await installPlugin(plugin));\n }\n sortPlugins(loaded);\n await settle();\n return loaded;\n}\n\n/** Install or update an npm dependency, retaining the user's enablement on upgrades. */\nexport function installPanelNpmPlugin(options: {\n name: string;\n version?: string;\n pluginId?: string;\n}) {\n return change(async () => {\n const before = new Map(getPanelPluginInventory().map((plugin) => [plugin.id, plugin]));\n const record = await installNpmPlugin({ ...options, side: \"panel\" });\n const previous = before.get(record.pluginId);\n const preference = readPluginOverrides().plugins[record.pluginId]?.enabled;\n // A dual package can already be visible here after the other side installed\n // it. Explicitly installing this side enables it unless the user disabled it.\n if (!previous || (!previous.enabled && preference === undefined))\n writePluginOverride(record.pluginId, { enabled: true });\n await reconcilePlugins();\n return changedRecord(record.pluginId);\n });\n}\n\n/** Loads one of the small foundation plugins before feature plugins start. */\nexport async function loadPanelFoundationPlugin(id = \"i18n\") {\n ensurePanelPluginService();\n if (!FOUNDATION_PLUGIN_IDS.has(id)) {\n throw new Error(`Panel plugin \"${id}\" is not a foundational plugin.`);\n }\n\n const existing = loaded.find((record) => record.manifest.id === id);\n if (existing) return existing;\n\n const plugin = discoverPanelPlugins({\n entryFields: ENTRY_FIELDS,\n entryCandidates: ENTRY_CANDIDATES,\n onWarning: (message, error) => logger.warn(message, error)\n }).find((candidate) => candidate.manifest.id === id);\n if (!plugin?.entry) throw new Error(`Panel foundation plugin not found: ${id}`);\n\n const record = await installPlugin(plugin);\n loaded.push(record);\n sortPlugins(loaded);\n if (record.error) throw record.error;\n const capability = id === \"i18n\" ? \"i18n\" : id === \"storage\" ? \"storage\" : \"settings\";\n if (!record.fork || !ctx.get(capability)) {\n throw new Error(`Panel foundation plugin failed to initialize: ${id}`);\n }\n return record;\n}\n\nexport function getLoadedPanelPlugins(): readonly LoadedPanelPlugin[] {\n return loaded;\n}\n\n/**\n * The frontend entries the browser can load. Read from the installed plugin\n * directories rather than from what this process loaded, because a plugin may\n * ship only a frontend.\n */\nexport function getPanelFrontendManifest(): PanelFrontendPluginEntry[] {\n const entries: PanelFrontendPluginEntry[] = [];\n for (const plugin of discoverPanelPlugins({\n entryFields: [\"frontend\", \"ui\"],\n onWarning: warnFrontendManifest\n })) {\n // A packaged plugin serves its frontend from `<plugin>/frontend`, and only\n // from there: the manifest must never point the browser at plugin sources.\n if (!plugin.entry || !/^[a-zA-Z0-9_-]+$/.test(plugin.folder)) continue;\n const frontendDirectory = path.resolve(plugin.directory, \"frontend\");\n const inFrontendDirectory = (target: string) =>\n target.startsWith(`${frontendDirectory}${path.sep}`) && fs.existsSync(target);\n if (!inFrontendDirectory(plugin.entry)) continue;\n\n const revision = pluginDirectoryRevision(frontendDirectory);\n const toUrl = (target: string) =>\n `./${plugin.folder}@${revision}/${path\n .relative(plugin.directory, target)\n .split(path.sep)\n .join(\"/\")}`;\n const styles = Array.isArray(plugin.manifest.styles)\n ? plugin.manifest.styles\n .filter((style: unknown): style is string => typeof style === \"string\")\n .map((style) => path.resolve(plugin.directory, style))\n .filter(inFrontendDirectory)\n .map(toUrl)\n : [];\n entries.push({\n // Backend configuration may contain credentials. Browser config is explicit.\n metadata: createFrontendPluginMetadata(plugin.manifest, {\n restartRequired:\n pluginState(\n plugin,\n loaded.find((item) => item.manifest.id === plugin.manifest.id)\n ) === \"restart-required\"\n }),\n directory: plugin.manifest.id,\n assetDirectory: plugin.folder,\n entry: toUrl(plugin.entry),\n revision,\n frontendDirectory,\n styles\n });\n }\n return entries;\n}\n\n/** One installed plugin, as the plugin manager page lists it. */\nexport interface PanelPluginRecord {\n state: PluginState;\n result?: PluginChangeResult;\n id: string;\n packageName?: string;\n version?: string;\n description?: string;\n priority?: number;\n /** Effective enablement after applying the user override. */\n enabled: boolean;\n /** Declares a two-sided plugin whose other half must exist on the daemon. */\n dual: boolean;\n /** Which halves the manifest declares. Neither has to have been built yet. */\n sides: { backend: boolean; frontend: boolean };\n /** Whether the backend half is running in this process right now. */\n running: boolean;\n /** Why the backend half is not running, when it should be. */\n error?: string;\n /** Whether this npm dependency can be uninstalled from the running host. */\n removable: boolean;\n}\n\nconst FRONTEND_FIELDS = [\"frontend\", \"ui\"];\n\n/**\n * Every installed plugin, disabled ones included — a disabled plugin still has\n * to be listed for the switch to turn it back on. Entry resolution is skipped on\n * purpose: the inventory describes what is installed, not what compiled.\n */\nexport function getPanelPluginInventory(): PanelPluginRecord[] {\n return discoverPanelPlugins({\n entryFields: [],\n includeDisabled: true,\n onWarning: (message, error) => logger.warn(message, error)\n }).map((plugin) => {\n const running = loaded.find((item) => item.manifest.id === plugin.manifest.id);\n const has = (fields: string[]) =>\n fields.some((field) => typeof plugin.manifest[field] === \"string\");\n return {\n id: plugin.manifest.id,\n packageName: plugin.packageName,\n version: plugin.manifest.version,\n description: plugin.manifest.description,\n priority: plugin.manifest.priority,\n enabled: plugin.manifest.enabled !== false,\n dual: plugin.manifest.dual === true,\n sides: { backend: has(ENTRY_FIELDS), frontend: has(FRONTEND_FIELDS) },\n running: pluginState(plugin, running) === \"active\",\n state: pluginState(plugin, running),\n removable: !!plugin.packageRoot && !isEssentialNpmPlugin(plugin.manifest.id),\n error:\n running?.error?.message ||\n running?.fork?.runtime.error?.message ||\n running?.fork?.error?.message\n };\n });\n}\n\n/** Persist the user override, then serialize disposal/activation and report both outcomes. */\nexport function setPanelPluginEnabled(id: string, enabled: boolean): Promise<PanelPluginRecord> {\n return change(async () => {\n if (typeof enabled !== \"boolean\") throw new Error(\"Invalid plugin enablement.\");\n if (ESSENTIAL_PLUGIN_IDS.has(id) && !enabled)\n throw new Error(`The essential plugin \"${id}\" cannot be disabled.`);\n const plugin = findPlugin(id);\n writePluginOverride(id, { enabled });\n let failure: string | undefined;\n try {\n const existing = loaded.find((item) => item.manifest.id === id);\n if (!enabled || existing?.error || existing?.fork?.runtime.status === 3)\n await removeRunning(id);\n if (enabled && !loaded.some((item) => item.manifest.id === id)) {\n forgetCachedModule(plugin.entry, plugin.packageRoot || plugin.directory);\n loaded.push(\n await installPlugin({ ...plugin, manifest: { ...plugin.manifest, enabled: true } })\n );\n sortPlugins(loaded);\n }\n await settle();\n } catch (error) {\n failure = String(error);\n }\n return changedRecord(id, failure);\n });\n}\n\n/** Dispose the running scope before npm removes the dependency that owns its files. */\nexport function removePanelPlugin(id: string): Promise<void> {\n return change(async () => {\n const plugin = findPlugin(id);\n if (!plugin.packageRoot) throw new Error(\"Source plugins cannot be removed.\");\n if (isEssentialNpmPlugin(id))\n throw new Error(`The essential plugin \"${id}\" cannot be uninstalled.`);\n await removeRunning(id);\n forgetCachedModule(plugin.entry, plugin.packageRoot);\n try {\n await uninstallNpmPlugin(id);\n } catch (error) {\n await reconcilePlugins();\n throw error;\n }\n codeRevisions.delete(id);\n await reconcilePlugins();\n });\n}\n\nfunction findPlugin(id: string) {\n const plugin = discoverPanelPlugins({\n entryFields: ENTRY_FIELDS,\n entryCandidates: ENTRY_CANDIDATES,\n includeDisabled: true\n }).find((item) => item.manifest.id === id);\n if (!plugin) throw new Error(`Plugin not found: ${id}`);\n return plugin;\n}\n\nasync function removeRunning(id: string) {\n const index = loaded.findIndex((item) => item.manifest.id === id);\n if (index < 0) return;\n const record = loaded[index];\n unloading.add(id);\n try {\n record.fork?.dispose();\n await settle();\n } finally {\n loaded.splice(loaded.indexOf(record), 1);\n unloading.delete(id);\n }\n}\n\nfunction pluginState(plugin: DiscoveredPlugin, running?: LoadedPanelPlugin): PluginState {\n if (unloading.has(plugin.manifest.id)) return \"unloading\";\n if (plugin.manifest.enabled === false) return \"disabled\";\n if (running?.error || running?.fork?.error || running?.fork?.runtime.error) return \"failed\";\n if (!running || running.restartRequired) return \"restart-required\";\n if (!running.entry) return \"active\";\n if (\n running.entry !== backendEntry(plugin) ||\n running.manifest.version !== plugin.manifest.version ||\n running.backendRevision !== backendRevision(plugin) ||\n JSON.stringify(running.manifest.config) !== JSON.stringify(plugin.manifest.config)\n )\n return \"restart-required\";\n const fork = running.fork;\n if (!fork) return \"failed\";\n const state = fork.runtime.status === 2 ? fork.status : fork.runtime.status;\n return (\n ([\"pending\", \"loading\", \"active\", \"failed\", \"failed\"] as PluginState[])[state] || \"pending\"\n );\n}\n\nfunction changedRecord(id: string, failure?: string): PanelPluginRecord {\n const record = getPanelPluginInventory().find((item) => item.id === id)!;\n const application =\n failure || record.state === \"failed\"\n ? \"failed\"\n : record.state === \"restart-required\"\n ? \"restart-required\"\n : [\"pending\", \"loading\", \"unloading\"].includes(record.state)\n ? \"pending\"\n : \"applied\";\n return { ...record, result: { saved: true, application, error: failure || record.error } };\n}\n\n/** Config replaces the package default as one user-owned layer. Validate before saving. */\nexport function configurePanelPlugin(\n id: string,\n config: Record<string, unknown>\n): Promise<PanelPluginRecord> {\n return change(async () => {\n const plugin = findPlugin(id);\n if (!config || typeof config !== \"object\" || Array.isArray(config))\n throw new Error(\"Plugin config must be an object.\");\n validatePluginCompatibility(plugin.manifest.elements);\n const running = loaded.find((item) => item.manifest.id === id);\n const replaced =\n plugin.entry && codeRevisions.has(id) && codeRevisions.get(id) !== backendRevision(plugin);\n if (!replaced && typeof running?.fork?.runtime.schema === \"function\")\n running.fork.runtime.schema(config);\n if (Array.isArray(plugin.manifest.configFields))\n validatePluginSettings(plugin.manifest.configFields, config);\n writePluginOverride(id, { config });\n // Core network/storage configuration is applied on restart; never tear down the reply path.\n if (RESTART_PLUGIN_IDS.has(id)) {\n return {\n ...getPanelPluginInventory().find((item) => item.id === id)!,\n result: { saved: true, application: \"restart-required\" }\n };\n }\n let failure: string | undefined;\n try {\n await removeRunning(id);\n forgetCachedModule(plugin.entry, plugin.packageRoot || plugin.directory);\n if (plugin.manifest.enabled !== false) {\n loaded.push(await installPlugin({ ...plugin, manifest: { ...plugin.manifest, config } }));\n sortPlugins(loaded);\n await settle();\n }\n } catch (error) {\n failure = String(error);\n }\n return changedRecord(id, failure);\n });\n}\n","module.exports = require(\"crypto\");","module.exports = require(\"fs-extra\");","module.exports = require(\"os-utils\");","module.exports = require(\"cordis\");","module.exports = require(\"buffer\");","module.exports = require(\"child_process\");","module.exports = require(\"events\");","module.exports = require(\"fs\");","module.exports = require(\"module\");","module.exports = require(\"net\");","module.exports = require(\"node:crypto\");","module.exports = require(\"node:fs\");","module.exports = require(\"node:module\");","module.exports = require(\"node:os\");","module.exports = require(\"node:path\");","module.exports = require(\"node:url\");","module.exports = require(\"os\");","module.exports = require(\"path\");","module.exports = require(\"process\");","module.exports = require(\"stream\");","module.exports = require(\"string_decoder\");","const fs = require(\"node:fs\");\nconst path = require(\"node:path\");\n\nconst repository = path.resolve(__dirname, \"..\");\nconst coreDirectory = (side, root = repository) => path.join(root, \"core\", side);\nconst developmentDirectory = (side, root = repository) => path.join(root, \"data\", side);\n\n/** Source packages use the same per-side metadata as their published npm packages. */\nfunction sourcePlugins(side, root = repository) {\n if (![\"panel\", \"daemon\"].includes(side)) throw new Error(`Unknown plugin side: ${side}`);\n const directory = path.join(root, \"plugins\");\n if (!fs.existsSync(directory)) return [];\n const plugins = [];\n for (const item of fs.readdirSync(directory, { withFileTypes: true })) {\n if (!item.isDirectory()) continue;\n const packageRoot = path.join(directory, item.name);\n const filename = path.join(packageRoot, \"package.json\");\n if (!fs.existsSync(filename)) continue;\n const metadata = JSON.parse(fs.readFileSync(filename, \"utf8\"));\n const definition = metadata.elementspanel?.[side];\n if (!definition) continue;\n const id = metadata.elementspanel.id;\n if (typeof id !== \"string\" || typeof definition.directory !== \"string\")\n throw new Error(`Invalid ${side} plugin metadata: ${filename}`);\n const pluginDirectory = path.resolve(packageRoot, definition.directory);\n const relative = path.relative(packageRoot, pluginDirectory);\n if (\n !relative ||\n relative === \"..\" ||\n relative.startsWith(`..${path.sep}`) ||\n path.isAbsolute(relative)\n )\n throw new Error(`Plugin directory must stay inside its package: ${filename}`);\n if (!fs.existsSync(path.join(pluginDirectory, \"plugin.json\")))\n throw new Error(`Missing ${side} plugin manifest: ${pluginDirectory}`);\n plugins.push({\n id,\n folder: definition.folder || id,\n directory: pluginDirectory,\n packageRoot,\n metadata\n });\n }\n return plugins.sort((a, b) => a.id.localeCompare(b.id));\n}\n\nmodule.exports = { repository, coreDirectory, developmentDirectory, sourcePlugins };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import { ctx } from \"./app/plugin/context\";\nimport { loadPanelFoundationPlugin, loadPanelPlugins } from \"./app/plugin/loader\";\n\nasync function main() {\n await loadPanelFoundationPlugin(\"i18n\");\n await loadPanelFoundationPlugin(\"storage\");\n await loadPanelFoundationPlugin(\"runtime\");\n await loadPanelPlugins();\n await ctx.start();\n}\n\nmain().catch(async (error) => {\n ctx.logger.error(\"Plugin startup failed:\", error);\n await ctx.stop();\n process.exit(1);\n});\n"],"names":[],"sourceRoot":""}