nolo-cli 0.11.0 → 0.12.0-alpha.10

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 (123) hide show
  1. package/{_executeModel-ZEDPX6OF.js → _executeModel-4F7VZR5U.js} +52 -50
  2. package/{action-AA4IJ5K2.js → action-OTOWUMPW.js} +8 -9
  3. package/{addContentAction-QYVO4SYP.js → addContentAction-JGBUVR7K.js} +7 -9
  4. package/{addDialogAgentAction-WVVKT5WQ.js → addDialogAgentAction-V6CL2UCF.js} +9 -10
  5. package/{agentDeleteCommand-RDPGYIWF.js → agentDeleteCommand-MMRSG6AB.js} +39 -28
  6. package/{agentEmailCommands-2HJJKS5F.js → agentEmailCommands-YFVKOGM7.js} +65 -62
  7. package/{agentListCommands-HFEVV3ZW.js → agentListCommands-2PZHIQ3I.js} +128 -31
  8. package/{agentMachineCommands-25ZOENJU.js → agentMachineCommands-55UUZNHF.js} +38 -26
  9. package/{agentPullCommand-GOL2S4W2.js → agentPullCommand-KRBRIFIY.js} +7 -7
  10. package/{agentRecordCommands-GTCOAM3L.js → agentRecordCommands-BTP3OAPL.js} +57 -54
  11. package/{agentRunCommand-YBS3JDLD.js → agentRunCommand-AA4QLRQZ.js} +60 -59
  12. package/{agentRunControl-K4VKNEHF.js → agentRunControl-IX4F5W2C.js} +3 -3
  13. package/{agentRuntimeLocal-UQBMQI2M.js → agentRuntimeLocal-QDJCBXM2.js} +31 -15
  14. package/{agentSlice-6EKOBCCS.js → agentSlice-6JAJOU3X.js} +8 -9
  15. package/{authCommand-O2OWACN4.js → authCommand-DMW336GT.js} +15 -15
  16. package/{authCommands-H7365TZP.js → authCommands-GH5T6RYV.js} +6 -6
  17. package/{chunk-E4HNJSHC.js → chunk-2BVGERJ2.js} +81 -19
  18. package/{chunk-LP65VRCI.js → chunk-3MI5LDDU.js} +6 -6
  19. package/{chunk-OPZYGHUC.js → chunk-3WGLLTK4.js} +59 -1
  20. package/{chunk-KJR5KAUQ.js → chunk-3XF6LCCN.js} +20 -7
  21. package/{chunk-PXZAAB4L.js → chunk-4LG74DRG.js} +4 -4
  22. package/{chunk-2FTTDCD4.js → chunk-4ON5AV72.js} +2 -1
  23. package/{chunk-IWX4UW2E.js → chunk-524BDL33.js} +89 -8
  24. package/{chunk-ISNCLGUZ.js → chunk-5NBHQD4D.js} +4 -3
  25. package/{chunk-ZPRK73XY.js → chunk-5S4SWV5G.js} +51 -38
  26. package/{chunk-EVZKZF32.js → chunk-5V524MHX.js} +195 -78
  27. package/{chunk-CKOJQDKR.js → chunk-7JJCGV7N.js} +146 -3
  28. package/{chunk-NEM67FX7.js → chunk-ARSC56DC.js} +1 -1
  29. package/{chunk-AFON4QUU.js → chunk-AS3ZQ3O2.js} +19 -28
  30. package/{chunk-4SOKXIW4.js → chunk-B4KT7RN2.js} +10 -13
  31. package/chunk-BYXBJQAS.js +0 -0
  32. package/{chunk-PXQN7IBQ.js → chunk-C3BFP57W.js} +95 -2
  33. package/{chunk-AEZAORLG.js → chunk-CGDQDXKZ.js} +5 -5
  34. package/{chunk-MQI77IRB.js → chunk-DPFWKRHG.js} +2 -2
  35. package/{chunk-TACHTH5D.js → chunk-EIMX5ER5.js} +18 -18
  36. package/{chunk-5MOUAAMK.js → chunk-FSUZIGIG.js} +197 -2578
  37. package/{chunk-FXXSGWAJ.js → chunk-H5Y2H2N6.js} +1 -1
  38. package/chunk-IKXL2HZ3.js +70 -0
  39. package/{chunk-QNMFBBZK.js → chunk-IVAOVLM7.js} +1 -1
  40. package/chunk-JFANOO7I.js +2274 -0
  41. package/{chunk-YPRZSPF3.js → chunk-JKWWVF2I.js} +1 -1
  42. package/{chunk-3NSIQZZ6.js → chunk-JU7J7EAV.js} +45 -45
  43. package/{chunk-X2S7JTIG.js → chunk-KWBH4RAL.js} +1280 -137
  44. package/{chunk-OUI3ZHYD.js → chunk-LUKQQJFL.js} +39 -2
  45. package/{chunk-BX6U3ETE.js → chunk-MG6BVV3T.js} +320 -102
  46. package/{chunk-L53FGHA4.js → chunk-MQRZ5QUH.js} +1 -1
  47. package/{chunk-2W2VYVI5.js → chunk-MZHSAPZP.js} +675 -177
  48. package/{chunk-YOCHZD7D.js → chunk-NCGFB7NN.js} +5 -3
  49. package/{chunk-DWGAEFJL.js → chunk-O4FOPRCP.js} +1 -1
  50. package/chunk-OGGHETUE.js +4900 -0
  51. package/{chunk-PNEW2Z3T.js → chunk-OHEKYYJF.js} +7 -7
  52. package/chunk-OOIN7HSO.js +146 -0
  53. package/{chunk-SV5MWASH.js → chunk-OPM2DE2J.js} +12 -12
  54. package/{chunk-5OIFWVX7.js → chunk-QJSTNKJY.js} +1 -1
  55. package/{chunk-C4FTUXVF.js → chunk-QLUFR47U.js} +11 -1
  56. package/{chunk-LAX2JSTX.js → chunk-QUHUVG6Y.js} +20 -2
  57. package/{chunk-D6OQHXVG.js → chunk-RQSOAMPJ.js} +22 -6
  58. package/{chunk-ZEYDOXHF.js → chunk-RUGEW4P7.js} +1515 -884
  59. package/{chunk-GBDSZATH.js → chunk-RWO5DGXI.js} +3 -3
  60. package/{chunk-S3GS2PRL.js → chunk-TA7VKOHU.js} +613 -70
  61. package/{chunk-XYZA7S7V.js → chunk-TQYYGE6G.js} +6 -6
  62. package/{chunk-YTBMA7NO.js → chunk-TYPHUVK5.js} +70 -8
  63. package/{chunk-4ZDM73SD.js → chunk-V2J635L5.js} +1 -1
  64. package/{chunk-C2MDQQ4O.js → chunk-VBSWHE5W.js} +1 -1
  65. package/{chunk-O26GI2JP.js → chunk-VKG4HXYV.js} +39 -8
  66. package/{chunk-IPYUUY4E.js → chunk-WPHL6ALY.js} +1 -1
  67. package/{chunk-7D3JY6C2.js → chunk-WVTBAALN.js} +64 -5
  68. package/{chunk-XFOLQLDN.js → chunk-XHQWJUW4.js} +2 -2
  69. package/{chunk-Q3UKJVU4.js → chunk-Y5P3ZRGC.js} +10 -10
  70. package/{chunk-KQQVGRA3.js → chunk-YUMYYXPI.js} +53 -183
  71. package/cliEnvHelpers-VYC2OPTB.js +30 -0
  72. package/{createAgentAutomationAction-LTI5QU35.js → createAgentAutomationAction-4NY4JLOK.js} +26 -26
  73. package/{createDialogAction-OJJ7L3L3.js → createDialogAction-I5WUWFJ6.js} +26 -26
  74. package/{createPageAction-5MXWVRGY.js → createPageAction-HFTIQ7TW.js} +26 -26
  75. package/{dbSlice-RQFQQVHT.js → dbSlice-J4PUZ6Y5.js} +6 -7
  76. package/{deleteFile-7XP5BGC7.js → deleteFile-M7UNIUOO.js} +4 -4
  77. package/{dialogCommands-JTJ3RPPW.js → dialogCommands-SVXRJFZS.js} +34 -23
  78. package/{dialogSlice-OWROKURJ.js → dialogSlice-35LA3ZRG.js} +26 -26
  79. package/{docCreateCommands-WJBEW2V7.js → docCreateCommands-Z7RIAYKQ.js} +34 -23
  80. package/{docDeleteCommands-BVEHJOY5.js → docDeleteCommands-NEYHUVZF.js} +35 -25
  81. package/{docReadCommands-NEWOZIJV.js → docReadCommands-I4US2SDE.js} +34 -23
  82. package/{docStore-3DXRYBMD.js → docStore-3CP2IO6M.js} +25 -25
  83. package/{docUpdateCommands-C7WHT7UU.js → docUpdateCommands-UU5HQBRP.js} +34 -23
  84. package/fetchMessages-KTNM7QAR.js +1 -1
  85. package/{getPricing-3E6UNPKL.js → getPricing-UGDJHI7M.js} +7 -3
  86. package/{handleSendMessageAction-B5PRR7BE.js → handleSendMessageAction-FWTLQGOZ.js} +30 -30
  87. package/index.js +77 -76
  88. package/{localDialogRead-YSKFFRTT.js → localDialogRead-2VRI24F4.js} +1 -1
  89. package/{machineCommands-IIIREAEK.js → machineCommands-STHZKBDJ.js} +64 -61
  90. package/{machineWsRunDispatch-3SIU6ILW.js → machineWsRunDispatch-7YHT4TPT.js} +56 -53
  91. package/{memoryCommands-O4MIPIWQ.js → memoryCommands-AFMES3LN.js} +5 -5
  92. package/{models-4OPOOLFS.js → models-LSCRJJ6P.js} +2 -2
  93. package/package.json +1 -1
  94. package/{read-QJNKRROM.js → read-2MIMRBZ2.js} +4 -4
  95. package/{readDocTool-H6X6KO6X.js → readDocTool-QHVGQHUJ.js} +1 -1
  96. package/{readlineWorkspace-HGP3I3OC.js → readlineWorkspace-OMRWYMB6.js} +1279 -716
  97. package/{removeDialogAgentAction-TCT35SOF.js → removeDialogAgentAction-XUZYQBV4.js} +13 -13
  98. package/{runAgentClientLoop-EFM4PTVI.js → runAgentClientLoop-FP2K33ZO.js} +47 -46
  99. package/{runtimeDoctorCommands-ID43Z7VX.js → runtimeDoctorCommands-QNF3J3UV.js} +6 -6
  100. package/{setDialogExtraReferencesAction-CGYLZMFH.js → setDialogExtraReferencesAction-PTAIFKGM.js} +9 -10
  101. package/{setPrimaryDialogAgentAction-F6BFQDJU.js → setPrimaryDialogAgentAction-HRFTDB44.js} +13 -13
  102. package/{settingSlice-2I5HMG47.js → settingSlice-VGRJUSE5.js} +7 -8
  103. package/{skillDiscovery-UGSQGX2U.js → skillDiscovery-6M2BZUFN.js} +3 -3
  104. package/{spaceCommands-MT7BWCIL.js → spaceCommands-GN73BCOB.js} +38 -29
  105. package/{spaceSlice-BS5TSW3W.js → spaceSlice-WTFNKOVA.js} +30 -26
  106. package/{streamAgentChatTurn-I3VBFNR3.js → streamAgentChatTurn-HBAQQVNK.js} +442 -130
  107. package/{toolApiClient-C7P7YSE4.js → toolApiClient-QI3YBNWB.js} +2 -2
  108. package/{tools-XSD2BOEN.js → tools-TPQYTLQZ.js} +34 -33
  109. package/{tuiSummaryLlmCaller-32NRHTT2.js → tuiSummaryLlmCaller-XDC7WG4K.js} +11 -7
  110. package/{updateCommands-VOSPKXFF.js → updateCommands-XZDOOYFH.js} +13 -5
  111. package/{updateDialogTitleAction-7FYNJOGP.js → updateDialogTitleAction-AWXNPUQJ.js} +30 -29
  112. package/chunk-AZPCASRE.js +0 -36
  113. package/chunk-BBYVOSU2.js +0 -792
  114. package/chunk-DCOA4QSN.js +0 -105
  115. package/chunk-UAD2WT54.js +0 -64
  116. package/{chunk-JK7VW2FN.js → chunk-5MIDPSSK.js} +3 -3
  117. package/{chunk-5CS33IBL.js → chunk-PDL2AV3E.js} +3 -3
  118. package/{chunk-5MMZUWSG.js → chunk-TOILAPLH.js} +5 -5
  119. package/{chunk-OOM6SJNR.js → chunk-TSUJOM6N.js} +6 -6
  120. package/{db-6QED3ZVO.js → db-HCJ5PRB5.js} +3 -3
  121. package/{offlineMarxistsAgentCommand-BCPJITJL.js → offlineMarxistsAgentCommand-5OOWZLJI.js} +3 -3
  122. package/{tableCommands-M3DJUETS.js → tableCommands-E4SQWDOX.js} +6 -6
  123. package/{understanding-ZOESBLF3.js → understanding-3CUQQ6SV.js} +3 -3
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  BUILTIN_SUMMARY_LLM_CONFIG,
3
3
  buildBuiltinSummaryContent
4
- } from "./chunk-4ZDM73SD.js";
4
+ } from "./chunk-V2J635L5.js";
5
5
  import {
6
6
  authRoutes
7
7
  } from "./chunk-MRC4Q34M.js";
