vome-core 0.1.34 → 0.1.35

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 (44) hide show
  1. package/dist/admin/components/vm-group-cascader.vue +3 -6
  2. package/dist/admin/components/vm-icon-picker.vue +3 -11
  3. package/dist/admin/components/vm-role-picker.vue +3 -11
  4. package/dist/admin/config/plugin-dev.js +1 -1
  5. package/dist/admin/crud/components/vm-color-picker.vue +3 -11
  6. package/dist/admin/crud/components/vm-date-calendar-panel.vue +506 -0
  7. package/dist/admin/crud/components/vm-date-picker.vue +25 -30
  8. package/dist/admin/crud/components/vm-date-range.vue +23 -225
  9. package/dist/admin/crud/components/vm-datetime-field.vue +220 -0
  10. package/dist/admin/crud/components/vm-multi-select.vue +1 -1
  11. package/dist/admin/crud/components/vm-richtext-extensions.js +1 -1
  12. package/dist/admin/crud/components/vm-select.vue +3 -11
  13. package/dist/admin/crud/components/vm-tree-select.vue +3 -11
  14. package/dist/admin/crud/config.js +1 -1
  15. package/dist/admin/crud/confirm.js +1 -1
  16. package/dist/admin/crud/dict.js +1 -1
  17. package/dist/admin/crud/key.js +1 -1
  18. package/dist/admin/crud/mitt.js +1 -1
  19. package/dist/admin/crud/plugins.js +1 -1
  20. package/dist/admin/crud/span.js +1 -1
  21. package/dist/admin/crud/style.js +1 -1
  22. package/dist/admin/crud/validate.js +1 -1
  23. package/dist/admin/directives/perm.js +1 -1
  24. package/dist/admin/hooks/useUpload.js +1 -1
  25. package/dist/admin/lib/browser.js +1 -1
  26. package/dist/admin/lib/cn.js +1 -1
  27. package/dist/admin/lib/dialog-float.js +1 -1
  28. package/dist/admin/lib/export-excel.js +1 -1
  29. package/dist/admin/lib/import-excel.js +1 -1
  30. package/dist/admin/lib/json.js +1 -1
  31. package/dist/admin/lib/menu.js +1 -1
  32. package/dist/admin/lib/tree.js +1 -1
  33. package/dist/admin/lib/upload.js +1 -1
  34. package/dist/admin/lib/video-frame.js +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/server/index.js +1 -1
  37. package/dist/shared/datetime-picker.d.ts +33 -0
  38. package/dist/shared/datetime-picker.js +1 -0
  39. package/dist/shared/excel.js +1 -1
  40. package/dist/shared/index.d.ts +1 -0
  41. package/dist/shared/index.js +1 -1
  42. package/dist/shared/locale-json.js +1 -1
  43. package/dist/shared/tree.js +1 -1
  44. package/package.json +1 -1
@@ -1,17 +1,19 @@
1
1
  <template>
2
- <input
3
- class="vm-date-picker"
4
- :type="inputType"
5
- :value="inner"
2
+ <VmDatetimeField
3
+ :model-value="inner"
4
+ :precision="precision"
5
+ :placeholder="placeholderText"
6
6
  :disabled="disabled"
7
7
  :style="{ width }"
8
- @change="onChange"
8
+ @update:model-value="onUpdate"
9
+ @change="onUpdate"
9
10
  />
10
11
  </template>
11
12
 
12
13
  <script setup lang="ts">
13
14
  import { computed } from 'vue'
14
15
  import { useCrud } from '../useCrud'
16
+ import VmDatetimeField from './vm-datetime-field.vue'
15
17
 
16
18
  defineOptions({ name: 'vm-date-picker' })
17
19
 
@@ -24,6 +26,7 @@ const props = withDefaults(
24
26
  width?: string
25
27
  disabled?: boolean
26
28
  refreshOnChange?: boolean
29
+ placeholder?: string
27
30
  }>(),
