vue2-client 1.18.39 → 1.18.41

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 (103) hide show
  1. package/.eslintrc.js +90 -90
  2. package/Components.md +60 -60
  3. package/docs/index.md +30 -30
  4. package/docs//350/257/267/346/261/202/345/267/245/345/205/267/344/275/277/347/224/250/350/257/264/346/230/216.md +353 -0
  5. package/index.js +31 -31
  6. package/jest-transform-stub.js +8 -8
  7. package/jest.setup.js +7 -7
  8. package/package.json +1 -1
  9. package/src/assets/img/querySlotDemo.svg +15 -15
  10. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  11. package/src/base-client/components/common/CitySelect/index.js +3 -3
  12. package/src/base-client/components/common/CitySelect/index.md +109 -109
  13. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  14. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  15. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  16. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  17. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  18. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  19. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  20. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  21. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  22. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  23. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  24. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  25. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  26. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  27. package/src/base-client/components/common/Tree/index.js +2 -2
  28. package/src/base-client/components/common/Upload/index.js +3 -3
  29. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  30. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  31. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  32. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  33. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  34. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  35. package/src/base-client/components/common/XDescriptions/index.md +322 -322
  36. package/src/base-client/components/common/XForm/index.md +178 -178
  37. package/src/base-client/components/common/XFormTable/demo.vue +2 -4
  38. package/src/base-client/components/common/XReport/print.js +186 -186
  39. package/src/base-client/components/common/XReportGrid/XReportTrGroup.vue +1 -1
  40. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  41. package/src/base-client/components/common/XStepView/index.js +3 -3
  42. package/src/base-client/components/common/XStepView/index.md +31 -31
  43. package/src/base-client/components/common/XTable/XTable.vue +1715 -1715
  44. package/src/base-client/components/common/XTable/XTableWrapper.vue +786 -769
  45. package/src/base-client/components/common/XTable/index.md +255 -255
  46. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  47. package/src/base-client/plugins/Config.js +19 -19
  48. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  49. package/src/components/Charts/Bar.vue +62 -62
  50. package/src/components/Charts/ChartCard.vue +134 -134
  51. package/src/components/Charts/Liquid.vue +67 -67
  52. package/src/components/Charts/MiniArea.vue +39 -39
  53. package/src/components/Charts/MiniBar.vue +39 -39
  54. package/src/components/Charts/MiniProgress.vue +75 -75
  55. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  56. package/src/components/Charts/Radar.vue +68 -68
  57. package/src/components/Charts/RankList.vue +77 -77
  58. package/src/components/Charts/TagCloud.vue +113 -113
  59. package/src/components/Charts/TransferBar.vue +64 -64
  60. package/src/components/Charts/Trend.vue +82 -82
  61. package/src/components/Charts/chart.less +12 -12
  62. package/src/components/Charts/smooth.area.less +13 -13
  63. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  64. package/src/components/NumberInfo/index.js +3 -3
  65. package/src/components/NumberInfo/index.less +54 -54
  66. package/src/components/NumberInfo/index.md +43 -43
  67. package/src/components/card/ChartCard.vue +79 -79
  68. package/src/components/chart/Bar.vue +60 -60
  69. package/src/components/chart/MiniArea.vue +67 -67
  70. package/src/components/chart/MiniBar.vue +59 -59
  71. package/src/components/chart/MiniProgress.vue +57 -57
  72. package/src/components/chart/Radar.vue +80 -80
  73. package/src/components/chart/RankingList.vue +60 -60
  74. package/src/components/chart/Trend.vue +79 -79
  75. package/src/components/chart/index.less +9 -9
  76. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  77. package/src/components/input/IInput.vue +66 -66
  78. package/src/components/menu/SideMenu.vue +75 -75
  79. package/src/components/menu/menu.js +273 -273
  80. package/src/components/tool/AStepItem.vue +60 -60
  81. package/src/composables/demo/UseRequestDemo.vue +175 -0
  82. package/src/composables/index.js +6 -0
  83. package/src/composables/useGlobalLoading.js +206 -0
  84. package/src/composables/usePost.js +221 -0
  85. package/src/layouts/CommonLayout.vue +56 -56
  86. package/src/layouts/header/HeaderNotice.vue +177 -177
  87. package/src/lib.js +1 -1
  88. package/src/mock/extend/index.js +84 -84
  89. package/src/mock/goods/index.js +108 -108
  90. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  91. package/src/pages/system/dictionary/index.vue +44 -44
  92. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  93. package/src/pages/system/monitor/operLog/index.vue +37 -37
  94. package/src/services/api/cas.js +79 -79
  95. package/src/services/api/common.js +11 -11
  96. package/src/services/api/restTools.js +36 -46
  97. package/src/store/modules/setting.js +119 -119
  98. package/src/utils/authority-utils.js +85 -85
  99. package/src/utils/errorCode.js +6 -6
  100. package/src/utils/map-utils.js +47 -47
  101. package/src/utils/request.js +103 -0
  102. package/vue.config.js +9 -4
  103. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -0,0 +1,353 @@