@@ -15,10 +15,10 @@ import {
15
15
  import {
16
16
  deleteServerSyncedCredential,
17
17
  runLlm
18
- } from "./chunk-Q3UKJVU4.js";
18
+ } from "./chunk-Y5P3ZRGC.js";
19
19
  import {
20
20
  cleanupCliSessionForDialog
21
- } from "./chunk-GBDSZATH.js";
21
+ } from "./chunk-RWO5DGXI.js";
22
22
  import {
23
23
  getDialogAgentIds,
24
24
  getPrimaryDialogAgentId
@@ -26,56 +26,79 @@ import {
26
26
  import {
27
27
  require_date_fns
28
28
  } from "./chunk-M76ECQRD.js";
29
+ import {
30
+ DEFAULT_CONTEXT_WINDOW,
31
+ getModelContextWindow,
32
+ getModelInfo,
33
+ normalizeAssistantContentBuffer,
34
+ planCompression,
35
+ serializeMessageContent
36
+ } from "./chunk-JFANOO7I.js";
37
+ import {
38
+ findModelConfig,
39
+ getModelConfig
40
+ } from "./chunk-OGGHETUE.js";
41
+ import {
42
+ createFileCredentialBroker
43
+ } from "./chunk-PDL2AV3E.js";
44
+ import {
45
+ extractCustomId,
46
+ extractUserId
47
+ } from "./chunk-DFFIZ25G.js";
48
+ import {
49
+ abortActiveControllers,
50
+ addPageReferenceToRuntime,
51
+ applyClearDialogStateRuntime,
52
+ applyUpdateTokensFulfilled,
53
+ clearActiveControllers,
54
+ clearPendingAttachments,
55
+ clearPendingUserInputQueue,
56
+ deleteDialogRuntime,
57
+ getActiveDialogKey,
58
+ getDialogRuntimeTokens,
59
+ require_react,
60
+ resetDialogRuntimeSessionState,
61
+ selectCurrentDialogKey,
62
+ setActiveDialogKey,
63
+ setDialogConfigError
64
+ } from "./chunk-3ASDTTEI.js";
65
+ import {
66
+ toErrorMessage
67
+ } from "./chunk-HNMXYYJR.js";
68
+ import {
69
+ fetchMessages
70
+ } from "./chunk-SOTZ6RDN.js";
29
71
  import {
30
72
  isSystemAdmin,
31
73
  nolotusId,
32
74
  selectRemoteServer,
33
75
  selectRemoteServers,
34
76
  selectRemoteSyncServers
35
- } from "./chunk-3NSIQZZ6.js";
77
+ } from "./chunk-JU7J7EAV.js";
36
78
  import {
37
- fetchMessages
38
- } from "./chunk-SOTZ6RDN.js";
79
+ asRecordOrEmpty
80
+ } from "./chunk-KX6YBIHG.js";
39
81
  import {
40
82
  UNCATEGORIZED_ID,
41
83
  addContentAction,
42
84
  checkSpaceMembership,
43
- localSpaceAuthorityPatchStamp
44
- } from "./chunk-7D3JY6C2.js";
45
- import {
46
85
  createSpaceKey,
86
+ localSpaceAuthorityPatchStamp,
47
87
  normalizeSpaceId
48
- } from "./chunk-UAD2WT54.js";
88
+ } from "./chunk-WVTBAALN.js";
49
89
  import {
50
90
  patch,
51
91
  read,
52
92
  readAndWait,
53
93
  remove,
94
+ resolveFileCategory,
54
95
  selectById,
55
96
  selectEntities,
56
97
  toTimestampMs,
57
- upload,
58
98
  uploadFileAction,
59
99
  upsertSSREntity,
60
100
  write
61
- } from "./chunk-O26GI2JP.js";
62
- import {
63
- resolveFileCategory
64
- } from "./chunk-AZPCASRE.js";
65
- import {
66
- ALL_MODELS
67
- } from "./chunk-DCOA4QSN.js";
68
- import {
69
- MODEL_LOOKUP_MAP,
70
- findModelConfig,
71
- getModelConfig
72
- } from "./chunk-BBYVOSU2.js";
73
- import {
74
- createFileCredentialBroker
75
- } from "./chunk-5CS33IBL.js";
76
- import {
77
- asRecordOrEmpty
78
- } from "./chunk-KX6YBIHG.js";
101
+ } from "./chunk-VKG4HXYV.js";
79
102
  import {
80
103
  DB_PREFIX,
81
104
  SEPARATOR,
@@ -108,36 +131,12 @@ import {
108
131
  import {
109
132
  asOptionalFiniteNumber
110
133
  } from "./chunk-WWC7I6TA.js";
111
- import {
112
- extractCustomId,
113
- extractUserId
114
- } from "./chunk-DFFIZ25G.js";
115
- import {
116
- abortActiveControllers,
117
- addPageReferenceToRuntime,
118
- applyClearDialogStateRuntime,
119
- applyUpdateTokensFulfilled,
120
- clearActiveControllers,
121
- clearPendingAttachments,
122
- clearPendingUserInputQueue,
123
- deleteDialogRuntime,
124
- getActiveDialogKey,
125
- getDialogRuntimeTokens,
126
- require_react,
127
- resetDialogRuntimeSessionState,
128
- selectCurrentDialogKey,
129
- setActiveDialogKey,
130
- setDialogConfigError
131
- } from "./chunk-3ASDTTEI.js";
132
134
  import {
133
135
  asTrimmedLowercaseString
134
136
  } from "./chunk-QSJ3HFEF.js";
135
- import {
136
- toErrorMessage
137
- } from "./chunk-HNMXYYJR.js";
138
137
  import {
139
138
  readAction
140
- } from "./chunk-XFOLQLDN.js";
139
+ } from "./chunk-XHQWJUW4.js";
141
140
  import {
142
141
  DEVICE_LOCAL_OWNER_ID,
143
142
  asyncThunkCreator,
@@ -158,7 +157,7 @@ import {
158
157
  selectIdentityToken,
159
158
  selectIdentityUserId,
160
159
  selectRuntimeSnapshot
161
- } from "./chunk-OOM6SJNR.js";
160
+ } from "./chunk-TSUJOM6N.js";
162
161
  import {
163
162
  createClientLogger,
164
163
  fetchFromServer,
@@ -172,22 +171,19 @@ import {
172
171
  isTombstoneRecord,
173
172
  shouldReplaceWithNextRecord
174
173
  } from "./chunk-GBRG75BQ.js";
174
+ import {
175
+ isRecord
176
+ } from "./chunk-KUG52IAP.js";
175
177
  import {
176
178
  asTrimmedString
177
179
  } from "./chunk-3EUW3WEO.js";
178
180
  import {
179
181
  asOptionalPositiveFiniteNumber
180
182
  } from "./chunk-U6VC4MU4.js";
181
- import {
182
- isRecord
183
- } from "./chunk-KUG52IAP.js";
184
183
  import {
185
184
  API_ENDPOINTS,
186
185
  API_VERSION
187
186
  } from "./chunk-LCBAMY2M.js";
188
- import {
189
- normalizeServerOrigin
190
- } from "./chunk-CF7PE763.js";
191
187
  import {
192
188
  asOptionalTrimmedString
193
189
  } from "./chunk-G3SUCT4W.js";
@@ -855,1822 +851,63 @@ var require_react_jsx_runtime_development = __commonJS({
855
851
  );
856
852
  }
857
853
  function validateChildKeys(node) {
858
- isValidElement2(node) ? node._store && (node._store.validated = 1) : "object" === typeof node && null !== node && node.$$typeof === REACT_LAZY_TYPE && ("fulfilled" === node._payload.status ? isValidElement2(node._payload.value) && node._payload.value._store && (node._payload.value._store.validated = 1) : node._store && (node._store.validated = 1));
859
- }
860
- function isValidElement2(object) {
861
- return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
862
- }
863
- var React = require_react(), REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, hasOwnProperty = Object.prototype.hasOwnProperty, isArrayImpl = Array.isArray, createTask = console.createTask ? console.createTask : function() {
864
- return null;
865
- };
866
- React = {
867
- react_stack_bottom_frame: function(callStackForError) {
868
- return callStackForError();
869
- }
870
- };
871
- var specialPropKeyWarningShown;
872
- var didWarnAboutElementRef = {};
873
- var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(
874
- React,
875
- UnknownOwner
876
- )();
877
- var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
878
- var didWarnAboutKeySpread = {};
879
- exports.Fragment = REACT_FRAGMENT_TYPE;
880
- exports.jsx = function(type, config, maybeKey) {
881
- var trackActualOwner = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
882
- return jsxDEVImpl(
883
- type,
884
- config,
885
- maybeKey,
886
- false,
887
- trackActualOwner ? Error("react-stack-top-frame") : unknownOwnerDebugStack,
888
- trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
889
- );
890
- };
891
- exports.jsxs = function(type, config, maybeKey) {
892
- var trackActualOwner = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
893
- return jsxDEVImpl(
894
- type,
895
- config,
896
- maybeKey,
897
- true,
898
- trackActualOwner ? Error("react-stack-top-frame") : unknownOwnerDebugStack,
899
- trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
900
- );
901
- };
902
- }();
903
- }
904
- });
905
-
906
- // node_modules/react/jsx-runtime.js
907
- var require_jsx_runtime = __commonJS({
908
- "node_modules/react/jsx-runtime.js"(exports, module) {
909
- "use strict";
910
- if (process.env.NODE_ENV === "production") {
911
- module.exports = require_react_jsx_runtime_production();
912
- } else {
913
- module.exports = require_react_jsx_runtime_development();
914
- }
915
- }
916
- });
917
-
918
- // node_modules/browser-image-compression/dist/browser-image-compression.js
919
- var require_browser_image_compression = __commonJS({
920
- "node_modules/browser-image-compression/dist/browser-image-compression.js"(exports, module) {
921
- !function(e, t2) {
922
- "object" == typeof exports && "undefined" != typeof module ? module.exports = t2() : "function" == typeof define && define.amd ? define(t2) : (e = "undefined" != typeof globalThis ? globalThis : e || self).imageCompression = t2();
923
- }(exports, function() {
924
- "use strict";
925
- function _mergeNamespaces(e2, t3) {
926
- return t3.forEach(function(t4) {
927
- t4 && "string" != typeof t4 && !Array.isArray(t4) && Object.keys(t4).forEach(function(r2) {
928
- if ("default" !== r2 && !(r2 in e2)) {
929
- var i2 = Object.getOwnPropertyDescriptor(t4, r2);
930
- Object.defineProperty(e2, r2, i2.get ? i2 : { enumerable: true, get: function() {
931
- return t4[r2];
932
- } });
933
- }
934
- });
935
- }), Object.freeze(e2);
936
- }
937
- function copyExifWithoutOrientation(e2, t3) {
938
- return new Promise(function(r2, i2) {
939
- let o2;
940
- return getApp1Segment(e2).then(function(e3) {
941
- try {
942
- return o2 = e3, r2(new Blob([t3.slice(0, 2), o2, t3.slice(2)], { type: "image/jpeg" }));
943
- } catch (e4) {
944
- return i2(e4);
945
- }
946
- }, i2);
947
- });
948
- }
949
- const getApp1Segment = (e2) => new Promise((t3, r2) => {
950
- const i2 = new FileReader();
951
- i2.addEventListener("load", ({ target: { result: e3 } }) => {
952
- const i3 = new DataView(e3);
953
- let o2 = 0;
954
- if (65496 !== i3.getUint16(o2)) return r2("not a valid JPEG");
955
- for (o2 += 2; ; ) {
956
- const a2 = i3.getUint16(o2);
957
- if (65498 === a2) break;
958
- const s2 = i3.getUint16(o2 + 2);
959
- if (65505 === a2 && 1165519206 === i3.getUint32(o2 + 4)) {
960
- const a3 = o2 + 10;
961
- let f2;
962
- switch (i3.getUint16(a3)) {
963
- case 18761:
964
- f2 = true;
965
- break;
966
- case 19789:
967
- f2 = false;
968
- break;
969
- default:
970
- return r2("TIFF header contains invalid endian");
971
- }
972
- if (42 !== i3.getUint16(a3 + 2, f2)) return r2("TIFF header contains invalid version");
973
- const l2 = i3.getUint32(a3 + 4, f2), c = a3 + l2 + 2 + 12 * i3.getUint16(a3 + l2, f2);
974
- for (let e4 = a3 + l2 + 2; e4 < c; e4 += 12) {
975
- if (274 == i3.getUint16(e4, f2)) {
976
- if (3 !== i3.getUint16(e4 + 2, f2)) return r2("Orientation data type is invalid");
977
- if (1 !== i3.getUint32(e4 + 4, f2)) return r2("Orientation data count is invalid");
978
- i3.setUint16(e4 + 8, 1, f2);
979
- break;
980
- }
981
- }
982
- return t3(e3.slice(o2, o2 + 2 + s2));
983
- }
984
- o2 += 2 + s2;
985
- }
986
- return t3(new Blob());
987
- }), i2.readAsArrayBuffer(e2);
988
- });
989
- var e = {};
990
- !function(e2) {
991
- var t3, r2, UZIP2 = {};
992
- e2.exports = UZIP2, UZIP2.parse = function(e3, t4) {
993
- for (var r3 = UZIP2.bin.readUshort, i2 = UZIP2.bin.readUint, o2 = 0, a2 = {}, s2 = new Uint8Array(e3), f2 = s2.length - 4; 101010256 != i2(s2, f2); ) f2--;
994
- o2 = f2;
995
- o2 += 4;
996
- var l2 = r3(s2, o2 += 4);
997
- r3(s2, o2 += 2);
998
- var c = i2(s2, o2 += 2), u = i2(s2, o2 += 4);
999
- o2 += 4, o2 = u;
1000
- for (var h = 0; h < l2; h++) {
1001
- i2(s2, o2), o2 += 4, o2 += 4, o2 += 4, i2(s2, o2 += 4);
1002
- c = i2(s2, o2 += 4);
1003
- var d = i2(s2, o2 += 4), A = r3(s2, o2 += 4), g = r3(s2, o2 + 2), p = r3(s2, o2 + 4);
1004
- o2 += 6;
1005
- var m = i2(s2, o2 += 8);
1006
- o2 += 4, o2 += A + g + p, UZIP2._readLocal(s2, m, a2, c, d, t4);
1007
- }
1008
- return a2;
1009
- }, UZIP2._readLocal = function(e3, t4, r3, i2, o2, a2) {
1010
- var s2 = UZIP2.bin.readUshort, f2 = UZIP2.bin.readUint;
1011
- f2(e3, t4), s2(e3, t4 += 4), s2(e3, t4 += 2);
1012
- var l2 = s2(e3, t4 += 2);
1013
- f2(e3, t4 += 2), f2(e3, t4 += 4), t4 += 4;
1014
- var c = s2(e3, t4 += 8), u = s2(e3, t4 += 2);
1015
- t4 += 2;
1016
- var h = UZIP2.bin.readUTF8(e3, t4, c);
1017
- if (t4 += c, t4 += u, a2) r3[h] = { size: o2, csize: i2 };
1018
- else {
1019
- var d = new Uint8Array(e3.buffer, t4);
1020
- if (0 == l2) r3[h] = new Uint8Array(d.buffer.slice(t4, t4 + i2));
1021
- else {
1022
- if (8 != l2) throw "unknown compression method: " + l2;
1023
- var A = new Uint8Array(o2);
1024
- UZIP2.inflateRaw(d, A), r3[h] = A;
1025
- }
1026
- }
1027
- }, UZIP2.inflateRaw = function(e3, t4) {
1028
- return UZIP2.F.inflate(e3, t4);
1029
- }, UZIP2.inflate = function(e3, t4) {
1030
- return e3[0], e3[1], UZIP2.inflateRaw(new Uint8Array(e3.buffer, e3.byteOffset + 2, e3.length - 6), t4);
1031
- }, UZIP2.deflate = function(e3, t4) {
1032
- null == t4 && (t4 = { level: 6 });
1033
- var r3 = 0, i2 = new Uint8Array(50 + Math.floor(1.1 * e3.length));
1034
- i2[r3] = 120, i2[r3 + 1] = 156, r3 += 2, r3 = UZIP2.F.deflateRaw(e3, i2, r3, t4.level);
1035
- var o2 = UZIP2.adler(e3, 0, e3.length);
1036
- return i2[r3 + 0] = o2 >>> 24 & 255, i2[r3 + 1] = o2 >>> 16 & 255, i2[r3 + 2] = o2 >>> 8 & 255, i2[r3 + 3] = o2 >>> 0 & 255, new Uint8Array(i2.buffer, 0, r3 + 4);
1037
- }, UZIP2.deflateRaw = function(e3, t4) {
1038
- null == t4 && (t4 = { level: 6 });
1039
- var r3 = new Uint8Array(50 + Math.floor(1.1 * e3.length)), i2 = UZIP2.F.deflateRaw(e3, r3, i2, t4.level);
1040
- return new Uint8Array(r3.buffer, 0, i2);
1041
- }, UZIP2.encode = function(e3, t4) {
1042
- null == t4 && (t4 = false);
1043
- var r3 = 0, i2 = UZIP2.bin.writeUint, o2 = UZIP2.bin.writeUshort, a2 = {};
1044
- for (var s2 in e3) {
1045
- var f2 = !UZIP2._noNeed(s2) && !t4, l2 = e3[s2], c = UZIP2.crc.crc(l2, 0, l2.length);
1046
- a2[s2] = { cpr: f2, usize: l2.length, crc: c, file: f2 ? UZIP2.deflateRaw(l2) : l2 };
1047
- }
1048
- for (var s2 in a2) r3 += a2[s2].file.length + 30 + 46 + 2 * UZIP2.bin.sizeUTF8(s2);
1049
- r3 += 22;
1050
- var u = new Uint8Array(r3), h = 0, d = [];
1051
- for (var s2 in a2) {
1052
- var A = a2[s2];
1053
- d.push(h), h = UZIP2._writeHeader(u, h, s2, A, 0);
1054
- }
1055
- var g = 0, p = h;
1056
- for (var s2 in a2) {
1057
- A = a2[s2];
1058
- d.push(h), h = UZIP2._writeHeader(u, h, s2, A, 1, d[g++]);
1059
- }
1060
- var m = h - p;
1061
- return i2(u, h, 101010256), h += 4, o2(u, h += 4, g), o2(u, h += 2, g), i2(u, h += 2, m), i2(u, h += 4, p), h += 4, h += 2, u.buffer;
1062
- }, UZIP2._noNeed = function(e3) {
1063
- var t4 = e3.split(".").pop().toLowerCase();
1064
- return -1 != "png,jpg,jpeg,zip".indexOf(t4);
1065
- }, UZIP2._writeHeader = function(e3, t4, r3, i2, o2, a2) {
1066
- var s2 = UZIP2.bin.writeUint, f2 = UZIP2.bin.writeUshort, l2 = i2.file;
1067
- return s2(e3, t4, 0 == o2 ? 67324752 : 33639248), t4 += 4, 1 == o2 && (t4 += 2), f2(e3, t4, 20), f2(e3, t4 += 2, 0), f2(e3, t4 += 2, i2.cpr ? 8 : 0), s2(e3, t4 += 2, 0), s2(e3, t4 += 4, i2.crc), s2(e3, t4 += 4, l2.length), s2(e3, t4 += 4, i2.usize), f2(e3, t4 += 4, UZIP2.bin.sizeUTF8(r3)), f2(e3, t4 += 2, 0), t4 += 2, 1 == o2 && (t4 += 2, t4 += 2, s2(e3, t4 += 6, a2), t4 += 4), t4 += UZIP2.bin.writeUTF8(e3, t4, r3), 0 == o2 && (e3.set(l2, t4), t4 += l2.length), t4;
1068
- }, UZIP2.crc = { table: function() {
1069
- for (var e3 = new Uint32Array(256), t4 = 0; t4 < 256; t4++) {
1070
- for (var r3 = t4, i2 = 0; i2 < 8; i2++) 1 & r3 ? r3 = 3988292384 ^ r3 >>> 1 : r3 >>>= 1;
1071
- e3[t4] = r3;
1072
- }
1073
- return e3;
1074
- }(), update: function(e3, t4, r3, i2) {
1075
- for (var o2 = 0; o2 < i2; o2++) e3 = UZIP2.crc.table[255 & (e3 ^ t4[r3 + o2])] ^ e3 >>> 8;
1076
- return e3;
1077
- }, crc: function(e3, t4, r3) {
1078
- return 4294967295 ^ UZIP2.crc.update(4294967295, e3, t4, r3);
1079
- } }, UZIP2.adler = function(e3, t4, r3) {
1080
- for (var i2 = 1, o2 = 0, a2 = t4, s2 = t4 + r3; a2 < s2; ) {
1081
- for (var f2 = Math.min(a2 + 5552, s2); a2 < f2; ) o2 += i2 += e3[a2++];
1082
- i2 %= 65521, o2 %= 65521;
1083
- }
1084
- return o2 << 16 | i2;
1085
- }, UZIP2.bin = { readUshort: function(e3, t4) {
1086
- return e3[t4] | e3[t4 + 1] << 8;
1087
- }, writeUshort: function(e3, t4, r3) {
1088
- e3[t4] = 255 & r3, e3[t4 + 1] = r3 >> 8 & 255;
1089
- }, readUint: function(e3, t4) {
1090
- return 16777216 * e3[t4 + 3] + (e3[t4 + 2] << 16 | e3[t4 + 1] << 8 | e3[t4]);
1091
- }, writeUint: function(e3, t4, r3) {
1092
- e3[t4] = 255 & r3, e3[t4 + 1] = r3 >> 8 & 255, e3[t4 + 2] = r3 >> 16 & 255, e3[t4 + 3] = r3 >> 24 & 255;
1093
- }, readASCII: function(e3, t4, r3) {
1094
- for (var i2 = "", o2 = 0; o2 < r3; o2++) i2 += String.fromCharCode(e3[t4 + o2]);
1095
- return i2;
1096
- }, writeASCII: function(e3, t4, r3) {
1097
- for (var i2 = 0; i2 < r3.length; i2++) e3[t4 + i2] = r3.charCodeAt(i2);
1098
- }, pad: function(e3) {
1099
- return e3.length < 2 ? "0" + e3 : e3;
1100
- }, readUTF8: function(e3, t4, r3) {
1101
- for (var i2, o2 = "", a2 = 0; a2 < r3; a2++) o2 += "%" + UZIP2.bin.pad(e3[t4 + a2].toString(16));
1102
- try {
1103
- i2 = decodeURIComponent(o2);
1104
- } catch (i3) {
1105
- return UZIP2.bin.readASCII(e3, t4, r3);
1106
- }
1107
- return i2;
1108
- }, writeUTF8: function(e3, t4, r3) {
1109
- for (var i2 = r3.length, o2 = 0, a2 = 0; a2 < i2; a2++) {
1110
- var s2 = r3.charCodeAt(a2);
1111
- if (0 == (4294967168 & s2)) e3[t4 + o2] = s2, o2++;
1112
- else if (0 == (4294965248 & s2)) e3[t4 + o2] = 192 | s2 >> 6, e3[t4 + o2 + 1] = 128 | s2 >> 0 & 63, o2 += 2;
1113
- else if (0 == (4294901760 & s2)) e3[t4 + o2] = 224 | s2 >> 12, e3[t4 + o2 + 1] = 128 | s2 >> 6 & 63, e3[t4 + o2 + 2] = 128 | s2 >> 0 & 63, o2 += 3;
1114
- else {
1115
- if (0 != (4292870144 & s2)) throw "e";
1116
- e3[t4 + o2] = 240 | s2 >> 18, e3[t4 + o2 + 1] = 128 | s2 >> 12 & 63, e3[t4 + o2 + 2] = 128 | s2 >> 6 & 63, e3[t4 + o2 + 3] = 128 | s2 >> 0 & 63, o2 += 4;
1117
- }
1118
- }
1119
- return o2;
1120
- }, sizeUTF8: function(e3) {
1121
- for (var t4 = e3.length, r3 = 0, i2 = 0; i2 < t4; i2++) {
1122
- var o2 = e3.charCodeAt(i2);
1123
- if (0 == (4294967168 & o2)) r3++;
1124
- else if (0 == (4294965248 & o2)) r3 += 2;
1125
- else if (0 == (4294901760 & o2)) r3 += 3;
1126
- else {
1127
- if (0 != (4292870144 & o2)) throw "e";
1128
- r3 += 4;
1129
- }
1130
- }
1131
- return r3;
1132
- } }, UZIP2.F = {}, UZIP2.F.deflateRaw = function(e3, t4, r3, i2) {
1133
- var o2 = [[0, 0, 0, 0, 0], [4, 4, 8, 4, 0], [4, 5, 16, 8, 0], [4, 6, 16, 16, 0], [4, 10, 16, 32, 0], [8, 16, 32, 32, 0], [8, 16, 128, 128, 0], [8, 32, 128, 256, 0], [32, 128, 258, 1024, 1], [32, 258, 258, 4096, 1]][i2], a2 = UZIP2.F.U, s2 = UZIP2.F._goodIndex;
1134
- UZIP2.F._hash;
1135
- var f2 = UZIP2.F._putsE, l2 = 0, c = r3 << 3, u = 0, h = e3.length;
1136
- if (0 == i2) {
1137
- for (; l2 < h; ) {
1138
- f2(t4, c, l2 + (_ = Math.min(65535, h - l2)) == h ? 1 : 0), c = UZIP2.F._copyExact(e3, l2, _, t4, c + 8), l2 += _;
1139
- }
1140
- return c >>> 3;
1141
- }
1142
- var d = a2.lits, A = a2.strt, g = a2.prev, p = 0, m = 0, w = 0, v = 0, b = 0, y = 0;
1143
- for (h > 2 && (A[y = UZIP2.F._hash(e3, 0)] = 0), l2 = 0; l2 < h; l2++) {
1144
- if (b = y, l2 + 1 < h - 2) {
1145
- y = UZIP2.F._hash(e3, l2 + 1);
1146
- var E = l2 + 1 & 32767;
1147
- g[E] = A[y], A[y] = E;
1148
- }
1149
- if (u <= l2) {
1150
- (p > 14e3 || m > 26697) && h - l2 > 100 && (u < l2 && (d[p] = l2 - u, p += 2, u = l2), c = UZIP2.F._writeBlock(l2 == h - 1 || u == h ? 1 : 0, d, p, v, e3, w, l2 - w, t4, c), p = m = v = 0, w = l2);
1151
- var F = 0;
1152
- l2 < h - 2 && (F = UZIP2.F._bestMatch(e3, l2, g, b, Math.min(o2[2], h - l2), o2[3]));
1153
- var _ = F >>> 16, B = 65535 & F;
1154
- if (0 != F) {
1155
- B = 65535 & F;
1156
- var U = s2(_ = F >>> 16, a2.of0);
1157
- a2.lhst[257 + U]++;
1158
- var C = s2(B, a2.df0);
1159
- a2.dhst[C]++, v += a2.exb[U] + a2.dxb[C], d[p] = _ << 23 | l2 - u, d[p + 1] = B << 16 | U << 8 | C, p += 2, u = l2 + _;
1160
- } else a2.lhst[e3[l2]]++;
1161
- m++;
1162
- }
1163
- }
1164
- for (w == l2 && 0 != e3.length || (u < l2 && (d[p] = l2 - u, p += 2, u = l2), c = UZIP2.F._writeBlock(1, d, p, v, e3, w, l2 - w, t4, c), p = 0, m = 0, p = m = v = 0, w = l2); 0 != (7 & c); ) c++;
1165
- return c >>> 3;
1166
- }, UZIP2.F._bestMatch = function(e3, t4, r3, i2, o2, a2) {
1167
- var s2 = 32767 & t4, f2 = r3[s2], l2 = s2 - f2 + 32768 & 32767;
1168
- if (f2 == s2 || i2 != UZIP2.F._hash(e3, t4 - l2)) return 0;
1169
- for (var c = 0, u = 0, h = Math.min(32767, t4); l2 <= h && 0 != --a2 && f2 != s2; ) {
1170
- if (0 == c || e3[t4 + c] == e3[t4 + c - l2]) {
1171
- var d = UZIP2.F._howLong(e3, t4, l2);
1172
- if (d > c) {
1173
- if (u = l2, (c = d) >= o2) break;
1174
- l2 + 2 < d && (d = l2 + 2);
1175
- for (var A = 0, g = 0; g < d - 2; g++) {
1176
- var p = t4 - l2 + g + 32768 & 32767, m = p - r3[p] + 32768 & 32767;
1177
- m > A && (A = m, f2 = p);
1178
- }
1179
- }
1180
- }
1181
- l2 += (s2 = f2) - (f2 = r3[s2]) + 32768 & 32767;
1182
- }
1183
- return c << 16 | u;
1184
- }, UZIP2.F._howLong = function(e3, t4, r3) {
1185
- if (e3[t4] != e3[t4 - r3] || e3[t4 + 1] != e3[t4 + 1 - r3] || e3[t4 + 2] != e3[t4 + 2 - r3]) return 0;
1186
- var i2 = t4, o2 = Math.min(e3.length, t4 + 258);
1187
- for (t4 += 3; t4 < o2 && e3[t4] == e3[t4 - r3]; ) t4++;
1188
- return t4 - i2;
1189
- }, UZIP2.F._hash = function(e3, t4) {
1190
- return (e3[t4] << 8 | e3[t4 + 1]) + (e3[t4 + 2] << 4) & 65535;
1191
- }, UZIP2.saved = 0, UZIP2.F._writeBlock = function(e3, t4, r3, i2, o2, a2, s2, f2, l2) {
1192
- var c, u, h, d, A, g, p, m, w, v = UZIP2.F.U, b = UZIP2.F._putsF, y = UZIP2.F._putsE;
1193
- v.lhst[256]++, u = (c = UZIP2.F.getTrees())[0], h = c[1], d = c[2], A = c[3], g = c[4], p = c[5], m = c[6], w = c[7];
1194
- var E = 32 + (0 == (l2 + 3 & 7) ? 0 : 8 - (l2 + 3 & 7)) + (s2 << 3), F = i2 + UZIP2.F.contSize(v.fltree, v.lhst) + UZIP2.F.contSize(v.fdtree, v.dhst), _ = i2 + UZIP2.F.contSize(v.ltree, v.lhst) + UZIP2.F.contSize(v.dtree, v.dhst);
1195
- _ += 14 + 3 * p + UZIP2.F.contSize(v.itree, v.ihst) + (2 * v.ihst[16] + 3 * v.ihst[17] + 7 * v.ihst[18]);
1196
- for (var B = 0; B < 286; B++) v.lhst[B] = 0;
1197
- for (B = 0; B < 30; B++) v.dhst[B] = 0;
1198
- for (B = 0; B < 19; B++) v.ihst[B] = 0;
1199
- var U = E < F && E < _ ? 0 : F < _ ? 1 : 2;
1200
- if (b(f2, l2, e3), b(f2, l2 + 1, U), l2 += 3, 0 == U) {
1201
- for (; 0 != (7 & l2); ) l2++;
1202
- l2 = UZIP2.F._copyExact(o2, a2, s2, f2, l2);
1203
- } else {
1204
- var C, I;
1205
- if (1 == U && (C = v.fltree, I = v.fdtree), 2 == U) {
1206
- UZIP2.F.makeCodes(v.ltree, u), UZIP2.F.revCodes(v.ltree, u), UZIP2.F.makeCodes(v.dtree, h), UZIP2.F.revCodes(v.dtree, h), UZIP2.F.makeCodes(v.itree, d), UZIP2.F.revCodes(v.itree, d), C = v.ltree, I = v.dtree, y(f2, l2, A - 257), y(f2, l2 += 5, g - 1), y(f2, l2 += 5, p - 4), l2 += 4;
1207
- for (var Q = 0; Q < p; Q++) y(f2, l2 + 3 * Q, v.itree[1 + (v.ordr[Q] << 1)]);
1208
- l2 += 3 * p, l2 = UZIP2.F._codeTiny(m, v.itree, f2, l2), l2 = UZIP2.F._codeTiny(w, v.itree, f2, l2);
1209
- }
1210
- for (var M = a2, x = 0; x < r3; x += 2) {
1211
- for (var T = t4[x], S = T >>> 23, R = M + (8388607 & T); M < R; ) l2 = UZIP2.F._writeLit(o2[M++], C, f2, l2);
1212
- if (0 != S) {
1213
- var O = t4[x + 1], P = O >> 16, H = O >> 8 & 255, L = 255 & O;
1214
- y(f2, l2 = UZIP2.F._writeLit(257 + H, C, f2, l2), S - v.of0[H]), l2 += v.exb[H], b(f2, l2 = UZIP2.F._writeLit(L, I, f2, l2), P - v.df0[L]), l2 += v.dxb[L], M += S;
1215
- }
1216
- }
1217
- l2 = UZIP2.F._writeLit(256, C, f2, l2);
1218
- }
1219
- return l2;
1220
- }, UZIP2.F._copyExact = function(e3, t4, r3, i2, o2) {
1221
- var a2 = o2 >>> 3;
1222
- return i2[a2] = r3, i2[a2 + 1] = r3 >>> 8, i2[a2 + 2] = 255 - i2[a2], i2[a2 + 3] = 255 - i2[a2 + 1], a2 += 4, i2.set(new Uint8Array(e3.buffer, t4, r3), a2), o2 + (r3 + 4 << 3);
1223
- }, UZIP2.F.getTrees = function() {
1224
- for (var e3 = UZIP2.F.U, t4 = UZIP2.F._hufTree(e3.lhst, e3.ltree, 15), r3 = UZIP2.F._hufTree(e3.dhst, e3.dtree, 15), i2 = [], o2 = UZIP2.F._lenCodes(e3.ltree, i2), a2 = [], s2 = UZIP2.F._lenCodes(e3.dtree, a2), f2 = 0; f2 < i2.length; f2 += 2) e3.ihst[i2[f2]]++;
1225
- for (f2 = 0; f2 < a2.length; f2 += 2) e3.ihst[a2[f2]]++;
1226
- for (var l2 = UZIP2.F._hufTree(e3.ihst, e3.itree, 7), c = 19; c > 4 && 0 == e3.itree[1 + (e3.ordr[c - 1] << 1)]; ) c--;
1227
- return [t4, r3, l2, o2, s2, c, i2, a2];
1228
- }, UZIP2.F.getSecond = function(e3) {
1229
- for (var t4 = [], r3 = 0; r3 < e3.length; r3 += 2) t4.push(e3[r3 + 1]);
1230
- return t4;
1231
- }, UZIP2.F.nonZero = function(e3) {
1232
- for (var t4 = "", r3 = 0; r3 < e3.length; r3 += 2) 0 != e3[r3 + 1] && (t4 += (r3 >> 1) + ",");
1233
- return t4;
1234
- }, UZIP2.F.contSize = function(e3, t4) {
1235
- for (var r3 = 0, i2 = 0; i2 < t4.length; i2++) r3 += t4[i2] * e3[1 + (i2 << 1)];
1236
- return r3;
1237
- }, UZIP2.F._codeTiny = function(e3, t4, r3, i2) {
1238
- for (var o2 = 0; o2 < e3.length; o2 += 2) {
1239
- var a2 = e3[o2], s2 = e3[o2 + 1];
1240
- i2 = UZIP2.F._writeLit(a2, t4, r3, i2);
1241
- var f2 = 16 == a2 ? 2 : 17 == a2 ? 3 : 7;
1242
- a2 > 15 && (UZIP2.F._putsE(r3, i2, s2, f2), i2 += f2);
1243
- }
1244
- return i2;
1245
- }, UZIP2.F._lenCodes = function(e3, t4) {
1246
- for (var r3 = e3.length; 2 != r3 && 0 == e3[r3 - 1]; ) r3 -= 2;
1247
- for (var i2 = 0; i2 < r3; i2 += 2) {
1248
- var o2 = e3[i2 + 1], a2 = i2 + 3 < r3 ? e3[i2 + 3] : -1, s2 = i2 + 5 < r3 ? e3[i2 + 5] : -1, f2 = 0 == i2 ? -1 : e3[i2 - 1];
1249
- if (0 == o2 && a2 == o2 && s2 == o2) {
1250
- for (var l2 = i2 + 5; l2 + 2 < r3 && e3[l2 + 2] == o2; ) l2 += 2;
1251
- (c = Math.min(l2 + 1 - i2 >>> 1, 138)) < 11 ? t4.push(17, c - 3) : t4.push(18, c - 11), i2 += 2 * c - 2;
1252
- } else if (o2 == f2 && a2 == o2 && s2 == o2) {
1253
- for (l2 = i2 + 5; l2 + 2 < r3 && e3[l2 + 2] == o2; ) l2 += 2;
1254
- var c = Math.min(l2 + 1 - i2 >>> 1, 6);
1255
- t4.push(16, c - 3), i2 += 2 * c - 2;
1256
- } else t4.push(o2, 0);
1257
- }
1258
- return r3 >>> 1;
1259
- }, UZIP2.F._hufTree = function(e3, t4, r3) {
1260
- var i2 = [], o2 = e3.length, a2 = t4.length, s2 = 0;
1261
- for (s2 = 0; s2 < a2; s2 += 2) t4[s2] = 0, t4[s2 + 1] = 0;
1262
- for (s2 = 0; s2 < o2; s2++) 0 != e3[s2] && i2.push({ lit: s2, f: e3[s2] });
1263
- var f2 = i2.length, l2 = i2.slice(0);
1264
- if (0 == f2) return 0;
1265
- if (1 == f2) {
1266
- var c = i2[0].lit;
1267
- l2 = 0 == c ? 1 : 0;
1268
- return t4[1 + (c << 1)] = 1, t4[1 + (l2 << 1)] = 1, 1;
1269
- }
1270
- i2.sort(function(e4, t5) {
1271
- return e4.f - t5.f;
1272
- });
1273
- var u = i2[0], h = i2[1], d = 0, A = 1, g = 2;
1274
- for (i2[0] = { lit: -1, f: u.f + h.f, l: u, r: h, d: 0 }; A != f2 - 1; ) u = d != A && (g == f2 || i2[d].f < i2[g].f) ? i2[d++] : i2[g++], h = d != A && (g == f2 || i2[d].f < i2[g].f) ? i2[d++] : i2[g++], i2[A++] = { lit: -1, f: u.f + h.f, l: u, r: h };
1275
- var p = UZIP2.F.setDepth(i2[A - 1], 0);
1276
- for (p > r3 && (UZIP2.F.restrictDepth(l2, r3, p), p = r3), s2 = 0; s2 < f2; s2++) t4[1 + (l2[s2].lit << 1)] = l2[s2].d;
1277
- return p;
1278
- }, UZIP2.F.setDepth = function(e3, t4) {
1279
- return -1 != e3.lit ? (e3.d = t4, t4) : Math.max(UZIP2.F.setDepth(e3.l, t4 + 1), UZIP2.F.setDepth(e3.r, t4 + 1));
1280
- }, UZIP2.F.restrictDepth = function(e3, t4, r3) {
1281
- var i2 = 0, o2 = 1 << r3 - t4, a2 = 0;
1282
- for (e3.sort(function(e4, t5) {
1283
- return t5.d == e4.d ? e4.f - t5.f : t5.d - e4.d;
1284
- }), i2 = 0; i2 < e3.length && e3[i2].d > t4; i2++) {
1285
- var s2 = e3[i2].d;
1286
- e3[i2].d = t4, a2 += o2 - (1 << r3 - s2);
1287
- }
1288
- for (a2 >>>= r3 - t4; a2 > 0; ) {
1289
- (s2 = e3[i2].d) < t4 ? (e3[i2].d++, a2 -= 1 << t4 - s2 - 1) : i2++;
1290
- }
1291
- for (; i2 >= 0; i2--) e3[i2].d == t4 && a2 < 0 && (e3[i2].d--, a2++);
1292
- 0 != a2 && console.log("debt left");
1293
- }, UZIP2.F._goodIndex = function(e3, t4) {
1294
- var r3 = 0;
1295
- return t4[16 | r3] <= e3 && (r3 |= 16), t4[8 | r3] <= e3 && (r3 |= 8), t4[4 | r3] <= e3 && (r3 |= 4), t4[2 | r3] <= e3 && (r3 |= 2), t4[1 | r3] <= e3 && (r3 |= 1), r3;
1296
- }, UZIP2.F._writeLit = function(e3, t4, r3, i2) {
1297
- return UZIP2.F._putsF(r3, i2, t4[e3 << 1]), i2 + t4[1 + (e3 << 1)];
1298
- }, UZIP2.F.inflate = function(e3, t4) {
1299
- var r3 = Uint8Array;
1300
- if (3 == e3[0] && 0 == e3[1]) return t4 || new r3(0);
1301
- var i2 = UZIP2.F, o2 = i2._bitsF, a2 = i2._bitsE, s2 = i2._decodeTiny, f2 = i2.makeCodes, l2 = i2.codes2map, c = i2._get17, u = i2.U, h = null == t4;
1302
- h && (t4 = new r3(e3.length >>> 2 << 3));
1303
- for (var d, A, g = 0, p = 0, m = 0, w = 0, v = 0, b = 0, y = 0, E = 0, F = 0; 0 == g; ) if (g = o2(e3, F, 1), p = o2(e3, F + 1, 2), F += 3, 0 != p) {
1304
- if (h && (t4 = UZIP2.F._check(t4, E + (1 << 17))), 1 == p && (d = u.flmap, A = u.fdmap, b = 511, y = 31), 2 == p) {
1305
- m = a2(e3, F, 5) + 257, w = a2(e3, F + 5, 5) + 1, v = a2(e3, F + 10, 4) + 4, F += 14;
1306
- for (var _ = 0; _ < 38; _ += 2) u.itree[_] = 0, u.itree[_ + 1] = 0;
1307
- var B = 1;
1308
- for (_ = 0; _ < v; _++) {
1309
- var U = a2(e3, F + 3 * _, 3);
1310
- u.itree[1 + (u.ordr[_] << 1)] = U, U > B && (B = U);
1311
- }
1312
- F += 3 * v, f2(u.itree, B), l2(u.itree, B, u.imap), d = u.lmap, A = u.dmap, F = s2(u.imap, (1 << B) - 1, m + w, e3, F, u.ttree);
1313
- var C = i2._copyOut(u.ttree, 0, m, u.ltree);
1314
- b = (1 << C) - 1;
1315
- var I = i2._copyOut(u.ttree, m, w, u.dtree);
1316
- y = (1 << I) - 1, f2(u.ltree, C), l2(u.ltree, C, d), f2(u.dtree, I), l2(u.dtree, I, A);
1317
- }
1318
- for (; ; ) {
1319
- var Q = d[c(e3, F) & b];
1320
- F += 15 & Q;
1321
- var M = Q >>> 4;
1322
- if (M >>> 8 == 0) t4[E++] = M;
1323
- else {
1324
- if (256 == M) break;
1325
- var x = E + M - 254;
1326
- if (M > 264) {
1327
- var T = u.ldef[M - 257];
1328
- x = E + (T >>> 3) + a2(e3, F, 7 & T), F += 7 & T;
1329
- }
1330
- var S = A[c(e3, F) & y];
1331
- F += 15 & S;
1332
- var R = S >>> 4, O = u.ddef[R], P = (O >>> 4) + o2(e3, F, 15 & O);
1333
- for (F += 15 & O, h && (t4 = UZIP2.F._check(t4, E + (1 << 17))); E < x; ) t4[E] = t4[E++ - P], t4[E] = t4[E++ - P], t4[E] = t4[E++ - P], t4[E] = t4[E++ - P];
1334
- E = x;
1335
- }
1336
- }
1337
- } else {
1338
- 0 != (7 & F) && (F += 8 - (7 & F));
1339
- var H = 4 + (F >>> 3), L = e3[H - 4] | e3[H - 3] << 8;
1340
- h && (t4 = UZIP2.F._check(t4, E + L)), t4.set(new r3(e3.buffer, e3.byteOffset + H, L), E), F = H + L << 3, E += L;
1341
- }
1342
- return t4.length == E ? t4 : t4.slice(0, E);
1343
- }, UZIP2.F._check = function(e3, t4) {
1344
- var r3 = e3.length;
1345
- if (t4 <= r3) return e3;
1346
- var i2 = new Uint8Array(Math.max(r3 << 1, t4));
1347
- return i2.set(e3, 0), i2;
1348
- }, UZIP2.F._decodeTiny = function(e3, t4, r3, i2, o2, a2) {
1349
- for (var s2 = UZIP2.F._bitsE, f2 = UZIP2.F._get17, l2 = 0; l2 < r3; ) {
1350
- var c = e3[f2(i2, o2) & t4];
1351
- o2 += 15 & c;
1352
- var u = c >>> 4;
1353
- if (u <= 15) a2[l2] = u, l2++;
1354
- else {
1355
- var h = 0, d = 0;
1356
- 16 == u ? (d = 3 + s2(i2, o2, 2), o2 += 2, h = a2[l2 - 1]) : 17 == u ? (d = 3 + s2(i2, o2, 3), o2 += 3) : 18 == u && (d = 11 + s2(i2, o2, 7), o2 += 7);
1357
- for (var A = l2 + d; l2 < A; ) a2[l2] = h, l2++;
1358
- }
1359
- }
1360
- return o2;
1361
- }, UZIP2.F._copyOut = function(e3, t4, r3, i2) {
1362
- for (var o2 = 0, a2 = 0, s2 = i2.length >>> 1; a2 < r3; ) {
1363
- var f2 = e3[a2 + t4];
1364
- i2[a2 << 1] = 0, i2[1 + (a2 << 1)] = f2, f2 > o2 && (o2 = f2), a2++;
1365
- }
1366
- for (; a2 < s2; ) i2[a2 << 1] = 0, i2[1 + (a2 << 1)] = 0, a2++;
1367
- return o2;
1368
- }, UZIP2.F.makeCodes = function(e3, t4) {
1369
- for (var r3, i2, o2, a2, s2 = UZIP2.F.U, f2 = e3.length, l2 = s2.bl_count, c = 0; c <= t4; c++) l2[c] = 0;
1370
- for (c = 1; c < f2; c += 2) l2[e3[c]]++;
1371
- var u = s2.next_code;
1372
- for (r3 = 0, l2[0] = 0, i2 = 1; i2 <= t4; i2++) r3 = r3 + l2[i2 - 1] << 1, u[i2] = r3;
1373
- for (o2 = 0; o2 < f2; o2 += 2) 0 != (a2 = e3[o2 + 1]) && (e3[o2] = u[a2], u[a2]++);
1374
- }, UZIP2.F.codes2map = function(e3, t4, r3) {
1375
- for (var i2 = e3.length, o2 = UZIP2.F.U.rev15, a2 = 0; a2 < i2; a2 += 2) if (0 != e3[a2 + 1]) for (var s2 = a2 >> 1, f2 = e3[a2 + 1], l2 = s2 << 4 | f2, c = t4 - f2, u = e3[a2] << c, h = u + (1 << c); u != h; ) {
1376
- r3[o2[u] >>> 15 - t4] = l2, u++;
1377
- }
1378
- }, UZIP2.F.revCodes = function(e3, t4) {
1379
- for (var r3 = UZIP2.F.U.rev15, i2 = 15 - t4, o2 = 0; o2 < e3.length; o2 += 2) {
1380
- var a2 = e3[o2] << t4 - e3[o2 + 1];
1381
- e3[o2] = r3[a2] >>> i2;
1382
- }
1383
- }, UZIP2.F._putsE = function(e3, t4, r3) {
1384
- r3 <<= 7 & t4;
1385
- var i2 = t4 >>> 3;
1386
- e3[i2] |= r3, e3[i2 + 1] |= r3 >>> 8;
1387
- }, UZIP2.F._putsF = function(e3, t4, r3) {
1388
- r3 <<= 7 & t4;
1389
- var i2 = t4 >>> 3;
1390
- e3[i2] |= r3, e3[i2 + 1] |= r3 >>> 8, e3[i2 + 2] |= r3 >>> 16;
1391
- }, UZIP2.F._bitsE = function(e3, t4, r3) {
1392
- return (e3[t4 >>> 3] | e3[1 + (t4 >>> 3)] << 8) >>> (7 & t4) & (1 << r3) - 1;
1393
- }, UZIP2.F._bitsF = function(e3, t4, r3) {
1394
- return (e3[t4 >>> 3] | e3[1 + (t4 >>> 3)] << 8 | e3[2 + (t4 >>> 3)] << 16) >>> (7 & t4) & (1 << r3) - 1;
1395
- }, UZIP2.F._get17 = function(e3, t4) {
1396
- return (e3[t4 >>> 3] | e3[1 + (t4 >>> 3)] << 8 | e3[2 + (t4 >>> 3)] << 16) >>> (7 & t4);
1397
- }, UZIP2.F._get25 = function(e3, t4) {
1398
- return (e3[t4 >>> 3] | e3[1 + (t4 >>> 3)] << 8 | e3[2 + (t4 >>> 3)] << 16 | e3[3 + (t4 >>> 3)] << 24) >>> (7 & t4);
1399
- }, UZIP2.F.U = (t3 = Uint16Array, r2 = Uint32Array, { next_code: new t3(16), bl_count: new t3(16), ordr: [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], of0: [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 999, 999, 999], exb: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0], ldef: new t3(32), df0: [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 65535, 65535], dxb: [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 0, 0], ddef: new r2(32), flmap: new t3(512), fltree: [], fdmap: new t3(32), fdtree: [], lmap: new t3(32768), ltree: [], ttree: [], dmap: new t3(32768), dtree: [], imap: new t3(512), itree: [], rev15: new t3(32768), lhst: new r2(286), dhst: new r2(30), ihst: new r2(19), lits: new r2(15e3), strt: new t3(65536), prev: new t3(32768) }), function() {
1400
- for (var e3 = UZIP2.F.U, t4 = 0; t4 < 32768; t4++) {
1401
- var r3 = t4;
1402
- r3 = (4278255360 & (r3 = (4042322160 & (r3 = (3435973836 & (r3 = (2863311530 & r3) >>> 1 | (1431655765 & r3) << 1)) >>> 2 | (858993459 & r3) << 2)) >>> 4 | (252645135 & r3) << 4)) >>> 8 | (16711935 & r3) << 8, e3.rev15[t4] = (r3 >>> 16 | r3 << 16) >>> 17;
1403
- }
1404
- function pushV(e4, t5, r4) {
1405
- for (; 0 != t5--; ) e4.push(0, r4);
1406
- }
1407
- for (t4 = 0; t4 < 32; t4++) e3.ldef[t4] = e3.of0[t4] << 3 | e3.exb[t4], e3.ddef[t4] = e3.df0[t4] << 4 | e3.dxb[t4];
1408
- pushV(e3.fltree, 144, 8), pushV(e3.fltree, 112, 9), pushV(e3.fltree, 24, 7), pushV(e3.fltree, 8, 8), UZIP2.F.makeCodes(e3.fltree, 9), UZIP2.F.codes2map(e3.fltree, 9, e3.flmap), UZIP2.F.revCodes(e3.fltree, 9), pushV(e3.fdtree, 32, 5), UZIP2.F.makeCodes(e3.fdtree, 5), UZIP2.F.codes2map(e3.fdtree, 5, e3.fdmap), UZIP2.F.revCodes(e3.fdtree, 5), pushV(e3.itree, 19, 0), pushV(e3.ltree, 286, 0), pushV(e3.dtree, 30, 0), pushV(e3.ttree, 320, 0);
1409
- }();
1410
- }({ get exports() {
1411
- return e;
1412
- }, set exports(t3) {
1413
- e = t3;
1414
- } });
1415
- var UZIP = _mergeNamespaces({ __proto__: null, default: e }, [e]);
1416
- const UPNG = function() {
1417
- var e2 = { nextZero(e3, t4) {
1418
- for (; 0 != e3[t4]; ) t4++;
1419
- return t4;
1420
- }, readUshort: (e3, t4) => e3[t4] << 8 | e3[t4 + 1], writeUshort(e3, t4, r2) {
1421
- e3[t4] = r2 >> 8 & 255, e3[t4 + 1] = 255 & r2;
1422
- }, readUint: (e3, t4) => 16777216 * e3[t4] + (e3[t4 + 1] << 16 | e3[t4 + 2] << 8 | e3[t4 + 3]), writeUint(e3, t4, r2) {
1423
- e3[t4] = r2 >> 24 & 255, e3[t4 + 1] = r2 >> 16 & 255, e3[t4 + 2] = r2 >> 8 & 255, e3[t4 + 3] = 255 & r2;
1424
- }, readASCII(e3, t4, r2) {
1425
- let i2 = "";
1426
- for (let o2 = 0; o2 < r2; o2++) i2 += String.fromCharCode(e3[t4 + o2]);
1427
- return i2;
1428
- }, writeASCII(e3, t4, r2) {
1429
- for (let i2 = 0; i2 < r2.length; i2++) e3[t4 + i2] = r2.charCodeAt(i2);
1430
- }, readBytes(e3, t4, r2) {
1431
- const i2 = [];
1432
- for (let o2 = 0; o2 < r2; o2++) i2.push(e3[t4 + o2]);
1433
- return i2;
1434
- }, pad: (e3) => e3.length < 2 ? `0${e3}` : e3, readUTF8(t4, r2, i2) {
1435
- let o2, a2 = "";
1436
- for (let o3 = 0; o3 < i2; o3++) a2 += `%${e2.pad(t4[r2 + o3].toString(16))}`;
1437
- try {
1438
- o2 = decodeURIComponent(a2);
1439
- } catch (o3) {
1440
- return e2.readASCII(t4, r2, i2);
1441
- }
1442
- return o2;
1443
- } };
1444
- function decodeImage(t4, r2, i2, o2) {
1445
- const a2 = r2 * i2, s2 = _getBPP(o2), f2 = Math.ceil(r2 * s2 / 8), l2 = new Uint8Array(4 * a2), c = new Uint32Array(l2.buffer), { ctype: u } = o2, { depth: h } = o2, d = e2.readUshort;
1446
- if (6 == u) {
1447
- const e3 = a2 << 2;
1448
- if (8 == h) for (var A = 0; A < e3; A += 4) l2[A] = t4[A], l2[A + 1] = t4[A + 1], l2[A + 2] = t4[A + 2], l2[A + 3] = t4[A + 3];
1449
- if (16 == h) for (A = 0; A < e3; A++) l2[A] = t4[A << 1];
1450
- } else if (2 == u) {
1451
- const e3 = o2.tabs.tRNS;
1452
- if (null == e3) {
1453
- if (8 == h) for (A = 0; A < a2; A++) {
1454
- var g = 3 * A;
1455
- c[A] = 255 << 24 | t4[g + 2] << 16 | t4[g + 1] << 8 | t4[g];
1456
- }
1457
- if (16 == h) for (A = 0; A < a2; A++) {
1458
- g = 6 * A;
1459
- c[A] = 255 << 24 | t4[g + 4] << 16 | t4[g + 2] << 8 | t4[g];
1460
- }
1461
- } else {
1462
- var p = e3[0];
1463
- const r3 = e3[1], i3 = e3[2];
1464
- if (8 == h) for (A = 0; A < a2; A++) {
1465
- var m = A << 2;
1466
- g = 3 * A;
1467
- c[A] = 255 << 24 | t4[g + 2] << 16 | t4[g + 1] << 8 | t4[g], t4[g] == p && t4[g + 1] == r3 && t4[g + 2] == i3 && (l2[m + 3] = 0);
1468
- }
1469
- if (16 == h) for (A = 0; A < a2; A++) {
1470
- m = A << 2, g = 6 * A;
1471
- c[A] = 255 << 24 | t4[g + 4] << 16 | t4[g + 2] << 8 | t4[g], d(t4, g) == p && d(t4, g + 2) == r3 && d(t4, g + 4) == i3 && (l2[m + 3] = 0);
1472
- }
1473
- }
1474
- } else if (3 == u) {
1475
- const e3 = o2.tabs.PLTE, s3 = o2.tabs.tRNS, c2 = s3 ? s3.length : 0;
1476
- if (1 == h) for (var w = 0; w < i2; w++) {
1477
- var v = w * f2, b = w * r2;
1478
- for (A = 0; A < r2; A++) {
1479
- m = b + A << 2;
1480
- var y = 3 * (E = t4[v + (A >> 3)] >> 7 - ((7 & A) << 0) & 1);
1481
- l2[m] = e3[y], l2[m + 1] = e3[y + 1], l2[m + 2] = e3[y + 2], l2[m + 3] = E < c2 ? s3[E] : 255;
1482
- }
1483
- }
1484
- if (2 == h) for (w = 0; w < i2; w++) for (v = w * f2, b = w * r2, A = 0; A < r2; A++) {
1485
- m = b + A << 2, y = 3 * (E = t4[v + (A >> 2)] >> 6 - ((3 & A) << 1) & 3);
1486
- l2[m] = e3[y], l2[m + 1] = e3[y + 1], l2[m + 2] = e3[y + 2], l2[m + 3] = E < c2 ? s3[E] : 255;
1487
- }
1488
- if (4 == h) for (w = 0; w < i2; w++) for (v = w * f2, b = w * r2, A = 0; A < r2; A++) {
1489
- m = b + A << 2, y = 3 * (E = t4[v + (A >> 1)] >> 4 - ((1 & A) << 2) & 15);
1490
- l2[m] = e3[y], l2[m + 1] = e3[y + 1], l2[m + 2] = e3[y + 2], l2[m + 3] = E < c2 ? s3[E] : 255;
1491
- }
1492
- if (8 == h) for (A = 0; A < a2; A++) {
1493
- var E;
1494
- m = A << 2, y = 3 * (E = t4[A]);
1495
- l2[m] = e3[y], l2[m + 1] = e3[y + 1], l2[m + 2] = e3[y + 2], l2[m + 3] = E < c2 ? s3[E] : 255;
1496
- }
1497
- } else if (4 == u) {
1498
- if (8 == h) for (A = 0; A < a2; A++) {
1499
- m = A << 2;
1500
- var F = t4[_ = A << 1];
1501
- l2[m] = F, l2[m + 1] = F, l2[m + 2] = F, l2[m + 3] = t4[_ + 1];
1502
- }
1503
- if (16 == h) for (A = 0; A < a2; A++) {
1504
- var _;
1505
- m = A << 2, F = t4[_ = A << 2];
1506
- l2[m] = F, l2[m + 1] = F, l2[m + 2] = F, l2[m + 3] = t4[_ + 2];
1507
- }
1508
- } else if (0 == u) for (p = o2.tabs.tRNS ? o2.tabs.tRNS : -1, w = 0; w < i2; w++) {
1509
- const e3 = w * f2, i3 = w * r2;
1510
- if (1 == h) for (var B = 0; B < r2; B++) {
1511
- var U = (F = 255 * (t4[e3 + (B >>> 3)] >>> 7 - (7 & B) & 1)) == 255 * p ? 0 : 255;
1512
- c[i3 + B] = U << 24 | F << 16 | F << 8 | F;
1513
- }
1514
- else if (2 == h) for (B = 0; B < r2; B++) {
1515
- U = (F = 85 * (t4[e3 + (B >>> 2)] >>> 6 - ((3 & B) << 1) & 3)) == 85 * p ? 0 : 255;
1516
- c[i3 + B] = U << 24 | F << 16 | F << 8 | F;
1517
- }
1518
- else if (4 == h) for (B = 0; B < r2; B++) {
1519
- U = (F = 17 * (t4[e3 + (B >>> 1)] >>> 4 - ((1 & B) << 2) & 15)) == 17 * p ? 0 : 255;
1520
- c[i3 + B] = U << 24 | F << 16 | F << 8 | F;
1521
- }
1522
- else if (8 == h) for (B = 0; B < r2; B++) {
1523
- U = (F = t4[e3 + B]) == p ? 0 : 255;
1524
- c[i3 + B] = U << 24 | F << 16 | F << 8 | F;
1525
- }
1526
- else if (16 == h) for (B = 0; B < r2; B++) {
1527
- F = t4[e3 + (B << 1)], U = d(t4, e3 + (B << 1)) == p ? 0 : 255;
1528
- c[i3 + B] = U << 24 | F << 16 | F << 8 | F;
1529
- }
1530
- }
1531
- return l2;
1532
- }
1533
- function _decompress(e3, r2, i2, o2) {
1534
- const a2 = _getBPP(e3), s2 = Math.ceil(i2 * a2 / 8), f2 = new Uint8Array((s2 + 1 + e3.interlace) * o2);
1535
- return r2 = e3.tabs.CgBI ? t3(r2, f2) : _inflate(r2, f2), 0 == e3.interlace ? r2 = _filterZero(r2, e3, 0, i2, o2) : 1 == e3.interlace && (r2 = function _readInterlace(e4, t4) {
1536
- const r3 = t4.width, i3 = t4.height, o3 = _getBPP(t4), a3 = o3 >> 3, s3 = Math.ceil(r3 * o3 / 8), f3 = new Uint8Array(i3 * s3);
1537
- let l2 = 0;
1538
- const c = [0, 0, 4, 0, 2, 0, 1], u = [0, 4, 0, 2, 0, 1, 0], h = [8, 8, 8, 4, 4, 2, 2], d = [8, 8, 4, 4, 2, 2, 1];
1539
- let A = 0;
1540
- for (; A < 7; ) {
1541
- const p = h[A], m = d[A];
1542
- let w = 0, v = 0, b = c[A];
1543
- for (; b < i3; ) b += p, v++;
1544
- let y = u[A];
1545
- for (; y < r3; ) y += m, w++;
1546
- const E = Math.ceil(w * o3 / 8);
1547
- _filterZero(e4, t4, l2, w, v);
1548
- let F = 0, _ = c[A];
1549
- for (; _ < i3; ) {
1550
- let t5 = u[A], i4 = l2 + F * E << 3;
1551
- for (; t5 < r3; ) {
1552
- var g;
1553
- if (1 == o3) g = (g = e4[i4 >> 3]) >> 7 - (7 & i4) & 1, f3[_ * s3 + (t5 >> 3)] |= g << 7 - ((7 & t5) << 0);
1554
- if (2 == o3) g = (g = e4[i4 >> 3]) >> 6 - (7 & i4) & 3, f3[_ * s3 + (t5 >> 2)] |= g << 6 - ((3 & t5) << 1);
1555
- if (4 == o3) g = (g = e4[i4 >> 3]) >> 4 - (7 & i4) & 15, f3[_ * s3 + (t5 >> 1)] |= g << 4 - ((1 & t5) << 2);
1556
- if (o3 >= 8) {
1557
- const r4 = _ * s3 + t5 * a3;
1558
- for (let t6 = 0; t6 < a3; t6++) f3[r4 + t6] = e4[(i4 >> 3) + t6];
1559
- }
1560
- i4 += o3, t5 += m;
1561
- }
1562
- F++, _ += p;
1563
- }
1564
- w * v != 0 && (l2 += v * (1 + E)), A += 1;
1565
- }
1566
- return f3;
1567
- }(r2, e3)), r2;
1568
- }
1569
- function _inflate(e3, r2) {
1570
- return t3(new Uint8Array(e3.buffer, 2, e3.length - 6), r2);
1571
- }
1572
- var t3 = function() {
1573
- const e3 = { H: {} };
1574
- return e3.H.N = function(t4, r2) {
1575
- const i2 = Uint8Array;
1576
- let o2, a2, s2 = 0, f2 = 0, l2 = 0, c = 0, u = 0, h = 0, d = 0, A = 0, g = 0;
1577
- if (3 == t4[0] && 0 == t4[1]) return r2 || new i2(0);
1578
- const p = e3.H, m = p.b, w = p.e, v = p.R, b = p.n, y = p.A, E = p.Z, F = p.m, _ = null == r2;
1579
- for (_ && (r2 = new i2(t4.length >>> 2 << 5)); 0 == s2; ) if (s2 = m(t4, g, 1), f2 = m(t4, g + 1, 2), g += 3, 0 != f2) {
1580
- if (_ && (r2 = e3.H.W(r2, A + (1 << 17))), 1 == f2 && (o2 = F.J, a2 = F.h, h = 511, d = 31), 2 == f2) {
1581
- l2 = w(t4, g, 5) + 257, c = w(t4, g + 5, 5) + 1, u = w(t4, g + 10, 4) + 4, g += 14;
1582
- let e4 = 1;
1583
- for (var B = 0; B < 38; B += 2) F.Q[B] = 0, F.Q[B + 1] = 0;
1584
- for (B = 0; B < u; B++) {
1585
- const r4 = w(t4, g + 3 * B, 3);
1586
- F.Q[1 + (F.X[B] << 1)] = r4, r4 > e4 && (e4 = r4);
1587
- }
1588
- g += 3 * u, b(F.Q, e4), y(F.Q, e4, F.u), o2 = F.w, a2 = F.d, g = v(F.u, (1 << e4) - 1, l2 + c, t4, g, F.v);
1589
- const r3 = p.V(F.v, 0, l2, F.C);
1590
- h = (1 << r3) - 1;
1591
- const i3 = p.V(F.v, l2, c, F.D);
1592
- d = (1 << i3) - 1, b(F.C, r3), y(F.C, r3, o2), b(F.D, i3), y(F.D, i3, a2);
1593
- }
1594
- for (; ; ) {
1595
- const e4 = o2[E(t4, g) & h];
1596
- g += 15 & e4;
1597
- const i3 = e4 >>> 4;
1598
- if (i3 >>> 8 == 0) r2[A++] = i3;
1599
- else {
1600
- if (256 == i3) break;
1601
- {
1602
- let e5 = A + i3 - 254;
1603
- if (i3 > 264) {
1604
- const r3 = F.q[i3 - 257];
1605
- e5 = A + (r3 >>> 3) + w(t4, g, 7 & r3), g += 7 & r3;
1606
- }
1607
- const o3 = a2[E(t4, g) & d];
1608
- g += 15 & o3;
1609
- const s3 = o3 >>> 4, f3 = F.c[s3], l3 = (f3 >>> 4) + m(t4, g, 15 & f3);
1610
- for (g += 15 & f3; A < e5; ) r2[A] = r2[A++ - l3], r2[A] = r2[A++ - l3], r2[A] = r2[A++ - l3], r2[A] = r2[A++ - l3];
1611
- A = e5;
1612
- }
1613
- }
1614
- }
1615
- } else {
1616
- 0 != (7 & g) && (g += 8 - (7 & g));
1617
- const o3 = 4 + (g >>> 3), a3 = t4[o3 - 4] | t4[o3 - 3] << 8;
1618
- _ && (r2 = e3.H.W(r2, A + a3)), r2.set(new i2(t4.buffer, t4.byteOffset + o3, a3), A), g = o3 + a3 << 3, A += a3;
1619
- }
1620
- return r2.length == A ? r2 : r2.slice(0, A);
1621
- }, e3.H.W = function(e4, t4) {
1622
- const r2 = e4.length;
1623
- if (t4 <= r2) return e4;
1624
- const i2 = new Uint8Array(r2 << 1);
1625
- return i2.set(e4, 0), i2;
1626
- }, e3.H.R = function(t4, r2, i2, o2, a2, s2) {
1627
- const f2 = e3.H.e, l2 = e3.H.Z;
1628
- let c = 0;
1629
- for (; c < i2; ) {
1630
- const e4 = t4[l2(o2, a2) & r2];
1631
- a2 += 15 & e4;
1632
- const i3 = e4 >>> 4;
1633
- if (i3 <= 15) s2[c] = i3, c++;
1634
- else {
1635
- let e5 = 0, t5 = 0;
1636
- 16 == i3 ? (t5 = 3 + f2(o2, a2, 2), a2 += 2, e5 = s2[c - 1]) : 17 == i3 ? (t5 = 3 + f2(o2, a2, 3), a2 += 3) : 18 == i3 && (t5 = 11 + f2(o2, a2, 7), a2 += 7);
1637
- const r3 = c + t5;
1638
- for (; c < r3; ) s2[c] = e5, c++;
1639
- }
1640
- }
1641
- return a2;
1642
- }, e3.H.V = function(e4, t4, r2, i2) {
1643
- let o2 = 0, a2 = 0;
1644
- const s2 = i2.length >>> 1;
1645
- for (; a2 < r2; ) {
1646
- const r3 = e4[a2 + t4];
1647
- i2[a2 << 1] = 0, i2[1 + (a2 << 1)] = r3, r3 > o2 && (o2 = r3), a2++;
1648
- }
1649
- for (; a2 < s2; ) i2[a2 << 1] = 0, i2[1 + (a2 << 1)] = 0, a2++;
1650
- return o2;
1651
- }, e3.H.n = function(t4, r2) {
1652
- const i2 = e3.H.m, o2 = t4.length;
1653
- let a2, s2, f2;
1654
- let l2;
1655
- const c = i2.j;
1656
- for (var u = 0; u <= r2; u++) c[u] = 0;
1657
- for (u = 1; u < o2; u += 2) c[t4[u]]++;
1658
- const h = i2.K;
1659
- for (a2 = 0, c[0] = 0, s2 = 1; s2 <= r2; s2++) a2 = a2 + c[s2 - 1] << 1, h[s2] = a2;
1660
- for (f2 = 0; f2 < o2; f2 += 2) l2 = t4[f2 + 1], 0 != l2 && (t4[f2] = h[l2], h[l2]++);
1661
- }, e3.H.A = function(t4, r2, i2) {
1662
- const o2 = t4.length, a2 = e3.H.m.r;
1663
- for (let e4 = 0; e4 < o2; e4 += 2) if (0 != t4[e4 + 1]) {
1664
- const o3 = e4 >> 1, s2 = t4[e4 + 1], f2 = o3 << 4 | s2, l2 = r2 - s2;
1665
- let c = t4[e4] << l2;
1666
- const u = c + (1 << l2);
1667
- for (; c != u; ) {
1668
- i2[a2[c] >>> 15 - r2] = f2, c++;
1669
- }
1670
- }
1671
- }, e3.H.l = function(t4, r2) {
1672
- const i2 = e3.H.m.r, o2 = 15 - r2;
1673
- for (let e4 = 0; e4 < t4.length; e4 += 2) {
1674
- const a2 = t4[e4] << r2 - t4[e4 + 1];
1675
- t4[e4] = i2[a2] >>> o2;
1676
- }
1677
- }, e3.H.M = function(e4, t4, r2) {
1678
- r2 <<= 7 & t4;
1679
- const i2 = t4 >>> 3;
1680
- e4[i2] |= r2, e4[i2 + 1] |= r2 >>> 8;
1681
- }, e3.H.I = function(e4, t4, r2) {
1682
- r2 <<= 7 & t4;
1683
- const i2 = t4 >>> 3;
1684
- e4[i2] |= r2, e4[i2 + 1] |= r2 >>> 8, e4[i2 + 2] |= r2 >>> 16;
1685
- }, e3.H.e = function(e4, t4, r2) {
1686
- return (e4[t4 >>> 3] | e4[1 + (t4 >>> 3)] << 8) >>> (7 & t4) & (1 << r2) - 1;
1687
- }, e3.H.b = function(e4, t4, r2) {
1688
- return (e4[t4 >>> 3] | e4[1 + (t4 >>> 3)] << 8 | e4[2 + (t4 >>> 3)] << 16) >>> (7 & t4) & (1 << r2) - 1;
1689
- }, e3.H.Z = function(e4, t4) {
1690
- return (e4[t4 >>> 3] | e4[1 + (t4 >>> 3)] << 8 | e4[2 + (t4 >>> 3)] << 16) >>> (7 & t4);
1691
- }, e3.H.i = function(e4, t4) {
1692
- return (e4[t4 >>> 3] | e4[1 + (t4 >>> 3)] << 8 | e4[2 + (t4 >>> 3)] << 16 | e4[3 + (t4 >>> 3)] << 24) >>> (7 & t4);
1693
- }, e3.H.m = function() {
1694
- const e4 = Uint16Array, t4 = Uint32Array;
1695
- return { K: new e4(16), j: new e4(16), X: [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], S: [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 999, 999, 999], T: [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0], q: new e4(32), p: [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 65535, 65535], z: [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 0, 0], c: new t4(32), J: new e4(512), _: [], h: new e4(32), $: [], w: new e4(32768), C: [], v: [], d: new e4(32768), D: [], u: new e4(512), Q: [], r: new e4(32768), s: new t4(286), Y: new t4(30), a: new t4(19), t: new t4(15e3), k: new e4(65536), g: new e4(32768) };
1696
- }(), function() {
1697
- const t4 = e3.H.m;
1698
- for (var r2 = 0; r2 < 32768; r2++) {
1699
- let e4 = r2;
1700
- e4 = (2863311530 & e4) >>> 1 | (1431655765 & e4) << 1, e4 = (3435973836 & e4) >>> 2 | (858993459 & e4) << 2, e4 = (4042322160 & e4) >>> 4 | (252645135 & e4) << 4, e4 = (4278255360 & e4) >>> 8 | (16711935 & e4) << 8, t4.r[r2] = (e4 >>> 16 | e4 << 16) >>> 17;
1701
- }
1702
- function n(e4, t5, r3) {
1703
- for (; 0 != t5--; ) e4.push(0, r3);
1704
- }
1705
- for (r2 = 0; r2 < 32; r2++) t4.q[r2] = t4.S[r2] << 3 | t4.T[r2], t4.c[r2] = t4.p[r2] << 4 | t4.z[r2];
1706
- n(t4._, 144, 8), n(t4._, 112, 9), n(t4._, 24, 7), n(t4._, 8, 8), e3.H.n(t4._, 9), e3.H.A(t4._, 9, t4.J), e3.H.l(t4._, 9), n(t4.$, 32, 5), e3.H.n(t4.$, 5), e3.H.A(t4.$, 5, t4.h), e3.H.l(t4.$, 5), n(t4.Q, 19, 0), n(t4.C, 286, 0), n(t4.D, 30, 0), n(t4.v, 320, 0);
1707
- }(), e3.H.N;
1708
- }();
1709
- function _getBPP(e3) {
1710
- return [1, null, 3, 1, 2, null, 4][e3.ctype] * e3.depth;
1711
- }
1712
- function _filterZero(e3, t4, r2, i2, o2) {
1713
- let a2 = _getBPP(t4);
1714
- const s2 = Math.ceil(i2 * a2 / 8);
1715
- let f2, l2;
1716
- a2 = Math.ceil(a2 / 8);
1717
- let c = e3[r2], u = 0;
1718
- if (c > 1 && (e3[r2] = [0, 0, 1][c - 2]), 3 == c) for (u = a2; u < s2; u++) e3[u + 1] = e3[u + 1] + (e3[u + 1 - a2] >>> 1) & 255;
1719
- for (let t5 = 0; t5 < o2; t5++) if (f2 = r2 + t5 * s2, l2 = f2 + t5 + 1, c = e3[l2 - 1], u = 0, 0 == c) for (; u < s2; u++) e3[f2 + u] = e3[l2 + u];
1720
- else if (1 == c) {
1721
- for (; u < a2; u++) e3[f2 + u] = e3[l2 + u];
1722
- for (; u < s2; u++) e3[f2 + u] = e3[l2 + u] + e3[f2 + u - a2];
1723
- } else if (2 == c) for (; u < s2; u++) e3[f2 + u] = e3[l2 + u] + e3[f2 + u - s2];
1724
- else if (3 == c) {
1725
- for (; u < a2; u++) e3[f2 + u] = e3[l2 + u] + (e3[f2 + u - s2] >>> 1);
1726
- for (; u < s2; u++) e3[f2 + u] = e3[l2 + u] + (e3[f2 + u - s2] + e3[f2 + u - a2] >>> 1);
1727
- } else {
1728
- for (; u < a2; u++) e3[f2 + u] = e3[l2 + u] + _paeth(0, e3[f2 + u - s2], 0);
1729
- for (; u < s2; u++) e3[f2 + u] = e3[l2 + u] + _paeth(e3[f2 + u - a2], e3[f2 + u - s2], e3[f2 + u - a2 - s2]);
1730
- }
1731
- return e3;
1732
- }
1733
- function _paeth(e3, t4, r2) {
1734
- const i2 = e3 + t4 - r2, o2 = i2 - e3, a2 = i2 - t4, s2 = i2 - r2;
1735
- return o2 * o2 <= a2 * a2 && o2 * o2 <= s2 * s2 ? e3 : a2 * a2 <= s2 * s2 ? t4 : r2;
1736
- }
1737
- function _IHDR(t4, r2, i2) {
1738
- i2.width = e2.readUint(t4, r2), r2 += 4, i2.height = e2.readUint(t4, r2), r2 += 4, i2.depth = t4[r2], r2++, i2.ctype = t4[r2], r2++, i2.compress = t4[r2], r2++, i2.filter = t4[r2], r2++, i2.interlace = t4[r2], r2++;
1739
- }
1740
- function _copyTile(e3, t4, r2, i2, o2, a2, s2, f2, l2) {
1741
- const c = Math.min(t4, o2), u = Math.min(r2, a2);
1742
- let h = 0, d = 0;
1743
- for (let r3 = 0; r3 < u; r3++) for (let a3 = 0; a3 < c; a3++) if (s2 >= 0 && f2 >= 0 ? (h = r3 * t4 + a3 << 2, d = (f2 + r3) * o2 + s2 + a3 << 2) : (h = (-f2 + r3) * t4 - s2 + a3 << 2, d = r3 * o2 + a3 << 2), 0 == l2) i2[d] = e3[h], i2[d + 1] = e3[h + 1], i2[d + 2] = e3[h + 2], i2[d + 3] = e3[h + 3];
1744
- else if (1 == l2) {
1745
- var A = e3[h + 3] * (1 / 255), g = e3[h] * A, p = e3[h + 1] * A, m = e3[h + 2] * A, w = i2[d + 3] * (1 / 255), v = i2[d] * w, b = i2[d + 1] * w, y = i2[d + 2] * w;
1746
- const t5 = 1 - A, r4 = A + w * t5, o3 = 0 == r4 ? 0 : 1 / r4;
1747
- i2[d + 3] = 255 * r4, i2[d + 0] = (g + v * t5) * o3, i2[d + 1] = (p + b * t5) * o3, i2[d + 2] = (m + y * t5) * o3;
1748
- } else if (2 == l2) {
1749
- A = e3[h + 3], g = e3[h], p = e3[h + 1], m = e3[h + 2], w = i2[d + 3], v = i2[d], b = i2[d + 1], y = i2[d + 2];
1750
- A == w && g == v && p == b && m == y ? (i2[d] = 0, i2[d + 1] = 0, i2[d + 2] = 0, i2[d + 3] = 0) : (i2[d] = g, i2[d + 1] = p, i2[d + 2] = m, i2[d + 3] = A);
1751
- } else if (3 == l2) {
1752
- A = e3[h + 3], g = e3[h], p = e3[h + 1], m = e3[h + 2], w = i2[d + 3], v = i2[d], b = i2[d + 1], y = i2[d + 2];
1753
- if (A == w && g == v && p == b && m == y) continue;
1754
- if (A < 220 && w > 20) return false;
1755
- }
1756
- return true;
1757
- }
1758
- return { decode: function decode2(r2) {
1759
- const i2 = new Uint8Array(r2);
1760
- let o2 = 8;
1761
- const a2 = e2, s2 = a2.readUshort, f2 = a2.readUint, l2 = { tabs: {}, frames: [] }, c = new Uint8Array(i2.length);
1762
- let u, h = 0, d = 0;
1763
- const A = [137, 80, 78, 71, 13, 10, 26, 10];
1764
- for (var g = 0; g < 8; g++) if (i2[g] != A[g]) throw "The input is not a PNG file!";
1765
- for (; o2 < i2.length; ) {
1766
- const e3 = a2.readUint(i2, o2);
1767
- o2 += 4;
1768
- const r3 = a2.readASCII(i2, o2, 4);
1769
- if (o2 += 4, "IHDR" == r3) _IHDR(i2, o2, l2);
1770
- else if ("iCCP" == r3) {
1771
- for (var p = o2; 0 != i2[p]; ) p++;
1772
- a2.readASCII(i2, o2, p - o2), i2[p + 1];
1773
- const s3 = i2.slice(p + 2, o2 + e3);
1774
- let f3 = null;
1775
- try {
1776
- f3 = _inflate(s3);
1777
- } catch (e4) {
1778
- f3 = t3(s3);
1779
- }
1780
- l2.tabs[r3] = f3;
1781
- } else if ("CgBI" == r3) l2.tabs[r3] = i2.slice(o2, o2 + 4);
1782
- else if ("IDAT" == r3) {
1783
- for (g = 0; g < e3; g++) c[h + g] = i2[o2 + g];
1784
- h += e3;
1785
- } else if ("acTL" == r3) l2.tabs[r3] = { num_frames: f2(i2, o2), num_plays: f2(i2, o2 + 4) }, u = new Uint8Array(i2.length);
1786
- else if ("fcTL" == r3) {
1787
- if (0 != d) (E = l2.frames[l2.frames.length - 1]).data = _decompress(l2, u.slice(0, d), E.rect.width, E.rect.height), d = 0;
1788
- const e4 = { x: f2(i2, o2 + 12), y: f2(i2, o2 + 16), width: f2(i2, o2 + 4), height: f2(i2, o2 + 8) };
1789
- let t4 = s2(i2, o2 + 22);
1790
- t4 = s2(i2, o2 + 20) / (0 == t4 ? 100 : t4);
1791
- const r4 = { rect: e4, delay: Math.round(1e3 * t4), dispose: i2[o2 + 24], blend: i2[o2 + 25] };
1792
- l2.frames.push(r4);
1793
- } else if ("fdAT" == r3) {
1794
- for (g = 0; g < e3 - 4; g++) u[d + g] = i2[o2 + g + 4];
1795
- d += e3 - 4;
1796
- } else if ("pHYs" == r3) l2.tabs[r3] = [a2.readUint(i2, o2), a2.readUint(i2, o2 + 4), i2[o2 + 8]];
1797
- else if ("cHRM" == r3) {
1798
- l2.tabs[r3] = [];
1799
- for (g = 0; g < 8; g++) l2.tabs[r3].push(a2.readUint(i2, o2 + 4 * g));
1800
- } else if ("tEXt" == r3 || "zTXt" == r3) {
1801
- null == l2.tabs[r3] && (l2.tabs[r3] = {});
1802
- var m = a2.nextZero(i2, o2), w = a2.readASCII(i2, o2, m - o2), v = o2 + e3 - m - 1;
1803
- if ("tEXt" == r3) y = a2.readASCII(i2, m + 1, v);
1804
- else {
1805
- var b = _inflate(i2.slice(m + 2, m + 2 + v));
1806
- y = a2.readUTF8(b, 0, b.length);
1807
- }
1808
- l2.tabs[r3][w] = y;
1809
- } else if ("iTXt" == r3) {
1810
- null == l2.tabs[r3] && (l2.tabs[r3] = {});
1811
- m = 0, p = o2;
1812
- m = a2.nextZero(i2, p);
1813
- w = a2.readASCII(i2, p, m - p);
1814
- const t4 = i2[p = m + 1];
1815
- var y;
1816
- i2[p + 1], p += 2, m = a2.nextZero(i2, p), a2.readASCII(i2, p, m - p), p = m + 1, m = a2.nextZero(i2, p), a2.readUTF8(i2, p, m - p);
1817
- v = e3 - ((p = m + 1) - o2);
1818
- if (0 == t4) y = a2.readUTF8(i2, p, v);
1819
- else {
1820
- b = _inflate(i2.slice(p, p + v));
1821
- y = a2.readUTF8(b, 0, b.length);
1822
- }
1823
- l2.tabs[r3][w] = y;
1824
- } else if ("PLTE" == r3) l2.tabs[r3] = a2.readBytes(i2, o2, e3);
1825
- else if ("hIST" == r3) {
1826
- const e4 = l2.tabs.PLTE.length / 3;
1827
- l2.tabs[r3] = [];
1828
- for (g = 0; g < e4; g++) l2.tabs[r3].push(s2(i2, o2 + 2 * g));
1829
- } else if ("tRNS" == r3) 3 == l2.ctype ? l2.tabs[r3] = a2.readBytes(i2, o2, e3) : 0 == l2.ctype ? l2.tabs[r3] = s2(i2, o2) : 2 == l2.ctype && (l2.tabs[r3] = [s2(i2, o2), s2(i2, o2 + 2), s2(i2, o2 + 4)]);
1830
- else if ("gAMA" == r3) l2.tabs[r3] = a2.readUint(i2, o2) / 1e5;
1831
- else if ("sRGB" == r3) l2.tabs[r3] = i2[o2];
1832
- else if ("bKGD" == r3) 0 == l2.ctype || 4 == l2.ctype ? l2.tabs[r3] = [s2(i2, o2)] : 2 == l2.ctype || 6 == l2.ctype ? l2.tabs[r3] = [s2(i2, o2), s2(i2, o2 + 2), s2(i2, o2 + 4)] : 3 == l2.ctype && (l2.tabs[r3] = i2[o2]);
1833
- else if ("IEND" == r3) break;
1834
- o2 += e3, a2.readUint(i2, o2), o2 += 4;
1835
- }
1836
- var E;
1837
- return 0 != d && ((E = l2.frames[l2.frames.length - 1]).data = _decompress(l2, u.slice(0, d), E.rect.width, E.rect.height)), l2.data = _decompress(l2, c, l2.width, l2.height), delete l2.compress, delete l2.interlace, delete l2.filter, l2;
1838
- }, toRGBA8: function toRGBA8(e3) {
1839
- const t4 = e3.width, r2 = e3.height;
1840
- if (null == e3.tabs.acTL) return [decodeImage(e3.data, t4, r2, e3).buffer];
1841
- const i2 = [];
1842
- null == e3.frames[0].data && (e3.frames[0].data = e3.data);
1843
- const o2 = t4 * r2 * 4, a2 = new Uint8Array(o2), s2 = new Uint8Array(o2), f2 = new Uint8Array(o2);
1844
- for (let c = 0; c < e3.frames.length; c++) {
1845
- const u = e3.frames[c], h = u.rect.x, d = u.rect.y, A = u.rect.width, g = u.rect.height, p = decodeImage(u.data, A, g, e3);
1846
- if (0 != c) for (var l2 = 0; l2 < o2; l2++) f2[l2] = a2[l2];
1847
- if (0 == u.blend ? _copyTile(p, A, g, a2, t4, r2, h, d, 0) : 1 == u.blend && _copyTile(p, A, g, a2, t4, r2, h, d, 1), i2.push(a2.buffer.slice(0)), 0 == u.dispose) ;
1848
- else if (1 == u.dispose) _copyTile(s2, A, g, a2, t4, r2, h, d, 0);
1849
- else if (2 == u.dispose) for (l2 = 0; l2 < o2; l2++) a2[l2] = f2[l2];
1850
- }
1851
- return i2;
1852
- }, _paeth, _copyTile, _bin: e2 };
1853
- }();
1854
- !function() {
1855
- const { _copyTile: e2 } = UPNG, { _bin: t3 } = UPNG, r2 = UPNG._paeth;
1856
- var i2 = { table: function() {
1857
- const e3 = new Uint32Array(256);
1858
- for (let t4 = 0; t4 < 256; t4++) {
1859
- let r3 = t4;
1860
- for (let e4 = 0; e4 < 8; e4++) 1 & r3 ? r3 = 3988292384 ^ r3 >>> 1 : r3 >>>= 1;
1861
- e3[t4] = r3;
1862
- }
1863
- return e3;
1864
- }(), update(e3, t4, r3, o3) {
1865
- for (let a2 = 0; a2 < o3; a2++) e3 = i2.table[255 & (e3 ^ t4[r3 + a2])] ^ e3 >>> 8;
1866
- return e3;
1867
- }, crc: (e3, t4, r3) => 4294967295 ^ i2.update(4294967295, e3, t4, r3) };
1868
- function addErr(e3, t4, r3, i3) {
1869
- t4[r3] += e3[0] * i3 >> 4, t4[r3 + 1] += e3[1] * i3 >> 4, t4[r3 + 2] += e3[2] * i3 >> 4, t4[r3 + 3] += e3[3] * i3 >> 4;
1870
- }
1871
- function N(e3) {
1872
- return Math.max(0, Math.min(255, e3));
1873
- }
1874
- function D(e3, t4) {
1875
- const r3 = e3[0] - t4[0], i3 = e3[1] - t4[1], o3 = e3[2] - t4[2], a2 = e3[3] - t4[3];
1876
- return r3 * r3 + i3 * i3 + o3 * o3 + a2 * a2;
1877
- }
1878
- function dither(e3, t4, r3, i3, o3, a2, s2) {
1879
- null == s2 && (s2 = 1);
1880
- const f2 = i3.length, l2 = [];
1881
- for (var c = 0; c < f2; c++) {
1882
- const e4 = i3[c];
1883
- l2.push([e4 >>> 0 & 255, e4 >>> 8 & 255, e4 >>> 16 & 255, e4 >>> 24 & 255]);
1884
- }
1885
- for (c = 0; c < f2; c++) {
1886
- let e4 = 4294967295;
1887
- for (var u = 0, h = 0; h < f2; h++) {
1888
- var d = D(l2[c], l2[h]);
1889
- h != c && d < e4 && (e4 = d, u = h);
1890
- }
1891
- }
1892
- const A = new Uint32Array(o3.buffer), g = new Int16Array(t4 * r3 * 4), p = [0, 8, 2, 10, 12, 4, 14, 6, 3, 11, 1, 9, 15, 7, 13, 5];
1893
- for (c = 0; c < p.length; c++) p[c] = 255 * ((p[c] + 0.5) / 16 - 0.5);
1894
- for (let o4 = 0; o4 < r3; o4++) for (let w = 0; w < t4; w++) {
1895
- var m;
1896
- c = 4 * (o4 * t4 + w);
1897
- if (2 != s2) m = [N(e3[c] + g[c]), N(e3[c + 1] + g[c + 1]), N(e3[c + 2] + g[c + 2]), N(e3[c + 3] + g[c + 3])];
1898
- else {
1899
- d = p[4 * (3 & o4) + (3 & w)];
1900
- m = [N(e3[c] + d), N(e3[c + 1] + d), N(e3[c + 2] + d), N(e3[c + 3] + d)];
1901
- }
1902
- u = 0;
1903
- let v = 16777215;
1904
- for (h = 0; h < f2; h++) {
1905
- const e4 = D(m, l2[h]);
1906
- e4 < v && (v = e4, u = h);
1907
- }
1908
- const b = l2[u], y = [m[0] - b[0], m[1] - b[1], m[2] - b[2], m[3] - b[3]];
1909
- 1 == s2 && (w != t4 - 1 && addErr(y, g, c + 4, 7), o4 != r3 - 1 && (0 != w && addErr(y, g, c + 4 * t4 - 4, 3), addErr(y, g, c + 4 * t4, 5), w != t4 - 1 && addErr(y, g, c + 4 * t4 + 4, 1))), a2[c >> 2] = u, A[c >> 2] = i3[u];
1910
- }
1911
- }
1912
- function _main(e3, r3, o3, a2, s2) {
1913
- null == s2 && (s2 = {});
1914
- const { crc: f2 } = i2, l2 = t3.writeUint, c = t3.writeUshort, u = t3.writeASCII;
1915
- let h = 8;
1916
- const d = e3.frames.length > 1;
1917
- let A, g = false, p = 33 + (d ? 20 : 0);
1918
- if (null != s2.sRGB && (p += 13), null != s2.pHYs && (p += 21), null != s2.iCCP && (A = pako.deflate(s2.iCCP), p += 21 + A.length + 4), 3 == e3.ctype) {
1919
- for (var m = e3.plte.length, w = 0; w < m; w++) e3.plte[w] >>> 24 != 255 && (g = true);
1920
- p += 8 + 3 * m + 4 + (g ? 8 + 1 * m + 4 : 0);
1921
- }
1922
- for (var v = 0; v < e3.frames.length; v++) {
1923
- d && (p += 38), p += (F = e3.frames[v]).cimg.length + 12, 0 != v && (p += 4);
1924
- }
1925
- p += 12;
1926
- const b = new Uint8Array(p), y = [137, 80, 78, 71, 13, 10, 26, 10];
1927
- for (w = 0; w < 8; w++) b[w] = y[w];
1928
- if (l2(b, h, 13), h += 4, u(b, h, "IHDR"), h += 4, l2(b, h, r3), h += 4, l2(b, h, o3), h += 4, b[h] = e3.depth, h++, b[h] = e3.ctype, h++, b[h] = 0, h++, b[h] = 0, h++, b[h] = 0, h++, l2(b, h, f2(b, h - 17, 17)), h += 4, null != s2.sRGB && (l2(b, h, 1), h += 4, u(b, h, "sRGB"), h += 4, b[h] = s2.sRGB, h++, l2(b, h, f2(b, h - 5, 5)), h += 4), null != s2.iCCP) {
1929
- const e4 = 13 + A.length;
1930
- l2(b, h, e4), h += 4, u(b, h, "iCCP"), h += 4, u(b, h, "ICC profile"), h += 11, h += 2, b.set(A, h), h += A.length, l2(b, h, f2(b, h - (e4 + 4), e4 + 4)), h += 4;
1931
- }
1932
- if (null != s2.pHYs && (l2(b, h, 9), h += 4, u(b, h, "pHYs"), h += 4, l2(b, h, s2.pHYs[0]), h += 4, l2(b, h, s2.pHYs[1]), h += 4, b[h] = s2.pHYs[2], h++, l2(b, h, f2(b, h - 13, 13)), h += 4), d && (l2(b, h, 8), h += 4, u(b, h, "acTL"), h += 4, l2(b, h, e3.frames.length), h += 4, l2(b, h, null != s2.loop ? s2.loop : 0), h += 4, l2(b, h, f2(b, h - 12, 12)), h += 4), 3 == e3.ctype) {
1933
- l2(b, h, 3 * (m = e3.plte.length)), h += 4, u(b, h, "PLTE"), h += 4;
1934
- for (w = 0; w < m; w++) {
1935
- const t4 = 3 * w, r4 = e3.plte[w], i3 = 255 & r4, o4 = r4 >>> 8 & 255, a3 = r4 >>> 16 & 255;
1936
- b[h + t4 + 0] = i3, b[h + t4 + 1] = o4, b[h + t4 + 2] = a3;
1937
- }
1938
- if (h += 3 * m, l2(b, h, f2(b, h - 3 * m - 4, 3 * m + 4)), h += 4, g) {
1939
- l2(b, h, m), h += 4, u(b, h, "tRNS"), h += 4;
1940
- for (w = 0; w < m; w++) b[h + w] = e3.plte[w] >>> 24 & 255;
1941
- h += m, l2(b, h, f2(b, h - m - 4, m + 4)), h += 4;
1942
- }
1943
- }
1944
- let E = 0;
1945
- for (v = 0; v < e3.frames.length; v++) {
1946
- var F = e3.frames[v];
1947
- d && (l2(b, h, 26), h += 4, u(b, h, "fcTL"), h += 4, l2(b, h, E++), h += 4, l2(b, h, F.rect.width), h += 4, l2(b, h, F.rect.height), h += 4, l2(b, h, F.rect.x), h += 4, l2(b, h, F.rect.y), h += 4, c(b, h, a2[v]), h += 2, c(b, h, 1e3), h += 2, b[h] = F.dispose, h++, b[h] = F.blend, h++, l2(b, h, f2(b, h - 30, 30)), h += 4);
1948
- const t4 = F.cimg;
1949
- l2(b, h, (m = t4.length) + (0 == v ? 0 : 4)), h += 4;
1950
- const r4 = h;
1951
- u(b, h, 0 == v ? "IDAT" : "fdAT"), h += 4, 0 != v && (l2(b, h, E++), h += 4), b.set(t4, h), h += m, l2(b, h, f2(b, r4, h - r4)), h += 4;
1952
- }
1953
- return l2(b, h, 0), h += 4, u(b, h, "IEND"), h += 4, l2(b, h, f2(b, h - 4, 4)), h += 4, b.buffer;
1954
- }
1955
- function compressPNG(e3, t4, r3) {
1956
- for (let i3 = 0; i3 < e3.frames.length; i3++) {
1957
- const o3 = e3.frames[i3];
1958
- o3.rect.width;
1959
- const a2 = o3.rect.height, s2 = new Uint8Array(a2 * o3.bpl + a2);
1960
- o3.cimg = _filterZero(o3.img, a2, o3.bpp, o3.bpl, s2, t4, r3);
1961
- }
1962
- }
1963
- function compress2(t4, r3, i3, o3, a2) {
1964
- const s2 = a2[0], f2 = a2[1], l2 = a2[2], c = a2[3], u = a2[4], h = a2[5];
1965
- let d = 6, A = 8, g = 255;
1966
- for (var p = 0; p < t4.length; p++) {
1967
- const e3 = new Uint8Array(t4[p]);
1968
- for (var m = e3.length, w = 0; w < m; w += 4) g &= e3[w + 3];
1969
- }
1970
- const v = 255 != g, b = function framize(t5, r4, i4, o4, a3, s3) {
1971
- const f3 = [];
1972
- for (var l3 = 0; l3 < t5.length; l3++) {
1973
- const h3 = new Uint8Array(t5[l3]), A3 = new Uint32Array(h3.buffer);
1974
- var c2;
1975
- let g2 = 0, p2 = 0, m2 = r4, w2 = i4, v2 = o4 ? 1 : 0;
1976
- if (0 != l3) {
1977
- const b2 = s3 || o4 || 1 == l3 || 0 != f3[l3 - 2].dispose ? 1 : 2;
1978
- let y2 = 0, E2 = 1e9;
1979
- for (let e3 = 0; e3 < b2; e3++) {
1980
- var u2 = new Uint8Array(t5[l3 - 1 - e3]);
1981
- const o5 = new Uint32Array(t5[l3 - 1 - e3]);
1982
- let s4 = r4, f4 = i4, c3 = -1, h4 = -1;
1983
- for (let e4 = 0; e4 < i4; e4++) for (let t6 = 0; t6 < r4; t6++) {
1984
- A3[d2 = e4 * r4 + t6] != o5[d2] && (t6 < s4 && (s4 = t6), t6 > c3 && (c3 = t6), e4 < f4 && (f4 = e4), e4 > h4 && (h4 = e4));
1985
- }
1986
- -1 == c3 && (s4 = f4 = c3 = h4 = 0), a3 && (1 == (1 & s4) && s4--, 1 == (1 & f4) && f4--);
1987
- const v3 = (c3 - s4 + 1) * (h4 - f4 + 1);
1988
- v3 < E2 && (E2 = v3, y2 = e3, g2 = s4, p2 = f4, m2 = c3 - s4 + 1, w2 = h4 - f4 + 1);
1989
- }
1990
- u2 = new Uint8Array(t5[l3 - 1 - y2]);
1991
- 1 == y2 && (f3[l3 - 1].dispose = 2), c2 = new Uint8Array(m2 * w2 * 4), e2(u2, r4, i4, c2, m2, w2, -g2, -p2, 0), v2 = e2(h3, r4, i4, c2, m2, w2, -g2, -p2, 3) ? 1 : 0, 1 == v2 ? _prepareDiff(h3, r4, i4, c2, { x: g2, y: p2, width: m2, height: w2 }) : e2(h3, r4, i4, c2, m2, w2, -g2, -p2, 0);
1992
- } else c2 = h3.slice(0);
1993
- f3.push({ rect: { x: g2, y: p2, width: m2, height: w2 }, img: c2, blend: v2, dispose: 0 });
1994
- }
1995
- if (o4) for (l3 = 0; l3 < f3.length; l3++) {
1996
- if (1 == (A2 = f3[l3]).blend) continue;
1997
- const e3 = A2.rect, o5 = f3[l3 - 1].rect, s4 = Math.min(e3.x, o5.x), c3 = Math.min(e3.y, o5.y), u3 = { x: s4, y: c3, width: Math.max(e3.x + e3.width, o5.x + o5.width) - s4, height: Math.max(e3.y + e3.height, o5.y + o5.height) - c3 };
1998
- f3[l3 - 1].dispose = 1, l3 - 1 != 0 && _updateFrame(t5, r4, i4, f3, l3 - 1, u3, a3), _updateFrame(t5, r4, i4, f3, l3, u3, a3);
1999
- }
2000
- let h2 = 0;
2001
- if (1 != t5.length) for (var d2 = 0; d2 < f3.length; d2++) {
2002
- var A2;
2003
- h2 += (A2 = f3[d2]).rect.width * A2.rect.height;
2004
- }
2005
- return f3;
2006
- }(t4, r3, i3, s2, f2, l2), y = {}, E = [], F = [];
2007
- if (0 != o3) {
2008
- const e3 = [];
2009
- for (w = 0; w < b.length; w++) e3.push(b[w].img.buffer);
2010
- const t5 = function concatRGBA(e4) {
2011
- let t6 = 0;
2012
- for (var r5 = 0; r5 < e4.length; r5++) t6 += e4[r5].byteLength;
2013
- const i5 = new Uint8Array(t6);
2014
- let o4 = 0;
2015
- for (r5 = 0; r5 < e4.length; r5++) {
2016
- const t7 = new Uint8Array(e4[r5]), a3 = t7.length;
2017
- for (let e5 = 0; e5 < a3; e5 += 4) {
2018
- let r6 = t7[e5], a4 = t7[e5 + 1], s3 = t7[e5 + 2];
2019
- const f3 = t7[e5 + 3];
2020
- 0 == f3 && (r6 = a4 = s3 = 0), i5[o4 + e5] = r6, i5[o4 + e5 + 1] = a4, i5[o4 + e5 + 2] = s3, i5[o4 + e5 + 3] = f3;
2021
- }
2022
- o4 += a3;
2023
- }
2024
- return i5.buffer;
2025
- }(e3), r4 = quantize(t5, o3);
2026
- for (w = 0; w < r4.plte.length; w++) E.push(r4.plte[w].est.rgba);
2027
- let i4 = 0;
2028
- for (w = 0; w < b.length; w++) {
2029
- const e4 = (B = b[w]).img.length;
2030
- var _ = new Uint8Array(r4.inds.buffer, i4 >> 2, e4 >> 2);
2031
- F.push(_);
2032
- const t6 = new Uint8Array(r4.abuf, i4, e4);
2033
- h && dither(B.img, B.rect.width, B.rect.height, E, t6, _), B.img.set(t6), i4 += e4;
2034
- }
2035
- } else for (p = 0; p < b.length; p++) {
2036
- var B = b[p];
2037
- const e3 = new Uint32Array(B.img.buffer);
2038
- var U = B.rect.width;
2039
- m = e3.length, _ = new Uint8Array(m);
2040
- F.push(_);
2041
- for (w = 0; w < m; w++) {
2042
- const t5 = e3[w];
2043
- if (0 != w && t5 == e3[w - 1]) _[w] = _[w - 1];
2044
- else if (w > U && t5 == e3[w - U]) _[w] = _[w - U];
2045
- else {
2046
- let e4 = y[t5];
2047
- if (null == e4 && (y[t5] = e4 = E.length, E.push(t5), E.length >= 300)) break;
2048
- _[w] = e4;
2049
- }
2050
- }
2051
- }
2052
- const C = E.length;
2053
- C <= 256 && 0 == u && (A = C <= 2 ? 1 : C <= 4 ? 2 : C <= 16 ? 4 : 8, A = Math.max(A, c));
2054
- for (p = 0; p < b.length; p++) {
2055
- (B = b[p]).rect.x, B.rect.y;
2056
- U = B.rect.width;
2057
- const e3 = B.rect.height;
2058
- let t5 = B.img;
2059
- new Uint32Array(t5.buffer);
2060
- let r4 = 4 * U, i4 = 4;
2061
- if (C <= 256 && 0 == u) {
2062
- r4 = Math.ceil(A * U / 8);
2063
- var I = new Uint8Array(r4 * e3);
2064
- const o4 = F[p];
2065
- for (let t6 = 0; t6 < e3; t6++) {
2066
- w = t6 * r4;
2067
- const e4 = t6 * U;
2068
- if (8 == A) for (var Q = 0; Q < U; Q++) I[w + Q] = o4[e4 + Q];
2069
- else if (4 == A) for (Q = 0; Q < U; Q++) I[w + (Q >> 1)] |= o4[e4 + Q] << 4 - 4 * (1 & Q);
2070
- else if (2 == A) for (Q = 0; Q < U; Q++) I[w + (Q >> 2)] |= o4[e4 + Q] << 6 - 2 * (3 & Q);
2071
- else if (1 == A) for (Q = 0; Q < U; Q++) I[w + (Q >> 3)] |= o4[e4 + Q] << 7 - 1 * (7 & Q);
2072
- }
2073
- t5 = I, d = 3, i4 = 1;
2074
- } else if (0 == v && 1 == b.length) {
2075
- I = new Uint8Array(U * e3 * 3);
2076
- const o4 = U * e3;
2077
- for (w = 0; w < o4; w++) {
2078
- const e4 = 3 * w, r5 = 4 * w;
2079
- I[e4] = t5[r5], I[e4 + 1] = t5[r5 + 1], I[e4 + 2] = t5[r5 + 2];
2080
- }
2081
- t5 = I, d = 2, i4 = 3, r4 = 3 * U;
2082
- }
2083
- B.img = t5, B.bpl = r4, B.bpp = i4;
2084
- }
2085
- return { ctype: d, depth: A, plte: E, frames: b };
2086
- }
2087
- function _updateFrame(t4, r3, i3, o3, a2, s2, f2) {
2088
- const l2 = Uint8Array, c = Uint32Array, u = new l2(t4[a2 - 1]), h = new c(t4[a2 - 1]), d = a2 + 1 < t4.length ? new l2(t4[a2 + 1]) : null, A = new l2(t4[a2]), g = new c(A.buffer);
2089
- let p = r3, m = i3, w = -1, v = -1;
2090
- for (let e3 = 0; e3 < s2.height; e3++) for (let t5 = 0; t5 < s2.width; t5++) {
2091
- const i4 = s2.x + t5, f3 = s2.y + e3, l3 = f3 * r3 + i4, c2 = g[l3];
2092
- 0 == c2 || 0 == o3[a2 - 1].dispose && h[l3] == c2 && (null == d || 0 != d[4 * l3 + 3]) || (i4 < p && (p = i4), i4 > w && (w = i4), f3 < m && (m = f3), f3 > v && (v = f3));
2093
- }
2094
- -1 == w && (p = m = w = v = 0), f2 && (1 == (1 & p) && p--, 1 == (1 & m) && m--), s2 = { x: p, y: m, width: w - p + 1, height: v - m + 1 };
2095
- const b = o3[a2];
2096
- b.rect = s2, b.blend = 1, b.img = new Uint8Array(s2.width * s2.height * 4), 0 == o3[a2 - 1].dispose ? (e2(u, r3, i3, b.img, s2.width, s2.height, -s2.x, -s2.y, 0), _prepareDiff(A, r3, i3, b.img, s2)) : e2(A, r3, i3, b.img, s2.width, s2.height, -s2.x, -s2.y, 0);
2097
- }
2098
- function _prepareDiff(t4, r3, i3, o3, a2) {
2099
- e2(t4, r3, i3, o3, a2.width, a2.height, -a2.x, -a2.y, 2);
2100
- }
2101
- function _filterZero(e3, t4, r3, i3, o3, a2, s2) {
2102
- const f2 = [];
2103
- let l2, c = [0, 1, 2, 3, 4];
2104
- -1 != a2 ? c = [a2] : (t4 * i3 > 5e5 || 1 == r3) && (c = [0]), s2 && (l2 = { level: 0 });
2105
- const u = UZIP;
2106
- for (var h = 0; h < c.length; h++) {
2107
- for (let a3 = 0; a3 < t4; a3++) _filterLine(o3, e3, a3, i3, r3, c[h]);
2108
- f2.push(u.deflate(o3, l2));
2109
- }
2110
- let d, A = 1e9;
2111
- for (h = 0; h < f2.length; h++) f2[h].length < A && (d = h, A = f2[h].length);
2112
- return f2[d];
2113
- }
2114
- function _filterLine(e3, t4, i3, o3, a2, s2) {
2115
- const f2 = i3 * o3;
2116
- let l2 = f2 + i3;
2117
- if (e3[l2] = s2, l2++, 0 == s2) if (o3 < 500) for (var c = 0; c < o3; c++) e3[l2 + c] = t4[f2 + c];
2118
- else e3.set(new Uint8Array(t4.buffer, f2, o3), l2);
2119
- else if (1 == s2) {
2120
- for (c = 0; c < a2; c++) e3[l2 + c] = t4[f2 + c];
2121
- for (c = a2; c < o3; c++) e3[l2 + c] = t4[f2 + c] - t4[f2 + c - a2] + 256 & 255;
2122
- } else if (0 == i3) {
2123
- for (c = 0; c < a2; c++) e3[l2 + c] = t4[f2 + c];
2124
- if (2 == s2) for (c = a2; c < o3; c++) e3[l2 + c] = t4[f2 + c];
2125
- if (3 == s2) for (c = a2; c < o3; c++) e3[l2 + c] = t4[f2 + c] - (t4[f2 + c - a2] >> 1) + 256 & 255;
2126
- if (4 == s2) for (c = a2; c < o3; c++) e3[l2 + c] = t4[f2 + c] - r2(t4[f2 + c - a2], 0, 0) + 256 & 255;
2127
- } else {
2128
- if (2 == s2) for (c = 0; c < o3; c++) e3[l2 + c] = t4[f2 + c] + 256 - t4[f2 + c - o3] & 255;
2129
- if (3 == s2) {
2130
- for (c = 0; c < a2; c++) e3[l2 + c] = t4[f2 + c] + 256 - (t4[f2 + c - o3] >> 1) & 255;
2131
- for (c = a2; c < o3; c++) e3[l2 + c] = t4[f2 + c] + 256 - (t4[f2 + c - o3] + t4[f2 + c - a2] >> 1) & 255;
2132
- }
2133
- if (4 == s2) {
2134
- for (c = 0; c < a2; c++) e3[l2 + c] = t4[f2 + c] + 256 - r2(0, t4[f2 + c - o3], 0) & 255;
2135
- for (c = a2; c < o3; c++) e3[l2 + c] = t4[f2 + c] + 256 - r2(t4[f2 + c - a2], t4[f2 + c - o3], t4[f2 + c - a2 - o3]) & 255;
2136
- }
2137
- }
2138
- }
2139
- function quantize(e3, t4) {
2140
- const r3 = new Uint8Array(e3), i3 = r3.slice(0), o3 = new Uint32Array(i3.buffer), a2 = getKDtree(i3, t4), s2 = a2[0], f2 = a2[1], l2 = r3.length, c = new Uint8Array(l2 >> 2);
2141
- let u;
2142
- if (r3.length < 2e7) for (var h = 0; h < l2; h += 4) {
2143
- u = getNearest(s2, d = r3[h] * (1 / 255), A = r3[h + 1] * (1 / 255), g = r3[h + 2] * (1 / 255), p = r3[h + 3] * (1 / 255)), c[h >> 2] = u.ind, o3[h >> 2] = u.est.rgba;
2144
- }
2145
- else for (h = 0; h < l2; h += 4) {
2146
- var d = r3[h] * (1 / 255), A = r3[h + 1] * (1 / 255), g = r3[h + 2] * (1 / 255), p = r3[h + 3] * (1 / 255);
2147
- for (u = s2; u.left; ) u = planeDst(u.est, d, A, g, p) <= 0 ? u.left : u.right;
2148
- c[h >> 2] = u.ind, o3[h >> 2] = u.est.rgba;
2149
- }
2150
- return { abuf: i3.buffer, inds: c, plte: f2 };
2151
- }
2152
- function getKDtree(e3, t4, r3) {
2153
- null == r3 && (r3 = 1e-4);
2154
- const i3 = new Uint32Array(e3.buffer), o3 = { i0: 0, i1: e3.length, bst: null, est: null, tdst: 0, left: null, right: null };
2155
- o3.bst = stats(e3, o3.i0, o3.i1), o3.est = estats(o3.bst);
2156
- const a2 = [o3];
2157
- for (; a2.length < t4; ) {
2158
- let t5 = 0, o4 = 0;
2159
- for (var s2 = 0; s2 < a2.length; s2++) a2[s2].est.L > t5 && (t5 = a2[s2].est.L, o4 = s2);
2160
- if (t5 < r3) break;
2161
- const f2 = a2[o4], l2 = splitPixels(e3, i3, f2.i0, f2.i1, f2.est.e, f2.est.eMq255);
2162
- if (f2.i0 >= l2 || f2.i1 <= l2) {
2163
- f2.est.L = 0;
2164
- continue;
2165
- }
2166
- const c = { i0: f2.i0, i1: l2, bst: null, est: null, tdst: 0, left: null, right: null };
2167
- c.bst = stats(e3, c.i0, c.i1), c.est = estats(c.bst);
2168
- const u = { i0: l2, i1: f2.i1, bst: null, est: null, tdst: 0, left: null, right: null };
2169
- u.bst = { R: [], m: [], N: f2.bst.N - c.bst.N };
2170
- for (s2 = 0; s2 < 16; s2++) u.bst.R[s2] = f2.bst.R[s2] - c.bst.R[s2];
2171
- for (s2 = 0; s2 < 4; s2++) u.bst.m[s2] = f2.bst.m[s2] - c.bst.m[s2];
2172
- u.est = estats(u.bst), f2.left = c, f2.right = u, a2[o4] = c, a2.push(u);
2173
- }
2174
- a2.sort((e4, t5) => t5.bst.N - e4.bst.N);
2175
- for (s2 = 0; s2 < a2.length; s2++) a2[s2].ind = s2;
2176
- return [o3, a2];
2177
- }
2178
- function getNearest(e3, t4, r3, i3, o3) {
2179
- if (null == e3.left) return e3.tdst = function dist(e4, t5, r4, i4, o4) {
2180
- const a3 = t5 - e4[0], s3 = r4 - e4[1], f3 = i4 - e4[2], l3 = o4 - e4[3];
2181
- return a3 * a3 + s3 * s3 + f3 * f3 + l3 * l3;
2182
- }(e3.est.q, t4, r3, i3, o3), e3;
2183
- const a2 = planeDst(e3.est, t4, r3, i3, o3);
2184
- let s2 = e3.left, f2 = e3.right;
2185
- a2 > 0 && (s2 = e3.right, f2 = e3.left);
2186
- const l2 = getNearest(s2, t4, r3, i3, o3);
2187
- if (l2.tdst <= a2 * a2) return l2;
2188
- const c = getNearest(f2, t4, r3, i3, o3);
2189
- return c.tdst < l2.tdst ? c : l2;
2190
- }
2191
- function planeDst(e3, t4, r3, i3, o3) {
2192
- const { e: a2 } = e3;
2193
- return a2[0] * t4 + a2[1] * r3 + a2[2] * i3 + a2[3] * o3 - e3.eMq;
2194
- }
2195
- function splitPixels(e3, t4, r3, i3, o3, a2) {
2196
- for (i3 -= 4; r3 < i3; ) {
2197
- for (; vecDot(e3, r3, o3) <= a2; ) r3 += 4;
2198
- for (; vecDot(e3, i3, o3) > a2; ) i3 -= 4;
2199
- if (r3 >= i3) break;
2200
- const s2 = t4[r3 >> 2];
2201
- t4[r3 >> 2] = t4[i3 >> 2], t4[i3 >> 2] = s2, r3 += 4, i3 -= 4;
2202
- }
2203
- for (; vecDot(e3, r3, o3) > a2; ) r3 -= 4;
2204
- return r3 + 4;
2205
- }
2206
- function vecDot(e3, t4, r3) {
2207
- return e3[t4] * r3[0] + e3[t4 + 1] * r3[1] + e3[t4 + 2] * r3[2] + e3[t4 + 3] * r3[3];
2208
- }
2209
- function stats(e3, t4, r3) {
2210
- const i3 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], o3 = [0, 0, 0, 0], a2 = r3 - t4 >> 2;
2211
- for (let a3 = t4; a3 < r3; a3 += 4) {
2212
- const t5 = e3[a3] * (1 / 255), r4 = e3[a3 + 1] * (1 / 255), s2 = e3[a3 + 2] * (1 / 255), f2 = e3[a3 + 3] * (1 / 255);
2213
- o3[0] += t5, o3[1] += r4, o3[2] += s2, o3[3] += f2, i3[0] += t5 * t5, i3[1] += t5 * r4, i3[2] += t5 * s2, i3[3] += t5 * f2, i3[5] += r4 * r4, i3[6] += r4 * s2, i3[7] += r4 * f2, i3[10] += s2 * s2, i3[11] += s2 * f2, i3[15] += f2 * f2;
2214
- }
2215
- return i3[4] = i3[1], i3[8] = i3[2], i3[9] = i3[6], i3[12] = i3[3], i3[13] = i3[7], i3[14] = i3[11], { R: i3, m: o3, N: a2 };
2216
- }
2217
- function estats(e3) {
2218
- const { R: t4 } = e3, { m: r3 } = e3, { N: i3 } = e3, a2 = r3[0], s2 = r3[1], f2 = r3[2], l2 = r3[3], c = 0 == i3 ? 0 : 1 / i3, u = [t4[0] - a2 * a2 * c, t4[1] - a2 * s2 * c, t4[2] - a2 * f2 * c, t4[3] - a2 * l2 * c, t4[4] - s2 * a2 * c, t4[5] - s2 * s2 * c, t4[6] - s2 * f2 * c, t4[7] - s2 * l2 * c, t4[8] - f2 * a2 * c, t4[9] - f2 * s2 * c, t4[10] - f2 * f2 * c, t4[11] - f2 * l2 * c, t4[12] - l2 * a2 * c, t4[13] - l2 * s2 * c, t4[14] - l2 * f2 * c, t4[15] - l2 * l2 * c], h = u, d = o2;
2219
- let A = [Math.random(), Math.random(), Math.random(), Math.random()], g = 0, p = 0;
2220
- if (0 != i3) for (let e4 = 0; e4 < 16 && (A = d.multVec(h, A), p = Math.sqrt(d.dot(A, A)), A = d.sml(1 / p, A), !(0 != e4 && Math.abs(p - g) < 1e-9)); e4++) g = p;
2221
- const m = [a2 * c, s2 * c, f2 * c, l2 * c];
2222
- return { Cov: u, q: m, e: A, L: g, eMq255: d.dot(d.sml(255, m), A), eMq: d.dot(A, m), rgba: (Math.round(255 * m[3]) << 24 | Math.round(255 * m[2]) << 16 | Math.round(255 * m[1]) << 8 | Math.round(255 * m[0]) << 0) >>> 0 };
2223
- }
2224
- var o2 = { multVec: (e3, t4) => [e3[0] * t4[0] + e3[1] * t4[1] + e3[2] * t4[2] + e3[3] * t4[3], e3[4] * t4[0] + e3[5] * t4[1] + e3[6] * t4[2] + e3[7] * t4[3], e3[8] * t4[0] + e3[9] * t4[1] + e3[10] * t4[2] + e3[11] * t4[3], e3[12] * t4[0] + e3[13] * t4[1] + e3[14] * t4[2] + e3[15] * t4[3]], dot: (e3, t4) => e3[0] * t4[0] + e3[1] * t4[1] + e3[2] * t4[2] + e3[3] * t4[3], sml: (e3, t4) => [e3 * t4[0], e3 * t4[1], e3 * t4[2], e3 * t4[3]] };
2225
- UPNG.encode = function encode2(e3, t4, r3, i3, o3, a2, s2) {
2226
- null == i3 && (i3 = 0), null == s2 && (s2 = false);
2227
- const f2 = compress2(e3, t4, r3, i3, [false, false, false, 0, s2, false]);
2228
- return compressPNG(f2, -1), _main(f2, t4, r3, o3, a2);
2229
- }, UPNG.encodeLL = function encodeLL(e3, t4, r3, i3, o3, a2, s2, f2) {
2230
- const l2 = { ctype: 0 + (1 == i3 ? 0 : 2) + (0 == o3 ? 0 : 4), depth: a2, frames: [] }, c = (i3 + o3) * a2, u = c * t4;
2231
- for (let i4 = 0; i4 < e3.length; i4++) l2.frames.push({ rect: { x: 0, y: 0, width: t4, height: r3 }, img: new Uint8Array(e3[i4]), blend: 0, dispose: 1, bpp: Math.ceil(c / 8), bpl: Math.ceil(u / 8) });
2232
- return compressPNG(l2, 0, true), _main(l2, t4, r3, s2, f2);
2233
- }, UPNG.encode.compress = compress2, UPNG.encode.dither = dither, UPNG.quantize = quantize, UPNG.quantize.getKDtree = getKDtree, UPNG.quantize.getNearest = getNearest;
2234
- }();
2235
- const t2 = { toArrayBuffer(e2, r2) {
2236
- const i2 = e2.width, o2 = e2.height, a2 = i2 << 2, s2 = e2.getContext("2d").getImageData(0, 0, i2, o2), f2 = new Uint32Array(s2.data.buffer), l2 = (32 * i2 + 31) / 32 << 2, c = l2 * o2, u = 122 + c, h = new ArrayBuffer(u), d = new DataView(h), A = 1 << 20;
2237
- let g, p, m, w, v = A, b = 0, y = 0, E = 0;
2238
- function set16(e3) {
2239
- d.setUint16(y, e3, true), y += 2;
2240
- }
2241
- function set32(e3) {
2242
- d.setUint32(y, e3, true), y += 4;
2243
- }
2244
- function seek(e3) {
2245
- y += e3;
2246
- }
2247
- set16(19778), set32(u), seek(4), set32(122), set32(108), set32(i2), set32(-o2 >>> 0), set16(1), set16(32), set32(3), set32(c), set32(2835), set32(2835), seek(8), set32(16711680), set32(65280), set32(255), set32(4278190080), set32(1466527264), function convert() {
2248
- for (; b < o2 && v > 0; ) {
2249
- for (w = 122 + b * l2, g = 0; g < a2; ) v--, p = f2[E++], m = p >>> 24, d.setUint32(w + g, p << 8 | m), g += 4;
2250
- b++;
2251
- }
2252
- E < f2.length ? (v = A, setTimeout(convert, t2._dly)) : r2(h);
2253
- }();
2254
- }, toBlob(e2, t3) {
2255
- this.toArrayBuffer(e2, (e3) => {
2256
- t3(new Blob([e3], { type: "image/bmp" }));
2257
- });
2258
- }, _dly: 9 };
2259
- var r = { CHROME: "CHROME", FIREFOX: "FIREFOX", DESKTOP_SAFARI: "DESKTOP_SAFARI", IE: "IE", IOS: "IOS", ETC: "ETC" }, i = { [r.CHROME]: 16384, [r.FIREFOX]: 11180, [r.DESKTOP_SAFARI]: 16384, [r.IE]: 8192, [r.IOS]: 4096, [r.ETC]: 8192 };
2260
- const o = "undefined" != typeof window, a = "undefined" != typeof WorkerGlobalScope && self instanceof WorkerGlobalScope, s = o && window.cordova && window.cordova.require && window.cordova.require("cordova/modulemapper"), CustomFile = (o || a) && (s && s.getOriginalSymbol(window, "File") || "undefined" != typeof File && File), CustomFileReader = (o || a) && (s && s.getOriginalSymbol(window, "FileReader") || "undefined" != typeof FileReader && FileReader);
2261
- function getFilefromDataUrl(e2, t3, r2 = Date.now()) {
2262
- return new Promise((i2) => {
2263
- const o2 = e2.split(","), a2 = o2[0].match(/:(.*?);/)[1], s2 = globalThis.atob(o2[1]);
2264
- let f2 = s2.length;
2265
- const l2 = new Uint8Array(f2);
2266
- for (; f2--; ) l2[f2] = s2.charCodeAt(f2);
2267
- const c = new Blob([l2], { type: a2 });
2268
- c.name = t3, c.lastModified = r2, i2(c);
2269
- });
2270
- }
2271
- function getDataUrlFromFile(e2) {
2272
- return new Promise((t3, r2) => {
2273
- const i2 = new CustomFileReader();
2274
- i2.onload = () => t3(i2.result), i2.onerror = (e3) => r2(e3), i2.readAsDataURL(e2);
2275
- });
2276
- }
2277
- function loadImage(e2) {
2278
- return new Promise((t3, r2) => {
2279
- const i2 = new Image();
2280
- i2.onload = () => t3(i2), i2.onerror = (e3) => r2(e3), i2.src = e2;
2281
- });
2282
- }
2283
- function getBrowserName() {
2284
- if (void 0 !== getBrowserName.cachedResult) return getBrowserName.cachedResult;
2285
- let e2 = r.ETC;
2286
- const { userAgent: t3 } = navigator;
2287
- return /Chrom(e|ium)/i.test(t3) ? e2 = r.CHROME : /iP(ad|od|hone)/i.test(t3) && /WebKit/i.test(t3) ? e2 = r.IOS : /Safari/i.test(t3) ? e2 = r.DESKTOP_SAFARI : /Firefox/i.test(t3) ? e2 = r.FIREFOX : (/MSIE/i.test(t3) || true == !!document.documentMode) && (e2 = r.IE), getBrowserName.cachedResult = e2, getBrowserName.cachedResult;
2288
- }
2289
- function approximateBelowMaximumCanvasSizeOfBrowser(e2, t3) {
2290
- const r2 = getBrowserName(), o2 = i[r2];
2291
- let a2 = e2, s2 = t3, f2 = a2 * s2;
2292
- const l2 = a2 > s2 ? s2 / a2 : a2 / s2;
2293
- for (; f2 > o2 * o2; ) {
2294
- const e3 = (o2 + a2) / 2, t4 = (o2 + s2) / 2;
2295
- e3 < t4 ? (s2 = t4, a2 = t4 * l2) : (s2 = e3 * l2, a2 = e3), f2 = a2 * s2;
2296
- }
2297
- return { width: a2, height: s2 };
2298
- }
2299
- function getNewCanvasAndCtx(e2, t3) {
2300
- let r2, i2;
2301
- try {
2302
- if (r2 = new OffscreenCanvas(e2, t3), i2 = r2.getContext("2d"), null === i2) throw new Error("getContext of OffscreenCanvas returns null");
2303
- } catch (e3) {
2304
- r2 = document.createElement("canvas"), i2 = r2.getContext("2d");
2305
- }
2306
- return r2.width = e2, r2.height = t3, [r2, i2];
2307
- }
2308
- function drawImageInCanvas(e2, t3) {
2309
- const { width: r2, height: i2 } = approximateBelowMaximumCanvasSizeOfBrowser(e2.width, e2.height), [o2, a2] = getNewCanvasAndCtx(r2, i2);
2310
- return t3 && /jpe?g/.test(t3) && (a2.fillStyle = "white", a2.fillRect(0, 0, o2.width, o2.height)), a2.drawImage(e2, 0, 0, o2.width, o2.height), o2;
2311
- }
2312
- function isIOS() {
2313
- return void 0 !== isIOS.cachedResult || (isIOS.cachedResult = ["iPad Simulator", "iPhone Simulator", "iPod Simulator", "iPad", "iPhone", "iPod"].includes(navigator.platform) || navigator.userAgent.includes("Mac") && "undefined" != typeof document && "ontouchend" in document), isIOS.cachedResult;
2314
- }
2315
- function drawFileInCanvas(e2, t3 = {}) {
2316
- return new Promise(function(i2, o2) {
2317
- let a2, s2;
2318
- var $Try_2_Post = function() {
2319
- try {
2320
- return s2 = drawImageInCanvas(a2, t3.fileType || e2.type), i2([a2, s2]);
2321
- } catch (e3) {
2322
- return o2(e3);
2323
- }
2324
- }, $Try_2_Catch = function(t4) {
2325
- try {
2326
- 0;
2327
- var $Try_3_Catch = function(e3) {
2328
- try {
2329
- throw e3;
2330
- } catch (e4) {
2331
- return o2(e4);
2332
- }
2333
- };
2334
- try {
2335
- let t5;
2336
- return getDataUrlFromFile(e2).then(function(e3) {
2337
- try {
2338
- return t5 = e3, loadImage(t5).then(function(e4) {
2339
- try {
2340
- return a2 = e4, function() {
2341
- try {
2342
- return $Try_2_Post();
2343
- } catch (e5) {
2344
- return o2(e5);
2345
- }
2346
- }();
2347
- } catch (e5) {
2348
- return $Try_3_Catch(e5);
2349
- }
2350
- }, $Try_3_Catch);
2351
- } catch (e4) {
2352
- return $Try_3_Catch(e4);
2353
- }
2354
- }, $Try_3_Catch);
2355
- } catch (e3) {
2356
- $Try_3_Catch(e3);
2357
- }
2358
- } catch (e3) {
2359
- return o2(e3);
2360
- }
2361
- };
2362
- try {
2363
- if (isIOS() || [r.DESKTOP_SAFARI, r.MOBILE_SAFARI].includes(getBrowserName())) throw new Error("Skip createImageBitmap on IOS and Safari");
2364
- return createImageBitmap(e2).then(function(e3) {
2365
- try {
2366
- return a2 = e3, $Try_2_Post();
2367
- } catch (e4) {
2368
- return $Try_2_Catch();
2369
- }
2370
- }, $Try_2_Catch);
2371
- } catch (e3) {
2372
- $Try_2_Catch();
2373
- }
2374
- });
2375
- }
2376
- function canvasToFile(e2, r2, i2, o2, a2 = 1) {
2377
- return new Promise(function(s2, f2) {
2378
- let l2;
2379
- if ("image/png" === r2) {
2380
- let c, u, h;
2381
- return c = e2.getContext("2d"), { data: u } = c.getImageData(0, 0, e2.width, e2.height), h = UPNG.encode([u.buffer], e2.width, e2.height, 4096 * a2), l2 = new Blob([h], { type: r2 }), l2.name = i2, l2.lastModified = o2, $If_4.call(this);
2382
- }
2383
- {
2384
- let $If_5 = function() {
2385
- return $If_4.call(this);
2386
- };
2387
- if ("image/bmp" === r2) return new Promise((r3) => t2.toBlob(e2, r3)).then(function(e3) {
2388
- try {
2389
- return l2 = e3, l2.name = i2, l2.lastModified = o2, $If_5.call(this);
2390
- } catch (e4) {
2391
- return f2(e4);
2392
- }
2393
- }.bind(this), f2);
2394
- {
2395
- let $If_6 = function() {
2396
- return $If_5.call(this);
2397
- };
2398
- if ("function" == typeof OffscreenCanvas && e2 instanceof OffscreenCanvas) return e2.convertToBlob({ type: r2, quality: a2 }).then(function(e3) {
2399
- try {
2400
- return l2 = e3, l2.name = i2, l2.lastModified = o2, $If_6.call(this);
2401
- } catch (e4) {
2402
- return f2(e4);
2403
- }
2404
- }.bind(this), f2);
2405
- {
2406
- let d;
2407
- return d = e2.toDataURL(r2, a2), getFilefromDataUrl(d, i2, o2).then(function(e3) {
2408
- try {
2409
- return l2 = e3, $If_6.call(this);
2410
- } catch (e4) {
2411
- return f2(e4);
2412
- }
2413
- }.bind(this), f2);
2414
- }
2415
- }
2416
- }
2417
- function $If_4() {
2418
- return s2(l2);
2419
- }
2420
- });
2421
- }
2422
- function cleanupCanvasMemory(e2) {
2423
- e2.width = 0, e2.height = 0;
2424
- }
2425
- function isAutoOrientationInBrowser() {
2426
- return new Promise(function(e2, t3) {
2427
- let r2, i2, o2, a2, s2;
2428
- return void 0 !== isAutoOrientationInBrowser.cachedResult ? e2(isAutoOrientationInBrowser.cachedResult) : (r2 = "data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/xABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==", getFilefromDataUrl("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/xABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==", "test.jpg", Date.now()).then(function(r3) {
2429
- try {
2430
- return i2 = r3, drawFileInCanvas(i2).then(function(r4) {
2431
- try {
2432
- return o2 = r4[1], canvasToFile(o2, i2.type, i2.name, i2.lastModified).then(function(r5) {
2433
- try {
2434
- return a2 = r5, cleanupCanvasMemory(o2), drawFileInCanvas(a2).then(function(r6) {
2435
- try {
2436
- return s2 = r6[0], isAutoOrientationInBrowser.cachedResult = 1 === s2.width && 2 === s2.height, e2(isAutoOrientationInBrowser.cachedResult);
2437
- } catch (e3) {
2438
- return t3(e3);
2439
- }
2440
- }, t3);
2441
- } catch (e3) {
2442
- return t3(e3);
2443
- }
2444
- }, t3);
2445
- } catch (e3) {
2446
- return t3(e3);
2447
- }
2448
- }, t3);
2449
- } catch (e3) {
2450
- return t3(e3);
2451
- }
2452
- }, t3));
2453
- });
2454
- }
2455
- function getExifOrientation(e2) {
2456
- return new Promise((t3, r2) => {
2457
- const i2 = new CustomFileReader();
2458
- i2.onload = (e3) => {
2459
- const r3 = new DataView(e3.target.result);
2460
- if (65496 != r3.getUint16(0, false)) return t3(-2);
2461
- const i3 = r3.byteLength;
2462
- let o2 = 2;
2463
- for (; o2 < i3; ) {
2464
- if (r3.getUint16(o2 + 2, false) <= 8) return t3(-1);
2465
- const e4 = r3.getUint16(o2, false);
2466
- if (o2 += 2, 65505 == e4) {
2467
- if (1165519206 != r3.getUint32(o2 += 2, false)) return t3(-1);
2468
- const e5 = 18761 == r3.getUint16(o2 += 6, false);
2469
- o2 += r3.getUint32(o2 + 4, e5);
2470
- const i4 = r3.getUint16(o2, e5);
2471
- o2 += 2;
2472
- for (let a2 = 0; a2 < i4; a2++) if (274 == r3.getUint16(o2 + 12 * a2, e5)) return t3(r3.getUint16(o2 + 12 * a2 + 8, e5));
2473
- } else {
2474
- if (65280 != (65280 & e4)) break;
2475
- o2 += r3.getUint16(o2, false);
2476
- }
2477
- }
2478
- return t3(-1);
2479
- }, i2.onerror = (e3) => r2(e3), i2.readAsArrayBuffer(e2);
2480
- });
2481
- }
2482
- function handleMaxWidthOrHeight(e2, t3) {
2483
- const { width: r2 } = e2, { height: i2 } = e2, { maxWidthOrHeight: o2 } = t3;
2484
- let a2, s2 = e2;
2485
- return isFinite(o2) && (r2 > o2 || i2 > o2) && ([s2, a2] = getNewCanvasAndCtx(r2, i2), r2 > i2 ? (s2.width = o2, s2.height = i2 / r2 * o2) : (s2.width = r2 / i2 * o2, s2.height = o2), a2.drawImage(e2, 0, 0, s2.width, s2.height), cleanupCanvasMemory(e2)), s2;
2486
- }
2487
- function followExifOrientation(e2, t3) {
2488
- const { width: r2 } = e2, { height: i2 } = e2, [o2, a2] = getNewCanvasAndCtx(r2, i2);
2489
- switch (t3 > 4 && t3 < 9 ? (o2.width = i2, o2.height = r2) : (o2.width = r2, o2.height = i2), t3) {
2490
- case 2:
2491
- a2.transform(-1, 0, 0, 1, r2, 0);
2492
- break;
2493
- case 3:
2494
- a2.transform(-1, 0, 0, -1, r2, i2);
2495
- break;
2496
- case 4:
2497
- a2.transform(1, 0, 0, -1, 0, i2);
2498
- break;
2499
- case 5:
2500
- a2.transform(0, 1, 1, 0, 0, 0);
2501
- break;
2502
- case 6:
2503
- a2.transform(0, 1, -1, 0, i2, 0);
2504
- break;
2505
- case 7:
2506
- a2.transform(0, -1, -1, 0, i2, r2);
2507
- break;
2508
- case 8:
2509
- a2.transform(0, -1, 1, 0, 0, r2);
2510
- }
2511
- return a2.drawImage(e2, 0, 0, r2, i2), cleanupCanvasMemory(e2), o2;
2512
- }
2513
- function compress(e2, t3, r2 = 0) {
2514
- return new Promise(function(i2, o2) {
2515
- let a2, s2, f2, l2, c, u, h, d, A, g, p, m, w, v, b, y, E, F, _, B;
2516
- function incProgress(e3 = 5) {
2517
- if (t3.signal && t3.signal.aborted) throw t3.signal.reason;
2518
- a2 += e3, t3.onProgress(Math.min(a2, 100));
2519
- }
2520
- function setProgress(e3) {
2521
- if (t3.signal && t3.signal.aborted) throw t3.signal.reason;
2522
- a2 = Math.min(Math.max(e3, a2), 100), t3.onProgress(a2);
2523
- }
2524
- return a2 = r2, s2 = t3.maxIteration || 10, f2 = 1024 * t3.maxSizeMB * 1024, incProgress(), drawFileInCanvas(e2, t3).then(function(r3) {
2525
- try {
2526
- return [, l2] = r3, incProgress(), c = handleMaxWidthOrHeight(l2, t3), incProgress(), new Promise(function(r4, i3) {
2527
- var o3;
2528
- if (!(o3 = t3.exifOrientation)) return getExifOrientation(e2).then(function(e3) {
2529
- try {
2530
- return o3 = e3, $If_2.call(this);
2531
- } catch (e4) {
2532
- return i3(e4);
2533
- }
2534
- }.bind(this), i3);
2535
- function $If_2() {
2536
- return r4(o3);
2537
- }
2538
- return $If_2.call(this);
2539
- }).then(function(r4) {
2540
- try {
2541
- return u = r4, incProgress(), isAutoOrientationInBrowser().then(function(r5) {
2542
- try {
2543
- return h = r5 ? c : followExifOrientation(c, u), incProgress(), d = t3.initialQuality || 1, A = t3.fileType || e2.type, canvasToFile(h, A, e2.name, e2.lastModified, d).then(function(r6) {
2544
- try {
2545
- {
2546
- let $Loop_3 = function() {
2547
- if (s2-- && (b > f2 || b > w)) {
2548
- let t4, r7;
2549
- return t4 = B ? 0.95 * _.width : _.width, r7 = B ? 0.95 * _.height : _.height, [E, F] = getNewCanvasAndCtx(t4, r7), F.drawImage(_, 0, 0, t4, r7), d *= "image/png" === A ? 0.85 : 0.95, canvasToFile(E, A, e2.name, e2.lastModified, d).then(function(e3) {
2550
- try {
2551
- return y = e3, cleanupCanvasMemory(_), _ = E, b = y.size, setProgress(Math.min(99, Math.floor((v - b) / (v - f2) * 100))), $Loop_3;
2552
- } catch (e4) {
2553
- return o2(e4);
2554
- }
2555
- }, o2);
2556
- }
2557
- return [1];
2558
- }, $Loop_3_exit = function() {
2559
- return cleanupCanvasMemory(_), cleanupCanvasMemory(E), cleanupCanvasMemory(c), cleanupCanvasMemory(h), cleanupCanvasMemory(l2), setProgress(100), i2(y);
2560
- };
2561
- if (g = r6, incProgress(), p = g.size > f2, m = g.size > e2.size, !p && !m) return setProgress(100), i2(g);
2562
- var a3;
2563
- return w = e2.size, v = g.size, b = v, _ = h, B = !t3.alwaysKeepResolution && p, (a3 = function(e3) {
2564
- for (; e3; ) {
2565
- if (e3.then) return void e3.then(a3, o2);
2566
- try {
2567
- if (e3.pop) {
2568
- if (e3.length) return e3.pop() ? $Loop_3_exit.call(this) : e3;
2569
- e3 = $Loop_3;
2570
- } else e3 = e3.call(this);
2571
- } catch (e4) {
2572
- return o2(e4);
2573
- }
2574
- }
2575
- }.bind(this))($Loop_3);
2576
- }
2577
- } catch (u2) {
2578
- return o2(u2);
2579
- }
2580
- }.bind(this), o2);
2581
- } catch (e3) {
2582
- return o2(e3);
2583
- }
2584
- }.bind(this), o2);
2585
- } catch (e3) {
2586
- return o2(e3);
2587
- }
2588
- }.bind(this), o2);
2589
- } catch (e3) {
2590
- return o2(e3);
2591
- }
2592
- }.bind(this), o2);
2593
- });
2594
- }
2595
- const f = "\nlet scriptImported = false\nself.addEventListener('message', async (e) => {\n const { file, id, imageCompressionLibUrl, options } = e.data\n options.onProgress = (progress) => self.postMessage({ progress, id })\n try {\n if (!scriptImported) {\n // console.log('[worker] importScripts', imageCompressionLibUrl)\n self.importScripts(imageCompressionLibUrl)\n scriptImported = true\n }\n // console.log('[worker] self', self)\n const compressedFile = await imageCompression(file, options)\n self.postMessage({ file: compressedFile, id })\n } catch (e) {\n // console.error('[worker] error', e)\n self.postMessage({ error: e.message + '\\n' + e.stack, id })\n }\n})\n";
2596
- let l;
2597
- function compressOnWebWorker(e2, t3) {
2598
- return new Promise((r2, i2) => {
2599
- l || (l = function createWorkerScriptURL(e3) {
2600
- const t4 = [];
2601
- return "function" == typeof e3 ? t4.push(`(${e3})()`) : t4.push(e3), URL.createObjectURL(new Blob(t4));
2602
- }(f));
2603
- const o2 = new Worker(l);
2604
- o2.addEventListener("message", function handler(e3) {
2605
- if (t3.signal && t3.signal.aborted) o2.terminate();
2606
- else if (void 0 === e3.data.progress) {
2607
- if (e3.data.error) return i2(new Error(e3.data.error)), void o2.terminate();
2608
- r2(e3.data.file), o2.terminate();
2609
- } else t3.onProgress(e3.data.progress);
2610
- }), o2.addEventListener("error", i2), t3.signal && t3.signal.addEventListener("abort", () => {
2611
- i2(t3.signal.reason), o2.terminate();
2612
- }), o2.postMessage({ file: e2, imageCompressionLibUrl: t3.libURL, options: { ...t3, onProgress: void 0, signal: void 0 } });
2613
- });
2614
- }
2615
- function imageCompression2(e2, t3) {
2616
- return new Promise(function(r2, i2) {
2617
- let o2, a2, s2, f2, l2, c;
2618
- if (o2 = { ...t3 }, s2 = 0, { onProgress: f2 } = o2, o2.maxSizeMB = o2.maxSizeMB || Number.POSITIVE_INFINITY, l2 = "boolean" != typeof o2.useWebWorker || o2.useWebWorker, delete o2.useWebWorker, o2.onProgress = (e3) => {
2619
- s2 = e3, "function" == typeof f2 && f2(s2);
2620
- }, !(e2 instanceof Blob || e2 instanceof CustomFile)) return i2(new Error("The file given is not an instance of Blob or File"));
2621
- if (!/^image/.test(e2.type)) return i2(new Error("The file given is not an image"));
2622
- if (c = "undefined" != typeof WorkerGlobalScope && self instanceof WorkerGlobalScope, !l2 || "function" != typeof Worker || c) return compress(e2, o2).then(function(e3) {
2623
- try {
2624
- return a2 = e3, $If_4.call(this);
2625
- } catch (e4) {
2626
- return i2(e4);
2627
- }
2628
- }.bind(this), i2);
2629
- var u = function() {
2630
- try {
2631
- return $If_4.call(this);
2632
- } catch (e3) {
2633
- return i2(e3);
2634
- }
2635
- }.bind(this), $Try_1_Catch = function(t4) {
2636
- try {
2637
- return compress(e2, o2).then(function(e3) {
2638
- try {
2639
- return a2 = e3, u();
2640
- } catch (e4) {
2641
- return i2(e4);
2642
- }
2643
- }, i2);
2644
- } catch (e3) {
2645
- return i2(e3);
2646
- }
2647
- };
2648
- try {
2649
- return o2.libURL = o2.libURL || "https://cdn.jsdelivr.net/npm/browser-image-compression@2.0.2/dist/browser-image-compression.js", compressOnWebWorker(e2, o2).then(function(e3) {
2650
- try {
2651
- return a2 = e3, u();
2652
- } catch (e4) {
2653
- return $Try_1_Catch();
2654
- }
2655
- }, $Try_1_Catch);
2656
- } catch (e3) {
2657
- $Try_1_Catch();
2658
- }
2659
- function $If_4() {
2660
- try {
2661
- a2.name = e2.name, a2.lastModified = e2.lastModified;
2662
- } catch (e3) {
2663
- }
2664
- try {
2665
- o2.preserveExif && "image/jpeg" === e2.type && (!o2.fileType || o2.fileType && o2.fileType === e2.type) && (a2 = copyExifWithoutOrientation(e2, a2));
2666
- } catch (e3) {
2667
- }
2668
- return r2(a2);
2669
- }
2670
- });
854
+ isValidElement2(node) ? node._store && (node._store.validated = 1) : "object" === typeof node && null !== node && node.$$typeof === REACT_LAZY_TYPE && ("fulfilled" === node._payload.status ? isValidElement2(node._payload.value) && node._payload.value._store && (node._payload.value._store.validated = 1) : node._store && (node._store.validated = 1));
2671
855
  }
2672
- return imageCompression2.getDataUrlFromFile = getDataUrlFromFile, imageCompression2.getFilefromDataUrl = getFilefromDataUrl, imageCompression2.loadImage = loadImage, imageCompression2.drawImageInCanvas = drawImageInCanvas, imageCompression2.drawFileInCanvas = drawFileInCanvas, imageCompression2.canvasToFile = canvasToFile, imageCompression2.getExifOrientation = getExifOrientation, imageCompression2.handleMaxWidthOrHeight = handleMaxWidthOrHeight, imageCompression2.followExifOrientation = followExifOrientation, imageCompression2.cleanupCanvasMemory = cleanupCanvasMemory, imageCompression2.isAutoOrientationInBrowser = isAutoOrientationInBrowser, imageCompression2.approximateBelowMaximumCanvasSizeOfBrowser = approximateBelowMaximumCanvasSizeOfBrowser, imageCompression2.copyExifWithoutOrientation = copyExifWithoutOrientation, imageCompression2.getBrowserName = getBrowserName, imageCompression2.version = "2.0.2", imageCompression2;
2673
- });
856
+ function isValidElement2(object) {
857
+ return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
858
+ }
859
+ var React = require_react(), REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, hasOwnProperty = Object.prototype.hasOwnProperty, isArrayImpl = Array.isArray, createTask = console.createTask ? console.createTask : function() {
860
+ return null;
861
+ };
862
+ React = {
863
+ react_stack_bottom_frame: function(callStackForError) {
864
+ return callStackForError();
865
+ }
866
+ };
867
+ var specialPropKeyWarningShown;
868
+ var didWarnAboutElementRef = {};
869
+ var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(
870
+ React,
871
+ UnknownOwner
872
+ )();
873
+ var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
874
+ var didWarnAboutKeySpread = {};
875
+ exports.Fragment = REACT_FRAGMENT_TYPE;
876
+ exports.jsx = function(type, config, maybeKey) {
877
+ var trackActualOwner = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
878
+ return jsxDEVImpl(
879
+ type,
880
+ config,
881
+ maybeKey,
882
+ false,
883
+ trackActualOwner ? Error("react-stack-top-frame") : unknownOwnerDebugStack,
884
+ trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
885
+ );
886
+ };
887
+ exports.jsxs = function(type, config, maybeKey) {
888
+ var trackActualOwner = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
889
+ return jsxDEVImpl(
890
+ type,
891
+ config,
892
+ maybeKey,
893
+ true,
894
+ trackActualOwner ? Error("react-stack-top-frame") : unknownOwnerDebugStack,
895
+ trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
896
+ );
897
+ };
898
+ }();
899
+ }
900
+ });
901
+
902
+ // node_modules/react/jsx-runtime.js
903
+ var require_jsx_runtime = __commonJS({
904
+ "node_modules/react/jsx-runtime.js"(exports, module) {
905
+ "use strict";
906
+ if (process.env.NODE_ENV === "production") {
907
+ module.exports = require_react_jsx_runtime_production();
908
+ } else {
909
+ module.exports = require_react_jsx_runtime_development();
910
+ }
2674
911
  }
2675
912
  });