28
31
  {
29
32
  type: 'date',
@@ -39,37 +42,29 @@ const emit = defineEmits<{
39
42
 
40
43
  const crud = useCrud()
41
44
 
42
- const inputType = computed(() => {
43
- if (props.type === 'datetime') return 'datetime-local'
45
+ const precision = computed(() => {
46
+ if (props.type === 'datetime') return 'minute'
44
47
  if (props.type === 'month') return 'month'
45
- return 'date'
48
+ if (props.type === 'year') return 'year'
49
+ return 'day'
46
50
  })
47
51
 
48
- const inner = computed(() => {
49
- const v = props.modelValue || ''
50
- if (props.type === 'datetime' && v.includes(' ')) return v.replace(' ', 'T').slice(0, 16)
51
- return v
52
+ const placeholderText = computed(() => {
53
+ if (props.placeholder) return props.placeholder
54
+ if (props.type === 'datetime') return '选择日期时间'
55
+ if (props.type === 'month') return '选择月份'
56
+ if (props.type === 'year') return '选择年份'
57
+ return '选择日期'
52
58
  })
53
59
 
54
- function onChange(e: Event) {
55
- let v = (e.target as HTMLInputElement).value
56
- if (props.type === 'datetime' && v) v = v.replace('T', ' ') + ':00'
57
- emit('update:modelValue', v)
58
- emit('change', v)
60
+ const inner = computed(() => props.modelValue || null)
61
+
62
+ function onUpdate(v: string | null) {
63
+ const out = v || ''
64
+ emit('update:modelValue', out)
65
+ emit('change', out)
59
66
  if (props.prop && props.refreshOnChange) {
60
- crud.refresh({ page: 1, [props.prop]: v || undefined })
67
+ crud.refresh({ page: 1, [props.prop]: out || undefined })
61
68
  }
62
69
  }
63
70
  </script>
64
-
65
- <style lang="scss" scoped>
66
- .vm-date-picker {
67
- height: var(--vm-control-height);
68
- padding: 0 var(--vm-control-padding-x);
69
- border: 1px solid var(--border);
70
- border-radius: var(--vm-control-radius);
71
- background: var(--card);
72
- color: var(--foreground);
73
- font-size: 13px;
74
- }
75
- </style>
@@ -1,53 +1,32 @@
1
1
  <template>
2
2
  <div class="vm-date-range" :class="{ 'is-disabled': disabled }">
3
- <div class="vm-date-range__side" @click="open(0)">
4
- <div class="vm-date-range__field">
5
- <span
6
- v-if="!display(0) && startPlaceholder"
7
- class="vm-date-range__ph"
8
- >{{ startPlaceholder }}</span>
9
- <input
10
- ref="startEl"
11
- class="vm-date-range__input"
12
- :class="{ 'is-empty': !display(0) }"
13
- :type="inputType"
14
- :step="step"
15
- :disabled="disabled"
16
- :value="display(0)"
17
- @click.stop="open(0)"
18
- @change="(e) => set(0, e)"
19
- />
20
- </div>
21
- <i class="ri-calendar-line vm-date-range__icon" aria-hidden="true" />
22
- </div>
3
+ <VmDatetimeField
4
+ class="vm-date-range__field"
5
+ :model-value="props.modelValue?.[0] ?? null"
6
+ :precision="precision"
7
+ :placeholder="startPlaceholder"
8
+ :disabled="disabled"
9
+ @update:model-value="(v) => set(0, v)"
10
+ @change="(v) => set(0, v)"
11
+ />
23
12
  <span class="vm-date-range__sep">-</span>
24
- <div class="vm-date-range__side" @click="open(1)">
25
- <div class="vm-date-range__field">
26
- <span
27
- v-if="!display(1) && endPlaceholder"
28
- class="vm-date-range__ph"
29
- >{{ endPlaceholder }}</span>
30
- <input
31
- ref="endEl"
32
- class="vm-date-range__input"
33
- :class="{ 'is-empty': !display(1) }"
34
- :type="inputType"
35
- :step="step"
36
- :disabled="disabled"
37
- :value="display(1)"
38
- @click.stop="open(1)"
39
- @change="(e) => set(1, e)"
40
- />
41
- </div>
42
- <i class="ri-calendar-line vm-date-range__icon" aria-hidden="true" />
43
- </div>
13
+ <VmDatetimeField
14
+ class="vm-date-range__field"
15
+ :model-value="props.modelValue?.[1] ?? null"
16
+ :precision="precision"
17
+ :placeholder="endPlaceholder"
18
+ :disabled="disabled"
19
+ @update:model-value="(v) => set(1, v)"
20
+ @change="(v) => set(1, v)"
21
+ />
44
22
  </div>
45
23
  </template>
46
24
 
47
25
  <script setup lang="ts">
48
- import { ref, computed } from 'vue'
49
26
  defineOptions({ name: 'vm-date-range' })
50
27
 
28
+ import VmDatetimeField from './vm-datetime-field.vue'
29
+
51
30
  const props = withDefaults(
52
31
  defineProps<{
53
32
  modelValue?: Array<string | null>
@@ -69,76 +48,12 @@ const emit = defineEmits<{
69
48
  change: [v: Array<string | null>]
70
49
  }>()
71
50
 
72
- const startEl = ref<HTMLInputElement | null>(null)
73
- const endEl = ref<HTMLInputElement | null>(null)
74
-
75
- const inputType = computed(() => {
76
- const p = props.precision
77
- if (p === 'year') return 'number'
78
- if (p === 'month') return 'month'
79
- if (p === 'day') return 'date'
80
- return 'datetime-local'
81
- })
82
-
83
- const step = computed(() => {
84
- const p = props.precision
85
- if (p === 'hour') return 3600
86
- if (p === 'minute') return 60
87
- if (p === 'second') return 1
88
- if (p === 'year') return 1
89
- return undefined
90
- })
91
-
92
- function toApi(raw: string): string | null {
93
- if (!raw) return null
94
- const p = props.precision
95
- if (p === 'year') return raw
96
- if (p === 'month' || p === 'day') return raw
97
- let v = raw.replace('T', ' ')
98
- if (p === 'hour') {
99
- v = v.length >= 13 ? `${v.slice(0, 13)}:00:00` : `${v}:00:00`
100
- } else if (p === 'minute') {
101
- v = v.length >= 16 ? `${v.slice(0, 16)}:00` : `${v}:00`
102
- } else if (v.length === 16) {
103
- v = `${v}:00`
104
- }
105
- return v
106
- }
107
-
108
- function toInput(api: string | null | undefined): string {
109
- if (!api) return ''
110
- const p = props.precision
111
- if (p === 'year' || p === 'month' || p === 'day') {
112
- return String(api).slice(0, p === 'year' ? 4 : p === 'month' ? 7 : 10)
113
- }
114
- const s = String(api).replace(' ', 'T')
115
- if (p === 'hour') return s.slice(0, 13)
116
- if (p === 'minute') return s.slice(0, 16)
117
- return s.slice(0, 19)
118
- }
119
-
120
- function display(idx: 0 | 1) {
121
- return toInput(props.modelValue?.[idx] ?? null)
122
- }
123
-
124
- function open(idx: 0 | 1) {
125
- if (props.disabled) return
126
- const el = idx === 0 ? startEl.value : endEl.value
127
- if (!el) return
128
- try {
129
- el.showPicker?.()
130
- } catch {
131
- el.focus()
132
- }
133
- }
134
-
135
- function set(idx: 0 | 1, e: Event) {
136
- const raw = (e.target as HTMLInputElement).value
51
+ function set(idx: 0 | 1, v: string | null) {
137
52
  const next: Array<string | null> = [
138
53
  props.modelValue?.[0] ?? null,
139
54
  props.modelValue?.[1] ?? null,
140
55
  ]
141
- next[idx] = toApi(raw)
56
+ next[idx] = v
142
57
  emit('update:modelValue', next)
143
58
  emit('change', next)
144
59
  }
@@ -149,141 +64,24 @@ function set(idx: 0 | 1, e: Event) {
149
64
  display: flex;
150
65
  box-sizing: border-box;
151
66
  width: 100%;
152
- height: var(--vm-control-height);
153
67
  align-items: center;
154
- padding: 0 10px;
155
- border: 1px solid transparent;
156
- border-radius: 12px;
157
- background: var(--muted);
158
68
  gap: 0;
159
69
 
160
70
  &.is-disabled {
161
71
  opacity: 0.55;
162
72
  pointer-events: none;
163
73
  }
164
-
165
- &:focus-within {
166
- border-color: var(--focus-border);
167
- }
168
- }
169
-
170
- .vm-date-range__side {
171
- display: flex;
172
- min-width: 0;
173
- flex: 1 1 0;
174
- height: 100%;
175
- align-items: center;
176
- gap: 6px;
177
- cursor: pointer;
178
74
  }
179
75
 
180
76
  .vm-date-range__field {
181
- position: relative;
182
- display: flex;
183
- min-width: 0;
184
77
  flex: 1 1 0;
185
- height: 100%;
186
- align-items: center;
187
- justify-content: center;
188
- }
189
-
190
- .vm-date-range__ph {
191
- position: absolute;
192
- z-index: 0;
193
- left: 50%;
194
- max-width: 100%;
195
- overflow: hidden;
196
- color: var(--muted-foreground);
197
- font-size: 12px;
198
- text-align: center;
199
- text-overflow: ellipsis;
200
- white-space: nowrap;
201
- pointer-events: none;
202
- transform: translateX(-50%);
203
- }
204
-
205
- .vm-date-range__icon {
206
- display: inline-flex;
207
- flex: 0 0 auto;
208
- width: 14px;
209
- height: 14px;
210
- align-items: center;
211
- justify-content: center;
212
- color: var(--muted-foreground);
213
- font-size: 14px;
214
- line-height: 1;
215
- pointer-events: none;
216
- }
217
-
218
- .vm-date-range__input {
219
- position: relative;
220
- z-index: 1;
221
- box-sizing: border-box;
222
- width: 100%;
223
78
  min-width: 0;
224
- height: 100%;
225
- padding: 0;
226
- border: none;
227
- background: transparent !important;
228
- color: var(--foreground);
229
- font-size: 12px;
230
- text-align: center;
231
- outline: none;
232
- cursor: pointer;
233
- appearance: textfield;
234
- color-scheme: inherit;
235
-
236
- &::-webkit-datetime-edit {
237
- width: 100%;
238
- padding: 0;
239
- text-align: center;
240
- }
241
-
242
- &::-webkit-datetime-edit-fields-wrapper {
243
- display: flex;
244
- width: 100%;
245
- justify-content: center;
246
- padding: 0;
247
- }
248
-
249
- &::-webkit-date-and-time-value {
250
- margin: 0 auto;
251
- text-align: center;
252
- }
253
-
254
- &.is-empty {
255
- color: transparent;
256
-
257
- &::-webkit-datetime-edit,
258
- &::-webkit-datetime-edit-fields-wrapper,
259
- &::-webkit-datetime-edit-text,
260
- &::-webkit-datetime-edit-year-field,
261
- &::-webkit-datetime-edit-month-field,
262
- &::-webkit-datetime-edit-day-field,
263
- &::-webkit-datetime-edit-hour-field,
264
- &::-webkit-datetime-edit-minute-field,
265
- &::-webkit-datetime-edit-second-field,
266
- &::-webkit-datetime-edit-ampm-field {
267
- color: transparent;
268
- }
269
- }
270
-
271
- &::-webkit-calendar-picker-indicator {
272
- position: absolute;
273
- inset: 0;
274
- width: 100%;
275
- height: 100%;
276
- margin: 0;
277
- padding: 0;
278
- cursor: pointer;
279
- opacity: 0;
280
- }
281
79
  }
282
80
 
283
81
  .vm-date-range__sep {
284
82
  flex: 0 0 auto;
285
83
  padding: 0 8px;
286
- color: var(--muted-foreground);
84
+ color: var(--muted-foreground, #94a3b8);
287
85
  font-size: 13px;
288
86
  font-weight: 600;
289
87
  line-height: 1;
@@ -0,0 +1,220 @@
1
+ <template>
2
+ <div
3
+ ref="rootRef"
4
+ class="vm-dt-field"
5
+ :class="{ 'is-disabled': disabled, 'is-open': open }"
6
+ @click="onRootClick"
7
+ >
8
+ <div class="vm-dt-field__side">
9
+ <div class="vm-dt-field__box">
10
+ <span v-if="!displayText && placeholder" class="vm-dt-field__ph">{{
11
+ placeholder
12
+ }}</span>
13
+ <span class="vm-dt-field__val">{{ displayText }}</span>
14
+ </div>
15
+ <i class="ri-calendar-line vm-dt-field__icon" aria-hidden="true" />
16
+ </div>
17
+
18
+ <Teleport to="body">
19
+ <div
20
+ v-if="open"
21
+ ref="panelWrapRef"
22
+ class="vm-dt-field__panel-wrap"
23
+ :style="panelStyle"
24
+ @pointerdown.stop
25
+ @mousedown.stop
26
+ >
27
+ <VmDateCalendarPanel
28
+ :model-value="modelValue"
29
+ :precision="precision"
30
+ @update:model-value="onPick"
31
+ @clear="onClear"
32
+ />
33
+ </div>
34
+ </Teleport>
35
+ </div>
36
+ </template>
37
+
38
+ <script setup lang="ts">
39
+ import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'
40
+ import VmDateCalendarPanel from './vm-date-calendar-panel.vue'
41
+ import {
42
+ dateTimeDisplayText,
43
+ normalizeDateTimePrecision,
44
+ type DateTimePrecision,
45
+ } from '../../../shared/datetime-picker'
46
+
47
+ defineOptions({ name: 'vm-datetime-field' })
48
+
49
+ const props = withDefaults(
50
+ defineProps<{
51
+ modelValue?: string | null
52
+ precision?: DateTimePrecision | string
53
+ placeholder?: string
54
+ disabled?: boolean
55
+ }>(),
56
+ {
57
+ modelValue: null,
58
+ precision: 'day',
59
+ placeholder: '选择日期时间',
60
+ disabled: false,
61
+ },
62
+ )
63
+
64
+ const emit = defineEmits<{
65
+ 'update:modelValue': [v: string | null]
66
+ change: [v: string | null]
67
+ }>()
68
+
69
+ const rootRef = ref<HTMLElement | null>(null)
70
+ const panelWrapRef = ref<HTMLElement | null>(null)
71
+ const open = ref(false)
72
+ const panelStyle = ref<Record<string, string>>({})
73
+
74
+ const precision = computed(() => normalizeDateTimePrecision(props.precision))
75
+
76
+ const displayText = computed(() =>
77
+ dateTimeDisplayText(props.modelValue, precision.value),
78
+ )
79
+
80
+ function syncPanelPos() {
81
+ const el = rootRef.value
82
+ if (!el) return
83
+ const r = el.getBoundingClientRect()
84
+ // 贴触发框左侧 + 底部
85
+ panelStyle.value = {
86
+ position: 'fixed',
87
+ left: `${r.left}px`,
88
+ top: `${r.bottom + 2}px`,
89
+ zIndex: '10050',
90
+ }
91
+ }
92
+
93
+ function close() {
94
+ open.value = false
95
+ }
96
+
97
+ function openPanel() {
98
+ if (props.disabled) return
99
+ open.value = true
100
+ syncPanelPos()
101
+ }
102
+
103
+ function onRootClick() {
104
+ if (props.disabled) return
105
+ if (open.value) close()
106
+ else openPanel()
107
+ }
108
+
109
+ function onPick(v: string) {
110
+ emit('update:modelValue', v)
111
+ emit('change', v)
112
+ if (precision.value === 'day' || precision.value === 'month' || precision.value === 'year') {
113
+ close()
114
+ }
115
+ }
116
+
117
+ function onClear() {
118
+ emit('update:modelValue', null)
119
+ emit('change', null)
120
+ close()
121
+ }
122
+
123
+ function onDocPointer(e: PointerEvent) {
124
+ if (!open.value) return
125
+ const t = e.target as Node
126
+ if (rootRef.value?.contains(t) || panelWrapRef.value?.contains(t)) return
127
+ close()
128
+ }
129
+
130
+ function onViewportChange() {
131
+ if (open.value) syncPanelPos()
132
+ }
133
+
134
+ watch(open, (v) => {
135
+ if (v) syncPanelPos()
136
+ })
137
+
138
+ onMounted(() => {
139
+ document.addEventListener('pointerdown', onDocPointer, true)
140
+ window.addEventListener('resize', onViewportChange)
141
+ window.addEventListener('scroll', onViewportChange, true)
142
+ })
143
+
144
+ onBeforeUnmount(() => {
145
+ document.removeEventListener('pointerdown', onDocPointer, true)
146
+ window.removeEventListener('resize', onViewportChange)
147
+ window.removeEventListener('scroll', onViewportChange, true)
148
+ })
149
+ </script>
150
+
151
+ <style lang="scss" scoped>
152
+ .vm-dt-field {
153
+ box-sizing: border-box;
154
+ width: 100%;
155
+ height: var(--vm-control-height, 38px);
156
+ border: 1px solid transparent;
157
+ border-radius: 12px;
158
+ background: var(--muted, #f4f6fb);
159
+ cursor: pointer;
160
+ transition: border-color 0.15s ease;
161
+
162
+ &.is-open,
163
+ &:focus-within {
164
+ border-color: var(--focus-border, var(--primary, #4e5dff));
165
+ }
166
+
167
+ &.is-disabled {
168
+ opacity: 0.55;
169
+ pointer-events: none;
170
+ cursor: not-allowed;
171
+ }
172
+ }
173
+
174
+ .vm-dt-field__side {
175
+ display: flex;
176
+ height: 100%;
177
+ align-items: center;
178
+ gap: 6px;
179
+ padding: 0 10px;
180
+ }
181
+
182
+ .vm-dt-field__box {
183
+ position: relative;
184
+ flex: 1 1 auto;
185
+ min-width: 0;
186
+ height: 100%;
187
+ display: flex;
188
+ align-items: center;
189
+ }
190
+
191
+ .vm-dt-field__ph {
192
+ position: absolute;
193
+ left: 0;
194
+ right: 0;
195
+ overflow: hidden;
196
+ color: var(--muted-foreground, #94a3b8);
197
+ font-size: inherit;
198
+ text-overflow: ellipsis;
199
+ white-space: nowrap;
200
+ pointer-events: none;
201
+ }
202
+
203
+ .vm-dt-field__val {
204
+ position: relative;
205
+ z-index: 1;
206
+ overflow: hidden;
207
+ color: var(--foreground, #1f2937);
208
+ font-size: inherit;
209
+ text-overflow: ellipsis;
210
+ white-space: nowrap;
211
+ }
212
+
213
+ .vm-dt-field__icon {
214
+ flex: none;
215
+ font-size: 16px;
216
+ color: var(--muted-foreground, #94a3b8);
217
+ line-height: 1;
218
+ pointer-events: none;
219
+ }
220
+ </style>
@@ -143,7 +143,7 @@ onBeforeUnmount(() => document.removeEventListener('mousedown', onDoc))
143
143
  .vm-multi-select__panel {
144
144
  position: absolute;
145
145
  z-index: 50;
146
- top: calc(100% + 4px);
146
+ top: calc(100% + 2px);
147
147
  left: 0;
148
148
  right: 0;
149
149
  max-height: 220px;
@@ -1 +1 @@
1
- const _0x522825=_0x577f;function _0x322c(){const _0x5e4f8d=['BMfTzq','mti3mJu4nxrrywrkwq','Bwf4lxDPzhrOoJeWmcu7yM9YzgvYlxjHzgL1CZO4ChG','Aw5Zzxj0q29UDgvUDa','mJe0mZe2mxD2BfHyEa','mtCWDhr3uejH','mJrPufPhq3e','mJbyzxfPquu','nZy3ndi4sgHOC0f2','nJaZmZjYqMPxquW','nty4odmZv1rHywLd','DMLKzw9BC3jJxq','DMLKzw8','8j+qU+kaJEkDHo+4JW','mta2mZK4ndLHy2DvAgW','mtGXmZDzDg14Bfu','mta3nfH1BMP3sq'];_0x322c=function(){return _0x5e4f8d;};return _0x322c();}function _0x577f(_0x1f3dd8,_0x4540cc){_0x1f3dd8=_0x1f3dd8-0x147;const _0x322c81=_0x322c();let _0x577ffa=_0x322c81[_0x1f3dd8];if(_0x577f['CjlEsw']===undefined){var _0x128835=function(_0xe85106){const _0x9f63ff='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2bd44c='',_0x530c02='';for(let _0x4d8612=0x0,_0x1c2bdb,_0x54c2a6,_0x16ae60=0x0;_0x54c2a6=_0xe85106['charAt'](_0x16ae60++);~_0x54c2a6&&(_0x1c2bdb=_0x4d8612%0x4?_0x1c2bdb*0x40+_0x54c2a6:_0x54c2a6,_0x4d8612++%0x4)?_0x2bd44c+=String['fromCharCode'](0xff&_0x1c2bdb>>(-0x2*_0x4d8612&0x6)):0x0){_0x54c2a6=_0x9f63ff['indexOf'](_0x54c2a6);}for(let _0x4b5583=0x0,_0x511c29=_0x2bd44c['length'];_0x4b5583<_0x511c29;_0x4b5583++){_0x530c02+='%'+('00'+_0x2bd44c['charCodeAt'](_0x4b5583)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x530c02);};_0x577f['WUZKmh']=_0x128835,_0x577f['CslCaW']={},_0x577f['CjlEsw']=!![];}const _0x4cfc3f=_0x322c81[0x0],_0x8eb215=_0x1f3dd8+_0x4cfc3f,_0x4f99c5=_0x577f['CslCaW'][_0x8eb215];return!_0x4f99c5?(_0x577ffa=_0x577f['WUZKmh'](_0x577ffa),_0x577f['CslCaW'][_0x8eb215]=_0x577ffa):_0x577ffa=_0x4f99c5,_0x577ffa;}(function(_0x3f0757,_0x1c1953){const _0x213e69=_0x577f,_0x42e9b0=_0x3f0757();while(!![]){try{const _0x2dcf60=parseInt(_0x213e69(0x150))/0x1+-parseInt(_0x213e69(0x14e))/0x2+parseInt(_0x213e69(0x147))/0x3+parseInt(_0x213e69(0x14f))/0x4*(parseInt(_0x213e69(0x14b))/0x5)+-parseInt(_0x213e69(0x156))/0x6*(-parseInt(_0x213e69(0x155))/0x7)+parseInt(_0x213e69(0x14c))/0x8*(parseInt(_0x213e69(0x14a))/0x9)+-parseInt(_0x213e69(0x14d))/0xa*(parseInt(_0x213e69(0x154))/0xb);if(_0x2dcf60===_0x1c1953)break;else _0x42e9b0['push'](_0x42e9b0['shift']());}catch(_0x1d7efd){_0x42e9b0['push'](_0x42e9b0['shift']());}}}(_0x322c,0x594e2));import{Node,mergeAttributes}from'@tiptap/core';export const VmRichtextVideo=Node['create']({'name':_0x522825(0x152),'group':'block','atom':!![],'selectable':!![],'draggable':!![],'addAttributes'(){return{'src':{'default':null},'controls':{'default':!![]}};},'parseHTML'(){const _0x2077fe=_0x522825;return[{'tag':_0x2077fe(0x151)}];},'renderHTML'({HTMLAttributes:_0x2bd44c}){const _0x584bea=_0x522825;return[_0x584bea(0x152),mergeAttributes(_0x2bd44c,{'controls':!![],'style':_0x584bea(0x148)})];},'addCommands'(){const _0x38ff0f=_0x522825;return{'setVideo':_0x530c02=>({commands:_0x4d8612})=>_0x4d8612[_0x38ff0f(0x149)]({'type':this[_0x38ff0f(0x157)],'attrs':_0x530c02})};}});export const VM_RICHTEXT_EMOJIS=['\uD83D\uDE00','\uD83D\uDE03','\uD83D\uDE04','\uD83D\uDE01','\uD83D\uDE06','\uD83D\uDE05','\uD83E\uDD23','\uD83D\uDE02','\uD83D\uDE42','\uD83D\uDE43','\uD83D\uDE09','\uD83D\uDE0A','\uD83D\uDE07','\uD83E\uDD70','\uD83D\uDE0D','\uD83E\uDD29','\uD83D\uDE18','\uD83D\uDE17','\uD83D\uDE1A','\uD83D\uDE19','\uD83D\uDE0B','\uD83D\uDE1B','\uD83D\uDE1C','\uD83E\uDD2A','\uD83D\uDE1D','\uD83E\uDD11','\uD83E\uDD17','\uD83E\uDD2D','\uD83E\uDD2B','\uD83E\uDD14','\uD83E\uDD10','\uD83E\uDD28','\uD83D\uDE10','\uD83D\uDE11','\uD83D\uDE36','\uD83D\uDE0F','\uD83D\uDE12','\uD83D\uDE44','\uD83D\uDE2C','\uD83E\uDD25','\uD83D\uDE0C','\uD83D\uDE14','\uD83D\uDE2A','\uD83E\uDD24','\uD83D\uDE34','\uD83D\uDE37','\uD83E\uDD12','\uD83E\uDD15','\uD83E\uDD22','\uD83E\uDD2E','\uD83E\uDD75','\uD83E\uDD76','\uD83E\uDD74','\uD83D\uDE35','\uD83E\uDD2F','\uD83E\uDD20','\uD83E\uDD73','\uD83D\uDE0E','\uD83E\uDD13','\uD83E\uDDD0','\uD83D\uDE15','\uD83D\uDE1F','\uD83D\uDE41','☹️','\uD83D\uDE2E','\uD83D\uDE2F','\uD83D\uDE32','\uD83D\uDE33','\uD83E\uDD7A','\uD83D\uDE26','\uD83D\uDE27','\uD83D\uDE28','\uD83D\uDE30','\uD83D\uDE25','\uD83D\uDE22','\uD83D\uDE2D','\uD83D\uDE31','\uD83D\uDE16','\uD83D\uDE23','\uD83D\uDE1E','\uD83D\uDE13','\uD83D\uDE29','\uD83D\uDE2B','\uD83E\uDD71','\uD83D\uDE24','\uD83D\uDE21','\uD83D\uDE20','\uD83E\uDD2C','\uD83D\uDE08','\uD83D\uDC7F','\uD83D\uDC4B','\uD83E\uDD1A','\uD83D\uDD90','✋','\uD83D\uDD96','\uD83D\uDC4C','\uD83E\uDD0C','\uD83E\uDD0F','✌️','\uD83E\uDD1E','\uD83E\uDD1F','\uD83E\uDD18','\uD83E\uDD19','\uD83D\uDC48','\uD83D\uDC49','\uD83D\uDC46','\uD83D\uDD95','\uD83D\uDC47','☝️','\uD83D\uDC4D','\uD83D\uDC4E','✊','\uD83D\uDC4A','\uD83E\uDD1B','\uD83E\uDD1C','\uD83D\uDC4F','\uD83D\uDE4C','\uD83D\uDC50','\uD83E\uDD32','\uD83E\uDD1D','\uD83D\uDE4F','\uD83D\uDCAA','\uD83E\uDDBE','✍️','\uD83D\uDC85','\uD83E\uDD33','❤️','\uD83E\uDDE1','\uD83D\uDC9B','\uD83D\uDC9A','\uD83D\uDC99','\uD83D\uDC9C','\uD83D\uDDA4','\uD83E\uDD0D','\uD83E\uDD0E','\uD83D\uDC94','❣️','\uD83D\uDC95','\uD83D\uDC9E','\uD83D\uDC93','\uD83D\uDC97','\uD83D\uDC96','\uD83D\uDC98','\uD83D\uDC9D','\uD83D\uDC9F','☮️','✝️','☪️','\uD83D\uDD49','☸️','✡️','\uD83D\uDD2F','\uD83D\uDD4E','☯️','☦️','\uD83D\uDED0','⭐','\uD83C\uDF1F','✨','⚡','\uD83D\uDD25','\uD83D\uDCA5','☀️','\uD83C\uDF19','⭐️','\uD83C\uDF08','✅','❌','⭕','❗','❓','‼️','⁉️','\uD83D\uDCAF','\uD83D\uDD14','\uD83D\uDD15','\uD83D\uDCCC','\uD83D\uDCCD','\uD83D\uDCCE','\uD83D\uDD17','\uD83D\uDD12','\uD83D\uDD13','\uD83D\uDD11','\uD83D\uDDDD','\uD83D\uDCA1','\uD83D\uDD26','\uD83D\uDCDD','✏️','✒️','\uD83D\uDD8A','\uD83D\uDD8B','\uD83D\uDD8C','\uD83D\uDD8D','\uD83D\uDCBC','\uD83D\uDCC1','\uD83D\uDCC2','\uD83D\uDCC5','\uD83D\uDCC6','\uD83D\uDDD3','\uD83D\uDCC7','\uD83D\uDCC8','\uD83D\uDCC9','\uD83D\uDCCA','\uD83D\uDCCB','\uD83D\uDCE4','\uD83D\uDCE5','\uD83D\uDCE6','\uD83D\uDCEB','\uD83D\uDCEC','\uD83D\uDCED','\uD83D\uDCEE','\uD83D\uDCEF','\uD83D\uDCDC','\uD83D\uDCC3','\uD83D\uDCC4','\uD83D\uDCD1','☕','\uD83C\uDF75','\uD83E\uDDC3','\uD83E\uDD64','\uD83E\uDDCB','\uD83C\uDF7A','\uD83C\uDF7B','\uD83E\uDD42','\uD83C\uDF77','\uD83C\uDF78','\uD83C\uDF55','\uD83C\uDF54','\uD83C\uDF5F','\uD83C\uDF2D','\uD83C\uDF7F','\uD83C\uDF69','\uD83C\uDF6A','\uD83C\uDF82','\uD83C\uDF70','\uD83E\uDDC1','\uD83C\uDF4E','\uD83C\uDF4A','\uD83C\uDF4B','\uD83C\uDF4C','\uD83C\uDF49','\uD83C\uDF47','\uD83C\uDF53','\uD83E\uDED0','\uD83C\uDF52','\uD83C\uDF51','⚽','\uD83C\uDFC0','\uD83C\uDFC8','⚾','\uD83C\uDFBE','\uD83C\uDFD0','\uD83C\uDFC9','\uD83C\uDFB1','\uD83C\uDFD3','\uD83C\uDFF8','\uD83C\uDFAE','\uD83D\uDD79','\uD83C\uDFB2','\uD83E\uDDE9','\uD83C\uDFAF','\uD83C\uDFB3','\uD83C\uDFB0','\uD83C\uDFB8','\uD83C\uDFB9','\uD83E\uDD41','\uD83C\uDFA4','\uD83C\uDFA7','\uD83C\uDFAC','\uD83C\uDFA5','\uD83D\uDCF7','\uD83D\uDCF8','\uD83D\uDCF9','\uD83D\uDCFA','\uD83D\uDCFB','\uD83C\uDF99','\uD83D\uDE80','✈️','\uD83D\uDEE9','\uD83D\uDEEB','\uD83D\uDEEC','\uD83D\uDEF0','\uD83D\uDCBA','\uD83D\uDEF8','\uD83D\uDE81','\uD83D\uDEF6','\uD83D\uDE97','\uD83D\uDE95','\uD83D\uDE99','\uD83D\uDE8C','\uD83D\uDE8E','\uD83C\uDFCE','\uD83D\uDE93','\uD83D\uDE91','\uD83D\uDE92','\uD83D\uDE90','\uD83C\uDFE0','\uD83C\uDFE1','\uD83C\uDFE2','\uD83C\uDFE3','\uD83C\uDFE4','\uD83C\uDFE5','\uD83C\uDFE6','\uD83C\uDFE8','\uD83C\uDFE9','\uD83C\uDFEA','\uD83D\uDC36','\uD83D\uDC31','\uD83D\uDC2D','\uD83D\uDC39','\uD83D\uDC30','\uD83E\uDD8A','\uD83D\uDC3B','\uD83D\uDC3C',_0x522825(0x153),'\uD83D\uDC28','\uD83D\uDC2F','\uD83E\uDD81','\uD83D\uDC2E','\uD83D\uDC37','\uD83D\uDC38','\uD83D\uDC35','\uD83D\uDE48','\uD83D\uDE49','\uD83D\uDE4A','\uD83D\uDC12','\uD83D\uDC14','\uD83D\uDC27','\uD83D\uDC26','\uD83D\uDC24','\uD83D\uDC23','\uD83D\uDC25','\uD83E\uDD86','\uD83E\uDD85','\uD83E\uDD89','\uD83E\uDD87','\uD83C\uDF89','\uD83C\uDF8A','\uD83C\uDF88','\uD83C\uDF81','\uD83C\uDF80','\uD83C\uDF97','\uD83C\uDFAB','\uD83C\uDF9F','\uD83C\uDFC6','\uD83C\uDFC5'];
1
+ const _0x34585=_0x4dc4;function _0x54bf(){const _0xaac3ea=['mtmWmJm0offArgXVBa','Aw5Zzxj0q29UDgvUDa','mZiXnZm3mg1rsNfotq','nhjAzezhuq','mtmZodGWBvHpvLDO','nw1bquTQBW','Bwf4lxDPzhrOoJeWmcu7yM9YzgvYlxjHzgL1CZO4ChG','nJK0nZa0vxDZtNb3','ndvtC3Lmr0q','DMLKzw8','nZqZodK4wNzgrxf4','ndKWntC3s1DgBLzb','mtfWAgvACuG','BMfTzq','8j+qU+kaJEkDHo+4JW','mZyZmJi0ngzpzwP1sq','yMXVy2S'];_0x54bf=function(){return _0xaac3ea;};return _0x54bf();}function _0x4dc4(_0x35a5a8,_0x513bbc){_0x35a5a8=_0x35a5a8-0x19e;const _0x54bfc1=_0x54bf();let _0x4dc416=_0x54bfc1[_0x35a5a8];if(_0x4dc4['ixiexM']===undefined){var _0x4c3ba6=function(_0x22825b){const _0x40ac68='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4c5d71='',_0x316472='';for(let _0x5ede96=0x0,_0x16e6bc,_0xaaf658,_0x49e37b=0x0;_0xaaf658=_0x22825b['charAt'](_0x49e37b++);~_0xaaf658&&(_0x16e6bc=_0x5ede96%0x4?_0x16e6bc*0x40+_0xaaf658:_0xaaf658,_0x5ede96++%0x4)?_0x4c5d71+=String['fromCharCode'](0xff&_0x16e6bc>>(-0x2*_0x5ede96&0x6)):0x0){_0xaaf658=_0x40ac68['indexOf'](_0xaaf658);}for(let _0x1cfc1d=0x0,_0x1f50f3=_0x4c5d71['length'];_0x1cfc1d<_0x1f50f3;_0x1cfc1d++){_0x316472+='%'+('00'+_0x4c5d71['charCodeAt'](_0x1cfc1d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x316472);};_0x4dc4['jjFdNT']=_0x4c3ba6,_0x4dc4['evemWr']={},_0x4dc4['ixiexM']=!![];}const _0x301d61=_0x54bfc1[0x0],_0x3be39a=_0x35a5a8+_0x301d61,_0x2c1988=_0x4dc4['evemWr'][_0x3be39a];return!_0x2c1988?(_0x4dc416=_0x4dc4['jjFdNT'](_0x4dc416),_0x4dc4['evemWr'][_0x3be39a]=_0x4dc416):_0x4dc416=_0x2c1988,_0x4dc416;}(function(_0x4109fd,_0xc235e7){const _0xb796fc=_0x4dc4,_0x2f4816=_0x4109fd();while(!![]){try{const _0x507014=-parseInt(_0xb796fc(0x19e))/0x1+parseInt(_0xb796fc(0x1ab))/0x2+-parseInt(_0xb796fc(0x1ae))/0x3*(parseInt(_0xb796fc(0x1a7))/0x4)+parseInt(_0xb796fc(0x1a9))/0x5*(-parseInt(_0xb796fc(0x1a4))/0x6)+parseInt(_0xb796fc(0x1a2))/0x7+-parseInt(_0xb796fc(0x1a8))/0x8*(-parseInt(_0xb796fc(0x1ac))/0x9)+parseInt(_0xb796fc(0x1a6))/0xa*(parseInt(_0xb796fc(0x19f))/0xb);if(_0x507014===_0xc235e7)break;else _0x2f4816['push'](_0x2f4816['shift']());}catch(_0x162555){_0x2f4816['push'](_0x2f4816['shift']());}}}(_0x54bf,0x4d297));import{Node,mergeAttributes}from'@tiptap/core';export const VmRichtextVideo=Node['create']({'name':'video','group':_0x34585(0x1a3),'atom':!![],'selectable':!![],'draggable':!![],'addAttributes'(){return{'src':{'default':null},'controls':{'default':!![]}};},'parseHTML'(){return[{'tag':'video[src]'}];},'renderHTML'({HTMLAttributes:_0x4c5d71}){const _0x5b7a97=_0x34585;return[_0x5b7a97(0x1ad),mergeAttributes(_0x4c5d71,{'controls':!![],'style':_0x5b7a97(0x1aa)})];},'addCommands'(){const _0x588e82=_0x34585;return{'setVideo':_0x316472=>({commands:_0x5ede96})=>_0x5ede96[_0x588e82(0x1a5)]({'type':this[_0x588e82(0x1a0)],'attrs':_0x316472})};}});export const VM_RICHTEXT_EMOJIS=['\uD83D\uDE00','\uD83D\uDE03','\uD83D\uDE04','\uD83D\uDE01','\uD83D\uDE06','\uD83D\uDE05','\uD83E\uDD23','\uD83D\uDE02','\uD83D\uDE42','\uD83D\uDE43','\uD83D\uDE09','\uD83D\uDE0A','\uD83D\uDE07','\uD83E\uDD70','\uD83D\uDE0D','\uD83E\uDD29','\uD83D\uDE18','\uD83D\uDE17','\uD83D\uDE1A','\uD83D\uDE19','\uD83D\uDE0B','\uD83D\uDE1B','\uD83D\uDE1C','\uD83E\uDD2A','\uD83D\uDE1D','\uD83E\uDD11','\uD83E\uDD17','\uD83E\uDD2D','\uD83E\uDD2B','\uD83E\uDD14','\uD83E\uDD10','\uD83E\uDD28','\uD83D\uDE10','\uD83D\uDE11','\uD83D\uDE36','\uD83D\uDE0F','\uD83D\uDE12','\uD83D\uDE44','\uD83D\uDE2C','\uD83E\uDD25','\uD83D\uDE0C','\uD83D\uDE14','\uD83D\uDE2A','\uD83E\uDD24','\uD83D\uDE34','\uD83D\uDE37','\uD83E\uDD12','\uD83E\uDD15','\uD83E\uDD22','\uD83E\uDD2E','\uD83E\uDD75','\uD83E\uDD76','\uD83E\uDD74','\uD83D\uDE35','\uD83E\uDD2F','\uD83E\uDD20','\uD83E\uDD73','\uD83D\uDE0E','\uD83E\uDD13','\uD83E\uDDD0','\uD83D\uDE15','\uD83D\uDE1F','\uD83D\uDE41','☹️','\uD83D\uDE2E','\uD83D\uDE2F','\uD83D\uDE32','\uD83D\uDE33','\uD83E\uDD7A','\uD83D\uDE26','\uD83D\uDE27','\uD83D\uDE28','\uD83D\uDE30','\uD83D\uDE25','\uD83D\uDE22','\uD83D\uDE2D','\uD83D\uDE31','\uD83D\uDE16','\uD83D\uDE23','\uD83D\uDE1E','\uD83D\uDE13','\uD83D\uDE29','\uD83D\uDE2B','\uD83E\uDD71','\uD83D\uDE24','\uD83D\uDE21','\uD83D\uDE20','\uD83E\uDD2C','\uD83D\uDE08','\uD83D\uDC7F','\uD83D\uDC4B','\uD83E\uDD1A','\uD83D\uDD90','✋','\uD83D\uDD96','\uD83D\uDC4C','\uD83E\uDD0C','\uD83E\uDD0F','✌️','\uD83E\uDD1E','\uD83E\uDD1F','\uD83E\uDD18','\uD83E\uDD19','\uD83D\uDC48','\uD83D\uDC49','\uD83D\uDC46','\uD83D\uDD95','\uD83D\uDC47','☝️','\uD83D\uDC4D','\uD83D\uDC4E','✊','\uD83D\uDC4A','\uD83E\uDD1B','\uD83E\uDD1C','\uD83D\uDC4F','\uD83D\uDE4C','\uD83D\uDC50','\uD83E\uDD32','\uD83E\uDD1D','\uD83D\uDE4F','\uD83D\uDCAA','\uD83E\uDDBE','✍️','\uD83D\uDC85','\uD83E\uDD33','❤️','\uD83E\uDDE1','\uD83D\uDC9B','\uD83D\uDC9A','\uD83D\uDC99','\uD83D\uDC9C','\uD83D\uDDA4','\uD83E\uDD0D','\uD83E\uDD0E','\uD83D\uDC94','❣️','\uD83D\uDC95','\uD83D\uDC9E','\uD83D\uDC93','\uD83D\uDC97','\uD83D\uDC96','\uD83D\uDC98','\uD83D\uDC9D','\uD83D\uDC9F','☮️','✝️','☪️','\uD83D\uDD49','☸️','✡️','\uD83D\uDD2F','\uD83D\uDD4E','☯️','☦️','\uD83D\uDED0','⭐','\uD83C\uDF1F','✨','⚡','\uD83D\uDD25','\uD83D\uDCA5','☀️','\uD83C\uDF19','⭐️','\uD83C\uDF08','✅','❌','⭕','❗','❓','‼️','⁉️','\uD83D\uDCAF','\uD83D\uDD14','\uD83D\uDD15','\uD83D\uDCCC','\uD83D\uDCCD','\uD83D\uDCCE','\uD83D\uDD17','\uD83D\uDD12','\uD83D\uDD13','\uD83D\uDD11','\uD83D\uDDDD','\uD83D\uDCA1','\uD83D\uDD26','\uD83D\uDCDD','✏️','✒️','\uD83D\uDD8A','\uD83D\uDD8B','\uD83D\uDD8C','\uD83D\uDD8D','\uD83D\uDCBC','\uD83D\uDCC1','\uD83D\uDCC2','\uD83D\uDCC5','\uD83D\uDCC6','\uD83D\uDDD3','\uD83D\uDCC7','\uD83D\uDCC8','\uD83D\uDCC9','\uD83D\uDCCA','\uD83D\uDCCB','\uD83D\uDCE4','\uD83D\uDCE5','\uD83D\uDCE6','\uD83D\uDCEB','\uD83D\uDCEC','\uD83D\uDCED','\uD83D\uDCEE','\uD83D\uDCEF','\uD83D\uDCDC','\uD83D\uDCC3','\uD83D\uDCC4','\uD83D\uDCD1','☕','\uD83C\uDF75','\uD83E\uDDC3','\uD83E\uDD64','\uD83E\uDDCB','\uD83C\uDF7A','\uD83C\uDF7B','\uD83E\uDD42','\uD83C\uDF77','\uD83C\uDF78','\uD83C\uDF55','\uD83C\uDF54','\uD83C\uDF5F','\uD83C\uDF2D','\uD83C\uDF7F','\uD83C\uDF69','\uD83C\uDF6A','\uD83C\uDF82','\uD83C\uDF70','\uD83E\uDDC1','\uD83C\uDF4E','\uD83C\uDF4A','\uD83C\uDF4B','\uD83C\uDF4C','\uD83C\uDF49','\uD83C\uDF47','\uD83C\uDF53','\uD83E\uDED0','\uD83C\uDF52','\uD83C\uDF51','⚽','\uD83C\uDFC0','\uD83C\uDFC8','⚾','\uD83C\uDFBE','\uD83C\uDFD0','\uD83C\uDFC9','\uD83C\uDFB1','\uD83C\uDFD3','\uD83C\uDFF8','\uD83C\uDFAE','\uD83D\uDD79','\uD83C\uDFB2','\uD83E\uDDE9','\uD83C\uDFAF','\uD83C\uDFB3','\uD83C\uDFB0','\uD83C\uDFB8','\uD83C\uDFB9','\uD83E\uDD41','\uD83C\uDFA4','\uD83C\uDFA7','\uD83C\uDFAC','\uD83C\uDFA5','\uD83D\uDCF7','\uD83D\uDCF8','\uD83D\uDCF9','\uD83D\uDCFA','\uD83D\uDCFB','\uD83C\uDF99','\uD83D\uDE80','✈️','\uD83D\uDEE9','\uD83D\uDEEB','\uD83D\uDEEC','\uD83D\uDEF0','\uD83D\uDCBA','\uD83D\uDEF8','\uD83D\uDE81','\uD83D\uDEF6','\uD83D\uDE97','\uD83D\uDE95','\uD83D\uDE99','\uD83D\uDE8C','\uD83D\uDE8E','\uD83C\uDFCE','\uD83D\uDE93','\uD83D\uDE91','\uD83D\uDE92','\uD83D\uDE90','\uD83C\uDFE0','\uD83C\uDFE1','\uD83C\uDFE2','\uD83C\uDFE3','\uD83C\uDFE4','\uD83C\uDFE5','\uD83C\uDFE6','\uD83C\uDFE8','\uD83C\uDFE9','\uD83C\uDFEA','\uD83D\uDC36','\uD83D\uDC31','\uD83D\uDC2D','\uD83D\uDC39','\uD83D\uDC30','\uD83E\uDD8A','\uD83D\uDC3B','\uD83D\uDC3C',_0x34585(0x1a1),'\uD83D\uDC28','\uD83D\uDC2F','\uD83E\uDD81','\uD83D\uDC2E','\uD83D\uDC37','\uD83D\uDC38','\uD83D\uDC35','\uD83D\uDE48','\uD83D\uDE49','\uD83D\uDE4A','\uD83D\uDC12','\uD83D\uDC14','\uD83D\uDC27','\uD83D\uDC26','\uD83D\uDC24','\uD83D\uDC23','\uD83D\uDC25','\uD83E\uDD86','\uD83E\uDD85','\uD83E\uDD89','\uD83E\uDD87','\uD83C\uDF89','\uD83C\uDF8A','\uD83C\uDF88','\uD83C\uDF81','\uD83C\uDF80','\uD83C\uDF97','\uD83C\uDFAB','\uD83C\uDF9F','\uD83C\uDFC6','\uD83C\uDFC5'];