1
+ # 请求工具使用说明
2
+
3
+ 本文档介绍项目中封装的请求工具及其配置方式。
4
+
5
+ ## 架构概览
6
+
7
+ ```
8
+ ┌─────────────────────────────────────────────────────────────┐
9
+ │ 业务组件 │
10
+ ├─────────────────────────────────────────────────────────────┤
11
+ │ usePost / useRunLogic (响应式 Hook) │
12
+ ├─────────────────────────────────────────────────────────────┤
13
+ │ restTools.js │
14
+ │ (post / get / del / put) │
15
+ ├─────────────────────────────────────────────────────────────┤
16
+ │ request.js │
17
+ │ (axios 拦截器 + 请求去重 + 错误处理) │
18
+ └─────────────────────────────────────────────────────────────┘
19
+ ```
20
+
21
+ ---
22
+
23
+ ## 一、基础请求方法 (restTools.js)
24
+
25
+ ### 1. post - POST 请求
26
+
27
+ ```javascript
28
+ import { post } from '@vue2-client/services/api'
29
+
30
+ // 基础用法
31
+ const result = await post('/api/user/save', { name: '张三' })
32
+
33
+ // 带配置
34
+ const result = await post('/api/user/save', { name: '张三' }, {
35
+ globalLoading: '保存中...', // 显示全局 Loading
36
+ dedupe: false // 关闭请求去重(POST 默认开启)
37
+ })
38
+ ```
39
+
40
+ **配置项说明:**
41
+
42
+ | 参数 | 类型 | 默认值 | 说明 |
43
+ |------|------|--------|------|
44
+ | `globalLoading` | `boolean \| string` | `false` | 是否显示全局 Loading,传字符串可自定义提示文字 |
45
+ | `dedupe` | `boolean` | `true` | 请求去重开关,POST 请求默认开启 |
46
+
47
+ ### 2. get - GET 请求
48
+
49
+ ```javascript
50
+ import { get } from '@vue2-client/services/api'
51
+
52
+ const result = await get('/api/user/list', { page: 1, size: 10 })
53
+ ```
54
+
55
+ ### 3. del - DELETE 请求
56
+
57
+ ```javascript
58
+ import { del } from '@vue2-client/services/api'
59
+
60
+ const result = await del('/api/user/delete', { id: 1 })
61
+ ```
62
+
63
+ ### 4. put - PUT 请求
64
+
65
+ ```javascript
66
+ import { put } from '@vue2-client/services/api'
67
+
68
+ const result = await put('/api/user/update', { id: 1, name: '李四' })
69
+ ```
70
+
71
+ ### 5. postByServiceName - 按服务名请求
72
+
73
+ ```javascript
74
+ import { postByServiceName } from '@vue2-client/services/api'
75
+
76
+ // 自动拼接 URL: /api/{serviceName}/{url}
77
+ const result = await postByServiceName('/user/save', { name: '张三' }, 'af-system')
78
+
79
+ // 开发环境: /devApi/{serviceName}/{url}
80
+ const result = await postByServiceName('/user/save', { name: '张三' }, 'af-system', true)
81
+ ```
82
+
83
+ ---
84
+
85
+ ## 二、Composition API Hooks (usePost.js)
86
+
87
+ ### 1. usePost - 响应式 POST 请求
88
+
89
+ 适用于需要在模板中绑定 loading 状态的场景。
90
+
91
+ ```javascript
92
+ import { usePost } from '@vue2-client/composables'
93
+
94
+ export default {
95
+ setup() {
96
+ const { loading, data, error, execute, reset } = usePost('/api/user/save', {
97
+ globalLoading: '保存中...',
98
+ dedupe: true
99
+ })
100
+
101
+ const handleSave = async (formData) => {
102
+ const { success, data, error } = await execute(formData)
103
+ if (success) {
104
+ message.success('保存成功')
105
+ } else {
106
+ // 错误处理(可选,拦截器已统一处理)
107
+ console.error(error)
108
+ }
109
+ }
110
+
111
+ return { loading, data, error, handleSave }
112
+ }
113
+ }
114
+ ```
115
+
116
+ **模板使用:**
117
+
118
+ ```html
119
+ <a-button :loading="loading" @click="handleSave(formData)">保存</a-button>
120
+ ```
121
+
122
+ **返回值说明:**
123
+
124
+ | 属性 | 类型 | 说明 |
125
+ |------|------|------|
126
+ | `loading` | `boolean` | 请求进行中状态(响应式) |
127
+ | `data` | `any` | 请求返回的数据(响应式) |
128
+ | `error` | `Error \| null` | 请求错误信息(响应式) |
129
+ | `execute(params, config)` | `Function` | 执行请求,返回 `{ success, data, error }` |
130
+ | `reset()` | `Function` | 重置状态 |
131
+
132
+ **execute 返回值:**
133
+
134
+ ```javascript
135
+ const { success, data, error } = await execute(params)
136
+ // success: boolean - 请求是否成功
137
+ // data: any - 成功时的响应数据
138
+ // error: Error | null - 失败时的错误信息
139
+ ```
140
+
141
+ ---
142
+
143
+ ## 三、业务逻辑请求 (useRunLogic)
144
+
145
+ ### useRunLogic - 响应式业务逻辑调用
146
+
147
+ 用于调用后端 Logic 业务逻辑,自动拼接 URL。
148
+
149
+ ```javascript
150
+ import { useRunLogic } from '@vue2-client/composables'
151
+
152
+ export default {
153
+ setup() {
154
+ const { loading, data, error, execute, reset } = useRunLogic('getUserInfo', {
155
+ serviceName: 'af-system', // 可选,默认使用 VUE_APP_SYSTEM_NAME
156
+ isDev: false, // 可选,是否使用开发环境 API
157
+ globalLoading: '加载中...',
158
+ dedupe: true
159
+ })
160
+
161
+ const loadUser = async (userId) => {
162
+ const { success, data: result } = await execute({ userId })
163
+ if (success) {
164
+ console.log('用户信息:', result)
165
+ }
166
+ }
167
+
168
+ return { loading, data, loadUser }
169
+ }
170
+ }
171
+ ```
172
+
173
+ **URL 拼接规则:**
174
+ - 生产环境: `/api/{serviceName}/logic/{logicName}`
175
+ - 开发环境: `/devApi/{serviceName}/logic/{logicName}`
176
+
177
+ **配置项说明:**
178
+
179
+ | 参数 | 类型 | 默认值 | 说明 |
180
+ |------|------|--------|------|
181
+ | `serviceName` | `string` | `VUE_APP_SYSTEM_NAME` | 服务名称 |
182
+ | `isDev` | `boolean` | `false` | 是否使用开发环境 API |
183
+ | `globalLoading` | `boolean \| string` | `false` | 是否显示全局 Loading |
184
+ | `dedupe` | `boolean` | `false` | 请求去重开关 |
185
+
186
+ ---
187
+
188
+ ## 四、全局功能
189
+
190
+ ### 1. 请求去重
191
+
192
+ POST 请求默认开启去重,防止用户快速重复点击导致的重复提交。
193
+
194
+ **工作原理:**
195
+ - 相同的 URL + 参数 组合视为重复请求
196
+ - 重复请求会被直接拒绝(不发起网络请求),控制台输出警告
197
+ - 请求完成后自动清理记录
198
+
199
+ **关闭去重:**
200
+
201
+ ```javascript
202
+ post('/api/save', data, { dedupe: false })
203
+ ```
204
+
205
+ **错误码:**
206
+ - 重复请求被拦截时,error.code 为 `ERR_DUPLICATE_REQUEST`
207
+
208
+ ### 2. 全局 Loading
209
+
210
+ 显示全屏遮罩 Loading,阻止用户操作。
211
+
212
+ ```javascript
213
+ // 使用默认文字 "加载中..."
214
+ post('/api/save', data, { globalLoading: true })
215
+
216
+ // 自定义提示文字
217
+ post('/api/save', data, { globalLoading: '正在保存...' })
218
+ ```
219
+
220
+ **特性:**
221
+ - 支持引用计数,多个并发请求时正确处理显示/隐藏
222
+ - 默认 30 秒超时自动隐藏,防止异常情况下 Loading 卡死
223
+ - 可通过 `forceHideGlobalLoading()` 强制隐藏
224
+
225
+ **手动控制:**
226
+
227
+ ```javascript
228
+ import {
229
+ showGlobalLoading,
230
+ hideGlobalLoading,
231
+ forceHideGlobalLoading
232
+ } from '@vue2-client/composables/useGlobalLoading'
233
+
234
+ // 显示 Loading(默认 30 秒超时)
235
+ showGlobalLoading('处理中...')
236
+
237
+ // 显示 Loading,自定义超时时间(60 秒)
238
+ showGlobalLoading('处理中...', 60000)
239
+
240
+ // 显示 Loading,禁用超时
241
+ showGlobalLoading('处理中...', 0)
242
+
243
+ // 隐藏 Loading(引用计数减一)
244
+ hideGlobalLoading()
245
+
246
+ // 强制隐藏(重置计数器,立即隐藏)
247
+ forceHideGlobalLoading()
248
+ ```
249
+
250
+ ---
251
+
252
+ ## 五、EventStream 流式请求
253
+
254
+ 用于 SSE (Server-Sent Events) 场景。
255
+
256
+ ```javascript
257
+ import { startEventStream, startEventStreamPOST } from '@vue2-client/services/api'
258
+
259
+ // GET 方式
260
+ const stop = startEventStream(
261
+ '/api/stream/data',
262
+ { query: 'test' },
263
+ {}, // headers
264
+ (data, eventType) => {
265
+ console.log('收到数据:', data, eventType)
266
+ },
267
+ (error) => {
268
+ console.error('错误:', error)
269
+ }
270
+ )
271
+
272
+ // 停止监听
273
+ stop()
274
+
275
+ // POST 方式
276
+ const stop = startEventStreamPOST('/api/stream/data', params, headers, onData, onError)
277
+ ```
278
+
279
+ ---
280
+
281
+ ## 六、最佳实践
282
+
283
+ ### 1. 表单提交场景
284
+
285
+ ```javascript
286
+ const { loading, execute } = usePost('/api/form/save', {
287
+ globalLoading: '提交中...',
288
+ dedupe: true // 防止重复提交
289
+ })
290
+
291
+ const handleSubmit = async () => {
292
+ const { success } = await execute(formData)
293
+ if (success) {
294
+ message.success('提交成功')
295
+ }
296
+ // 错误已由拦截器统一处理,无需额外处理
297
+ }
298
+ ```
299
+
300
+ ### 2. 列表查询场景
301
+
302
+ ```javascript
303
+ const { loading, data, execute } = usePost('/api/list/query')
304
+
305
+ const loadData = async () => {
306
+ const { success } = await execute({ page: 1, size: 10 })
307
+ if (success) {
308
+ tableData.value = data
309
+ }
310
+ }
311
+ ```
312
+
313
+ ### 3. 业务逻辑调用
314
+
315
+ ```javascript
316
+ const { loading, execute } = useRunLogic('calculatePrice', {
317
+ globalLoading: '计算中...'
318
+ })
319
+
320
+ const calculate = async () => {
321
+ const { success, data } = await execute({ productId: 1, quantity: 10 })
322
+ if (success) {
323
+ price.value = data.totalPrice
324
+ }
325
+ }
326
+ ```
327
+
328
+ ### 4. 错误处理模式
329
+
330
+ ```javascript
331
+ const { execute } = usePost('/api/save')
332
+
333
+ // 模式一:只关心成功(推荐,错误由拦截器统一处理)
334
+ const handleSave = async () => {
335
+ const { success, data } = await execute(formData)
336
+ if (success) {
337
+ message.success('保存成功')
338
+ }
339
+ }
340
+
341
+ // 模式二:需要自定义错误处理
342
+ const handleSave = async () => {
343
+ const { success, data, error } = await execute(formData)
344
+ if (success) {
345
+ message.success('保存成功')
346
+ } else if (error?.code === 'ERR_DUPLICATE_REQUEST') {
347
+ // 重复请求,静默处理
348
+ } else {
349
+ // 自定义错误处理
350
+ message.error('保存失败: ' + error?.message)
351
+ }
352
+ }
353
+ ```
package/index.js CHANGED
@@ -1,31 +1,31 @@
1
- import Vue from 'vue'
2
- import { initRouter } from '@vue2-client/router/index.js'
3
- import { initI18n } from '@vue2-client/utils/i18n'
4
- import bootstrap from '@vue2-client/bootstrap'
5
- import { modules } from '@vue2-client/store'
6
- import '@vue2-client/theme/index.less'
7
- import '@vue2-client/utils/filter'
8
- import 'animate.css/source/animate.css'
9
- import 'moment/locale/zh-cn'
10
- import Antd from 'ant-design-vue'
11
- import Viser from 'viser-vue'
12
- // 插件
13
- import Plugins from '@vue2-client/base-client/plugins'
14
-
15
- const routerOptions = initRouter()
16
- const i18n = initI18n('CN', 'US')
17
-
18
- Vue.use(Antd)
19
- Vue.use(Viser)
20
- Vue.use(Plugins)
21
-
22
- Vue.config.productionTip = false
23
- const message = Vue.prototype.$message
24
-
25
- export {
26
- routerOptions,
27
- modules,
28
- i18n,
29
- message,
30
- bootstrap
31
- }
1
+ import Vue from 'vue'
2
+ import { initRouter } from '@vue2-client/router/index.js'
3
+ import { initI18n } from '@vue2-client/utils/i18n'
4
+ import bootstrap from '@vue2-client/bootstrap'
5
+ import { modules } from '@vue2-client/store'
6
+ import '@vue2-client/theme/index.less'
7
+ import '@vue2-client/utils/filter'
8
+ import 'animate.css/source/animate.css'
9
+ import 'moment/locale/zh-cn'
10
+ import Antd from 'ant-design-vue'
11
+ import Viser from 'viser-vue'
12
+ // 插件
13
+ import Plugins from '@vue2-client/base-client/plugins'
14
+
15
+ const routerOptions = initRouter()
16
+ const i18n = initI18n('CN', 'US')
17
+
18
+ Vue.use(Antd)
19
+ Vue.use(Viser)
20
+ Vue.use(Plugins)
21
+
22
+ Vue.config.productionTip = false
23
+ const message = Vue.prototype.$message
24
+
25
+ export {
26
+ routerOptions,
27
+ modules,
28
+ i18n,
29
+ message,
30
+ bootstrap
31
+ }
@@ -1,8 +1,8 @@
1
- module.exports = {
2
- process () {
3
- return 'module.exports = {};'
4
- },
5
- getCacheKey () {
6
- return 'lessTransform'
7
- },
8
- }
1
+ module.exports = {
2
+ process () {
3
+ return 'module.exports = {};'
4
+ },
5
+ getCacheKey () {
6
+ return 'lessTransform'
7
+ },
8
+ }
package/jest.setup.js CHANGED
@@ -1,7 +1,7 @@
1
- global.matchMedia = global.matchMedia || function () {
2
- return {
3
- matches: false,
4
- addListener: function () {},
5
- removeListener: function () {}
6
- }
7
- }
1
+ global.matchMedia = global.matchMedia || function () {
2
+ return {
3
+ matches: false,
4
+ addListener: function () {},
5
+ removeListener: function () {}
6
+ }
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.18.39",
3
+ "version": "1.18.41",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
@@ -1,16 +1,16 @@
1
- <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 838.4997558593744 793.4999847412107" width="838.4997558593744" height="793.4999847412107">
2
- <!-- svg-source:excalidraw -->
3
- <!-- payload-type:application/vnd.excalidraw+json --><!-- payload-version:2 --><!-- payload-start -->eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1cXElvI8dcdTAwMTW++1dcYvJ1RNe++CaR2qXZNPKMJjZcdTAwMDYtsrmMmmyabC2UMZfEcVx1MDAxMFx1MDAwM0FcdTAwMDLEycWBY1x1MDAwNDGQS1x1MDAxMlx1MDAxZoJcdTAwMDCGXHUwMDAz5M9kZpx/kVdNit3sjc1N0jhD2Fx1MDAwM6m7Wf2q6r3vfd+rKn3yztLSstdr28vvLy3bXHUwMDE3ZctpVDrW+fJcdTAwMWRz/czudFx1MDAxYm5cdTAwMGJuXHUwMDEx//eue9op+0/WPa/dff+994JvXHUwMDE0ym6z/y3bsZt2y+vCcz+B35eWPvH/XHK9p2OXPatVc2z/XHUwMDBi/q3gVYJHL951W/5bMeeaS6a0XHUwMDFhPtHoluB1nl2B21XL6drBXHUwMDFkc2nZ7ZRFy3F3Lrpb9Ky019vrdc+KwVurXHLHOfB6Tr9PVrl+2lx02dT1Ou6J/bhR8erm7ZHrw+91XVx1MDAxOIHgW1x1MDAxZPe0Vm/Z3e7VsPlX3bZVbng901x1MDAwZULDq/1BeH8puHJcdTAwMDG/rVxiQlx1MDAwYlx1MDAxY1OkXHUwMDE5XHUwMDE3QsP/w9umgVx1MDAxNcwoLiipkSBSMcWojJhWdFx1MDAxZLdjTHuXaY64XGaMO7bKJzWwsFVcdTAwMTk+43WsVrdtdWDKgufOXHUwMDA3nSZCXHUwMDE1XHUwMDEwfCjiWHIp9fCJut2o1T14RMqCNlx1MDAxZkIlXHUwMDEyiLOQMbY/L1x1MDAxOK5rXGYtXHUwMDA13TAmtLcrvot8XHUwMDE0XHUwMDFk17rVaVx1MDAwZsZv2Tc1ZL75dT3qX2FcdTAwMWZcdTAwMGLN/bn1+IPm1lx1MDAxMVuvs8era2s7SD5prlxy21x1MDAxYXFIq9Nxz5eHd15cZn5cbkw7bVesvpdhIVx1MDAxOEKEKJiZYHqdRutcdTAwMDRutk5cdTAwMWQnuOaWT1x1MDAwMsf0r764M1x1MDAxYVx1MDAxMH1D11x1MDAwZtdOXGIt0+36prt9uVvcquqdnaDTV0Z69kVohnxH4VxuXHUwMDE1XHUwMDEwOFxupZxiXHSTXHUwMDEwdVx1MDAxNIxcblTC4FNFYnOLVcJssiznnJd33XTYTet+XHUwMDAzh1x1MDAxNkwjToVcZmAoQC9Oolx1MDAxN4foJVx1MDAxOFOKYJ5cdTAwMDe9JnL0M7zh6JWV59aTYvuhKjYvyO52dV6Ojlx1MDAxNVFcYk/g6IHfXHUwMDFhf4V3/udfX7/8+Tcvf/3TV7/7tmR5VshcdTAwMGbclnfQuDSWXHUwMDExNXJ1w2o2nN7I9JvmVp1GzYzysmNXvZHk4TUgXHUwMDExXHJve2477JVdXHUwMDFizDZvoYFcdTAwMGaU4S1cdTAwMTZcXO1sV6L9cTuNWqNlOY/SOpBcdTAwMTHL2XNcdTAwMTGZh9FgZlpcdTAwMTUk05pcIkGxgv9cIsFMOfdRXHUwMDFmYXhKKMliXHUwMDExLVxuSFx1MDAwMlx1MDAxMFx1MDAwMFx1MDAwZSBOtJZcdTAwMDFcdTAwMTRcdTAwMGbjXHUwMDFiU1x1MDAxZq5cdTAwMTVAOTGNXHUwMDA0yfZtuKeEO1x1MDAwNt5BXHSFzifEO1x0TUM04M1EUMZYkPfyXHUwMDA3/IhDxrNcdTAwMGZhSPFpgrLtNqKIXHUwMDEy/LRcdTAwMTRMvv/L8OeP7iQ+nepv5lx1MDAxM/O0oLVcdTAwMTjqOFbXK7rNZsODbt43Jka70/WsjrfWaFVcdTAwMWGtXHUwMDFh3Fx1MDAwYlDwim5u50ilPriUT033UVx1MDAwMXPGXHUwMDE5xkxcdTAwMTLClZKChp6qWW0z2KzAIdpcYkFcdTAwMTJRTK468GJolN2qjDfJPVJbW0ertWJcdTAwMTXTbWWX2YFzsJJk0lxu5HLFIYtLXHUwMDAx72SEXHUwMDAx1Y3ZxFxuzFxmquLAhZFcIojGjPJHatXgS922YthcdTAwMDYmh++FXHUwMDEzQlx1MDAxNNBysXVcdTAwMTiXVP+njHKFRYh6jKXrmWN140CSRtcpXHUwMDA3uk6Mq3PO6NCRXHUwMDA2uE0w9UlcdTAwMTjlXHUwMDA0glfjxbF1ilx1MDAxM1x1MDAxMD9EU4aEXFxLwlx1MDAwNaNcdTAwMDF0XVx1MDAwYiGfgafcSW43kVx1MDAxYYfeeH6wv7l+flxctvd3712SfVBKxUZjfLP9L+9cdTAwMWX2Wk7DO7u7Vm6utVx1MDAwZlx1MDAxML04s+2ZzO23u9LDnY9rvdLTPbF376B7Ut+gK9vzomtcdTAwMTQzxIJ5nUmXJI9eLl2idVZEYO3r14SIXHUwMDE46k7G455M35KVsWRFMqqERiyGyj4gp2K11MzX+IFcdTAwMWQ3T1Wu9MOrr7979au/XHUwMDE54v3qj9/88Pc/XHUwMDAxXHUwMDBih9/noVwiytBcdTAwMDO7k6Ejmo1KJZz3QlKCXHUwMDA0QTYqJcYlsai6SOneXGYpmeu0acZcdTAwMTQj4Fx1MDAwZWHtMC4llyi/XFzZ3qDlj9c3elx1MDAxNNcrlydbb0BKJqxcdTAwMDDMTVx1MDAwM79cdTAwMTOYKVx1MDAxOSmMaMVGpJSIWLbglKxCsNVcdTAwMGZbglx1MDAxMKg+KkPJ+lxyTcn9dovVXHUwMDA3ZYeo3sbHrZJuPjrbWX3OXHUwMDFmJrfrh/nMmT75hTmt3dx/pq2jnSo6rFx1MDAxNT84PiQr5NHhxlx1MDAxY0ZhXHUwMDA2XHUwMDA2MT7Tm1RcdTAwMWaq/E6Z6ZOTeEjfMlx1MDAxYb16XHUwMDA1JkpSrDBGeeRtXHUwMDFlr7itWMKFzsRcdTAwMTKpr1x0S0CHJtD7XHUwMDE4lmCqqVlcdTAwMWOgXHUwMDBiwJIsfyRcdTAwMTJcdTAwMGI9gT9On8CNpa+///T197/op8zX3//21Vd/WPqwXHUwMDA1UWT1uu95rmc5r//6y8TEXHUwMDFkyo6zkYFI2lx1MDAxZpMoo2k/wf6o9Vx1MDAxOdQ8XHUwMDFiWcaUXHUwMDE5SVx1MDAwMbhcdTAwMWVRQPlcdTAwMTSASHRxXHRT6pNzYG1cdTAwMDK0K1IxP0RcdTAwMDVNOPB6JKBcdTAwMTFcdTAwMDGUgsXdXHUwMDEyM+IvXHUwMDFjMS6loEKSjCh7S91cdTAwMDeyXHUwMDFjyDtVidSdolRcdTAwMThcdTAwMTZcYuRcdTAwMTRleYosXHUwMDEzMnfwXHI1iZRcdTAwMWNenmuRMd3bzCfmZ0FzsVx1MDAxNDq3KmPuklx1MDAxZSogLYhZs+ZYQ75mXGaHnlx1MDAxYVRcdTAwMTlNkVx1MDAxMVx1MDAxMSEhJFx1MDAxNVx1MDAwNJ1mgycmrDNm48/SSJ1cdTAwMTFzXHIvVExcdIGkmemYVdJcdTAwMWZVgVx1MDAxMeWYXHUwMDBiRK6hzlx1MDAxOFx1MDAwMavQmlx1MDAxYVx1MDAxNWnOTzBVREoywZaAbLJ34yCSQkKYwlx1MDAwNeB7hFxu0G9cdTAwMDSISISEIOSDtim2SFx1MDAxZS75zZuDXHUwMDE0XGJgXHUwMDE05YhcdTAwMDHoUJCSwatC2D+yaUCFSsRcdTAwMDOo01xcwW0qXHUwMDE3UIDMZMxMTbRmPyku5Fx1MDAwZUGIQMQkUlxmKJPAXHUwMDFhKVx1MDAxYY9A6q+eMMlMXHUwMDEy1lx1MDAxMIJT4sJcdPe6vWZ9vS0un9ytr+Gn9UrJSsFcdTAwMDVcdTAwMDRcdTAwMDPFYXalmTdcYntcdTAwMTazqr8mclx1MDAwNbdCi5hROVF2QuRYTG5J92bziftxPLlkXCJaZpmGsdj+gWGZRlx1MDAwMjwzzHF+VMue5duKaoKIYP9cbkBChItKqszKXHSSXG4xKkJl5Fx1MDAxYqrScMWZ1ji0oPVGXHUwMDE3aWxxUGpu7Vx1MDAxZTuHat/eqD9rblx1MDAxNPdT2s1XpFlos/Mv0oyrKSV3JGg2RjBnzziZcJJWo6FcIrYzYYgk8HpIXHUwMDFkSuQv0mRP321FXHUwMDEyyFqZSIL7e2dcdTAwMTaOJCCa4khcdTAwMTJauFx1MDAxYWo9JojJtlx1MDAwYoCShTCgqWo0P/z7i5dfftWvbvz3y89cdTAwMWXa3VPHXHUwMDBij23SaspcXIsyY9JitCiTbHBiUObZY5pZh6Gc+Zt8YWKYplLJUY/FVLOCRppTysBrgX/EfY3LcZtzOSow84TCXHUwMDE4UEKHZNL4MkxZXHUwMDEzi1iTh8JNI8TMZVx1MDAxOFx1MDAxOC1cdTAwMGXcKyY6/ffI6NUh1DJcIkG8i0WsoUpwkKnCdr5sOc3fzCfmaXGuPKlEyFGIydzeP6ptXHUwMDE4VWYouWKcXG7OeeipgbRcdTAwMTlcXJhQXz1Xh2t7T93mZqtTsndrx/d541x1MDAxZUuru0hcdTAwMDVyXHUwMDBlQUpGoK4gMceM4P5m+oHswzDQMaOud39cdTAwMTdm6YvJMJSIcD7B/q7ssbpx5EjhXHUwMDE2XHUwMDFh+0Btln5cdTAwMTBXWsY25lxu5Vx1MDAxN19cYkhiJnQoUudcdTAwMDWpXHUwMDEzXHUwMDFjx4irXHUwMDE2zDXVlIg35/jFlHz97HGR1su1Z5qvlzqiXdVcdTAwMGZ7zr1cdTAwMWbdrqzkXsYoR8KuLIVHKLKKbstcdTAwMDJinOLHwbas7Fx1MDAxNci3pFwi7chcYqaKM554ZESn1oGoXHUwMDE0XFwjrFx1MDAxN8AohFbTLdZcdTAwMGW5/bc/e/3FX1x1MDAxZZzand6xXXU79ss/f/ph6/VvPnv53T/7NHpeZz1m2aVcdTAwMTVa7I0ogzGpKKZcZlx1MDAxMrpcdTAwMWLrbEbUZsNLplDQfFQnxMKW0L62RVxmOGjSSS+qxMhyTjyGgWmEiVx1MDAwN9LsbUyPi2lcdTAwMTgmjFx1MDAxOGckacE2voo7XFyykkhpmIU8W/AmlVx0oFx1MDAxOdU0QT1XmbCS5m7mXHUwMDEzd7Tr0Fx0uTk6yFx1MDAwNKIo00CxwESiSFxcJjC/b5iDkpBKaaank1xyk1x1MDAxY1x1MDAwYlx1MDAwMVx1MDAxZkNcblx1MDAxM1AwWIDKjK8h90+FcMTAtSjnTC5ONfThbK0uXHUwMDFm7FRcdTAwMWVox63RZtd6gjr2ZjtcdTAwMTdcdFx1MDAwMerqb1xyXHUwMDFm7KZSkYVMTJR/ZNXsPpFcdTAwMTSRXHUwMDA0XHUwMDEygkVCiW2ic6v/p4CFkVx1MDAwNHdcdTAwMDXviFx1MDAxZFnzb6Zcbj1GMOcj+8nmhVhcdTAwMTRcdTAwMDHDXHT6N83m8M8/97dOf/mPV7//dlx1MDAxZWzjWk+WjlqfXHUwMDE4b2N3R2CRvkOTMGB5jOQv/rNa08O1Umn76bNL0b5Qj1x1MDAxZd89PL09XHUwMDAxkFwi0CnuK3SpKeCkkJFSKiTFXHUwMDAy72t3XHUwMDBlwoYvUJ9cdTAwMTPkZzdcdTAwMTh0XHUwMDE4e4JVwilcdTAwMTamXHUwMDBiXGaQXHUwMDFjKDiSoOJDs3d1hFx1MDAwM1FcdTAwMDFUb1x1MDAxMVvBsySq+ZtcdTAwMDZT7faK5OBoYlx1MDAxOZ9cbp94XHUwMDBm7z9objqkVHV6R48uNp+K02pKKoRRXHUwMDA17WJO0VOBJcahI6fDXG5cdTAwMWFcdTAwMGLRXHUwMDBiKuPHNt+oXHUwMDFkXG6pXHUwMDFlZT4xX4qTqUxQyS79aVx1MDAxY706LP1cdTAwMTGCzW41nkeZNnJM8m1FXHUwMDE2xU3JhFxiwkx1RLCI9tKE9Vx1MDAwZrJhXHUwMDA22kyHSjy3ovJHTJVcdTAwMTlsXHUwMDE017xhYf6lv367lyePN++tbO3Z3Vx1MDAxZd1qXHUwMDFmdot7dff57DtcdTAwMGJmKP2ltDuuUpnckZzmZufoTHOvQGGOaSBcdTAwMTNf0nYs4PQ/k1wiXHUwMDE55ULkUsd5nOK2XHUwMDAyi3+mhFx1MDAxMiYxZyp80n9cdTAwMDAsWF9cdTAwMTew0IRyUMKhXHUwMDEyYE6aS7KIM+NcdTAwMGJhJdNtWFxiqnyrVc/uxGqaXHUwMDE5W1x1MDAxOFx1MDAxNnWuZEzizChUXnUhoVx1MDAwM1NFrUpfXG6UQnKuyVx1MDAwNEuBR9XLp63O6vF9voXLd7eeXHUwMDFmfVDfX731YVx1MDAwYlx1MDAwMWuUXHUwMDA26GGBXGLGNFK9kEr0z85cdTAwMDDxxKBE+MLCXHUwMDE2yyRpXHUwMDExXHUwMDBmW1wiKMxcbtLXLCaAeYQ2WS06bEFG9/06Wlx1MDAwNkhcdTAwMTboU+v9yZT9iEmZXHUwMDAxl6rtQ5QuujSk/T9aM8G+vst2u3ZcIlx1MDAxZd1zXHUwMDBmkXO+t1uqnj3Et//wpVwivrK/WrNcZpVcdTAwMDP9gFOC+9VCJjloIL64eJtpXHTlKlx1MDAxOFx1MDAxNbRcdTAwMDLQcM2b/iZefFx1MDAxZZXBeZT9aGNvkLyeea2iXHUwMDFm1+9cZl6wbLXbXHUwMDA3XHUwMDFlXGb/8lW1Y/msYZ+vxZ3t3ar/Mbjgo4KJP9v06pNcdTAwMTfvvPhcdTAwMWaTkGJcdTAwMTAifQ==<!-- payload-end -->
4
- <defs>
5
- <style>
6
- @font-face {
7
- font-family: "Virgil";
8
- src: url("https://excalidraw.com/Virgil.woff2");
9
- }
10
- @font-face {
11
- font-family: "Cascadia";
12
- src: url("https://excalidraw.com/Cascadia.woff2");
13
- }
14
- </style>
15
- </defs>
1
+ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 838.4997558593744 793.4999847412107" width="838.4997558593744" height="793.4999847412107">
2
+ <!-- svg-source:excalidraw -->
3
+ <!-- payload-type:application/vnd.excalidraw+json --><!-- payload-version:2 --><!-- payload-start -->eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1cXElvI8dcdTAwMTW++1dcYvJ1RNe++CaR2qXZNPKMJjZcdTAwMDYtsrmMmmyabC2UMZfEcVx1MDAxMFx1MDAwM0FcdTAwMDLEycWBY1x1MDAwNDGQS1x1MDAxMlx1MDAxZoJcdTAwMDCGXHUwMDAz5M9kZpx/kVdNit3sjc1N0jhD2Fx1MDAwM6m7Wf2q6r3vfd+rKn3yztLSstdr28vvLy3bXHUwMDE3ZctpVDrW+fJcdTAwMWRz/czudFx1MDAxYm5cdTAwMGJuXHUwMDEx//eue9op+0/WPa/dff+994JvXHUwMDE0ym6z/y3bsZt2y+vCcz+B35eWPvH/XHK9p2OXPatVc2z/XHUwMDBi/q3gVYJHL951W/5bMeeaS6a0XHUwMDFhPtHoluB1nl2B21XL6drBXHUwMDFkc2nZ7ZRFy3F3Lrpb9Ky019vrdc+KwVurXHLHOfB6Tr9PVrl+2lx02dT1Ou6J/bhR8erm7ZHrw+91XVx1MDAxOIHgW1x1MDAxZPe0Vm/Z3e7VsPlX3bZVbng901x1MDAwZULDq/1BeH8puHJcdTAwMDG/rVxiQlx1MDAwYlx1MDAxY1OkXHUwMDE5XHUwMDE3QsP/w9umgVx1MDAxNcwoLiipkSBSMcWojJhWdFx1MDAxZLdjTHuXaY64XGaMO7bKJzWwsFVcdTAwMTk+43WsVrdtdWDKgufOXHUwMDA3nSZCXHUwMDE1XHUwMDEwfCjiWHIp9fCJut2o1T14RMqCNlx1MDAxZkIlXHUwMDEyiLOQMbY/L1x1MDAxOK5rXGYtXHUwMDA13TAmtLcrvot8XHUwMDE0XHUwMDFk17rVaVx1MDAwZsZv2Tc1ZL75dT3qX2FcdTAwMWZcdTAwMGLN/bn1+IPm1lx1MDAxMVuvs8era2s7SD5prlxy21x1MDAxYXFIq9Nxz5eHd15cZn5cbkw7bVesvpdhIVx1MDAxOEKEKJiZYHqdRutcdTAwMDRutk5cdTAwMWQnuOaWT1x1MDAwMsf0r764M1x1MDAxYVx1MDAxMH1D11x1MDAwZtdOXGIt0+36prt9uVvcquqdnaDTV0Z69kVohnxH4VxuXHUwMDE1XHUwMDEwOFxupZxiXHSTXHUwMDEwdVx1MDAxNIxcblTC4FNFYnOLVcJssiznnJd33XTYTet+XHUwMDAzh1x1MDAxNkwjToVcZmAoQC9Oolx1MDAxN4foJVx1MDAxOFOKYJ5cdTAwMDe9JnL0M7zh6JWV59aTYvuhKjYvyO52dV6Ojlx1MDAxNVFcYk/g6IHfXHUwMDFhf4V3/udfX7/8+Tcvf/3TV7/7tmR5VshcdTAwMGbclnfQuDSWXHUwMDExNXJ1w2o2nN7I9JvmVp1GzYzysmNXvZHk4TUgXHUwMDExXHJve2477JVdXHUwMDFizDZvoYFcdTAwMGaU4S1cdTAwMTZcXO1sV6L9cTuNWqNlOY/SOpBcdTAwMTHL2XNcdTAwMTGZh9FgZlpcdTAwMTUk05pcIkGxgv9cIsFMOfdRXHUwMDFmYXhKKMliXHUwMDExLVxuSFx1MDAwMlx1MDAxMFx1MDAwMFx1MDAwZSBOtJZcdTAwMDFcdTAwMTRcdTAwMGbjXHUwMDFiU1x1MDAxZq5cdTAwMTVAOTGNXHUwMDA0yfZtuKeEO1x1MDAwNt5BXHSFzifEO1x0TUM04M1EUMZYkPfyXHUwMDA3/IhDxrNcdTAwMGZhSPFpgrLtNqKIXHUwMDEy/LRcdTAwMTRMvv/L8OeP7iQ+nepv5lx1MDAxM/O0oLVcdTAwMTjqOFbXK7rNZsODbt43Jka70/WsjrfWaFVcdTAwMWGtXHUwMDFh3Fx1MDAwYlDwim5u50ilPriUT033UVx1MDAwMXPGXHUwMDE5xkxcdTAwMTLClZKChp6qWW0z2KzAIdpcYkFcdTAwMTJRTK468GJolN2qjDfJPVJbW0ertWJcdTAwMTXTbWWX2YFzsJJk0lxu5HLFIYtLXHUwMDAx72SEXHUwMDAx1Y3ZxFxuzFxmquLAhZFcIojGjPJHatXgS922YthcdTAwMDYmh++FXHUwMDEzQlx1MDAxNNBysXVcdTAwMTiXVP+njHKFRYh6jKXrmWN140CSRtcpXHUwMDA3uk6Mq3PO6NCRXHUwMDA2uE0w9UlcdTAwMTjlXHUwMDA0glfjxbF1ilx1MDAxM1x1MDAxMD9EU4aEXFxLwlx1MDAwNaNcdTAwMDF0XVx1MDAwYiGfgafcSW43kVx1MDAxYYfeeH6wv7l+flxctvd3712SfVBKxUZjfLP9L+9cdTAwMWX2Wk7DO7u7Vm6utVx1MDAwZlx1MDAxML04s+2ZzO23u9LDnY9rvdLTPbF376B7Ut+gK9vzomtcdTAwMTQzxIJ5nUmXJI9eLl2idVZEYO3r14SIXHUwMDE46k7G455M35KVsWRFMqqERiyGyj4gp2K11MzX+IFcdTAwMWQ3T1Wu9MOrr7979au/XHUwMDE54v3qj9/88Pc/XHUwMDAxXHUwMDBih9/noVwiytBcdTAwMDO7k6Ejmo1KJZz3QlKCXHUwMDA0QTYqJcYlsai6SOneXGYpmeu0acZcdTAwMTQj4Fx1MDAwZWHtMC4llyi/XFzZ3qDlj9c3elx1MDAxNNcrlydbb0BKJqxcdTAwMDDMTVx1MDAwM79cdTAwMTOYKVx1MDAxOSmMaMVGpJSIWLbglKxCsNVcdTAwMGZbglx1MDAxMKg+KkPJ+lxyTcn9dovVXHUwMDA3ZYeo3sbHrZJuPjrbWX3OXHUwMDFmJrfrh/nMmT75hTmt3dx/pq2jnSo6rFx1MDAxNT84PiQr5NHhxlx1MDAxY0ZhXHUwMDA2XHUwMDA2MT7Tm1RcdTAwMWaq/E6Z6ZOTeEjfMlx1MDAxYb16XHUwMDA1JkpSrDBGeeRtXHUwMDFlr7itWMKFzsRcdTAwMTKpr1x0S0CHJtD7XHUwMDE4lmCqqVlcdTAwMWOgXHUwMDBiwJIsfyRcdTAwMTJcdTAwMGI9gT9On8CNpa+///T197/op8zX3//21Vd/WPqwXHUwMDA1UWT1uu95rmc5r//6y8TEXHUwMDFkyo6zkYFI2lx1MDAxZpMoo2k/wf6o9Vx1MDAxOdQ8XHUwMDFiWcaUXHUwMDE5SVx1MDAwMbhcdTAwMWVRQPlcdTAwMTSASHRxXHRT6pNzYG1cdTAwMDK0K1IxP0RcdTAwMDVNOPB6JKBcdTAwMTFcdTAwMDGUgsXdXHUwMDEyM+IvXHUwMDFjMS6loEKSjCh7S91cdTAwMDeyXHUwMDFjyDtVidSdolRcdTAwMThcdTAwMTZcYuRcdTAwMTRleYosXHUwMDEzMnfwXHI1iZRcdTAwMWNenmuRMd3bzCfmZ0FzsVx1MDAxNDq3KmPuklx1MDAxZSogLYhZs+ZYQ75mXGaHnlx1MDAxYVRcdTAwMTlNkVx1MDAxMVx1MDAxMSEhJFx1MDAxNVx1MDAwNJ1mgycmrDNm48/SSJ1cdTAwMTFzXHIvVExcdIGkmemYVdJcdTAwMWZVgVx1MDAxMeWYXHUwMDBiRK6hzlx1MDAxOFx1MDAwMavQmlx1MDAxYVx1MDAxNWnOTzBVREoywZaAbLJ34yCSQkKYwlx1MDAwNeB7hFxu0G9cdTAwMDSISISEIOSDtim2SFx1MDAxZS75zZuDXHUwMDE0XGJgXHUwMDE05YhcdTAwMDHoUJCSwatC2D+yaUCFSsRcdTAwMDOo01xcwW0qXHUwMDE3UIDMZMxMTbRmPyku5Fx1MDAwZUGIQMQkUlxmKJPAXHUwMDFhKVx1MDAxYY9A6q+eMMlMXHUwMDEy1lx1MDAxMIJT4sJcdPe6vWZ9vS0un9ytr+Gn9UrJSsFcdTAwMDVcdTAwMDRcdTAwMDPFYXalmTdcYntcdTAwMTazqr8mclx1MDAwNbdCi5hROVF2QuRYTG5J92bziftxPLlkXCJaZpmGsdj+gWGZRlx1MDAwMjwzzHF+VMue5duKaoKIYP9cbkBChItKqszKXHSSXG4xKkJl5Fx1MDAxYqrScMWZ1ji0oPVGXHUwMDE3aWxxUGpu7Vx1MDAxZTuHat/eqD9rblx1MDAxNPdT2s1XpFlos/Mv0oyrKSV3JGg2RjBnzziZcJJWo6FcIrYzYYgk8HpIXHUwMDFkSuQv0mRP321FXHUwMDEyyFqZSIL7e2dcdTAwMTaOJCCa4khcdTAwMTJauFx1MDAxYWo9JojJtlx1MDAwYoCShTCgqWo0P/z7i5dfftWvbvz3y89cdTAwMWXa3VPHXHUwMDBij23SaspcXIsyY9JitCiTbHBiUObZY5pZh6Gc+Zt8YWKYplLJUY/FVLOCRppTysBrgX/EfY3LcZtzOSow84TCXHUwMDE4UEKHZNL4MkxZXHUwMDEzi1iTh8JNI8TMZVx1MDAxOFx1MDAxOC1cdTAwMGXcKyY6/ffI6NUh1DJcIkG8i0WsoUpwkKnCdr5sOc3fzCfmaXGuPKlEyFGIydzeP6ptXHUwMDE4VWYouWKcXG7OeeipgbRcdTAwMTlcXJhQXz1Xh2t7T93mZqtTsndrx/d541x1MDAxZUuru0hcdTAwMDVyXHUwMDBlQUpGoK4gMceM4P5m+oHswzDQMaOud39cdTAwMTdm6YvJMJSIcD7B/q7ssbpx5EjhXHUwMDE2XHUwMDFh+0Btln5cdTAwMTBXWsY25lxu5Vx1MDAxN19cYkhiJnQoUudcdTAwMDWpXHUwMDEzXHUwMDFjx4irXHUwMDE2zDXVlIg35/jFlHz97HGR1su1Z5qvlzqiXdVcdTAwMGZ7zr1cdTAwMWbdrqzkXsYoR8KuLIVHKLKKbstcdTAwMDJinOLHwbas7Fx1MDAxNci3pFwi7chcYqaKM554ZESn1oGoXHUwMDE0XFwjrFx1MDAxN8AohFbTLdZcdTAwMGW5/bc/e/3FX1x1MDAxZZzand6xXXU79ss/f/ph6/VvPnv53T/7NHpeZz1m2aVcdTAwMTVa7I0ogzGpKKZcZlx1MDAxMrpcdTAwMWLrbEbUZsNLplDQfFQnxMKW0L62RVxmOGjSSS+qxMhyTjyGgWmEiVx1MDAwN9LsbUyPi2lcdTAwMTgmjFx1MDAxOGckacE2voo7XFyykkhpmIU8W/AmlVx0oFx1MDAxOdU0QT1XmbCS5m7mXHUwMDEzd7Tr0Fx0uTk6yFx1MDAwNKIo00CxwESiSFxcJjC/b5iDkpBKaaank1xyk1x1MDAxY1x1MDAwYlx1MDAwMVx1MDAxZkNcblx1MDAxM1AwWIDKjK8h90+FcMTAtSjnTC5ONfThbK0uXHUwMDFm7FRcdTAwMWVox63RZtd6gjr2ZjtcdTAwMTdcdFx1MDAwMerqb1xyXHUwMDFm7KZSkYVMTJR/ZNXsPpFcdTAwMTSRXHUwMDA0XHUwMDEygkVCiW2ic6v/p4CFkVx1MDAwNHdcdTAwMDXviFx1MDAxZFnzb6Zcbj1GMOcj+8nmhVhcdTAwMTRcdTAwMDHDXHT6N83m8M8/97dOf/mPV7//dlx1MDAxZWzjWk+WjlqfXHUwMDE4b2N3R2CRvkOTMGB5jOQv/rNa08O1Umn76bNL0b5Qj1x1MDAxZd89PL09XHUwMDAxkFwi0CnuK3SpKeCkkJFSKiTFXHUwMDAy72t3XHUwMDBlwoYvUJ9cdTAwMTPkZzdcdTAwMTh0XHUwMDE4e4JVwilcdTAwMTamXHUwMDBiXGaQXHUwMDFjKDiSoOJDs3d1hFx1MDAwM1FcdTAwMDFUb1x1MDAxMVvBsySq+ZtcdTAwMDZT7faK5OBoYlx1MDAxOZ9cbp94XHUwMDBm7z9objqkVHV6R48uNp+K02pKKoRRXHUwMDA17WJO0VOBJcahI6fDXG5cdTAwMWFcdTAwMGLRXHUwMDBiKuPHNt+oXHUwMDFkXG6pXHUwMDFlZT4xX4qTqUxQyS79aVx1MDAxY706LP1cdTAwMTGCzW41nkeZNnJM8m1FXHUwMDE2xU3JhFxiwkx1RLCI9tKE9Vx1MDAwZrJhXHUwMDA22kyHSjy3ovJHTJVcdTAwMTlsXHUwMDE017xhYf6lv367lyePN++tbO3Z3Vx1MDAxZd1qXHUwMDFmdot7dff57DtcdTAwMGJmKP2ltDuuUpnckZzmZufoTHOvQGGOaSBcdTAwMTNf0nYs4PQ/k1wiXHUwMDE55ULkUsd5nOK2XHUwMDAyi3+mhFx1MDAxMiYxZyp80n9cdTAwMDAsWF9cdTAwMTew0IRyUMKhXHUwMDEyYE6aS7KIM+NcdTAwMGJhJdNtWFxiqnyrVc/uxGqaXHUwMDE5W1x1MDAxOFx1MDAxNnWuZEzizChUXnUhoVx1MDAwM1NFrUpfXG6UQnKuyVx1MDAwNEuBR9XLp63O6vF9voXLd7eeXHUwMDFmfVDfX731YVx1MDAwYlx1MDAwMWuUXHUwMDA26GGBXGLGNFK9kEr0z85cdTAwMDDxxKBE+MLCXHUwMDE2yyRpXHUwMDExXHUwMDBmW1wiKMxcbtLXLCaAeYQ2WS06bEFG9/06Wlx1MDAwNkhcdTAwMTboU+v9yZT9iEmZXHUwMDAxl6rtQ5QuujSk/T9aM8G+vst2u3ZcIlx1MDAxZd1zXHUwMDBmkXO+t1uqnj3Et//wpVwivrK/WrNcZpVcdTAwMDP9gFOC+9VCJjloIL64eJtpXHTlKlx1MDAxOFx1MDAxNbRcdTAwMDLQcM2b/iZefFx1MDAxZZXBeZT9aGNvkLyeea2iXHUwMDFm1+9cZl6wbLXbXHUwMDA3XHUwMDFlXGb/8lW1Y/msYZ+vxZ3t3ar/Mbjgo4KJP9v06pNcdTAwMTfvvPhcdTAwMWaTkGJcdTAwMTAifQ==<!-- payload-end -->
4
+ <defs>
5
+ <style>
6
+ @font-face {
7
+ font-family: "Virgil";
8
+ src: url("https://excalidraw.com/Virgil.woff2");
9
+ }
10
+ @font-face {
11
+ font-family: "Cascadia";
12
+ src: url("https://excalidraw.com/Cascadia.woff2");
13
+ }
14
+ </style>
15
+ </defs>
16
16
  <rect x="0" y="0" width="838.4997558593744" height="793.4999847412107" fill="#ffffff"></rect><g stroke-linecap="round" transform="translate(21.999893188476335 10) rotate(0 134.00001525878895 38.999996185302734)"><path d="M19.5 0 M19.5 0 C105.59 -0.5, 190.75 2.84, 248.5 0 M19.5 0 C72.48 0.89, 124.03 2.08, 248.5 0 M248.5 0 C262.29 -2.75, 265.64 3.83, 268 19.5 M248.5 0 C262.84 -4.35, 271.35 4.03, 268 19.5 M268 19.5 C266.1 28.47, 267.61 40.55, 268 58.5 M268 19.5 C266.77 30.1, 268.3 38.13, 268 58.5 M268 58.5 C268.25 74.9, 258.91 74.33, 248.5 78 M268 58.5 C269.94 67.99, 258.96 75.04, 248.5 78 M248.5 78 C166.8 76.9, 86.42 75.78, 19.5 78 M248.5 78 C160.94 77.18, 73.82 78.67, 19.5 78 M19.5 78 C8.24 74.35, 3.56 67.55, 0 58.5 M19.5 78 C2.27 73.48, 1.88 72.71, 0 58.5 M0 58.5 C1.2 54.34, -0.08 43.28, 0 19.5 M0 58.5 C2.07 48.37, 1.17 36.9, 0 19.5 M0 19.5 C-2.1 2.88, 6.68 3.71, 19.5 0 M0 19.5 C2.15 4.74, 7.9 -2.26, 19.5 0" stroke="#495057" stroke-width="1" fill="none"></path></g><g transform="translate(65.49995422363304 31.49993896484375) rotate(0 94.5 20)"><text x="0" y="30" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#495057" text-anchor="start" style="white-space: pre;" direction="ltr">传入参数Data</text></g><g stroke-linecap="round"><g transform="translate(146.7630571236012 86.00006103515625) rotate(0 3.860349272645692 69.03760786011821)"><path d="M1.61 -1.95 C2.4 20.93, 2.81 113.79, 3.62 136.96 M-0.96 3.16 C0.78 26.47, 7.71 117.27, 8.68 140.03" stroke="#495057" stroke-width="1" fill="none"></path></g><g transform="translate(146.7630571236012 86.00006103515625) rotate(0 3.860349272645692 69.03760786011821)"><path d="M-6.09 109.01 C-1.74 120.06, 1.55 124.39, 10.16 140.81 M-2.72 110.63 C0.6 117.97, 1.36 126.32, 8.34 138.9" stroke="#495057" stroke-width="1" fill="none"></path></g><g transform="translate(146.7630571236012 86.00006103515625) rotate(0 3.860349272645692 69.03760786011821)"><path d="M14.39 107.74 C13.42 119.35, 11.4 124.01, 10.16 140.81 M17.76 109.36 C16.33 116.72, 12.36 125.37, 8.34 138.9" stroke="#495057" stroke-width="1" fill="none"></path></g></g><g stroke-linecap="round" transform="translate(10 228.49992752075195) rotate(0 158.5 39)"><path d="M19.5 0 M19.5 0 C110.9 1.28, 200.45 3.04, 297.5 0 M19.5 0 C130.69 -0.61, 241.5 0.84, 297.5 0 M297.5 0 C310.57 -2.56, 313.83 5.87, 317 19.5 M297.5 0 C314.78 2.08, 319.03 1.98, 317 19.5 M317 19.5 C317.16 24.67, 316.86 34.56, 317 58.5 M317 19.5 C316.39 31.3, 315.51 42.69, 317 58.5 M317 58.5 C317.22 75.23, 310.87 76.23, 297.5 78 M317 58.5 C317.29 74.11, 313.76 75.47, 297.5 78 M297.5 78 C234.64 76.3, 173.74 75.31, 19.5 78 M297.5 78 C205.65 78.49, 110.67 76.71, 19.5 78 M19.5 78 C8.77 80.24, -0.34 70.02, 0 58.5 M19.5 78 C3.43 79.43, -4 74.68, 0 58.5 M0 58.5 C-1.22 47.24, 1.97 30.48, 0 19.5 M0 58.5 C0.3 44.05, -1.93 31.64, 0 19.5 M0 19.5 C0.16 5.06, 9.77 -1.22, 19.5 0 M0 19.5 C-3.47 5.92, 3.05 -0.93, 19.5 0" stroke="#495057" stroke-width="1" fill="none"></path></g><g transform="translate(46 249.99992752075195) rotate(0 122.5 17.5)"><text x="122.5" y="24" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#495057" text-anchor="middle" style="white-space: pre;" direction="ltr">根据Data查询数据</text></g><g stroke-linecap="round" transform="translate(21.500076293945085 457.000061035156) rotate(0 158.5 40)"><path d="M20 0 M20 0 C82.17 0.81, 146.13 1.39, 297 0 M20 0 C98.14 3.32, 175.07 4.16, 297 0 M297 0 C312.85 -1.3, 317.8 5.92, 317 20 M297 0 C314.84 -3.81, 314.82 6.04, 317 20 M317 20 C315.99 39.27, 319.23 49.09, 317 60 M317 20 C318.15 35.19, 316.47 50.33, 317 60 M317 60 C317.1 74.33, 306.63 79.8, 297 80 M317 60 C318.13 73.97, 305.86 80.71, 297 80 M297 80 C221.28 79.14, 151.55 76.66, 20 80 M297 80 C206.66 81.98, 116.44 84.02, 20 80 M20 80 C4.52 80.16, 0.82 76.09, 0 60 M20 80 C9.16 76.58, 4.39 69.84, 0 60 M0 60 C-1.12 47.24, 2.6 25.4, 0 20 M0 60 C0.98 43.46, -1.78 30.63, 0 20 M0 20 C1.72 5.54, 9.39 0.04, 20 0 M0 20 C-3.47 7.21, 5.13 2.96, 20 0" stroke="#495057" stroke-width="1" fill="none"></path></g><g transform="translate(76.50007629394509 462.000061035156) rotate(0 103.5 35)"><text x="103.5" y="24" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#495057" text-anchor="middle" style="white-space: pre;" direction="ltr">组织查询结果 </text><text x="103.5" y="59" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#495057" text-anchor="middle" style="white-space: pre;" direction="ltr">arrays/total等</text></g><g stroke-linecap="round"><g transform="translate(153.48269834720134 307.9999542236328) rotate(0 1.0919746526446659 71.37524573892358)"><path d="M0.97 1.59 C0.92 25.8, -1.02 119.03, -1.14 142.77 M-1.95 -0.02 C-1.04 23.53, 4.13 114.91, 4.14 138.17" stroke="#495057" stroke-width="1" fill="none"></path></g><g transform="translate(153.48269834720134 307.9999542236328) rotate(0 1.0919746526446659 71.37524573892358)"><path d="M-4.75 107.37 C-3.41 116.77, 1.36 123, 6.34 141.27 M-7.13 111.87 C-4.8 114.98, -3.57 123.4, 3.23 137.63" stroke="#495057" stroke-width="1" fill="none"></path></g><g transform="translate(153.48269834720134 307.9999542236328) rotate(0 1.0919746526446659 71.37524573892358)"><path d="M15.76 106.71 C11.56 116.43, 10.81 122.84, 6.34 141.27 M13.38 111.22 C11.51 114.67, 8.53 123.22, 3.23 137.63" stroke="#495057" stroke-width="1" fill="none"></path></g></g><g stroke-linecap="round"><g transform="translate(164.36975087018686 540.9999084472656) rotate(0 2.2161321658697375 75.94996558740735)"><path d="M1.88 1.85 C1.45 26.32, -0.5 123.91, -0.14 147.93 M-0.54 0.38 C-0.35 25.23, 4.34 126.92, 4.98 151.52" stroke="#495057" stroke-width="1" fill="none"></path></g><g transform="translate(164.36975087018686 540.9999084472656) rotate(0 2.2161321658697375 75.94996558740735)"><path d="M-3.68 120.34 C-1.83 136.99, -0.24 146.44, 3.92 153.66 M-4.61 121.98 C-4.4 130.96, -1.52 136.21, 5.66 150.88" stroke="#495057" stroke-width="1" fill="none"></path></g><g transform="translate(164.36975087018686 540.9999084472656) rotate(0 2.2161321658697375 75.94996558740735)"><path d="M16.83 119.58 C10.74 136.8, 4.37 146.55, 3.92 153.66 M15.89 121.22 C11.32 130.12, 9.43 135.55, 5.66 150.88" stroke="#495057" stroke-width="1" fill="none"></path></g></g><g stroke-linecap="round" transform="translate(19.499954223632358 703.4999847412107) rotate(0 158.5 40)"><path d="M20 0 M20 0 C122.6 -0.3, 220.47 -2.27, 297 0 M20 0 C124.5 -0.87, 227.33 0.37, 297 0 M297 0 C311.74 0.39, 314.64 7.85, 317 20 M297 0 C309.94 2.74, 321.57 2.3, 317 20 M317 20 C316.99 28.72, 315.11 41.67, 317 60 M317 20 C314.77 33.47, 316.21 46.94, 317 60 M317 60 C319.17 76.89, 307.34 83.46, 297 80 M317 60 C315.94 74.95, 308.65 81.56, 297 80 M297 80 C194.87 77.36, 91.4 74.91, 20 80 M297 80 C199.87 75.36, 103.48 77.79, 20 80 M20 80 C9.7 81.97, -0.82 73.15, 0 60 M20 80 C7.65 84.16, 4.19 70.21, 0 60 M0 60 C-1.49 51.89, 1.42 38.35, 0 20 M0 60 C-0.15 51.62, -0.05 43.02, 0 20 M0 20 C0.76 10.21, 3.5 -3.38, 20 0 M0 20 C3.33 7.27, 6.27 3.91, 20 0" stroke="#495057" stroke-width="1" fill="none"></path></g><g transform="translate(62.49995422363236 725.9999847412107) rotate(0 115.5 17.5)"><text x="115.5" y="24" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#495057" text-anchor="middle" style="white-space: pre;" direction="ltr">返回结果集Result</text></g><g stroke-linecap="round"><g transform="translate(290.99992370605423 46.96952930676798) rotate(0 127.702671778947 26.139837041058172)"><path d="M-1.81 1.98 C41.39 10.06, 214.26 41.16, 257.22 48.88 M2.4 0.59 C45.43 8.97, 213.24 43.4, 255.1 51.69" stroke="#c92a2a" stroke-width="1" fill="none"></path></g><g transform="translate(290.99992370605423 46.96952930676798) rotate(0 127.702671778947 26.139837041058172)"><path d="M228.27 56.48 C230.02 53.99, 236.02 52.42, 251.5 48.09 M226.11 54.87 C234.71 55.76, 247.23 52.33, 253.26 50.46" stroke="#c92a2a" stroke-width="1" fill="none"></path></g><g transform="translate(290.99992370605423 46.96952930676798) rotate(0 127.702671778947 26.139837041058172)"><path d="M232.33 36.36 C233.22 38.41, 238.29 41.43, 251.5 48.09 M230.17 34.75 C237.51 42.65, 248.62 46.24, 253.26 50.46" stroke="#c92a2a" stroke-width="1" fill="none"></path></g></g><g stroke-linecap="round" transform="translate(553.9999389648432 72.99993515014648) rotate(0 134.00001525878895 40)"><path d="M20 0 M20 0 C101.4 -0.71, 186.55 1.63, 248 0 M20 0 C79.14 -2.22, 138.39 -4.25, 248 0 M248 0 C262.69 -2.16, 264.27 9.37, 268 20 M248 0 C262.21 0.58, 267.87 5.53, 268 20 M268 20 C265.47 38.52, 268.9 49.57, 268 60 M268 20 C267.66 33, 269.89 43.69, 268 60 M268 60 C265.47 76.33, 259.65 83.87, 248 80 M268 60 C272.2 76.61, 263.07 81.58, 248 80 M248 80 C201.03 75.11, 147.15 74.73, 20 80 M248 80 C170.64 82.72, 91.81 80.94, 20 80 M20 80 C4.79 81.74, -3.5 75.87, 0 60 M20 80 C2.39 84.04, -3.75 77.36, 0 60 M0 60 C4.15 47.01, -0.78 38.45, 0 20 M0 60 C1.41 46.25, -0.71 33.05, 0 20 M0 20 C-2.16 3.21, 3.69 -2.84, 20 0 M0 20 C-0.84 4.54, 5.89 -0.59, 20 0" stroke="#c92a2a" stroke-width="1" fill="none"></path></g><g transform="translate(564.4999542236321 77.99993515014648) rotate(0 123.5 35)"><text x="123.5" y="24" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#c92a2a" text-anchor="middle" style="white-space: pre;" direction="ltr">调用Querybefore处</text><text x="123.5" y="59" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#c92a2a" text-anchor="middle" style="white-space: pre;" direction="ltr">理并返回Data</text></g><g stroke-linecap="round"><g transform="translate(549.9999237060542 117.99999237060547) rotate(0 -193.69374129965888 52.07656196191908)"><path d="M-0.54 0.38 C-64.41 17.26, -320.9 86.05, -385.1 103.67 M-4.27 -1.88 C-68.27 16.49, -322.99 87.52, -386.85 106.03" stroke="#c92a2a" stroke-width="1" fill="none"></path></g><g transform="translate(549.9999237060542 117.99999237060547) rotate(0 -193.69374129965888 52.07656196191908)"><path d="M-361.98 89.75 C-371.22 92.8, -373.46 92.97, -390.83 108.57 M-364.48 90.46 C-367.05 91.52, -372.24 94.62, -388.29 104.7" stroke="#c92a2a" stroke-width="1" fill="none"></path></g><g transform="translate(549.9999237060542 117.99999237060547) rotate(0 -193.69374129965888 52.07656196191908)"><path d="M-356.38 109.49 C-367.27 107.92, -370.81 103.5, -390.83 108.57 M-358.88 110.2 C-362.53 106.8, -368.95 105.54, -388.29 104.7" stroke="#c92a2a" stroke-width="1" fill="none"></path></g></g><g transform="translate(340.00007629394486 161.4999771118164) rotate(0 80.5 20)"><text x="0" y="30" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#c92a2a" text-anchor="start" style="white-space: pre;" direction="ltr">把Data更新</text></g><g stroke-linecap="round"><g transform="translate(333.9999084472653 493.3000038313785) rotate(0 111.50646419912574 24.34065105429312)"><path d="M-1.63 -1.02 C34.82 7.51, 182.44 40.73, 219.21 49.22 M2.68 -4.04 C39.99 5.12, 187.63 43.17, 224.64 52.72" stroke="#c92a2a" stroke-width="1" fill="none"></path></g><g transform="translate(333.9999084472653 493.3000038313785) rotate(0 111.50646419912574 24.34065105429312)"><path d="M193.33 53.07 C203.98 52.22, 214.48 53.27, 222.97 49.84 M194.13 54.48 C206.13 55.27, 219.3 55.58, 224.46 50.75" stroke="#c92a2a" stroke-width="1" fill="none"></path></g><g transform="translate(333.9999084472653 493.3000038313785) rotate(0 111.50646419912574 24.34065105429312)"><path d="M198.45 33.2 C207.2 38.59, 216.07 45.96, 222.97 49.84 M199.25 34.61 C209.48 43.16, 220.63 51.3, 224.46 50.75" stroke="#c92a2a" stroke-width="1" fill="none"></path></g></g><g stroke-linecap="round" transform="translate(560.4997253417965 516.9999313354492) rotate(0 134.00001525878895 40)"><path d="M20 0 M20 0 C96.14 3.51, 175 4.43, 248 0 M20 0 C104.03 1.88, 188.76 2.04, 248 0 M248 0 C261.89 1.26, 267.65 9.71, 268 20 M248 0 C260.21 2.83, 265.09 4.34, 268 20 M268 20 C265.04 34.72, 266.55 41.39, 268 60 M268 20 C269.01 27.45, 270.15 37.47, 268 60 M268 60 C268.25 77.08, 263.17 81.34, 248 80 M268 60 C267.11 70.61, 258.89 77.46, 248 80 M248 80 C156.98 77.11, 73.68 77.36, 20 80 M248 80 C193.67 77.31, 142.15 78.05, 20 80 M20 80 C5.48 79.58, -0.4 75.64, 0 60 M20 80 C10.8 80.03, 3.06 69.75, 0 60 M0 60 C-2.05 46.78, 3.2 35.63, 0 20 M0 60 C1.32 51, 0.36 41.02, 0 20 M0 20 C0.32 5.52, 4.64 1.45, 20 0 M0 20 C3.89 8.18, 4.99 2.13, 20 0" stroke="#c92a2a" stroke-width="1" fill="none"></path></g><g transform="translate(576.4997406005855 521.9999313354492) rotate(0 118 35)"><text x="118" y="24" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#c92a2a" text-anchor="middle" style="white-space: pre;" direction="ltr">调用QueryAfter处</text><text x="118" y="59" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#c92a2a" text-anchor="middle" style="white-space: pre;" direction="ltr">理并返回Result</text></g><g transform="translate(397.99983215331986 654.9999618530271) rotate(0 87.5 20)"><text x="0" y="30" font-family="Virgil, Segoe UI Emoji" font-size="28px" fill="#c92a2a" text-anchor="start" style="white-space: pre;" direction="ltr">把Result更新</text></g><g stroke-linecap="round"><g transform="translate(562.9999542236322 576.5000152587886) rotate(0 -194.84828739121545 52.56615835860373)"><path d="M-0.34 0.72 C-65.22 18.78, -322.39 88.94, -386.73 106.49 M-3.97 -1.36 C-69.52 15.96, -325.3 83.33, -389.36 101.74" stroke="#c92a2a" stroke-width="1" fill="none"></path></g><g transform="translate(562.9999542236322 576.5000152587886) rotate(0 -194.84828739121545 52.56615835860373)"><path d="M-363.85 83.37 C-373.97 90.66, -384.2 101.62, -391.42 98.44 M-365.97 85.74 C-370.99 87.77, -379.92 93.71, -391.14 103.58" stroke="#c92a2a" stroke-width="1" fill="none"></path></g><g transform="translate(562.9999542236322 576.5000152587886) rotate(0 -194.84828739121545 52.56615835860373)"><path d="M-358.43 103.16 C-370.41 102.7, -382.75 105.92, -391.42 98.44 M-360.55 105.53 C-366.64 102.23, -377.01 102.87, -391.14 103.58" stroke="#c92a2a" stroke-width="1" fill="none"></path></g></g></svg>