2676
913
 
@@ -10129,484 +8366,6 @@ var fetchAndCacheMessages = async (options) => {
10129
8366
  return remotePromise;
10130
8367
  };
10131
8368
 
10132
- // packages/app/utils/imageUtils.ts
10133
- var import_browser_image_compression = __toESM(require_browser_image_compression());
10134
- var BYTES_PER_MB = 1024 * 1024;
10135
- var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
10136
- var parseDataUrl = (dataUrl) => {
10137
- const trimmed = dataUrl.trim();
10138
- const parts = trimmed.split(",");
10139
- if (parts.length < 2 || !parts[0] || !parts[1]) {
10140
- console.warn("[imageUtils] parseDataUrl: invalid data URL", {
10141
- hasHeader: !!parts[0],
10142
- hasBody: !!parts[1]
10143
- });
10144
- return null;
10145
- }
10146
- const header = parts[0];
10147
- const base64 = parts[1];
10148
- const mimeMatch = header.match(/:(.*?);/);
10149
- const mime = mimeMatch?.[1];
10150
- if (!mime) {
10151
- console.warn("[imageUtils] parseDataUrl: cannot extract mime from", header);
10152
- return null;
10153
- }
10154
- return { mime, base64 };
10155
- };
10156
- function dataURLtoFile(dataUrl, filename) {
10157
- try {
10158
- const parsed = parseDataUrl(dataUrl);
10159
- if (!parsed) return null;
10160
- const { mime, base64 } = parsed;
10161
- const binaryString = atob(base64);
10162
- const length = binaryString.length;
10163
- const u8arr = new Uint8Array(length);
10164
- for (let i = 0; i < length; i++) {
10165
- u8arr[i] = binaryString.charCodeAt(i);
10166
- }
10167
- return new File([u8arr], filename, { type: mime });
10168
- } catch (error) {
10169
- console.error("[imageUtils] Error converting data URL to File:", error);
10170
- return null;
10171
- }
10172
- }
10173
- var appendNoCacheQuery = (url) => {
10174
- const stamp = `_t=${Date.now()}`;
10175
- return url.includes("?") ? `${url}&${stamp}` : `${url}?${stamp}`;
10176
- };
10177
- var tryLoadImage = (url) => new Promise((resolve) => {
10178
- const img = new Image();
10179
- const cleanup = () => {
10180
- img.onload = null;
10181
- img.onerror = null;
10182
- };
10183
- img.onload = () => {
10184
- cleanup();
10185
- resolve(true);
10186
- };
10187
- img.onerror = () => {
10188
- cleanup();
10189
- resolve(false);
10190
- };
10191
- img.src = url;
10192
- });
10193
- var waitForFileReady = async (url, {
10194
- maxWaitMs = 4e3,
10195
- intervalMs = 250
10196
- } = {}) => {
10197
- const start = Date.now();
10198
- while (Date.now() - start < maxWaitMs) {
10199
- const tryUrl = appendNoCacheQuery(url);
10200
- const ok = await tryLoadImage(tryUrl);
10201
- if (ok) {
10202
- console.debug("[imageUtils] waitForFileReady: image loaded for", url);
10203
- return true;
10204
- }
10205
- await sleep(intervalMs);
10206
- }
10207
- console.warn("[imageUtils] waitForFileReady: timeout for", url);
10208
- return false;
10209
- };
10210
-
10211
- // packages/database/fileUrl.ts
10212
- var normalizeFileId = (fileId) => {
10213
- if (typeof fileId !== "string") return "";
10214
- return fileId.trim();
10215
- };
10216
- var buildDatabaseFileContentUrl = (serverOrigin, fileId) => {
10217
- const normalizedServer = normalizeServerOrigin(serverOrigin);
10218
- const normalizedFileId = normalizeFileId(fileId);
10219
- if (!normalizedServer || !normalizedFileId) {
10220
- return null;
10221
- }
10222
- return `${normalizedServer}${API_ENDPOINTS.DATABASE}/file/content/${normalizedFileId}`;
10223
- };
10224
-
10225
- // packages/chat/messages/fileUrl.ts
10226
- var buildMessageFileContentUrl = (serverOrigin, fileId) => buildDatabaseFileContentUrl(serverOrigin, fileId);
10227
-
10228
- // packages/chat/messages/imagePayloadPersistence.ts
10229
- var stripDurableImageInlinePayload = (part) => {
10230
- if (!part || typeof part !== "object") return part;
10231
- const { original_data_url: _originalDataUrl, ...withoutOriginalDataUrl } = part;
10232
- if (withoutOriginalDataUrl.type !== "image_url" || !withoutOriginalDataUrl.google_native || typeof withoutOriginalDataUrl.google_native !== "object") {
10233
- return withoutOriginalDataUrl;
10234
- }
10235
- const { google_native: _googleNative, ...durablePart } = withoutOriginalDataUrl;
10236
- return durablePart;
10237
- };
10238
-
10239
- // packages/core/chat/messageContentSerialize.ts
10240
- var serializeMessageContent = (content, imagePlaceholder = "[\u56FE\u7247]") => {
10241
- if (typeof content === "string") {
10242
- return content.trim() || null;
10243
- }
10244
- if (Array.isArray(content)) {
10245
- const fragments = [];
10246
- for (const part of content) {
10247
- if (!part || typeof part !== "object") continue;
10248
- if (part.type === "text" && typeof part.text === "string") {
10249
- const text = part.text.trim();
10250
- if (text) fragments.push(text);
10251
- } else if (part.type === "image_url") {
10252
- fragments.push(imagePlaceholder);
10253
- }
10254
- }
10255
- const joined = fragments.join("\n").trim();
10256
- return joined || null;
10257
- }
10258
- return null;
10259
- };
10260
-
10261
- // packages/chat/messages/messageContent.ts
10262
- var isDataUrlImage = (url) => typeof url === "string" && url.startsWith("data:image");
10263
- var uploadGeneratedImageDataUrl = async (url, dialogId, messageId, index, dispatch, getState, options) => {
10264
- const fileName = `generated-image-${dialogId}-${messageId}-${index}.png`;
10265
- const file = dataURLtoFile(url, fileName);
10266
- if (!file) {
10267
- console.warn(
10268
- "[messageContent] dataURLtoFile failed, drop generated image inline payload"
10269
- );
10270
- return null;
10271
- }
10272
- const customKey = `generated-image-${dialogId}-${messageId}-${index}`;
10273
- let metadata;
10274
- try {
10275
- metadata = await dispatch(upload({ file, customKey })).unwrap();
10276
- } catch (err) {
10277
- console.warn(
10278
- "[messageContent] upload generated image failed, drop inline payload:",
10279
- err
10280
- );
10281
- return null;
10282
- }
10283
- const state3 = getState();
10284
- const { currentServer } = getRuntimeServerContext(state3);
10285
- const fileId = metadata?.dbKey || metadata?.id;
10286
- if (!currentServer || !fileId) {
10287
- console.warn(
10288
- "[messageContent] missing currentServer or fileId, drop inline payload",
10289
- { currentServer, fileId }
10290
- );
10291
- return null;
10292
- }
10293
- if (options?.spaceId) {
10294
- try {
10295
- const agentPrefix = options.agentName ? `[${options.agentName}] ` : "";
10296
- const title = `${agentPrefix}Generated Image ${index + 1}`;
10297
- await addContentAction({
10298
- spaceId: options.spaceId,
10299
- contentKey: fileId,
10300
- title,
10301
- type: "image" /* IMAGE */
10302
- }, { dispatch, getState });
10303
- console.log(`[messageContent] Saved generated image to space: ${options.spaceId}`);
10304
- } catch (err) {
10305
- console.error("[messageContent] Failed to save generated image to space:", err);
10306
- }
10307
- }
10308
- const imageUrl = buildMessageFileContentUrl(currentServer, fileId);
10309
- if (!imageUrl) {
10310
- return null;
10311
- }
10312
- const ready = await waitForFileReady(imageUrl);
10313
- if (!ready) {
10314
- console.warn(
10315
- "[messageContent] uploaded generated image not ready, drop inline payload:",
10316
- imageUrl
10317
- );
10318
- return null;
10319
- }
10320
- return imageUrl;
10321
- };
10322
- var normalizeAssistantContentBuffer = async (contentBuffer, dialogId, messageId, dispatch, getState, options) => {
10323
- if (!Array.isArray(contentBuffer) || contentBuffer.length === 0) {
10324
- return contentBuffer;
10325
- }
10326
- const updated = await Promise.all(
10327
- contentBuffer.map(async (part, index) => {
10328
- if (!part || part.type !== "image_url" || !part.image_url || !isDataUrlImage(part.image_url.url)) {
10329
- return part;
10330
- }
10331
- const newUrl = await uploadGeneratedImageDataUrl(
10332
- part.image_url.url,
10333
- dialogId,
10334
- messageId,
10335
- index,
10336
- dispatch,
10337
- getState,
10338
- options
10339
- );
10340
- if (!newUrl) {
10341
- return {
10342
- type: "text",
10343
- text: "[\u56FE\u7247\u4FDD\u5B58\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u751F\u6210\u56FE\u7247]"
10344
- };
10345
- }
10346
- return stripDurableImageInlinePayload({
10347
- ...part,
10348
- image_url: {
10349
- ...part.image_url,
10350
- url: newUrl
10351
- }
10352
- });
10353
- })
10354
- );
10355
- return updated;
10356
- };
10357
-
10358
- // packages/ai/llm/getModelContextWindow.ts
10359
- var DEFAULT_CONTEXT_WINDOW = 256e3;
10360
- var QWEN_3_6_CONTEXT_WINDOW = 262144;
10361
- var GLM_5_2_CONTEXT_WINDOW = 1e6;
10362
- var fullModelMap = null;
10363
- var getFullModelMap = () => {
10364
- if (!fullModelMap) {
10365
- fullModelMap = /* @__PURE__ */ new Map();
10366
- for (const [provider, models] of Object.entries(MODEL_LOOKUP_MAP)) {
10367
- for (const model of models) {
10368
- const entry = { ...model, provider };
10369
- fullModelMap.set(model.name, entry);
10370
- if (model.displayName) {
10371
- fullModelMap.set(model.displayName.toLowerCase(), entry);
10372
- }
10373
- }
10374
- }
10375
- }
10376
- return fullModelMap;
10377
- };
10378
- var legacyModelMap = null;
10379
- var getLegacyModelMap = () => {
10380
- if (!legacyModelMap) {
10381
- legacyModelMap = /* @__PURE__ */ new Map();
10382
- for (const model of ALL_MODELS) {
10383
- legacyModelMap.set(model.name, model);
10384
- if (model.displayName) {
10385
- legacyModelMap.set(model.displayName.toLowerCase(), model);
10386
- }
10387
- }
10388
- }
10389
- return legacyModelMap;
10390
- };
10391
- function fuzzyContextWindow(normalizedName) {
10392
- if (normalizedName.includes("qwen-long") || normalizedName.includes("qwen3-long")) return 10485760;
10393
- if (normalizedName.includes("qwen-coder") || normalizedName.includes("qwen3-coder")) return 1048576;
10394
- if (normalizedName.includes("qwen3.8") || normalizedName.includes("qwen3p8")) return 1e6;
10395
- if (normalizedName.includes("minimax-m3") || normalizedName.includes("minimax_m3")) return 1e6;
10396
- if (normalizedName.includes("glm-5.2") || normalizedName.includes("glm5.2")) return GLM_5_2_CONTEXT_WINDOW;
10397
- if (normalizedName.includes("deepseek")) return 1e6;
10398
- if (normalizedName.includes("gpt-5") || normalizedName.includes("gpt-4.1")) return 1047576;
10399
- if (normalizedName.includes("qwen3.6") || normalizedName.includes("qwen3p6")) return QWEN_3_6_CONTEXT_WINDOW;
10400
- if (normalizedName.includes("qwen3.7") || normalizedName.includes("qwen3p7")) return 262144;
10401
- if (normalizedName.includes("minimax-m2") || normalizedName.includes("minimax_m2")) return 262144;
10402
- if (normalizedName.includes("claude")) return 2e5;
10403
- return void 0;
10404
- }
10405
- var getModelContextWindow = (modelName) => {
10406
- if (!modelName) return DEFAULT_CONTEXT_WINDOW;
10407
- const normalizedName = modelName.toLowerCase();
10408
- const map = getFullModelMap();
10409
- const model = map.get(modelName) || map.get(normalizedName);
10410
- if (model?.contextWindow) {
10411
- return typeof model.contextWindow === "number" ? model.contextWindow : DEFAULT_CONTEXT_WINDOW;
10412
- }
10413
- return fuzzyContextWindow(normalizedName) ?? DEFAULT_CONTEXT_WINDOW;
10414
- };
10415
- var getModelInfo = (modelName) => {
10416
- if (!modelName) return null;
10417
- const map = getLegacyModelMap();
10418
- return map.get(modelName) || map.get(modelName.toLowerCase()) || null;
10419
- };
10420
-
10421
- // packages/ai/context/tokenUtils.ts
10422
- var estimateTokenCount = (text) => {
10423
- if (!text) return 0;
10424
- const chineseChars = (text.match(/[\u4e00-\u9fa5\u3400-\u4dbf]/g) || []).length;
10425
- const otherChars = text.length - chineseChars;
10426
- return Math.ceil(chineseChars * 1.5 + otherChars * 0.25);
10427
- };
10428
-
10429
- // packages/ai/context/retention.ts
10430
- var SAFE_BUFFER_RATIO = 0.95;
10431
- var CACHE_FIRST_RETENTION_STRENGTH = 0.95;
10432
- var clamp = (v, min, max) => Math.min(max, Math.max(min, v));
10433
- var planContextUsage = (params) => {
10434
- const { contextWindow, summaryTokens, recentLoad } = params;
10435
- const safeWindowLimit = Math.floor(contextWindow * SAFE_BUFFER_RATIO);
10436
- const iq = CACHE_FIRST_RETENTION_STRENGTH;
10437
- const isLargeWindow = contextWindow >= 512e3;
10438
- const isSmallWindow = contextWindow <= 64e3;
10439
- let baseHistoryRatio;
10440
- if (isLargeWindow) {
10441
- baseHistoryRatio = 0.8 + 0.2 * iq;
10442
- } else if (isSmallWindow) {
10443
- baseHistoryRatio = 0.35 + 0.3 * iq;
10444
- } else {
10445
- baseHistoryRatio = 0.55 + 0.3 * iq;
10446
- }
10447
- let historyRatio = baseHistoryRatio;
10448
- switch (recentLoad) {
10449
- case "light": {
10450
- const maxRatio = isLargeWindow ? 1 : isSmallWindow ? 0.75 : 0.85;
10451
- historyRatio = clamp(historyRatio * 1.05, 0.3, maxRatio);
10452
- break;
10453
- }
10454
- case "heavy": {
10455
- const maxRatio = isLargeWindow ? 0.98 : isSmallWindow ? 0.7 : 0.8;
10456
- const multiplier = isLargeWindow ? 0.98 : isSmallWindow ? 0.9 : 0.9;
10457
- historyRatio = clamp(historyRatio * multiplier, 0.3, maxRatio);
10458
- break;
10459
- }
10460
- case "medium":
10461
- default: {
10462
- const maxRatio = isLargeWindow ? 1 : isSmallWindow ? 0.75 : 0.85;
10463
- historyRatio = clamp(historyRatio, 0.3, maxRatio);
10464
- break;
10465
- }
10466
- }
10467
- const historyBudget = Math.max(
10468
- 0,
10469
- Math.floor(safeWindowLimit * historyRatio)
10470
- );
10471
- const minRawRatio = isSmallWindow ? 0.5 : isLargeWindow ? 0.2 : 0.3;
10472
- const rawMessageBudget = Math.max(
10473
- Math.floor(historyBudget * minRawRatio),
10474
- historyBudget - summaryTokens,
10475
- 0
10476
- );
10477
- let minTailTokens;
10478
- if (recentLoad === "light") {
10479
- minTailTokens = Math.min(
10480
- Math.floor(safeWindowLimit * 0.3),
10481
- 8e3
10482
- );
10483
- } else if (recentLoad === "heavy") {
10484
- minTailTokens = Math.max(
10485
- Math.floor(safeWindowLimit * 0.25),
10486
- 16e3
10487
- );
10488
- } else {
10489
- minTailTokens = Math.floor(safeWindowLimit * 0.2);
10490
- }
10491
- return { historyBudget, rawMessageBudget, minTailTokens };
10492
- };
10493
-
10494
- // packages/ai/context/planCompression.ts
10495
- var MIN_COMPRESS_COUNT = 5;
10496
- var ACTIVE_SUMMARY_TAIL_KEEP_COUNT = 2;
10497
- var getMessageTokenCount = (msg) => {
10498
- if (msg.usage?.completion_tokens) {
10499
- return msg.usage.completion_tokens;
10500
- }
10501
- const content = serializeMessageContent(msg.content) || "";
10502
- return estimateTokenCount(content);
10503
- };
10504
- var hasOpenEndedToolCall = (msg) => !!msg && Array.isArray(msg.tool_calls) && msg.tool_calls.length > 0;
10505
- var isActiveSummaryWorthDoing = (pendingTokens, contextWindow) => {
10506
- const minTokens = Math.min(
10507
- 4e4,
10508
- Math.max(1e4, Math.floor(contextWindow * 0.05))
10509
- );
10510
- return pendingTokens >= minTokens;
10511
- };
10512
- var classifyConversationLoad = (msgs) => {
10513
- const N = 20;
10514
- if (!Array.isArray(msgs) || msgs.length === 0) return "light";
10515
- const tail = msgs.slice(-N);
10516
- const tokenSamples = tail.map(getMessageTokenCount);
10517
- if (tokenSamples.length === 0) return "light";
10518
- const sum = tokenSamples.reduce((acc, v) => acc + v, 0);
10519
- const avg = sum / tokenSamples.length;
10520
- const sorted = [...tokenSamples].sort((a, b) => a - b);
10521
- const p95 = sorted[Math.floor((sorted.length - 1) * 0.95)];
10522
- if (p95 < 200 && avg < 120) {
10523
- return "light";
10524
- }
10525
- if (p95 > 2e3 || avg > 1200) {
10526
- return "heavy";
10527
- }
10528
- return "medium";
10529
- };
10530
- var emptyPlan = (startIndex) => ({
10531
- shouldCompress: false,
10532
- compressCount: 0,
10533
- msgsToCompress: [],
10534
- msgsToKeep: [],
10535
- newSummarizedBeforeId: void 0,
10536
- startIndex
10537
- });
10538
- function planCompression(input) {
10539
- const {
10540
- allMsgs,
10541
- summarizedBeforeId,
10542
- summary,
10543
- contextWindow,
10544
- force = false,
10545
- reason
10546
- } = input;
10547
- let startIndex = 0;
10548
- if (summarizedBeforeId) {
10549
- const found = allMsgs.findIndex((m) => m.id === summarizedBeforeId);
10550
- if (found !== -1) {
10551
- startIndex = found + 1;
10552
- }
10553
- }
10554
- const pendingMsgs = allMsgs.slice(startIndex);
10555
- if (pendingMsgs.length === 0) {
10556
- return emptyPlan(startIndex);
10557
- }
10558
- const summaryTokens = estimateTokenCount(summary || "");
10559
- const pendingTokens = pendingMsgs.reduce(
10560
- (sum, msg) => sum + getMessageTokenCount(msg),
10561
- 0
10562
- );
10563
- const totalUsed = summaryTokens + pendingTokens;
10564
- const adjustedSummaryTokens = Math.max(summaryTokens, 1e3);
10565
- const recentLoad = classifyConversationLoad(pendingMsgs);
10566
- const { historyBudget, rawMessageBudget } = planContextUsage({
10567
- contextWindow,
10568
- summaryTokens: adjustedSummaryTokens,
10569
- recentLoad
10570
- });
10571
- const shouldRunActiveSummary = force && reason === "manual" && !hasOpenEndedToolCall(pendingMsgs[pendingMsgs.length - 1]) && isActiveSummaryWorthDoing(pendingTokens, contextWindow);
10572
- if (totalUsed < historyBudget && !shouldRunActiveSummary) {
10573
- return emptyPlan(startIndex);
10574
- }
10575
- let tokensToKeep = 0;
10576
- let keepCount = 0;
10577
- for (let i = pendingMsgs.length - 1; i >= 0; i--) {
10578
- const t2 = getMessageTokenCount(pendingMsgs[i]);
10579
- if (tokensToKeep + t2 > rawMessageBudget) break;
10580
- tokensToKeep += t2;
10581
- keepCount++;
10582
- }
10583
- let compressCount = shouldRunActiveSummary && totalUsed < historyBudget ? Math.max(0, pendingMsgs.length - ACTIVE_SUMMARY_TAIL_KEEP_COUNT) : pendingMsgs.length - keepCount;
10584
- while (compressCount > 0 && compressCount < pendingMsgs.length && pendingMsgs[compressCount].role === "tool") {
10585
- compressCount--;
10586
- }
10587
- if (compressCount > 0) {
10588
- const lastCompressed = pendingMsgs[compressCount - 1];
10589
- const hasToolCalls = Array.isArray(lastCompressed.tool_calls) && lastCompressed.tool_calls.length > 0;
10590
- if (hasToolCalls) {
10591
- compressCount--;
10592
- }
10593
- }
10594
- if (compressCount < MIN_COMPRESS_COUNT) {
10595
- return emptyPlan(startIndex);
10596
- }
10597
- const msgsToCompress = pendingMsgs.slice(0, compressCount);
10598
- const msgsToKeep = pendingMsgs.slice(compressCount);
10599
- const newSummarizedBeforeId = msgsToCompress[msgsToCompress.length - 1].id;
10600
- return {
10601
- shouldCompress: true,
10602
- compressCount,
10603
- msgsToCompress,
10604
- msgsToKeep,
10605
- newSummarizedBeforeId,
10606
- startIndex
10607
- };
10608
- }
10609
-
10610
8369
  // packages/chat/messages/parseJsonRecord.ts
10611
8370
  function asOptionalJsonRecord(value) {
10612
8371
  if (typeof value === "string") {
@@ -10838,31 +8597,15 @@ var normalizeAppRouteId = (contentKey) => isAppContentKey(contentKey) ? contentK
10838
8597
  var uiAskChoiceFunctionSchema = {
10839
8598
  name: "ui_ask_choice",
10840
8599
  description: [
10841
- "\u5F53\u4F60\u9700\u8981\u8BA9\u7528\u6237\u5728\u51E0\u4E2A\u4E92\u65A5\u7684\u9009\u9879\u4E4B\u95F4\u505A\u9009\u62E9\u65F6\uFF0C\u4F7F\u7528\u672C\u5DE5\u5177\u3002",
10842
- "",
10843
- "\u8FD9\u662F\u4E00\u4E2A\u901A\u7528\u7684\u201C\u51FA\u9009\u9879\u201D\u5DE5\u5177\uFF0C\u9002\u7528\u4E8E\u591A\u79CD\u573A\u666F\uFF0C\u4F8B\u5982\uFF1A",
10844
- "1\uFF09\u7528\u6237\u7684\u9700\u6C42\u6BD4\u8F83\u5BBD\u6CDB\u6216\u6A21\u7CCA\uFF0C\u4F60\u53EF\u4EE5\u7ED9\u51FA 2\uFF5E5 \u4E2A\u4E0D\u540C\u65B9\u5411\u7684\u5019\u9009\u65B9\u6848\uFF0C\u8BA9 TA \u5148\u9009\u4E00\u4E2A\u65B9\u5411\uFF1B",
10845
- "2\uFF09\u4E00\u4E2A\u8BA1\u5212 / \u6D41\u7A0B\u5230\u4E86\u5206\u652F\u8282\u70B9\uFF0C\u9700\u8981\u7528\u6237\u51B3\u5B9A\u4E0B\u4E00\u6B65\u505A\u4EC0\u4E48\uFF1B",
10846
- "3\uFF09\u4F60\u60F3\u4E3A\u7528\u6237\u8BBE\u8BA1\u4E00\u7EC4\u7EC3\u4E60\u9898\u3001\u6D4B\u8BD5\u9898\u6216\u95EE\u5377\u9898\uFF08\u5982\u51FA\u9898\u7EC3\u4E60\u3001\u4EBA\u683C\u6D4B\u8BD5\u7B49\u5355\u9009\u9898\uFF09\uFF1B",
10847
- "4\uFF09\u5728\u65B0\u9636\u6BB5/\u65B0\u4F1A\u8BDD\u4E2D\uFF0C\u6839\u636E\u7CFB\u7EDF\u63D0\u793A\u6216\u7528\u6237\u753B\u50CF\uFF0C\u7ED9\u51FA\u82E5\u5E72\u201C\u63A5\u4E0B\u6765\u53EF\u4EE5\u5C1D\u8BD5\u7684\u4E8B\u60C5\u201D\uFF08\u4F8B\u5982\u529F\u80FD\u5BFC\u822A\u6216\u4F7F\u7528\u6280\u5DE7\uFF09\u3002",
10848
- "",
10849
- "\u4F7F\u7528\u5EFA\u8BAE\uFF1A",
10850
- "- \u5F53\u4F60\u5224\u65AD\u201C\u5148\u7ED9\u51FA 2\uFF5E5 \u4E2A\u660E\u786E\u9009\u9879\u80FD\u663E\u8457\u5E2E\u7528\u6237\u7406\u6E05\u4E0B\u4E00\u6B65\u8981\u505A\u4EC0\u4E48\u201D\u65F6\uFF0C\u53EF\u4EE5\u4E3B\u52A8\u8C03\u7528\u672C\u5DE5\u5177\uFF1B",
10851
- "- \u5982\u679C\u7528\u6237\u7684\u76EE\u6807\u5DF2\u7ECF\u975E\u5E38\u5177\u4F53\u3001\u6E05\u6670\uFF0C\u5E76\u4E14\u4F60\u53EF\u4EE5\u76F4\u63A5\u7ED9\u51FA\u9AD8\u8D28\u91CF\u7B54\u6848\uFF0C\u4F18\u5148\u76F4\u63A5\u56DE\u7B54\uFF0C\u800C\u4E0D\u662F\u518D\u5F39\u51FA\u9009\u62E9\u83DC\u5355\uFF1B",
10852
- "- \u9ED8\u8BA4\u60C5\u51B5\u4E0B\uFF0C\u4E0D\u8981\u5728\u5B8C\u5168\u6CA1\u6709\u6709\u6548\u4E0A\u4E0B\u6587\u7684\u573A\u666F\uFF08\u4F8B\u5982\u7528\u6237\u53EA\u8BF4\u201C\u4F60\u597D\u201D\uFF09\u7ACB\u523B\u8C03\u7528\u672C\u5DE5\u5177\uFF0C\u9664\u975E\u7CFB\u7EDF\u63D0\u793A\u4E2D\u5DF2\u7ECF\u660E\u786E\u8981\u6C42\u4F60\u5728\u65B0\u4F1A\u8BDD\u5F00\u5934\u7528\u5B83\u6765\u751F\u6210\u6B22\u8FCE\u83DC\u5355\u6216\u529F\u80FD\u5BFC\u822A\uFF1B",
10853
- "- \u8BF7\u628A\u7ED9\u7528\u6237\u770B\u7684\u95EE\u9898\u5199\u5728 question \u5B57\u6BB5\u4E2D\uFF0C\u4E0D\u8981\u5728\u540C\u4E00\u8F6E assistant \u666E\u901A\u6587\u672C\u91CC\u91CD\u590D\u8FD9\u53E5\u8BDD\uFF1B",
10854
- "- \u6BCF\u4E2A\u9009\u9879\u7684 userMessage \u5EFA\u8BAE\u5199\u6210\u5B8C\u6574\u7684\u4E00\u53E5\u8BDD\uFF0C\u65B9\u4FBF\u540E\u7EED\u7406\u89E3\u4E0A\u4E0B\u6587\uFF1B\u5982\u679C\u7559\u7A7A\uFF0C\u5C06\u81EA\u52A8\u4F7F\u7528 label \u4F5C\u4E3A userMessage\u3002",
10855
- "",
10856
- "\u5728\u4EE3\u7801\u534F\u4F5C\u573A\u666F\u4E0B\u7684\u63A8\u8350\u7528\u6CD5\uFF1A",
10857
- "- \u5982\u679C\u4F60\u5DF2\u7ECF\u5728\u672C\u8F6E assistant \u7684 content \u4E2D\u7ED9\u51FA\u4E86\u5206\u6790\u3001\u8BF4\u660E\u6216\u591A\u4E2A\u5907\u9009\u65B9\u6848\uFF0C\u53EF\u4EE5\u5728\u540C\u4E00\u8F6E\u6D88\u606F\u7684\u7ED3\u5C3E\u8C03\u7528\u672C\u5DE5\u5177\uFF0C\u8BF7\u7528\u6237\u9009\u62E9\u201C\u662F\u5426\u6839\u636E\u4E0A\u8FF0\u65B9\u6848\u5F00\u59CB\u5B9E\u9645\u4FEE\u6539\u4EE3\u7801\u201D\u6216\u201C\u4F18\u5148\u6267\u884C\u54EA\u4E00\u4E2A\u65B9\u6848/\u6B65\u9AA4\u201D\u3002",
10858
- "- \u5728\u8FD9\u79CD\u60C5\u51B5\u4E0B\uFF0Cquestion \u5B57\u6BB5\u901A\u5E38\u662F\u4E00\u4E2A\u7B80\u77ED\u7684\u95EE\u9898\uFF08\u4F8B\u5982\uFF1A\u201C\u63A5\u4E0B\u6765\u4F60\u5E0C\u671B\u6211\u6309\u54EA\u4E2A\u65B9\u6848\u6765\u5177\u4F53\u4FEE\u6539\u4EE3\u7801\uFF1F\u201D\uFF09\uFF0C\u800C\u8BE6\u7EC6\u7684\u89E3\u91CA\u548C\u65B9\u6848\u63CF\u8FF0\u653E\u5728 content \u4E2D\u3002",
10859
- "- \u5982\u679C\u5F53\u524D\u5BF9\u8BDD\u53EA\u9700\u8981\u4E00\u4E2A\u7B80\u5355\u7684\u9009\u62E9\uFF0C\u800C\u4E0D\u9700\u8981\u989D\u5916\u89E3\u91CA\uFF0C\u4F60\u4E5F\u53EF\u4EE5\u4E0D\u8F93\u51FA\u989D\u5916\u7684 content\uFF0C\u800C\u53EA\u8C03\u7528\u672C\u5DE5\u5177\uFF0C\u7531 question \u5B57\u6BB5\u76F4\u63A5\u5411\u7528\u6237\u63D0\u95EE\u3002",
8600
+ "\u8BA9\u7528\u6237\u5728 2\uFF5E5 \u4E2A\u4E92\u65A5\u9009\u9879\u4E4B\u95F4\u505A\u9009\u62E9\u7684\u901A\u7528\u201C\u51FA\u9009\u9879\u201D\u5DE5\u5177\u3002\u9002\u7528\u573A\u666F\uFF1A\u9700\u6C42\u6A21\u7CCA\u65F6\u7ED9\u65B9\u5411\u5019\u9009\u3001\u8BA1\u5212\u5206\u652F\u8282\u70B9\u51B3\u7B56\u3001\u51FA\u9898/\u95EE\u5377\u3001\u65B0\u4F1A\u8BDD\u529F\u80FD\u5BFC\u822A\u3002",
10860
8601
  "",
10861
8602
  "\u591A\u95EE\u9898 & \u591A\u9009\u652F\u6301\uFF1A",
10862
8603
  "- \u5F53\u4F60\u9700\u8981\u4E00\u6B21\u95EE\u591A\u4E2A\u95EE\u9898\u65F6\uFF0C\u4F7F\u7528 questions \u6570\u7EC4\u4EE3\u66FF question+choices\u3002",
10863
8604
  "- \u6BCF\u4E2A question \u53EF\u4EE5\u8BBE\u7F6E multiSelect: true \u5141\u8BB8\u591A\u9009\u3002",
10864
8605
  "- \u6BCF\u4E2A question \u53EF\u4EE5\u8BBE\u7F6E allowOther: false \u9690\u85CF\u201C\u5176\u4ED6\u201D\u8F93\u5165\u6846\u3002",
10865
- "- \u6BCF\u4E2A choice \u53EF\u4EE5\u52A0 detail \u5B57\u6BB5\u63D0\u4F9B\u66F4\u957F\u7684\u63CF\u8FF0\u3002"
8606
+ "- \u6BCF\u4E2A choice \u53EF\u4EE5\u52A0 detail \u5B57\u6BB5\u63D0\u4F9B\u66F4\u957F\u7684\u63CF\u8FF0\u3002",
8607
+ "",
8608
+ "\u4F55\u65F6\u8C03\u7528 / \u8C03\u7528\u89C4\u8303\u7684\u5B8C\u6574\u884C\u4E3A\u89C4\u5219\u7531\u7CFB\u7EDF\u63D0\u793A\u7684\u300C\u4EA4\u4E92\u8BF4\u660E\u300D\u5757\u6CE8\u5165\uFF0C\u4E0D\u5728\u6B64\u91CD\u590D\u3002"
10866
8609
  ].join("\n"),
10867
8610
  parameters: {
10868
8611
  type: "object",
@@ -11816,7 +9559,7 @@ async function captureUnderstandingFromCompletedUiTurn(input) {
11816
9559
  if (!input.agentKey) return;
11817
9560
  const latestUserInput = getLatestUserInputFromMessages(input.messages);
11818
9561
  if (!latestUserInput) return;
11819
- const { captureUnderstandingMemoryFromDialog } = await import("./understanding-ZOESBLF3.js");
9562
+ const { captureUnderstandingMemoryFromDialog } = await import("./understanding-3CUQQ6SV.js");
11820
9563
  await captureUnderstandingMemoryFromDialog({
11821
9564
  db: input.db,
11822
9565
  userId: selectIdentityUserId(input.state),
@@ -12741,7 +10484,7 @@ var messageSlice = createSliceWithThunks({
12741
10484
  runtimeOptions: args.runtimeOptions
12742
10485
  });
12743
10486
  if (agentKeyToUse) {
12744
- const { streamAgentChatTurn } = await import("./agentSlice-6EKOBCCS.js");
10487
+ const { streamAgentChatTurn } = await import("./agentSlice-6JAJOU3X.js");
12745
10488
  await dispatch(
12746
10489
  streamAgentChatTurn({
12747
10490
  agentKey: agentKeyToUse,
@@ -15019,10 +12762,20 @@ var prepareTokenUsageData = ({
15019
12762
  agentConfig,
15020
12763
  userId,
15021
12764
  username,
12765
+ agentId,
15022
12766
  cybotId,
15023
12767
  dialogId,
15024
- timestamp = Date.now()
12768
+ timestamp = Date.now(),
12769
+ stable_prefix_hash,
12770
+ stable_prefix_estimated_tokens,
12771
+ entry_path
15025
12772
  }) => {
12773
+ const resolvedAgentId = typeof agentId === "string" && agentId.trim() || typeof cybotId === "string" && cybotId.trim() || "";
12774
+ if (!resolvedAgentId) {
12775
+ throw new Error(
12776
+ "prepareTokenUsageData requires a non-empty agentId or cybotId"
12777
+ );
12778
+ }
15026
12779
  const usage = normalizeUsage(rawUsage);
15027
12780
  const billingTarget = resolveBillingTarget({
15028
12781
  usage,
@@ -15064,7 +12817,8 @@ var prepareTokenUsageData = ({
15064
12817
  ...usage,
15065
12818
  userId,
15066
12819
  username,
15067
- cybotId,
12820
+ agentId: resolvedAgentId,
12821
+ cybotId: resolvedAgentId,
15068
12822
  model: billedModel,
15069
12823
  provider: recordProvider,
15070
12824
  billing_service_tier: billedServiceTier,
@@ -15072,7 +12826,10 @@ var prepareTokenUsageData = ({
15072
12826
  cost,
15073
12827
  pay,
15074
12828
  timestamp,
15075
- billable
12829
+ billable,
12830
+ ...stable_prefix_hash !== void 0 ? { stable_prefix_hash } : {},
12831
+ ...stable_prefix_estimated_tokens !== void 0 ? { stable_prefix_estimated_tokens } : {},
12832
+ ...entry_path !== void 0 ? { entry_path } : {}
15076
12833
  }
15077
12834
  };
15078
12835
  };
@@ -15238,9 +12995,10 @@ var updateTokensAction = async ({ dialogId, dialogKey, usage: usageRaw, agentCon
15238
12995
  agentConfig,
15239
12996
  userId: ownerUserId,
15240
12997
  username: currentUser?.username,
15241
- cybotId: agentConfig.id,
12998
+ agentId: agentConfig.id,
15242
12999
  dialogId,
15243
- timestamp
13000
+ timestamp,
13001
+ entry_path: "web-chat"
15244
13002
  });
15245
13003
  const { usage, tokenData, recordProvider, billedModel } = prepared;
15246
13004
  const result = { cost: tokenData.cost, pay: tokenData.pay };
@@ -15375,7 +13133,7 @@ var deleteOwnedDialogAttachments = async (args) => {
15375
13133
  metadataReadFailures
15376
13134
  });
15377
13135
  if (!plan.deleteCandidates.length) return plan;
15378
- const { deleteFileAction } = await import("./deleteFile-7XP5BGC7.js");
13136
+ const { deleteFileAction } = await import("./deleteFile-M7UNIUOO.js");
15379
13137
  for (const candidate of plan.deleteCandidates) {
15380
13138
  if (candidate.fileDbKey) {
15381
13139
  await deleteFileAction(candidate.fileDbKey, args.thunkApi);
@@ -15437,7 +13195,7 @@ var deleteDialogThunk = async (payload, thunkApi) => {
15437
13195
  }
15438
13196
  if (isCurrentDialog) {
15439
13197
  await thunkApi.dispatch(resetMsgs());
15440
- const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-OWROKURJ.js");
13198
+ const { clearPendingAttachments: clearPendingAttachments2 } = await import("./dialogSlice-35LA3ZRG.js");
15441
13199
  dispatch(clearPendingAttachments2());
15442
13200
  clearWorkflow();
15443
13201
  }
@@ -15446,35 +13204,35 @@ var deleteDialogThunk = async (payload, thunkApi) => {
15446
13204
 
15447
13205
  // packages/chat/dialog/dialogSlice.ts
15448
13206
  var runCreateDialogAction = async (args, thunkApi) => {
15449
- const { createDialogAction } = await import("./createDialogAction-OJJ7L3L3.js");
13207
+ const { createDialogAction } = await import("./createDialogAction-I5WUWFJ6.js");
15450
13208
  return createDialogAction(args, thunkApi);
15451
13209
  };
15452
13210
  var runCreateAgentAutomationAction = async (args, thunkApi) => {
15453
- const { createAgentAutomationAction } = await import("./createAgentAutomationAction-LTI5QU35.js");
13211
+ const { createAgentAutomationAction } = await import("./createAgentAutomationAction-4NY4JLOK.js");
15454
13212
  return createAgentAutomationAction(args, thunkApi);
15455
13213
  };
15456
13214
  var runUpdateDialogTitleAction = async (args, thunkApi) => {
15457
- const { updateDialogTitleAction } = await import("./updateDialogTitleAction-7FYNJOGP.js");
13215
+ const { updateDialogTitleAction } = await import("./updateDialogTitleAction-AWXNPUQJ.js");
15458
13216
  return updateDialogTitleAction(args, thunkApi);
15459
13217
  };
15460
13218
  var runAddDialogAgentAction = async (args, thunkApi) => {
15461
- const { addDialogAgentAction } = await import("./addDialogAgentAction-WVVKT5WQ.js");
13219
+ const { addDialogAgentAction } = await import("./addDialogAgentAction-V6CL2UCF.js");
15462
13220
  return addDialogAgentAction(args, thunkApi);
15463
13221
  };
15464
13222
  var runRemoveDialogAgentAction = async (args, thunkApi) => {
15465
- const { removeDialogAgentAction } = await import("./removeDialogAgentAction-TCT35SOF.js");
13223
+ const { removeDialogAgentAction } = await import("./removeDialogAgentAction-XUZYQBV4.js");
15466
13224
  return removeDialogAgentAction(args, thunkApi);
15467
13225
  };
15468
13226
  var runSetPrimaryDialogAgentAction = async (args, thunkApi) => {
15469
- const { setPrimaryDialogAgentAction } = await import("./setPrimaryDialogAgentAction-F6BFQDJU.js");
13227
+ const { setPrimaryDialogAgentAction } = await import("./setPrimaryDialogAgentAction-HRFTDB44.js");
15470
13228
  return setPrimaryDialogAgentAction(args, thunkApi);
15471
13229
  };
15472
13230
  var runSetDialogExtraReferencesAction = async (args, thunkApi) => {
15473
- const { setDialogExtraReferencesAction } = await import("./setDialogExtraReferencesAction-CGYLZMFH.js");
13231
+ const { setDialogExtraReferencesAction } = await import("./setDialogExtraReferencesAction-PTAIFKGM.js");
15474
13232
  return setDialogExtraReferencesAction(args, thunkApi);
15475
13233
  };
15476
13234
  var runHandleSendMessageAction = async (args, thunkApi) => {
15477
- const { handleSendMessageAction } = await import("./handleSendMessageAction-B5PRR7BE.js");
13235
+ const { handleSendMessageAction } = await import("./handleSendMessageAction-FWTLQGOZ.js");
15478
13236
  return handleSendMessageAction(args, thunkApi);
15479
13237
  };
15480
13238
  function clearDialogState() {
@@ -15487,7 +13245,7 @@ var createPageAndAddReference = createAsyncThunk(
15487
13245
  async (payload, { dispatch, getState, rejectWithValue }) => {
15488
13246
  const { slateData, jsonData, title, type, fileId, groupId, dialogKey } = payload;
15489
13247
  try {
15490
- const { createDocState } = await import("./docStore-3DXRYBMD.js");
13248
+ const { createDocState } = await import("./docStore-3CP2IO6M.js");
15491
13249
  const pageKey = await createDocState(
15492
13250
  { slateData, title },
15493
13251
  { dispatch, getState }
@@ -19444,11 +17202,11 @@ var ENTITY_DELETE_STRATEGIES = {
19444
17202
  await dispatch(deleteTable({ dbKey: key })).unwrap();
19445
17203
  },
19446
17204
  file: async (key, { thunkAPI }) => {
19447
- const { deleteFileAction } = await import("./deleteFile-7XP5BGC7.js");
17205
+ const { deleteFileAction } = await import("./deleteFile-M7UNIUOO.js");
19448
17206
  await deleteFileAction(key, thunkAPI);
19449
17207
  },
19450
17208
  image: async (key, { thunkAPI }) => {
19451
- const { deleteFileAction } = await import("./deleteFile-7XP5BGC7.js");
17209
+ const { deleteFileAction } = await import("./deleteFile-M7UNIUOO.js");
19452
17210
  await deleteFileAction(key, thunkAPI);
19453
17211
  },
19454
17212
  agent: async (key, { dispatch, userId, sourceServerOrigin }) => {
@@ -21616,7 +19374,7 @@ var fetchSpaceAction = async (input, thunkAPI) => {
21616
19374
  const spaceKey = createSpaceKey.space(spaceId);
21617
19375
  const readSpace = async (dbKey) => {
21618
19376
  try {
21619
- const { read: read2, readAndWait: readAndWait2 } = await import("./dbSlice-RQFQQVHT.js");
19377
+ const { read: read2, readAndWait: readAndWait2 } = await import("./dbSlice-J4PUZ6Y5.js");
21620
19378
  if (fresh) {
21621
19379
  return await dispatch(readAndWait2(dbKey)).unwrap();
21622
19380
  }
@@ -21857,76 +19615,6 @@ var dedupeMemberSpaces = (memberSpaces) => {
21857
19615
  });
21858
19616
  return Array.from(membershipMap.values());
21859
19617
  };
21860
- var extractTypedIdentityId = (key, type) => {
21861
- if (!key || !type || !key.startsWith(`${type}-`)) return null;
21862
- const parts = key.split("-");
21863
- if (parts.length < 2) return null;
21864
- if (parts.length >= 3) return parts.slice(2).join("-");
21865
- return parts[1] || null;
21866
- };
21867
- var isCanonicalTypedDbKey = (key, type) => {
21868
- if (!key || !type || !key.startsWith(`${type}-`)) return false;
21869
- const parts = key.split("-");
21870
- return parts.length >= 3;
21871
- };
21872
- var dedupeSpaceContents = (contents) => {
21873
- if (!contents) return { contents: {}, removedKeys: [], changed: false };
21874
- const entries = Object.entries(contents);
21875
- const sorted = [...entries].sort((a, b) => {
21876
- const aItem = a[1];
21877
- const bItem = b[1];
21878
- const aType = String(aItem?.type || "").toLowerCase();
21879
- const bType = String(bItem?.type || "").toLowerCase();
21880
- const aCanonical = isCanonicalTypedDbKey(a[0], aType) || isCanonicalTypedDbKey(String(aItem?.contentKey || ""), aType);
21881
- const bCanonical = isCanonicalTypedDbKey(b[0], bType) || isCanonicalTypedDbKey(String(bItem?.contentKey || ""), bType);
21882
- if (aCanonical !== bCanonical) return aCanonical ? -1 : 1;
21883
- const aUpdated = toTimestampMs(aItem?.updatedAt);
21884
- const bUpdated = toTimestampMs(bItem?.updatedAt);
21885
- return bUpdated - aUpdated;
21886
- });
21887
- let changed = false;
21888
- const deduped = {};
21889
- const seenIdentity = /* @__PURE__ */ new Set();
21890
- for (const [entryKey, item] of sorted) {
21891
- if (!item) {
21892
- if (Object.prototype.hasOwnProperty.call(deduped, entryKey)) changed = true;
21893
- else deduped[entryKey] = item;
21894
- continue;
21895
- }
21896
- const normalizedType = String(item.type || "").toLowerCase();
21897
- const currentContentKey = String(item.contentKey || entryKey);
21898
- const typedIdFromEntry = extractTypedIdentityId(entryKey, normalizedType);
21899
- const typedIdFromContent = extractTypedIdentityId(currentContentKey, normalizedType);
21900
- const identityId = typedIdFromEntry || typedIdFromContent || currentContentKey || entryKey;
21901
- const identity = `${normalizedType || "unknown"}:${identityId}`;
21902
- if (seenIdentity.has(identity)) {
21903
- changed = true;
21904
- continue;
21905
- }
21906
- seenIdentity.add(identity);
21907
- const contentKeyIsCanonical = isCanonicalTypedDbKey(
21908
- currentContentKey,
21909
- normalizedType
21910
- );
21911
- const entryKeyIsCanonical = isCanonicalTypedDbKey(entryKey, normalizedType);
21912
- const canonicalKey = contentKeyIsCanonical && currentContentKey || entryKeyIsCanonical && entryKey || entryKey;
21913
- const canonicalContentKey = contentKeyIsCanonical && currentContentKey || entryKeyIsCanonical && entryKey || currentContentKey;
21914
- if (canonicalKey !== entryKey || canonicalContentKey !== item.contentKey) {
21915
- changed = true;
21916
- }
21917
- deduped[canonicalKey] = {
21918
- ...item,
21919
- contentKey: canonicalContentKey
21920
- };
21921
- }
21922
- const removedKeys = Object.keys(contents).filter(
21923
- (key) => !Object.prototype.hasOwnProperty.call(deduped, key)
21924
- );
21925
- if (!changed && removedKeys.length > 0) {
21926
- changed = true;
21927
- }
21928
- return { contents: deduped, removedKeys, changed };
21929
- };
21930
19618
  var createSpaceThunks = (create) => ({
21931
19619
  // --- 读取当前设备下的空间侧边栏状态 ---
21932
19620
  fetchSpaceSidebarState: create.asyncThunk(fetchSpaceSidebarStateAction, {
@@ -22020,107 +19708,7 @@ var createSpaceThunks = (create) => ({
22020
19708
  state3.initialized = true;
22021
19709
  }
22022
19710
  }
22023
- }),
22024
- fixSpace: create.asyncThunk(
22025
- async (spaceId, thunkAPI) => {
22026
- const spaceKey = createSpaceKey.space(spaceId);
22027
- const spaceData = await thunkAPI.dispatch(
22028
- read({ dbKey: spaceKey })
22029
- ).unwrap();
22030
- if (!spaceData) {
22031
- throw new Error("\u7A7A\u95F4\u4E0D\u5B58\u5728");
22032
- }
22033
- const changes = {};
22034
- const spaceDataId = String(spaceData.id || "");
22035
- if (spaceDataId.startsWith("space-")) {
22036
- changes.id = spaceDataId.slice(6);
22037
- }
22038
- const {
22039
- contents: dedupedContents,
22040
- removedKeys,
22041
- changed: deduped
22042
- } = dedupeSpaceContents(spaceData.contents);
22043
- const agentReferenceEntries = Object.entries(dedupedContents).filter(
22044
- ([entryKey, item]) => {
22045
- if (!item) return false;
22046
- const normalizedType = String(item.type || "").toLowerCase();
22047
- const contentKey = String(item.contentKey || entryKey);
22048
- return normalizedType === "agent" || contentKey.startsWith("agent-") || entryKey.startsWith("agent-");
22049
- }
22050
- );
22051
- const orphanAgentEntryKeys = (await Promise.all(
22052
- agentReferenceEntries.map(async ([entryKey, item]) => {
22053
- const dbKey = String(item?.contentKey || entryKey);
22054
- try {
22055
- const entity = await thunkAPI.dispatch(
22056
- read({ dbKey })
22057
- ).unwrap();
22058
- return entity ? null : entryKey;
22059
- } catch {
22060
- return entryKey;
22061
- }
22062
- })
22063
- )).filter((key) => !!key);
22064
- let contentChanges = null;
22065
- if (deduped) {
22066
- contentChanges = { ...dedupedContents };
22067
- for (const removedKey of removedKeys) {
22068
- if (!Object.prototype.hasOwnProperty.call(contentChanges, removedKey)) {
22069
- contentChanges[removedKey] = null;
22070
- }
22071
- }
22072
- }
22073
- if (orphanAgentEntryKeys.length > 0) {
22074
- if (!contentChanges) contentChanges = { ...dedupedContents };
22075
- orphanAgentEntryKeys.forEach((entryKey) => {
22076
- contentChanges[entryKey] = null;
22077
- });
22078
- }
22079
- if (contentChanges) {
22080
- changes.contents = contentChanges;
22081
- }
22082
- if (Object.keys(changes).length === 0) {
22083
- return {
22084
- repaired: false,
22085
- deduped: false,
22086
- prunedOrphanAgentRefs: 0,
22087
- spaceData
22088
- };
22089
- }
22090
- changes.updatedAt = Math.max(
22091
- Date.now(),
22092
- toTimestampMs(spaceData.updatedAt) + 1
22093
- );
22094
- await thunkAPI.dispatch(
22095
- patch({ dbKey: spaceKey, changes })
22096
- ).unwrap();
22097
- const refreshedSpaceData = await thunkAPI.dispatch(
22098
- read({ dbKey: spaceKey })
22099
- ).unwrap();
22100
- return {
22101
- repaired: true,
22102
- deduped,
22103
- prunedOrphanAgentRefs: orphanAgentEntryKeys.length,
22104
- spaceData: refreshedSpaceData || { ...spaceData, ...changes }
22105
- };
22106
- },
22107
- {
22108
- fulfilled: (state3, action2) => {
22109
- if (state3.currentSpaceId !== action2.meta.arg) return;
22110
- const nextSpace = action2.payload.spaceData;
22111
- if (!nextSpace) return;
22112
- if (!state3.currentSpace) {
22113
- state3.currentSpace = nextSpace;
22114
- return;
22115
- }
22116
- const currentUpdatedAt = toTimestampMs(state3.currentSpace.updatedAt);
22117
- const nextUpdatedAt2 = toTimestampMs(nextSpace.updatedAt);
22118
- if (nextUpdatedAt2 > currentUpdatedAt) {
22119
- state3.currentSpace = nextSpace;
22120
- }
22121
- }
22122
- }
22123
- )
19711
+ })
22124
19712
  });
22125
19713
 
22126
19714
  // packages/create/space/spaceEventCore.ts
@@ -22172,6 +19760,25 @@ var DEFAULT_COLLAPSED_CATEGORIES = {
22172
19760
  var createSliceWithThunks4 = buildCreateSlice({
22173
19761
  creators: { asyncThunk: asyncThunkCreator }
22174
19762
  });
19763
+ var FAVORITES_COLLAPSED_STORAGE_KEY = "nolo-sidebar-favorites-collapsed";
19764
+ var readStoredFavoritesCollapsed = () => {
19765
+ try {
19766
+ if (typeof window === "undefined") return false;
19767
+ return window.localStorage.getItem(FAVORITES_COLLAPSED_STORAGE_KEY) === "1";
19768
+ } catch {
19769
+ return false;
19770
+ }
19771
+ };
19772
+ var writeStoredFavoritesCollapsed = (collapsed) => {
19773
+ try {
19774
+ if (typeof window === "undefined") return;
19775
+ window.localStorage.setItem(
19776
+ FAVORITES_COLLAPSED_STORAGE_KEY,
19777
+ collapsed ? "1" : "0"
19778
+ );
19779
+ } catch {
19780
+ }
19781
+ };
22175
19782
  var initialState4 = {
22176
19783
  currentSpaceId: null,
22177
19784
  currentSpace: null,
@@ -22186,7 +19793,8 @@ var initialState4 = {
22186
19793
  dialogTitles: {},
22187
19794
  // 第一层网页体验:对话切走后仍可在 sidebar 感知其运行中/已完成。
22188
19795
  // 多窗口/多 tab 的已读同步语义暂不在这里定义,等桌面端阶段统一设计。
22189
- unreadDialogIds: {}
19796
+ unreadDialogIds: {},
19797
+ favoritesCollapsed: readStoredFavoritesCollapsed()
22190
19798
  };
22191
19799
  var getSpaceUpdatedAt2 = (space) => {
22192
19800
  if (!space) return 0;
@@ -22223,6 +19831,7 @@ var spaceSlice = createSliceWithThunks4({
22223
19831
  state3.memberSpaces = null;
22224
19832
  state3.collapsedCategories = {};
22225
19833
  state3.viewMode = "all";
19834
+ state3.favoritesCollapsed = readStoredFavoritesCollapsed();
22226
19835
  state3.initialized = false;
22227
19836
  state3.loading = false;
22228
19837
  state3.error = void 0;
@@ -22236,6 +19845,11 @@ var spaceSlice = createSliceWithThunks4({
22236
19845
  setViewMode: create.reducer((state3, action2) => {
22237
19846
  state3.viewMode = action2.payload;
22238
19847
  }),
19848
+ /** 切换侧边栏「我的收藏」专区折叠态,并持久化到 localStorage */
19849
+ toggleFavoritesCollapse: create.reducer((state3) => {
19850
+ state3.favoritesCollapsed = !state3.favoritesCollapsed;
19851
+ writeStoredFavoritesCollapsed(state3.favoritesCollapsed);
19852
+ }),
22239
19853
  /** 用本地缓存先恢复空间列表,远端校验完成后再由 fetchUserSpaceMemberships.fulfilled 覆盖。 */
22240
19854
  hydrateMemberSpacesFromLocal: create.reducer(
22241
19855
  (state3, action2) => {
@@ -22308,12 +19922,12 @@ var {
22308
19922
  fetchUserSpaceMemberships,
22309
19923
  addMember,
22310
19924
  removeMember,
22311
- fixSpace,
22312
19925
  fetchSpaceSidebarState,
22313
19926
  applySpaceEvent,
22314
19927
  markDialogRead,
22315
19928
  resetSpace,
22316
19929
  setViewMode,
19930
+ toggleFavoritesCollapse,
22317
19931
  hydrateMemberSpacesFromLocal
22318
19932
  } = spaceSlice.actions;
22319
19933
  var selectSpaceState = (state3) => state3.space;
@@ -22357,6 +19971,10 @@ var selectSpaceLoading = createSelector(
22357
19971
  selectSpaceState,
22358
19972
  (space) => space.loading
22359
19973
  );
19974
+ var selectMemberSpacesLoaded = createSelector(
19975
+ selectSpaceState,
19976
+ (space) => space.memberSpaces !== null
19977
+ );
22360
19978
  var selectMembershipStatus = createSelector(
22361
19979
  selectSpaceState,
22362
19980
  (space) => space.membershipStatus ?? "idle"
@@ -22373,6 +19991,10 @@ var selectIsCategoryCollapsed = (categoryId) => createSelector(
22373
19991
  selectCollapsedCategories,
22374
19992
  (collapsed) => collapsed[categoryId] ?? (DEFAULT_COLLAPSED_CATEGORIES[categoryId] ?? true)
22375
19993
  );
19994
+ var selectFavoritesCollapsed = createSelector(
19995
+ selectSpaceState,
19996
+ (space) => space.favoritesCollapsed ?? false
19997
+ );
22376
19998
  var selectDialogStatuses = createSelector(
22377
19999
  selectSpaceState,
22378
20000
  (space) => space.dialogStatuses ?? {}
@@ -22406,19 +20028,15 @@ var selectViewMode = createSelector(
22406
20028
  var spaceSlice_default = spaceSlice.reducer;
22407
20029
 
22408
20030
  export {
20031
+ API_REPORTED_COST_MULTIPLIER,
20032
+ normalizeUsage,
20033
+ shouldUseServerProxy,
20034
+ prepareTokenUsageData,
22409
20035
  instance,
22410
20036
  initReactI18next,
22411
20037
  i18nBaseConfig,
22412
20038
  isAssistantToolStub,
22413
20039
  fetchAndCacheMessages,
22414
- buildDatabaseFileContentUrl,
22415
- serializeMessageContent,
22416
- DEFAULT_CONTEXT_WINDOW,
22417
- getModelContextWindow,
22418
- getModelInfo,
22419
- estimateTokenCount,
22420
- planContextUsage,
22421
- planCompression,
22422
20040
  extractReferenceKeysFromMessage,
22423
20041
  normalizeAppRouteId,
22424
20042
  uiAskChoiceFunctionSchema,
@@ -22477,22 +20095,24 @@ export {
22477
20095
  fetchUserSpaceMemberships,
22478
20096
  addMember,
22479
20097
  removeMember,
22480
- fixSpace,
22481
20098
  fetchSpaceSidebarState,
22482
20099
  applySpaceEvent,
22483
20100
  markDialogRead,
22484
20101
  resetSpace,
22485
20102
  setViewMode,
20103
+ toggleFavoritesCollapse,
22486
20104
  hydrateMemberSpacesFromLocal,
22487
20105
  selectCurrentSpaceId,
22488
20106
  selectCurrentSpace,
22489
20107
  selectAllMemberSpaces,
22490
20108
  selectOwnedMemberSpaces,
22491
20109
  selectSpaceLoading,
20110
+ selectMemberSpacesLoaded,
22492
20111
  selectMembershipStatus,
22493
20112
  selectSpaceInitialized,
22494
20113
  selectCollapsedCategories,
22495
20114
  selectIsCategoryCollapsed,
20115
+ selectFavoritesCollapsed,
22496
20116
  selectDialogStatuses,
22497
20117
  selectDialogEventTimestamps,
22498
20118
  selectDialogTitles,
@@ -22504,7 +20124,6 @@ export {
22504
20124
  selectViewMode,
22505
20125
  spaceSlice_default,
22506
20126
  selectCurrentUserBalance,
22507
- shouldUseServerProxy,
22508
20127
  updateTokensAction,
22509
20128
  clearDialogState,
22510
20129
  createPageAndAddReference,