react-toolkits 2.15.5 → 2.15.7

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.
package/lib/index.js CHANGED
@@ -1,3959 +1,2 @@
1
- import { jwtDecode } from 'jwt-decode';
2
- import { create, useStore, createStore } from 'zustand';
3
- import { persist, createJSONStorage } from 'zustand/middleware';
4
- import * as Antd2 from 'antd';
5
- import { Modal, Form, Space, Button, Drawer, Spin, Result, Table, Card, Input, Select, App, Switch, InputNumber, theme, Tag, Typography, Alert, Divider, notification, Menu, Popconfirm, Row, Col, Breadcrumb, Descriptions, Skeleton, Empty, Dropdown, Tooltip, Checkbox, Collapse } from 'antd';
6
- import { forwardRef, lazy, useContext, useMemo, useState, useCallback, useEffect, useImperativeHandle, cloneElement, useRef, createContext, memo, Fragment as Fragment$1, Suspense, useTransition } from 'react';
7
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
- import { last, has, template, get, isEqual, first } from 'lodash-es';
9
- import { flushSync } from 'react-dom';
10
- import { createRoot } from 'react-dom/client';
11
- import ky from 'ky';
12
- import useSWR4, { mutate, unstable_serialize, useSWRConfig } from 'swr';
13
- import useSWRImmutable from 'swr/immutable';
14
- import logoUrl from './logo-L6MFCL6M.png';
15
- import { Routes, Route, Navigate, useNavigate, useParams, useLocation, Link } from 'react-router-dom';
16
- import { PlusOutlined, UserAddOutlined, UsergroupAddOutlined, LogoutOutlined, UserOutlined, MenuUnfoldOutlined, MenuFoldOutlined, MinusCircleOutlined } from '@ant-design/icons';
17
- import useSWRMutation2 from 'swr/mutation';
18
- import { Editor } from '@monaco-editor/react';
19
- import { produce } from 'immer';
20
- import 'animate.css';
21
- import qs from 'query-string';
22
- import useSWRInfinite from 'swr/infinite';
23
- import dayjs from 'dayjs';
24
-
25
- var __defProp = Object.defineProperty;
26
- var __getOwnPropNames = Object.getOwnPropertyNames;
27
- var __esm = (fn, res) => function __init() {
28
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
29
- };
30
- var __export = (target, all) => {
31
- for (var name in all)
32
- __defProp(target, name, { get: all[name], enumerable: true });
33
- };
34
-
35
- // src/utils/index.ts
36
- var mixedStorage, globalId, generateId;
37
- var init_utils = __esm({
38
- "src/utils/index.ts"() {
39
- mixedStorage = {
40
- getItem: (name) => {
41
- return sessionStorage.getItem(name) || localStorage.getItem(name);
42
- },
43
- setItem: (name, value) => {
44
- sessionStorage.setItem(name, value);
45
- localStorage.setItem(name, value);
46
- },
47
- removeItem(name) {
48
- sessionStorage.removeItem(name);
49
- localStorage.removeItem(name);
50
- }
51
- };
52
- globalId = 0;
53
- generateId = () => ++globalId;
54
- }
55
- });
56
-
57
- // src/components/locale/en_GB.ts
58
- var locale, en_GB_default;
59
- var init_en_GB = __esm({
60
- "src/components/locale/en_GB.ts"() {
61
- locale = {
62
- global: {
63
- noEntitlement: "No permission, please contact the administrator.",
64
- name: "Name",
65
- creationTime: "Creation Time",
66
- operation: "Operation",
67
- update: "Update",
68
- edit: "Edit",
69
- delete: "Delete",
70
- selectAll: "Select All",
71
- game: "Game",
72
- user: "User",
73
- role: "Role",
74
- username: "Username",
75
- password: "Password",
76
- label: "Label",
77
- method: "Method",
78
- route: "Route",
79
- request: "Request",
80
- response: "Response",
81
- add: "Add",
82
- signIn: "Sign In",
83
- projectGroup: "Project Group",
84
- view: "View"
85
- },
86
- SignIn: {
87
- title: "Sign In Method",
88
- thirdParty: "Third party sign in",
89
- signInWithIDass: "Sign in with IDass",
90
- unregistered: "You are not yet registered on the platform, please contact the administrator",
91
- welcome: "Welcome"
92
- },
93
- NotFound: {
94
- subTitle: "The page you visited does not exist",
95
- buttonText: "Return to homepage"
96
- },
97
- FilterFormWrapper: {
98
- confirmText: "Search",
99
- resetText: "Reset"
100
- },
101
- FormModal: {
102
- confirmText: "Confirm",
103
- cancelText: "Cancel"
104
- },
105
- GameSelect: {
106
- label: "Current Game",
107
- placeholder: "Please select a game"
108
- },
109
- RequireGame: {
110
- description: "Please select a game"
111
- },
112
- UserWidget: {
113
- signOutText: "Sign Out"
114
- },
115
- User: {
116
- createTitle: "Create User",
117
- createSuccessfully: "User created successfully",
118
- updateTitle: "Update User",
119
- updateSuccessfully: "User updated successfully",
120
- deleteTitle: "Delete User",
121
- deleteContent: "Are you sure you want to delete user <%= user %>?",
122
- deleteSuccessfully: "User deleted successfully"
123
- },
124
- Role: {
125
- createTitle: "Create Role",
126
- createSuccessfully: "Role created successfully",
127
- updateTitle: "Update Role",
128
- updateSuccessfully: "Role updated successfully",
129
- deleteTitle: "Delete Role",
130
- deleteContent: "Are you sure you want to delete role <%= role %>?",
131
- deleteSuccessfully: "Role deleted successfully"
132
- },
133
- PermissionList: {
134
- failedDescription: "Failed to get permission list",
135
- baseSectionTitle: "Platform Basic Permissions",
136
- gameSectionTitle: "Game Permissions",
137
- gameSectionDescription: "Please select a game first",
138
- gameSelectPlaceholder: "Please select a game first",
139
- removeText: "Remove",
140
- addText: "Add Game Permissions"
141
- },
142
- RoleDetail: {
143
- title: "Role Details"
144
- },
145
- InfiniteList: {
146
- loadingText: "Loading...",
147
- reachEndText: "You've reached the end",
148
- loadMoreText: "Load more"
149
- }
150
- };
151
- en_GB_default = locale;
152
- }
153
- });
154
-
155
- // src/constants/index.ts
156
- var SSO_URL, APP_ID_HEADER, FRONTEND_ROUTE_PREFIX, PermissionVersion, WILDCARD;
157
- var init_constants = __esm({
158
- "src/constants/index.ts"() {
159
- SSO_URL = "https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1";
160
- APP_ID_HEADER = "App-ID";
161
- FRONTEND_ROUTE_PREFIX = "/console/";
162
- PermissionVersion = /* @__PURE__ */ ((PermissionVersion2) => {
163
- PermissionVersion2["V1"] = "v1";
164
- PermissionVersion2["V2"] = "v2";
165
- PermissionVersion2["V3"] = "v3";
166
- return PermissionVersion2;
167
- })(PermissionVersion || {});
168
- WILDCARD = "*";
169
- }
170
- });
171
-
172
- // src/stores/context.ts
173
- var createContextSlice;
174
- var init_context = __esm({
175
- "src/stores/context.ts"() {
176
- init_en_GB();
177
- createContextSlice = (set) => ({
178
- locale: en_GB_default,
179
- gameApiV2: false,
180
- isGlobal: false,
181
- signInPath: "/sign_in",
182
- mainPagePath: "/",
183
- title: {
184
- fontSize: 18
185
- },
186
- permissionVersion: "v1" /* V1 */,
187
- setContext(state) {
188
- set((prev) => ({ ...prev, ...state }));
189
- }
190
- });
191
- }
192
- });
193
-
194
- // src/stores/game.ts
195
- var createGameSlice;
196
- var init_game = __esm({
197
- "src/stores/game.ts"() {
198
- createGameSlice = (set) => ({
199
- setGameId: (id) => {
200
- set({ gameId: id });
201
- }
202
- });
203
- }
204
- });
205
-
206
- // src/stores/signIn.ts
207
- var createSignInSlice;
208
- var init_signIn = __esm({
209
- "src/stores/signIn.ts"() {
210
- createSignInSlice = (set) => ({
211
- unregistered: false,
212
- setUnregistered() {
213
- set({ unregistered: true });
214
- }
215
- });
216
- }
217
- });
218
- var createTokenSlice;
219
- var init_token = __esm({
220
- "src/stores/token.ts"() {
221
- createTokenSlice = (set, get2) => ({
222
- getUser: () => {
223
- const token = get2().token;
224
- if (token) {
225
- try {
226
- return jwtDecode(token);
227
- } catch {
228
- return null;
229
- }
230
- }
231
- return null;
232
- },
233
- setToken: (token) => set({ token })
234
- });
235
- }
236
- });
237
- var createToolkitsStore;
238
- var init_stores = __esm({
239
- "src/stores/index.ts"() {
240
- init_utils();
241
- init_context();
242
- init_game();
243
- init_signIn();
244
- init_token();
245
- createToolkitsStore = (initProps) => {
246
- return createStore()(
247
- persist(
248
- (...args) => {
249
- const [, get2, store] = args;
250
- const clearToken = () => {
251
- get2().setToken("");
252
- store.persist.clearStorage();
253
- };
254
- return {
255
- ...createTokenSlice(...args),
256
- ...createGameSlice(...args),
257
- ...createSignInSlice(...args),
258
- ...createContextSlice(...args),
259
- clearToken,
260
- ...initProps
261
- };
262
- },
263
- {
264
- name: "toolkits",
265
- storage: createJSONStorage(() => mixedStorage),
266
- partialize: (state) => ({
267
- token: state.token,
268
- gameId: state.gameId,
269
- collapsed: state.collapsed
270
- })
271
- }
272
- )
273
- );
274
- };
275
- }
276
- });
277
- function useToolkitsStore(selector) {
278
- const store = useContext(ToolkitsContext);
279
- if (!store) throw new Error("Missing ToolkitsProvider in the tree");
280
- return useStore(store, selector || ((state) => state));
281
- }
282
- var ToolkitsContext, ToolkitsProvider, withContext, ToolkitsProvider_default;
283
- var init_ToolkitsProvider = __esm({
284
- "src/components/toolkitsProvider/ToolkitsProvider.tsx"() {
285
- init_stores();
286
- ToolkitsContext = createContext(null);
287
- ToolkitsProvider = (props) => {
288
- const { children, ...restProps } = props;
289
- const storeRef = useRef();
290
- const parentState = useContext(ToolkitsContext)?.getState();
291
- if (!storeRef.current) {
292
- storeRef.current = createToolkitsStore({ ...parentState, ...restProps });
293
- }
294
- if (!storeRef.current.getState().signInPath) {
295
- throw new Error('ToolkitsProvider: \u8BF7\u914D\u7F6E "signInPath"');
296
- }
297
- return /* @__PURE__ */ jsx(ToolkitsContext.Provider, { value: storeRef.current, children: /* @__PURE__ */ jsx(App, { children }) });
298
- };
299
- withContext = (Component, providerProps) => {
300
- const WrappedComponent = (props) => {
301
- return /* @__PURE__ */ jsx(ToolkitsProvider, { ...providerProps, children: /* @__PURE__ */ jsx(Component, { ...props }) });
302
- };
303
- WrappedComponent.displayName = `withContext(${Component.displayName || Component.name || "Component"})`;
304
- return WrappedComponent;
305
- };
306
- if (process.env.NODE_ENV !== "production") {
307
- ToolkitsProvider.displayName = "ToolkitsProvider";
308
- }
309
- ToolkitsProvider_default = ToolkitsProvider;
310
- }
311
- });
312
-
313
- // src/components/toolkitsProvider/index.ts
314
- var init_toolkitsProvider = __esm({
315
- "src/components/toolkitsProvider/index.ts"() {
316
- init_ToolkitsProvider();
317
- }
318
- });
319
- function useTranslation() {
320
- const locale2 = useToolkitsStore((state) => state.locale);
321
- const t = useMemo(
322
- () => (key, data) => has(locale2, key) ? template(get(locale2, key))(data) : key,
323
- [locale2]
324
- );
325
- return { t };
326
- }
327
- var init_hooks = __esm({
328
- "src/components/locale/hooks.ts"() {
329
- init_toolkitsProvider();
330
- }
331
- });
332
-
333
- // src/components/locale/index.ts
334
- var init_locale = __esm({
335
- "src/components/locale/index.ts"() {
336
- init_hooks();
337
- }
338
- });
339
- var FilterFormWrapper, FilterFormWrapper_default;
340
- var init_FilterFormWrapper = __esm({
341
- "src/components/filterFormWrapper/FilterFormWrapper.tsx"() {
342
- init_locale();
343
- FilterFormWrapper = (props) => {
344
- const { extras, isConfirming, onConfirm, onReset, children, buttonsAlign = "left", showReset } = props;
345
- const { t } = useTranslation();
346
- const {
347
- token: { colorFillAlter, lineWidth, lineType, colorBorder, borderRadiusLG }
348
- } = theme.useToken();
349
- const style = {
350
- maxWidth: "none",
351
- background: colorFillAlter,
352
- borderWidth: lineWidth,
353
- borderStyle: lineType,
354
- borderColor: colorBorder,
355
- borderRadius: borderRadiusLG,
356
- padding: 24,
357
- marginBottom: 24
358
- };
359
- return /* @__PURE__ */ jsx("div", { style, children: /* @__PURE__ */ jsxs("div", { className: `flex ${buttonsAlign === "bottom" ? "flex-col" : "flex-row"}`, children: [
360
- /* @__PURE__ */ jsx("div", { className: `${buttonsAlign === "left" ? "flex-grow-0" : "flex-1"}`, children }),
361
- /* @__PURE__ */ jsx("div", { className: `${buttonsAlign === "bottom" ? "text-end" : "text-start"} ml-4`, children: /* @__PURE__ */ jsxs(Space, { children: [
362
- /* @__PURE__ */ jsx(Button, { type: "primary", loading: isConfirming, onClick: onConfirm, children: t("FilterFormWrapper.confirmText") }),
363
- extras?.map((item) => /* @__PURE__ */ jsx(Fragment$1, { children: item.children }, item.key)),
364
- showReset && /* @__PURE__ */ jsx(Button, { onClick: onReset, children: t("FilterFormWrapper.resetText") })
365
- ] }) })
366
- ] }) });
367
- };
368
- FilterFormWrapper_default = FilterFormWrapper;
369
- }
370
- });
371
-
372
- // src/components/filterFormWrapper/index.ts
373
- var init_filterFormWrapper = __esm({
374
- "src/components/filterFormWrapper/index.ts"() {
375
- init_FilterFormWrapper();
376
- }
377
- });
378
- function renderToString(node) {
379
- const container = document.createElement("div");
380
- const root = createRoot(container);
381
- return new Promise((resolve) => {
382
- setTimeout(() => {
383
- flushSync(() => {
384
- root.render(node);
385
- });
386
- resolve(container.innerHTML);
387
- });
388
- });
389
- }
390
- var splitByTags, Highlight, Highlight_default;
391
- var init_Highlight = __esm({
392
- "src/components/highlight/Highlight.tsx"() {
393
- splitByTags = (str) => {
394
- const regex = /(<[^>]*>)/;
395
- return str.split(regex).filter((part) => part !== "");
396
- };
397
- Highlight = (props) => {
398
- const { texts, children } = props;
399
- const [htmlString, setHtmlString] = useState("");
400
- useEffect(() => {
401
- renderToString(children).then((str) => {
402
- const result = splitByTags(str);
403
- for (const text of texts) {
404
- for (let index = 0; index < result.length; index++) {
405
- result[index] = result[index].replace(String(text), `<span style='color: #DC143C;'>${text}</span>`);
406
- }
407
- }
408
- setHtmlString(result.join(""));
409
- });
410
- }, [children, texts]);
411
- return /* @__PURE__ */ jsx("div", { dangerouslySetInnerHTML: { __html: htmlString } });
412
- };
413
- Highlight_default = Highlight;
414
- }
415
- });
416
-
417
- // src/components/highlight/index.ts
418
- var init_highlight = __esm({
419
- "src/components/highlight/index.ts"() {
420
- init_Highlight();
421
- }
422
- });
423
- var SUCCESS_RESPONSE_CODES, HTTP_STATUS, REQUEST_TIMEOUT, extractErrorMessage, isStatusCodeSuccess, isSuccessResponse, processResponseByType, createResponseHandler, useKy;
424
- var init_use_ky = __esm({
425
- "src/libs/use-ky.ts"() {
426
- init_toolkitsProvider();
427
- init_constants();
428
- SUCCESS_RESPONSE_CODES = [0, 1, 200];
429
- HTTP_STATUS = {
430
- OK: 200,
431
- UNAUTHORIZED: 401,
432
- FORBIDDEN: 403,
433
- UNREGISTERED: 412
434
- };
435
- REQUEST_TIMEOUT = 3e4;
436
- extractErrorMessage = (data) => {
437
- if (!data || typeof data !== "object") {
438
- return "Unknown error";
439
- }
440
- return data.msg || data.message || data.error || "Unknown error";
441
- };
442
- isStatusCodeSuccess = (config) => {
443
- const { value, allowedCodes } = config;
444
- if (value === void 0 || value === null) {
445
- return false;
446
- }
447
- if (typeof value !== "number") {
448
- return false;
449
- }
450
- return allowedCodes.includes(value);
451
- };
452
- isSuccessResponse = (data, status) => {
453
- if (status >= HTTP_STATUS.OK && status < 300) {
454
- return true;
455
- }
456
- if (!data || typeof data !== "object") {
457
- return false;
458
- }
459
- const statusChecks = [
460
- { field: "code", value: data.code, allowedCodes: SUCCESS_RESPONSE_CODES },
461
- { field: "status", value: data.status, allowedCodes: SUCCESS_RESPONSE_CODES },
462
- { field: "errno", value: data.errno, allowedCodes: SUCCESS_RESPONSE_CODES }
463
- ];
464
- return statusChecks.some(isStatusCodeSuccess);
465
- };
466
- processResponseByType = async (response, responseType) => {
467
- switch (responseType) {
468
- case "blob" /* BLOB */:
469
- return response.blob();
470
- case "text" /* TEXT */:
471
- return response.text();
472
- case "arrayBuffer" /* ARRAY_BUFFER */:
473
- return response.arrayBuffer();
474
- case "formData" /* FORM_DATA */:
475
- return response.formData();
476
- case "json" /* JSON */:
477
- default:
478
- return response.json();
479
- }
480
- };
481
- createResponseHandler = (responseType) => {
482
- return async (_request, _options, response) => {
483
- const contentType = response.headers.get("content-type") || "";
484
- if (responseType === "blob" /* BLOB */ || responseType === "arrayBuffer" /* ARRAY_BUFFER */) {
485
- return response;
486
- }
487
- if (responseType === "text" /* TEXT */) {
488
- return response;
489
- }
490
- if (responseType === "formData" /* FORM_DATA */) {
491
- return response;
492
- }
493
- if (contentType.includes("application/json") || responseType === "json" /* JSON */) {
494
- const data = await response.json();
495
- if (isSuccessResponse(data, response.status)) {
496
- const responseData = data.data !== void 0 ? data.data : data;
497
- return new Response(JSON.stringify(responseData), {
498
- status: response.status,
499
- statusText: response.statusText,
500
- headers: response.headers
501
- });
502
- }
503
- const errorMessage = extractErrorMessage(data);
504
- notification.error({
505
- message: "Request failed",
506
- description: errorMessage
507
- });
508
- const error = new Error(errorMessage);
509
- error.response = response;
510
- error.data = data;
511
- throw error;
512
- }
513
- return response;
514
- };
515
- };
516
- useKy = (baseURL) => {
517
- const toolkitsStore = useToolkitsStore();
518
- const { token, isGlobal, gameId, permissionVersion, signInPath, clearToken, setUnregistered } = toolkitsStore;
519
- const handleUnauthorized = useCallback(() => {
520
- clearToken();
521
- if (signInPath) {
522
- window.location.href = signInPath;
523
- }
524
- }, [clearToken, signInPath]);
525
- const handleUnregistered = useCallback(() => {
526
- clearToken();
527
- setUnregistered();
528
- if (signInPath) {
529
- window.location.href = signInPath;
530
- }
531
- }, [clearToken, setUnregistered, signInPath]);
532
- const handleForbidden = useCallback(() => {
533
- notification.error({
534
- message: "\u8BBF\u95EE\u88AB\u7981\u6B62",
535
- description: "\u60A8\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6B64\u8D44\u6E90\u3002"
536
- });
537
- }, []);
538
- const handleHttpStatusError = useCallback(
539
- (status, data) => {
540
- switch (status) {
541
- case HTTP_STATUS.UNAUTHORIZED:
542
- handleUnauthorized();
543
- break;
544
- case HTTP_STATUS.UNREGISTERED:
545
- handleUnregistered();
546
- break;
547
- case HTTP_STATUS.FORBIDDEN:
548
- handleForbidden();
549
- break;
550
- default: {
551
- const errorMessage = extractErrorMessage(data) || `HTTP ${status} Error`;
552
- notification.error({
553
- message: "Request failed",
554
- description: errorMessage
555
- });
556
- break;
557
- }
558
- }
559
- },
560
- [handleUnauthorized, handleUnregistered, handleForbidden]
561
- );
562
- const instance = useMemo(() => {
563
- const kyInstance = ky.create({
564
- prefixUrl: baseURL,
565
- timeout: REQUEST_TIMEOUT,
566
- headers: {
567
- Accept: "application/json",
568
- "Content-Type": "application/json"
569
- },
570
- hooks: {
571
- beforeRequest: [
572
- (request2) => {
573
- if (token) {
574
- request2.headers.set("Authorization", `Bearer ${token}`);
575
- }
576
- if (!request2.headers.has(APP_ID_HEADER) && permissionVersion !== "v1" /* V1 */) {
577
- if (isGlobal || !gameId) {
578
- request2.headers.set(APP_ID_HEADER, "global");
579
- } else {
580
- request2.headers.set(APP_ID_HEADER, encodeURIComponent(String(gameId)));
581
- }
582
- }
583
- }
584
- ],
585
- afterResponse: [
586
- async (_request, _options, response) => {
587
- const contentType = response.headers.get("content-type") || "";
588
- if (contentType.includes("application/octet-stream")) {
589
- return response;
590
- }
591
- if (contentType.includes("application/json")) {
592
- const data = await response.json();
593
- if (isSuccessResponse(data, response.status)) {
594
- return new Response(JSON.stringify(data), {
595
- status: response.status,
596
- statusText: response.statusText,
597
- headers: response.headers
598
- });
599
- }
600
- const errorMessage = extractErrorMessage(data);
601
- notification.error({
602
- message: "Request failed",
603
- description: errorMessage
604
- });
605
- const error = new Error(errorMessage);
606
- error.response = response;
607
- error.data = data;
608
- throw error;
609
- }
610
- return response;
611
- }
612
- ],
613
- beforeError: [
614
- async (error) => {
615
- const { response } = error;
616
- if (response) {
617
- const status = response.status;
618
- let data;
619
- try {
620
- const contentType = response.headers.get("content-type") || "";
621
- if (contentType.includes("application/json")) {
622
- data = await response.json();
623
- }
624
- } catch {
625
- }
626
- handleHttpStatusError(status, data);
627
- } else {
628
- notification.error({
629
- message: "Network Error",
630
- description: error.message || "Network request failed"
631
- });
632
- }
633
- return error;
634
- }
635
- ]
636
- }
637
- });
638
- return kyInstance;
639
- }, [baseURL, token, isGlobal, gameId, permissionVersion, handleHttpStatusError]);
640
- const makeRequest = useCallback(
641
- async (method, url4, data, requestOptions) => {
642
- const { responseType, ...kyOptions } = requestOptions || {};
643
- const finalOptions = {
644
- ...kyOptions,
645
- hooks: {
646
- ...kyOptions.hooks,
647
- afterResponse: [...kyOptions.hooks?.afterResponse || [], createResponseHandler(responseType)]
648
- }
649
- };
650
- let response;
651
- if (data) {
652
- response = await instance(url4, { method, json: data, ...finalOptions });
653
- } else {
654
- response = await instance(url4, { method, ...finalOptions });
655
- }
656
- return processResponseByType(response, responseType);
657
- },
658
- [instance]
659
- );
660
- const get2 = useCallback(
661
- (url4, options2) => {
662
- return makeRequest("GET", url4, void 0, options2);
663
- },
664
- [makeRequest]
665
- );
666
- const post = useCallback(
667
- (url4, data, options2) => {
668
- return makeRequest("POST", url4, data, options2);
669
- },
670
- [makeRequest]
671
- );
672
- const put = useCallback(
673
- (url4, data, options2) => {
674
- return makeRequest("PUT", url4, data, options2);
675
- },
676
- [makeRequest]
677
- );
678
- const del = useCallback(
679
- (url4, options2) => {
680
- return makeRequest("DELETE", url4, void 0, options2);
681
- },
682
- [makeRequest]
683
- );
684
- const patch = useCallback(
685
- (url4, data, options2) => {
686
- return makeRequest("PATCH", url4, data, options2);
687
- },
688
- [makeRequest]
689
- );
690
- const options = useCallback(
691
- (url4, requestOptions) => {
692
- return makeRequest("OPTIONS", url4, void 0, requestOptions);
693
- },
694
- [makeRequest]
695
- );
696
- const head = useCallback(
697
- (url4, requestOptions) => {
698
- return makeRequest("HEAD", url4, void 0, requestOptions);
699
- },
700
- [makeRequest]
701
- );
702
- const request = useCallback(
703
- (requestOptions) => {
704
- const { url: url4, ...requestOpts } = requestOptions;
705
- return makeRequest(requestOpts.method || "GET", url4, void 0, requestOpts);
706
- },
707
- [makeRequest]
708
- );
709
- return useMemo(
710
- () => ({
711
- get: get2,
712
- post,
713
- put,
714
- delete: del,
715
- patch,
716
- options,
717
- head,
718
- request,
719
- instance
720
- }),
721
- [get2, post, put, del, patch, options, head, request, instance]
722
- );
723
- };
724
- }
725
- });
726
-
727
- // src/libs/index.ts
728
- var init_libs = __esm({
729
- "src/libs/index.ts"() {
730
- init_use_ky();
731
- }
732
- });
733
- function usePermission(code, config) {
734
- const ky2 = useKy();
735
- const { permissionVersion } = useToolkitsStore();
736
- const url4 = permissionVersion !== "v1" /* V1 */ ? "/api/usystem/user/checkV2" : "/api/usystem/user/check";
737
- const permissionCodes = typeof code !== "undefined" ? typeof code === "string" ? [code] : code : [];
738
- const { data, ...rest } = useSWR4(
739
- permissionCodes.length > 0 ? [
740
- url4,
741
- {
742
- json: { permissions: permissionCodes },
743
- ...config
744
- }
745
- ] : null,
746
- (args) => ky2.post(...args)
747
- );
748
- let newData = true;
749
- if (typeof code === "string") {
750
- newData = data?.has_all ? true : data?.[code] ?? false;
751
- } else if (Array.isArray(code) && code.length > 0) {
752
- newData = permissionCodes.reduce((acc, curr) => {
753
- acc[curr] = data?.has_all ? true : data?.[curr] ?? false;
754
- return acc;
755
- }, {});
756
- }
757
- return {
758
- ...rest,
759
- data: newData
760
- };
761
- }
762
- function useMenuList() {
763
- const { signInPath, gameId } = useToolkitsStore();
764
- const ky2 = useKy();
765
- return useSWR4(
766
- window.location.pathname !== signInPath ? {
767
- url: "/api/usystem/menu/navbar",
768
- headers: { [APP_ID_HEADER]: gameId ? encodeURIComponent(String(gameId)) : "global" }
769
- } : null,
770
- ({ url: url4, headers }) => ky2.get(url4, { headers })
771
- );
772
- }
773
- var init_services = __esm({
774
- "src/services/index.ts"() {
775
- init_toolkitsProvider();
776
- init_constants();
777
- init_libs();
778
- }
779
- });
780
- var useGames, useFindGame;
781
- var init_hooks2 = __esm({
782
- "src/components/layout/hooks.ts"() {
783
- init_toolkitsProvider();
784
- init_constants();
785
- init_libs();
786
- useGames = () => {
787
- const { gameApiV2, permissionVersion } = useToolkitsStore((s) => s);
788
- const ky2 = useKy();
789
- const key = permissionVersion !== "v1" /* V1 */ ? gameApiV2 ? "/api/game/list" : "/api/usystem/game/all" : null;
790
- return useSWRImmutable(key, async (url4) => {
791
- const requestConfig = {
792
- headers: {
793
- [APP_ID_HEADER]: "global"
794
- }
795
- };
796
- if (gameApiV2) {
797
- const response2 = await ky2.get(url4, requestConfig);
798
- return response2?.list ?? [];
799
- }
800
- const response = await ky2.get(url4, requestConfig);
801
- return response ?? [];
802
- });
803
- };
804
- useFindGame = (id) => {
805
- const { data } = useGames();
806
- const { gameApiV2 } = useToolkitsStore((s) => s);
807
- return data?.find((item) => String(gameApiV2 ? item.game_id : item.id) === String(id));
808
- };
809
- }
810
- });
811
- var Logo, Logo_default;
812
- var init_Logo = __esm({
813
- "src/components/logo/Logo.tsx"() {
814
- Logo = (props) => {
815
- return /* @__PURE__ */ jsx("img", { src: logoUrl, alt: "logo", ...props });
816
- };
817
- Logo_default = Logo;
818
- }
819
- });
820
-
821
- // src/components/logo/index.ts
822
- var init_logo = __esm({
823
- "src/components/logo/index.ts"() {
824
- init_Logo();
825
- }
826
- });
827
- var useNavStore;
828
- var init_stores2 = __esm({
829
- "src/components/navMenu/stores.ts"() {
830
- useNavStore = create()(
831
- persist(
832
- (set) => ({
833
- openKeys: [],
834
- setOpenKeys: (keys) => set({ openKeys: keys }),
835
- selectedKeys: [],
836
- setSelectedKeys: (keys) => set({ selectedKeys: keys })
837
- }),
838
- {
839
- name: "nav",
840
- storage: createJSONStorage(() => localStorage),
841
- partialize: (state) => ({
842
- openKeys: state.openKeys,
843
- selectedKeys: state.selectedKeys
844
- })
845
- }
846
- )
847
- );
848
- }
849
- });
850
- function transformItems(items) {
851
- const result = [];
852
- if (items) {
853
- for (let i = 0; i < items.length; i++) {
854
- if (items[i] === null || items[i].type === "divider") {
855
- result[i] = items[i];
856
- } else if (items[i].children) {
857
- const { children, ...rest } = items[i];
858
- result[i] = {
859
- ...rest,
860
- children: transformItems(children)
861
- };
862
- } else {
863
- const { route, label, ...rest } = items[i];
864
- const labelNode = route ? /* @__PURE__ */ jsx(Link, { to: route, children: label }) : label;
865
- result[i] = {
866
- ...rest,
867
- label: labelNode
868
- };
869
- }
870
- }
871
- }
872
- return result;
873
- }
874
- function flatItems(items, result = [], keypath = []) {
875
- for (const item of items) {
876
- const children = item?.children;
877
- if (Array.isArray(children)) {
878
- const keys = item.type !== "group" && item.key ? [...keypath, item.key] : keypath;
879
- flatItems(children, result, keys);
880
- } else if (item) {
881
- result.push(Object.assign(item, { keypath }));
882
- }
883
- }
884
- return result;
885
- }
886
- var init_utils2 = __esm({
887
- "src/components/navMenu/utils.tsx"() {
888
- }
889
- });
890
- var NavMenu, NavMenu_default;
891
- var init_NavMenu = __esm({
892
- "src/components/navMenu/NavMenu.tsx"() {
893
- init_stores2();
894
- init_utils2();
895
- NavMenu = memo(function NavMenu2(props) {
896
- const { items, theme: theme4, loading } = props;
897
- const location = useLocation();
898
- const flattenItems = useMemo(() => flatItems(items ?? []), [items]);
899
- const internalItems = useMemo(() => transformItems(items ?? []), [items]);
900
- const { openKeys, selectedKeys, setOpenKeys, setSelectedKeys } = useNavStore();
901
- const onOpenChange = useCallback(
902
- (keys) => {
903
- const lastOpenKey = keys?.find((key) => openKeys?.indexOf(key) === -1);
904
- const match = flattenItems.find((item) => lastOpenKey === item.key);
905
- setOpenKeys(match?.keypath ?? [lastOpenKey]);
906
- },
907
- [flattenItems, openKeys, setOpenKeys]
908
- );
909
- useEffect(() => {
910
- const match = flattenItems.find((item) => location.pathname === item.route);
911
- if (match) {
912
- const key = match.key;
913
- const keypath = match.keypath;
914
- setSelectedKeys([key]);
915
- setOpenKeys(keypath);
916
- }
917
- }, [flattenItems, location]);
918
- if (loading) {
919
- return /* @__PURE__ */ jsx("div", { className: "flex justify-center items-center", style: { height: "calc(100vh - 64px)" }, children: /* @__PURE__ */ jsx(Spin, {}) });
920
- }
921
- return /* @__PURE__ */ jsx(
922
- Menu,
923
- {
924
- theme: theme4,
925
- style: { borderRight: "none" },
926
- items: internalItems,
927
- mode: "inline",
928
- openKeys,
929
- selectedKeys,
930
- onOpenChange
931
- }
932
- );
933
- });
934
- if (process.env.NODE_ENV === "development") {
935
- NavMenu.displayName = "NavMenu";
936
- }
937
- NavMenu_default = NavMenu;
938
- }
939
- });
940
-
941
- // src/components/navMenu/index.ts
942
- var init_navMenu = __esm({
943
- "src/components/navMenu/index.ts"() {
944
- init_NavMenu();
945
- }
946
- });
947
- var Spin3, RequireGame, RequireGame_default;
948
- var init_RequireGame = __esm({
949
- "src/components/requireGame/RequireGame.tsx"() {
950
- init_layout();
951
- init_locale();
952
- init_toolkitsProvider();
953
- ({ Spin: Spin3 } = Antd2);
954
- RequireGame = ({ children }) => {
955
- const { permissionVersion, gameId, isGlobal } = useToolkitsStore((s) => s);
956
- const { isLoading } = useGames();
957
- const { t } = useTranslation();
958
- if (isLoading) {
959
- return /* @__PURE__ */ jsx(
960
- "div",
961
- {
962
- style: {
963
- display: "flex",
964
- justifyContent: "center",
965
- alignItems: "center",
966
- height: 400
967
- },
968
- children: /* @__PURE__ */ jsx(Spin3, {})
969
- }
970
- );
971
- }
972
- if (permissionVersion === "v1" /* V1 */ || isGlobal) {
973
- return children;
974
- }
975
- if (!gameId) {
976
- return /* @__PURE__ */ jsx(Empty, { image: Empty.PRESENTED_IMAGE_SIMPLE, description: t("RequireGame.description") });
977
- }
978
- return /* @__PURE__ */ jsx(Fragment$1, { children }, gameId);
979
- };
980
- RequireGame_default = RequireGame;
981
- }
982
- });
983
-
984
- // src/components/requireGame/index.ts
985
- var init_requireGame = __esm({
986
- "src/components/requireGame/index.ts"() {
987
- init_RequireGame();
988
- }
989
- });
990
- var UserWidget, UserWidget_default;
991
- var init_UserWidget = __esm({
992
- "src/components/userWidget/UserWidget.tsx"() {
993
- init_locale();
994
- init_toolkitsProvider();
995
- UserWidget = () => {
996
- const { t } = useTranslation();
997
- const navigate = useNavigate();
998
- const { clearToken, getUser, signInPath } = useToolkitsStore((s) => s);
999
- const user = getUser();
1000
- const handleSignOut = () => {
1001
- clearToken();
1002
- navigate(signInPath);
1003
- };
1004
- const handleKeyDown = (e) => {
1005
- if (e.key === "Enter" || e.key === " ") {
1006
- e.preventDefault();
1007
- handleSignOut();
1008
- }
1009
- };
1010
- const handleDropdownKeyDown = (e) => {
1011
- if (e.key === "Enter" || e.key === " ") {
1012
- e.preventDefault();
1013
- }
1014
- };
1015
- const items = [
1016
- {
1017
- key: "1",
1018
- icon: /* @__PURE__ */ jsx(LogoutOutlined, {}),
1019
- label: /* @__PURE__ */ jsx("a", { role: "button", tabIndex: 0, onClick: handleSignOut, onKeyDown: handleKeyDown, children: t("UserWidget.signOutText") })
1020
- }
1021
- ];
1022
- return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
1023
- Dropdown,
1024
- {
1025
- menu: {
1026
- selectable: true,
1027
- items
1028
- },
1029
- placement: "bottomRight",
1030
- children: /* @__PURE__ */ jsx(
1031
- "a",
1032
- {
1033
- role: "button",
1034
- tabIndex: 0,
1035
- onClick: (e) => {
1036
- e.preventDefault();
1037
- },
1038
- onKeyDown: handleDropdownKeyDown,
1039
- children: /* @__PURE__ */ jsxs(Space, { align: "center", children: [
1040
- /* @__PURE__ */ jsx("span", { children: user?.authorityId }),
1041
- /* @__PURE__ */ jsx(UserOutlined, { style: { fontSize: "16px" } })
1042
- ] })
1043
- }
1044
- )
1045
- }
1046
- ) });
1047
- };
1048
- UserWidget_default = UserWidget;
1049
- }
1050
- });
1051
-
1052
- // src/components/userWidget/index.ts
1053
- var init_userWidget = __esm({
1054
- "src/components/userWidget/index.ts"() {
1055
- init_UserWidget();
1056
- }
1057
- });
1058
- var Text, GameSelect, GameSelect_default;
1059
- var init_GameSelect = __esm({
1060
- "src/components/layout/GameSelect.tsx"() {
1061
- init_locale();
1062
- init_toolkitsProvider();
1063
- init_hooks2();
1064
- ({ Text } = Typography);
1065
- GameSelect = (props) => {
1066
- const { filter, options } = props;
1067
- const { t } = useTranslation();
1068
- const { gameApiV2, gameId, setGameId } = useToolkitsStore((s) => s);
1069
- const { data, isLoading } = useGames();
1070
- const { cache } = useSWRConfig();
1071
- const filteredData = data?.filter((item) => filter?.(item) ?? true);
1072
- const _options = typeof options === "function" ? options(filteredData) : filteredData?.map((item) => ({
1073
- label: item.name,
1074
- value: gameApiV2 ? item.game_id : item.id
1075
- }));
1076
- const onChange = (value) => {
1077
- clearCache();
1078
- setGameId(value);
1079
- };
1080
- const clearCache = () => {
1081
- for (const key of cache.keys()) {
1082
- if (key !== "/api/game/list" && key !== "/api/usystem/game/all") {
1083
- cache.delete(key);
1084
- }
1085
- }
1086
- };
1087
- useEffect(() => {
1088
- if (data && data.length > 0) {
1089
- const firstId = gameApiV2 ? data[0].game_id : data[0].id;
1090
- if (data.every((item) => String(item.game_id || item.id) !== String(gameId))) {
1091
- setGameId(firstId);
1092
- }
1093
- }
1094
- }, [data]);
1095
- return /* @__PURE__ */ jsxs(Space, { children: [
1096
- /* @__PURE__ */ jsx(Text, { children: t("GameSelect.label") }),
1097
- /* @__PURE__ */ jsx(
1098
- Select,
1099
- {
1100
- showSearch: true,
1101
- optionFilterProp: "label",
1102
- value: gameId,
1103
- placeholder: t("GameSelect.placeholder"),
1104
- loading: isLoading,
1105
- style: { width: "200px" },
1106
- options: _options,
1107
- onChange
1108
- }
1109
- )
1110
- ] });
1111
- };
1112
- GameSelect_default = GameSelect;
1113
- }
1114
- });
1115
- var Spin4, theme3, Header, Sider, Content, Layout2, Layout_default;
1116
- var init_Layout = __esm({
1117
- "src/components/layout/Layout.tsx"() {
1118
- init_logo();
1119
- init_navMenu();
1120
- init_requireGame();
1121
- init_toolkitsProvider();
1122
- init_userWidget();
1123
- init_GameSelect();
1124
- ({ Spin: Spin4, theme: theme3 } = Antd2);
1125
- ({ Header, Sider, Content } = Antd2.Layout);
1126
- Layout2 = (props) => {
1127
- const { collapsible, isMenuLoading, items, headerExtra, children, navWidth, filter, gameSelectOptions } = props;
1128
- const {
1129
- token: { colorBgContainer, colorBorder }
1130
- } = theme3.useToken();
1131
- const {
1132
- permissionVersion,
1133
- title: { text, fontSize },
1134
- navWidth: globalNavWidth,
1135
- collapsible: globalCollapsible,
1136
- mainPagePath,
1137
- collapsed,
1138
- setContext,
1139
- isGlobal
1140
- } = useToolkitsStore();
1141
- const [internalCollapsed, setInternalCollapsed] = useState(collapsed);
1142
- const onCollapse = async () => {
1143
- setInternalCollapsed(!internalCollapsed);
1144
- setContext({ collapsed: !internalCollapsed });
1145
- };
1146
- const internalCollapsible = collapsible ?? globalCollapsible ?? false;
1147
- return /* @__PURE__ */ jsxs(Antd2.Layout, { children: [
1148
- /* @__PURE__ */ jsxs(
1149
- Sider,
1150
- {
1151
- collapsible: internalCollapsible,
1152
- theme: "light",
1153
- trigger: null,
1154
- collapsed: internalCollapsed,
1155
- width: navWidth ?? globalNavWidth,
1156
- style: {
1157
- height: "100vh",
1158
- overflowX: "hidden",
1159
- overflowY: "auto",
1160
- borderRightWidth: 1,
1161
- borderRightStyle: "solid",
1162
- borderRightColor: colorBorder
1163
- },
1164
- children: [
1165
- /* @__PURE__ */ jsx(Link, { to: mainPagePath, children: /* @__PURE__ */ jsxs("div", { className: "flex px-6 py-4 font-bold", children: [
1166
- /* @__PURE__ */ jsx(Logo_default, { width: 32, height: 32 }),
1167
- /* @__PURE__ */ jsx(
1168
- "div",
1169
- {
1170
- className: `h-8 flex items-center ml-2 collapse-text ${internalCollapsed ? "opacity-0" : "animate__fadeIn delay-200"} `,
1171
- style: { fontSize },
1172
- children: text
1173
- }
1174
- )
1175
- ] }) }),
1176
- /* @__PURE__ */ jsx(NavMenu_default, { items, loading: isMenuLoading })
1177
- ]
1178
- }
1179
- ),
1180
- /* @__PURE__ */ jsxs(Antd2.Layout, { children: [
1181
- /* @__PURE__ */ jsx(
1182
- Header,
1183
- {
1184
- style: {
1185
- padding: "0 24px",
1186
- background: colorBgContainer
1187
- },
1188
- children: /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center h-full", children: [
1189
- /* @__PURE__ */ jsxs(Space, { size: "small", split: /* @__PURE__ */ jsx(Divider, { type: "vertical" }), className: "mr-6", children: [
1190
- internalCollapsible && /* @__PURE__ */ jsx(
1191
- Button,
1192
- {
1193
- type: "text",
1194
- icon: internalCollapsed ? /* @__PURE__ */ jsx(MenuUnfoldOutlined, {}) : /* @__PURE__ */ jsx(MenuFoldOutlined, {}),
1195
- style: { fontSize: "16px" },
1196
- onClick: onCollapse
1197
- }
1198
- ),
1199
- permissionVersion !== "v1" /* V1 */ && !isGlobal && /* @__PURE__ */ jsx(GameSelect_default, { filter, options: gameSelectOptions }),
1200
- headerExtra?.left?.map((extra) => /* @__PURE__ */ jsx("span", { children: extra.children }, extra.key))
1201
- ] }),
1202
- /* @__PURE__ */ jsxs(Space, { size: "small", split: /* @__PURE__ */ jsx(Divider, { type: "vertical" }), children: [
1203
- headerExtra?.right?.map((extra) => /* @__PURE__ */ jsx("span", { children: extra.children }, extra.key)),
1204
- /* @__PURE__ */ jsx(UserWidget_default, {})
1205
- ] })
1206
- ] })
1207
- }
1208
- ),
1209
- /* @__PURE__ */ jsx(
1210
- Content,
1211
- {
1212
- style: {
1213
- overflow: "auto",
1214
- padding: "24px 16px",
1215
- maxHeight: "calc(100vh - 64px)"
1216
- },
1217
- children: /* @__PURE__ */ jsx(
1218
- Suspense,
1219
- {
1220
- fallback: /* @__PURE__ */ jsx(
1221
- Spin4,
1222
- {
1223
- style: {
1224
- display: "flex",
1225
- justifyContent: "center",
1226
- alignItems: "center",
1227
- height: "200px"
1228
- }
1229
- }
1230
- ),
1231
- children: /* @__PURE__ */ jsx(RequireGame_default, { children })
1232
- }
1233
- )
1234
- }
1235
- )
1236
- ] })
1237
- ] });
1238
- };
1239
- Layout_default = Layout2;
1240
- }
1241
- });
1242
-
1243
- // src/components/layout/types.ts
1244
- var init_types = __esm({
1245
- "src/components/layout/types.ts"() {
1246
- }
1247
- });
1248
-
1249
- // src/components/layout/index.ts
1250
- var init_layout = __esm({
1251
- "src/components/layout/index.ts"() {
1252
- init_hooks2();
1253
- init_Layout();
1254
- init_types();
1255
- }
1256
- });
1257
- var useModalStore;
1258
- var init_stores3 = __esm({
1259
- "src/components/modal/stores.ts"() {
1260
- useModalStore = create((set, get2) => ({
1261
- open: /* @__PURE__ */ new Map(),
1262
- isOpen: (uuid) => get2().open.get(uuid) ?? false,
1263
- show(uuid) {
1264
- set({ open: new Map(get2().open).set(uuid, true) });
1265
- },
1266
- hide(uuid) {
1267
- set({ open: new Map(get2().open).set(uuid, false) });
1268
- },
1269
- hideAll() {
1270
- set({ open: /* @__PURE__ */ new Map() });
1271
- }
1272
- }));
1273
- }
1274
- });
1275
- function useModal(props) {
1276
- const { content, onConfirm, afterOpen, ...modalProps } = props;
1277
- const _id = useMemo(() => generateId(), []);
1278
- const { show, hide, isOpen } = useModalStore();
1279
- const open = isOpen(_id);
1280
- const [confirmLoading, setConfirmLoading] = useState(false);
1281
- const isRenderFunction = typeof content === "function";
1282
- const _show = useCallback(async () => {
1283
- show(_id);
1284
- await afterOpen?.();
1285
- }, [_id, show, afterOpen]);
1286
- const _hide = useCallback(() => {
1287
- hide(_id);
1288
- }, [_id, hide]);
1289
- const onCancel = useCallback(() => {
1290
- _hide();
1291
- }, [_hide]);
1292
- const onOk = useCallback(async () => {
1293
- try {
1294
- setConfirmLoading(true);
1295
- await onConfirm?.();
1296
- _hide();
1297
- } catch (error) {
1298
- console.error("Modal confirm error:", error);
1299
- throw error;
1300
- } finally {
1301
- setConfirmLoading(false);
1302
- }
1303
- }, [onConfirm, _hide]);
1304
- const internalModal = /* @__PURE__ */ jsx(Modal, { ...modalProps, open, confirmLoading, onOk, onCancel, children: isRenderFunction ? content({ hide: _hide }) : content });
1305
- return {
1306
- id: _id,
1307
- show: _show,
1308
- hide: _hide,
1309
- modal: internalModal
1310
- };
1311
- }
1312
- var init_modal = __esm({
1313
- "src/components/modal/modal.tsx"() {
1314
- init_utils();
1315
- init_stores3();
1316
- }
1317
- });
1318
- function useFormModal(props) {
1319
- const { content, form, formProps, onConfirm, onSuccess, ...modalProps } = props;
1320
- const [internalExtraValues, setInternalExtraValues] = useState({});
1321
- let [internalForm] = Form.useForm();
1322
- internalForm = form || internalForm;
1323
- const isRenderFunction = typeof content === "function";
1324
- const afterClose = useCallback(() => {
1325
- internalForm.resetFields();
1326
- }, [internalForm]);
1327
- const { id, show, hide, modal } = useModal({
1328
- ...modalProps,
1329
- content: (operation) => /* @__PURE__ */ jsx(Form, { ...formProps, form: internalForm, children: isRenderFunction ? content(internalExtraValues, operation) : content }),
1330
- onConfirm: async () => {
1331
- try {
1332
- const values = await internalForm.validateFields();
1333
- await onConfirm?.(values, internalExtraValues);
1334
- onSuccess?.();
1335
- hide();
1336
- } catch (error) {
1337
- console.error("Form validation or submission error:", error);
1338
- throw error;
1339
- }
1340
- },
1341
- afterClose
1342
- });
1343
- const onShow = useCallback(
1344
- (options) => {
1345
- const { initialValues, extraValues } = options || {};
1346
- if (extraValues) {
1347
- setInternalExtraValues(extraValues);
1348
- }
1349
- if (initialValues) {
1350
- internalForm.setFieldsValue(initialValues);
1351
- }
1352
- show();
1353
- },
1354
- [internalForm, show]
1355
- );
1356
- return {
1357
- id,
1358
- show: onShow,
1359
- hide,
1360
- modal
1361
- };
1362
- }
1363
- var init_formModal = __esm({
1364
- "src/components/modal/formModal.tsx"() {
1365
- init_modal();
1366
- }
1367
- });
1368
-
1369
- // src/components/modal/index.ts
1370
- var init_modal2 = __esm({
1371
- "src/components/modal/index.ts"() {
1372
- init_formModal();
1373
- init_modal();
1374
- init_stores3();
1375
- }
1376
- });
1377
- var PermissionButton, PermissionButton_default;
1378
- var init_PermissionButton = __esm({
1379
- "src/components/permissionButton/PermissionButton.tsx"() {
1380
- init_locale();
1381
- init_services();
1382
- PermissionButton = (props) => {
1383
- const { children, code, showLoading, disabled, config, ...restProps } = props;
1384
- const codes = code ? Array.isArray(code) ? code : [code] : [];
1385
- const { data, isLoading } = usePermission(codes, config);
1386
- const { t } = useTranslation();
1387
- if (isLoading) {
1388
- return /* @__PURE__ */ jsx(Button, { loading: showLoading, disabled: !showLoading, ...restProps, children });
1389
- }
1390
- if (typeof data === "boolean" || data && Object.values(data).some(Boolean)) {
1391
- return /* @__PURE__ */ jsx(Button, { disabled, ...restProps, children });
1392
- }
1393
- return /* @__PURE__ */ jsx(Tooltip, { defaultOpen: false, title: t("global.noEntitlement"), children: /* @__PURE__ */ jsx(Button, { disabled: true, ...restProps, children }) });
1394
- };
1395
- PermissionButton_default = PermissionButton;
1396
- }
1397
- });
1398
-
1399
- // src/components/permissionButton/index.ts
1400
- var init_permissionButton = __esm({
1401
- "src/components/permissionButton/index.ts"() {
1402
- init_PermissionButton();
1403
- }
1404
- });
1405
- var useQueryListStore;
1406
- var init_stores4 = __esm({
1407
- "src/components/queryList/stores.ts"() {
1408
- useQueryListStore = create((set, get2) => ({
1409
- keyMap: /* @__PURE__ */ new Map(),
1410
- payloadMap: /* @__PURE__ */ new Map(),
1411
- getPayload(key) {
1412
- return get2().payloadMap.get(key) ?? { page: 1 };
1413
- },
1414
- setPayload(key, payload) {
1415
- set((state) => ({
1416
- payloadMap: new Map(state.payloadMap).set(key, payload)
1417
- }));
1418
- },
1419
- refetch(key, payload) {
1420
- const prevPayload = get2().getPayload(key);
1421
- const nextPayload = { ...prevPayload, ...payload };
1422
- if (isEqual(prevPayload, nextPayload)) {
1423
- get2().mutate(key, void 0);
1424
- } else {
1425
- get2().setPayload(key, nextPayload);
1426
- }
1427
- },
1428
- mutate(key, data, opts) {
1429
- const swrKey = get2().keyMap.get(key);
1430
- return mutate(swrKey, data, opts);
1431
- }
1432
- }));
1433
- }
1434
- });
1435
- var QueryListAction, InternalQueryList, QueryList, QueryList_default;
1436
- var init_QueryList = __esm({
1437
- "src/components/queryList/QueryList.tsx"() {
1438
- init_filterFormWrapper();
1439
- init_locale();
1440
- init_libs();
1441
- init_services();
1442
- init_stores4();
1443
- QueryListAction = /* @__PURE__ */ ((QueryListAction2) => {
1444
- QueryListAction2[QueryListAction2["Confirm"] = 0] = "Confirm";
1445
- QueryListAction2[QueryListAction2["Reset"] = 1] = "Reset";
1446
- QueryListAction2[QueryListAction2["Jump"] = 2] = "Jump";
1447
- QueryListAction2[QueryListAction2["Init"] = 3] = "Init";
1448
- return QueryListAction2;
1449
- })(QueryListAction || {});
1450
- InternalQueryList = (props, ref) => {
1451
- const internalProps = {
1452
- method: "GET",
1453
- defaultSize: 10,
1454
- refreshInterval: 0,
1455
- getTotal: (data2) => data2?.total,
1456
- getDataSource: (data2) => data2?.list,
1457
- ...props
1458
- };
1459
- const {
1460
- url: url4,
1461
- code,
1462
- headers,
1463
- onePage,
1464
- method,
1465
- buttonsAlign,
1466
- showReset,
1467
- defaultSize,
1468
- refreshInterval,
1469
- tableExtra,
1470
- form,
1471
- body,
1472
- params,
1473
- renderForm,
1474
- afterSuccess,
1475
- getTotal,
1476
- getDataSource,
1477
- footer,
1478
- pageSizeOptions,
1479
- ...tableProps
1480
- } = internalProps;
1481
- if (!url4) {
1482
- throw new Error("url property is required");
1483
- }
1484
- const { t } = useTranslation();
1485
- const [_form] = Form.useForm(form);
1486
- const action = useRef(3 /* Init */);
1487
- const { data: accessible, isLoading: isChecking } = usePermission(code);
1488
- const [isValid, setIsValid] = useState(false);
1489
- const { keyMap, getPayload, refetch } = useQueryListStore();
1490
- const ky2 = useKy();
1491
- const { page, size = defaultSize, formValue } = getPayload(url4);
1492
- const payload = useMemo(() => ({ page, size, formValue }), [page, size, formValue]);
1493
- const _body = useMemo(
1494
- () => typeof body === "function" ? body(payload) : typeof body === "undefined" ? method === "POST" ? {
1495
- ...formValue,
1496
- page: !onePage ? page : void 0,
1497
- size: !onePage ? size : void 0
1498
- } : void 0 : body,
1499
- [body, payload, method, formValue, onePage, page, size]
1500
- );
1501
- const _params = useMemo(
1502
- () => typeof params === "function" ? params(payload) : typeof params === "undefined" ? method === "GET" ? {
1503
- ...formValue,
1504
- page: !onePage ? page : void 0,
1505
- size: !onePage ? size : void 0
1506
- } : void 0 : params,
1507
- [params, payload, method, formValue, onePage, page, size]
1508
- );
1509
- const _headers = useMemo(() => typeof headers === "function" ? headers(_form) : headers, [headers, _form]);
1510
- const shouldPoll = useRef(false);
1511
- const requestConfig = useMemo(
1512
- () => ({
1513
- url: url4,
1514
- method,
1515
- body: _body,
1516
- searchParams: _params,
1517
- headers: _headers
1518
- }),
1519
- [url4, method, _body, _params, _headers]
1520
- );
1521
- const key = useMemo(() => {
1522
- if (!accessible || !isValid) {
1523
- return null;
1524
- }
1525
- const serializedKey = unstable_serialize(requestConfig);
1526
- keyMap.set(url4, serializedKey);
1527
- return serializedKey;
1528
- }, [accessible, isValid, requestConfig, keyMap, url4]);
1529
- const { data, isLoading } = useSWR4(
1530
- key,
1531
- async () => {
1532
- const {
1533
- url: requestUrl,
1534
- method: requestMethod,
1535
- body: requestBody,
1536
- searchParams,
1537
- headers: requestHeaders
1538
- } = requestConfig;
1539
- const kyOptions = {
1540
- method: requestMethod,
1541
- searchParams,
1542
- headers: requestHeaders
1543
- };
1544
- if (requestBody) {
1545
- if (requestBody instanceof FormData) {
1546
- kyOptions.body = requestBody;
1547
- } else {
1548
- kyOptions.json = requestBody;
1549
- }
1550
- }
1551
- const response = await ky2.request({ url: requestUrl, ...kyOptions });
1552
- return response;
1553
- },
1554
- {
1555
- shouldRetryOnError: false,
1556
- revalidateOnFocus: false,
1557
- refreshInterval: shouldPoll.current ? refreshInterval : 0,
1558
- onSuccess(_data) {
1559
- shouldPoll.current = true;
1560
- afterSuccess?.(action.current, _form, _data);
1561
- }
1562
- }
1563
- );
1564
- const dataSource = getDataSource(data, _form);
1565
- const total = getTotal(data);
1566
- const pagination = !onePage && {
1567
- pageSizeOptions,
1568
- showSizeChanger: true,
1569
- showQuickJumper: true,
1570
- current: page,
1571
- pageSize: size,
1572
- total,
1573
- onChange: async (currentPage, currentSize) => {
1574
- action.current = 2 /* Jump */;
1575
- refetch(url4, {
1576
- page: currentPage,
1577
- size: currentSize
1578
- });
1579
- }
1580
- };
1581
- const onConfirm = async () => {
1582
- action.current = 0 /* Confirm */;
1583
- try {
1584
- await _form.validateFields();
1585
- setIsValid(true);
1586
- refetch(url4, {
1587
- page: 1,
1588
- formValue: _form.getFieldsValue()
1589
- });
1590
- } catch {
1591
- setIsValid(false);
1592
- }
1593
- };
1594
- const onReset = async () => {
1595
- action.current = 1 /* Reset */;
1596
- _form.resetFields();
1597
- try {
1598
- await _form.validateFields({ validateOnly: true });
1599
- setIsValid(true);
1600
- refetch(url4, {
1601
- page: 1,
1602
- formValue: _form.getFieldsValue()
1603
- });
1604
- } catch {
1605
- setIsValid(false);
1606
- }
1607
- };
1608
- useEffect(() => {
1609
- const init = async () => {
1610
- if (!accessible) {
1611
- return;
1612
- }
1613
- try {
1614
- _form.resetFields();
1615
- const value = await _form.validateFields({ validateOnly: true });
1616
- refetch(url4, {
1617
- page: 1,
1618
- formValue: value
1619
- });
1620
- setIsValid(true);
1621
- } catch {
1622
- setIsValid(false);
1623
- }
1624
- };
1625
- setTimeout(() => {
1626
- init();
1627
- }, 300);
1628
- }, [accessible, form, _form, refetch, url4]);
1629
- useImperativeHandle(ref, () => ({
1630
- data,
1631
- dataSource,
1632
- form: _form
1633
- }));
1634
- if (isChecking) {
1635
- return /* @__PURE__ */ jsx(
1636
- Spin,
1637
- {
1638
- style: {
1639
- display: "flex",
1640
- justifyContent: "center",
1641
- alignItems: "center",
1642
- height: 300
1643
- }
1644
- }
1645
- );
1646
- }
1647
- if (!accessible) {
1648
- return /* @__PURE__ */ jsx(Result, { status: 403, subTitle: t("global.noEntitlement") });
1649
- }
1650
- const formRenderer = typeof renderForm === "function" ? /* @__PURE__ */ jsx(
1651
- FilterFormWrapper_default,
1652
- {
1653
- showReset,
1654
- buttonsAlign,
1655
- isConfirming: isLoading,
1656
- onReset,
1657
- onConfirm,
1658
- children: cloneElement(renderForm(_form), {
1659
- onKeyUp: (e) => {
1660
- if (e.key === "Enter") {
1661
- onConfirm();
1662
- }
1663
- }
1664
- })
1665
- }
1666
- ) : (
1667
- // 屏蔽 Form 组件的警告(Instance created by `useForm` is not connected to any Form element. Forget to pass `form` prop?)
1668
- /* @__PURE__ */ jsx(Form, { form: _form })
1669
- );
1670
- const renderFooter = footer && (() => footer(data));
1671
- return /* @__PURE__ */ jsxs("div", { children: [
1672
- formRenderer,
1673
- typeof tableExtra === "function" ? tableExtra(_form, data) : tableExtra,
1674
- /* @__PURE__ */ jsx(
1675
- Table,
1676
- {
1677
- ...tableProps,
1678
- dataSource,
1679
- loading: isLoading,
1680
- pagination,
1681
- footer: renderFooter
1682
- }
1683
- )
1684
- ] });
1685
- };
1686
- QueryList = forwardRef(InternalQueryList);
1687
- QueryList_default = QueryList;
1688
- }
1689
- });
1690
-
1691
- // src/components/queryList/index.ts
1692
- var init_queryList = __esm({
1693
- "src/components/queryList/index.ts"() {
1694
- init_QueryList();
1695
- init_stores4();
1696
- }
1697
- });
1698
-
1699
- // src/features/menu/constants/index.ts
1700
- var url;
1701
- var init_constants2 = __esm({
1702
- "src/features/menu/constants/index.ts"() {
1703
- url = "/api/usystem/menu/list";
1704
- }
1705
- });
1706
- function useCreateMenu() {
1707
- const ky2 = useKy();
1708
- return useSWRMutation2(
1709
- "/api/usystem/menu/set",
1710
- (url4, { arg }) => ky2.post(url4, { ...arg, id: 0, is_model: true })
1711
- );
1712
- }
1713
- function useUpdateMenu() {
1714
- const ky2 = useKy();
1715
- return useSWRMutation2(
1716
- "/api/usystem/menu/set",
1717
- (url4, { arg }) => ky2.post(url4, { ...arg, is_model: true })
1718
- );
1719
- }
1720
- function useRemoveMenu() {
1721
- const ky2 = useKy();
1722
- return useSWRMutation2(
1723
- "/api/usystem/menu/delete",
1724
- (url4, { arg }) => ky2.post(url4, null, { searchParams: { id: arg } })
1725
- );
1726
- }
1727
- var init_hooks3 = __esm({
1728
- "src/features/menu/hooks/index.ts"() {
1729
- init_libs();
1730
- }
1731
- });
1732
-
1733
- // src/features/menu/index.ts
1734
- var init_menu = __esm({
1735
- "src/features/menu/index.ts"() {
1736
- init_constants2();
1737
- init_hooks3();
1738
- }
1739
- });
1740
-
1741
- // src/pages/menu/menuItemList/index.tsx
1742
- var menuItemList_exports = {};
1743
- __export(menuItemList_exports, {
1744
- default: () => menuItemList_default
1745
- });
1746
- var MenuItemList, menuItemList_default;
1747
- var init_menuItemList = __esm({
1748
- "src/pages/menu/menuItemList/index.tsx"() {
1749
- init_highlight();
1750
- init_locale();
1751
- init_queryList();
1752
- init_toolkitsProvider();
1753
- init_menu();
1754
- init_hooks3();
1755
- init_services();
1756
- MenuItemList = withContext(
1757
- () => {
1758
- const { t } = useTranslation();
1759
- const { message } = App.useApp();
1760
- const remove = useRemoveMenu();
1761
- const { refetch } = useQueryListStore();
1762
- const { mutate: mutate2 } = useMenuList();
1763
- const navigate = useNavigate();
1764
- const columns = [
1765
- {
1766
- title: "\u83DC\u5355\u540D\u79F0",
1767
- dataIndex: "category",
1768
- key: "category"
1769
- },
1770
- {
1771
- title: "\u524D\u7AEF\u8DEF\u7531",
1772
- dataIndex: "front_route"
1773
- },
1774
- {
1775
- title: "Order",
1776
- dataIndex: "order"
1777
- },
1778
- {
1779
- title: "Is Common",
1780
- dataIndex: "is_common",
1781
- key: "is_common",
1782
- render: (value) => value ? "\u662F" : "\u5426"
1783
- },
1784
- {
1785
- title: "\u6A21\u677F\u540D\u79F0",
1786
- dataIndex: "model_name",
1787
- key: "model_name"
1788
- },
1789
- // {
1790
- // title: '是否预设',
1791
- // dataIndex: 'is_model',
1792
- // key: 'is_model',
1793
- // render: value => (value ? '否' : '是'),
1794
- // },
1795
- {
1796
- title: "\u64CD\u4F5C",
1797
- key: "action",
1798
- width: 150,
1799
- align: "center",
1800
- render(_, record) {
1801
- if (record.is_model) {
1802
- return /* @__PURE__ */ jsxs(Space, { size: "small", children: [
1803
- /* @__PURE__ */ jsx(
1804
- Button,
1805
- {
1806
- type: "link",
1807
- onClick: () => {
1808
- navigate(`./update/${record.id}`);
1809
- },
1810
- children: t("global.update")
1811
- }
1812
- ),
1813
- /* @__PURE__ */ jsx(
1814
- Popconfirm,
1815
- {
1816
- title: "\u5220\u9664\u83DC\u5355",
1817
- placement: "topRight",
1818
- description: /* @__PURE__ */ jsxs(Highlight_default, { texts: [record.category], children: [
1819
- "\u786E\u5B9A\u8981\u5220\u9664\u83DC\u5355 ",
1820
- record.category,
1821
- " \u5417\uFF1F"
1822
- ] }),
1823
- onConfirm: async () => {
1824
- await remove.trigger(record.id);
1825
- refetch(url);
1826
- mutate2();
1827
- message.success("\u5220\u9664\u6210\u529F");
1828
- },
1829
- children: /* @__PURE__ */ jsx(Button, { danger: true, type: "link", size: "small", children: t("global.delete") })
1830
- }
1831
- )
1832
- ] });
1833
- }
1834
- return null;
1835
- }
1836
- }
1837
- ];
1838
- return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
1839
- Card,
1840
- {
1841
- title: "\u83DC\u5355\u7BA1\u7406",
1842
- extra: /* @__PURE__ */ jsx(
1843
- Button,
1844
- {
1845
- type: "primary",
1846
- onClick: () => {
1847
- navigate("./create");
1848
- },
1849
- children: "\u521B\u5EFA\u83DC\u5355\u9879"
1850
- }
1851
- ),
1852
- children: /* @__PURE__ */ jsx(
1853
- QueryList_default,
1854
- {
1855
- onePage: true,
1856
- code: "9900001",
1857
- rowKey: "id",
1858
- url,
1859
- columns,
1860
- getDataSource: (response) => response
1861
- }
1862
- )
1863
- }
1864
- ) });
1865
- },
1866
- { isGlobal: true }
1867
- );
1868
- menuItemList_default = MenuItemList;
1869
- }
1870
- });
1871
-
1872
- // src/pages/menu/createMenuItem/index.tsx
1873
- var createMenuItem_exports = {};
1874
- __export(createMenuItem_exports, {
1875
- default: () => createMenuItem_default
1876
- });
1877
- var CreateMenuItem, createMenuItem_default;
1878
- var init_createMenuItem = __esm({
1879
- "src/pages/menu/createMenuItem/index.tsx"() {
1880
- init_toolkitsProvider();
1881
- init_constants();
1882
- init_menu();
1883
- init_services();
1884
- CreateMenuItem = withContext(
1885
- () => {
1886
- const { message } = App.useApp();
1887
- const [form] = Form.useForm();
1888
- const navigate = useNavigate();
1889
- const { trigger } = useCreateMenu();
1890
- const { mutate: mutate2 } = useMenuList();
1891
- const onFinish = async (values) => {
1892
- const { permissions, front_route, ...rest } = values;
1893
- await trigger({
1894
- ...rest,
1895
- front_route: FRONTEND_ROUTE_PREFIX + front_route,
1896
- permissions: permissions ? JSON.parse(permissions) : void 0
1897
- });
1898
- mutate2();
1899
- message.success("\u521B\u5EFA\u6210\u529F", 0.8, () => navigate("..", { relative: "route" }));
1900
- };
1901
- return /* @__PURE__ */ jsx(Card, { title: "\u521B\u5EFA\u83DC\u5355\u9879", children: /* @__PURE__ */ jsxs(
1902
- Form,
1903
- {
1904
- scrollToFirstError: true,
1905
- form,
1906
- labelCol: { flex: "120px" },
1907
- initialValues: { is_common: false, is_model: false, order: 0 },
1908
- onFinish,
1909
- children: [
1910
- /* @__PURE__ */ jsx(Form.Item, { label: "\u83DC\u5355\u9879\u540D\u79F0", name: "category", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, {}) }),
1911
- /* @__PURE__ */ jsx(Form.Item, { label: "\u524D\u7AEF\u8DEF\u7531", name: "front_route", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, { prefix: FRONTEND_ROUTE_PREFIX }) }),
1912
- /* @__PURE__ */ jsx(Form.Item, { label: "\u6A21\u677F\u540D\u79F0", name: "model_name", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, {}) }),
1913
- /* @__PURE__ */ jsx(Form.Item, { label: "Is Common", name: "is_common", rules: [{ required: true }], valuePropName: "checked", children: /* @__PURE__ */ jsx(Switch, {}) }),
1914
- /* @__PURE__ */ jsx(Form.Item, { label: "Order", name: "order", children: /* @__PURE__ */ jsx(InputNumber, { className: "w-full" }) }),
1915
- /* @__PURE__ */ jsx(Form.Item, { label: "\u63A5\u53E3\u89C4\u5219", name: "permissions", children: /* @__PURE__ */ jsx(
1916
- Editor,
1917
- {
1918
- theme: "vs-dark",
1919
- height: "300px",
1920
- language: "json",
1921
- options: {
1922
- minimap: {
1923
- enabled: false
1924
- }
1925
- }
1926
- }
1927
- ) }),
1928
- /* @__PURE__ */ jsx(Form.Item, { label: "Schema", name: "scheme", rules: [{ required: true }], children: /* @__PURE__ */ jsx(
1929
- Editor,
1930
- {
1931
- theme: "vs-dark",
1932
- height: "600px",
1933
- language: "json",
1934
- options: {
1935
- minimap: {
1936
- enabled: false
1937
- }
1938
- }
1939
- }
1940
- ) }),
1941
- /* @__PURE__ */ jsx(Form.Item, { label: "Ext", name: "ext", children: /* @__PURE__ */ jsx(Input.TextArea, { rows: 5 }) }),
1942
- /* @__PURE__ */ jsx(Form.Item, { children: /* @__PURE__ */ jsxs("div", { className: "flex justify-center gap-8", children: [
1943
- /* @__PURE__ */ jsx(Button, { type: "primary", htmlType: "submit", children: "\u63D0\u4EA4" }),
1944
- /* @__PURE__ */ jsx(
1945
- Button,
1946
- {
1947
- onClick: () => {
1948
- navigate("..", { relative: "path" });
1949
- },
1950
- children: "\u53D6\u6D88"
1951
- }
1952
- )
1953
- ] }) })
1954
- ]
1955
- }
1956
- ) });
1957
- },
1958
- { isGlobal: true }
1959
- );
1960
- createMenuItem_default = CreateMenuItem;
1961
- }
1962
- });
1963
-
1964
- // src/pages/menu/updateMenuItem/index.tsx
1965
- var updateMenuItem_exports = {};
1966
- __export(updateMenuItem_exports, {
1967
- default: () => updateMenuItem_default
1968
- });
1969
- var EditMenuItem, updateMenuItem_default;
1970
- var init_updateMenuItem = __esm({
1971
- "src/pages/menu/updateMenuItem/index.tsx"() {
1972
- init_toolkitsProvider();
1973
- init_constants();
1974
- init_menu();
1975
- init_libs();
1976
- init_services();
1977
- EditMenuItem = withContext(
1978
- () => {
1979
- const { message } = App.useApp();
1980
- const [form] = Form.useForm();
1981
- const navigate = useNavigate();
1982
- const { trigger } = useUpdateMenu();
1983
- const params = useParams();
1984
- const { mutate: mutate2 } = useMenuList();
1985
- const ky2 = useKy();
1986
- const { data, isLoading } = useSWR4(`/api/usystem/menu/info?id=${params.id}`, (url4) => ky2.get(url4));
1987
- const onFinish = async (values) => {
1988
- const { permissions, front_route, ...rest } = values;
1989
- await trigger({
1990
- ...rest,
1991
- permissions: permissions ? JSON.parse(permissions) : void 0,
1992
- front_route: FRONTEND_ROUTE_PREFIX + front_route,
1993
- id: +params.id
1994
- });
1995
- mutate2();
1996
- message.success("\u66F4\u65B0\u6210\u529F", 0.8, () => navigate("../..", { relative: "route" }));
1997
- };
1998
- useEffect(() => {
1999
- const { permissions, front_route, ...rest } = data ?? {};
2000
- const permissionsString = JSON.stringify(permissions || [], null, 2);
2001
- const frontRoute = front_route?.replace(FRONTEND_ROUTE_PREFIX, "");
2002
- form.setFieldsValue({
2003
- ...rest,
2004
- permissions: permissionsString,
2005
- front_route: frontRoute
2006
- });
2007
- }, [data, form]);
2008
- return /* @__PURE__ */ jsx(Card, { title: "\u66F4\u65B0\u83DC\u5355\u9879", loading: isLoading, children: /* @__PURE__ */ jsxs(
2009
- Form,
2010
- {
2011
- scrollToFirstError: true,
2012
- form,
2013
- labelCol: { flex: "120px" },
2014
- initialValues: { is_common: false, is_model: false, order: 0 },
2015
- onFinish,
2016
- children: [
2017
- /* @__PURE__ */ jsx(Form.Item, { label: "\u83DC\u5355\u9879\u540D\u79F0", name: "category", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, {}) }),
2018
- /* @__PURE__ */ jsx(Form.Item, { label: "\u524D\u7AEF\u8DEF\u7531", name: "front_route", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, { prefix: FRONTEND_ROUTE_PREFIX }) }),
2019
- /* @__PURE__ */ jsx(Form.Item, { label: "\u6A21\u677F\u540D\u79F0", name: "model_name", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, {}) }),
2020
- /* @__PURE__ */ jsx(Form.Item, { label: "Is Common", name: "is_common", rules: [{ required: true }], valuePropName: "checked", children: /* @__PURE__ */ jsx(Switch, {}) }),
2021
- /* @__PURE__ */ jsx(Form.Item, { label: "Order", name: "order", children: /* @__PURE__ */ jsx(InputNumber, { className: "w-full" }) }),
2022
- /* @__PURE__ */ jsx(Form.Item, { label: "\u63A5\u53E3\u89C4\u5219", name: "permissions", children: /* @__PURE__ */ jsx(
2023
- Editor,
2024
- {
2025
- theme: "vs-dark",
2026
- height: "300px",
2027
- language: "json",
2028
- options: {
2029
- minimap: {
2030
- enabled: false
2031
- }
2032
- }
2033
- }
2034
- ) }),
2035
- /* @__PURE__ */ jsx(Form.Item, { label: "Schema", name: "scheme", rules: [{ required: true }], children: /* @__PURE__ */ jsx(
2036
- Editor,
2037
- {
2038
- theme: "vs-dark",
2039
- height: "600px",
2040
- language: "json",
2041
- options: {
2042
- minimap: {
2043
- enabled: false
2044
- }
2045
- }
2046
- }
2047
- ) }),
2048
- /* @__PURE__ */ jsx(Form.Item, { label: "Ext", name: "ext", children: /* @__PURE__ */ jsx(Input.TextArea, { rows: 5 }) }),
2049
- /* @__PURE__ */ jsx(Form.Item, { children: /* @__PURE__ */ jsxs("div", { className: "flex justify-center gap-8", children: [
2050
- /* @__PURE__ */ jsx(Button, { type: "primary", htmlType: "submit", children: "\u63D0\u4EA4" }),
2051
- /* @__PURE__ */ jsx(
2052
- Button,
2053
- {
2054
- onClick: () => {
2055
- navigate("../..", { relative: "path" });
2056
- },
2057
- children: "\u53D6\u6D88"
2058
- }
2059
- )
2060
- ] }) })
2061
- ]
2062
- }
2063
- ) });
2064
- },
2065
- { isGlobal: true }
2066
- );
2067
- updateMenuItem_default = EditMenuItem;
2068
- }
2069
- });
2070
- function useAllPermissions() {
2071
- const ky2 = useKy();
2072
- return useSWR4("/api/usystem/user/allPermssions", (url4) => ky2.get(url4));
2073
- }
2074
- function useAllPermissionsV2() {
2075
- const ky2 = useKy();
2076
- return useSWR4(
2077
- "/api/usystem/user/allPermissionsV2",
2078
- (url4) => ky2.get(url4)
2079
- );
2080
- }
2081
- function useAllRoles() {
2082
- const ky2 = useKy();
2083
- return useSWR4("/api/usystem/role/all", (url4) => ky2.get(url4));
2084
- }
2085
- function useRole(name) {
2086
- const permissionVersion = useToolkitsStore((state) => state.permissionVersion);
2087
- const ky2 = useKy();
2088
- return useSWR4(
2089
- `/api/usystem/role/${permissionVersion === "v2" /* V2 */ ? "infoV2" : "info"}?name=${name}`,
2090
- (url4) => ky2.get(url4)
2091
- );
2092
- }
2093
- function useCreateRole() {
2094
- const { permissionVersion } = useToolkitsStore((s) => s);
2095
- const ky2 = useKy();
2096
- return useSWRMutation2(
2097
- permissionVersion === "v2" /* V2 */ ? "/api/usystem/role/createV2" : "/api/usystem/role/create",
2098
- (url4, {
2099
- arg
2100
- }) => ky2.post(url4, arg)
2101
- );
2102
- }
2103
- function useUpdateRole() {
2104
- const { permissionVersion } = useToolkitsStore((s) => s);
2105
- const ky2 = useKy();
2106
- return useSWRMutation2(
2107
- permissionVersion === "v2" /* V2 */ ? "/api/usystem/role/updateV2" : "/api/usystem/role/update",
2108
- (url4, {
2109
- arg
2110
- }) => ky2.post(url4, arg)
2111
- );
2112
- }
2113
- function useRemoveRole() {
2114
- const ky2 = useKy();
2115
- return useSWRMutation2(
2116
- "/api/usystem/role/delete",
2117
- (url4, {
2118
- arg
2119
- }) => ky2.post(url4, arg)
2120
- );
2121
- }
2122
- function useCreateUser() {
2123
- const ky2 = useKy();
2124
- return useSWRMutation2(
2125
- "/api/usystem/user/create",
2126
- (url4, {
2127
- arg
2128
- }) => ky2.post(url4, arg)
2129
- );
2130
- }
2131
- function useUpdateUser() {
2132
- const ky2 = useKy();
2133
- return useSWRMutation2(
2134
- "/api/usystem/user/update",
2135
- (url4, {
2136
- arg
2137
- }) => ky2.post(url4, arg)
2138
- );
2139
- }
2140
- function useRemoveUser() {
2141
- const ky2 = useKy();
2142
- return useSWRMutation2(
2143
- "/api/usystem/user/delete",
2144
- (url4, {
2145
- arg
2146
- }) => ky2.post(url4, arg)
2147
- );
2148
- }
2149
- var Text2, useCreateRoleModal, useUpdateRoleModal, useCreateUserModal, useUpdateUserModal, GroupSelect, GameSelect2, UserModalContentV2, useCreateUserModalV2, useUpdateUserModalV2;
2150
- var init_hooks4 = __esm({
2151
- "src/features/permission/hooks/index.tsx"() {
2152
- init_locale();
2153
- init_modal2();
2154
- init_toolkitsProvider();
2155
- init_constants();
2156
- init_libs();
2157
- init_components();
2158
- ({ Text: Text2 } = Typography);
2159
- useCreateRoleModal = ({ onSuccess } = {}) => {
2160
- const { t } = useTranslation();
2161
- const { trigger } = useCreateRole();
2162
- return useFormModal({
2163
- title: t("Role.createTitle"),
2164
- width: "50vw",
2165
- formProps: {
2166
- layout: "vertical"
2167
- },
2168
- content: /* @__PURE__ */ jsxs(Fragment, { children: [
2169
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.name"), name: "name", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, { addonBefore: "role_" }) }),
2170
- /* @__PURE__ */ jsx(Form.Item, { name: "permissions", children: /* @__PURE__ */ jsx(permissionList_default, {}) })
2171
- ] }),
2172
- onConfirm: async (values) => {
2173
- await trigger({
2174
- name: `role_${values.name}`,
2175
- permissions: values.permissions
2176
- });
2177
- onSuccess?.();
2178
- }
2179
- });
2180
- };
2181
- useUpdateRoleModal = ({ onSuccess } = {}) => {
2182
- const { t } = useTranslation();
2183
- const { trigger } = useUpdateRole();
2184
- return useFormModal({
2185
- title: t("Role.updateTitle"),
2186
- width: "50vw",
2187
- formProps: {
2188
- layout: "vertical"
2189
- },
2190
- content: /* @__PURE__ */ jsxs(Fragment, { children: [
2191
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.name"), name: "name", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, { disabled: true, addonBefore: "role_" }) }),
2192
- /* @__PURE__ */ jsx(Form.Item, { name: "permissions", children: /* @__PURE__ */ jsx(permissionList_default, {}) })
2193
- ] }),
2194
- onConfirm: async (values, extraValues) => {
2195
- await trigger({
2196
- id: extraValues?.id,
2197
- name: `role_${values.name}`,
2198
- permissions: values.permissions
2199
- });
2200
- onSuccess?.();
2201
- }
2202
- });
2203
- };
2204
- useCreateUserModal = ({ onSuccess } = {}) => {
2205
- const { t } = useTranslation();
2206
- const { data: roles, isLoading } = useAllRoles();
2207
- const { trigger } = useCreateUser();
2208
- return useFormModal({
2209
- title: t("User.createTitle"),
2210
- width: 600,
2211
- formProps: {
2212
- autoComplete: "off",
2213
- labelCol: { flex: "80px" }
2214
- },
2215
- content: /* @__PURE__ */ jsxs(Fragment, { children: [
2216
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.name"), name: "name", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, {}) }),
2217
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.role"), name: "roles", children: /* @__PURE__ */ jsx(
2218
- Select,
2219
- {
2220
- allowClear: true,
2221
- showSearch: true,
2222
- mode: "multiple",
2223
- loading: isLoading,
2224
- optionFilterProp: "label",
2225
- options: roles?.map((role) => ({ label: role.name, value: role.name }))
2226
- }
2227
- ) })
2228
- ] }),
2229
- onConfirm: async (values) => {
2230
- await trigger(values);
2231
- onSuccess?.();
2232
- }
2233
- });
2234
- };
2235
- useUpdateUserModal = ({ onSuccess } = {}) => {
2236
- const { t } = useTranslation();
2237
- const { data: roles, isLoading } = useAllRoles();
2238
- const { trigger } = useUpdateUser();
2239
- return useFormModal({
2240
- title: t("User.updateTitle"),
2241
- width: 600,
2242
- formProps: {
2243
- autoComplete: "off",
2244
- labelCol: { flex: "80px" }
2245
- },
2246
- content: /* @__PURE__ */ jsxs(Fragment, { children: [
2247
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.name"), name: "name", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, { disabled: true }) }),
2248
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.role"), name: "roles", children: /* @__PURE__ */ jsx(
2249
- Select,
2250
- {
2251
- allowClear: true,
2252
- showSearch: true,
2253
- mode: "multiple",
2254
- loading: isLoading,
2255
- optionFilterProp: "label",
2256
- options: roles?.map((role) => ({ label: role.name, value: role.name }))
2257
- }
2258
- ) })
2259
- ] }),
2260
- onConfirm: async (values, extraValues) => {
2261
- await trigger({ ...values, id: extraValues?.id });
2262
- onSuccess?.();
2263
- }
2264
- });
2265
- };
2266
- GroupSelect = (props) => {
2267
- const { onChange, ...rest } = props;
2268
- const ky2 = useKy();
2269
- const { data, isLoading } = useSWR4("/api/enum/get?enum=game_group&type=all", (path) => ky2.get(path));
2270
- const options = [{ label: "\u901A\u7528", value: WILDCARD }].concat(
2271
- data?.map((group) => ({ label: group, value: group })) ?? []
2272
- );
2273
- const onValueChange = (value) => {
2274
- if (last(value) === WILDCARD) {
2275
- onChange?.([WILDCARD]);
2276
- } else if (first(value) === WILDCARD) {
2277
- onChange?.(value.slice(1));
2278
- } else {
2279
- onChange?.(value);
2280
- }
2281
- };
2282
- return /* @__PURE__ */ jsx(
2283
- Select,
2284
- {
2285
- ...rest,
2286
- allowClear: true,
2287
- showSearch: true,
2288
- mode: "tags",
2289
- optionFilterProp: "label",
2290
- loading: isLoading,
2291
- options,
2292
- onChange: onValueChange
2293
- }
2294
- );
2295
- };
2296
- GameSelect2 = (props) => {
2297
- const { groups, onChange, ...rest } = props;
2298
- const ky2 = useKy();
2299
- const { data, isLoading } = useSWR4(
2300
- groups?.length ? `/api/enum/game_group/get_game_ids?game_groups=${groups.join(",")}` : null,
2301
- (path) => ky2.get(path).then((response) => response?.list)
2302
- );
2303
- const options = data?.map((group) => ({ label: group.name, value: group.id }));
2304
- const onValueChange = (value) => {
2305
- if (last(value) === WILDCARD) {
2306
- onChange?.([WILDCARD]);
2307
- } else if (first(value) === WILDCARD) {
2308
- onChange?.(value.slice(1));
2309
- } else {
2310
- onChange?.(value);
2311
- }
2312
- };
2313
- return /* @__PURE__ */ jsx(
2314
- Select,
2315
- {
2316
- ...rest,
2317
- allowClear: true,
2318
- showSearch: true,
2319
- optionFilterProp: "label",
2320
- mode: "tags",
2321
- loading: isLoading,
2322
- options,
2323
- onChange: onValueChange
2324
- }
2325
- );
2326
- };
2327
- UserModalContentV2 = ({ isCreate }) => {
2328
- const { t } = useTranslation();
2329
- const { data: roles, isLoading: isRolesLoading } = useAllRoles();
2330
- return /* @__PURE__ */ jsxs(Fragment, { children: [
2331
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.name"), name: "name", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, { disabled: !isCreate }) }),
2332
- /* @__PURE__ */ jsx(Form.List, { name: "permissions", children: (fields, { add, remove }) => /* @__PURE__ */ jsxs(Row, { gutter: 8, children: [
2333
- /* @__PURE__ */ jsx(Col, { span: 8, className: "text-center mb-4", children: /* @__PURE__ */ jsx(Text2, { strong: true, children: t("global.projectGroup") }) }),
2334
- /* @__PURE__ */ jsx(Col, { span: 10, className: "text-center mb-4", children: /* @__PURE__ */ jsx(Text2, { strong: true, children: t("global.game") }) }),
2335
- /* @__PURE__ */ jsx(Col, { span: 6, className: "text-center mb-4", children: /* @__PURE__ */ jsx(Text2, { strong: true, children: t("global.role") }) }),
2336
- fields.map((field) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
2337
- /* @__PURE__ */ jsx(Col, { span: 8, children: /* @__PURE__ */ jsx(Form.Item, { noStyle: true, shouldUpdate: true, children: ({ setFieldValue }) => /* @__PURE__ */ jsx(Form.Item, { name: [field.name, "game_group"], children: /* @__PURE__ */ jsx(
2338
- GroupSelect,
2339
- {
2340
- onChange: () => {
2341
- setFieldValue(["permissions", field.name, "game_ids"], []);
2342
- }
2343
- }
2344
- ) }) }) }),
2345
- /* @__PURE__ */ jsx(Col, { span: 10, children: /* @__PURE__ */ jsx(
2346
- Form.Item,
2347
- {
2348
- noStyle: true,
2349
- shouldUpdate: (prevValues, nextValues) => prevValues.permissions[field.name]?.game_group !== nextValues.permissions[field.name]?.game_group,
2350
- children: ({ getFieldValue }) => {
2351
- const _groups = getFieldValue(["permissions", field.name, "game_group"]);
2352
- return /* @__PURE__ */ jsx(
2353
- Form.Item,
2354
- {
2355
- name: [field.name, "game_ids"],
2356
- dependencies: [["permissions", field.name, "game_group"]],
2357
- rules: [{ required: _groups?.length, message: "\u8BF7\u9009\u62E9\u6E38\u620F" }],
2358
- children: /* @__PURE__ */ jsx(GameSelect2, { groups: _groups })
2359
- }
2360
- );
2361
- }
2362
- }
2363
- ) }),
2364
- /* @__PURE__ */ jsx(Col, { span: 6, children: /* @__PURE__ */ jsxs("div", { className: "flex", children: [
2365
- /* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsx(
2366
- Form.Item,
2367
- {
2368
- name: [field.name, "role"],
2369
- rules: [
2370
- { required: true, message: "\u8BF7\u9009\u62E9\u89D2\u8272" },
2371
- ({ getFieldValue }) => ({
2372
- validator(_rule, value) {
2373
- const items = getFieldValue("permissions");
2374
- const otherItems = items.filter((item, index) => !!item && index !== field.name);
2375
- if (otherItems.some((item) => item.role === value)) {
2376
- return Promise.reject(new Error("\u8BF7\u52FF\u91CD\u590D\u9009\u62E9\u89D2\u8272"));
2377
- }
2378
- return Promise.resolve();
2379
- }
2380
- })
2381
- ],
2382
- children: /* @__PURE__ */ jsx(
2383
- Select,
2384
- {
2385
- allowClear: true,
2386
- showSearch: true,
2387
- optionFilterProp: "label",
2388
- loading: isRolesLoading,
2389
- options: roles?.map((role) => ({ label: role.name, value: role.name }))
2390
- }
2391
- )
2392
- }
2393
- ) }),
2394
- /* @__PURE__ */ jsx("div", { className: "w-8 text-center", children: /* @__PURE__ */ jsx(Form.Item, { children: /* @__PURE__ */ jsx(
2395
- MinusCircleOutlined,
2396
- {
2397
- onClick: () => {
2398
- remove(field.name);
2399
- }
2400
- }
2401
- ) }) })
2402
- ] }) })
2403
- ] }, field.key)),
2404
- fields.length === 0 && /* @__PURE__ */ jsx(Col, { span: 24, children: /* @__PURE__ */ jsx(Empty, { className: "mb-6" }) }),
2405
- /* @__PURE__ */ jsx(Col, { span: 24, children: /* @__PURE__ */ jsx(Button, { block: true, type: "dashed", onClick: () => add(), children: t("global.add") }) })
2406
- ] }) })
2407
- ] });
2408
- };
2409
- useCreateUserModalV2 = ({ onSuccess } = {}) => {
2410
- const { t } = useTranslation();
2411
- const { trigger } = useCreateUser();
2412
- return useFormModal({
2413
- title: t("User.createTitle"),
2414
- width: "50vw",
2415
- formProps: {
2416
- autoComplete: "off",
2417
- labelCol: { flex: "80px" }
2418
- },
2419
- content: /* @__PURE__ */ jsx(UserModalContentV2, { isCreate: true }),
2420
- onConfirm: async (values) => {
2421
- await trigger(values);
2422
- onSuccess?.();
2423
- }
2424
- });
2425
- };
2426
- useUpdateUserModalV2 = ({ onSuccess } = {}) => {
2427
- const { t } = useTranslation();
2428
- const { trigger } = useUpdateUser();
2429
- return useFormModal({
2430
- title: t("User.updateTitle"),
2431
- width: "50vw",
2432
- formProps: {
2433
- autoComplete: "off",
2434
- labelCol: { flex: "80px" }
2435
- },
2436
- content: /* @__PURE__ */ jsx(UserModalContentV2, {}),
2437
- onConfirm: async (values, extraValues) => {
2438
- await trigger({ ...values, id: extraValues?.id });
2439
- onSuccess?.();
2440
- }
2441
- });
2442
- };
2443
- }
2444
- });
2445
- var PermissionCollapse, permissionCollapse_default;
2446
- var init_permissionCollapse = __esm({
2447
- "src/features/permission/components/permissionCollapse/index.tsx"() {
2448
- init_locale();
2449
- PermissionCollapse = (props) => {
2450
- const { permissions, readonly, expand, value, onChange } = props;
2451
- const [activeKey, setActiveKey] = useState([]);
2452
- const [checkedMap, setCheckedMap] = useState({});
2453
- const [internalValue, setInternalValue] = useState(value ?? []);
2454
- const { t } = useTranslation();
2455
- const [, startTransition] = useTransition();
2456
- const onCollapseChange = useCallback((key) => {
2457
- setActiveKey(key);
2458
- }, []);
2459
- const getCheckedValue = (checkedValue, codes) => {
2460
- let tempValue = [];
2461
- if (checkedValue) {
2462
- tempValue = [...new Set(internalValue.concat(codes))];
2463
- } else {
2464
- tempValue = internalValue.slice();
2465
- codes.forEach((code) => {
2466
- const index = tempValue.findIndex((item) => item === code);
2467
- if (index > -1) {
2468
- tempValue.splice(index, 1);
2469
- }
2470
- });
2471
- }
2472
- return tempValue;
2473
- };
2474
- const onCheckChange = (e, codes) => {
2475
- const checkedValue = getCheckedValue(e.target.checked, codes);
2476
- setInternalValue(checkedValue);
2477
- onChange?.(checkedValue);
2478
- };
2479
- useEffect(() => {
2480
- setInternalValue(value ?? []);
2481
- }, [value]);
2482
- useEffect(() => {
2483
- if (expand) {
2484
- startTransition(() => {
2485
- setActiveKey((permissions ?? []).map(({ category }) => category));
2486
- });
2487
- }
2488
- }, [expand, permissions]);
2489
- useEffect(() => {
2490
- const checkedValue = (permissions ?? []).reduce(
2491
- (acc, curr) => {
2492
- acc[curr.category] = curr.permissions.every((item) => internalValue?.includes(item.value));
2493
- return acc;
2494
- },
2495
- {}
2496
- );
2497
- setCheckedMap(checkedValue);
2498
- }, [internalValue, permissions]);
2499
- const items = (permissions ?? []).map((item) => ({
2500
- key: item.category,
2501
- label: item.category,
2502
- extra: !readonly && /* @__PURE__ */ jsx(
2503
- Checkbox,
2504
- {
2505
- checked: checkedMap[item.category],
2506
- onChange: (e) => {
2507
- onCheckChange(
2508
- e,
2509
- item.permissions?.map((permission) => permission.value)
2510
- );
2511
- },
2512
- children: t("global.selectAll")
2513
- }
2514
- ),
2515
- children: /* @__PURE__ */ jsx(Checkbox.Group, { style: { width: "100%" }, value: internalValue, disabled: readonly, children: /* @__PURE__ */ jsx(Row, { gutter: [10, 10], style: { width: "100%" }, children: item.permissions?.map((permission) => /* @__PURE__ */ jsx(Col, { span: 6, children: /* @__PURE__ */ jsx(
2516
- Checkbox,
2517
- {
2518
- value: permission.value,
2519
- onChange: (e) => {
2520
- onCheckChange(e, [permission.value]);
2521
- },
2522
- children: permission.label
2523
- }
2524
- ) }, permission.value)) }) })
2525
- }));
2526
- return /* @__PURE__ */ jsx(
2527
- Collapse,
2528
- {
2529
- style: { width: "100%" },
2530
- collapsible: "header",
2531
- activeKey,
2532
- items,
2533
- onChange: onCollapseChange
2534
- }
2535
- );
2536
- };
2537
- permissionCollapse_default = PermissionCollapse;
2538
- }
2539
- });
2540
- var Text3, Option2, PermissionWithGame, PermissionWithGame_default;
2541
- var init_PermissionWithGame = __esm({
2542
- "src/features/permission/components/permissionList/PermissionWithGame.tsx"() {
2543
- init_locale();
2544
- init_hooks4();
2545
- init_permissionCollapse();
2546
- ({ Text: Text3 } = Typography);
2547
- ({ Option: Option2 } = Select);
2548
- PermissionWithGame = (props) => {
2549
- const { expand = true, value, readonly, onChange } = props;
2550
- const { data: { permission, game: games } = {}, isLoading, error } = useAllPermissionsV2();
2551
- const [gameList, setGameList] = useState([]);
2552
- const globalPermissions = permission?.filter((item) => item.is_common);
2553
- const gamePermissions = permission?.filter((item) => !item.is_common);
2554
- const { t } = useTranslation();
2555
- useEffect(() => {
2556
- const list = [];
2557
- Object.keys(value ?? {}).forEach((key) => {
2558
- if (key !== "global") {
2559
- list.push({ gameId: key, permissions: value?.[key] ?? [] });
2560
- }
2561
- });
2562
- setGameList(list);
2563
- }, [value]);
2564
- if (error) {
2565
- return /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx(Text3, { type: "danger", children: t("PermissionList.failedDescription") }) });
2566
- }
2567
- const addGame = () => {
2568
- setGameList((prev) => [...prev, { gameId: "", permissions: [] }]);
2569
- };
2570
- const removeGame = (index) => {
2571
- setGameList((prev) => prev.filter((_, i) => i !== index));
2572
- };
2573
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-col w-full", children: [
2574
- /* @__PURE__ */ jsx("div", { className: "mb-12", children: /* @__PURE__ */ jsx(Divider, { dashed: true, children: t("PermissionList.baseSectionTitle") }) }),
2575
- /* @__PURE__ */ jsx(Skeleton, { active: true, loading: isLoading, children: /* @__PURE__ */ jsx(
2576
- permissionCollapse_default,
2577
- {
2578
- value: value?.global,
2579
- readonly,
2580
- permissions: globalPermissions,
2581
- expand,
2582
- onChange: (newValue) => {
2583
- onChange?.({
2584
- ...value,
2585
- global: newValue
2586
- });
2587
- }
2588
- }
2589
- ) }),
2590
- /* @__PURE__ */ jsx("div", { className: "my-12", children: /* @__PURE__ */ jsx(Divider, { dashed: true, children: t("PermissionList.gameSectionTitle") }) }),
2591
- gameList.map((item, index) => /* @__PURE__ */ jsx(
2592
- Card,
2593
- {
2594
- title: /* @__PURE__ */ jsxs(Space, { children: [
2595
- /* @__PURE__ */ jsx(Text3, { children: t("global.game") }),
2596
- readonly ? /* @__PURE__ */ jsx(Text3, { children: games?.find((game) => String(game.id) === item.gameId)?.name }) : /* @__PURE__ */ jsx(
2597
- Select,
2598
- {
2599
- disabled: readonly,
2600
- value: gameList[index].gameId || void 0,
2601
- style: { width: "160px" },
2602
- placeholder: t("PermissionList.gameSelectPlaceholder"),
2603
- onChange: (selectedValue) => {
2604
- setGameList((pev) => {
2605
- const temp = pev.slice();
2606
- temp[index].gameId = selectedValue;
2607
- return temp;
2608
- });
2609
- },
2610
- children: games?.map((game) => /* @__PURE__ */ jsx(
2611
- Option2,
2612
- {
2613
- value: game.id,
2614
- disabled: gameList.some(({ gameId }) => gameId === String(game.id)),
2615
- children: game.name
2616
- },
2617
- game.id
2618
- ))
2619
- }
2620
- )
2621
- ] }),
2622
- className: "mb-6",
2623
- extra: !readonly && /* @__PURE__ */ jsx(
2624
- Button,
2625
- {
2626
- type: "link",
2627
- onClick: () => {
2628
- removeGame(index);
2629
- },
2630
- children: t("PermissionList.removeText")
2631
- }
2632
- ),
2633
- children: gameList[index].gameId ? /* @__PURE__ */ jsx(Skeleton, { active: true, loading: isLoading, children: /* @__PURE__ */ jsx(
2634
- permissionCollapse_default,
2635
- {
2636
- value: value?.[gameList[index].gameId],
2637
- readonly,
2638
- expand,
2639
- permissions: gamePermissions,
2640
- onChange: (newValue) => {
2641
- onChange?.({
2642
- ...value,
2643
- [gameList[index].gameId]: newValue
2644
- });
2645
- }
2646
- }
2647
- ) }) : /* @__PURE__ */ jsx(Empty, { description: t("PermissionList.gameSectionDescription") })
2648
- },
2649
- index
2650
- )),
2651
- !readonly && /* @__PURE__ */ jsx(Button, { block: true, type: "dashed", onClick: addGame, children: t("PermissionList.addText") })
2652
- ] });
2653
- };
2654
- PermissionWithGame_default = PermissionWithGame;
2655
- }
2656
- });
2657
- var Text4, PermissionWithoutGame, PermissionWithoutGame_default;
2658
- var init_PermissionWithoutGame = __esm({
2659
- "src/features/permission/components/permissionList/PermissionWithoutGame.tsx"() {
2660
- init_locale();
2661
- init_hooks4();
2662
- init_permissionCollapse();
2663
- ({ Text: Text4 } = Typography);
2664
- PermissionWithoutGame = (props) => {
2665
- const { expand = true, value, readonly, onChange } = props;
2666
- const { data: permissions, isLoading, error } = useAllPermissions();
2667
- const { t } = useTranslation();
2668
- if (error) {
2669
- return /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx(Text4, { type: "danger", children: t("PermissionList.failedDescription") }) });
2670
- }
2671
- return /* @__PURE__ */ jsx(Skeleton, { active: true, loading: isLoading, children: /* @__PURE__ */ jsx(
2672
- permissionCollapse_default,
2673
- {
2674
- value,
2675
- permissions,
2676
- readonly,
2677
- expand,
2678
- onChange
2679
- }
2680
- ) });
2681
- };
2682
- PermissionWithoutGame_default = PermissionWithoutGame;
2683
- }
2684
- });
2685
- var PermissionList, permissionList_default;
2686
- var init_permissionList = __esm({
2687
- "src/features/permission/components/permissionList/index.tsx"() {
2688
- init_toolkitsProvider();
2689
- init_PermissionWithGame();
2690
- init_PermissionWithoutGame();
2691
- PermissionList = (props) => {
2692
- const { value } = props;
2693
- const version = useToolkitsStore((state) => state.permissionVersion);
2694
- return /* @__PURE__ */ jsx(Fragment, { children: version === "v2" /* V2 */ ? /* @__PURE__ */ jsx(PermissionWithGame_default, { ...props, value }) : /* @__PURE__ */ jsx(PermissionWithoutGame_default, { ...props, value }) });
2695
- };
2696
- permissionList_default = PermissionList;
2697
- }
2698
- });
2699
-
2700
- // src/features/permission/components/index.ts
2701
- var init_components = __esm({
2702
- "src/features/permission/components/index.ts"() {
2703
- init_permissionList();
2704
- }
2705
- });
2706
-
2707
- // src/features/permission/types/index.ts
2708
- var init_types2 = __esm({
2709
- "src/features/permission/types/index.ts"() {
2710
- }
2711
- });
2712
-
2713
- // src/features/permission/index.ts
2714
- var init_permission = __esm({
2715
- "src/features/permission/index.ts"() {
2716
- init_components();
2717
- init_hooks4();
2718
- init_types2();
2719
- }
2720
- });
2721
-
2722
- // src/pages/permission/userList/index.tsx
2723
- var userList_exports = {};
2724
- __export(userList_exports, {
2725
- default: () => userList_default
2726
- });
2727
- var url2, UserList, userList_default;
2728
- var init_userList = __esm({
2729
- "src/pages/permission/userList/index.tsx"() {
2730
- init_highlight();
2731
- init_locale();
2732
- init_permissionButton();
2733
- init_queryList();
2734
- init_toolkitsProvider();
2735
- init_permission();
2736
- url2 = "/api/usystem/user/list";
2737
- UserList = () => {
2738
- const { modal, message } = App.useApp();
2739
- const { t } = useTranslation();
2740
- const remove = useRemoveUser();
2741
- const { mutate: mutate2, refetch } = useQueryListStore();
2742
- const { permissionVersion } = useToolkitsStore((s) => s);
2743
- const isV1 = permissionVersion === "v1" /* V1 */;
2744
- const isV3 = permissionVersion === "v3" /* V3 */;
2745
- const { show: showCreateModal, modal: createModal } = useCreateUserModal({
2746
- onSuccess() {
2747
- refetch(url2, { page: 1 });
2748
- message.success(t("User.createSuccessfully"));
2749
- }
2750
- });
2751
- const { show: showUpdateModal, modal: updateModal } = useUpdateUserModal({
2752
- onSuccess() {
2753
- refetch(url2);
2754
- message.success(t("User.updateSuccessfully"));
2755
- }
2756
- });
2757
- const { show: showCreateModalV2, modal: createModalV2 } = useCreateUserModalV2({
2758
- onSuccess() {
2759
- refetch(url2, { page: 1 });
2760
- message.success(t("User.createSuccessfully"));
2761
- }
2762
- });
2763
- const { show: showUpdateModalV2, modal: updateModalV2 } = useUpdateUserModalV2({
2764
- onSuccess() {
2765
- refetch(url2);
2766
- message.success(t("User.updateSuccessfully"));
2767
- }
2768
- });
2769
- const columns = [
2770
- {
2771
- title: t("global.name"),
2772
- dataIndex: "name",
2773
- key: "name",
2774
- render(value, record) {
2775
- if (isV3) {
2776
- return /* @__PURE__ */ jsx(Link, { to: `./${record.id}`, children: value });
2777
- }
2778
- return value;
2779
- }
2780
- },
2781
- {
2782
- title: "ID",
2783
- dataIndex: "id",
2784
- key: "id"
2785
- },
2786
- (isV1 || isV3) && {
2787
- title: t("global.role"),
2788
- dataIndex: "roles",
2789
- key: "roles",
2790
- width: "40%",
2791
- render(value) {
2792
- return /* @__PURE__ */ jsx(Row, { gutter: [4, 4], children: (value || []).map((item) => /* @__PURE__ */ jsx(Col, { children: item === "root" ? /* @__PURE__ */ jsx(Tag, { color: "#f50", children: item }) : /* @__PURE__ */ jsx(Tag, { color: "#ff5a00", children: /* @__PURE__ */ jsx(Link, { to: `../role/${item}`, children: item }) }) }, item)) });
2793
- }
2794
- },
2795
- {
2796
- title: t("global.creationTime"),
2797
- dataIndex: "Ctime",
2798
- key: "ctime"
2799
- },
2800
- {
2801
- title: t("global.operation"),
2802
- width: 150,
2803
- align: "center",
2804
- render: (_, record) => {
2805
- const { name, permissions, roles, id } = record;
2806
- return /* @__PURE__ */ jsxs(Space, { children: [
2807
- /* @__PURE__ */ jsx(
2808
- PermissionButton_default,
2809
- {
2810
- size: "small",
2811
- type: "link",
2812
- code: "100003",
2813
- onClick: () => {
2814
- if (isV3) {
2815
- showUpdateModalV2({
2816
- initialValues: {
2817
- name,
2818
- permissions
2819
- },
2820
- extraValues: {
2821
- id
2822
- }
2823
- });
2824
- } else {
2825
- showUpdateModal({
2826
- initialValues: {
2827
- name,
2828
- roles
2829
- },
2830
- extraValues: {
2831
- id
2832
- }
2833
- });
2834
- }
2835
- },
2836
- children: t("global.update")
2837
- }
2838
- ),
2839
- /* @__PURE__ */ jsx(
2840
- PermissionButton_default,
2841
- {
2842
- danger: true,
2843
- size: "small",
2844
- code: "100004",
2845
- type: "link",
2846
- onClick: () => {
2847
- modal.confirm({
2848
- title: t("User.deleteTitle"),
2849
- content: /* @__PURE__ */ jsx(Highlight_default, { texts: [name], children: t("User.deleteContent", { user: name }) }),
2850
- async onOk() {
2851
- await remove.trigger({
2852
- id,
2853
- name
2854
- });
2855
- mutate2(url2, (prev) => {
2856
- return produce(prev, (draft) => {
2857
- const index = draft?.List?.findIndex((item) => item.id === id);
2858
- if (index) {
2859
- draft?.List?.splice(index, 1);
2860
- }
2861
- });
2862
- });
2863
- message.success(t("User.deleteSuccessfully"));
2864
- }
2865
- });
2866
- },
2867
- children: t("global.delete")
2868
- }
2869
- )
2870
- ] });
2871
- }
2872
- }
2873
- ].filter(Boolean);
2874
- return /* @__PURE__ */ jsxs(Fragment, { children: [
2875
- /* @__PURE__ */ jsx(
2876
- Card,
2877
- {
2878
- title: t("global.user"),
2879
- extra: /* @__PURE__ */ jsx(
2880
- PermissionButton_default,
2881
- {
2882
- type: "primary",
2883
- icon: /* @__PURE__ */ jsx(UserAddOutlined, {}),
2884
- code: "100002",
2885
- onClick: () => {
2886
- if (isV3) {
2887
- showCreateModalV2();
2888
- } else {
2889
- showCreateModal();
2890
- }
2891
- },
2892
- children: t("User.createTitle")
2893
- }
2894
- ),
2895
- children: /* @__PURE__ */ jsx(
2896
- QueryList_default,
2897
- {
2898
- code: "100001",
2899
- url: url2,
2900
- rowKey: "id",
2901
- columns,
2902
- getTotal: (data) => data?.Total,
2903
- getDataSource: (data) => data?.List,
2904
- renderForm: isV3 ? (form) => /* @__PURE__ */ jsx(Form, { form, children: /* @__PURE__ */ jsx(Form.Item, { label: "\u540D\u79F0", name: "name", children: /* @__PURE__ */ jsx(Input, {}) }) }) : void 0
2905
- }
2906
- )
2907
- }
2908
- ),
2909
- createModal,
2910
- updateModal,
2911
- createModalV2,
2912
- updateModalV2
2913
- ] });
2914
- };
2915
- userList_default = withContext(UserList, { isGlobal: true });
2916
- }
2917
- });
2918
-
2919
- // src/pages/permission/userDetail/index.tsx
2920
- var userDetail_exports = {};
2921
- __export(userDetail_exports, {
2922
- default: () => userDetail_default
2923
- });
2924
- var UserDetail, userDetail_default;
2925
- var init_userDetail = __esm({
2926
- "src/pages/permission/userDetail/index.tsx"() {
2927
- init_layout();
2928
- init_locale();
2929
- init_permissionButton();
2930
- init_toolkitsProvider();
2931
- init_constants();
2932
- init_permission();
2933
- init_libs();
2934
- init_services();
2935
- UserDetail = () => {
2936
- const { message } = App.useApp();
2937
- const params = useParams();
2938
- const { t } = useTranslation();
2939
- const { gameApiV2 } = useToolkitsStore((s) => s);
2940
- const ky2 = useKy();
2941
- const { data, isLoading, mutate: mutate2 } = useSWR4(
2942
- params.id ? `/api/usystem/user/info?id=${params.id}` : null,
2943
- (url4) => ky2.get(url4)
2944
- );
2945
- const { data: games } = useGames();
2946
- const { data: roleViewable } = usePermission("200005");
2947
- const { show, modal } = useUpdateUserModalV2({
2948
- onSuccess() {
2949
- mutate2();
2950
- message.success(t("User.updateSuccessfully"));
2951
- }
2952
- });
2953
- const columns = [
2954
- {
2955
- key: "group",
2956
- title: t("global.projectGroup"),
2957
- dataIndex: "game_group",
2958
- render(value) {
2959
- return value.map((item) => {
2960
- return /* @__PURE__ */ jsx(Tag, { children: item === WILDCARD ? "\u901A\u7528" : item }, item);
2961
- });
2962
- }
2963
- },
2964
- {
2965
- key: "game",
2966
- title: t("global.game"),
2967
- dataIndex: "game_ids",
2968
- render(value) {
2969
- return value.map((item) => {
2970
- const matchedGame = games?.find((game) => String(gameApiV2 ? game.game_id : game.id) === item);
2971
- return /* @__PURE__ */ jsx(Tag, { children: matchedGame?.name ?? (item === WILDCARD ? "\u901A\u7528" : item) }, item);
2972
- });
2973
- }
2974
- },
2975
- {
2976
- key: "role",
2977
- title: t("global.role"),
2978
- dataIndex: "role",
2979
- render(value) {
2980
- return roleViewable ? /* @__PURE__ */ jsx(Link, { to: `../../role/${value}`, relative: "path", children: value }) : value;
2981
- }
2982
- }
2983
- ];
2984
- return /* @__PURE__ */ jsxs(Fragment, { children: [
2985
- /* @__PURE__ */ jsx(
2986
- Breadcrumb,
2987
- {
2988
- style: { marginBottom: "1.5rem" },
2989
- items: [
2990
- {
2991
- key: "1",
2992
- title: /* @__PURE__ */ jsx(Link, { to: "..", relative: "path", children: t("global.user") })
2993
- },
2994
- {
2995
- key: "2",
2996
- title: "\u7528\u6237\u8BE6\u60C5"
2997
- }
2998
- ]
2999
- }
3000
- ),
3001
- /* @__PURE__ */ jsx(
3002
- Card,
3003
- {
3004
- title: "\u7528\u6237\u8BE6\u60C5",
3005
- loading: isLoading,
3006
- extra: /* @__PURE__ */ jsx(
3007
- PermissionButton_default,
3008
- {
3009
- code: "100003",
3010
- onClick: () => {
3011
- show({
3012
- initialValues: {
3013
- name: data?.name,
3014
- permissions: data?.permissions
3015
- },
3016
- extraValues: {
3017
- id: data.id
3018
- }
3019
- });
3020
- },
3021
- children: t("global.update")
3022
- }
3023
- ),
3024
- children: /* @__PURE__ */ jsxs(Descriptions, { bordered: true, column: 1, children: [
3025
- /* @__PURE__ */ jsx(Descriptions.Item, { label: t("global.name"), children: data?.name }),
3026
- /* @__PURE__ */ jsx(Descriptions.Item, { label: "ID", children: data?.id }),
3027
- /* @__PURE__ */ jsx(Descriptions.Item, { label: t("global.role"), children: /* @__PURE__ */ jsx(Table, { rowKey: "role", columns, dataSource: data?.permissions, pagination: false }) })
3028
- ] })
3029
- }
3030
- ),
3031
- modal
3032
- ] });
3033
- };
3034
- userDetail_default = UserDetail;
3035
- }
3036
- });
3037
-
3038
- // src/pages/permission/roleList/index.tsx
3039
- var roleList_exports = {};
3040
- __export(roleList_exports, {
3041
- default: () => roleList_default
3042
- });
3043
- var url3, RoleList, roleList_default;
3044
- var init_roleList = __esm({
3045
- "src/pages/permission/roleList/index.tsx"() {
3046
- init_highlight();
3047
- init_locale();
3048
- init_permissionButton();
3049
- init_queryList();
3050
- init_stores4();
3051
- init_toolkitsProvider();
3052
- init_permission();
3053
- init_libs();
3054
- init_services();
3055
- url3 = "/api/usystem/role/list";
3056
- RoleList = () => {
3057
- const { modal, message } = App.useApp();
3058
- const { data: viewable } = usePermission("200005");
3059
- const { t } = useTranslation();
3060
- const { permissionVersion } = useToolkitsStore((s) => s);
3061
- const { mutate: mutate2, refetch } = useQueryListStore();
3062
- const ky2 = useKy();
3063
- const { show: showCreateModal, modal: createModal } = useCreateRoleModal({
3064
- onSuccess() {
3065
- refetch(url3, { page: 1 });
3066
- message.success(t("Role.createSuccessfully"));
3067
- }
3068
- });
3069
- const { show: showUpdateModal, modal: updateModal } = useUpdateRoleModal({
3070
- onSuccess() {
3071
- mutate2(url3);
3072
- message.success(t("Role.updateSuccessfully"));
3073
- }
3074
- });
3075
- const remove = useRemoveRole();
3076
- const handleUpdateBtnClick = async (record) => {
3077
- const data = await ky2.get(
3078
- `/api/usystem/role/info${permissionVersion === "v2" /* V2 */ ? "V2" : ""}?name=${record.name}`
3079
- );
3080
- showUpdateModal({
3081
- initialValues: {
3082
- permissions: data.permissions,
3083
- name: data?.name.replace(/^role_/, "")
3084
- },
3085
- extraValues: {
3086
- id: data?.id
3087
- }
3088
- });
3089
- };
3090
- const columns = [
3091
- {
3092
- title: t("global.name"),
3093
- key: "name",
3094
- render(value) {
3095
- if (viewable) {
3096
- return /* @__PURE__ */ jsx(Link, { to: `${value.name}`, relative: "path", children: value.name });
3097
- } else {
3098
- return /* @__PURE__ */ jsx(Fragment, { children: value.name });
3099
- }
3100
- }
3101
- },
3102
- {
3103
- title: "ID",
3104
- dataIndex: "id",
3105
- key: "id"
3106
- },
3107
- {
3108
- title: t("global.creationTime"),
3109
- dataIndex: "ctime",
3110
- key: "ctime"
3111
- },
3112
- {
3113
- title: t("global.operation"),
3114
- width: 150,
3115
- align: "center",
3116
- render: (_, record) => {
3117
- return /* @__PURE__ */ jsxs(Space, { size: "small", children: [
3118
- /* @__PURE__ */ jsx(
3119
- PermissionButton_default,
3120
- {
3121
- code: "200003",
3122
- size: "small",
3123
- type: "link",
3124
- onClick: async () => {
3125
- handleUpdateBtnClick(record);
3126
- },
3127
- children: t("global.update")
3128
- }
3129
- ),
3130
- /* @__PURE__ */ jsx(
3131
- PermissionButton_default,
3132
- {
3133
- danger: true,
3134
- code: "200004",
3135
- size: "small",
3136
- type: "link",
3137
- onClick: () => {
3138
- modal.confirm({
3139
- title: t("Role.deleteTitle"),
3140
- content: /* @__PURE__ */ jsx(Highlight_default, { texts: [record.name], children: t("Role.deleteContent", { role: record.name }) }),
3141
- async onOk() {
3142
- await remove.trigger({
3143
- id: record.id,
3144
- name: record.name
3145
- });
3146
- mutate2(url3, (prev) => {
3147
- return produce(prev, (draft) => {
3148
- const index = draft?.List?.findIndex((item) => item.id === record.id);
3149
- if (index) {
3150
- draft?.List?.splice(index, 1);
3151
- }
3152
- });
3153
- });
3154
- message.success(t("Role.deleteSuccessfully"));
3155
- }
3156
- });
3157
- },
3158
- children: t("global.delete")
3159
- }
3160
- )
3161
- ] });
3162
- }
3163
- }
3164
- ];
3165
- return /* @__PURE__ */ jsxs(Fragment, { children: [
3166
- /* @__PURE__ */ jsx(
3167
- Card,
3168
- {
3169
- title: t("global.role"),
3170
- extra: /* @__PURE__ */ jsx(
3171
- PermissionButton_default,
3172
- {
3173
- type: "primary",
3174
- code: "200002",
3175
- icon: /* @__PURE__ */ jsx(UsergroupAddOutlined, {}),
3176
- onClick: () => {
3177
- showCreateModal();
3178
- },
3179
- children: t("Role.createTitle")
3180
- }
3181
- ),
3182
- children: /* @__PURE__ */ jsx(
3183
- QueryList_default,
3184
- {
3185
- rowKey: "name",
3186
- columns,
3187
- code: "200001",
3188
- url: url3,
3189
- getTotal: (data) => data?.Total,
3190
- getDataSource: (data) => data?.List
3191
- }
3192
- )
3193
- }
3194
- ),
3195
- createModal,
3196
- updateModal
3197
- ] });
3198
- };
3199
- roleList_default = withContext(RoleList, {
3200
- isGlobal: true
3201
- });
3202
- }
3203
- });
3204
-
3205
- // src/pages/permission/roleDetail/index.tsx
3206
- var roleDetail_exports = {};
3207
- __export(roleDetail_exports, {
3208
- default: () => roleDetail_default
3209
- });
3210
- var RoleDetail, roleDetail_default;
3211
- var init_roleDetail = __esm({
3212
- "src/pages/permission/roleDetail/index.tsx"() {
3213
- init_locale();
3214
- init_permissionButton();
3215
- init_toolkitsProvider();
3216
- init_permission();
3217
- RoleDetail = () => {
3218
- const { message } = App.useApp();
3219
- const params = useParams();
3220
- const { t } = useTranslation();
3221
- const { data, isLoading, mutate: mutate2 } = useRole(params.name);
3222
- const { show, modal } = useUpdateRoleModal({
3223
- onSuccess() {
3224
- mutate2();
3225
- message.success(t("Role.updateSuccessfully"));
3226
- }
3227
- });
3228
- const handleUpdateBtnClick = async () => {
3229
- show({
3230
- initialValues: {
3231
- permissions: data?.permissions,
3232
- name: data?.name.replace(/^role_/, "")
3233
- },
3234
- extraValues: {
3235
- id: data.id
3236
- }
3237
- });
3238
- };
3239
- return /* @__PURE__ */ jsxs(Fragment, { children: [
3240
- /* @__PURE__ */ jsx(
3241
- Breadcrumb,
3242
- {
3243
- style: { marginBottom: "1.5rem" },
3244
- items: [
3245
- {
3246
- key: "1",
3247
- title: /* @__PURE__ */ jsx(Link, { to: "..", relative: "path", children: t("global.role") })
3248
- },
3249
- {
3250
- key: "2",
3251
- title: t("RoleDetail.title")
3252
- }
3253
- ]
3254
- }
3255
- ),
3256
- /* @__PURE__ */ jsx(
3257
- Card,
3258
- {
3259
- title: t("RoleDetail.title"),
3260
- extra: /* @__PURE__ */ jsx(PermissionButton_default, { code: "200003", onClick: handleUpdateBtnClick, children: t("global.update") }),
3261
- children: /* @__PURE__ */ jsxs(Skeleton, { loading: isLoading, children: [
3262
- /* @__PURE__ */ jsxs(Descriptions, { column: 2, layout: "vertical", className: "mb-6", children: [
3263
- /* @__PURE__ */ jsx(Descriptions.Item, { label: t("global.name"), children: data?.name }),
3264
- /* @__PURE__ */ jsx(Descriptions.Item, { label: "ID", children: data?.id }),
3265
- /* @__PURE__ */ jsx(Descriptions.Item, { label: t("global.creationTime"), children: data?.ctime })
3266
- ] }),
3267
- /* @__PURE__ */ jsx(Divider, {}),
3268
- /* @__PURE__ */ jsx(permissionList_default, { readonly: true, value: data?.permissions })
3269
- ] })
3270
- }
3271
- ),
3272
- modal
3273
- ] });
3274
- };
3275
- roleDetail_default = withContext(RoleDetail, { isGlobal: true });
3276
- }
3277
- });
3278
-
3279
- // src/components/drawer/drawer.tsx
3280
- init_utils();
3281
- var useDrawerStore = create((set, get2) => ({
3282
- open: /* @__PURE__ */ new Map(),
3283
- isOpen: (uuid) => get2().open.get(uuid) ?? false,
3284
- show(uuid) {
3285
- set({ open: new Map(get2().open).set(uuid, true) });
3286
- },
3287
- hide(uuid) {
3288
- set({ open: new Map(get2().open).set(uuid, false) });
3289
- },
3290
- hideAll() {
3291
- set({ open: /* @__PURE__ */ new Map() });
3292
- }
3293
- }));
3294
- function useDraw(props) {
3295
- const {
3296
- content,
3297
- onConfirm,
3298
- afterOpen,
3299
- afterClose,
3300
- footer,
3301
- confirmText = "\u786E\u8BA4",
3302
- cancelText = "\u53D6\u6D88",
3303
- confirmButtonProps,
3304
- cancelButtonProps,
3305
- ...drawerProps
3306
- } = props;
3307
- const _id = useMemo(() => generateId(), []);
3308
- const { show, hide, isOpen } = useDrawerStore();
3309
- const open = isOpen(_id);
3310
- const [confirmLoading, setConfirmLoading] = useState(false);
3311
- const isRenderFunction = typeof content === "function";
3312
- const _show = useCallback(async () => {
3313
- show(_id);
3314
- await afterOpen?.();
3315
- }, [_id, show, afterOpen]);
3316
- const _hide = useCallback(() => {
3317
- hide(_id);
3318
- }, [_id, hide]);
3319
- const onClose = useCallback(async () => {
3320
- _hide();
3321
- await afterClose?.();
3322
- }, [_hide, afterClose]);
3323
- const handleConfirm = useCallback(async () => {
3324
- try {
3325
- setConfirmLoading(true);
3326
- await onConfirm?.();
3327
- } catch (error) {
3328
- console.error("Drawer confirm error:", error);
3329
- throw error;
3330
- } finally {
3331
- setConfirmLoading(false);
3332
- }
3333
- }, [onConfirm]);
3334
- const drawerFooter = footer !== void 0 ? footer : /* @__PURE__ */ jsxs(Space, { children: [
3335
- /* @__PURE__ */ jsx(Button, { ...cancelButtonProps, onClick: _hide, children: cancelText }),
3336
- /* @__PURE__ */ jsx(Button, { type: "primary", loading: confirmLoading, ...confirmButtonProps, onClick: handleConfirm, children: confirmText })
3337
- ] });
3338
- const internalDrawer = /* @__PURE__ */ jsx(Drawer, { ...drawerProps, open, footer: drawerFooter, onClose, children: isRenderFunction ? content({ hide: _hide }) : content });
3339
- return {
3340
- id: _id,
3341
- show: _show,
3342
- hide: _hide,
3343
- confirmLoading,
3344
- drawer: internalDrawer
3345
- };
3346
- }
3347
- function useFormDraw(props) {
3348
- const { content, form, formProps, onConfirm, onSuccess, ...drawerProps } = props;
3349
- const [internalExtraValues, setInternalExtraValues] = useState({});
3350
- let [internalForm] = Form.useForm();
3351
- internalForm = form || internalForm;
3352
- const isRenderFunction = typeof content === "function";
3353
- const afterClose = useCallback(() => {
3354
- internalForm.resetFields();
3355
- }, [internalForm]);
3356
- const { id, show, hide, drawer } = useDraw({
3357
- ...drawerProps,
3358
- content: (operation) => /* @__PURE__ */ jsx(Form, { ...formProps, form: internalForm, children: isRenderFunction ? content(internalExtraValues, operation) : content }),
3359
- onConfirm: async () => {
3360
- try {
3361
- const values = await internalForm.validateFields();
3362
- await onConfirm?.(values, internalExtraValues);
3363
- onSuccess?.();
3364
- hide();
3365
- } catch (error) {
3366
- console.error("Form validation or submission error:", error);
3367
- throw error;
3368
- }
3369
- },
3370
- afterClose
3371
- });
3372
- const onShow = useCallback(
3373
- (options) => {
3374
- const { initialValues, extraValues } = options || {};
3375
- if (extraValues) {
3376
- setInternalExtraValues(extraValues);
3377
- }
3378
- if (initialValues) {
3379
- internalForm.setFieldsValue(initialValues);
3380
- }
3381
- show();
3382
- },
3383
- [internalForm, show]
3384
- );
3385
- return {
3386
- id,
3387
- show: onShow,
3388
- hide,
3389
- drawer
3390
- };
3391
- }
3392
-
3393
- // src/components/dynamicTags/DynamicTags.tsx
3394
- init_locale();
3395
- var DynamicTags = (props) => {
3396
- const { initialTags, addable, removable, addCallback, removeCallback } = props;
3397
- const { t } = useTranslation();
3398
- const { token } = theme.useToken();
3399
- const [tags, setTags] = useState([]);
3400
- const [inputVisible, setInputVisible] = useState(false);
3401
- const [inputValue, setInputValue] = useState("");
3402
- const [editInputIndex, setEditInputIndex] = useState(-1);
3403
- const [editInputValue, setEditInputValue] = useState("");
3404
- const inputRef = useRef(null);
3405
- const editInputRef = useRef(null);
3406
- useEffect(() => {
3407
- setTags(initialTags ?? []);
3408
- }, [initialTags]);
3409
- useEffect(() => {
3410
- if (inputVisible) {
3411
- inputRef.current?.focus();
3412
- }
3413
- }, [inputVisible]);
3414
- useEffect(() => {
3415
- editInputRef.current?.focus();
3416
- }, [inputValue]);
3417
- const handleClose = async (removedTag) => {
3418
- const success = await removeCallback?.(removedTag);
3419
- if (success) {
3420
- const newTags = tags.filter((tag) => tag !== removedTag);
3421
- setTags(newTags);
3422
- }
3423
- };
3424
- const showInput = () => {
3425
- setInputVisible(true);
3426
- };
3427
- const handleInputChange = (e) => {
3428
- setInputValue(e.target.value);
3429
- };
3430
- const handleInputConfirm = async () => {
3431
- if (inputValue && tags.indexOf(inputValue) === -1) {
3432
- const success = await addCallback?.(inputValue);
3433
- if (success) {
3434
- setTags([...tags, inputValue]);
3435
- }
3436
- }
3437
- setInputVisible(false);
3438
- setInputValue("");
3439
- };
3440
- const handleEditInputChange = (e) => {
3441
- setEditInputValue(e.target.value);
3442
- };
3443
- const handleEditInputConfirm = () => {
3444
- const newTags = [...tags];
3445
- newTags[editInputIndex] = editInputValue;
3446
- setTags(newTags);
3447
- setEditInputIndex(-1);
3448
- setInputValue("");
3449
- };
3450
- const tagInputStyle = {
3451
- width: 78,
3452
- verticalAlign: "top"
3453
- };
3454
- const tagPlusStyle = {
3455
- background: token.colorBgContainer,
3456
- borderStyle: "dashed"
3457
- };
3458
- return /* @__PURE__ */ jsxs(Space, { wrap: true, size: [0, 8], children: [
3459
- /* @__PURE__ */ jsx(Space, { wrap: true, size: [0, 8], children: tags.map((tag, index) => {
3460
- if (editInputIndex === index) {
3461
- return /* @__PURE__ */ jsx(
3462
- Input,
3463
- {
3464
- ref: editInputRef,
3465
- size: "small",
3466
- style: tagInputStyle,
3467
- value: editInputValue,
3468
- onChange: handleEditInputChange,
3469
- onBlur: handleEditInputConfirm,
3470
- onPressEnter: handleEditInputConfirm
3471
- },
3472
- tag
3473
- );
3474
- }
3475
- return /* @__PURE__ */ jsx(
3476
- Tag,
3477
- {
3478
- closable: removable,
3479
- style: { userSelect: "none" },
3480
- onClose: async (e) => {
3481
- e.preventDefault();
3482
- await handleClose(tag);
3483
- },
3484
- children: /* @__PURE__ */ jsx(
3485
- "span",
3486
- {
3487
- onDoubleClick: (e) => {
3488
- if (index !== 0) {
3489
- setEditInputIndex(index);
3490
- setEditInputValue(tag);
3491
- e.preventDefault();
3492
- }
3493
- },
3494
- children: tag
3495
- }
3496
- )
3497
- },
3498
- tag
3499
- );
3500
- }) }),
3501
- addable && (inputVisible ? /* @__PURE__ */ jsx(
3502
- Input,
3503
- {
3504
- ref: inputRef,
3505
- type: "text",
3506
- size: "small",
3507
- style: tagInputStyle,
3508
- value: inputValue,
3509
- onChange: handleInputChange,
3510
- onBlur: handleInputConfirm,
3511
- onPressEnter: handleInputConfirm
3512
- }
3513
- ) : /* @__PURE__ */ jsxs(Tag, { style: tagPlusStyle, onClick: showInput, children: [
3514
- /* @__PURE__ */ jsx(PlusOutlined, {}),
3515
- "\xA0",
3516
- t("global.add")
3517
- ] }))
3518
- ] });
3519
- };
3520
- var DynamicTags_default = DynamicTags;
3521
- var ExpandableParagraph = (props) => {
3522
- const { children, ...restProps } = props;
3523
- const [expanded, setExpanded] = useState(false);
3524
- return /* @__PURE__ */ jsx(
3525
- Typography.Paragraph,
3526
- {
3527
- ...restProps,
3528
- className: "mb-0",
3529
- ellipsis: {
3530
- rows: 2,
3531
- expandable: "collapsible",
3532
- expanded,
3533
- onExpand: (_, info) => {
3534
- setExpanded(info.expanded);
3535
- }
3536
- },
3537
- children
3538
- }
3539
- );
3540
- };
3541
- var ExpandableParagraph_default = ExpandableParagraph;
3542
-
3543
- // src/index.ts
3544
- init_filterFormWrapper();
3545
- init_highlight();
3546
-
3547
- // src/components/infiniteList/InfiniteList.tsx
3548
- init_filterFormWrapper();
3549
- init_locale();
3550
- init_libs();
3551
- init_services();
3552
- var InternalInfiniteList = (props, ref) => {
3553
- const {
3554
- code,
3555
- url: url4,
3556
- tableExtra,
3557
- headers,
3558
- getRowKey,
3559
- getDataSource,
3560
- getHasMore,
3561
- renderForm,
3562
- params,
3563
- footer,
3564
- form,
3565
- buttonsAlign,
3566
- showReset,
3567
- ...tableProps
3568
- } = props;
3569
- const { t } = useTranslation();
3570
- const [_form] = Form.useForm(form);
3571
- const [isValid, setIsValid] = useState(false);
3572
- const [formValues, setFormValues] = useState();
3573
- const ky2 = useKy();
3574
- const getKey = (pageIndex, previousPageData) => {
3575
- if (!isValid) return null;
3576
- const rowKey = getRowKey?.(previousPageData, pageIndex);
3577
- const args = params(formValues, pageIndex, rowKey);
3578
- const queryString = qs.stringify(args);
3579
- return queryString ? `${url4}?${qs.stringify(args)}` : url4;
3580
- };
3581
- const _headers = typeof headers === "function" ? headers(_form) : headers;
3582
- const { data: accessible, isLoading } = usePermission(code);
3583
- const {
3584
- data,
3585
- size,
3586
- setSize,
3587
- isValidating: isListValidating,
3588
- mutate: mutate2
3589
- } = useSWRInfinite(
3590
- getKey,
3591
- async (arg) => {
3592
- const response = await ky2.get(arg, { headers: _headers });
3593
- return response;
3594
- },
3595
- {
3596
- shouldRetryOnError: false,
3597
- revalidateOnFocus: false,
3598
- revalidateFirstPage: false
3599
- }
3600
- );
3601
- const dataSource = getDataSource(data);
3602
- const isLoadingMore = isListValidating || size > 0 && data && typeof data[size - 1] === "undefined";
3603
- const isReachingEnd = typeof getHasMore !== "undefined" ? !getHasMore(last(data)) : false;
3604
- const isEmpty = !dataSource || dataSource.length === 0;
3605
- const onConfirm = async () => {
3606
- const values = await _form.getFieldsValue();
3607
- setFormValues(values);
3608
- try {
3609
- await _form.validateFields();
3610
- setIsValid(true);
3611
- mutate2();
3612
- } catch {
3613
- setSize(0);
3614
- setIsValid(false);
3615
- }
3616
- };
3617
- const loadMore = () => {
3618
- setSize(size + 1);
3619
- };
3620
- const onReset = async () => {
3621
- try {
3622
- _form.resetFields();
3623
- await _form.validateFields({ validateOnly: true });
3624
- mutate2();
3625
- } catch {
3626
- setSize(0);
3627
- }
3628
- };
3629
- useEffect(() => {
3630
- setTimeout(() => {
3631
- if (accessible) {
3632
- _form.validateFields({ validateOnly: true }).then((values) => {
3633
- setFormValues(values);
3634
- setIsValid(true);
3635
- }).catch(() => {
3636
- setIsValid(false);
3637
- });
3638
- }
3639
- }, 300);
3640
- }, [accessible, _form]);
3641
- useImperativeHandle(ref, () => ({
3642
- data,
3643
- dataSource,
3644
- form: _form,
3645
- mutate: mutate2,
3646
- size,
3647
- setSize
3648
- }));
3649
- if (isLoading) {
3650
- return /* @__PURE__ */ jsx(
3651
- Spin,
3652
- {
3653
- style: {
3654
- display: "flex",
3655
- justifyContent: "center",
3656
- alignItems: "center",
3657
- height: 300
3658
- }
3659
- }
3660
- );
3661
- }
3662
- if (!accessible) {
3663
- return /* @__PURE__ */ jsx(Result, { status: 403, subTitle: t("global.noEntitlement") });
3664
- }
3665
- const renderFooter = footer && (() => footer(data));
3666
- const formRenderer = typeof renderForm === "function" ? /* @__PURE__ */ jsx(
3667
- FilterFormWrapper_default,
3668
- {
3669
- showReset,
3670
- buttonsAlign,
3671
- isConfirming: isListValidating,
3672
- onReset,
3673
- onConfirm,
3674
- children: cloneElement(renderForm(_form), {
3675
- onKeyUp: (e) => {
3676
- if (e.key === "Enter") {
3677
- onConfirm();
3678
- }
3679
- }
3680
- })
3681
- }
3682
- ) : (
3683
- // 屏蔽 Form 组件的警告(Instance created by `useForm` is not connected to any Form element. Forget to pass `form` prop?)
3684
- /* @__PURE__ */ jsx(Form, { form: _form })
3685
- );
3686
- return /* @__PURE__ */ jsxs(Fragment, { children: [
3687
- formRenderer,
3688
- typeof tableExtra === "function" ? tableExtra(_form, dataSource) : tableExtra,
3689
- /* @__PURE__ */ jsx(Table, { ...tableProps, dataSource, loading: isLoadingMore, pagination: false, footer: renderFooter }),
3690
- !isEmpty && /* @__PURE__ */ jsx(
3691
- Button,
3692
- {
3693
- block: true,
3694
- loading: isLoadingMore,
3695
- type: "link",
3696
- htmlType: "button",
3697
- disabled: isLoadingMore || isReachingEnd,
3698
- onClick: loadMore,
3699
- children: isLoadingMore ? t("InfiniteList.loadingText") : isReachingEnd ? t("InfiniteList.reachEndText") : t("InfiniteList.loadMoreText")
3700
- }
3701
- )
3702
- ] });
3703
- };
3704
- var InfiniteList = forwardRef(InternalInfiniteList);
3705
- var InfiniteList_default = InfiniteList;
3706
-
3707
- // src/index.ts
3708
- init_layout();
3709
- init_modal2();
3710
- init_navMenu();
3711
- init_permissionButton();
3712
- init_queryList();
3713
- init_requireGame();
3714
-
3715
- // src/components/requirePermission/RequirePermission.tsx
3716
- init_locale();
3717
- init_services();
3718
- var RequirePermission = (props) => {
3719
- const { code, config, children } = props;
3720
- const { data: accessible, isValidating } = usePermission(code, config);
3721
- const { t } = useTranslation();
3722
- if (isValidating) {
3723
- return /* @__PURE__ */ jsx(
3724
- Spin,
3725
- {
3726
- style: {
3727
- display: "flex",
3728
- justifyContent: "center",
3729
- alignItems: "center",
3730
- height: 200
3731
- }
3732
- }
3733
- );
3734
- }
3735
- if (!accessible) {
3736
- return /* @__PURE__ */ jsx(Result, { status: "403", subTitle: t("global.noEntitlement") });
3737
- }
3738
- return /* @__PURE__ */ jsx(Fragment, { children });
3739
- };
3740
- var RequirePermission_default = RequirePermission;
3741
-
3742
- // src/index.ts
3743
- init_toolkitsProvider();
3744
- init_userWidget();
3745
- init_constants();
3746
- var MenuItemList2 = lazy(() => Promise.resolve().then(() => (init_menuItemList(), menuItemList_exports)));
3747
- var CreateMenuItem2 = lazy(() => Promise.resolve().then(() => (init_createMenuItem(), createMenuItem_exports)));
3748
- var UpdateMenuItem = lazy(() => Promise.resolve().then(() => (init_updateMenuItem(), updateMenuItem_exports)));
3749
- var menu_default = /* @__PURE__ */ jsxs(Routes, { children: [
3750
- /* @__PURE__ */ jsx(Route, { index: true, element: /* @__PURE__ */ jsx(MenuItemList2, {}) }),
3751
- /* @__PURE__ */ jsx(Route, { path: "create", element: /* @__PURE__ */ jsx(CreateMenuItem2, {}) }),
3752
- /* @__PURE__ */ jsx(Route, { path: "update/:id", element: /* @__PURE__ */ jsx(UpdateMenuItem, {}) })
3753
- ] });
3754
-
3755
- // src/pages/notFound/index.tsx
3756
- init_locale();
3757
- var NotFound = (props) => {
3758
- const { redirectUrl } = props;
3759
- const navigate = useNavigate();
3760
- const { t } = useTranslation();
3761
- return /* @__PURE__ */ jsx("div", { className: "h-screen flex justify-center items-center", children: /* @__PURE__ */ jsx(
3762
- Result,
3763
- {
3764
- status: "404",
3765
- title: "404",
3766
- subTitle: t("NotFound.subTitle"),
3767
- extra: redirectUrl && /* @__PURE__ */ jsx(
3768
- Button,
3769
- {
3770
- type: "primary",
3771
- onClick: () => {
3772
- navigate(redirectUrl);
3773
- },
3774
- children: t("NotFound.buttonText")
3775
- }
3776
- )
3777
- }
3778
- ) });
3779
- };
3780
- var notFound_default = NotFound;
3781
- init_locale();
3782
- init_queryList();
3783
- init_toolkitsProvider();
3784
- var { Option } = Select;
3785
- var OperationLogList = () => {
3786
- const { t } = useTranslation();
3787
- const columns = [
3788
- {
3789
- key: "username",
3790
- title: t("global.username"),
3791
- dataIndex: "uname",
3792
- width: 100
3793
- },
3794
- {
3795
- key: "label",
3796
- title: t("global.label"),
3797
- dataIndex: "label",
3798
- width: 150
3799
- },
3800
- {
3801
- key: "method",
3802
- title: t("global.method"),
3803
- dataIndex: "method",
3804
- width: 100
3805
- },
3806
- {
3807
- key: "route",
3808
- title: t("global.route"),
3809
- dataIndex: "route",
3810
- width: 200
3811
- },
3812
- {
3813
- key: "request",
3814
- title: t("global.request"),
3815
- dataIndex: "request",
3816
- render(value) {
3817
- return /* @__PURE__ */ jsx(ExpandableParagraph_default, { children: value });
3818
- }
3819
- },
3820
- {
3821
- key: "response",
3822
- title: t("global.response"),
3823
- dataIndex: "response",
3824
- render(value) {
3825
- return /* @__PURE__ */ jsx(ExpandableParagraph_default, { children: value });
3826
- }
3827
- },
3828
- {
3829
- key: "creation_time",
3830
- title: t("global.creationTime"),
3831
- dataIndex: "ctime",
3832
- width: 200,
3833
- render(value) {
3834
- return dayjs(value).format("YYYY-MM-DD HH:mm:ss");
3835
- }
3836
- }
3837
- ];
3838
- return /* @__PURE__ */ jsx(Card, { title: "\u64CD\u4F5C\u65E5\u5FD7", children: /* @__PURE__ */ jsx(
3839
- QueryList_default,
3840
- {
3841
- rowKey: "id",
3842
- code: "300001",
3843
- columns,
3844
- tableLayout: "fixed",
3845
- url: "/api/usystem/log/list",
3846
- getTotal: (data) => data?.Total,
3847
- getDataSource: (data) => data?.List,
3848
- renderForm: (form) => /* @__PURE__ */ jsxs(Form, { form, layout: "inline", children: [
3849
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.username"), name: "uname", children: /* @__PURE__ */ jsx(Input, { allowClear: true }) }),
3850
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.route"), name: "route", children: /* @__PURE__ */ jsx(Input, { allowClear: true }) }),
3851
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.method"), name: "method", children: /* @__PURE__ */ jsxs(Select, { allowClear: true, style: { width: "100px" }, children: [
3852
- /* @__PURE__ */ jsx(Option, { value: "get", children: "GET" }),
3853
- /* @__PURE__ */ jsx(Option, { value: "post", children: "POST" })
3854
- ] }) }),
3855
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.label"), name: "label", children: /* @__PURE__ */ jsx(Input, { allowClear: true }) })
3856
- ] })
3857
- }
3858
- ) });
3859
- };
3860
- var operationLogList_default = withContext(OperationLogList, { isGlobal: true });
3861
- var UserList2 = lazy(() => Promise.resolve().then(() => (init_userList(), userList_exports)));
3862
- var UserDetail2 = lazy(() => Promise.resolve().then(() => (init_userDetail(), userDetail_exports)));
3863
- var RoleList2 = lazy(() => Promise.resolve().then(() => (init_roleList(), roleList_exports)));
3864
- var RoleDetail2 = lazy(() => Promise.resolve().then(() => (init_roleDetail(), roleDetail_exports)));
3865
- var permission_default = /* @__PURE__ */ jsxs(Routes, { children: [
3866
- /* @__PURE__ */ jsx(Route, { index: true, element: /* @__PURE__ */ jsx(Navigate, { to: "user" }) }),
3867
- /* @__PURE__ */ jsx(Route, { path: "user", element: /* @__PURE__ */ jsx(UserList2, {}) }),
3868
- /* @__PURE__ */ jsx(Route, { path: "user/:id", element: /* @__PURE__ */ jsx(UserDetail2, {}) }),
3869
- /* @__PURE__ */ jsx(Route, { path: "role", element: /* @__PURE__ */ jsx(RoleList2, {}) }),
3870
- /* @__PURE__ */ jsx(Route, { path: "role/:name", element: /* @__PURE__ */ jsx(RoleDetail2, {}) })
3871
- ] });
3872
-
3873
- // src/pages/signIn/index.tsx
3874
- init_locale();
3875
- init_logo();
3876
- init_toolkitsProvider();
3877
- init_constants();
3878
- init_libs();
3879
-
3880
- // src/pages/signIn/background.svg
3881
- var background_default = 'data:image/svg+xml,<svg xml:space="preserve" style="enable-background:new 0 0 6000 4000;" viewBox="0 0 6000 4000" y="0px" x="0px" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" id="Layer_1" version="1.1">%0A<style type="text/css">%0A%09.Graphic_x0020_Style_x0020_100{fill:%23FFFFFF;}%0A%09.Graphic_x0020_Style_x0020_101{fill:url(%23SVGID_1_);}%0A%09.Graphic_x0020_Style_x0020_102{fill:url(%23SVGID_2_);}%0A%09.Graphic_x0020_Style_x0020_104{fill:%23DB6767;}%0A%09.Graphic_x0020_Style_x0020_105{fill:%23FFDE70;}%0A%09.Graphic_x0020_Style_x0020_106{fill:%23FFB114;}%0A%09.Graphic_x0020_Style_x0020_107{fill:%236584C6;}%0A%09.Graphic_x0020_Style_x0020_108{fill:%23102140;}%0A%09.Graphic_x0020_Style_x0020_109{fill:%233B546B;}%0A%09.Graphic_x0020_Style_x0020_110{fill:%23152A52;}%0A%09.Graphic_x0020_Style_x0020_111{fill:%23E8766F;}%0A%09.Graphic_x0020_Style_x0020_112{fill:%23EF5668;}%0A%09.Graphic_x0020_Style_x0020_113{fill:%23FC9590;}%0A%09.Graphic_x0020_Style_x0020_114{fill:%23912433;}%0A%09.Graphic_x0020_Style_x0020_115{opacity:0.5;fill:%23FFFFFF;}%0A%09.Graphic_x0020_Style_x0020_116{fill:%231A1A1A;}%0A%09.Graphic_x0020_Style_x0020_117{fill:%23535353;}%0A%09.Graphic_x0020_Style_x0020_118{fill:%23DBD2DB;}%0A%09.Graphic_x0020_Style_x0020_119{fill:%234D73C6;}%0A%09.Graphic_x0020_Style_x0020_120{fill:%23D1334A;}%0A%09.Graphic_x0020_Style_x0020_123{fill:url(%23SVGID_3_);}%0A%09.st0{fill:url(%23SVGID_4_);}%0A%09.st1{fill:url(%23SVGID_5_);}%0A%09.st2{fill:url(%23SVGID_6_);}%0A%09.st3{fill:%239D8A9D;}%0A%09.st4{fill:url(%23SVGID_7_);}%0A%09.st5{fill:url(%23SVGID_8_);}%0A%09.st6{fill:%233B546B;}%0A%09.st7{fill:%23A8A1A8;}%0A%09.st8{fill:%23DBD2DB;}%0A%09.st9{fill:%23FFFFFF;stroke:%231A1A1A;stroke-width:5.3432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st10{fill:%23339E7E;}%0A%09.st11{fill:none;stroke:%2310663F;stroke-width:5.3432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st12{fill:%2300593B;}%0A%09.st13{fill:none;stroke:%233DBE88;stroke-width:5.3432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st14{fill:none;stroke:%23134411;stroke-width:8.0149;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st15{fill:%23EF5668;}%0A%09.st16{fill:%23FC9590;}%0A%09.st17{fill:%23102140;}%0A%09.st18{fill:%23DB6767;}%0A%09.st19{fill:%231A1A1A;stroke:%231A1A1A;stroke-width:5.3432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st20{fill:%23FFFFFF;}%0A%09.st21{fill:%23535353;}%0A%09.st22{fill:%23F9EBF9;}%0A%09.st23{fill:%23D896D8;}%0A%09.st24{fill:%238E3D8E;}%0A%09.st25{fill:%23CA74CA;}%0A%09.st26{fill:%23D590D5;}%0A%09.st27{fill:%23160A16;}%0A%09.st28{fill:%23384A6E;}%0A%09.st29{fill:%23B7C0D4;}%0A%09.st30{fill:%23E8766F;}%0A%09.st31{fill:%23FFB114;}%0A%09.st32{fill:%23FFDE70;}%0A%09.st33{fill:%23434343;}%0A%09.st34{fill:%23664708;}%0A%09.st35{fill:%23D9D9D9;}%0A%09.st36{fill:url(%23SVGID_9_);}%0A%09.st37{fill:url(%23SVGID_10_);}%0A%09.st38{fill:url(%23SVGID_11_);}%0A%09.st39{fill:url(%23SVGID_12_);}%0A</style>%0A<linearGradient y2="0" x2="1" y1="0" x1="0" gradientUnits="userSpaceOnUse" id="SVGID_1_">%0A%09<stop style="stop-color:%234085F0" offset="0"></stop>%0A%09<stop style="stop-color:%23275DC9" offset="1"></stop>%0A</linearGradient>%0A<linearGradient y2="0" x2="1" y1="0" x1="0" gradientUnits="userSpaceOnUse" id="SVGID_2_">%0A%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09<stop style="stop-color:%23529BF7" offset="1"></stop>%0A</linearGradient>%0A<linearGradient y2="0" x2="1" y1="0" x1="0" gradientUnits="userSpaceOnUse" id="SVGID_3_">%0A%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09<stop style="stop-color:%23EBF0F7" offset="1"></stop>%0A</linearGradient>%0A<g>%0A%09<linearGradient y2="3014.9536" x2="4941.2124" y1="3014.9536" x1="1288.5804" gradientUnits="userSpaceOnUse" id="SVGID_4_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23EBF0F7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M1288.6,2793.9c55.3,134.1,186.5,387.6,453.7,503.3c220.8,95.6,442.9,57.4,694.7,14.2%0A%09%09c343.1-59,344.3-140.4,552.9-134.7c282.5,7.8,357.3,159.3,673.4,219.7c66.5,12.7,309.6,47.5,574.2-28.4%0A%09%09c360.6-103.4,734.8-407.2,701.8-560C4895.4,2605.9,4103.5,2505.3,1288.6,2793.9z" class="st0"></path>%0A%09<linearGradient y2="1994.5433" x2="5456.5684" y1="1994.5433" x1="686.3356" gradientUnits="userSpaceOnUse" id="SVGID_5_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23529BF7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M5428.3,1649.1c-131.4-612.4-697.6-977.3-1155.4-1020.7c-232.1-22-245.1,56.7-616.7,117%0A%09%09c-821.7,133.2-1081-199.5-1850.1-85.1c-341.2,50.8-687.6,102.3-914.4,382.8C519.9,1502.7,718.2,2270,973.9,2621.3%0A%09%09c165.2,227,392.7,363.9,392.7,363.9c68.9,41.5,168.6,100.4,304.8,131.1c237.9,53.7,359.9-29.9,560-42.5%0A%09%09c342.7-21.6,401.6,197.2,772.6,276.4c190.7,40.7,257.4,0.5,1084.5-212.6c811.7-209.1,858.2-198.9,974.7-297.7%0A%09%09C5379.4,2571.8,5521.7,2084.7,5428.3,1649.1z M2709.5,2042.7v-2.7V2042.7z" class="st1"></path>%0A%09<linearGradient y2="1859.5726" x2="5227.9292" y1="1859.5726" x1="1116.5316" gradientUnits="userSpaceOnUse" id="SVGID_6_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23EBF0F7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M5148.1,1664.4c-146.3-421.8-552.5-838.3-943.2-819c-297.4,14.6-412.5,273.3-678.4,215.1%0A%09%09c-227.7-49.8-217.9-255.8-471.6-405.4c-401.7-236.8-1083-107.4-1265.9,223.4c-99.3,179.7-11.7,346.7-173.7,521.2%0A%09%09c-113.5,122.3-192.5,78.9-314.4,198.6c-154.9,152-219.8,410.7-165.5,645.3c73.8,318.7,366.8,477.2,388.9,488.1%0A%09%09c827.4,146.2,1654.7,292.3,2482.1,438.5c80.8,13.1,529.4,77.9,879.7-216.7C5295.8,2609,5272.6,2023.2,5148.1,1664.4z%0A%09%09 M2709.5,2042.7v-2.7V2042.7z" class="st2"></path>%0A%09<path d="M5224.3,2042.5c-143.7-88.6-413.9-68.2-740.1-95.9c-488.7-41.5-1188.7,312.8-1437,221.4%0A%09%09c-95.1-35-167.4-141.7-220.4-260v1053.6c291.4,51.5,582.8,103,874.2,154.4l1292.2-269.1C5190,2615.6,5243.4,2314,5224.3,2042.5z" class="st3"></path>%0A%09<linearGradient y2="1741.7239" x2="2757.678" y1="1741.7239" x1="1116.5317" gradientUnits="userSpaceOnUse" id="SVGID_7_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23529BF7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M1789.1,878.4c-99.3,179.7-11.7,346.7-173.7,521.2c-113.5,122.3-192.5,78.9-314.4,198.6%0A%09%09c-154.9,152-219.8,410.7-165.5,645.3c73.8,318.7,366.8,477.2,388.9,488.1c411.1,72.6,822.2,145.3,1233.4,217.9V550.2%0A%09%09C2377.7,484.9,1931.7,620.4,1789.1,878.4z M2709.5,2042.7v-2.7V2042.7z" class="st4"></path>%0A%09<linearGradient y2="1215.4698" x2="2649.5779" y1="1215.4698" x1="1137.9542" gradientUnits="userSpaceOnUse" id="SVGID_8_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23EBF0F7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M1789.1,878.4c-99.4,179.7-11.7,346.7-173.7,521.2c-113.6,122.3-192.5,78.9-314.4,198.6%0A%09%09c-79.1,77.6-134.7,183-163,298.8c82.9-108.4,187.6-189.5,319.3-210.4c445.6-70.8,892.8,45.1,1192.3-113.7V537.1%0A%09%09C2296.9,511.3,1918.4,644.5,1789.1,878.4z" class="st5"></path>%0A%09<polygon points="1937.1,644.5 1937.1,2265.3 1979.7,2269.9 1983,640.9" class="st6"></polygon>%0A%09<path d="M2757.7,550.2c-35.6-6.1-71.7-10.5-108.1-13.1v1035.7c38.6-20.4,74.7-45.4,108.1-76V550.2z" class="st7"></path>%0A%09<path d="M1117.4,850.5c-15.5,9-30.8,18.5-45.8,28.5v1689.5l42.6,5.1L1117.4,850.5z" class="st6"></path>%0A%09<path d="M2826.8,564.5c-22.7-5.5-45.8-10.3-69.1-14.3v2399.3c23,4.1,46.1,8.1,69.1,12.2V564.5z" class="st8"></path>%0A%09<g>%0A%09%09<path d="M1121,2361c0,0-98.3-110.7,84.2-222.1c-25.3,43.4-118,92.3-52.4,202.9%0A%09%09%09c27.1,62.9-12.8,89.7-12.8,89.7S1080.6,2436.5,1121,2361z" class="Graphic_x0020_Style_x0020_116"></path>%0A%09%09<g>%0A%09%09%09<path d="M1282.2,2470.4c-15.5,28.9-215.1,26.5-315.7,23.4c-1.1-4.4-2.1-8.7-3.1-13c-1.8-7.8-3.5-15.5-5-23.2%0A%09%09%09%09C1035.2,2452.4,1299.9,2437.2,1282.2,2470.4z" class="st9"></path>%0A%09%09%09<path d="M1282.2,2470.4l-16.7,216.9c-25.9,39.1-25.5,89.5-36,137.5c-4.3,22.7-20.4,30.2-38.6,29.2%0A%09%09%09%09c-39.4-34.1-82.1-74.2-124.2-119.9c-50-80.3-81.3-162.6-100.3-240.3C1067.1,2496.9,1266.7,2499.4,1282.2,2470.4z" class="st9"></path>%0A%09%09</g>%0A%09%09<g>%0A%09%09%09<path d="M1331.3,2151c12.7,12.2,30.7,16,43,17c5.5-2.7,11.1-5.7,16.6-8.9c24.3-13.9,39.8-38.8,49.7-66.7%0A%09%09%09%09c-16.1,5.8-51.8,17.4-67.4,11.2c-20.4-8.1-12.5-17.1-3-14.1c11.7,6,55.7-6.5,75.3-12.5c4.1-14.9,6.8-30.2,8.6-44.8%0A%09%09%09%09c-13.9,8.3-34.9,15.8-44.4,12.6c-12.3-4.2-7.4-14.4,2.7-13.2c7.4,0.8,31.4-12,43.6-18.8c2.2-29.7,0.8-53.4,0.4-59.6%0A%09%09%09%09c-0.1-1-0.1-1.6-0.1-1.6s-29-8.6-66.9-14.1c-8,8.1-19.9,20.8-24.9,29.3c-8,13.3-11.7,24.3-18.1,22.2%0A%09%09%09%09c-12.7-6.6,13.3-37.6,27.8-53.4c-16.5-1.8-34.1-2.9-51.4-2.3c-51.5,40.6-24.5,76.1-44.7,71.8c-17.5-3.7,13.5-51.5,26.6-70.5%0A%09%09%09%09c-16.3,1.8-31.9,5.4-45.3,11.6c-12.1,6.2-22.8,12.2-32.4,18.1c-14.5,34.4,20,53.7,1.7,57.9c-14.3,3.3-16.2-30.4-16.2-48.5%0A%09%09%09%09c-124.9,86.7,2.8,144.8,2.8,144.8c0.1,0.5,0.2,1,0.3,1.6c11.4,70.5,70.1,82,134.6,58.3c-10-8-28.1-22.8-31-26.1%0A%09%09%09%09C1315,2147.7,1321.1,2139.9,1331.3,2151z" class="st10"></path>%0A%09%09%09<path d="M1433.5,1969.4c0,0-146,112.4-218.2,149.3" class="st11"></path>%0A%09%09%09<path d="M1396.4,2051c0,0-33.9,4.5-68.8-3.9" class="st11"></path>%0A%09%09%09<path d="M1316.2,1996.6c0,0-20.5,49.4-10.8,65.9" class="st11"></path>%0A%09%09%09<path d="M1352,2122.6c0,0-59.6-20.8-79-38.4" class="st11"></path>%0A%09%09%09<path d="M1216.4,2052.4c0,0-4.7,37.9,18.4,55.6" class="st11"></path>%0A%09%09</g>%0A%09%09<g>%0A%09%09%09<path d="M882.7,2066.4c10.6,1.3,21,2.9,31.1,4.8c13.6,13.1,30.4,35.2,30.3,62.7c-1.8,23.8,15.4,19.7,16.3,10%0A%09%09%09%09c0.7-7-2.6-43-4.5-62.6c108.1,32.2,164.1,103.7,86.8,204.4c0,0,80.5,195.4-178.5,184.8c22.7-22.7,62.8-66.9,41.4-76.4%0A%09%09%09%09c-27.3-12.2-10,45.1-70.7,74.5c-19-1.7-39.5-4.4-61.7-8.2c-24-5.1-47.2-15.4-69.1-28.8c39.7-11.4,137-41.9,120.6-63.3%0A%09%09%09%09c-18.9-24.6-31,45.8-143.9,47.6c-21.5-15.8-41.4-33.9-58.9-52.1c37.3-6,107.4-20.1,100.5-40.6c-5.2-8.8-23.3,1.5-49.6,10.6%0A%09%09%09%09c-16.7,5.7-46.9,10.3-66.7,12.9c-38.7-43.2-62.7-81.8-62.7-81.8s30.7-35.6,77.3-76.8c23.3,3.1,68.1,9.9,76,18.1%0A%09%09%09%09c10.7,11.2,29.3,3.1,19.9-14.1c-7.3-13.2-42.1-23.8-69.1-26.7c20.4-16.6,42.9-33.2,66.6-48c31,11.1,99.6,37.5,106.2,56.3%0A%09%09%09%09c7.6,12.8,28.5,9,14.2-20.6c-10.9-22.7-68.4-42.4-95-50.5C786.1,2077.1,836.1,2060.7,882.7,2066.4z" class="st12"></path>%0A%09%09%09<path d="M593.2,2264.5c0,0,316.6-1.6,449.7,21.1" class="st13"></path>%0A%09%09%09<path d="M740.2,2197.3c0,0,46.4,26.9,77.7,70.8" class="st13"></path>%0A%09%09%09<path d="M768.3,2342.5c0,0,86.7-42.5,95.7-72.6" class="st13"></path>%0A%09%09%09<path d="M883.4,2149.7c0,0,45.4,83.2,46.7,123.9" class="st13"></path>%0A%09%09%09<path d="M958.3,2368c0,0,53.3-43.2,47.7-87.5" class="st13"></path>%0A%09%09</g>%0A%09%09<g>%0A%09%09%09<path d="M924,1810c7.6,5.4,14.9,11,21.8,16.7c4.5,17.1,7.4,43.4-5.2,67.8c-12.3,20.5,2.9,23.7,8,15.4%0A%09%09%09%09c3.7-5.9,17.7-39.3,25.2-57.5c68.8,71.8,79.4,157.7-26.4,216.5c0,0-27.1,205.9-222.4,93.1c27.9-11.1,79.1-34.4,67-51.4%0A%09%09%09%09c-15.5-21.8-28.3,36.1-88.6,38c-13.9-9.1-28.5-19.7-43.9-32c-16.2-14.1-29.4-32.6-40.2-53.2c35.9,5.7,125,17.5,122.1-8.1%0A%09%09%09%09c-3.3-29.5-44.9,28.3-132.9-15.1c-9.4-22.6-16.5-46.7-21.7-69.8c31.6,9.6,92.2,25,96.2,4c0-9.9-18.7-8-43.2-10.4%0A%09%09%09%09c-15.5-1.6-41-9.5-57.5-15.1c-10.2-53.9-11.1-97.8-11.1-97.8s40-19.4,94.8-37.4c16.6,12,48.1,36,50.4,46.4%0A%09%09%09%09c3.2,14.2,21.3,14.5,21.8-4.6c0.4-14.7-21.6-38-41.2-51.3c23.4-6.6,48.4-12.4,73.4-16.1c18.9,22.3,59.8,73.1,56.3,92.5%0A%09%09%09%09c0,14.5,17.9,19.4,20.4-12.7c1.9-24.5-33.5-65-50.3-82.8C844.5,1781,890.6,1786.3,924,1810z" class="st10"></path>%0A%09%09%09<path d="M609.7,1870.6c0,0,245.3,125,337.8,198.4" class="st11"></path>%0A%09%09%09<path d="M754.1,1869.5c0,0,23.6,42.4,27.7,94" class="st11"></path>%0A%09%09%09<path d="M709.4,2009.9c0,0,86.4-3.2,107.1-26.3" class="st11"></path>%0A%09%09%09<path d="M886.5,1884.4c0,0-2.9,92.1-20.5,128.9" class="st11"></path>%0A%09%09%09<path d="M844.5,2108.4c0,0,60.9-17.2,76.8-58.8" class="st11"></path>%0A%09%09</g>%0A%09%09<g>%0A%09%09%09<path d="M1245.1,1794.2c20.8-5.3,34.8-21,42.5-32.8c-0.2-7.2-0.7-14.6-1.4-22.1c-3.2-32.9-23.8-63.7-50.7-90.6%0A%09%09%09%09c-1.8,19.7-7.4,62.7-22.8,74.5c-20.1,15.5-26.4,2-17.9-5.6c13.2-8.1,22.1-59.9,25.4-83.2c-15-13.2-31.3-25.3-47.2-36%0A%09%09%09%09c2.2,19-0.2,44.7-9,52.2c-11.4,9.8-20.6-1.3-13.9-10.8c4.9-7,2.8-38.8,1.4-55.2c-33.1-20.3-61.3-33.5-68.7-36.8%0A%09%09%09%09c-1.2-0.6-1.9-0.9-1.9-0.9s-25.3,23.8-51.7,58.6c5.2,13,13.5,32.7,20.6,42.9c11.1,16.1,21.9,26.5,16,31.7%0A%09%09%09%09c-14.4,8.7-36.4-36.3-47-60.5c-10.9,15.5-21.4,32.5-29.9,50.2c19.7,76.5,74.9,71.1,59.3,88.7c-13.5,15.3-52.4-45-67.4-69.8%0A%09%09%09%09c-6.6,17.5-10.6,35.3-10.6,52.6c0.7,15.9,2,30.4,3.8,43.6c32.1,35.6,72.7,12.7,67.8,33.6c-3.8,16.4-43.7-2.3-64.6-13.4%0A%09%09%09%09c33.9,178.4,168.8,85.6,168.8,85.6c0.7,0.2,1.3,0.5,2,0.7c87.5,31.6,132-20.3,138.8-99.5c-14.6,5.1-41.3,14.3-46.7,15.2%0A%09%09%09%09C1232.6,1808.5,1226.7,1797.5,1245.1,1794.2z" class="st10"></path>%0A%09%09%09<path d="M1089.2,1580.6c0,0,52.5,215.2,56.8,310.2" class="st11"></path>%0A%09%09%09<path d="M1164,1667.7c0,0-12.8,36.8-41,66.6" class="st11"></path>%0A%09%09%09<path d="M1058.6,1715c0,0,46.2,50.8,70.4,51.1" class="st11"></path>%0A%09%09%09<path d="M1223.1,1755.9c0,0-55.6,47.1-86.3,55.9" class="st11"></path>%0A%09%09%09<path d="M1070,1849.3c0,0,41.4,27.9,74,15.4" class="st11"></path>%0A%09%09</g>%0A%09%09<path d="M1146.1,1890.8c0,0,14.8,158.8-25,350.6" class="st14"></path>%0A%09%09<path d="M937.7,2061.4c0,0,170.2,50.3,183.3,183.5" class="st14"></path>%0A%09%09<path d="M1029.4,2285.6c13.6-4.9,80.6-4.6,99.5,8.8" class="st14"></path>%0A%09%09<path d="M1223.3,2114.4c0,0-98.3,30.9-77.3,232.1" class="st14"></path>%0A%09</g>%0A%09<g>%0A%09%09<path d="M2812.2,2216.6c0,0,60.8,180.6,68.3,350.2c-193.8,44.1-832.8-6.2-832.8-6.2%0A%09%09%09s14-297.1,80.4-332.6C2416.5,2250.4,2812.2,2216.6,2812.2,2216.6z" class="Graphic_x0020_Style_x0020_110"></path>%0A%09%09<path d="M2880.5,2566.9c-7.5-169.6-68.3-350.2-68.3-350.2s-395.8,33.8-684.1,11.4%0A%09%09%09c-17.2,9.2-30.9,36-41.7,70.6c61.5,25.5,298.6,104,672.8-9.3c-4.1,90.6,73.5,94.8,73.5,94.8c12.1,42.2,11.5,131.9,9.7,189.5%0A%09%09%09C2856.4,2571.7,2869.2,2569.4,2880.5,2566.9z" class="Graphic_x0020_Style_x0020_116"></path>%0A%09%09<path d="M2025.5,1497.7c-85.5,55.5-169,100.9-241.9,164.1c7.6,4.2,13.3,9.3,16.2,15.7%0A%09%09%09c0,0,180.9-97,314-235c-1,0.6-1.9,1.2-2.9,1.8C2081.6,1463,2054.9,1479,2025.5,1497.7z" class="Graphic_x0020_Style_x0020_120"></path>%0A%09%09<path d="M2229.4,1095.4c-25.7-0.9-176.5,78.1-272.1,168.2c-95.6,90.1-340.3,323.9-337.5,369.2%0A%09%09%09c19.6,10.4,121.7,5.7,163.9,29c72.9-63.1,156.4-108.6,241.9-164.1c29.4-18.7,56.1-34.7,85.5-53.4c0.9-0.7,1.9-1.2,2.9-1.8%0A%09%09%09c13.7-14.2,26.8-28.8,39.2-43.8C2153.1,1398.7,2255.2,1096.3,2229.4,1095.4z" class="st15"></path>%0A%09%09<path d="M2771.6,1674.1c-70.5,28.9-142.4,50.7-222.4,50.7c-37.4,0-80.1,18.7-104.2,53.4%0A%09%09%09c-61.4,98.9-133.6,184.3-232.4,229.8c-32.1,14.6-74.5,15.6-110.7,1.8c-16.7,87.9-31.4,153-31.4,153s68.3,148.9,349.6,142.7%0A%09%09%09c281.3-6.2,397.1-37.2,407.5-93.1C2841.2,2157.3,2787.4,1837.7,2771.6,1674.1z M2709.5,2042.7v-2.7V2042.7z" class="Graphic_x0020_Style_x0020_120"></path>%0A%09%09<path d="M2767.4,1598.2c4.1-101.3,24.8-260.6-97.2-366.1c-122-105.5-384.9-173.4-473.5-126.7l-76.5,292.8%0A%09%09%09c11.8,55.4,25.9,140.8,27.6,239.6c1.7,97.6-23.8,254.9-46,372c36.3,13.8,78.6,12.7,110.7-1.8c98.9-45.4,171-130.9,232.4-229.8%0A%09%09%09c24-34.7,66.8-53.4,104.2-53.4c80,0,151.9-21.8,222.4-50.7C2768.4,1641.5,2766.7,1615.1,2767.4,1598.2z" class="st15"></path>%0A%09%09<path d="M2357.9,1064.1c0,0-9-52.4-22.1-33.8c-13.1,18.6-10.3,92.4,9,98.6" class="st16"></path>%0A%09%09<path d="M2626.6,1195.8c5.3-16-5.3-34.7-24-34.7c-74.8,5.3-155,13.4-224.4-18.7c-23.9-11-31.4-34.7-32.8-58.9%0A%09%09%09c-12.4,46.4-71.3,284.2,13.2,332.7c71.4,40.9,184.3-8.4,256.1-105.5C2581,1285.5,2613.8,1234.5,2626.6,1195.8z" class="st16"></path>%0A%09%09<path d="M2517.2,949.8c-125.5-23.1-169.6,125.8-169.6,125.8s-0.8,2.8-2.2,7.9%0A%09%09%09c1.4,24.2,8.9,47.9,32.8,58.9c69.5,32.1,149.6,24,224.4,18.7c18.7,0,29.4,18.7,24,34.7c-12.9,38.6-45.6,89.7-12,114.9%0A%09%09%09c22.5-30.4,41-65.6,52.8-104.1C2717.1,1045.3,2621.6,969,2517.2,949.8z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M2650.9,1208c2.1-1.4,41.5-29.8,53.8,4.1c10.6,31.7-40.8,91.7-77.6,80.7l-7.2-3.4" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M2641.7,1253.5c0,0,22.4-60.7,39.3-38c16.9,22.7-50.4,66.6-53,66.6C2625.5,1282,2641.7,1253.5,2641.7,1253.5%0A%09%09%09z" class="st16"></path>%0A%09%09<path d="M2695.3,1256.7L2573,1608.5c0,0-4.1,73.6,8.3,89.5c-74.5,98.7-223.4,363.4-223.4,363.4%0A%09%09%09c93.1,24.8,111.9,120,92.1,155.1c108.5-97.2,400.1-407.5,406.4-575C2879.1,1534.1,2854.6,1361.8,2695.3,1256.7z" class="st15"></path>%0A%09%09<path d="M2837.6,1430.3c30.9,169.9,7.7,183.1-75,353.6%0A%09%09%09c-61.7,127.1-230.6,287.4-312.6,360.9c9.9,28.2,8.9,56.1,0,71.9c108.5-97.2,400.1-407.5,406.4-575%0A%09%09%09C2868.7,1583.2,2867.1,1505.7,2837.6,1430.3z" class="Graphic_x0020_Style_x0020_114"></path>%0A%09%09<path d="M2680.8,1197.5c-6.7,0-12.5,1.5-17.3,3.9c-21.5,10.5-26.4,38.8-26.4,38.8s-8.9,23.1-16.3,12.6%0A%09%09%09c-0.8-1.2-1.6-2.7-2.3-4.8c18.6-24.8,18.6-85.5,11.7-103.4c-6.9-17.9-99.3,26.2-212.3-13.8c-68.9-29.9-68.1-84.2-59.4-118%0A%09%09%09c4.5-17.6,11.1-29.6,11.1-29.6c8.7-20.6,14.7-76,34.2-70.3c40.6,11.7,106.8-29.1,164.9-24.4c49.8,4.1,97.3,36.1,128.3,67.6%0A%09%09%09c18.2,18.5,30.7,36.8,34.4,49.1C2741.5,1038.4,2700.5,1163.4,2680.8,1197.5z" class="st17"></path>%0A%09%09<path d="M2759.2,2289.4c0,0-18.6,62.6,23.2,86c41.8,23.4,50.2,8.7,50.2,8.7S2751.6,2373.8,2759.2,2289.4z" class="st9"></path>%0A%09%09<path d="M1712.9,1890.5c-52.6-85.2-72.3-184.5-63.6-284.7c-5.7,3.2-11.6,6.9-17.5,11%0A%09%09%09c0,0-40.7,64.1,46.2,255.8c-60.7,57.2-63.2,76.8-57.8,148.5c3.8,6,7.7,11.4,11.8,16.3C1628.4,1981.4,1663.8,1922.1,1712.9,1890.5z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M1827.7,1946.4c-2.8-88.2-44.1-69.6-38.6-133.1c5.5-63.4,12.4-109.6,15.9-150.3%0A%09%09%09c3.3-38.4-60.9-110.4-155.6-57.2c-8.8,100.2,10.9,199.5,63.6,284.7c-49.2,31.6-84.5,91-80.9,146.9c42.1,50.6,95,40.7,95,40.7%0A%09%09%09s40.7-51,44.8-68.3c11.7,0.7-32.4,71-32.4,71s7.6,14.2,24.1,13C1780.1,2092.5,1830.4,2034.6,1827.7,1946.4z" class="st16"></path>%0A%09%09<path d="M1679.1,1995l-15.9,55.8c0,0,23.8-50.3,29.3-72C1698.1,1957.1,1679.1,1995,1679.1,1995z" class="st18"></path>%0A%09%09<path d="M1719.7,2081.7c0.5-1.4,56.1-102.4,65.3-88.7c9.2,13.7-42,92.4-42,92.4s-5.3,3.1-3.5-4.7%0A%09%09%09c1.8-7.8,42.7-68.9,35.4-68.5c-7.4,0.5-44.1,60.7-47.8,65.7S1719.7,2081.7,1719.7,2081.7z" class="st18"></path>%0A%09%09<path d="M1686.9,2067.8c0,0,33.5-83.7,43.3-79.9c9.8,3.9-39.4,83.3-39.4,83.3L1686.9,2067.8z" class="st18"></path>%0A%09%09<path d="M1653.4,1961.3c0,0-15.7,62.3-15.2,75C1645.6,2045.3,1657.7,1960.6,1653.4,1961.3z" class="st18"></path>%0A%09%09<path d="M1761.8,2227.6c-54.2-19.3-110.3-23.2-166.4-38.7c-0.1,0-0.2-0.1-0.3-0.1c8.4,8.6,16.7,17.2,25.1,25.7%0A%09%09%09c53.2,60.7,288.8,91.2,288.8,91.2s-10.9-9.9-72.5-89.2c-8.1,3.7-16.2,7.5-24.4,11.1C1796.6,2235.3,1777.3,2233.4,1761.8,2227.6z" class="st19"></path>%0A%09%09<path d="M1267.8,1860.2c0,0,164.6,162.1,327.3,328.6c0.1,0,0.2,0.1,0.3,0.1c56.1,15.5,112.2,19.3,166.4,38.7%0A%09%09%09c15.5,5.8,34.8,7.7,50.3,0c8.2-3.6,16.4-7.4,24.4-11.1c-33.8-43.5-82.8-108-153.6-203.3%0A%09%09%09C1514.7,2038.1,1267.8,1860.2,1267.8,1860.2z" class="st20"></path>%0A%09%09<path d="M1894.6,2339.3c-53.4,8-106.9,10.7-163-2.7c-19-4.7-34.6-13.9-48.5-25.2%0A%09%09%09c15.8,36.7,102.7,87.4,133.9,82.8c31.7-4.6,303.8-96.5,339.7-99.3c35.9-2.8,272.6-59.4,293.2-78.4c6.2-5.7,10.6-21.4,10.5-40.6%0A%09%09%09c-161,58-322,87.3-483.1,141.9C1950.7,2325.9,1921.3,2334,1894.6,2339.3z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M2357.9,2061.5c-149.6,34-453,200.5-549.1,192.3c0,0-60.2,7.5-96.1-8.3c-35.9-15.8-83.7-37.4-96.5-28.9%0A%09%09%09c-10.2,6.8,29.5,56.4,52.7,80.6c6,6.2,10.8,10.8,13.5,12.5c0.2,0.6,0.5,1.1,0.7,1.7c13.9,11.3,29.5,20.5,48.5,25.2%0A%09%09%09c56.1,13.4,109.5,10.7,163,2.7c26.7-5.3,56.1-13.4,82.8-21.4c161-54.5,322-83.8,483.1-141.9%0A%09%09%09C2460.3,2131.9,2436.5,2068.5,2357.9,2061.5z" class="st16"></path>%0A%09</g>%0A%09<path d="M5147.8,2758.7c3.3,42.6-104.8,129-220.1,160.2c-111.1,40.4-316.5,84.1-839.1,218.8%0A%09%09c-356.5,91.9-571.8,151.6-716.6,186.6c-191.1,46.2-259.5,49.2-368,26c-51.4-11-96.9-24.7-137.9-40%0A%09%09c-255-95.3-339.6-255.1-634.7-236.4c-200.1,12.7-322,96.2-560,42.5c-136.3-30.7-235.9-89.6-304.8-131.1%0A%09%09c0,0-186.3-112.1-344.2-301.7c-39.9-42.2-73.3-85.6-94.5-130.9l1061.8-81.6L5147.8,2758.7z" class="Graphic_x0020_Style_x0020_118"></path>%0A%09<polygon points="1909,2627.9 2329.7,2696.9 2880.5,2648.9 2839.9,2636 1902.2,2607.7 1873.4,2616.7" class="st21"></polygon>%0A%09<path d="M2902.4,2554.2c0,0,128.1,29.9,198.1,36.5c16.9,26,103.7,26.1,139.2,31.4c35.5,5.3,64.9,60.1,137.9,65%0A%09%09c73,4.9,88.9,32.2,118.2,30.1c29.2-2.1,39.1-54.7,49.7-59.9c10.6-5.2-32-38.9-10.7-45.5C3396.5,2597.2,2902.4,2554.2,2902.4,2554.2%0A%09%09z" class="st21"></path>%0A%09<path d="M3668.6,2761.4c39.6,3,90.3-36.8,169.2-23.5c88.5,14.9,307.2,32.5,354.3-1.4%0A%09%09c61.3,3.3,696.2,65.4,749.1,44.1c52.9-21.3,68-34.5,68-34.5l-1182-107.2c0,0-299.4,44.5-286.7,84.2%0A%09%09C3547.2,2749,3629,2758.4,3668.6,2761.4z" class="Graphic_x0020_Style_x0020_117"></path>%0A%09<path d="M3779.6,3218.3c-115.9-48.9-340.1-136.6-484.1-148c-201.1-15.9-340.3-109.9-337.2-157.7%0A%09%09c3.1-47.8-605.8-113-946.8-126.3c-204.7-8-676.2-112.3-330.9-291.5l-79,6.1c-81.3,57.9-200.4,165.5-77.3,230.8%0A%09%09c174.8,92.7,1373.9,95.9,1387.8,212c13.2,110.3,575.5,195.9,765.9,301.5C3710,3236.7,3743.7,3227.7,3779.6,3218.3z" class="st22"></path>%0A%09<g>%0A%09%09<path d="M4484.2,1461.7v1181h488.7v-1181H4484.2z M4939.2,2561.4h-421.4v-539.8h421.4%0A%09%09%09V2561.4z M4939.2,1982.4h-421.4v-485.5h421.4V1982.4z" class="Graphic_x0020_Style_x0020_107"></path>%0A%09%09<rect height="485.5" width="355.8" class="Graphic_x0020_Style_x0020_118" y="1496.9" x="4583.5"></rect>%0A%09%09<rect height="485.5" width="65.6" class="Graphic_x0020_Style_x0020_119" y="1496.9" x="4517.8"></rect>%0A%09%09<rect height="539.8" width="80.1" class="Graphic_x0020_Style_x0020_119" y="2021.5" x="4517.8"></rect>%0A%09%09<rect height="539.8" width="341.3" class="Graphic_x0020_Style_x0020_118" y="2021.5" x="4597.9"></rect>%0A%09%09<polygon points="5067.7,1559.5 4972.9,1461.7 4975.8,2765.4 5070.3,2765.4" class="Graphic_x0020_Style_x0020_110"></polygon>%0A%09</g>%0A%09<g>%0A%09%09<polyline points="2442.7,2752.3 2386.8,2825.9 2352.6,2827.7 2416.8,2743.1 2832.6,2738.3 %0A%09%09%092839.9,2747.7" class="Graphic_x0020_Style_x0020_117"></polyline>%0A%09%09<polygon points="2832.6,2738.3 2416.8,2743.1 2352.6,2827.7 2134.5,2839.2 2105.5,2724.6 %0A%09%09%092798.5,2694.4" class="Graphic_x0020_Style_x0020_117"></polygon>%0A%09%09<polygon points="3202.8,2854.8 2364.9,2854.8 2386.8,2825.9 2442.7,2752.3 2839.9,2747.7 %0A%09%09%093134.1,2744.3" class="Graphic_x0020_Style_x0020_117"></polygon>%0A%09%09<polygon points="2839.5,2730.9 2805.3,2687.1 2112.4,2717.2 2141.4,2831.8 2359.4,2820.3 %0A%09%09%092393.7,2818.5 2449.6,2745 2846.8,2740.3" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09%09<polygon points="3202.8,2848.8 2364.9,2848.8 2386.8,2819.9 2442.7,2746.3 2839.9,2741.7 %0A%09%09%093134.1,2738.3" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09</g>%0A%09<g>%0A%09%09<path d="M3326.7,2053.5c67.2,11.8,127,45.4,188.5,75.5c-25.6-21.6-54.4-38-66.9-44.7c-69.9-65-238.4-55.8-331.3-54.5%0A%09%09%09c-56.7,0.8-107.4,28.8-147.4,65.5C3076.9,2034.1,3204.5,2033.1,3326.7,2053.5z" class="st23"></path>%0A%09%09<path d="M3390.7,2125.6c29.4,10.7,40.1,48.1,64.1,69.5c33.5,30.3,76.4,36.8,117.6,27.5c-4-13-8.3-25.7-12.8-37.7%0A%09%09%09c-7.5-20.2-25.1-39.4-44.4-55.7c-61.4-30.2-121.3-63.8-188.5-75.5c-6.7-1.1-13.5-2.2-20.2-3.1c2.5,4.5,4.8,9.1,6.8,13.8%0A%09%09%09c6.9,18.8,10.9,38,12.4,57.2C3347.5,2119.7,3369.7,2120.3,3390.7,2125.6z" class="st23"></path>%0A%09%09<path d="M3454.8,2195c-24-21.4-34.7-58.8-64.1-69.5c-21.1-5.3-43.3-5.9-65.1-4.2c6.4,84.5-36.4,169.9-95.2,228.6%0A%09%09%09c-29.4,32.1-61.4,58.8-101.5,82.8c-32.1,21.4-66.8,37.4-101.5,53.4c-41.6,14.5-81.5,4.8-119.8-10.2c3.7,32.6,11.1,70.7,27.1,85.4%0A%09%09%09c2.2,2,149.9,56.5,246.1,29.3c130.3-36.9,227.4-163.5,314.2-210.2c10.9-5.9,21.4-12.4,31.4-19.5l-0.4-14l53.6-33.2%0A%09%09%09c3.8-4.2,7.6-8.5,11.2-12.9c-4.1-26.8-10.7-53.3-18.4-78.3C3531.3,2231.8,3488.3,2225.3,3454.8,2195z" class="st24"></path>%0A%09%09<path d="M2963.9,2113.7l-74.4,244.3c3.2,19.6,7.7,41,13.7,64.4c0.8-0.5,1.1,24.3,4.3,53.6%0A%09%09%09c38.3,15.1,78.3,24.8,119.8,10.2c34.7-16,69.5-32.1,101.5-53.4c40.1-24,72.1-50.8,101.5-82.8c65-65,110.5-162.6,91.4-255.6%0A%09%09%09C3210,2135.2,3083,2108.6,2963.9,2113.7z" class="st25"></path>%0A%09%09<path d="M3321.8,2094.4c-2.1-10.2-4.9-20.2-8.6-30.2c-2-4.6-4.2-9.2-6.8-13.8c-116-16.9-235.4-12.9-336.9,44.9%0A%09%09%09l-5.6,18.4C3083,2108.6,3210,2135.2,3321.8,2094.4z" class="st26"></path>%0A%09%09<path d="M3590.8,2300.8c-3.6,4.4-7.4,8.7-11.2,12.9l12-7.5C3591.4,2304.4,3591.1,2302.6,3590.8,2300.8z" class="st9"></path>%0A%09%09<g>%0A%09%09%09<path d="M3452.4,2090.3c-50.3-112.2-85.1-243.7-193.4-309.5c-17.4-9.7-50.3-13.5-71.6,3.9%0A%09%09%09%09c-34.5,27-36.4,68-35.6,109.5c51.1,42.2,96.7,74.2,118.4,75.2c65,3,117,150.1,192.8,215.4c35.5,30.6,78.2,23.7,113.6,7.7%0A%09%09%09%09c-19.8-3.7-39.3-11.4-54.6-19C3487.2,2158,3467.9,2123.1,3452.4,2090.3z" class="Graphic_x0020_Style_x0020_116"></path>%0A%09%09%09<path d="M3489,1994.5c-13.8-96.5-49-197.2-111.1-242.1c-62.1-44.9-38.1-160-114.8-199.7%0A%09%09%09%09c-190.3-102-287.5,4.8-333,55.2c-45.5,50.3-4.1,77.2-4.1,77.2s123.9,124.8,225.9,209c-0.9-41.4,1-82.4,35.6-109.5%0A%09%09%09%09c21.3-17.4,54.2-13.5,71.6-3.9c108.3,65.8,143.1,197.3,193.4,309.5c15.5,32.9,34.8,67.7,69.6,83.2c15.3,7.7,34.8,15.3,54.6,19%0A%09%09%09%09c40.3-18.2,71.2-48.2,71.2-48.2S3502.8,2091.1,3489,1994.5z" class="Graphic_x0020_Style_x0020_108"></path>%0A%09%09%09<path d="M3182.3,2144.3c-13.4-74.8,34.7-189.7-58.8-221.7c-16-61.4,5.3-128.2-37.4-184.3%0A%09%09%09%09c-33.7-46.4-75.8-81.1-127.5-97.6c-15.4,4-42.2,14-46.3,24.6c-13.8,35.6-24.4,108.3-3.6,195.1c19.9,94,53.6,191.2,151.7,162.7%0A%09%09%09%09c51,68.9,51,103.4,48.3,128.2c25.3,30.5,60,37.2,94.1,32.1C3192.8,2173.6,3185.5,2160.8,3182.3,2144.3z" class="st16"></path>%0A%09%09%09<path d="M3314.2,2124.9c-5.5-129.6-75.8-207-93.8-211.7c30.3-46.1,33.1-82-6.9-106.8%0A%09%09%09%09c-40-24.8-57.9,67.6-57.9,67.6s-19.3,18-16-3.3c17.7-114.7-62.5-214-170.5-231.9c-1.2-0.2-5.1,0.5-10.4,1.9%0A%09%09%09%09c51.7,16.5,93.8,51.2,127.5,97.6c42.7,56.1,21.4,122.9,37.4,184.3c93.5,32.1,45.4,146.9,58.8,221.7c3.1,16.5,10.5,29.3,20.4,38.9%0A%09%09%09%09C3250.3,2176,3296.5,2145.8,3314.2,2124.9z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09%09<path d="M2969,1635.8c0,0,75.2,27.2,72.4,70.7c-2.8,43.5-9.8,77.5,56.3,98.1c-31.6-35.6-34.2-44-26.9-86.3%0A%09%09%09%09S3035.8,1587.8,2969,1635.8z" class="st17"></path>%0A%09%09%09<path d="M2789.6,2288.5c-77.5,101.5-203,106.9-323.3,128.2c-27.7,5.9-43.7,28.1-64.3,43.4%0A%09%09%09%09c7.2,13.8,19.1,27.9,28,39.8c0.5-0.1,1.1-0.3,1.6-0.4c159.5-16.7,359.4-29.1,470.9-150.7l-0.1-16l61-218.3%0A%09%09%09%09c-27.4,9-56.1,12.8-77.6,32.4C2837.7,2184.3,2824.3,2243.1,2789.6,2288.5z" class="st25"></path>%0A%09%09%09<path d="M3017.4,2050.7c-17.9,4.3-35.5,9.7-52.8,16.1c-58.6,21.8-113.1,55-149.7,106.6%0A%09%09%09%09c-16.4,23.2-29.7,48.3-42.2,73.7c-5.8,11.7-11.7,21.5-19.5,31.9c-8.1,10.8-17.8,20.2-27.8,29.2c-21.9,19.5-47.7,34.4-75.4,44.1%0A%09%09%09%09c-33.1,11.6-67.9,16.1-101.5,25.4c-82.7,23-147.1,41.1-152.6,60.5c-0.2,7,2.3,14.5,6.2,22c20.6-15.4,36.6-37.5,64.3-43.4%0A%09%09%09%09c120.2-21.4,245.8-26.7,323.3-128.2c34.7-45.4,48.1-104.2,96.2-141.6c21.5-19.6,50.2-23.4,77.6-32.4l5.1-18.3%0A%09%09%09%09c11-10.8,16.7-15,29.5-24.1c14.7-10.5,30.5-19.7,47.1-26.7c0.1-0.2,0.2-0.4,0.3-0.6C3036,2046.5,3026.6,2048.4,3017.4,2050.7z" class="st23"></path>%0A%09%09%09<path d="M3045.4,2044.9c-0.1,0.2-0.2,0.4-0.3,0.6c0.7-0.3,1.4-0.6,2.1-0.9%0A%09%09%09%09C3046.6,2044.7,3046,2044.8,3045.4,2044.9z" class="Graphic_x0020_Style_x0020_100"></path>%0A%09%09%09<path d="M2431.6,2499.6c-0.5,0.1-1.1,0.3-1.6,0.4c0.9,1.2,1.8,2.4,2.6,3.6c10.8,15.3,7.8,45,49.1,42.6%0A%09%09%09%09c30.8-6,230-18.7,273.3-29.7c32-8.2,82.2-26.3,148.2-94.1l-0.7-73.5C2791,2470.5,2591.1,2482.9,2431.6,2499.6z" class="st24"></path>%0A%09%09%09<path d="M2398.2,2439.8c0,0,40.7-31.7,69.6,4.1c29,35.9,49.3,96,29,100.7c-20.4,4.6-65.8,2.1-87-35.2%0A%09%09%09%09C2388.5,2472.2,2387.5,2454.3,2398.2,2439.8z" class="st27"></path>%0A%09%09%09<path d="M3350.7,1877.1c18.7-58.6,71.9-104,69.5-165.2c-4.1,1.2-8.2,5.1-10.8,12.5c-7.6,21.4-71.4,103.8-71.4,103.8%0A%09%09%09%09s0,0,3.8-22.1s1.4-35.5-9.7-36.9c-11-1.4-18.3,10.3-18.3,10.3c1-31-13.4-29.3-23.4-27.6c-10,1.7-9.3,51.4-10,64.8%0A%09%09%09%09c-0.7,13.4-15.2,26.9-20-4.1c-2.8-35.9-40.7-71.7-51.7-66.9c-11,4.8,14.8,62,13.1,94.5c-1.7,32.4-20,100.7-5.5,148.2%0A%09%09%09%09c14.5,47.6-3.4,102-3.4,102l85.3,21.2c4.2-67.5,4.5-134.6,44.5-197.1C3350.7,1903.8,3348,1890.5,3350.7,1877.1z" class="st16"></path>%0A%09%09%09<path d="M3420.1,1711.9c2.4,61.2-50.8,106.6-69.5,165.2c-2.7,13.4,0,26.7-8,37.4%0A%09%09%09%09c-40,62.5-40.2,129.7-44.5,197.1l22.9,5.7c0,0-3.5-115.8,17.2-141.3c20.7-25.5,15.2-80,25.3-108.9c10.1-29,71.3-117.9,72-137.2%0A%09%09%09%09C3436,1717.3,3427.9,1709.7,3420.1,1711.9z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09%09<path d="M3305.2,1839.7c-0.4,0.9,11-56.8,9-67.2c4.3,1.6,4.3,1.6,4.3,1.6S3312.8,1824.1,3305.2,1839.7z" class="st9"></path>%0A%09%09%09<g>%0A%09%09%09%09<polygon points="2369.1,2558.8 2880.5,2623.2 2325,2668.2 1891.1,2604.1" class="Graphic_x0020_Style_x0020_115"></polygon>%0A%09%09%09%09<polygon points="2264.3,2566.5 2626.8,2624.8 2334.4,2648.9 2170.4,2611.3" class="Graphic_x0020_Style_x0020_109"></polygon>%0A%09%09%09%09<path d="M2421.8,2452.1c-5.6-0.2-22.6,8.6-22.6,8.6s-13.8-44.1-80.7-43.4s-64.8,65.5-64.8,65.5s5.5,77.2,26.9,93.1%0A%09%09%09%09%09c21.4,15.9,99.3,4.1,102.4,0c3.1-4.1,45.3-6.9,66.9-30.3c21.6-23.4,33.5-24.4,33.5-24.4S2463.5,2453.5,2421.8,2452.1z" class="st16"></path>%0A%09%09%09%09<path d="M2319.3,2460c0,0-45.5,32.4-15.2,90.3c-6.8,0.6-6.8,0.6-6.8,0.6%0A%09%09%09%09%09S2262.7,2493.1,2319.3,2460z" class="Graphic_x0020_Style_x0020_104"></path>%0A%09%09%09%09<path d="M2376.8,2552.2c0,0-56.9-11.2-43.1-33.6c13.8-22.4,45.5-15.9,46.9-24.5%0A%09%09%09%09%09c1.4-8.6-15.9-23.8-21.7-14.5c-5.9,9.3-15.5,25.2-15.5,25.2s-24.1,6.2-17.9,23.1c6.2,16.9,33.8,15.5,6.2,16.9%0A%09%09%09%09%09c-27.6,1.4-39.6,0-39.6,0s-7.4,36.2,7.3,37.5c14.7,1.4,61.6,6.9,105-10.3c43.4-17.2,43.8-24.7,43.8-24.7%0A%09%09%09%09%09S2401.3,2559.2,2376.8,2552.2z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09%09%09<polygon points="2331,2682 2848.1,2642 2880.5,2623.2 2322,2668.2 1885.6,2604.1 %0A%09%09%09%09%091893.9,2613.5" class="Graphic_x0020_Style_x0020_109"></polygon>%0A%09%09%09%09<path d="M1784.9,2001.5l427.1,0.5l15.9,3c18.3,3.5,31.9,18.7,33.5,37.3c9.9,120.2,38.5,538.8,42.7,616.9%0A%09%09%09%09%09c0.3,6.5-11.2,15-17.7,14.2l-444.6-65.8L1784.9,2001.5z" class="st28"></path>%0A%09%09%09%09<path d="M1794.6,1993.3l411.5,8.2c15.8,0.3,28.8,12.5,30.1,28.3c10.4,126.7,52.8,644.5,49.2,643.3%0A%09%09%09%09%09c-3.6-1.2-348.6-51.6-443.5-65.4c-14.1-2.1-24.9-13.4-26.2-27.6l-52.4-553C1761.5,2008.7,1776.2,1992.9,1794.6,1993.3z" class="st29"></path>%0A%09%09%09</g>%0A%09%09%09<path d="M3465.5,2285.9c-5.8-29.1-28.6-54-57-68.5c9.3,57-21.2,85.5-21.2,85.5c-6.8,3.4-40.2,78.1-48.3,71.7%0A%09%09%09%09c-4.1-3.3-5.8-14.7-6.3-29.4c-17.3-67.3-4-136.5-11.5-203.5c-2.3-18.1-0.7-36.2-6.7-52.6c-6.5-5.5-15.7-10.3-27.9-14.4%0A%09%09%09%09c0.8,120.3-17.7,240.4,10.5,355.6c8,37.4,77.5,16,112.2-8C3452.2,2392.7,3478.9,2339.3,3465.5,2285.9z" class="st24"></path>%0A%09%09%09<path d="M3332.7,2345.1c-0.9-27.1,2.3-65.1,1.7-83.5c-0.9-28.4,4.6-84.2-6.4-147.7c-0.5-9.3-4.6-17.6-13.4-24.9%0A%09%09%09%09c5.9,16.5,4.4,34.5,6.7,52.6C3328.7,2208.5,3315.4,2277.8,3332.7,2345.1z" class="st27"></path>%0A%09%09%09<path d="M3591.6,2306.2l-189.3-113.8c2.9,8.8,4.9,17.1,6.2,24.9c28.4,14.5,51.2,39.4,57,68.5%0A%09%09%09%09c4.9,19.6,4.4,39.1-0.3,57.5c36.8,33.3,76.9,62.3,118.5,89.3C3596.9,2393.5,3597.6,2349.6,3591.6,2306.2z" class="st24"></path>%0A%09%09%09<path d="M3226.7,2062.8c-4.2-0.5-8.6-0.9-13.2-1.3c-89.6,102-96.5,485.4-63.4,524c10.1,11.8,36.5,17.9,71.6,18.6%0A%09%09%09%09c-2.7-1.6-5.1-3.5-7.3-5.6C3080,2450.9,3137.9,2222.8,3226.7,2062.8z" class="st23"></path>%0A%09%09%09<path d="M3465.3,2343.4c-8.1,31.8-28.7,60.1-55.8,78.8c-34.7,24-104.2,45.4-112.2,8%0A%09%09%09%09c-28.2-115.2-9.7-235.3-10.5-355.6c-15.1-5.1-34.8-9.1-60-11.8c-88.8,160-146.7,388.1-12.3,535.7c2.1,2.1,4.6,4,7.3,5.6%0A%09%09%09%09c79.8,1.5,205-25.2,288.3-77.9c38.4-24.3,61.5-56.9,73.7-93.5C3542.2,2405.6,3502.1,2376.6,3465.3,2343.4z" class="st25"></path>%0A%09%09</g>%0A%09%09<path d="M3123.6,1922.5c3.2,5.9-36.5,92.1-63.1,100.4c35,56.6,28,41.3,37.6,63.1c63.2-44,78.1-61.9,78.3-92.2%0A%09%09%09C3177.1,1914.4,3123.6,1922.5,3123.6,1922.5z" class="st30"></path>%0A%09</g>%0A%09<g>%0A%09%09<path d="M3972.8,2436.5c-19.3-100.6-1.9-197.3,30.9-292.1c1.9-7.7,9.7-13.5,11.6-23.2%0A%09%09%09c13.5-58,34.8-108.3,58-160.5c1.9-7.7,1.9-15.5,3.9-23.2c1.5-4.4,6.3-7.7,9.3-11.5c-108.6,18.8-247.9,49.9-313.3,64.9%0A%09%09%09c22.2,33.7,40.9,69.3,52.5,109.1c3.9,7.7,13.5,13.5,17.4,21.3c3.9,5.8,0,11.6,3.9,17.4c11.6,15.5,21.3,29,25.1,48.4%0A%09%09%09c1.9,3.9,7.7,5.8,7.7,9.7c0,94.8,7.7,189.6,0,284.3c-6.7,72.9-22.6,143.8-37.3,214.7c84.9-0.2,183-1.6,281.4-2.7%0A%09%09%09c-52.2-58.4-91.1-128-129.9-198.4C3984.4,2475.2,3976.6,2455.8,3972.8,2436.5z" class="Graphic_x0020_Style_x0020_114"></path>%0A%09%09<path d="M4194.9,2483.6c82.8-18.7,163-5.3,237.8,48.1c8,8,26.7,5.3,37.4,0%0A%09%09%09c58.6-34.6,128.4-61.3,198-68.7c-150.8-225.4-393-546.7-446.5-551.9c-23.2-2.2-74.3,4.4-135,14.8c-3.1,3.9-7.9,7.1-9.3,11.5%0A%09%09%09c-1.9,7.7-1.9,15.5-3.9,23.2c-23.2,52.2-44.5,102.5-58,160.5c-1.9,9.7-9.7,15.5-11.6,23.2c-32.9,94.8-50.3,191.5-30.9,292.1%0A%09%09%09c3.3,16.6,9.5,33.3,17.3,49.9C4050.6,2508.5,4130.6,2499.3,4194.9,2483.6z" class="Graphic_x0020_Style_x0020_105"></path>%0A%09%09<path d="M4470.1,2531.7c-10.7,5.3-29.4,8-37.4,0c-74.8-53.4-155-66.8-237.8-48.1%0A%09%09%09c-64.3,15.7-144.3,24.9-204.8,2.8c1.3,2.7,2.6,5.4,3.9,8.1c38.9,70.4,77.7,140.1,129.9,198.4c233-2.6,467.2-3.9,529.1,13.9%0A%09%09%09c110.3,31.7,131,20.7,137.9-30.3c2.3-16.7-49.5-103.7-123-213.5C4598.5,2470.4,4528.6,2497,4470.1,2531.7z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09%09<path d="M3879.9,2196.6c0-3.9-5.8-5.8-7.7-9.7c-3.9-19.3-13.5-32.9-25.1-48.4c-3.9-5.8,0-11.6-3.9-17.4%0A%09%09%09c-3.9-7.7-13.5-13.5-17.4-21.3c-11.6-39.8-30.4-75.4-52.5-109.1c-23.2,5.3-37.1,8.6-37.1,8.6s-76.6,50.8-73.5,108.1%0A%09%09%09c3.1,57.3,7.7,545.5-0.1,585.4c44.9,2.2,107.7,2.8,180,2.6c14.8-70.9,30.6-141.8,37.3-214.7%0A%09%09%09C3887.6,2386.2,3879.9,2291.4,3879.9,2196.6z" class="st31"></path>%0A%09%09<path d="M3622.6,2308.8c7.7-30.9,11.6-63.8,40.6-85.1c3.9-3.9,1.9-9.7,5.8-13.5c21.7-17.1,39.8-41.6,63-53.7%0A%09%09%09c-6.4-58.7-17.6-101.8-29.1-95c-30.3,17.9-474.3,322.7-497.1,369.5s-42.1,123.7,13.1,152.8c0,0-20.7-133.5,59.3-157%0A%09%09%09c80-23.4,155.8,45.5,157.2,51c0.7,2.8,16.3,25.9,31.7,46.8c24.5-12.2,48.8-24.7,72.3-41.8%0A%09%09%09C3593.6,2440.4,3609.1,2376.5,3622.6,2308.8z" class="st32"></path>%0A%09%09<path d="M3669.1,2210.2c-3.9,3.9-1.9,9.7-5.8,13.5c-29,21.3-32.9,54.2-40.6,85.1c-13.5,67.7-29,131.5-83.2,174.1%0A%09%09%09c-23.4,17.1-47.7,29.6-72.3,41.8c14.9,20.3,29.7,38.6,30.4,34.1c1.4-9.2,146.2-90.6,205.5-136.8c36.9-28.8,39.6-168.5,29.1-265.5%0A%09%09%09C3708.8,2168.5,3690.8,2193.1,3669.1,2210.2z" class="st31"></path>%0A%09%09<path d="M3252.8,2424.8c-14.7,6.4-25.2,15.5-32.7,25.8c33.5,31.1,84.8,42,119.8,22.2c22.9-10.4,45.8-17.6,64.9-32.9%0A%09%09%09c-0.9-0.6-1.9-1.3-3.1-2.1C3385.9,2421.4,3321.1,2395.2,3252.8,2424.8z" class="st16"></path>%0A%09%09<path d="M3220.1,2450.6c-5.4,7.5-9.3,15.6-11.9,23.8c11.3,29.8,34.2,55.9,59.6,75.9%0A%09%09%09c39.9,36.8,89.5,48.9,140.2,47.1l4-152.6c0,0,0,0-7.2-4.8c-19.1,15.3-42,22.5-64.9,32.9%0A%09%09%09C3304.9,2492.6,3253.6,2481.7,3220.1,2450.6z" class="Graphic_x0020_Style_x0020_113"></path>%0A%09%09<path d="M3267.8,2550.4c-25.4-20-48.3-46.1-59.6-75.9c-0.6,1.9-1.2,3.9-1.7,5.8%0A%09%09%09c-3.2,12.6-4,25-3.7,35.5c0.4,15.7,3.1,26.9,3.1,26.9s73.1,121.3,186.1,122.7c14.5-13.8,14.5-13.8,14.5-13.8l0.5-17.8l0.7-24.6%0A%09%09%09l0.3-11.9C3357.3,2599.3,3307.7,2587.2,3267.8,2550.4z" class="Graphic_x0020_Style_x0020_104"></path>%0A%09%09<path d="M3235.6,2602c0,0,20.6,1.7,15.5-3.8c-16.6-18-47.6-98.2-21.8-124.8c29.7-30.7,122.5-41.5,160.6-26.4%0A%09%09%09c-3.3-14.6-3.3-14.6-3.3-14.6s-76.5-31-120-13.1c-43.4,17.9-62.2,9.2-63.8,77c-1.7,67.8,9.5,101.6,23.2,107.8%0A%09%09%09C3239.7,2610.3,3235.6,2602,3235.6,2602z" class="st33"></path>%0A%09%09<path d="M3226,2604.1c0,0-34.8-98.6-3.2-143.2s183.6-37.2,209.7,22.5c15.9-4.6,15.9-4.6,15.9-4.6%0A%09%09%09s51.4-54.7-36.3-81.6c-87.8-26.9-216.5,9.7-228.4,92.5S3199.4,2597,3226,2604.1z" class="st20"></path>%0A%09%09<path d="M3340,2529c32.1-10.7,40.1-29.4,53.4-58.8c2.7-5.3,21.4,2.7,32.1-5.3%0A%09%09%09c34.7-32.1,80.1-48.1,120.2-32.1c9,3,17.6,7.1,26,11.5c-6.3-16.9-12.8-29.1-12.8-29.1s-3-1.5-7.6-3.6%0A%09%09%09c-11.7-5.4-33.9-14.8-44.8-14.3c-15.2,0.7-29.9,22.1-29.9,22.1s-32.8-9-49.4,0c-16.5,9-18.5,35.5-18.5,35.5s-15.9-1.7-33.9,7.3%0A%09%09%09s-6.2,37.2-6.2,37.2s-15.2-12.4-42.1,6.2c-20.5,12.6-13.4,51.1-1.3,85.4C3326.1,2565.1,3319.5,2533.5,3340,2529z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M3545.7,2432.8c-40.1-16-85.5,0-120.2,32.1c-10.7,8-29.4,0-32.1,5.3c-13.4,29.4-21.4,48.1-53.4,58.8%0A%09%09%09c-20.4,4.5-13.9,36.1-14.7,61.9c4.6,13,9.9,25.4,14.7,35.5c6.7,14.3,12.4,24,13.6,24.5c32.4,14.5,39.8-12.1,39.8-12.1%0A%09%09%09s7.4,27.2,34.4,26.6c27-0.6,13.8-43.4,13.8-43.4s36.8,33.1,54,29c17.2-4.1,4.1-42.1,4.1-42.1s23.4,27.6,48.3,21.4%0A%09%09%09c24.8-6.2-10.3-94-10.3-94s24.1,13.3,41.4-12.2c10.5-21.9,1.8-55.6-7.2-79.8C3563.2,2439.9,3554.7,2435.8,3545.7,2432.8z" class="st16"></path>%0A%09%09<path d="M3855.6,1746.2c-34.7-66.8-53.4-157.6-120.2-181.7c-70.3-26.7-149.3,8.2-227.2-3%0A%09%09%09c-21.3,43.8-31,95-34.5,140.3c-7.9,103.1,20.2,204.3,82.4,287.5c9.2,12.3,20.1,15.4,35.2,15.3c13.5-0.1,92.2-26.6,94.3-24.1%0A%09%09%09c0,0,89.2,104.8,138.8,155.4c3.9,4,7.6,7.6,11.1,10.9c41,38.7,55.1,33.2,55.1,33.2s66.2-16.5,80-60.7c13.8-44.1,68-261.3,68-261.3%0A%09%09%09s-2.5-6.5-5.6-15.8C3959.1,1845.2,3889.3,1813.7,3855.6,1746.2z" class="st16"></path>%0A%09%09<path d="M4022,1797.7c-2.8-24.8,81.8-357.6-168.2-366.8c-89.9-3.3-189,3.2-269.9,46.9%0A%09%09%09c-34.4,18.6-58.8,48.8-75.7,83.7c77.9,11.2,156.9-23.7,227.2,3c66.8,24,85.5,114.9,120.2,181.7c33.8,67.5,103.5,99,177.4,96.1%0A%09%09%09c-1.2-3.7-2.5-7.7-3.8-12.1C4026.1,1819.7,4023.1,1807.8,4022,1797.7z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M4069.8,1569.7c-23-40.4-27.6-96.5-46-109.4c-0.8-25.3-12.8-44.3-33.2-58.9%0A%09%09%09c-26.3-18.9-66.6-30.6-114.7-39.4c-85.5-15.6-326.4,68.3-388.9,41.2c-46.2-20-44.1,85.7-44.1,85.7s-0.6,8.6,2.7,18.9%0A%09%09%09c0.8,2.6,1.9,5.3,3.4,8c6.8,13.1,21.3,26,51.9,25.5c61.6-0.9,148-35.8,156.3-17.5c8.3,18.4,0.9,143.8,12.9,163.8%0A%09%09%09c4.5,0.7,8.3,1.3,11.5,1.8c16,2.6,16,2.6,16,2.6s1.8-85.5,55.2-84.1c18.2,0.5,37.2,5.3,55.1,14.9c34.5,18.6,64.6,55.2,75.4,113.4%0A%09%09%09c16.6,88.2,147.1,77.2,147.1,77.2s2.3-7.5,5.9-19.9c5.1-17.8,12.8-45.6,20-75.9C4070,1659,4082.1,1591.2,4069.8,1569.7z" class="Graphic_x0020_Style_x0020_108"></path>%0A%09%09<polygon points="3720.5,1573.4 3453,1652.4 3452.3,1641 3736.1,1563.3" class="Graphic_x0020_Style_x0020_110"></polygon>%0A%09%09<path d="M3661.3,2544.8c-2.7-1-5.3-2.4-7.9-4.1c4.4,48.9,8.2,80.7,8.2,80.7l146.2-7.8%0A%09%09%09c0,0,5.8-43,13.8-101.1c-7.6,1.5-15.3,3.9-23,7.2C3756.1,2539,3707.8,2556.4,3661.3,2544.8z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09%09<path d="M3847.5,2157.6c-42.9-65.3-126-117.2-122.4-138.8c-110.1-35.4-87.2,349.7-71.6,521.9%0A%09%09%09c2.6,1.7,5.2,3.1,7.9,4.1c46.4,11.6,94.8-5.8,137.3-25.1c7.7-3.3,15.3-5.7,23-7.2c11.1-80.9,26.4-191.1,35.8-255.6%0A%09%09%09C3859.9,2240.5,3857.5,2172.8,3847.5,2157.6z" class="st32"></path>%0A%09%09<path d="M4242.6,2242.6c0,0,36.8,108.5,119.5,116.7c-13.8,52.4,206.2,183.4,206.2,183.4l9.8-23.8l-239.8-248.8%0A%09%09%09L4242.6,2242.6z" class="st34"></path>%0A%09%09<path d="M3298.6,2799c-8.5,5.6-14.3,9.3-14.8,9.1c-2.1-0.7-22.1,19.3-22.1,19.3%0A%09%09%09s33.8,2.8,36.5,0c0.5-0.5,4.9-3.2,11.4-7C3308.5,2811.6,3304.6,2802.8,3298.6,2799z" class="Graphic_x0020_Style_x0020_108"></path>%0A%09%09<path d="M3379,2744c0,0-53.6,37.3-80.3,55c3.9,2.5,6.9,7,8.8,12.3l95.8-56.5%0A%09%09%09C3402.9,2747.5,3396.9,2742.8,3379,2744z" class="Graphic_x0020_Style_x0020_112"></path>%0A%09%09<path d="M3307.5,2811.4c1.1,2.9,1.8,6,2.3,9.1c26.5-15.5,89.9-50.9,89.9-50.9%0A%09%09%09c2.2-5.4,3.8-10.5,3.6-14.7L3307.5,2811.4z" class="Graphic_x0020_Style_x0020_110"></path>%0A%09%09<path d="M4750.6,2686.6c-104.2,18.7-203,5.3-304.6,0c-109.5-2.7-227.1-26.7-334,16%0A%09%09%09c-80.1,29.4-171-21.4-261.8-2.7c-64.6,14.9-126.9,34.4-189.1,52.1c1.8,0.1,3.8,0.2,6,0.2c37.2,0,155.8-45.5,257.9-29%0A%09%09%09s212.4,30.3,251-6.9c96.5,5.5,601.2,41.4,650.9,26.2c10.9-23.2,13.8-50.2,10.6-77.7C4808.9,2673.1,4780.3,2680.7,4750.6,2686.6z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M4112.1,2702.6c106.9-42.7,224.4-18.7,334-16c101.5,5.3,200.4,18.7,304.6,0c29.7-5.9,58.4-13.5,86.9-21.6%0A%09%09%09c-9.7-83.3-75.3-171.2-141.6-173.3c-45.6,12.2-90.4,22.8-134.1,31.9c-331.1,69.3-596.5,55.3-657.4,37%0A%09%09%09c-68.9-20.7-170.7,19.4-243.8,51.1c-73.1,31.7-122,56.6-95.8,74.6c-0.8,1.2-5,6.1-5.1,9.5c-0.1,3.5-5.8,5.5-8.7,8.7%0A%09%09%09c-8.6,9.5-7.7,26.2,7.4,27.1c1.8,0.1,3.6,0.3,5.3,0.6c20,3.4,31.7,17.6,60.9,4.9c30.3-4.1,30.3-4.1,30.3-4.1s-21.9,17.1,6.4,19.1%0A%09%09%09c62.2-17.7,124.5-37.2,189.1-52.1C3941.1,2681.3,4031.9,2732,4112.1,2702.6z" class="st16"></path>%0A%09%09<path d="M5017.7,2587.8c-2.7-5.3,2.7-13.4,0-18.7c-37.4-72.1-72.1-141.6-130.9-195%0A%09%09%09c-45.4-42.7-96.2-77.5-141.6-120.2c-64.1-53.4-101.5-125.6-173.7-165.6c-80.1-45.4-157.6-88.2-243.1-120.2%0A%09%09%09c-56.1-18.7-114.9-8-173.7-10.7c-8,0-13.4-8-18.7-8c-26.9-3.6-52.7-12-77.2-22.8l-4.1,6.3l-47.1,153.2l241.3,154.8%0A%09%09%09c0.7,4.9,2.5,10,5.3,15.1c70.7-21.4,153.8-12.5,210.4,35.3c58.8,50.8,77.5,133.6,138.9,176.3c50.8,37.4,117.6,48.1,155,101.5%0A%09%09%09c26.3,32.9,23.8,78.3-4.4,111.2c16.3,20,31.9,41.7,46.4,65.4c43.6,17.7,172.5,20.1,226.6-52.4%0A%09%09%09C5038.9,2660.1,5036.7,2621.8,5017.7,2587.8z" class="Graphic_x0020_Style_x0020_105"></path>%0A%09%09<path d="M4666.9,2134.6c-215.1-230.3-311.2-220.2-404.5-226.6%0A%09%09%09c-58.4-29.4-93.8-48.3-120.4-4.6c-12.4-21.6-57-17.5-57-17.5l-26.1,40.5c24.5,10.8,50.2,19.2,77.2,22.8c5.3,0,10.7,8,18.7,8%0A%09%09%09c58.8,2.7,117.6-8,173.7,10.7c85.5,32.1,163,74.8,243.1,120.2c72.1,40.1,109.5,112.2,173.7,165.6c45.4,42.7,96.2,77.5,141.6,120.2%0A%09%09%09c58.8,53.4,93.5,122.9,130.9,195c2.7,5.3-2.7,13.4,0,18.7c18.9,34.1,21.2,72.4,9.5,105.5c14.4-19.2,23.5-43.8,24.4-74.7%0A%09%09%09C5055.7,2471,4882,2364.8,4666.9,2134.6z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09%09<path d="M4758.6,2569.1c-37.4-53.4-104.2-64.1-155-101.5%0A%09%09%09c-61.4-42.7-80.1-125.6-138.9-176.3c-56.5-47.8-139.6-56.7-210.4-35.3c25.1,47.2,127.1,102.1,127.1,102.1s20.7,44.1,55.2,84.1%0A%09%09%09c30.5,35.4,193.5,85.8,317.6,238.2C4782.4,2647.3,4784.9,2601.9,4758.6,2569.1z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09%09<path d="M3715.8,2015.7l-33.4,5.8c0,0,86.9,194.9,81.4,227c99.3-46.4,98.4-56.1,98.4-56.1%0A%09%09%09l-7.4-38.1C3852.2,2113.2,3774.4,2063.6,3715.8,2015.7z" class="Graphic_x0020_Style_x0020_100"></path>%0A%09%09<path d="M4035.3,1825.7c0,0-127.3,345.2-108.9,400.3c60.7-14.7,108.9,4.6,108.9,4.6%0A%09%09%09s-11.5-222.5,55.6-345.6C4061.5,1845.5,4035.3,1825.7,4035.3,1825.7z" class="Graphic_x0020_Style_x0020_100"></path>%0A%09%09<path d="M3654.8,2733l130-51c-71.4,10.3-156.4,53.6-160.3,55.2C3633.4,2740.2,3654.8,2733,3654.8,2733z" class="st18"></path>%0A%09%09<path d="M3576.1,2735.8c0,0,55.9-47.6,182.8-76.5c-16.5-5.5-133.9,28.9-190.4,74.1%0A%09%09%09C3573.4,2738.5,3576.1,2735.8,3576.1,2735.8z" class="st18"></path>%0A%09%09<path d="M3558,2699.3c0,0,110.1-70.4,179-82.8c-35.9-12.4-176.2,71.6-176.2,71.6L3558,2699.3z" class="st18"></path>%0A%09%09<path d="M3834.5,1885.6c0,0-102,90.4-148.9,95c48.7,53.3,78.2,78.6,99.3,89.2%0A%09%09%09c0-99.3,91.9-168.2,83.7-237.2c-8.3-68.9-6.4-64.3-6.4-64.3S3863,1851.2,3834.5,1885.6z" class="Graphic_x0020_Style_x0020_104"></path>%0A%09%09<path d="M4897.2,2712.3c-24.8-45.5-111.6-233-210.3-220.6c0,0-65.2,9.2-99.4,20.8c-1.1,12.9,9.7,22,21.7,26.5%0A%09%09%09c104.1,32,201.6,111.9,214.5,216.4c41.8,6.1,86.6,20.3,88.3-2.4C4912.3,2747.3,4901.4,2720.1,4897.2,2712.3z" class="st20"></path>%0A%09%09<path d="M4609.1,2539c-12-4.5-22.8-13.6-21.7-26.5c-9.2,3.1-16.2,6.4-19,9.7c149.6,89.2,160.1,153.2,228.5,227.8%0A%09%09%09c9,2.3,18,4.1,26.7,5.4C4810.8,2650.9,4713.3,2571,4609.1,2539z" class="st35"></path>%0A%09%09<path d="M3389.9,2642.1c0,0-40.9-81.4-37.1-99.3c3.8-17.9-3.1-35.9,15.9-43.4c-6.2,13.8-11,29-10,45.5%0A%09%09%09c1,16.5,34.6,94,34.6,94L3389.9,2642.1z" class="st18"></path>%0A%09%09<path d="M3407,2460.9c0,0-9.2,34.9-1.9,66.6c7.4,31.7,30.8,93.9,37,97.1c6.2,3.2,6.2,3.2,6.2,3.2%0A%09%09%09S3398.3,2507.3,3407,2460.9z" class="st18"></path>%0A%09%09<path d="M3472.9,2418.4c0,0-17,55.4-15.2,76c1.8,20.7,41.7,120.8,41.7,120.8l2.9-3.5%0A%09%09%09c0,0-42.5-108.1-31.7-146c10.9-37.9,9.3-50.7,9.3-50.7L3472.9,2418.4z" class="Graphic_x0020_Style_x0020_104"></path>%0A%09%09<path d="M3537.6,2454.9c0,0-9.2,72.2,0,81.4s20.4,7.3,20.4,7.3S3539.9,2483.9,3537.6,2454.9z" class="st18"></path>%0A%09%09<path d="M3543.3,2484.1c0,0-7.6,38.4-5.8,52.2c0.7,5.4,2.5,11.2,5.6,16.5c7.7,6.5,16.6,9.4,25.4,1.7%0A%09%09%09c15.6-12.5,17.4-32.6,17.5-52.1c-0.7-2.3-1.4-4.6-2.2-7" class="st16"></path>%0A%09%09<g>%0A%09%09%09<polygon points="3466.8,1624.2 3466.8,1624.2 3466.8,1624.2" class="st9"></polygon>%0A%09%09%09<path d="M3516.4,1675.9c-7.1-21.6-14.1-34.6-21-42.6c-3.4-4-6.9-6.7-10.3-8.4%0A%09%09%09%09c-3.4-1.7-6.8-2.3-9.8-2.3c-3.4,0-6.3,0.8-8.6,1.5c-4.1,1.3-8,4.5-10.7,9.6c-2.7,5.1-4.4,12.1-4.4,21.5%0A%09%09%09%09c0,12.2,2.8,28.6,10.1,50.4c6.4,19,13.3,30.6,20.3,37.6c3.5,3.5,7.1,5.8,10.5,7.3c3.4,1.4,6.8,2,9.7,2c2.7,0,5.1-0.4,7.1-0.9%0A%09%09%09%09c2-0.5,3.5-1.1,4.4-1.4l0,0c2.9-0.9,6.2-3.2,8.5-7.4c2.3-4.2,3.8-10.1,3.8-18.4C3526.2,1713.3,3523.6,1697.9,3516.4,1675.9z%0A%09%09%09%09 M3515.7,1738.9c-1.5,2.6-3.1,3.5-4.1,3.8c-1.2,0.4-2.5,0.9-4,1.3c-1.5,0.4-3.3,0.7-5.1,0.7c-2,0-4.3-0.3-6.7-1.4%0A%09%09%09%09c-3.7-1.5-7.9-4.6-12.5-10.9c-4.6-6.2-9.4-15.6-14-29.3c-7.1-21.2-9.7-36.9-9.7-47.9c0-8.5,1.5-14.2,3.5-17.9%0A%09%09%09%09c2-3.6,4.2-5.2,6.2-5.8l0,0c2-0.6,4.1-1.1,6.3-1.1c2,0,4,0.4,6.3,1.5c3.5,1.7,7.7,5.3,12.4,12.6c4.7,7.2,9.7,18.1,14.9,33.8%0A%09%09%09%09c7.1,21.4,9.4,36.2,9.4,46C3518.5,1731.7,3517.1,1736.3,3515.7,1738.9z" class="Graphic_x0020_Style_x0020_110"></path>%0A%09%09</g>%0A%09</g>%0A%09<polygon points="4535.9,1753.6 4677.9,1982.4 4774.4,1982.4 4597.9,1697.5" class="Graphic_x0020_Style_x0020_109"></polygon>%0A%09<polygon points="4616.6,1659.7 4815.1,1982.4 4916.5,1982.4 4705.5,1586.9" class="Graphic_x0020_Style_x0020_105"></polygon>%0A%09<polygon points="4597.9,1697.5 4644.4,1704.9 4815.1,1982.4 4774.4,1982.4" class="Graphic_x0020_Style_x0020_108"></polygon>%0A%09<polygon points="4791.1,1650.6 4705.5,1586.9 4916.5,1982.4 4939.2,1982.4 4939.2,1925.9" class="Graphic_x0020_Style_x0020_107"></polygon>%0A%09<path d="M4590.7,1773.7c0,0,19.3-16,39,11c19.6,27-20.3,47.3-33.4,30.1%0A%09%09C4583.1,1797.4,4579.5,1778.2,4590.7,1773.7z" class="Graphic_x0020_Style_x0020_100"></path>%0A%09<path d="M4596.3,1780.1c0,0,13.5-11.2,27.3,7.7s-14.2,33.1-23.4,21.1%0A%09%09C4591,1796.7,4588.5,1783.2,4596.3,1780.1z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09<polygon points="4609.5,1841.2 4648,1821.1 4757.4,1982.4 4699.5,1982.4" class="Graphic_x0020_Style_x0020_105"></polygon>%0A%09<ellipse ry="38.6" rx="31.7" cy="1701" cx="4703.2" class="Graphic_x0020_Style_x0020_104"></ellipse>%0A%09<polygon points="4705.5,1762.7 4757.4,1724.1 4766.2,1734.7 4712.4,1768.9" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09<polygon points="4718.4,1793 4770.3,1754.3 4779,1764.9 4725.3,1799.2" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09<polygon points="4731.2,1823.2 4783.2,1784.6 4791.9,1795.1 4738.1,1829.4" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09<g>%0A%09%09<path d="M973.4,2494.7c-1.1-7.7-1.9-15.4-2.3-22.9c9.5-13.4,26.8-31.8,52.9-40.2c23.1-6.1,15.4-16.7,6-14.3%0A%09%09%09c-6.8,1.7-40.3,15-58.6,22.4c6.9-84.5,62.6-145.2,175.4-122.9c0,0,168.2-115.8,215,66.2c-26.6-8.7-77.4-22.7-81.8-5%0A%09%09%09c-5.6,22.6,45.1-7,86.4,25.8c2.5,13.6,4.5,28.6,5.7,45.1c0.4,18.1-4.3,37.3-12.2,56.6c-19.6-23.9-69.9-81.6-86.6-63.7%0A%09%09%09c-19.3,20.6,50.3,7.3,76.9,84.6c-10.3,19.7-23.2,39-36.6,56.7c-13.9-23.9-42.7-67.9-60.7-56.8c-7.2,6.3,6.6,15.6,21,31%0A%09%09%09c9.1,9.8,20.1,29.2,27,42.1c-32.6,40-64,68.5-64,68.5s-40.6-10.2-90-29.6c-2.2-17-5.6-50,0.5-58c8.3-10.9-3.5-21.2-17.7-9.4%0A%09%09%09c-11,9.1-13.4,36.4-10.2,55.9c-20.3-9-41-19.4-60.3-31.1c3.7-24.8,13.8-80.3,30.3-90.6c10.5-9.2,2.3-22.4-22.7-3.4%0A%09%09%09c-19.2,14.5-25.3,60.3-27.2,81.1C1004.8,2558,978.2,2528.6,973.4,2494.7z" class="st10"></path>%0A%09%09<path d="M1225.4,2633.4c0,0-71-217.9-78.6-316.8" class="st11"></path>%0A%09%09<path d="M1129.2,2552.6c0,0,15.4-40.3,50.3-75.4" class="st11"></path>%0A%09%09<path d="M1261.1,2488.4c0,0-59.5-46.7-90-43.7" class="st11"></path>%0A%09%09<path d="M1052.5,2468.5c0,0,69.2-57,107.6-70.5" class="st11"></path>%0A%09%09<path d="M1243.7,2349.5c0,0-52.8-23.4-93.7-5.9" class="st11"></path>%0A%09</g>%0A%09<path d="M3360.2,3327.1c-71.4-58-182.9-129.1-345.1-184.1c-329.3-111.6-176.9-187.3-303.6-225.2%0A%09%09s-430.3-22.5-784.9-68.8s-643.1-33.1-556-162c60.4-89.4,145-152.7,191.1-183.1l-109.7,8.4c-108.3,81.3-312.5,270.2,66.8,308.2%0A%09%09c486.5,48.7,1181.1,101.9,1192.6,208.2c9.2,84.8,440.1,200.1,610.2,307.3C3334,3333.3,3346.8,3330.3,3360.2,3327.1z" class="st22"></path>%0A%09<linearGradient y2="608.8419" x2="3633.9429" y1="608.8419" x1="3431.6741" gradientUnits="userSpaceOnUse" id="SVGID_9_">%0A%09%09<stop style="stop-color:%234085F0" offset="0"></stop>%0A%09%09<stop style="stop-color:%23275DC9" offset="1"></stop>%0A%09</linearGradient>%0A%09<ellipse ry="101.1" rx="101.1" cy="608.8" cx="3532.8" class="st36"></ellipse>%0A%09<linearGradient y2="3174.8586" x2="1457.2415" y1="3174.8586" x1="1136.8959" gradientUnits="userSpaceOnUse" id="SVGID_10_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23529BF7" offset="1"></stop>%0A%09</linearGradient>%0A%09<ellipse ry="106.3" rx="160.2" cy="3174.9" cx="1297.1" class="st37"></ellipse>%0A%09<linearGradient y2="2968.6479" x2="1266.5088" y1="2968.6479" x1="1085.6805" gradientUnits="userSpaceOnUse" id="SVGID_11_">%0A%09%09<stop style="stop-color:%234085F0" offset="0"></stop>%0A%09%09<stop style="stop-color:%23275DC9" offset="1"></stop>%0A%09</linearGradient>%0A%09<ellipse ry="60" rx="90.4" cy="2968.6" cx="1176.1" class="st38"></ellipse>%0A%09<linearGradient y2="3078.0559" x2="5051.6841" y1="3078.0559" x1="4866.0625" gradientUnits="userSpaceOnUse" id="SVGID_12_">%0A%09%09<stop style="stop-color:%234085F0" offset="0"></stop>%0A%09%09<stop style="stop-color:%23275DC9" offset="1"></stop>%0A%09</linearGradient>%0A%09<ellipse ry="92.8" rx="92.8" cy="3078.1" cx="4958.9" class="st39"></ellipse>%0A%09<path d="M2285.6,3438c0,0,206.8,24.5,420.7-87.7c42.5-28.4,62.6,33.1,35.4,53.2%0A%09%09c-27.2,20.1-168.9,100.4-399.3,87.4C2216,3486.1,2239.4,3435.8,2285.6,3438z" class="Graphic_x0020_Style_x0020_100"></path>%0A</g>%0A</svg>%0A';
3882
- var SignIn = (props) => {
3883
- const { extra } = props;
3884
- const {
3885
- title: { text },
3886
- unregistered
3887
- } = useToolkitsStore((s) => s);
3888
- const queryParams = new URLSearchParams(window.location.search);
3889
- const { token, setToken, mainPagePath } = useToolkitsStore((state) => state);
3890
- const ky2 = useKy();
3891
- const { t } = useTranslation();
3892
- const ticket = queryParams.get("ticket");
3893
- console.log("Ticket from URL:", ticket);
3894
- console.log("Has ticket:", queryParams.has("ticket"));
3895
- console.log("Full search params:", window.location.search);
3896
- const { isLoading } = useSWR4(
3897
- queryParams.has("ticket") ? `/api/usystem/user/login?ticket=${queryParams.get("ticket")}` : null,
3898
- (url4) => ky2.get(url4),
3899
- {
3900
- onSuccess: (data) => {
3901
- if (data && "token" in data && typeof data.token === "string") {
3902
- setToken(data.token);
3903
- }
3904
- }
3905
- }
3906
- );
3907
- if (isLoading) {
3908
- return /* @__PURE__ */ jsx("div", { className: "w-screen h-screen flex justify-center items-center", children: /* @__PURE__ */ jsx(Spin, {}) });
3909
- }
3910
- if (token) {
3911
- const hashMode = !!window.location.hash;
3912
- const path = mainPagePath;
3913
- if (!hashMode) {
3914
- return /* @__PURE__ */ jsx(Navigate, { replace: true, to: mainPagePath });
3915
- }
3916
- window.location.href = `${window.location.origin}${window.location.pathname}#${path}`;
3917
- return null;
3918
- }
3919
- return /* @__PURE__ */ jsxs("div", { className: "w-screen h-screen relative flex overflow-hidden", children: [
3920
- /* @__PURE__ */ jsx("div", { className: "absolute top-16 right-16 z-10", children: extra }),
3921
- /* @__PURE__ */ jsx("div", { className: "absolute left-14 top-6", children: /* @__PURE__ */ jsxs(Space, { align: "center", children: [
3922
- /* @__PURE__ */ jsx(Logo_default, { width: 48 }),
3923
- /* @__PURE__ */ jsx("span", { className: "text-2xl font-bold", children: text })
3924
- ] }) }),
3925
- /* @__PURE__ */ jsx("div", { className: "flex-1 flex justify-center items-center bg-slate-50", children: /* @__PURE__ */ jsx("img", { src: background_default, alt: "background", className: "w-10/12" }) }),
3926
- /* @__PURE__ */ jsx("div", { className: "w-[650px] relative top-0 left-0 right-0 bottom-0", children: /* @__PURE__ */ jsx("div", { className: "absolute top-1/2 -translate-y-1/2 left-0 right-0", children: /* @__PURE__ */ jsx("div", { className: "-translate-y-10 px-36", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col justify-center", children: [
3927
- /* @__PURE__ */ jsx("div", { className: "h-10", children: unregistered && /* @__PURE__ */ jsx(Alert, { banner: true, closable: true, message: t("SignIn.unregistered"), type: "error" }) }),
3928
- /* @__PURE__ */ jsx(Typography.Title, { level: 2, children: t("SignIn.welcome") }),
3929
- /* @__PURE__ */ jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxs(Form, { layout: "vertical", autoComplete: "off", children: [
3930
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.username"), name: "username", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, {}) }),
3931
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.password"), name: "password", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input.Password, {}) }),
3932
- /* @__PURE__ */ jsx(Form.Item, { children: /* @__PURE__ */ jsx(Button, { block: true, type: "primary", shape: "round", htmlType: "submit", children: t("global.signIn") }) })
3933
- ] }) }),
3934
- /* @__PURE__ */ jsx(Divider, { plain: true, dashed: true, children: t("SignIn.thirdParty") }),
3935
- /* @__PURE__ */ jsx("div", { className: "flex justify-center items-center", children: /* @__PURE__ */ jsxs(
3936
- Button,
3937
- {
3938
- block: true,
3939
- shape: "round",
3940
- href: `${SSO_URL}/logout?service=${SSO_URL}/login?service=${window.location.href}`,
3941
- target: "_self",
3942
- children: [
3943
- /* @__PURE__ */ jsx(Logo_default, { width: 18 }),
3944
- t("SignIn.signInWithIDass")
3945
- ]
3946
- }
3947
- ) })
3948
- ] }) }) }) })
3949
- ] });
3950
- };
3951
- var signIn_default = SignIn;
3952
-
3953
- // src/index.ts
3954
- init_services();
3955
- init_utils();
3956
-
3957
- export { APP_ID_HEADER, DynamicTags_default as DynamicTags, ExpandableParagraph_default as ExpandableParagraph, FRONTEND_ROUTE_PREFIX, FilterFormWrapper_default as FilterFormWrapper, Highlight_default as Highlight, InfiniteList_default as InfiniteList, Layout_default as Layout, NavMenu_default as NavMenu, notFound_default as NotFound, operationLogList_default as OperationLogList, PermissionButton_default as PermissionButton, PermissionVersion, QueryList_default as QueryList, QueryListAction, RequireGame_default as RequireGame, RequirePermission_default as RequirePermission, SSO_URL, signIn_default as SignIn, ToolkitsProvider_default as ToolkitsProvider, UserWidget_default as UserWidget, WILDCARD, generateId, menu_default as menuRoutes, mixedStorage, permission_default as permissionRoutes, useDraw, useDrawerStore, useFindGame, useFormDraw, useFormModal, useGames, useMenuList, useModal, useModalStore, usePermission, useQueryListStore, useToolkitsStore, withContext };
3958
- //# sourceMappingURL=index.js.map
3959
- //# sourceMappingURL=index.js.map
1
+ import {jwtDecode}from'jwt-decode';import {create,useStore,createStore}from'zustand';import {persist,createJSONStorage}from'zustand/middleware';import*as Ye from'antd';import {Modal,Form,Button,Drawer,Spin,Result,Table,Card,Input,Select,App,Space,Popconfirm,Switch,InputNumber,theme,Tag,Typography,Alert,Divider,notification,Menu,Row,Col,Breadcrumb,Descriptions,Skeleton,Empty,Dropdown,Tooltip,Checkbox,Collapse}from'antd';import {forwardRef,lazy,useContext,useMemo,useState,useCallback,useEffect,useImperativeHandle,cloneElement,useRef,createContext,memo,Fragment as Fragment$1,Suspense,useTransition}from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {last,has,template,get,isEqual,first}from'lodash-es';import {flushSync}from'react-dom';import {createRoot}from'react-dom/client';import qa from'ky';import Ue,{mutate,unstable_serialize,useSWRConfig}from'swr';import dn from'swr/immutable';import un from'./logo-L6MFCL6M.png';import {Routes,Route,Navigate,useNavigate,useParams,useLocation,Link}from'react-router-dom';import {PlusOutlined,UserAddOutlined,UsergroupAddOutlined,LogoutOutlined,UserOutlined,MenuUnfoldOutlined,MenuFoldOutlined,MinusCircleOutlined}from'@ant-design/icons';import Ae from'swr/mutation';import {Editor}from'@monaco-editor/react';import {produce}from'immer';import'animate.css';import ps from'query-string';import an from'swr/infinite';import x1 from'dayjs';var ta=Object.defineProperty;var h=(t,o)=>()=>(t&&(o=t(t=0)),o);var Se=(t,o)=>{for(var e in o)ta(t,e,{get:o[e],enumerable:!0});};var Fo,oa,mt,qe=h(()=>{Fo={getItem:t=>sessionStorage.getItem(t)||localStorage.getItem(t),setItem:(t,o)=>{sessionStorage.setItem(t,o),localStorage.setItem(t,o);},removeItem(t){sessionStorage.removeItem(t),localStorage.removeItem(t);}},oa=0,mt=()=>++oa;});var ma,Go,Oo=h(()=>{ma={global:{noEntitlement:"No permission, please contact the administrator.",name:"Name",creationTime:"Creation Time",operation:"Operation",update:"Update",edit:"Edit",delete:"Delete",selectAll:"Select All",game:"Game",user:"User",role:"Role",username:"Username",password:"Password",label:"Label",method:"Method",route:"Route",request:"Request",response:"Response",add:"Add",signIn:"Sign In",projectGroup:"Project Group",view:"View"},SignIn:{title:"Sign In Method",thirdParty:"Third party sign in",signInWithIDass:"Sign in with IDass",unregistered:"You are not yet registered on the platform, please contact the administrator",welcome:"Welcome"},NotFound:{subTitle:"The page you visited does not exist",buttonText:"Return to homepage"},FilterFormWrapper:{confirmText:"Search",resetText:"Reset"},FormModal:{confirmText:"Confirm",cancelText:"Cancel"},GameSelect:{label:"Current Game",placeholder:"Please select a game"},RequireGame:{description:"Please select a game"},UserWidget:{signOutText:"Sign Out"},User:{createTitle:"Create User",createSuccessfully:"User created successfully",updateTitle:"Update User",updateSuccessfully:"User updated successfully",deleteTitle:"Delete User",deleteContent:"Are you sure you want to delete user <%= user %>?",deleteSuccessfully:"User deleted successfully"},Role:{createTitle:"Create Role",createSuccessfully:"Role created successfully",updateTitle:"Update Role",updateSuccessfully:"Role updated successfully",deleteTitle:"Delete Role",deleteContent:"Are you sure you want to delete role <%= role %>?",deleteSuccessfully:"Role deleted successfully"},PermissionList:{failedDescription:"Failed to get permission list",baseSectionTitle:"Platform Basic Permissions",gameSectionTitle:"Game Permissions",gameSectionDescription:"Please select a game first",gameSelectPlaceholder:"Please select a game first",removeText:"Remove",addText:"Add Game Permissions"},RoleDetail:{title:"Role Details"},InfiniteList:{loadingText:"Loading...",reachEndText:"You've reached the end",loadMoreText:"Load more"}},Go=ma;});var At,ge,_e,je,Z,ne=h(()=>{At="https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1",ge="App-ID",_e="/console/",je=(s=>(s.V1="v1",s.V2="v2",s.V3="v3",s))(je||{}),Z="*";});var Eo,zo=h(()=>{Oo();Eo=t=>({locale:Go,gameApiV2:!1,isGlobal:!1,signInPath:"/sign_in",mainPagePath:"/",title:{fontSize:18},permissionVersion:"v1",setContext(o){t(e=>({...e,...o}));}});});var Uo,Ao=h(()=>{Uo=t=>({setGameId:o=>{t({gameId:o});}});});var No,Bo=h(()=>{No=t=>({unregistered:!1,setUnregistered(){t({unregistered:!0});}});});var Ko,Wo=h(()=>{Ko=(t,o)=>({getUser:()=>{let e=o().token;if(e)try{return jwtDecode(e)}catch{return null}return null},setToken:e=>t({token:e})});});var qo,jo=h(()=>{qe();zo();Ao();Bo();Wo();qo=t=>createStore()(persist((...o)=>{let[,e,s]=o,r=()=>{e().setToken(""),s.persist.clearStorage();};return {...Ko(...o),...Uo(...o),...No(...o),...Eo(...o),clearToken:r,...t}},{name:"toolkits",storage:createJSONStorage(()=>Fo),partialize:o=>({token:o.token,gameId:o.gameId,collapsed:o.collapsed})}));});function M(t){let o=useContext(Nt);if(!o)throw new Error("Missing ToolkitsProvider in the tree");return useStore(o,t||(e=>e))}var Nt,Bt,j,Sa,Qo=h(()=>{jo();Nt=createContext(null);Bt=t=>{let{children:o,...e}=t,s=useRef(),r=useContext(Nt)?.getState();if(s.current||(s.current=qo({...r,...e})),!s.current.getState().signInPath)throw new Error('ToolkitsProvider: \u8BF7\u914D\u7F6E "signInPath"');return jsx(Nt.Provider,{value:s.current,children:jsx(App,{children:o})})},j=(t,o)=>{let e=s=>jsx(Bt,{...o,children:jsx(t,{...s})});return e.displayName=`withContext(${t.displayName||t.name||"Component"})`,e};process.env.NODE_ENV!=="production"&&(Bt.displayName="ToolkitsProvider");Sa=Bt;});var G=h(()=>{Qo();});function C(){let t=M(e=>e.locale);return {t:useMemo(()=>(e,s)=>has(t,e)?template(get(t,e))(s):e,[t])}}var $o=h(()=>{G();});var V=h(()=>{$o();});var Oa,Qe,ss=h(()=>{V();Oa=t=>{let{extras:o,isConfirming:e,onConfirm:s,onReset:r,children:a,buttonsAlign:n="left",showReset:l}=t,{t:i}=C(),{token:{colorFillAlter:c,lineWidth:m,lineType:_,colorBorder:x,borderRadiusLG:d}}=theme.useToken();return jsx("div",{style:{maxWidth:"none",background:c,borderWidth:m,borderStyle:_,borderColor:x,borderRadius:d,padding:24,marginBottom:24},children:jsxs("div",{className:`flex ${n==="bottom"?"flex-col":"flex-row"}`,children:[jsx("div",{className:`${n==="left"?"flex-grow-0":"flex-1"}`,children:a}),jsx("div",{className:`${n==="bottom"?"text-end":"text-start"} ml-4`,children:jsxs(Space,{children:[jsx(Button,{type:"primary",loading:e,onClick:s,children:i("FilterFormWrapper.confirmText")}),o?.map(S=>jsx(Fragment$1,{children:S.children},S.key)),l&&jsx(Button,{onClick:r,children:i("FilterFormWrapper.resetText")})]})})]})})},Qe=Oa;});var gt=h(()=>{ss();});function Ba(t){let o=document.createElement("div"),e=createRoot(o);return new Promise(s=>{setTimeout(()=>{flushSync(()=>{e.render(t);}),s(o.innerHTML);});})}var Na,Ka,Ce,rs=h(()=>{Na=t=>{let o=/(<[^>]*>)/;return t.split(o).filter(e=>e!=="")};Ka=t=>{let{texts:o,children:e}=t,[s,r]=useState("");return useEffect(()=>{Ba(e).then(a=>{let n=Na(a);for(let l of o)for(let i=0;i<n.length;i++)n[i]=n[i].replace(String(l),`<span style='color: #DC143C;'>${l}</span>`);r(n.join(""));});},[e,o]),jsx("div",{dangerouslySetInnerHTML:{__html:s}})},Ce=Ka;});var $e=h(()=>{rs();});var Wt,yt,ja,qt,Ha,ns,Qa,$a,k,is=h(()=>{G();ne();Wt=[0,1,200],yt={OK:200,UNAUTHORIZED:401,FORBIDDEN:403,UNREGISTERED:412},ja=3e4,qt=t=>!t||typeof t!="object"?"Unknown error":t.msg||t.message||t.error||"Unknown error",Ha=t=>{let{value:o,allowedCodes:e}=t;return o==null||typeof o!="number"?!1:e.includes(o)},ns=(t,o)=>o>=yt.OK&&o<300?!0:!t||typeof t!="object"?!1:[{field:"code",value:t.code,allowedCodes:Wt},{field:"status",value:t.status,allowedCodes:Wt},{field:"errno",value:t.errno,allowedCodes:Wt}].some(Ha),Qa=async(t,o)=>{switch(o){case"blob":return t.blob();case"text":return t.text();case"arrayBuffer":return t.arrayBuffer();case"formData":return t.formData();case"json":default:return t.json()}},$a=t=>async(o,e,s)=>{let r=s.headers.get("content-type")||"";if(t==="blob"||t==="arrayBuffer"||t==="text"||t==="formData")return s;if(r.includes("application/json")||t==="json"){let a=await s.json();if(ns(a,s.status)){let i=a.data!==void 0?a.data:a;return new Response(JSON.stringify(i),{status:s.status,statusText:s.statusText,headers:s.headers})}let n=qt(a);notification.error({message:"Request failed",description:n});let l=new Error(n);throw l.response=s,l.data=a,l}return s},k=t=>{let o=M(),{token:e,isGlobal:s,gameId:r,permissionVersion:a,signInPath:n,clearToken:l,setUnregistered:i}=o,c=useCallback(()=>{l(),n&&(window.location.href=n);},[l,n]),m=useCallback(()=>{l(),i(),n&&(window.location.href=n);},[l,i,n]),_=useCallback(()=>{notification.error({message:"\u8BBF\u95EE\u88AB\u7981\u6B62",description:"\u60A8\u6CA1\u6709\u6743\u9650\u8BBF\u95EE\u6B64\u8D44\u6E90\u3002"});},[]),x=useCallback((I,y)=>{switch(I){case yt.UNAUTHORIZED:c();break;case yt.UNREGISTERED:m();break;case yt.FORBIDDEN:_();break;default:{let P=qt(y)||`HTTP ${I} Error`;notification.error({message:"Request failed",description:P});break}}},[c,m,_]),d=useMemo(()=>qa.create({prefixUrl:t,timeout:ja,headers:{Accept:"application/json","Content-Type":"application/json"},hooks:{beforeRequest:[y=>{e&&y.headers.set("Authorization",`Bearer ${e}`),!y.headers.has(ge)&&a!=="v1"&&(s||!r?y.headers.set(ge,"global"):y.headers.set(ge,encodeURIComponent(String(r))));}],afterResponse:[async(y,P,R)=>{let L=R.headers.get("content-type")||"";if(L.includes("application/octet-stream"))return R;if(L.includes("application/json")){let T=await R.json();if(ns(T,R.status))return new Response(JSON.stringify(T),{status:R.status,statusText:R.statusText,headers:R.headers});let D=qt(T);notification.error({message:"Request failed",description:D});let U=new Error(D);throw U.response=R,U.data=T,U}return R}],beforeError:[async y=>{let{response:P}=y;if(P){let R=P.status,L;try{(P.headers.get("content-type")||"").includes("application/json")&&(L=await P.json());}catch{}x(R,L);}else notification.error({message:"Network Error",description:y.message||"Network request failed"});return y}]}}),[t,e,s,r,a,x]),p=useCallback(async(I,y,P,R)=>{let{responseType:L,...T}=R||{},D={...T,hooks:{...T.hooks,afterResponse:[...T.hooks?.afterResponse||[],$a(L)]}},U;return P?U=await d(y,{method:I,json:P,...D}):U=await d(y,{method:I,...D}),Qa(U,L)},[d]),S=useCallback((I,y)=>p("GET",I,void 0,y),[p]),g=useCallback((I,y,P)=>p("POST",I,y,P),[p]),f=useCallback((I,y,P)=>p("PUT",I,y,P),[p]),u=useCallback((I,y)=>p("DELETE",I,void 0,y),[p]),b=useCallback((I,y,P)=>p("PATCH",I,y,P),[p]),w=useCallback((I,y)=>p("OPTIONS",I,void 0,y),[p]),z=useCallback((I,y)=>p("HEAD",I,void 0,y),[p]),B=useCallback(I=>{let{url:y,...P}=I;return p(P.method||"GET",y,void 0,P)},[p]);return useMemo(()=>({get:S,post:g,put:f,delete:u,patch:b,options:w,head:z,request:B,instance:d}),[S,g,f,u,b,w,z,B,d])};});var ee=h(()=>{is();});function Y(t,o){let e=k(),{permissionVersion:s}=M(),r=s!=="v1"?"/api/usystem/user/checkV2":"/api/usystem/user/check",a=typeof t<"u"?typeof t=="string"?[t]:t:[],{data:n,...l}=Ue(a.length>0?[r,{json:{permissions:a},...o}]:null,c=>e.post(...c)),i=!0;return typeof t=="string"?i=n?.has_all?!0:n?.[t]??!1:Array.isArray(t)&&t.length>0&&(i=a.reduce((c,m)=>(c[m]=n?.has_all?!0:n?.[m]??!1,c),{})),{...l,data:i}}function De(){let{signInPath:t,gameId:o}=M(),e=k();return Ue(window.location.pathname!==t?{url:"/api/usystem/menu/navbar",headers:{[ge]:o?encodeURIComponent(String(o)):"global"}}:null,({url:s,headers:r})=>e.get(s,{headers:r}))}var te=h(()=>{G();ne();ee();});var we,tp,jt=h(()=>{G();ne();ee();we=()=>{let{gameApiV2:t,permissionVersion:o}=M(r=>r),e=k(),s=o!=="v1"?t?"/api/game/list":"/api/usystem/game/all":null;return dn(s,async r=>{let a={headers:{[ge]:"global"}};return t?(await e.get(r,a))?.list??[]:await e.get(r,a)??[]})},tp=t=>{let{data:o}=we(),{gameApiV2:e}=M(s=>s);return o?.find(s=>String(e?s.game_id:s.id)===String(t))};});var fn,Le,ds=h(()=>{fn=t=>jsx("img",{src:un,alt:"logo",...t}),Le=fn;});var Ht=h(()=>{ds();});var us,fs=h(()=>{us=create()(persist(t=>({openKeys:[],setOpenKeys:o=>t({openKeys:o}),selectedKeys:[],setSelectedKeys:o=>t({selectedKeys:o})}),{name:"nav",storage:createJSONStorage(()=>localStorage),partialize:t=>({openKeys:t.openKeys,selectedKeys:t.selectedKeys})}));});function Qt(t){let o=[];if(t)for(let e=0;e<t.length;e++)if(t[e]===null||t[e].type==="divider")o[e]=t[e];else if(t[e].children){let{children:s,...r}=t[e];o[e]={...r,children:Qt(s)};}else {let{route:s,label:r,...a}=t[e],n=s?jsx(Link,{to:s,children:r}):r;o[e]={...a,label:n};}return o}function $t(t,o=[],e=[]){for(let s of t){let r=s?.children;if(Array.isArray(r)){let a=s.type!=="group"&&s.key?[...e,s.key]:e;$t(r,o,a);}else s&&o.push(Object.assign(s,{keypath:e}));}return o}var gs=h(()=>{});var hs,Yt,xs=h(()=>{fs();gs();hs=memo(function(o){let{items:e,theme:s,loading:r}=o,a=useLocation(),n=useMemo(()=>$t(e??[]),[e]),l=useMemo(()=>Qt(e??[]),[e]),{openKeys:i,selectedKeys:c,setOpenKeys:m,setSelectedKeys:_}=us(),x=useCallback(d=>{let p=d?.find(g=>i?.indexOf(g)===-1),S=n.find(g=>p===g.key);m(S?.keypath??[p]);},[n,i,m]);return useEffect(()=>{let d=n.find(p=>a.pathname===p.route);if(d){let p=d.key,S=d.keypath;_([p]),m(S);}},[n,a]),r?jsx("div",{className:"flex justify-center items-center",style:{height:"calc(100vh - 64px)"},children:jsx(Spin,{})}):jsx(Menu,{theme:s,style:{borderRight:"none"},items:l,mode:"inline",openKeys:i,selectedKeys:c,onOpenChange:x})});process.env.NODE_ENV==="development"&&(hs.displayName="NavMenu");Yt=hs;});var Xt=h(()=>{xs();});var Mn,Rn,Zt,Ss=h(()=>{xt();V();G();(({Spin:Mn}=Ye)),Rn=({children:t})=>{let{permissionVersion:o,gameId:e,isGlobal:s}=M(n=>n),{isLoading:r}=we(),{t:a}=C();return r?jsx("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:400},children:jsx(Mn,{})}):o==="v1"||s?t:e?jsx(Fragment$1,{children:t},e):jsx(Empty,{image:Empty.PRESENTED_IMAGE_SIMPLE,description:a("RequireGame.description")})},Zt=Rn;});var eo=h(()=>{Ss();});var On,to,_s=h(()=>{V();G();On=()=>{let{t}=C(),o=useNavigate(),{clearToken:e,getUser:s,signInPath:r}=M(m=>m),a=s(),n=()=>{e(),o(r);},l=m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),n());},i=m=>{(m.key==="Enter"||m.key===" ")&&m.preventDefault();},c=[{key:"1",icon:jsx(LogoutOutlined,{}),label:jsx("a",{role:"button",tabIndex:0,onClick:n,onKeyDown:l,children:t("UserWidget.signOutText")})}];return jsx("div",{children:jsx(Dropdown,{menu:{selectable:!0,items:c},placement:"bottomRight",children:jsx("a",{role:"button",tabIndex:0,onClick:m=>{m.preventDefault();},onKeyDown:i,children:jsxs(Space,{align:"center",children:[jsx("span",{children:a?.authorityId}),jsx(UserOutlined,{style:{fontSize:"16px"}})]})})})})},to=On;});var oo=h(()=>{_s();});var Kn,Wn,ws,vs=h(()=>{V();G();jt();(({Text:Kn}=Typography)),Wn=t=>{let{filter:o,options:e}=t,{t:s}=C(),{gameApiV2:r,gameId:a,setGameId:n}=M(p=>p),{data:l,isLoading:i}=we(),{cache:c}=useSWRConfig(),m=l?.filter(p=>o?.(p)??!0),_=typeof e=="function"?e(m):m?.map(p=>({label:p.name,value:r?p.game_id:p.id})),x=p=>{d(),n(p);},d=()=>{for(let p of c.keys())p!=="/api/game/list"&&p!=="/api/usystem/game/all"&&c.delete(p);};return useEffect(()=>{if(l&&l.length>0){let p=r?l[0].game_id:l[0].id;l.every(S=>String(S.game_id||S.id)!==String(a))&&n(p);}},[l]),jsxs(Space,{children:[jsx(Kn,{children:s("GameSelect.label")}),jsx(Select,{showSearch:!0,optionFilterProp:"label",value:a,placeholder:s("GameSelect.placeholder"),loading:i,style:{width:"200px"},options:_,onChange:x})]})},ws=Wn;});var Xn,Zn,ei,ti,oi,si,ri,ks=h(()=>{Ht();Xt();eo();G();oo();vs();(({Spin:Xn,theme:Zn}=Ye)),{Header:ei,Sider:ti,Content:oi}=Ye.Layout,si=t=>{let{collapsible:o,isMenuLoading:e,items:s,headerExtra:r,children:a,navWidth:n,filter:l,gameSelectOptions:i}=t,{token:{colorBgContainer:c,colorBorder:m}}=Zn.useToken(),{permissionVersion:_,title:{text:x,fontSize:d},navWidth:p,collapsible:S,mainPagePath:g,collapsed:f,setContext:u,isGlobal:b}=M(),[w,z]=useState(f),B=async()=>{z(!w),u({collapsed:!w});},I=o??S??!1;return jsxs(Ye.Layout,{children:[jsxs(ti,{collapsible:I,theme:"light",trigger:null,collapsed:w,width:n??p,style:{height:"100vh",overflowX:"hidden",overflowY:"auto",borderRightWidth:1,borderRightStyle:"solid",borderRightColor:m},children:[jsx(Link,{to:g,children:jsxs("div",{className:"flex px-6 py-4 font-bold",children:[jsx(Le,{width:32,height:32}),jsx("div",{className:`h-8 flex items-center ml-2 collapse-text ${w?"opacity-0":"animate__fadeIn delay-200"} `,style:{fontSize:d},children:x})]})}),jsx(Yt,{items:s,loading:e})]}),jsxs(Ye.Layout,{children:[jsx(ei,{style:{padding:"0 24px",background:c},children:jsxs("div",{className:"flex justify-between items-center h-full",children:[jsxs(Space,{size:"small",split:jsx(Divider,{type:"vertical"}),className:"mr-6",children:[I&&jsx(Button,{type:"text",icon:w?jsx(MenuUnfoldOutlined,{}):jsx(MenuFoldOutlined,{}),style:{fontSize:"16px"},onClick:B}),_!=="v1"&&!b&&jsx(ws,{filter:l,options:i}),r?.left?.map(y=>jsx("span",{children:y.children},y.key))]}),jsxs(Space,{size:"small",split:jsx(Divider,{type:"vertical"}),children:[r?.right?.map(y=>jsx("span",{children:y.children},y.key)),jsx(to,{})]})]})}),jsx(oi,{style:{overflow:"auto",padding:"24px 16px",maxHeight:"calc(100vh - 64px)"},children:jsx(Suspense,{fallback:jsx(Xn,{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"200px"}}),children:jsx(Zt,{children:a})})})]})]})},ri=si;});var Ts=h(()=>{});var xt=h(()=>{jt();ks();Ts();});var so,ro=h(()=>{so=create((t,o)=>({open:new Map,isOpen:e=>o().open.get(e)??!1,show(e){t({open:new Map(o().open).set(e,!0)});},hide(e){t({open:new Map(o().open).set(e,!1)});},hideAll(){t({open:new Map});}}));});function ao(t){let{content:o,onConfirm:e,afterOpen:s,...r}=t,a=useMemo(()=>mt(),[]),{show:n,hide:l,isOpen:i}=so(),c=i(a),[m,_]=useState(!1),x=typeof o=="function",d=useCallback(async()=>{n(a),await s?.();},[a,n,s]),p=useCallback(()=>{l(a);},[a,l]),S=useCallback(()=>{p();},[p]),g=useCallback(async()=>{try{_(!0),await e?.(),p();}catch(u){throw console.error("Modal confirm error:",u),u}finally{_(!1);}},[e,p]),f=jsx(Modal,{...r,open:c,confirmLoading:m,onOk:g,onCancel:S,children:x?o({hide:p}):o});return {id:a,show:d,hide:p,modal:f}}var no=h(()=>{qe();ro();});function ye(t){let{content:o,form:e,formProps:s,onConfirm:r,onSuccess:a,...n}=t,[l,i]=useState({}),[c]=Form.useForm();c=e||c;let m=typeof o=="function",_=useCallback(()=>{c.resetFields();},[c]),{id:x,show:d,hide:p,modal:S}=ao({...n,content:f=>jsx(Form,{...s,form:c,children:m?o(l,f):o}),onConfirm:async()=>{try{let f=await c.validateFields();await r?.(f,l),a?.(),p();}catch(f){throw console.error("Form validation or submission error:",f),f}},afterClose:_}),g=useCallback(f=>{let{initialValues:u,extraValues:b}=f||{};b&&i(b),u&&c.setFieldsValue(u),d();},[c,d]);return {id:x,show:g,hide:p,modal:S}}var Fs=h(()=>{no();});var io=h(()=>{Fs();no();ro();});var ui,$,Ds=h(()=>{V();te();ui=t=>{let{children:o,code:e,showLoading:s,disabled:r,config:a,...n}=t,l=e?Array.isArray(e)?e:[e]:[],{data:i,isLoading:c}=Y(l,a),{t:m}=C();return c?jsx(Button,{loading:s,disabled:!s,...n,children:o}):typeof i=="boolean"||i&&Object.values(i).some(Boolean)?jsx(Button,{disabled:r,...n,children:o}):jsx(Tooltip,{defaultOpen:!1,title:m("global.noEntitlement"),children:jsx(Button,{disabled:!0,...n,children:o})})},$=ui;});var Ge=h(()=>{Ds();});var pe,_t=h(()=>{pe=create((t,o)=>({keyMap:new Map,payloadMap:new Map,getPayload(e){return o().payloadMap.get(e)??{page:1}},setPayload(e,s){t(r=>({payloadMap:new Map(r.payloadMap).set(e,s)}));},refetch(e,s){let r=o().getPayload(e),a={...r,...s};isEqual(r,a)?o().mutate(e,void 0):o().setPayload(e,a);},mutate(e,s,r){let a=o().keyMap.get(e);return mutate(a,s,r)}}));});var Gs,ki,Ti,me,Os=h(()=>{gt();V();ee();te();_t();Gs=(r=>(r[r.Confirm=0]="Confirm",r[r.Reset=1]="Reset",r[r.Jump=2]="Jump",r[r.Init=3]="Init",r))(Gs||{}),ki=(t,o)=>{let e={method:"GET",defaultSize:10,refreshInterval:0,getTotal:K=>K?.total,getDataSource:K=>K?.list,...t},{url:s,code:r,headers:a,onePage:n,method:l,buttonsAlign:i,showReset:c,defaultSize:m,refreshInterval:_,tableExtra:x,form:d,body:p,params:S,renderForm:g,afterSuccess:f,getTotal:u,getDataSource:b,footer:w,pageSizeOptions:z,...B}=e;if(!s)throw new Error("url property is required");let{t:I}=C(),[y]=Form.useForm(d),P=useRef(3),{data:R,isLoading:L}=Y(r),[T,D]=useState(!1),{keyMap:U,getPayload:be,refetch:X}=pe(),ke=k(),{page:ae,size:le=m,formValue:ce}=be(s),Te=useMemo(()=>({page:ae,size:le,formValue:ce}),[ae,le,ce]),it=useMemo(()=>typeof p=="function"?p(Te):typeof p>"u"?l==="POST"?{...ce,page:n?void 0:ae,size:n?void 0:le}:void 0:p,[p,Te,l,ce,n,ae,le]),lt=useMemo(()=>typeof S=="function"?S(Te):typeof S>"u"?l==="GET"?{...ce,page:n?void 0:ae,size:n?void 0:le}:void 0:S,[S,Te,l,ce,n,ae,le]),ct=useMemo(()=>typeof a=="function"?a(y):a,[a,y]),H=useRef(!1),Me=useMemo(()=>({url:s,method:l,body:it,searchParams:lt,headers:ct}),[s,l,it,lt,ct]),Lt=useMemo(()=>{if(!R||!T)return null;let K=unstable_serialize(Me);return U.set(s,K),K},[R,T,Me,U,s]),{data:fe,isLoading:Gt}=Ue(Lt,async()=>{let{url:K,method:We,body:pt,searchParams:Zr,headers:ea}=Me,Ot={method:We,searchParams:Zr,headers:ea};return pt&&(pt instanceof FormData?Ot.body=pt:Ot.json=pt),await ke.request({url:K,...Ot})},{shouldRetryOnError:!1,revalidateOnFocus:!1,refreshInterval:H.current?_:0,onSuccess(K){H.current=!0,f?.(P.current,y,K);}}),Mo=b(fe,y),Qr=u(fe),$r=!n&&{pageSizeOptions:z,showSizeChanger:!0,showQuickJumper:!0,current:ae,pageSize:le,total:Qr,onChange:async(K,We)=>{P.current=2,X(s,{page:K,size:We});}},Ro=async()=>{P.current=0;try{await y.validateFields(),D(!0),X(s,{page:1,formValue:y.getFieldsValue()});}catch{D(!1);}},Jr=async()=>{P.current=1,y.resetFields();try{await y.validateFields({validateOnly:!0}),D(!0),X(s,{page:1,formValue:y.getFieldsValue()});}catch{D(!1);}};if(useEffect(()=>{let K=async()=>{if(R)try{y.resetFields();let We=await y.validateFields({validateOnly:!0});X(s,{page:1,formValue:We}),D(!0);}catch{D(!1);}};setTimeout(()=>{K();},300);},[R,d,y,X,s]),useImperativeHandle(o,()=>({data:fe,dataSource:Mo,form:y})),L)return jsx(Spin,{style:{display:"flex",justifyContent:"center",alignItems:"center",height:300}});if(!R)return jsx(Result,{status:403,subTitle:I("global.noEntitlement")});let Yr=typeof g=="function"?jsx(Qe,{showReset:c,buttonsAlign:i,isConfirming:Gt,onReset:Jr,onConfirm:Ro,children:cloneElement(g(y),{onKeyUp:K=>{K.key==="Enter"&&Ro();}})}):jsx(Form,{form:y}),Xr=w&&(()=>w(fe));return jsxs("div",{children:[Yr,typeof x=="function"?x(y,fe):x,jsx(Table,{...B,dataSource:Mo,loading:Gt,pagination:$r,footer:Xr})]})},Ti=forwardRef(ki),me=Ti;});var Ee=h(()=>{Os();_t();});var po,Es=h(()=>{po="/api/usystem/menu/list";});function zs(){let t=k();return Ae("/api/usystem/menu/set",(o,{arg:e})=>t.post(o,{...e,id:0,is_model:!0}))}function Us(){let t=k();return Ae("/api/usystem/menu/set",(o,{arg:e})=>t.post(o,{...e,is_model:!0}))}function As(){let t=k();return Ae("/api/usystem/menu/delete",(o,{arg:e})=>t.post(o,null,{searchParams:{id:e}}))}var uo=h(()=>{ee();});var Ct=h(()=>{Es();uo();});var Bs={};Se(Bs,{default:()=>Ni});var Ai,Ni,Ks=h(()=>{$e();V();Ee();G();Ct();uo();te();Ai=j(()=>{let{t}=C(),{message:o}=App.useApp(),e=As(),{refetch:s}=pe(),{mutate:r}=De(),a=useNavigate();return jsx(Fragment,{children:jsx(Card,{title:"\u83DC\u5355\u7BA1\u7406",extra:jsx(Button,{type:"primary",onClick:()=>{a("./create");},children:"\u521B\u5EFA\u83DC\u5355\u9879"}),children:jsx(me,{onePage:!0,code:"9900001",rowKey:"id",url:po,columns:[{title:"\u83DC\u5355\u540D\u79F0",dataIndex:"category",key:"category"},{title:"\u524D\u7AEF\u8DEF\u7531",dataIndex:"front_route"},{title:"Order",dataIndex:"order"},{title:"Is Common",dataIndex:"is_common",key:"is_common",render:l=>l?"\u662F":"\u5426"},{title:"\u6A21\u677F\u540D\u79F0",dataIndex:"model_name",key:"model_name"},{title:"\u64CD\u4F5C",key:"action",width:150,align:"center",render(l,i){return i.is_model?jsxs(Space,{size:"small",children:[jsx(Button,{type:"link",onClick:()=>{a(`./update/${i.id}`);},children:t("global.update")}),jsx(Popconfirm,{title:"\u5220\u9664\u83DC\u5355",placement:"topRight",description:jsxs(Ce,{texts:[i.category],children:["\u786E\u5B9A\u8981\u5220\u9664\u83DC\u5355 ",i.category," \u5417\uFF1F"]}),onConfirm:async()=>{await e.trigger(i.id),s(po),r(),o.success("\u5220\u9664\u6210\u529F");},children:jsx(Button,{danger:!0,type:"link",size:"small",children:t("global.delete")})})]}):null}}],getDataSource:l=>l})})})},{isGlobal:!0}),Ni=Ai;});var Hs={};Se(Hs,{default:()=>$i});var Qi,$i,Qs=h(()=>{G();ne();Ct();te();Qi=j(()=>{let{message:t}=App.useApp(),[o]=Form.useForm(),e=useNavigate(),{trigger:s}=zs(),{mutate:r}=De();return jsx(Card,{title:"\u521B\u5EFA\u83DC\u5355\u9879",children:jsxs(Form,{scrollToFirstError:!0,form:o,labelCol:{flex:"120px"},initialValues:{is_common:!1,is_model:!1,order:0},onFinish:async n=>{let{permissions:l,front_route:i,...c}=n;await s({...c,front_route:_e+i,permissions:l?JSON.parse(l):void 0}),r(),t.success("\u521B\u5EFA\u6210\u529F",.8,()=>e("..",{relative:"route"}));},children:[jsx(Form.Item,{label:"\u83DC\u5355\u9879\u540D\u79F0",name:"category",rules:[{required:!0}],children:jsx(Input,{})}),jsx(Form.Item,{label:"\u524D\u7AEF\u8DEF\u7531",name:"front_route",rules:[{required:!0}],children:jsx(Input,{prefix:_e})}),jsx(Form.Item,{label:"\u6A21\u677F\u540D\u79F0",name:"model_name",rules:[{required:!0}],children:jsx(Input,{})}),jsx(Form.Item,{label:"Is Common",name:"is_common",rules:[{required:!0}],valuePropName:"checked",children:jsx(Switch,{})}),jsx(Form.Item,{label:"Order",name:"order",children:jsx(InputNumber,{className:"w-full"})}),jsx(Form.Item,{label:"\u63A5\u53E3\u89C4\u5219",name:"permissions",children:jsx(Editor,{theme:"vs-dark",height:"300px",language:"json",options:{minimap:{enabled:!1}}})}),jsx(Form.Item,{label:"Schema",name:"scheme",rules:[{required:!0}],children:jsx(Editor,{theme:"vs-dark",height:"600px",language:"json",options:{minimap:{enabled:!1}}})}),jsx(Form.Item,{label:"Ext",name:"ext",children:jsx(Input.TextArea,{rows:5})}),jsx(Form.Item,{children:jsxs("div",{className:"flex justify-center gap-8",children:[jsx(Button,{type:"primary",htmlType:"submit",children:"\u63D0\u4EA4"}),jsx(Button,{onClick:()=>{e("..",{relative:"path"});},children:"\u53D6\u6D88"})]})})]})})},{isGlobal:!0}),$i=Qi;});var Xs={};Se(Xs,{default:()=>a1});var r1,a1,Zs=h(()=>{G();ne();Ct();ee();te();r1=j(()=>{let{message:t}=App.useApp(),[o]=Form.useForm(),e=useNavigate(),{trigger:s}=Us(),r=useParams(),{mutate:a}=De(),n=k(),{data:l,isLoading:i}=Ue(`/api/usystem/menu/info?id=${r.id}`,m=>n.get(m)),c=async m=>{let{permissions:_,front_route:x,...d}=m;await s({...d,permissions:_?JSON.parse(_):void 0,front_route:_e+x,id:+r.id}),a(),t.success("\u66F4\u65B0\u6210\u529F",.8,()=>e("../..",{relative:"route"}));};return useEffect(()=>{let{permissions:m,front_route:_,...x}=l??{},d=JSON.stringify(m||[],null,2),p=_?.replace(_e,"");o.setFieldsValue({...x,permissions:d,front_route:p});},[l,o]),jsx(Card,{title:"\u66F4\u65B0\u83DC\u5355\u9879",loading:i,children:jsxs(Form,{scrollToFirstError:!0,form:o,labelCol:{flex:"120px"},initialValues:{is_common:!1,is_model:!1,order:0},onFinish:c,children:[jsx(Form.Item,{label:"\u83DC\u5355\u9879\u540D\u79F0",name:"category",rules:[{required:!0}],children:jsx(Input,{})}),jsx(Form.Item,{label:"\u524D\u7AEF\u8DEF\u7531",name:"front_route",rules:[{required:!0}],children:jsx(Input,{prefix:_e})}),jsx(Form.Item,{label:"\u6A21\u677F\u540D\u79F0",name:"model_name",rules:[{required:!0}],children:jsx(Input,{})}),jsx(Form.Item,{label:"Is Common",name:"is_common",rules:[{required:!0}],valuePropName:"checked",children:jsx(Switch,{})}),jsx(Form.Item,{label:"Order",name:"order",children:jsx(InputNumber,{className:"w-full"})}),jsx(Form.Item,{label:"\u63A5\u53E3\u89C4\u5219",name:"permissions",children:jsx(Editor,{theme:"vs-dark",height:"300px",language:"json",options:{minimap:{enabled:!1}}})}),jsx(Form.Item,{label:"Schema",name:"scheme",rules:[{required:!0}],children:jsx(Editor,{theme:"vs-dark",height:"600px",language:"json",options:{minimap:{enabled:!1}}})}),jsx(Form.Item,{label:"Ext",name:"ext",children:jsx(Input.TextArea,{rows:5})}),jsx(Form.Item,{children:jsxs("div",{className:"flex justify-center gap-8",children:[jsx(Button,{type:"primary",htmlType:"submit",children:"\u63D0\u4EA4"}),jsx(Button,{onClick:()=>{e("../..",{relative:"path"});},children:"\u53D6\u6D88"})]})})]})})},{isGlobal:!0}),a1=r1;});function ar(){let t=k();return Ue("/api/usystem/user/allPermssions",o=>t.get(o))}function nr(){let t=k();return Ue("/api/usystem/user/allPermissionsV2",o=>t.get(o))}function So(){let t=k();return Ue("/api/usystem/role/all",o=>t.get(o))}function ir(t){let o=M(s=>s.permissionVersion),e=k();return Ue(`/api/usystem/role/${o==="v2"?"infoV2":"info"}?name=${t}`,s=>e.get(s))}function k1(){let{permissionVersion:t}=M(e=>e),o=k();return Ae(t==="v2"?"/api/usystem/role/createV2":"/api/usystem/role/create",(e,{arg:s})=>o.post(e,s))}function T1(){let{permissionVersion:t}=M(e=>e),o=k();return Ae(t==="v2"?"/api/usystem/role/updateV2":"/api/usystem/role/update",(e,{arg:s})=>o.post(e,s))}function lr(){let t=k();return Ae("/api/usystem/role/delete",(o,{arg:e})=>t.post(o,e))}function cr(){let t=k();return Ae("/api/usystem/user/create",(o,{arg:e})=>t.post(o,e))}function pr(){let t=k();return Ae("/api/usystem/user/update",(o,{arg:e})=>t.post(o,e))}function mr(){let t=k();return Ae("/api/usystem/user/delete",(o,{arg:e})=>t.post(o,e))}var bo,dr,It,ur,fr,M1,R1,gr,yr,Pt,kt=h(()=>{V();io();G();ne();ee();_o();({Text:bo}=Typography);dr=({onSuccess:t}={})=>{let{t:o}=C(),{trigger:e}=k1();return ye({title:o("Role.createTitle"),width:"50vw",formProps:{layout:"vertical"},content:jsxs(Fragment,{children:[jsx(Form.Item,{label:o("global.name"),name:"name",rules:[{required:!0}],children:jsx(Input,{addonBefore:"role_"})}),jsx(Form.Item,{name:"permissions",children:jsx(Ne,{})})]}),onConfirm:async s=>{await e({name:`role_${s.name}`,permissions:s.permissions}),t?.();}})},It=({onSuccess:t}={})=>{let{t:o}=C(),{trigger:e}=T1();return ye({title:o("Role.updateTitle"),width:"50vw",formProps:{layout:"vertical"},content:jsxs(Fragment,{children:[jsx(Form.Item,{label:o("global.name"),name:"name",rules:[{required:!0}],children:jsx(Input,{disabled:!0,addonBefore:"role_"})}),jsx(Form.Item,{name:"permissions",children:jsx(Ne,{})})]}),onConfirm:async(s,r)=>{await e({id:r?.id,name:`role_${s.name}`,permissions:s.permissions}),t?.();}})},ur=({onSuccess:t}={})=>{let{t:o}=C(),{data:e,isLoading:s}=So(),{trigger:r}=cr();return ye({title:o("User.createTitle"),width:600,formProps:{autoComplete:"off",labelCol:{flex:"80px"}},content:jsxs(Fragment,{children:[jsx(Form.Item,{label:o("global.name"),name:"name",rules:[{required:!0}],children:jsx(Input,{})}),jsx(Form.Item,{label:o("global.role"),name:"roles",children:jsx(Select,{allowClear:!0,showSearch:!0,mode:"multiple",loading:s,optionFilterProp:"label",options:e?.map(a=>({label:a.name,value:a.name}))})})]}),onConfirm:async a=>{await r(a),t?.();}})},fr=({onSuccess:t}={})=>{let{t:o}=C(),{data:e,isLoading:s}=So(),{trigger:r}=pr();return ye({title:o("User.updateTitle"),width:600,formProps:{autoComplete:"off",labelCol:{flex:"80px"}},content:jsxs(Fragment,{children:[jsx(Form.Item,{label:o("global.name"),name:"name",rules:[{required:!0}],children:jsx(Input,{disabled:!0})}),jsx(Form.Item,{label:o("global.role"),name:"roles",children:jsx(Select,{allowClear:!0,showSearch:!0,mode:"multiple",loading:s,optionFilterProp:"label",options:e?.map(a=>({label:a.name,value:a.name}))})})]}),onConfirm:async(a,n)=>{await r({...a,id:n?.id}),t?.();}})},M1=t=>{let{onChange:o,...e}=t,s=k(),{data:r,isLoading:a}=Ue("/api/enum/get?enum=game_group&type=all",i=>s.get(i)),n=[{label:"\u901A\u7528",value:Z}].concat(r?.map(i=>({label:i,value:i}))??[]);return jsx(Select,{...e,allowClear:!0,showSearch:!0,mode:"tags",optionFilterProp:"label",loading:a,options:n,onChange:i=>{last(i)===Z?o?.([Z]):first(i)===Z?o?.(i.slice(1)):o?.(i);}})},R1=t=>{let{groups:o,onChange:e,...s}=t,r=k(),{data:a,isLoading:n}=Ue(o?.length?`/api/enum/game_group/get_game_ids?game_groups=${o.join(",")}`:null,c=>r.get(c).then(m=>m?.list)),l=a?.map(c=>({label:c.name,value:c.id}));return jsx(Select,{...s,allowClear:!0,showSearch:!0,optionFilterProp:"label",mode:"tags",loading:n,options:l,onChange:c=>{last(c)===Z?e?.([Z]):first(c)===Z?e?.(c.slice(1)):e?.(c);}})},gr=({isCreate:t})=>{let{t:o}=C(),{data:e,isLoading:s}=So();return jsxs(Fragment,{children:[jsx(Form.Item,{label:o("global.name"),name:"name",rules:[{required:!0}],children:jsx(Input,{disabled:!t})}),jsx(Form.List,{name:"permissions",children:(r,{add:a,remove:n})=>jsxs(Row,{gutter:8,children:[jsx(Col,{span:8,className:"text-center mb-4",children:jsx(bo,{strong:!0,children:o("global.projectGroup")})}),jsx(Col,{span:10,className:"text-center mb-4",children:jsx(bo,{strong:!0,children:o("global.game")})}),jsx(Col,{span:6,className:"text-center mb-4",children:jsx(bo,{strong:!0,children:o("global.role")})}),r.map(l=>jsxs(Fragment$1,{children:[jsx(Col,{span:8,children:jsx(Form.Item,{noStyle:!0,shouldUpdate:!0,children:({setFieldValue:i})=>jsx(Form.Item,{name:[l.name,"game_group"],children:jsx(M1,{onChange:()=>{i(["permissions",l.name,"game_ids"],[]);}})})})}),jsx(Col,{span:10,children:jsx(Form.Item,{noStyle:!0,shouldUpdate:(i,c)=>i.permissions[l.name]?.game_group!==c.permissions[l.name]?.game_group,children:({getFieldValue:i})=>{let c=i(["permissions",l.name,"game_group"]);return jsx(Form.Item,{name:[l.name,"game_ids"],dependencies:[["permissions",l.name,"game_group"]],rules:[{required:c?.length,message:"\u8BF7\u9009\u62E9\u6E38\u620F"}],children:jsx(R1,{groups:c})})}})}),jsx(Col,{span:6,children:jsxs("div",{className:"flex",children:[jsx("div",{className:"flex-1",children:jsx(Form.Item,{name:[l.name,"role"],rules:[{required:!0,message:"\u8BF7\u9009\u62E9\u89D2\u8272"},({getFieldValue:i})=>({validator(c,m){return i("permissions").filter((d,p)=>!!d&&p!==l.name).some(d=>d.role===m)?Promise.reject(new Error("\u8BF7\u52FF\u91CD\u590D\u9009\u62E9\u89D2\u8272")):Promise.resolve()}})],children:jsx(Select,{allowClear:!0,showSearch:!0,optionFilterProp:"label",loading:s,options:e?.map(i=>({label:i.name,value:i.name}))})})}),jsx("div",{className:"w-8 text-center",children:jsx(Form.Item,{children:jsx(MinusCircleOutlined,{onClick:()=>{n(l.name);}})})})]})})]},l.key)),r.length===0&&jsx(Col,{span:24,children:jsx(Empty,{className:"mb-6"})}),jsx(Col,{span:24,children:jsx(Button,{block:!0,type:"dashed",onClick:()=>a(),children:o("global.add")})})]})})]})},yr=({onSuccess:t}={})=>{let{t:o}=C(),{trigger:e}=cr();return ye({title:o("User.createTitle"),width:"50vw",formProps:{autoComplete:"off",labelCol:{flex:"80px"}},content:jsx(gr,{isCreate:!0}),onConfirm:async s=>{await e(s),t?.();}})},Pt=({onSuccess:t}={})=>{let{t:o}=C(),{trigger:e}=pr();return ye({title:o("User.updateTitle"),width:"50vw",formProps:{autoComplete:"off",labelCol:{flex:"80px"}},content:jsx(gr,{}),onConfirm:async(s,r)=>{await e({...s,id:r?.id}),t?.();}})};});var O1,st,Io=h(()=>{V();O1=t=>{let{permissions:o,readonly:e,expand:s,value:r,onChange:a}=t,[n,l]=useState([]),[i,c]=useState({}),[m,_]=useState(r??[]),{t:x}=C(),[,d]=useTransition(),p=useCallback(u=>{l(u);},[]),S=(u,b)=>{let w=[];return u?w=[...new Set(m.concat(b))]:(w=m.slice(),b.forEach(z=>{let B=w.findIndex(I=>I===z);B>-1&&w.splice(B,1);})),w},g=(u,b)=>{let w=S(u.target.checked,b);_(w),a?.(w);};useEffect(()=>{_(r??[]);},[r]),useEffect(()=>{s&&d(()=>{l((o??[]).map(({category:u})=>u));});},[s,o]),useEffect(()=>{let u=(o??[]).reduce((b,w)=>(b[w.category]=w.permissions.every(z=>m?.includes(z.value)),b),{});c(u);},[m,o]);let f=(o??[]).map(u=>({key:u.category,label:u.category,extra:!e&&jsx(Checkbox,{checked:i[u.category],onChange:b=>{g(b,u.permissions?.map(w=>w.value));},children:x("global.selectAll")}),children:jsx(Checkbox.Group,{style:{width:"100%"},value:m,disabled:e,children:jsx(Row,{gutter:[10,10],style:{width:"100%"},children:u.permissions?.map(b=>jsx(Col,{span:6,children:jsx(Checkbox,{value:b.value,onChange:w=>{g(w,[b.value]);},children:b.label})},b.value))})})}));return jsx(Collapse,{style:{width:"100%"},collapsible:"header",activeKey:n,items:f,onChange:p})},st=O1;});var Po,K1,W1,Cr,wr=h(()=>{V();kt();Io();(({Text:Po}=Typography)),{Option:K1}=Select,W1=t=>{let{expand:o=!0,value:e,readonly:s,onChange:r}=t,{data:{permission:a,game:n}={},isLoading:l,error:i}=nr(),[c,m]=useState([]),_=a?.filter(g=>g.is_common),x=a?.filter(g=>!g.is_common),{t:d}=C();if(useEffect(()=>{let g=[];Object.keys(e??{}).forEach(f=>{f!=="global"&&g.push({gameId:f,permissions:e?.[f]??[]});}),m(g);},[e]),i)return jsx("div",{className:"flex justify-center",children:jsx(Po,{type:"danger",children:d("PermissionList.failedDescription")})});let p=()=>{m(g=>[...g,{gameId:"",permissions:[]}]);},S=g=>{m(f=>f.filter((u,b)=>b!==g));};return jsxs("div",{className:"flex flex-col w-full",children:[jsx("div",{className:"mb-12",children:jsx(Divider,{dashed:!0,children:d("PermissionList.baseSectionTitle")})}),jsx(Skeleton,{active:!0,loading:l,children:jsx(st,{value:e?.global,readonly:s,permissions:_,expand:o,onChange:g=>{r?.({...e,global:g});}})}),jsx("div",{className:"my-12",children:jsx(Divider,{dashed:!0,children:d("PermissionList.gameSectionTitle")})}),c.map((g,f)=>jsx(Card,{title:jsxs(Space,{children:[jsx(Po,{children:d("global.game")}),s?jsx(Po,{children:n?.find(u=>String(u.id)===g.gameId)?.name}):jsx(Select,{disabled:s,value:c[f].gameId||void 0,style:{width:"160px"},placeholder:d("PermissionList.gameSelectPlaceholder"),onChange:u=>{m(b=>{let w=b.slice();return w[f].gameId=u,w});},children:n?.map(u=>jsx(K1,{value:u.id,disabled:c.some(({gameId:b})=>b===String(u.id)),children:u.name},u.id))})]}),className:"mb-6",extra:!s&&jsx(Button,{type:"link",onClick:()=>{S(f);},children:d("PermissionList.removeText")}),children:c[f].gameId?jsx(Skeleton,{active:!0,loading:l,children:jsx(st,{value:e?.[c[f].gameId],readonly:s,expand:o,permissions:x,onChange:u=>{r?.({...e,[c[f].gameId]:u});}})}):jsx(Empty,{description:d("PermissionList.gameSectionDescription")})},f)),!s&&jsx(Button,{block:!0,type:"dashed",onClick:p,children:d("PermissionList.addText")})]})},Cr=W1;});var H1,Q1,vr,Ir=h(()=>{V();kt();Io();(({Text:H1}=Typography)),Q1=t=>{let{expand:o=!0,value:e,readonly:s,onChange:r}=t,{data:a,isLoading:n,error:l}=ar(),{t:i}=C();return l?jsx("div",{className:"flex justify-center",children:jsx(H1,{type:"danger",children:i("PermissionList.failedDescription")})}):jsx(Skeleton,{active:!0,loading:n,children:jsx(st,{value:e,permissions:a,readonly:s,expand:o,onChange:r})})},vr=Q1;});var $1,Ne,Pr=h(()=>{G();wr();Ir();$1=t=>{let{value:o}=t,e=M(s=>s.permissionVersion);return jsx(Fragment,{children:e==="v2"?jsx(Cr,{...t,value:o}):jsx(vr,{...t,value:o})})},Ne=$1;});var _o=h(()=>{Pr();});var kr=h(()=>{});var rt=h(()=>{_o();kt();kr();});var Dr={};Se(Dr,{default:()=>nl});var Ke,al,nl,Vr=h(()=>{$e();V();Ge();Ee();G();rt();Ke="/api/usystem/user/list",al=()=>{let{modal:t,message:o}=App.useApp(),{t:e}=C(),s=mr(),{mutate:r,refetch:a}=pe(),{permissionVersion:n}=M(u=>u),l=n==="v1",i=n==="v3",{show:c,modal:m}=ur({onSuccess(){a(Ke,{page:1}),o.success(e("User.createSuccessfully"));}}),{show:_,modal:x}=fr({onSuccess(){a(Ke),o.success(e("User.updateSuccessfully"));}}),{show:d,modal:p}=yr({onSuccess(){a(Ke,{page:1}),o.success(e("User.createSuccessfully"));}}),{show:S,modal:g}=Pt({onSuccess(){a(Ke),o.success(e("User.updateSuccessfully"));}}),f=[{title:e("global.name"),dataIndex:"name",key:"name",render(u,b){return i?jsx(Link,{to:`./${b.id}`,children:u}):u}},{title:"ID",dataIndex:"id",key:"id"},(l||i)&&{title:e("global.role"),dataIndex:"roles",key:"roles",width:"40%",render(u){return jsx(Row,{gutter:[4,4],children:(u||[]).map(b=>jsx(Col,{children:b==="root"?jsx(Tag,{color:"#f50",children:b}):jsx(Tag,{color:"#ff5a00",children:jsx(Link,{to:`../role/${b}`,children:b})})},b))})}},{title:e("global.creationTime"),dataIndex:"Ctime",key:"ctime"},{title:e("global.operation"),width:150,align:"center",render:(u,b)=>{let{name:w,permissions:z,roles:B,id:I}=b;return jsxs(Space,{children:[jsx($,{size:"small",type:"link",code:"100003",onClick:()=>{i?S({initialValues:{name:w,permissions:z},extraValues:{id:I}}):_({initialValues:{name:w,roles:B},extraValues:{id:I}});},children:e("global.update")}),jsx($,{danger:!0,size:"small",code:"100004",type:"link",onClick:()=>{t.confirm({title:e("User.deleteTitle"),content:jsx(Ce,{texts:[w],children:e("User.deleteContent",{user:w})}),async onOk(){await s.trigger({id:I,name:w}),r(Ke,y=>produce(y,P=>{let R=P?.List?.findIndex(L=>L.id===I);R&&P?.List?.splice(R,1);})),o.success(e("User.deleteSuccessfully"));}});},children:e("global.delete")})]})}}].filter(Boolean);return jsxs(Fragment,{children:[jsx(Card,{title:e("global.user"),extra:jsx($,{type:"primary",icon:jsx(UserAddOutlined,{}),code:"100002",onClick:()=>{i?d():c();},children:e("User.createTitle")}),children:jsx(me,{code:"100001",url:Ke,rowKey:"id",columns:f,getTotal:u=>u?.Total,getDataSource:u=>u?.List,renderForm:i?u=>jsx(Form,{form:u,children:jsx(Form.Item,{label:"\u540D\u79F0",name:"name",children:jsx(Input,{})})}):void 0})}),m,x,p,g]})},nl=j(al,{isGlobal:!0});});var Er={};Se(Er,{default:()=>gl});var fl,gl,zr=h(()=>{xt();V();Ge();G();ne();rt();ee();te();fl=()=>{let{message:t}=App.useApp(),o=useParams(),{t:e}=C(),{gameApiV2:s}=M(d=>d),r=k(),{data:a,isLoading:n,mutate:l}=Ue(o.id?`/api/usystem/user/info?id=${o.id}`:null,d=>r.get(d)),{data:i}=we(),{data:c}=Y("200005"),{show:m,modal:_}=Pt({onSuccess(){l(),t.success(e("User.updateSuccessfully"));}}),x=[{key:"group",title:e("global.projectGroup"),dataIndex:"game_group",render(d){return d.map(p=>jsx(Tag,{children:p===Z?"\u901A\u7528":p},p))}},{key:"game",title:e("global.game"),dataIndex:"game_ids",render(d){return d.map(p=>{let S=i?.find(g=>String(s?g.game_id:g.id)===p);return jsx(Tag,{children:S?.name??(p===Z?"\u901A\u7528":p)},p)})}},{key:"role",title:e("global.role"),dataIndex:"role",render(d){return c?jsx(Link,{to:`../../role/${d}`,relative:"path",children:d}):d}}];return jsxs(Fragment,{children:[jsx(Breadcrumb,{style:{marginBottom:"1.5rem"},items:[{key:"1",title:jsx(Link,{to:"..",relative:"path",children:e("global.user")})},{key:"2",title:"\u7528\u6237\u8BE6\u60C5"}]}),jsx(Card,{title:"\u7528\u6237\u8BE6\u60C5",loading:n,extra:jsx($,{code:"100003",onClick:()=>{m({initialValues:{name:a?.name,permissions:a?.permissions},extraValues:{id:a.id}});},children:e("global.update")}),children:jsxs(Descriptions,{bordered:!0,column:1,children:[jsx(Descriptions.Item,{label:e("global.name"),children:a?.name}),jsx(Descriptions.Item,{label:"ID",children:a?.id}),jsx(Descriptions.Item,{label:e("global.role"),children:jsx(Table,{rowKey:"role",columns:x,dataSource:a?.permissions,pagination:!1})})]})}),_]})},gl=fl;});var Nr={};Se(Nr,{default:()=>vl});var Rt,wl,vl,Br=h(()=>{$e();V();Ge();Ee();_t();G();rt();ee();te();Rt="/api/usystem/role/list",wl=()=>{let{modal:t,message:o}=App.useApp(),{data:e}=Y("200005"),{t:s}=C(),{permissionVersion:r}=M(S=>S),{mutate:a,refetch:n}=pe(),l=k(),{show:i,modal:c}=dr({onSuccess(){n(Rt,{page:1}),o.success(s("Role.createSuccessfully"));}}),{show:m,modal:_}=It({onSuccess(){a(Rt),o.success(s("Role.updateSuccessfully"));}}),x=lr(),d=async S=>{let g=await l.get(`/api/usystem/role/info${r==="v2"?"V2":""}?name=${S.name}`);m({initialValues:{permissions:g.permissions,name:g?.name.replace(/^role_/,"")},extraValues:{id:g?.id}});},p=[{title:s("global.name"),key:"name",render(S){return e?jsx(Link,{to:`${S.name}`,relative:"path",children:S.name}):jsx(Fragment,{children:S.name})}},{title:"ID",dataIndex:"id",key:"id"},{title:s("global.creationTime"),dataIndex:"ctime",key:"ctime"},{title:s("global.operation"),width:150,align:"center",render:(S,g)=>jsxs(Space,{size:"small",children:[jsx($,{code:"200003",size:"small",type:"link",onClick:async()=>{d(g);},children:s("global.update")}),jsx($,{danger:!0,code:"200004",size:"small",type:"link",onClick:()=>{t.confirm({title:s("Role.deleteTitle"),content:jsx(Ce,{texts:[g.name],children:s("Role.deleteContent",{role:g.name})}),async onOk(){await x.trigger({id:g.id,name:g.name}),a(Rt,f=>produce(f,u=>{let b=u?.List?.findIndex(w=>w.id===g.id);b&&u?.List?.splice(b,1);})),o.success(s("Role.deleteSuccessfully"));}});},children:s("global.delete")})]})}];return jsxs(Fragment,{children:[jsx(Card,{title:s("global.role"),extra:jsx($,{type:"primary",code:"200002",icon:jsx(UsergroupAddOutlined,{}),onClick:()=>{i();},children:s("Role.createTitle")}),children:jsx(me,{rowKey:"name",columns:p,code:"200001",url:Rt,getTotal:S=>S?.Total,getDataSource:S=>S?.List})}),c,_]})},vl=j(wl,{isGlobal:!0});});var Kr={};Se(Kr,{default:()=>Vl});var Dl,Vl,Wr=h(()=>{V();Ge();G();rt();Dl=()=>{let{message:t}=App.useApp(),o=useParams(),{t:e}=C(),{data:s,isLoading:r,mutate:a}=ir(o.name),{show:n,modal:l}=It({onSuccess(){a(),t.success(e("Role.updateSuccessfully"));}}),i=async()=>{n({initialValues:{permissions:s?.permissions,name:s?.name.replace(/^role_/,"")},extraValues:{id:s.id}});};return jsxs(Fragment,{children:[jsx(Breadcrumb,{style:{marginBottom:"1.5rem"},items:[{key:"1",title:jsx(Link,{to:"..",relative:"path",children:e("global.role")})},{key:"2",title:e("RoleDetail.title")}]}),jsx(Card,{title:e("RoleDetail.title"),extra:jsx($,{code:"200003",onClick:i,children:e("global.update")}),children:jsxs(Skeleton,{loading:r,children:[jsxs(Descriptions,{column:2,layout:"vertical",className:"mb-6",children:[jsx(Descriptions.Item,{label:e("global.name"),children:s?.name}),jsx(Descriptions.Item,{label:"ID",children:s?.id}),jsx(Descriptions.Item,{label:e("global.creationTime"),children:s?.ctime})]}),jsx(Divider,{}),jsx(Ne,{readonly:!0,value:s?.permissions})]})}),l]})},Vl=j(Dl,{isGlobal:!0});});qe();var Et=create((t,o)=>({open:new Map,isOpen:e=>o().open.get(e)??!1,show(e){t({open:new Map(o().open).set(e,!0)});},hide(e){t({open:new Map(o().open).set(e,!1)});},hideAll(){t({open:new Map});}}));function Ut(t){let{content:o,onConfirm:e,afterOpen:s,afterClose:r,footer:a,confirmText:n="\u786E\u8BA4",cancelText:l="\u53D6\u6D88",confirmButtonProps:i,cancelButtonProps:c,...m}=t,_=useMemo(()=>mt(),[]),{show:x,hide:d,isOpen:p}=Et(),S=p(_),[g,f]=useState(!1),u=typeof o=="function",b=useCallback(async()=>{x(_),await s?.();},[_,x,s]),w=useCallback(()=>{d(_);},[_,d]),z=useCallback(async()=>{w(),await r?.();},[w,r]),B=useCallback(async()=>{try{f(!0),await e?.();}catch(P){throw console.error("Drawer confirm error:",P),P}finally{f(!1);}},[e]),I=a!==void 0?a:jsxs("div",{className:"flex gap-2 mx-4",children:[jsx(Button,{type:"primary",loading:g,...i,onClick:B,children:n}),jsx(Button,{...c,onClick:w,children:l})]}),y=jsx(Drawer,{...m,open:S,footer:I,onClose:z,children:u?o({hide:w}):o});return {id:_,show:b,hide:w,confirmLoading:g,drawer:y}}function ca(t){let{content:o,form:e,formProps:s,onConfirm:r,onSuccess:a,...n}=t,[l,i]=useState({}),[c]=Form.useForm();c=e||c;let m=typeof o=="function",_=useCallback(()=>{c.resetFields();},[c]),{id:x,show:d,hide:p,drawer:S}=Ut({...n,content:f=>jsx(Form,{...s,form:c,children:m?o(l,f):o}),onConfirm:async()=>{try{let f=await c.validateFields();await r?.(f,l),a?.(),p();}catch(f){throw console.error("Form validation or submission error:",f),f}},afterClose:_}),g=useCallback(f=>{let{initialValues:u,extraValues:b}=f||{};b&&i(b),u&&c.setFieldsValue(u),d();},[c,d]);return {id:x,show:g,hide:p,drawer:S}}V();var ka=t=>{let{initialTags:o,addable:e,removable:s,addCallback:r,removeCallback:a}=t,{t:n}=C(),{token:l}=theme.useToken(),[i,c]=useState([]),[m,_]=useState(!1),[x,d]=useState(""),[p,S]=useState(-1),[g,f]=useState(""),u=useRef(null),b=useRef(null);useEffect(()=>{c(o??[]);},[o]),useEffect(()=>{m&&u.current?.focus();},[m]),useEffect(()=>{b.current?.focus();},[x]);let w=async T=>{if(await a?.(T)){let U=i.filter(be=>be!==T);c(U);}},z=()=>{_(!0);},B=T=>{d(T.target.value);},I=async()=>{x&&i.indexOf(x)===-1&&await r?.(x)&&c([...i,x]),_(!1),d("");},y=T=>{f(T.target.value);},P=()=>{let T=[...i];T[p]=g,c(T),S(-1),d("");},R={width:78,verticalAlign:"top"},L={background:l.colorBgContainer,borderStyle:"dashed"};return jsxs(Space,{wrap:!0,size:[0,8],children:[jsx(Space,{wrap:!0,size:[0,8],children:i.map((T,D)=>p===D?jsx(Input,{ref:b,size:"small",style:R,value:g,onChange:y,onBlur:P,onPressEnter:P},T):jsx(Tag,{closable:s,style:{userSelect:"none"},onClose:async U=>{U.preventDefault(),await w(T);},children:jsx("span",{onDoubleClick:U=>{D!==0&&(S(D),f(T),U.preventDefault());},children:T})},T))}),e&&(m?jsx(Input,{ref:u,type:"text",size:"small",style:R,value:x,onChange:B,onBlur:I,onPressEnter:I}):jsxs(Tag,{style:L,onClick:z,children:[jsx(PlusOutlined,{}),"\xA0",n("global.add")]}))]})},Ta=ka;var Fa=t=>{let{children:o,...e}=t,[s,r]=useState(!1);return jsx(Typography.Paragraph,{...e,className:"mb-0",ellipsis:{rows:2,expandable:"collapsible",expanded:s,onExpand:(a,n)=>{r(n.expanded);}},children:o})},ft=Fa;gt();$e();gt();V();ee();te();var nn=(t,o)=>{let{code:e,url:s,tableExtra:r,headers:a,getRowKey:n,getDataSource:l,getHasMore:i,renderForm:c,params:m,footer:_,form:x,buttonsAlign:d,showReset:p,...S}=t,{t:g}=C(),[f]=Form.useForm(x),[u,b]=useState(!1),[w,z]=useState(),B=k(),I=(H,Me)=>{if(!u)return null;let Lt=n?.(Me,H),fe=m(w,H,Lt);return ps.stringify(fe)?`${s}?${ps.stringify(fe)}`:s},y=typeof a=="function"?a(f):a,{data:P,isLoading:R}=Y(e),{data:L,size:T,setSize:D,isValidating:U,mutate:be}=an(I,async H=>await B.get(H,{headers:y}),{shouldRetryOnError:!1,revalidateOnFocus:!1,revalidateFirstPage:!1}),X=l(L),ke=U||T>0&&L&&typeof L[T-1]>"u",ae=typeof i<"u"?!i(last(L)):!1,le=!X||X.length===0,ce=async()=>{let H=await f.getFieldsValue();z(H);try{await f.validateFields(),b(!0),be();}catch{D(0),b(!1);}},Te=()=>{D(T+1);},it=async()=>{try{f.resetFields(),await f.validateFields({validateOnly:!0}),be();}catch{D(0);}};if(useEffect(()=>{setTimeout(()=>{P&&f.validateFields({validateOnly:!0}).then(H=>{z(H),b(!0);}).catch(()=>{b(!1);});},300);},[P,f]),useImperativeHandle(o,()=>({data:L,dataSource:X,form:f,mutate:be,size:T,setSize:D})),R)return jsx(Spin,{style:{display:"flex",justifyContent:"center",alignItems:"center",height:300}});if(!P)return jsx(Result,{status:403,subTitle:g("global.noEntitlement")});let lt=_&&(()=>_(L)),ct=typeof c=="function"?jsx(Qe,{showReset:p,buttonsAlign:d,isConfirming:U,onReset:it,onConfirm:ce,children:cloneElement(c(f),{onKeyUp:H=>{H.key==="Enter"&&ce();}})}):jsx(Form,{form:f});return jsxs(Fragment,{children:[ct,typeof r=="function"?r(f,X):r,jsx(Table,{...S,dataSource:X,loading:ke,pagination:!1,footer:lt}),!le&&jsx(Button,{block:!0,loading:ke,type:"link",htmlType:"button",disabled:ke||ae,onClick:Te,children:g(ke?"InfiniteList.loadingText":ae?"InfiniteList.reachEndText":"InfiniteList.loadMoreText")})]})},ln=forwardRef(nn),cn=ln;xt();io();Xt();Ge();Ee();eo();V();te();var Di=t=>{let{code:o,config:e,children:s}=t,{data:r,isValidating:a}=Y(o,e),{t:n}=C();return a?jsx(Spin,{style:{display:"flex",justifyContent:"center",alignItems:"center",height:200}}):r?jsx(Fragment,{children:s}):jsx(Result,{status:"403",subTitle:n("global.noEntitlement")})},Vi=Di;G();oo();ne();var i1=lazy(()=>Promise.resolve().then(()=>(Ks(),Bs))),l1=lazy(()=>Promise.resolve().then(()=>(Qs(),Hs))),c1=lazy(()=>Promise.resolve().then(()=>(Zs(),Xs))),p1=jsxs(Routes,{children:[jsx(Route,{index:!0,element:jsx(i1,{})}),jsx(Route,{path:"create",element:jsx(l1,{})}),jsx(Route,{path:"update/:id",element:jsx(c1,{})})]});V();var g1=t=>{let{redirectUrl:o}=t,e=useNavigate(),{t:s}=C();return jsx("div",{className:"h-screen flex justify-center items-center",children:jsx(Result,{status:"404",title:"404",subTitle:s("NotFound.subTitle"),extra:o&&jsx(Button,{type:"primary",onClick:()=>{e(o);},children:s("NotFound.buttonText")})})})},y1=g1;V();Ee();G();var {Option:er}=Select,b1=()=>{let{t}=C(),o=[{key:"username",title:t("global.username"),dataIndex:"uname",width:100},{key:"label",title:t("global.label"),dataIndex:"label",width:150},{key:"method",title:t("global.method"),dataIndex:"method",width:100},{key:"route",title:t("global.route"),dataIndex:"route",width:200},{key:"request",title:t("global.request"),dataIndex:"request",render(e){return jsx(ft,{children:e})}},{key:"response",title:t("global.response"),dataIndex:"response",render(e){return jsx(ft,{children:e})}},{key:"creation_time",title:t("global.creationTime"),dataIndex:"ctime",width:200,render(e){return x1(e).format("YYYY-MM-DD HH:mm:ss")}}];return jsx(Card,{title:"\u64CD\u4F5C\u65E5\u5FD7",children:jsx(me,{rowKey:"id",code:"300001",columns:o,tableLayout:"fixed",url:"/api/usystem/log/list",getTotal:e=>e?.Total,getDataSource:e=>e?.List,renderForm:e=>jsxs(Form,{form:e,layout:"inline",children:[jsx(Form.Item,{label:t("global.username"),name:"uname",children:jsx(Input,{allowClear:!0})}),jsx(Form.Item,{label:t("global.route"),name:"route",children:jsx(Input,{allowClear:!0})}),jsx(Form.Item,{label:t("global.method"),name:"method",children:jsxs(Select,{allowClear:!0,style:{width:"100px"},children:[jsx(er,{value:"get",children:"GET"}),jsx(er,{value:"post",children:"POST"})]})}),jsx(Form.Item,{label:t("global.label"),name:"label",children:jsx(Input,{allowClear:!0})})]})})})},S1=j(b1,{isGlobal:!0});var El=lazy(()=>Promise.resolve().then(()=>(Vr(),Dr))),zl=lazy(()=>Promise.resolve().then(()=>(zr(),Er))),Ul=lazy(()=>Promise.resolve().then(()=>(Br(),Nr))),Al=lazy(()=>Promise.resolve().then(()=>(Wr(),Kr))),Nl=jsxs(Routes,{children:[jsx(Route,{index:!0,element:jsx(Navigate,{to:"user"})}),jsx(Route,{path:"user",element:jsx(El,{})}),jsx(Route,{path:"user/:id",element:jsx(zl,{})}),jsx(Route,{path:"role",element:jsx(Ul,{})}),jsx(Route,{path:"role/:name",element:jsx(Al,{})})]});V();Ht();G();ne();ee();var qr='data:image/svg+xml,<svg xml:space="preserve" style="enable-background:new 0 0 6000 4000;" viewBox="0 0 6000 4000" y="0px" x="0px" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" id="Layer_1" version="1.1">%0A<style type="text/css">%0A%09.Graphic_x0020_Style_x0020_100{fill:%23FFFFFF;}%0A%09.Graphic_x0020_Style_x0020_101{fill:url(%23SVGID_1_);}%0A%09.Graphic_x0020_Style_x0020_102{fill:url(%23SVGID_2_);}%0A%09.Graphic_x0020_Style_x0020_104{fill:%23DB6767;}%0A%09.Graphic_x0020_Style_x0020_105{fill:%23FFDE70;}%0A%09.Graphic_x0020_Style_x0020_106{fill:%23FFB114;}%0A%09.Graphic_x0020_Style_x0020_107{fill:%236584C6;}%0A%09.Graphic_x0020_Style_x0020_108{fill:%23102140;}%0A%09.Graphic_x0020_Style_x0020_109{fill:%233B546B;}%0A%09.Graphic_x0020_Style_x0020_110{fill:%23152A52;}%0A%09.Graphic_x0020_Style_x0020_111{fill:%23E8766F;}%0A%09.Graphic_x0020_Style_x0020_112{fill:%23EF5668;}%0A%09.Graphic_x0020_Style_x0020_113{fill:%23FC9590;}%0A%09.Graphic_x0020_Style_x0020_114{fill:%23912433;}%0A%09.Graphic_x0020_Style_x0020_115{opacity:0.5;fill:%23FFFFFF;}%0A%09.Graphic_x0020_Style_x0020_116{fill:%231A1A1A;}%0A%09.Graphic_x0020_Style_x0020_117{fill:%23535353;}%0A%09.Graphic_x0020_Style_x0020_118{fill:%23DBD2DB;}%0A%09.Graphic_x0020_Style_x0020_119{fill:%234D73C6;}%0A%09.Graphic_x0020_Style_x0020_120{fill:%23D1334A;}%0A%09.Graphic_x0020_Style_x0020_123{fill:url(%23SVGID_3_);}%0A%09.st0{fill:url(%23SVGID_4_);}%0A%09.st1{fill:url(%23SVGID_5_);}%0A%09.st2{fill:url(%23SVGID_6_);}%0A%09.st3{fill:%239D8A9D;}%0A%09.st4{fill:url(%23SVGID_7_);}%0A%09.st5{fill:url(%23SVGID_8_);}%0A%09.st6{fill:%233B546B;}%0A%09.st7{fill:%23A8A1A8;}%0A%09.st8{fill:%23DBD2DB;}%0A%09.st9{fill:%23FFFFFF;stroke:%231A1A1A;stroke-width:5.3432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st10{fill:%23339E7E;}%0A%09.st11{fill:none;stroke:%2310663F;stroke-width:5.3432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st12{fill:%2300593B;}%0A%09.st13{fill:none;stroke:%233DBE88;stroke-width:5.3432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st14{fill:none;stroke:%23134411;stroke-width:8.0149;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st15{fill:%23EF5668;}%0A%09.st16{fill:%23FC9590;}%0A%09.st17{fill:%23102140;}%0A%09.st18{fill:%23DB6767;}%0A%09.st19{fill:%231A1A1A;stroke:%231A1A1A;stroke-width:5.3432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st20{fill:%23FFFFFF;}%0A%09.st21{fill:%23535353;}%0A%09.st22{fill:%23F9EBF9;}%0A%09.st23{fill:%23D896D8;}%0A%09.st24{fill:%238E3D8E;}%0A%09.st25{fill:%23CA74CA;}%0A%09.st26{fill:%23D590D5;}%0A%09.st27{fill:%23160A16;}%0A%09.st28{fill:%23384A6E;}%0A%09.st29{fill:%23B7C0D4;}%0A%09.st30{fill:%23E8766F;}%0A%09.st31{fill:%23FFB114;}%0A%09.st32{fill:%23FFDE70;}%0A%09.st33{fill:%23434343;}%0A%09.st34{fill:%23664708;}%0A%09.st35{fill:%23D9D9D9;}%0A%09.st36{fill:url(%23SVGID_9_);}%0A%09.st37{fill:url(%23SVGID_10_);}%0A%09.st38{fill:url(%23SVGID_11_);}%0A%09.st39{fill:url(%23SVGID_12_);}%0A</style>%0A<linearGradient y2="0" x2="1" y1="0" x1="0" gradientUnits="userSpaceOnUse" id="SVGID_1_">%0A%09<stop style="stop-color:%234085F0" offset="0"></stop>%0A%09<stop style="stop-color:%23275DC9" offset="1"></stop>%0A</linearGradient>%0A<linearGradient y2="0" x2="1" y1="0" x1="0" gradientUnits="userSpaceOnUse" id="SVGID_2_">%0A%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09<stop style="stop-color:%23529BF7" offset="1"></stop>%0A</linearGradient>%0A<linearGradient y2="0" x2="1" y1="0" x1="0" gradientUnits="userSpaceOnUse" id="SVGID_3_">%0A%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09<stop style="stop-color:%23EBF0F7" offset="1"></stop>%0A</linearGradient>%0A<g>%0A%09<linearGradient y2="3014.9536" x2="4941.2124" y1="3014.9536" x1="1288.5804" gradientUnits="userSpaceOnUse" id="SVGID_4_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23EBF0F7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M1288.6,2793.9c55.3,134.1,186.5,387.6,453.7,503.3c220.8,95.6,442.9,57.4,694.7,14.2%0A%09%09c343.1-59,344.3-140.4,552.9-134.7c282.5,7.8,357.3,159.3,673.4,219.7c66.5,12.7,309.6,47.5,574.2-28.4%0A%09%09c360.6-103.4,734.8-407.2,701.8-560C4895.4,2605.9,4103.5,2505.3,1288.6,2793.9z" class="st0"></path>%0A%09<linearGradient y2="1994.5433" x2="5456.5684" y1="1994.5433" x1="686.3356" gradientUnits="userSpaceOnUse" id="SVGID_5_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23529BF7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M5428.3,1649.1c-131.4-612.4-697.6-977.3-1155.4-1020.7c-232.1-22-245.1,56.7-616.7,117%0A%09%09c-821.7,133.2-1081-199.5-1850.1-85.1c-341.2,50.8-687.6,102.3-914.4,382.8C519.9,1502.7,718.2,2270,973.9,2621.3%0A%09%09c165.2,227,392.7,363.9,392.7,363.9c68.9,41.5,168.6,100.4,304.8,131.1c237.9,53.7,359.9-29.9,560-42.5%0A%09%09c342.7-21.6,401.6,197.2,772.6,276.4c190.7,40.7,257.4,0.5,1084.5-212.6c811.7-209.1,858.2-198.9,974.7-297.7%0A%09%09C5379.4,2571.8,5521.7,2084.7,5428.3,1649.1z M2709.5,2042.7v-2.7V2042.7z" class="st1"></path>%0A%09<linearGradient y2="1859.5726" x2="5227.9292" y1="1859.5726" x1="1116.5316" gradientUnits="userSpaceOnUse" id="SVGID_6_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23EBF0F7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M5148.1,1664.4c-146.3-421.8-552.5-838.3-943.2-819c-297.4,14.6-412.5,273.3-678.4,215.1%0A%09%09c-227.7-49.8-217.9-255.8-471.6-405.4c-401.7-236.8-1083-107.4-1265.9,223.4c-99.3,179.7-11.7,346.7-173.7,521.2%0A%09%09c-113.5,122.3-192.5,78.9-314.4,198.6c-154.9,152-219.8,410.7-165.5,645.3c73.8,318.7,366.8,477.2,388.9,488.1%0A%09%09c827.4,146.2,1654.7,292.3,2482.1,438.5c80.8,13.1,529.4,77.9,879.7-216.7C5295.8,2609,5272.6,2023.2,5148.1,1664.4z%0A%09%09 M2709.5,2042.7v-2.7V2042.7z" class="st2"></path>%0A%09<path d="M5224.3,2042.5c-143.7-88.6-413.9-68.2-740.1-95.9c-488.7-41.5-1188.7,312.8-1437,221.4%0A%09%09c-95.1-35-167.4-141.7-220.4-260v1053.6c291.4,51.5,582.8,103,874.2,154.4l1292.2-269.1C5190,2615.6,5243.4,2314,5224.3,2042.5z" class="st3"></path>%0A%09<linearGradient y2="1741.7239" x2="2757.678" y1="1741.7239" x1="1116.5317" gradientUnits="userSpaceOnUse" id="SVGID_7_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23529BF7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M1789.1,878.4c-99.3,179.7-11.7,346.7-173.7,521.2c-113.5,122.3-192.5,78.9-314.4,198.6%0A%09%09c-154.9,152-219.8,410.7-165.5,645.3c73.8,318.7,366.8,477.2,388.9,488.1c411.1,72.6,822.2,145.3,1233.4,217.9V550.2%0A%09%09C2377.7,484.9,1931.7,620.4,1789.1,878.4z M2709.5,2042.7v-2.7V2042.7z" class="st4"></path>%0A%09<linearGradient y2="1215.4698" x2="2649.5779" y1="1215.4698" x1="1137.9542" gradientUnits="userSpaceOnUse" id="SVGID_8_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23EBF0F7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M1789.1,878.4c-99.4,179.7-11.7,346.7-173.7,521.2c-113.6,122.3-192.5,78.9-314.4,198.6%0A%09%09c-79.1,77.6-134.7,183-163,298.8c82.9-108.4,187.6-189.5,319.3-210.4c445.6-70.8,892.8,45.1,1192.3-113.7V537.1%0A%09%09C2296.9,511.3,1918.4,644.5,1789.1,878.4z" class="st5"></path>%0A%09<polygon points="1937.1,644.5 1937.1,2265.3 1979.7,2269.9 1983,640.9" class="st6"></polygon>%0A%09<path d="M2757.7,550.2c-35.6-6.1-71.7-10.5-108.1-13.1v1035.7c38.6-20.4,74.7-45.4,108.1-76V550.2z" class="st7"></path>%0A%09<path d="M1117.4,850.5c-15.5,9-30.8,18.5-45.8,28.5v1689.5l42.6,5.1L1117.4,850.5z" class="st6"></path>%0A%09<path d="M2826.8,564.5c-22.7-5.5-45.8-10.3-69.1-14.3v2399.3c23,4.1,46.1,8.1,69.1,12.2V564.5z" class="st8"></path>%0A%09<g>%0A%09%09<path d="M1121,2361c0,0-98.3-110.7,84.2-222.1c-25.3,43.4-118,92.3-52.4,202.9%0A%09%09%09c27.1,62.9-12.8,89.7-12.8,89.7S1080.6,2436.5,1121,2361z" class="Graphic_x0020_Style_x0020_116"></path>%0A%09%09<g>%0A%09%09%09<path d="M1282.2,2470.4c-15.5,28.9-215.1,26.5-315.7,23.4c-1.1-4.4-2.1-8.7-3.1-13c-1.8-7.8-3.5-15.5-5-23.2%0A%09%09%09%09C1035.2,2452.4,1299.9,2437.2,1282.2,2470.4z" class="st9"></path>%0A%09%09%09<path d="M1282.2,2470.4l-16.7,216.9c-25.9,39.1-25.5,89.5-36,137.5c-4.3,22.7-20.4,30.2-38.6,29.2%0A%09%09%09%09c-39.4-34.1-82.1-74.2-124.2-119.9c-50-80.3-81.3-162.6-100.3-240.3C1067.1,2496.9,1266.7,2499.4,1282.2,2470.4z" class="st9"></path>%0A%09%09</g>%0A%09%09<g>%0A%09%09%09<path d="M1331.3,2151c12.7,12.2,30.7,16,43,17c5.5-2.7,11.1-5.7,16.6-8.9c24.3-13.9,39.8-38.8,49.7-66.7%0A%09%09%09%09c-16.1,5.8-51.8,17.4-67.4,11.2c-20.4-8.1-12.5-17.1-3-14.1c11.7,6,55.7-6.5,75.3-12.5c4.1-14.9,6.8-30.2,8.6-44.8%0A%09%09%09%09c-13.9,8.3-34.9,15.8-44.4,12.6c-12.3-4.2-7.4-14.4,2.7-13.2c7.4,0.8,31.4-12,43.6-18.8c2.2-29.7,0.8-53.4,0.4-59.6%0A%09%09%09%09c-0.1-1-0.1-1.6-0.1-1.6s-29-8.6-66.9-14.1c-8,8.1-19.9,20.8-24.9,29.3c-8,13.3-11.7,24.3-18.1,22.2%0A%09%09%09%09c-12.7-6.6,13.3-37.6,27.8-53.4c-16.5-1.8-34.1-2.9-51.4-2.3c-51.5,40.6-24.5,76.1-44.7,71.8c-17.5-3.7,13.5-51.5,26.6-70.5%0A%09%09%09%09c-16.3,1.8-31.9,5.4-45.3,11.6c-12.1,6.2-22.8,12.2-32.4,18.1c-14.5,34.4,20,53.7,1.7,57.9c-14.3,3.3-16.2-30.4-16.2-48.5%0A%09%09%09%09c-124.9,86.7,2.8,144.8,2.8,144.8c0.1,0.5,0.2,1,0.3,1.6c11.4,70.5,70.1,82,134.6,58.3c-10-8-28.1-22.8-31-26.1%0A%09%09%09%09C1315,2147.7,1321.1,2139.9,1331.3,2151z" class="st10"></path>%0A%09%09%09<path d="M1433.5,1969.4c0,0-146,112.4-218.2,149.3" class="st11"></path>%0A%09%09%09<path d="M1396.4,2051c0,0-33.9,4.5-68.8-3.9" class="st11"></path>%0A%09%09%09<path d="M1316.2,1996.6c0,0-20.5,49.4-10.8,65.9" class="st11"></path>%0A%09%09%09<path d="M1352,2122.6c0,0-59.6-20.8-79-38.4" class="st11"></path>%0A%09%09%09<path d="M1216.4,2052.4c0,0-4.7,37.9,18.4,55.6" class="st11"></path>%0A%09%09</g>%0A%09%09<g>%0A%09%09%09<path d="M882.7,2066.4c10.6,1.3,21,2.9,31.1,4.8c13.6,13.1,30.4,35.2,30.3,62.7c-1.8,23.8,15.4,19.7,16.3,10%0A%09%09%09%09c0.7-7-2.6-43-4.5-62.6c108.1,32.2,164.1,103.7,86.8,204.4c0,0,80.5,195.4-178.5,184.8c22.7-22.7,62.8-66.9,41.4-76.4%0A%09%09%09%09c-27.3-12.2-10,45.1-70.7,74.5c-19-1.7-39.5-4.4-61.7-8.2c-24-5.1-47.2-15.4-69.1-28.8c39.7-11.4,137-41.9,120.6-63.3%0A%09%09%09%09c-18.9-24.6-31,45.8-143.9,47.6c-21.5-15.8-41.4-33.9-58.9-52.1c37.3-6,107.4-20.1,100.5-40.6c-5.2-8.8-23.3,1.5-49.6,10.6%0A%09%09%09%09c-16.7,5.7-46.9,10.3-66.7,12.9c-38.7-43.2-62.7-81.8-62.7-81.8s30.7-35.6,77.3-76.8c23.3,3.1,68.1,9.9,76,18.1%0A%09%09%09%09c10.7,11.2,29.3,3.1,19.9-14.1c-7.3-13.2-42.1-23.8-69.1-26.7c20.4-16.6,42.9-33.2,66.6-48c31,11.1,99.6,37.5,106.2,56.3%0A%09%09%09%09c7.6,12.8,28.5,9,14.2-20.6c-10.9-22.7-68.4-42.4-95-50.5C786.1,2077.1,836.1,2060.7,882.7,2066.4z" class="st12"></path>%0A%09%09%09<path d="M593.2,2264.5c0,0,316.6-1.6,449.7,21.1" class="st13"></path>%0A%09%09%09<path d="M740.2,2197.3c0,0,46.4,26.9,77.7,70.8" class="st13"></path>%0A%09%09%09<path d="M768.3,2342.5c0,0,86.7-42.5,95.7-72.6" class="st13"></path>%0A%09%09%09<path d="M883.4,2149.7c0,0,45.4,83.2,46.7,123.9" class="st13"></path>%0A%09%09%09<path d="M958.3,2368c0,0,53.3-43.2,47.7-87.5" class="st13"></path>%0A%09%09</g>%0A%09%09<g>%0A%09%09%09<path d="M924,1810c7.6,5.4,14.9,11,21.8,16.7c4.5,17.1,7.4,43.4-5.2,67.8c-12.3,20.5,2.9,23.7,8,15.4%0A%09%09%09%09c3.7-5.9,17.7-39.3,25.2-57.5c68.8,71.8,79.4,157.7-26.4,216.5c0,0-27.1,205.9-222.4,93.1c27.9-11.1,79.1-34.4,67-51.4%0A%09%09%09%09c-15.5-21.8-28.3,36.1-88.6,38c-13.9-9.1-28.5-19.7-43.9-32c-16.2-14.1-29.4-32.6-40.2-53.2c35.9,5.7,125,17.5,122.1-8.1%0A%09%09%09%09c-3.3-29.5-44.9,28.3-132.9-15.1c-9.4-22.6-16.5-46.7-21.7-69.8c31.6,9.6,92.2,25,96.2,4c0-9.9-18.7-8-43.2-10.4%0A%09%09%09%09c-15.5-1.6-41-9.5-57.5-15.1c-10.2-53.9-11.1-97.8-11.1-97.8s40-19.4,94.8-37.4c16.6,12,48.1,36,50.4,46.4%0A%09%09%09%09c3.2,14.2,21.3,14.5,21.8-4.6c0.4-14.7-21.6-38-41.2-51.3c23.4-6.6,48.4-12.4,73.4-16.1c18.9,22.3,59.8,73.1,56.3,92.5%0A%09%09%09%09c0,14.5,17.9,19.4,20.4-12.7c1.9-24.5-33.5-65-50.3-82.8C844.5,1781,890.6,1786.3,924,1810z" class="st10"></path>%0A%09%09%09<path d="M609.7,1870.6c0,0,245.3,125,337.8,198.4" class="st11"></path>%0A%09%09%09<path d="M754.1,1869.5c0,0,23.6,42.4,27.7,94" class="st11"></path>%0A%09%09%09<path d="M709.4,2009.9c0,0,86.4-3.2,107.1-26.3" class="st11"></path>%0A%09%09%09<path d="M886.5,1884.4c0,0-2.9,92.1-20.5,128.9" class="st11"></path>%0A%09%09%09<path d="M844.5,2108.4c0,0,60.9-17.2,76.8-58.8" class="st11"></path>%0A%09%09</g>%0A%09%09<g>%0A%09%09%09<path d="M1245.1,1794.2c20.8-5.3,34.8-21,42.5-32.8c-0.2-7.2-0.7-14.6-1.4-22.1c-3.2-32.9-23.8-63.7-50.7-90.6%0A%09%09%09%09c-1.8,19.7-7.4,62.7-22.8,74.5c-20.1,15.5-26.4,2-17.9-5.6c13.2-8.1,22.1-59.9,25.4-83.2c-15-13.2-31.3-25.3-47.2-36%0A%09%09%09%09c2.2,19-0.2,44.7-9,52.2c-11.4,9.8-20.6-1.3-13.9-10.8c4.9-7,2.8-38.8,1.4-55.2c-33.1-20.3-61.3-33.5-68.7-36.8%0A%09%09%09%09c-1.2-0.6-1.9-0.9-1.9-0.9s-25.3,23.8-51.7,58.6c5.2,13,13.5,32.7,20.6,42.9c11.1,16.1,21.9,26.5,16,31.7%0A%09%09%09%09c-14.4,8.7-36.4-36.3-47-60.5c-10.9,15.5-21.4,32.5-29.9,50.2c19.7,76.5,74.9,71.1,59.3,88.7c-13.5,15.3-52.4-45-67.4-69.8%0A%09%09%09%09c-6.6,17.5-10.6,35.3-10.6,52.6c0.7,15.9,2,30.4,3.8,43.6c32.1,35.6,72.7,12.7,67.8,33.6c-3.8,16.4-43.7-2.3-64.6-13.4%0A%09%09%09%09c33.9,178.4,168.8,85.6,168.8,85.6c0.7,0.2,1.3,0.5,2,0.7c87.5,31.6,132-20.3,138.8-99.5c-14.6,5.1-41.3,14.3-46.7,15.2%0A%09%09%09%09C1232.6,1808.5,1226.7,1797.5,1245.1,1794.2z" class="st10"></path>%0A%09%09%09<path d="M1089.2,1580.6c0,0,52.5,215.2,56.8,310.2" class="st11"></path>%0A%09%09%09<path d="M1164,1667.7c0,0-12.8,36.8-41,66.6" class="st11"></path>%0A%09%09%09<path d="M1058.6,1715c0,0,46.2,50.8,70.4,51.1" class="st11"></path>%0A%09%09%09<path d="M1223.1,1755.9c0,0-55.6,47.1-86.3,55.9" class="st11"></path>%0A%09%09%09<path d="M1070,1849.3c0,0,41.4,27.9,74,15.4" class="st11"></path>%0A%09%09</g>%0A%09%09<path d="M1146.1,1890.8c0,0,14.8,158.8-25,350.6" class="st14"></path>%0A%09%09<path d="M937.7,2061.4c0,0,170.2,50.3,183.3,183.5" class="st14"></path>%0A%09%09<path d="M1029.4,2285.6c13.6-4.9,80.6-4.6,99.5,8.8" class="st14"></path>%0A%09%09<path d="M1223.3,2114.4c0,0-98.3,30.9-77.3,232.1" class="st14"></path>%0A%09</g>%0A%09<g>%0A%09%09<path d="M2812.2,2216.6c0,0,60.8,180.6,68.3,350.2c-193.8,44.1-832.8-6.2-832.8-6.2%0A%09%09%09s14-297.1,80.4-332.6C2416.5,2250.4,2812.2,2216.6,2812.2,2216.6z" class="Graphic_x0020_Style_x0020_110"></path>%0A%09%09<path d="M2880.5,2566.9c-7.5-169.6-68.3-350.2-68.3-350.2s-395.8,33.8-684.1,11.4%0A%09%09%09c-17.2,9.2-30.9,36-41.7,70.6c61.5,25.5,298.6,104,672.8-9.3c-4.1,90.6,73.5,94.8,73.5,94.8c12.1,42.2,11.5,131.9,9.7,189.5%0A%09%09%09C2856.4,2571.7,2869.2,2569.4,2880.5,2566.9z" class="Graphic_x0020_Style_x0020_116"></path>%0A%09%09<path d="M2025.5,1497.7c-85.5,55.5-169,100.9-241.9,164.1c7.6,4.2,13.3,9.3,16.2,15.7%0A%09%09%09c0,0,180.9-97,314-235c-1,0.6-1.9,1.2-2.9,1.8C2081.6,1463,2054.9,1479,2025.5,1497.7z" class="Graphic_x0020_Style_x0020_120"></path>%0A%09%09<path d="M2229.4,1095.4c-25.7-0.9-176.5,78.1-272.1,168.2c-95.6,90.1-340.3,323.9-337.5,369.2%0A%09%09%09c19.6,10.4,121.7,5.7,163.9,29c72.9-63.1,156.4-108.6,241.9-164.1c29.4-18.7,56.1-34.7,85.5-53.4c0.9-0.7,1.9-1.2,2.9-1.8%0A%09%09%09c13.7-14.2,26.8-28.8,39.2-43.8C2153.1,1398.7,2255.2,1096.3,2229.4,1095.4z" class="st15"></path>%0A%09%09<path d="M2771.6,1674.1c-70.5,28.9-142.4,50.7-222.4,50.7c-37.4,0-80.1,18.7-104.2,53.4%0A%09%09%09c-61.4,98.9-133.6,184.3-232.4,229.8c-32.1,14.6-74.5,15.6-110.7,1.8c-16.7,87.9-31.4,153-31.4,153s68.3,148.9,349.6,142.7%0A%09%09%09c281.3-6.2,397.1-37.2,407.5-93.1C2841.2,2157.3,2787.4,1837.7,2771.6,1674.1z M2709.5,2042.7v-2.7V2042.7z" class="Graphic_x0020_Style_x0020_120"></path>%0A%09%09<path d="M2767.4,1598.2c4.1-101.3,24.8-260.6-97.2-366.1c-122-105.5-384.9-173.4-473.5-126.7l-76.5,292.8%0A%09%09%09c11.8,55.4,25.9,140.8,27.6,239.6c1.7,97.6-23.8,254.9-46,372c36.3,13.8,78.6,12.7,110.7-1.8c98.9-45.4,171-130.9,232.4-229.8%0A%09%09%09c24-34.7,66.8-53.4,104.2-53.4c80,0,151.9-21.8,222.4-50.7C2768.4,1641.5,2766.7,1615.1,2767.4,1598.2z" class="st15"></path>%0A%09%09<path d="M2357.9,1064.1c0,0-9-52.4-22.1-33.8c-13.1,18.6-10.3,92.4,9,98.6" class="st16"></path>%0A%09%09<path d="M2626.6,1195.8c5.3-16-5.3-34.7-24-34.7c-74.8,5.3-155,13.4-224.4-18.7c-23.9-11-31.4-34.7-32.8-58.9%0A%09%09%09c-12.4,46.4-71.3,284.2,13.2,332.7c71.4,40.9,184.3-8.4,256.1-105.5C2581,1285.5,2613.8,1234.5,2626.6,1195.8z" class="st16"></path>%0A%09%09<path d="M2517.2,949.8c-125.5-23.1-169.6,125.8-169.6,125.8s-0.8,2.8-2.2,7.9%0A%09%09%09c1.4,24.2,8.9,47.9,32.8,58.9c69.5,32.1,149.6,24,224.4,18.7c18.7,0,29.4,18.7,24,34.7c-12.9,38.6-45.6,89.7-12,114.9%0A%09%09%09c22.5-30.4,41-65.6,52.8-104.1C2717.1,1045.3,2621.6,969,2517.2,949.8z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M2650.9,1208c2.1-1.4,41.5-29.8,53.8,4.1c10.6,31.7-40.8,91.7-77.6,80.7l-7.2-3.4" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M2641.7,1253.5c0,0,22.4-60.7,39.3-38c16.9,22.7-50.4,66.6-53,66.6C2625.5,1282,2641.7,1253.5,2641.7,1253.5%0A%09%09%09z" class="st16"></path>%0A%09%09<path d="M2695.3,1256.7L2573,1608.5c0,0-4.1,73.6,8.3,89.5c-74.5,98.7-223.4,363.4-223.4,363.4%0A%09%09%09c93.1,24.8,111.9,120,92.1,155.1c108.5-97.2,400.1-407.5,406.4-575C2879.1,1534.1,2854.6,1361.8,2695.3,1256.7z" class="st15"></path>%0A%09%09<path d="M2837.6,1430.3c30.9,169.9,7.7,183.1-75,353.6%0A%09%09%09c-61.7,127.1-230.6,287.4-312.6,360.9c9.9,28.2,8.9,56.1,0,71.9c108.5-97.2,400.1-407.5,406.4-575%0A%09%09%09C2868.7,1583.2,2867.1,1505.7,2837.6,1430.3z" class="Graphic_x0020_Style_x0020_114"></path>%0A%09%09<path d="M2680.8,1197.5c-6.7,0-12.5,1.5-17.3,3.9c-21.5,10.5-26.4,38.8-26.4,38.8s-8.9,23.1-16.3,12.6%0A%09%09%09c-0.8-1.2-1.6-2.7-2.3-4.8c18.6-24.8,18.6-85.5,11.7-103.4c-6.9-17.9-99.3,26.2-212.3-13.8c-68.9-29.9-68.1-84.2-59.4-118%0A%09%09%09c4.5-17.6,11.1-29.6,11.1-29.6c8.7-20.6,14.7-76,34.2-70.3c40.6,11.7,106.8-29.1,164.9-24.4c49.8,4.1,97.3,36.1,128.3,67.6%0A%09%09%09c18.2,18.5,30.7,36.8,34.4,49.1C2741.5,1038.4,2700.5,1163.4,2680.8,1197.5z" class="st17"></path>%0A%09%09<path d="M2759.2,2289.4c0,0-18.6,62.6,23.2,86c41.8,23.4,50.2,8.7,50.2,8.7S2751.6,2373.8,2759.2,2289.4z" class="st9"></path>%0A%09%09<path d="M1712.9,1890.5c-52.6-85.2-72.3-184.5-63.6-284.7c-5.7,3.2-11.6,6.9-17.5,11%0A%09%09%09c0,0-40.7,64.1,46.2,255.8c-60.7,57.2-63.2,76.8-57.8,148.5c3.8,6,7.7,11.4,11.8,16.3C1628.4,1981.4,1663.8,1922.1,1712.9,1890.5z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M1827.7,1946.4c-2.8-88.2-44.1-69.6-38.6-133.1c5.5-63.4,12.4-109.6,15.9-150.3%0A%09%09%09c3.3-38.4-60.9-110.4-155.6-57.2c-8.8,100.2,10.9,199.5,63.6,284.7c-49.2,31.6-84.5,91-80.9,146.9c42.1,50.6,95,40.7,95,40.7%0A%09%09%09s40.7-51,44.8-68.3c11.7,0.7-32.4,71-32.4,71s7.6,14.2,24.1,13C1780.1,2092.5,1830.4,2034.6,1827.7,1946.4z" class="st16"></path>%0A%09%09<path d="M1679.1,1995l-15.9,55.8c0,0,23.8-50.3,29.3-72C1698.1,1957.1,1679.1,1995,1679.1,1995z" class="st18"></path>%0A%09%09<path d="M1719.7,2081.7c0.5-1.4,56.1-102.4,65.3-88.7c9.2,13.7-42,92.4-42,92.4s-5.3,3.1-3.5-4.7%0A%09%09%09c1.8-7.8,42.7-68.9,35.4-68.5c-7.4,0.5-44.1,60.7-47.8,65.7S1719.7,2081.7,1719.7,2081.7z" class="st18"></path>%0A%09%09<path d="M1686.9,2067.8c0,0,33.5-83.7,43.3-79.9c9.8,3.9-39.4,83.3-39.4,83.3L1686.9,2067.8z" class="st18"></path>%0A%09%09<path d="M1653.4,1961.3c0,0-15.7,62.3-15.2,75C1645.6,2045.3,1657.7,1960.6,1653.4,1961.3z" class="st18"></path>%0A%09%09<path d="M1761.8,2227.6c-54.2-19.3-110.3-23.2-166.4-38.7c-0.1,0-0.2-0.1-0.3-0.1c8.4,8.6,16.7,17.2,25.1,25.7%0A%09%09%09c53.2,60.7,288.8,91.2,288.8,91.2s-10.9-9.9-72.5-89.2c-8.1,3.7-16.2,7.5-24.4,11.1C1796.6,2235.3,1777.3,2233.4,1761.8,2227.6z" class="st19"></path>%0A%09%09<path d="M1267.8,1860.2c0,0,164.6,162.1,327.3,328.6c0.1,0,0.2,0.1,0.3,0.1c56.1,15.5,112.2,19.3,166.4,38.7%0A%09%09%09c15.5,5.8,34.8,7.7,50.3,0c8.2-3.6,16.4-7.4,24.4-11.1c-33.8-43.5-82.8-108-153.6-203.3%0A%09%09%09C1514.7,2038.1,1267.8,1860.2,1267.8,1860.2z" class="st20"></path>%0A%09%09<path d="M1894.6,2339.3c-53.4,8-106.9,10.7-163-2.7c-19-4.7-34.6-13.9-48.5-25.2%0A%09%09%09c15.8,36.7,102.7,87.4,133.9,82.8c31.7-4.6,303.8-96.5,339.7-99.3c35.9-2.8,272.6-59.4,293.2-78.4c6.2-5.7,10.6-21.4,10.5-40.6%0A%09%09%09c-161,58-322,87.3-483.1,141.9C1950.7,2325.9,1921.3,2334,1894.6,2339.3z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M2357.9,2061.5c-149.6,34-453,200.5-549.1,192.3c0,0-60.2,7.5-96.1-8.3c-35.9-15.8-83.7-37.4-96.5-28.9%0A%09%09%09c-10.2,6.8,29.5,56.4,52.7,80.6c6,6.2,10.8,10.8,13.5,12.5c0.2,0.6,0.5,1.1,0.7,1.7c13.9,11.3,29.5,20.5,48.5,25.2%0A%09%09%09c56.1,13.4,109.5,10.7,163,2.7c26.7-5.3,56.1-13.4,82.8-21.4c161-54.5,322-83.8,483.1-141.9%0A%09%09%09C2460.3,2131.9,2436.5,2068.5,2357.9,2061.5z" class="st16"></path>%0A%09</g>%0A%09<path d="M5147.8,2758.7c3.3,42.6-104.8,129-220.1,160.2c-111.1,40.4-316.5,84.1-839.1,218.8%0A%09%09c-356.5,91.9-571.8,151.6-716.6,186.6c-191.1,46.2-259.5,49.2-368,26c-51.4-11-96.9-24.7-137.9-40%0A%09%09c-255-95.3-339.6-255.1-634.7-236.4c-200.1,12.7-322,96.2-560,42.5c-136.3-30.7-235.9-89.6-304.8-131.1%0A%09%09c0,0-186.3-112.1-344.2-301.7c-39.9-42.2-73.3-85.6-94.5-130.9l1061.8-81.6L5147.8,2758.7z" class="Graphic_x0020_Style_x0020_118"></path>%0A%09<polygon points="1909,2627.9 2329.7,2696.9 2880.5,2648.9 2839.9,2636 1902.2,2607.7 1873.4,2616.7" class="st21"></polygon>%0A%09<path d="M2902.4,2554.2c0,0,128.1,29.9,198.1,36.5c16.9,26,103.7,26.1,139.2,31.4c35.5,5.3,64.9,60.1,137.9,65%0A%09%09c73,4.9,88.9,32.2,118.2,30.1c29.2-2.1,39.1-54.7,49.7-59.9c10.6-5.2-32-38.9-10.7-45.5C3396.5,2597.2,2902.4,2554.2,2902.4,2554.2%0A%09%09z" class="st21"></path>%0A%09<path d="M3668.6,2761.4c39.6,3,90.3-36.8,169.2-23.5c88.5,14.9,307.2,32.5,354.3-1.4%0A%09%09c61.3,3.3,696.2,65.4,749.1,44.1c52.9-21.3,68-34.5,68-34.5l-1182-107.2c0,0-299.4,44.5-286.7,84.2%0A%09%09C3547.2,2749,3629,2758.4,3668.6,2761.4z" class="Graphic_x0020_Style_x0020_117"></path>%0A%09<path d="M3779.6,3218.3c-115.9-48.9-340.1-136.6-484.1-148c-201.1-15.9-340.3-109.9-337.2-157.7%0A%09%09c3.1-47.8-605.8-113-946.8-126.3c-204.7-8-676.2-112.3-330.9-291.5l-79,6.1c-81.3,57.9-200.4,165.5-77.3,230.8%0A%09%09c174.8,92.7,1373.9,95.9,1387.8,212c13.2,110.3,575.5,195.9,765.9,301.5C3710,3236.7,3743.7,3227.7,3779.6,3218.3z" class="st22"></path>%0A%09<g>%0A%09%09<path d="M4484.2,1461.7v1181h488.7v-1181H4484.2z M4939.2,2561.4h-421.4v-539.8h421.4%0A%09%09%09V2561.4z M4939.2,1982.4h-421.4v-485.5h421.4V1982.4z" class="Graphic_x0020_Style_x0020_107"></path>%0A%09%09<rect height="485.5" width="355.8" class="Graphic_x0020_Style_x0020_118" y="1496.9" x="4583.5"></rect>%0A%09%09<rect height="485.5" width="65.6" class="Graphic_x0020_Style_x0020_119" y="1496.9" x="4517.8"></rect>%0A%09%09<rect height="539.8" width="80.1" class="Graphic_x0020_Style_x0020_119" y="2021.5" x="4517.8"></rect>%0A%09%09<rect height="539.8" width="341.3" class="Graphic_x0020_Style_x0020_118" y="2021.5" x="4597.9"></rect>%0A%09%09<polygon points="5067.7,1559.5 4972.9,1461.7 4975.8,2765.4 5070.3,2765.4" class="Graphic_x0020_Style_x0020_110"></polygon>%0A%09</g>%0A%09<g>%0A%09%09<polyline points="2442.7,2752.3 2386.8,2825.9 2352.6,2827.7 2416.8,2743.1 2832.6,2738.3 %0A%09%09%092839.9,2747.7" class="Graphic_x0020_Style_x0020_117"></polyline>%0A%09%09<polygon points="2832.6,2738.3 2416.8,2743.1 2352.6,2827.7 2134.5,2839.2 2105.5,2724.6 %0A%09%09%092798.5,2694.4" class="Graphic_x0020_Style_x0020_117"></polygon>%0A%09%09<polygon points="3202.8,2854.8 2364.9,2854.8 2386.8,2825.9 2442.7,2752.3 2839.9,2747.7 %0A%09%09%093134.1,2744.3" class="Graphic_x0020_Style_x0020_117"></polygon>%0A%09%09<polygon points="2839.5,2730.9 2805.3,2687.1 2112.4,2717.2 2141.4,2831.8 2359.4,2820.3 %0A%09%09%092393.7,2818.5 2449.6,2745 2846.8,2740.3" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09%09<polygon points="3202.8,2848.8 2364.9,2848.8 2386.8,2819.9 2442.7,2746.3 2839.9,2741.7 %0A%09%09%093134.1,2738.3" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09</g>%0A%09<g>%0A%09%09<path d="M3326.7,2053.5c67.2,11.8,127,45.4,188.5,75.5c-25.6-21.6-54.4-38-66.9-44.7c-69.9-65-238.4-55.8-331.3-54.5%0A%09%09%09c-56.7,0.8-107.4,28.8-147.4,65.5C3076.9,2034.1,3204.5,2033.1,3326.7,2053.5z" class="st23"></path>%0A%09%09<path d="M3390.7,2125.6c29.4,10.7,40.1,48.1,64.1,69.5c33.5,30.3,76.4,36.8,117.6,27.5c-4-13-8.3-25.7-12.8-37.7%0A%09%09%09c-7.5-20.2-25.1-39.4-44.4-55.7c-61.4-30.2-121.3-63.8-188.5-75.5c-6.7-1.1-13.5-2.2-20.2-3.1c2.5,4.5,4.8,9.1,6.8,13.8%0A%09%09%09c6.9,18.8,10.9,38,12.4,57.2C3347.5,2119.7,3369.7,2120.3,3390.7,2125.6z" class="st23"></path>%0A%09%09<path d="M3454.8,2195c-24-21.4-34.7-58.8-64.1-69.5c-21.1-5.3-43.3-5.9-65.1-4.2c6.4,84.5-36.4,169.9-95.2,228.6%0A%09%09%09c-29.4,32.1-61.4,58.8-101.5,82.8c-32.1,21.4-66.8,37.4-101.5,53.4c-41.6,14.5-81.5,4.8-119.8-10.2c3.7,32.6,11.1,70.7,27.1,85.4%0A%09%09%09c2.2,2,149.9,56.5,246.1,29.3c130.3-36.9,227.4-163.5,314.2-210.2c10.9-5.9,21.4-12.4,31.4-19.5l-0.4-14l53.6-33.2%0A%09%09%09c3.8-4.2,7.6-8.5,11.2-12.9c-4.1-26.8-10.7-53.3-18.4-78.3C3531.3,2231.8,3488.3,2225.3,3454.8,2195z" class="st24"></path>%0A%09%09<path d="M2963.9,2113.7l-74.4,244.3c3.2,19.6,7.7,41,13.7,64.4c0.8-0.5,1.1,24.3,4.3,53.6%0A%09%09%09c38.3,15.1,78.3,24.8,119.8,10.2c34.7-16,69.5-32.1,101.5-53.4c40.1-24,72.1-50.8,101.5-82.8c65-65,110.5-162.6,91.4-255.6%0A%09%09%09C3210,2135.2,3083,2108.6,2963.9,2113.7z" class="st25"></path>%0A%09%09<path d="M3321.8,2094.4c-2.1-10.2-4.9-20.2-8.6-30.2c-2-4.6-4.2-9.2-6.8-13.8c-116-16.9-235.4-12.9-336.9,44.9%0A%09%09%09l-5.6,18.4C3083,2108.6,3210,2135.2,3321.8,2094.4z" class="st26"></path>%0A%09%09<path d="M3590.8,2300.8c-3.6,4.4-7.4,8.7-11.2,12.9l12-7.5C3591.4,2304.4,3591.1,2302.6,3590.8,2300.8z" class="st9"></path>%0A%09%09<g>%0A%09%09%09<path d="M3452.4,2090.3c-50.3-112.2-85.1-243.7-193.4-309.5c-17.4-9.7-50.3-13.5-71.6,3.9%0A%09%09%09%09c-34.5,27-36.4,68-35.6,109.5c51.1,42.2,96.7,74.2,118.4,75.2c65,3,117,150.1,192.8,215.4c35.5,30.6,78.2,23.7,113.6,7.7%0A%09%09%09%09c-19.8-3.7-39.3-11.4-54.6-19C3487.2,2158,3467.9,2123.1,3452.4,2090.3z" class="Graphic_x0020_Style_x0020_116"></path>%0A%09%09%09<path d="M3489,1994.5c-13.8-96.5-49-197.2-111.1-242.1c-62.1-44.9-38.1-160-114.8-199.7%0A%09%09%09%09c-190.3-102-287.5,4.8-333,55.2c-45.5,50.3-4.1,77.2-4.1,77.2s123.9,124.8,225.9,209c-0.9-41.4,1-82.4,35.6-109.5%0A%09%09%09%09c21.3-17.4,54.2-13.5,71.6-3.9c108.3,65.8,143.1,197.3,193.4,309.5c15.5,32.9,34.8,67.7,69.6,83.2c15.3,7.7,34.8,15.3,54.6,19%0A%09%09%09%09c40.3-18.2,71.2-48.2,71.2-48.2S3502.8,2091.1,3489,1994.5z" class="Graphic_x0020_Style_x0020_108"></path>%0A%09%09%09<path d="M3182.3,2144.3c-13.4-74.8,34.7-189.7-58.8-221.7c-16-61.4,5.3-128.2-37.4-184.3%0A%09%09%09%09c-33.7-46.4-75.8-81.1-127.5-97.6c-15.4,4-42.2,14-46.3,24.6c-13.8,35.6-24.4,108.3-3.6,195.1c19.9,94,53.6,191.2,151.7,162.7%0A%09%09%09%09c51,68.9,51,103.4,48.3,128.2c25.3,30.5,60,37.2,94.1,32.1C3192.8,2173.6,3185.5,2160.8,3182.3,2144.3z" class="st16"></path>%0A%09%09%09<path d="M3314.2,2124.9c-5.5-129.6-75.8-207-93.8-211.7c30.3-46.1,33.1-82-6.9-106.8%0A%09%09%09%09c-40-24.8-57.9,67.6-57.9,67.6s-19.3,18-16-3.3c17.7-114.7-62.5-214-170.5-231.9c-1.2-0.2-5.1,0.5-10.4,1.9%0A%09%09%09%09c51.7,16.5,93.8,51.2,127.5,97.6c42.7,56.1,21.4,122.9,37.4,184.3c93.5,32.1,45.4,146.9,58.8,221.7c3.1,16.5,10.5,29.3,20.4,38.9%0A%09%09%09%09C3250.3,2176,3296.5,2145.8,3314.2,2124.9z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09%09<path d="M2969,1635.8c0,0,75.2,27.2,72.4,70.7c-2.8,43.5-9.8,77.5,56.3,98.1c-31.6-35.6-34.2-44-26.9-86.3%0A%09%09%09%09S3035.8,1587.8,2969,1635.8z" class="st17"></path>%0A%09%09%09<path d="M2789.6,2288.5c-77.5,101.5-203,106.9-323.3,128.2c-27.7,5.9-43.7,28.1-64.3,43.4%0A%09%09%09%09c7.2,13.8,19.1,27.9,28,39.8c0.5-0.1,1.1-0.3,1.6-0.4c159.5-16.7,359.4-29.1,470.9-150.7l-0.1-16l61-218.3%0A%09%09%09%09c-27.4,9-56.1,12.8-77.6,32.4C2837.7,2184.3,2824.3,2243.1,2789.6,2288.5z" class="st25"></path>%0A%09%09%09<path d="M3017.4,2050.7c-17.9,4.3-35.5,9.7-52.8,16.1c-58.6,21.8-113.1,55-149.7,106.6%0A%09%09%09%09c-16.4,23.2-29.7,48.3-42.2,73.7c-5.8,11.7-11.7,21.5-19.5,31.9c-8.1,10.8-17.8,20.2-27.8,29.2c-21.9,19.5-47.7,34.4-75.4,44.1%0A%09%09%09%09c-33.1,11.6-67.9,16.1-101.5,25.4c-82.7,23-147.1,41.1-152.6,60.5c-0.2,7,2.3,14.5,6.2,22c20.6-15.4,36.6-37.5,64.3-43.4%0A%09%09%09%09c120.2-21.4,245.8-26.7,323.3-128.2c34.7-45.4,48.1-104.2,96.2-141.6c21.5-19.6,50.2-23.4,77.6-32.4l5.1-18.3%0A%09%09%09%09c11-10.8,16.7-15,29.5-24.1c14.7-10.5,30.5-19.7,47.1-26.7c0.1-0.2,0.2-0.4,0.3-0.6C3036,2046.5,3026.6,2048.4,3017.4,2050.7z" class="st23"></path>%0A%09%09%09<path d="M3045.4,2044.9c-0.1,0.2-0.2,0.4-0.3,0.6c0.7-0.3,1.4-0.6,2.1-0.9%0A%09%09%09%09C3046.6,2044.7,3046,2044.8,3045.4,2044.9z" class="Graphic_x0020_Style_x0020_100"></path>%0A%09%09%09<path d="M2431.6,2499.6c-0.5,0.1-1.1,0.3-1.6,0.4c0.9,1.2,1.8,2.4,2.6,3.6c10.8,15.3,7.8,45,49.1,42.6%0A%09%09%09%09c30.8-6,230-18.7,273.3-29.7c32-8.2,82.2-26.3,148.2-94.1l-0.7-73.5C2791,2470.5,2591.1,2482.9,2431.6,2499.6z" class="st24"></path>%0A%09%09%09<path d="M2398.2,2439.8c0,0,40.7-31.7,69.6,4.1c29,35.9,49.3,96,29,100.7c-20.4,4.6-65.8,2.1-87-35.2%0A%09%09%09%09C2388.5,2472.2,2387.5,2454.3,2398.2,2439.8z" class="st27"></path>%0A%09%09%09<path d="M3350.7,1877.1c18.7-58.6,71.9-104,69.5-165.2c-4.1,1.2-8.2,5.1-10.8,12.5c-7.6,21.4-71.4,103.8-71.4,103.8%0A%09%09%09%09s0,0,3.8-22.1s1.4-35.5-9.7-36.9c-11-1.4-18.3,10.3-18.3,10.3c1-31-13.4-29.3-23.4-27.6c-10,1.7-9.3,51.4-10,64.8%0A%09%09%09%09c-0.7,13.4-15.2,26.9-20-4.1c-2.8-35.9-40.7-71.7-51.7-66.9c-11,4.8,14.8,62,13.1,94.5c-1.7,32.4-20,100.7-5.5,148.2%0A%09%09%09%09c14.5,47.6-3.4,102-3.4,102l85.3,21.2c4.2-67.5,4.5-134.6,44.5-197.1C3350.7,1903.8,3348,1890.5,3350.7,1877.1z" class="st16"></path>%0A%09%09%09<path d="M3420.1,1711.9c2.4,61.2-50.8,106.6-69.5,165.2c-2.7,13.4,0,26.7-8,37.4%0A%09%09%09%09c-40,62.5-40.2,129.7-44.5,197.1l22.9,5.7c0,0-3.5-115.8,17.2-141.3c20.7-25.5,15.2-80,25.3-108.9c10.1-29,71.3-117.9,72-137.2%0A%09%09%09%09C3436,1717.3,3427.9,1709.7,3420.1,1711.9z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09%09<path d="M3305.2,1839.7c-0.4,0.9,11-56.8,9-67.2c4.3,1.6,4.3,1.6,4.3,1.6S3312.8,1824.1,3305.2,1839.7z" class="st9"></path>%0A%09%09%09<g>%0A%09%09%09%09<polygon points="2369.1,2558.8 2880.5,2623.2 2325,2668.2 1891.1,2604.1" class="Graphic_x0020_Style_x0020_115"></polygon>%0A%09%09%09%09<polygon points="2264.3,2566.5 2626.8,2624.8 2334.4,2648.9 2170.4,2611.3" class="Graphic_x0020_Style_x0020_109"></polygon>%0A%09%09%09%09<path d="M2421.8,2452.1c-5.6-0.2-22.6,8.6-22.6,8.6s-13.8-44.1-80.7-43.4s-64.8,65.5-64.8,65.5s5.5,77.2,26.9,93.1%0A%09%09%09%09%09c21.4,15.9,99.3,4.1,102.4,0c3.1-4.1,45.3-6.9,66.9-30.3c21.6-23.4,33.5-24.4,33.5-24.4S2463.5,2453.5,2421.8,2452.1z" class="st16"></path>%0A%09%09%09%09<path d="M2319.3,2460c0,0-45.5,32.4-15.2,90.3c-6.8,0.6-6.8,0.6-6.8,0.6%0A%09%09%09%09%09S2262.7,2493.1,2319.3,2460z" class="Graphic_x0020_Style_x0020_104"></path>%0A%09%09%09%09<path d="M2376.8,2552.2c0,0-56.9-11.2-43.1-33.6c13.8-22.4,45.5-15.9,46.9-24.5%0A%09%09%09%09%09c1.4-8.6-15.9-23.8-21.7-14.5c-5.9,9.3-15.5,25.2-15.5,25.2s-24.1,6.2-17.9,23.1c6.2,16.9,33.8,15.5,6.2,16.9%0A%09%09%09%09%09c-27.6,1.4-39.6,0-39.6,0s-7.4,36.2,7.3,37.5c14.7,1.4,61.6,6.9,105-10.3c43.4-17.2,43.8-24.7,43.8-24.7%0A%09%09%09%09%09S2401.3,2559.2,2376.8,2552.2z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09%09%09<polygon points="2331,2682 2848.1,2642 2880.5,2623.2 2322,2668.2 1885.6,2604.1 %0A%09%09%09%09%091893.9,2613.5" class="Graphic_x0020_Style_x0020_109"></polygon>%0A%09%09%09%09<path d="M1784.9,2001.5l427.1,0.5l15.9,3c18.3,3.5,31.9,18.7,33.5,37.3c9.9,120.2,38.5,538.8,42.7,616.9%0A%09%09%09%09%09c0.3,6.5-11.2,15-17.7,14.2l-444.6-65.8L1784.9,2001.5z" class="st28"></path>%0A%09%09%09%09<path d="M1794.6,1993.3l411.5,8.2c15.8,0.3,28.8,12.5,30.1,28.3c10.4,126.7,52.8,644.5,49.2,643.3%0A%09%09%09%09%09c-3.6-1.2-348.6-51.6-443.5-65.4c-14.1-2.1-24.9-13.4-26.2-27.6l-52.4-553C1761.5,2008.7,1776.2,1992.9,1794.6,1993.3z" class="st29"></path>%0A%09%09%09</g>%0A%09%09%09<path d="M3465.5,2285.9c-5.8-29.1-28.6-54-57-68.5c9.3,57-21.2,85.5-21.2,85.5c-6.8,3.4-40.2,78.1-48.3,71.7%0A%09%09%09%09c-4.1-3.3-5.8-14.7-6.3-29.4c-17.3-67.3-4-136.5-11.5-203.5c-2.3-18.1-0.7-36.2-6.7-52.6c-6.5-5.5-15.7-10.3-27.9-14.4%0A%09%09%09%09c0.8,120.3-17.7,240.4,10.5,355.6c8,37.4,77.5,16,112.2-8C3452.2,2392.7,3478.9,2339.3,3465.5,2285.9z" class="st24"></path>%0A%09%09%09<path d="M3332.7,2345.1c-0.9-27.1,2.3-65.1,1.7-83.5c-0.9-28.4,4.6-84.2-6.4-147.7c-0.5-9.3-4.6-17.6-13.4-24.9%0A%09%09%09%09c5.9,16.5,4.4,34.5,6.7,52.6C3328.7,2208.5,3315.4,2277.8,3332.7,2345.1z" class="st27"></path>%0A%09%09%09<path d="M3591.6,2306.2l-189.3-113.8c2.9,8.8,4.9,17.1,6.2,24.9c28.4,14.5,51.2,39.4,57,68.5%0A%09%09%09%09c4.9,19.6,4.4,39.1-0.3,57.5c36.8,33.3,76.9,62.3,118.5,89.3C3596.9,2393.5,3597.6,2349.6,3591.6,2306.2z" class="st24"></path>%0A%09%09%09<path d="M3226.7,2062.8c-4.2-0.5-8.6-0.9-13.2-1.3c-89.6,102-96.5,485.4-63.4,524c10.1,11.8,36.5,17.9,71.6,18.6%0A%09%09%09%09c-2.7-1.6-5.1-3.5-7.3-5.6C3080,2450.9,3137.9,2222.8,3226.7,2062.8z" class="st23"></path>%0A%09%09%09<path d="M3465.3,2343.4c-8.1,31.8-28.7,60.1-55.8,78.8c-34.7,24-104.2,45.4-112.2,8%0A%09%09%09%09c-28.2-115.2-9.7-235.3-10.5-355.6c-15.1-5.1-34.8-9.1-60-11.8c-88.8,160-146.7,388.1-12.3,535.7c2.1,2.1,4.6,4,7.3,5.6%0A%09%09%09%09c79.8,1.5,205-25.2,288.3-77.9c38.4-24.3,61.5-56.9,73.7-93.5C3542.2,2405.6,3502.1,2376.6,3465.3,2343.4z" class="st25"></path>%0A%09%09</g>%0A%09%09<path d="M3123.6,1922.5c3.2,5.9-36.5,92.1-63.1,100.4c35,56.6,28,41.3,37.6,63.1c63.2-44,78.1-61.9,78.3-92.2%0A%09%09%09C3177.1,1914.4,3123.6,1922.5,3123.6,1922.5z" class="st30"></path>%0A%09</g>%0A%09<g>%0A%09%09<path d="M3972.8,2436.5c-19.3-100.6-1.9-197.3,30.9-292.1c1.9-7.7,9.7-13.5,11.6-23.2%0A%09%09%09c13.5-58,34.8-108.3,58-160.5c1.9-7.7,1.9-15.5,3.9-23.2c1.5-4.4,6.3-7.7,9.3-11.5c-108.6,18.8-247.9,49.9-313.3,64.9%0A%09%09%09c22.2,33.7,40.9,69.3,52.5,109.1c3.9,7.7,13.5,13.5,17.4,21.3c3.9,5.8,0,11.6,3.9,17.4c11.6,15.5,21.3,29,25.1,48.4%0A%09%09%09c1.9,3.9,7.7,5.8,7.7,9.7c0,94.8,7.7,189.6,0,284.3c-6.7,72.9-22.6,143.8-37.3,214.7c84.9-0.2,183-1.6,281.4-2.7%0A%09%09%09c-52.2-58.4-91.1-128-129.9-198.4C3984.4,2475.2,3976.6,2455.8,3972.8,2436.5z" class="Graphic_x0020_Style_x0020_114"></path>%0A%09%09<path d="M4194.9,2483.6c82.8-18.7,163-5.3,237.8,48.1c8,8,26.7,5.3,37.4,0%0A%09%09%09c58.6-34.6,128.4-61.3,198-68.7c-150.8-225.4-393-546.7-446.5-551.9c-23.2-2.2-74.3,4.4-135,14.8c-3.1,3.9-7.9,7.1-9.3,11.5%0A%09%09%09c-1.9,7.7-1.9,15.5-3.9,23.2c-23.2,52.2-44.5,102.5-58,160.5c-1.9,9.7-9.7,15.5-11.6,23.2c-32.9,94.8-50.3,191.5-30.9,292.1%0A%09%09%09c3.3,16.6,9.5,33.3,17.3,49.9C4050.6,2508.5,4130.6,2499.3,4194.9,2483.6z" class="Graphic_x0020_Style_x0020_105"></path>%0A%09%09<path d="M4470.1,2531.7c-10.7,5.3-29.4,8-37.4,0c-74.8-53.4-155-66.8-237.8-48.1%0A%09%09%09c-64.3,15.7-144.3,24.9-204.8,2.8c1.3,2.7,2.6,5.4,3.9,8.1c38.9,70.4,77.7,140.1,129.9,198.4c233-2.6,467.2-3.9,529.1,13.9%0A%09%09%09c110.3,31.7,131,20.7,137.9-30.3c2.3-16.7-49.5-103.7-123-213.5C4598.5,2470.4,4528.6,2497,4470.1,2531.7z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09%09<path d="M3879.9,2196.6c0-3.9-5.8-5.8-7.7-9.7c-3.9-19.3-13.5-32.9-25.1-48.4c-3.9-5.8,0-11.6-3.9-17.4%0A%09%09%09c-3.9-7.7-13.5-13.5-17.4-21.3c-11.6-39.8-30.4-75.4-52.5-109.1c-23.2,5.3-37.1,8.6-37.1,8.6s-76.6,50.8-73.5,108.1%0A%09%09%09c3.1,57.3,7.7,545.5-0.1,585.4c44.9,2.2,107.7,2.8,180,2.6c14.8-70.9,30.6-141.8,37.3-214.7%0A%09%09%09C3887.6,2386.2,3879.9,2291.4,3879.9,2196.6z" class="st31"></path>%0A%09%09<path d="M3622.6,2308.8c7.7-30.9,11.6-63.8,40.6-85.1c3.9-3.9,1.9-9.7,5.8-13.5c21.7-17.1,39.8-41.6,63-53.7%0A%09%09%09c-6.4-58.7-17.6-101.8-29.1-95c-30.3,17.9-474.3,322.7-497.1,369.5s-42.1,123.7,13.1,152.8c0,0-20.7-133.5,59.3-157%0A%09%09%09c80-23.4,155.8,45.5,157.2,51c0.7,2.8,16.3,25.9,31.7,46.8c24.5-12.2,48.8-24.7,72.3-41.8%0A%09%09%09C3593.6,2440.4,3609.1,2376.5,3622.6,2308.8z" class="st32"></path>%0A%09%09<path d="M3669.1,2210.2c-3.9,3.9-1.9,9.7-5.8,13.5c-29,21.3-32.9,54.2-40.6,85.1c-13.5,67.7-29,131.5-83.2,174.1%0A%09%09%09c-23.4,17.1-47.7,29.6-72.3,41.8c14.9,20.3,29.7,38.6,30.4,34.1c1.4-9.2,146.2-90.6,205.5-136.8c36.9-28.8,39.6-168.5,29.1-265.5%0A%09%09%09C3708.8,2168.5,3690.8,2193.1,3669.1,2210.2z" class="st31"></path>%0A%09%09<path d="M3252.8,2424.8c-14.7,6.4-25.2,15.5-32.7,25.8c33.5,31.1,84.8,42,119.8,22.2c22.9-10.4,45.8-17.6,64.9-32.9%0A%09%09%09c-0.9-0.6-1.9-1.3-3.1-2.1C3385.9,2421.4,3321.1,2395.2,3252.8,2424.8z" class="st16"></path>%0A%09%09<path d="M3220.1,2450.6c-5.4,7.5-9.3,15.6-11.9,23.8c11.3,29.8,34.2,55.9,59.6,75.9%0A%09%09%09c39.9,36.8,89.5,48.9,140.2,47.1l4-152.6c0,0,0,0-7.2-4.8c-19.1,15.3-42,22.5-64.9,32.9%0A%09%09%09C3304.9,2492.6,3253.6,2481.7,3220.1,2450.6z" class="Graphic_x0020_Style_x0020_113"></path>%0A%09%09<path d="M3267.8,2550.4c-25.4-20-48.3-46.1-59.6-75.9c-0.6,1.9-1.2,3.9-1.7,5.8%0A%09%09%09c-3.2,12.6-4,25-3.7,35.5c0.4,15.7,3.1,26.9,3.1,26.9s73.1,121.3,186.1,122.7c14.5-13.8,14.5-13.8,14.5-13.8l0.5-17.8l0.7-24.6%0A%09%09%09l0.3-11.9C3357.3,2599.3,3307.7,2587.2,3267.8,2550.4z" class="Graphic_x0020_Style_x0020_104"></path>%0A%09%09<path d="M3235.6,2602c0,0,20.6,1.7,15.5-3.8c-16.6-18-47.6-98.2-21.8-124.8c29.7-30.7,122.5-41.5,160.6-26.4%0A%09%09%09c-3.3-14.6-3.3-14.6-3.3-14.6s-76.5-31-120-13.1c-43.4,17.9-62.2,9.2-63.8,77c-1.7,67.8,9.5,101.6,23.2,107.8%0A%09%09%09C3239.7,2610.3,3235.6,2602,3235.6,2602z" class="st33"></path>%0A%09%09<path d="M3226,2604.1c0,0-34.8-98.6-3.2-143.2s183.6-37.2,209.7,22.5c15.9-4.6,15.9-4.6,15.9-4.6%0A%09%09%09s51.4-54.7-36.3-81.6c-87.8-26.9-216.5,9.7-228.4,92.5S3199.4,2597,3226,2604.1z" class="st20"></path>%0A%09%09<path d="M3340,2529c32.1-10.7,40.1-29.4,53.4-58.8c2.7-5.3,21.4,2.7,32.1-5.3%0A%09%09%09c34.7-32.1,80.1-48.1,120.2-32.1c9,3,17.6,7.1,26,11.5c-6.3-16.9-12.8-29.1-12.8-29.1s-3-1.5-7.6-3.6%0A%09%09%09c-11.7-5.4-33.9-14.8-44.8-14.3c-15.2,0.7-29.9,22.1-29.9,22.1s-32.8-9-49.4,0c-16.5,9-18.5,35.5-18.5,35.5s-15.9-1.7-33.9,7.3%0A%09%09%09s-6.2,37.2-6.2,37.2s-15.2-12.4-42.1,6.2c-20.5,12.6-13.4,51.1-1.3,85.4C3326.1,2565.1,3319.5,2533.5,3340,2529z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M3545.7,2432.8c-40.1-16-85.5,0-120.2,32.1c-10.7,8-29.4,0-32.1,5.3c-13.4,29.4-21.4,48.1-53.4,58.8%0A%09%09%09c-20.4,4.5-13.9,36.1-14.7,61.9c4.6,13,9.9,25.4,14.7,35.5c6.7,14.3,12.4,24,13.6,24.5c32.4,14.5,39.8-12.1,39.8-12.1%0A%09%09%09s7.4,27.2,34.4,26.6c27-0.6,13.8-43.4,13.8-43.4s36.8,33.1,54,29c17.2-4.1,4.1-42.1,4.1-42.1s23.4,27.6,48.3,21.4%0A%09%09%09c24.8-6.2-10.3-94-10.3-94s24.1,13.3,41.4-12.2c10.5-21.9,1.8-55.6-7.2-79.8C3563.2,2439.9,3554.7,2435.8,3545.7,2432.8z" class="st16"></path>%0A%09%09<path d="M3855.6,1746.2c-34.7-66.8-53.4-157.6-120.2-181.7c-70.3-26.7-149.3,8.2-227.2-3%0A%09%09%09c-21.3,43.8-31,95-34.5,140.3c-7.9,103.1,20.2,204.3,82.4,287.5c9.2,12.3,20.1,15.4,35.2,15.3c13.5-0.1,92.2-26.6,94.3-24.1%0A%09%09%09c0,0,89.2,104.8,138.8,155.4c3.9,4,7.6,7.6,11.1,10.9c41,38.7,55.1,33.2,55.1,33.2s66.2-16.5,80-60.7c13.8-44.1,68-261.3,68-261.3%0A%09%09%09s-2.5-6.5-5.6-15.8C3959.1,1845.2,3889.3,1813.7,3855.6,1746.2z" class="st16"></path>%0A%09%09<path d="M4022,1797.7c-2.8-24.8,81.8-357.6-168.2-366.8c-89.9-3.3-189,3.2-269.9,46.9%0A%09%09%09c-34.4,18.6-58.8,48.8-75.7,83.7c77.9,11.2,156.9-23.7,227.2,3c66.8,24,85.5,114.9,120.2,181.7c33.8,67.5,103.5,99,177.4,96.1%0A%09%09%09c-1.2-3.7-2.5-7.7-3.8-12.1C4026.1,1819.7,4023.1,1807.8,4022,1797.7z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M4069.8,1569.7c-23-40.4-27.6-96.5-46-109.4c-0.8-25.3-12.8-44.3-33.2-58.9%0A%09%09%09c-26.3-18.9-66.6-30.6-114.7-39.4c-85.5-15.6-326.4,68.3-388.9,41.2c-46.2-20-44.1,85.7-44.1,85.7s-0.6,8.6,2.7,18.9%0A%09%09%09c0.8,2.6,1.9,5.3,3.4,8c6.8,13.1,21.3,26,51.9,25.5c61.6-0.9,148-35.8,156.3-17.5c8.3,18.4,0.9,143.8,12.9,163.8%0A%09%09%09c4.5,0.7,8.3,1.3,11.5,1.8c16,2.6,16,2.6,16,2.6s1.8-85.5,55.2-84.1c18.2,0.5,37.2,5.3,55.1,14.9c34.5,18.6,64.6,55.2,75.4,113.4%0A%09%09%09c16.6,88.2,147.1,77.2,147.1,77.2s2.3-7.5,5.9-19.9c5.1-17.8,12.8-45.6,20-75.9C4070,1659,4082.1,1591.2,4069.8,1569.7z" class="Graphic_x0020_Style_x0020_108"></path>%0A%09%09<polygon points="3720.5,1573.4 3453,1652.4 3452.3,1641 3736.1,1563.3" class="Graphic_x0020_Style_x0020_110"></polygon>%0A%09%09<path d="M3661.3,2544.8c-2.7-1-5.3-2.4-7.9-4.1c4.4,48.9,8.2,80.7,8.2,80.7l146.2-7.8%0A%09%09%09c0,0,5.8-43,13.8-101.1c-7.6,1.5-15.3,3.9-23,7.2C3756.1,2539,3707.8,2556.4,3661.3,2544.8z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09%09<path d="M3847.5,2157.6c-42.9-65.3-126-117.2-122.4-138.8c-110.1-35.4-87.2,349.7-71.6,521.9%0A%09%09%09c2.6,1.7,5.2,3.1,7.9,4.1c46.4,11.6,94.8-5.8,137.3-25.1c7.7-3.3,15.3-5.7,23-7.2c11.1-80.9,26.4-191.1,35.8-255.6%0A%09%09%09C3859.9,2240.5,3857.5,2172.8,3847.5,2157.6z" class="st32"></path>%0A%09%09<path d="M4242.6,2242.6c0,0,36.8,108.5,119.5,116.7c-13.8,52.4,206.2,183.4,206.2,183.4l9.8-23.8l-239.8-248.8%0A%09%09%09L4242.6,2242.6z" class="st34"></path>%0A%09%09<path d="M3298.6,2799c-8.5,5.6-14.3,9.3-14.8,9.1c-2.1-0.7-22.1,19.3-22.1,19.3%0A%09%09%09s33.8,2.8,36.5,0c0.5-0.5,4.9-3.2,11.4-7C3308.5,2811.6,3304.6,2802.8,3298.6,2799z" class="Graphic_x0020_Style_x0020_108"></path>%0A%09%09<path d="M3379,2744c0,0-53.6,37.3-80.3,55c3.9,2.5,6.9,7,8.8,12.3l95.8-56.5%0A%09%09%09C3402.9,2747.5,3396.9,2742.8,3379,2744z" class="Graphic_x0020_Style_x0020_112"></path>%0A%09%09<path d="M3307.5,2811.4c1.1,2.9,1.8,6,2.3,9.1c26.5-15.5,89.9-50.9,89.9-50.9%0A%09%09%09c2.2-5.4,3.8-10.5,3.6-14.7L3307.5,2811.4z" class="Graphic_x0020_Style_x0020_110"></path>%0A%09%09<path d="M4750.6,2686.6c-104.2,18.7-203,5.3-304.6,0c-109.5-2.7-227.1-26.7-334,16%0A%09%09%09c-80.1,29.4-171-21.4-261.8-2.7c-64.6,14.9-126.9,34.4-189.1,52.1c1.8,0.1,3.8,0.2,6,0.2c37.2,0,155.8-45.5,257.9-29%0A%09%09%09s212.4,30.3,251-6.9c96.5,5.5,601.2,41.4,650.9,26.2c10.9-23.2,13.8-50.2,10.6-77.7C4808.9,2673.1,4780.3,2680.7,4750.6,2686.6z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M4112.1,2702.6c106.9-42.7,224.4-18.7,334-16c101.5,5.3,200.4,18.7,304.6,0c29.7-5.9,58.4-13.5,86.9-21.6%0A%09%09%09c-9.7-83.3-75.3-171.2-141.6-173.3c-45.6,12.2-90.4,22.8-134.1,31.9c-331.1,69.3-596.5,55.3-657.4,37%0A%09%09%09c-68.9-20.7-170.7,19.4-243.8,51.1c-73.1,31.7-122,56.6-95.8,74.6c-0.8,1.2-5,6.1-5.1,9.5c-0.1,3.5-5.8,5.5-8.7,8.7%0A%09%09%09c-8.6,9.5-7.7,26.2,7.4,27.1c1.8,0.1,3.6,0.3,5.3,0.6c20,3.4,31.7,17.6,60.9,4.9c30.3-4.1,30.3-4.1,30.3-4.1s-21.9,17.1,6.4,19.1%0A%09%09%09c62.2-17.7,124.5-37.2,189.1-52.1C3941.1,2681.3,4031.9,2732,4112.1,2702.6z" class="st16"></path>%0A%09%09<path d="M5017.7,2587.8c-2.7-5.3,2.7-13.4,0-18.7c-37.4-72.1-72.1-141.6-130.9-195%0A%09%09%09c-45.4-42.7-96.2-77.5-141.6-120.2c-64.1-53.4-101.5-125.6-173.7-165.6c-80.1-45.4-157.6-88.2-243.1-120.2%0A%09%09%09c-56.1-18.7-114.9-8-173.7-10.7c-8,0-13.4-8-18.7-8c-26.9-3.6-52.7-12-77.2-22.8l-4.1,6.3l-47.1,153.2l241.3,154.8%0A%09%09%09c0.7,4.9,2.5,10,5.3,15.1c70.7-21.4,153.8-12.5,210.4,35.3c58.8,50.8,77.5,133.6,138.9,176.3c50.8,37.4,117.6,48.1,155,101.5%0A%09%09%09c26.3,32.9,23.8,78.3-4.4,111.2c16.3,20,31.9,41.7,46.4,65.4c43.6,17.7,172.5,20.1,226.6-52.4%0A%09%09%09C5038.9,2660.1,5036.7,2621.8,5017.7,2587.8z" class="Graphic_x0020_Style_x0020_105"></path>%0A%09%09<path d="M4666.9,2134.6c-215.1-230.3-311.2-220.2-404.5-226.6%0A%09%09%09c-58.4-29.4-93.8-48.3-120.4-4.6c-12.4-21.6-57-17.5-57-17.5l-26.1,40.5c24.5,10.8,50.2,19.2,77.2,22.8c5.3,0,10.7,8,18.7,8%0A%09%09%09c58.8,2.7,117.6-8,173.7,10.7c85.5,32.1,163,74.8,243.1,120.2c72.1,40.1,109.5,112.2,173.7,165.6c45.4,42.7,96.2,77.5,141.6,120.2%0A%09%09%09c58.8,53.4,93.5,122.9,130.9,195c2.7,5.3-2.7,13.4,0,18.7c18.9,34.1,21.2,72.4,9.5,105.5c14.4-19.2,23.5-43.8,24.4-74.7%0A%09%09%09C5055.7,2471,4882,2364.8,4666.9,2134.6z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09%09<path d="M4758.6,2569.1c-37.4-53.4-104.2-64.1-155-101.5%0A%09%09%09c-61.4-42.7-80.1-125.6-138.9-176.3c-56.5-47.8-139.6-56.7-210.4-35.3c25.1,47.2,127.1,102.1,127.1,102.1s20.7,44.1,55.2,84.1%0A%09%09%09c30.5,35.4,193.5,85.8,317.6,238.2C4782.4,2647.3,4784.9,2601.9,4758.6,2569.1z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09%09<path d="M3715.8,2015.7l-33.4,5.8c0,0,86.9,194.9,81.4,227c99.3-46.4,98.4-56.1,98.4-56.1%0A%09%09%09l-7.4-38.1C3852.2,2113.2,3774.4,2063.6,3715.8,2015.7z" class="Graphic_x0020_Style_x0020_100"></path>%0A%09%09<path d="M4035.3,1825.7c0,0-127.3,345.2-108.9,400.3c60.7-14.7,108.9,4.6,108.9,4.6%0A%09%09%09s-11.5-222.5,55.6-345.6C4061.5,1845.5,4035.3,1825.7,4035.3,1825.7z" class="Graphic_x0020_Style_x0020_100"></path>%0A%09%09<path d="M3654.8,2733l130-51c-71.4,10.3-156.4,53.6-160.3,55.2C3633.4,2740.2,3654.8,2733,3654.8,2733z" class="st18"></path>%0A%09%09<path d="M3576.1,2735.8c0,0,55.9-47.6,182.8-76.5c-16.5-5.5-133.9,28.9-190.4,74.1%0A%09%09%09C3573.4,2738.5,3576.1,2735.8,3576.1,2735.8z" class="st18"></path>%0A%09%09<path d="M3558,2699.3c0,0,110.1-70.4,179-82.8c-35.9-12.4-176.2,71.6-176.2,71.6L3558,2699.3z" class="st18"></path>%0A%09%09<path d="M3834.5,1885.6c0,0-102,90.4-148.9,95c48.7,53.3,78.2,78.6,99.3,89.2%0A%09%09%09c0-99.3,91.9-168.2,83.7-237.2c-8.3-68.9-6.4-64.3-6.4-64.3S3863,1851.2,3834.5,1885.6z" class="Graphic_x0020_Style_x0020_104"></path>%0A%09%09<path d="M4897.2,2712.3c-24.8-45.5-111.6-233-210.3-220.6c0,0-65.2,9.2-99.4,20.8c-1.1,12.9,9.7,22,21.7,26.5%0A%09%09%09c104.1,32,201.6,111.9,214.5,216.4c41.8,6.1,86.6,20.3,88.3-2.4C4912.3,2747.3,4901.4,2720.1,4897.2,2712.3z" class="st20"></path>%0A%09%09<path d="M4609.1,2539c-12-4.5-22.8-13.6-21.7-26.5c-9.2,3.1-16.2,6.4-19,9.7c149.6,89.2,160.1,153.2,228.5,227.8%0A%09%09%09c9,2.3,18,4.1,26.7,5.4C4810.8,2650.9,4713.3,2571,4609.1,2539z" class="st35"></path>%0A%09%09<path d="M3389.9,2642.1c0,0-40.9-81.4-37.1-99.3c3.8-17.9-3.1-35.9,15.9-43.4c-6.2,13.8-11,29-10,45.5%0A%09%09%09c1,16.5,34.6,94,34.6,94L3389.9,2642.1z" class="st18"></path>%0A%09%09<path d="M3407,2460.9c0,0-9.2,34.9-1.9,66.6c7.4,31.7,30.8,93.9,37,97.1c6.2,3.2,6.2,3.2,6.2,3.2%0A%09%09%09S3398.3,2507.3,3407,2460.9z" class="st18"></path>%0A%09%09<path d="M3472.9,2418.4c0,0-17,55.4-15.2,76c1.8,20.7,41.7,120.8,41.7,120.8l2.9-3.5%0A%09%09%09c0,0-42.5-108.1-31.7-146c10.9-37.9,9.3-50.7,9.3-50.7L3472.9,2418.4z" class="Graphic_x0020_Style_x0020_104"></path>%0A%09%09<path d="M3537.6,2454.9c0,0-9.2,72.2,0,81.4s20.4,7.3,20.4,7.3S3539.9,2483.9,3537.6,2454.9z" class="st18"></path>%0A%09%09<path d="M3543.3,2484.1c0,0-7.6,38.4-5.8,52.2c0.7,5.4,2.5,11.2,5.6,16.5c7.7,6.5,16.6,9.4,25.4,1.7%0A%09%09%09c15.6-12.5,17.4-32.6,17.5-52.1c-0.7-2.3-1.4-4.6-2.2-7" class="st16"></path>%0A%09%09<g>%0A%09%09%09<polygon points="3466.8,1624.2 3466.8,1624.2 3466.8,1624.2" class="st9"></polygon>%0A%09%09%09<path d="M3516.4,1675.9c-7.1-21.6-14.1-34.6-21-42.6c-3.4-4-6.9-6.7-10.3-8.4%0A%09%09%09%09c-3.4-1.7-6.8-2.3-9.8-2.3c-3.4,0-6.3,0.8-8.6,1.5c-4.1,1.3-8,4.5-10.7,9.6c-2.7,5.1-4.4,12.1-4.4,21.5%0A%09%09%09%09c0,12.2,2.8,28.6,10.1,50.4c6.4,19,13.3,30.6,20.3,37.6c3.5,3.5,7.1,5.8,10.5,7.3c3.4,1.4,6.8,2,9.7,2c2.7,0,5.1-0.4,7.1-0.9%0A%09%09%09%09c2-0.5,3.5-1.1,4.4-1.4l0,0c2.9-0.9,6.2-3.2,8.5-7.4c2.3-4.2,3.8-10.1,3.8-18.4C3526.2,1713.3,3523.6,1697.9,3516.4,1675.9z%0A%09%09%09%09 M3515.7,1738.9c-1.5,2.6-3.1,3.5-4.1,3.8c-1.2,0.4-2.5,0.9-4,1.3c-1.5,0.4-3.3,0.7-5.1,0.7c-2,0-4.3-0.3-6.7-1.4%0A%09%09%09%09c-3.7-1.5-7.9-4.6-12.5-10.9c-4.6-6.2-9.4-15.6-14-29.3c-7.1-21.2-9.7-36.9-9.7-47.9c0-8.5,1.5-14.2,3.5-17.9%0A%09%09%09%09c2-3.6,4.2-5.2,6.2-5.8l0,0c2-0.6,4.1-1.1,6.3-1.1c2,0,4,0.4,6.3,1.5c3.5,1.7,7.7,5.3,12.4,12.6c4.7,7.2,9.7,18.1,14.9,33.8%0A%09%09%09%09c7.1,21.4,9.4,36.2,9.4,46C3518.5,1731.7,3517.1,1736.3,3515.7,1738.9z" class="Graphic_x0020_Style_x0020_110"></path>%0A%09%09</g>%0A%09</g>%0A%09<polygon points="4535.9,1753.6 4677.9,1982.4 4774.4,1982.4 4597.9,1697.5" class="Graphic_x0020_Style_x0020_109"></polygon>%0A%09<polygon points="4616.6,1659.7 4815.1,1982.4 4916.5,1982.4 4705.5,1586.9" class="Graphic_x0020_Style_x0020_105"></polygon>%0A%09<polygon points="4597.9,1697.5 4644.4,1704.9 4815.1,1982.4 4774.4,1982.4" class="Graphic_x0020_Style_x0020_108"></polygon>%0A%09<polygon points="4791.1,1650.6 4705.5,1586.9 4916.5,1982.4 4939.2,1982.4 4939.2,1925.9" class="Graphic_x0020_Style_x0020_107"></polygon>%0A%09<path d="M4590.7,1773.7c0,0,19.3-16,39,11c19.6,27-20.3,47.3-33.4,30.1%0A%09%09C4583.1,1797.4,4579.5,1778.2,4590.7,1773.7z" class="Graphic_x0020_Style_x0020_100"></path>%0A%09<path d="M4596.3,1780.1c0,0,13.5-11.2,27.3,7.7s-14.2,33.1-23.4,21.1%0A%09%09C4591,1796.7,4588.5,1783.2,4596.3,1780.1z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09<polygon points="4609.5,1841.2 4648,1821.1 4757.4,1982.4 4699.5,1982.4" class="Graphic_x0020_Style_x0020_105"></polygon>%0A%09<ellipse ry="38.6" rx="31.7" cy="1701" cx="4703.2" class="Graphic_x0020_Style_x0020_104"></ellipse>%0A%09<polygon points="4705.5,1762.7 4757.4,1724.1 4766.2,1734.7 4712.4,1768.9" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09<polygon points="4718.4,1793 4770.3,1754.3 4779,1764.9 4725.3,1799.2" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09<polygon points="4731.2,1823.2 4783.2,1784.6 4791.9,1795.1 4738.1,1829.4" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09<g>%0A%09%09<path d="M973.4,2494.7c-1.1-7.7-1.9-15.4-2.3-22.9c9.5-13.4,26.8-31.8,52.9-40.2c23.1-6.1,15.4-16.7,6-14.3%0A%09%09%09c-6.8,1.7-40.3,15-58.6,22.4c6.9-84.5,62.6-145.2,175.4-122.9c0,0,168.2-115.8,215,66.2c-26.6-8.7-77.4-22.7-81.8-5%0A%09%09%09c-5.6,22.6,45.1-7,86.4,25.8c2.5,13.6,4.5,28.6,5.7,45.1c0.4,18.1-4.3,37.3-12.2,56.6c-19.6-23.9-69.9-81.6-86.6-63.7%0A%09%09%09c-19.3,20.6,50.3,7.3,76.9,84.6c-10.3,19.7-23.2,39-36.6,56.7c-13.9-23.9-42.7-67.9-60.7-56.8c-7.2,6.3,6.6,15.6,21,31%0A%09%09%09c9.1,9.8,20.1,29.2,27,42.1c-32.6,40-64,68.5-64,68.5s-40.6-10.2-90-29.6c-2.2-17-5.6-50,0.5-58c8.3-10.9-3.5-21.2-17.7-9.4%0A%09%09%09c-11,9.1-13.4,36.4-10.2,55.9c-20.3-9-41-19.4-60.3-31.1c3.7-24.8,13.8-80.3,30.3-90.6c10.5-9.2,2.3-22.4-22.7-3.4%0A%09%09%09c-19.2,14.5-25.3,60.3-27.2,81.1C1004.8,2558,978.2,2528.6,973.4,2494.7z" class="st10"></path>%0A%09%09<path d="M1225.4,2633.4c0,0-71-217.9-78.6-316.8" class="st11"></path>%0A%09%09<path d="M1129.2,2552.6c0,0,15.4-40.3,50.3-75.4" class="st11"></path>%0A%09%09<path d="M1261.1,2488.4c0,0-59.5-46.7-90-43.7" class="st11"></path>%0A%09%09<path d="M1052.5,2468.5c0,0,69.2-57,107.6-70.5" class="st11"></path>%0A%09%09<path d="M1243.7,2349.5c0,0-52.8-23.4-93.7-5.9" class="st11"></path>%0A%09</g>%0A%09<path d="M3360.2,3327.1c-71.4-58-182.9-129.1-345.1-184.1c-329.3-111.6-176.9-187.3-303.6-225.2%0A%09%09s-430.3-22.5-784.9-68.8s-643.1-33.1-556-162c60.4-89.4,145-152.7,191.1-183.1l-109.7,8.4c-108.3,81.3-312.5,270.2,66.8,308.2%0A%09%09c486.5,48.7,1181.1,101.9,1192.6,208.2c9.2,84.8,440.1,200.1,610.2,307.3C3334,3333.3,3346.8,3330.3,3360.2,3327.1z" class="st22"></path>%0A%09<linearGradient y2="608.8419" x2="3633.9429" y1="608.8419" x1="3431.6741" gradientUnits="userSpaceOnUse" id="SVGID_9_">%0A%09%09<stop style="stop-color:%234085F0" offset="0"></stop>%0A%09%09<stop style="stop-color:%23275DC9" offset="1"></stop>%0A%09</linearGradient>%0A%09<ellipse ry="101.1" rx="101.1" cy="608.8" cx="3532.8" class="st36"></ellipse>%0A%09<linearGradient y2="3174.8586" x2="1457.2415" y1="3174.8586" x1="1136.8959" gradientUnits="userSpaceOnUse" id="SVGID_10_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23529BF7" offset="1"></stop>%0A%09</linearGradient>%0A%09<ellipse ry="106.3" rx="160.2" cy="3174.9" cx="1297.1" class="st37"></ellipse>%0A%09<linearGradient y2="2968.6479" x2="1266.5088" y1="2968.6479" x1="1085.6805" gradientUnits="userSpaceOnUse" id="SVGID_11_">%0A%09%09<stop style="stop-color:%234085F0" offset="0"></stop>%0A%09%09<stop style="stop-color:%23275DC9" offset="1"></stop>%0A%09</linearGradient>%0A%09<ellipse ry="60" rx="90.4" cy="2968.6" cx="1176.1" class="st38"></ellipse>%0A%09<linearGradient y2="3078.0559" x2="5051.6841" y1="3078.0559" x1="4866.0625" gradientUnits="userSpaceOnUse" id="SVGID_12_">%0A%09%09<stop style="stop-color:%234085F0" offset="0"></stop>%0A%09%09<stop style="stop-color:%23275DC9" offset="1"></stop>%0A%09</linearGradient>%0A%09<ellipse ry="92.8" rx="92.8" cy="3078.1" cx="4958.9" class="st39"></ellipse>%0A%09<path d="M2285.6,3438c0,0,206.8,24.5,420.7-87.7c42.5-28.4,62.6,33.1,35.4,53.2%0A%09%09c-27.2,20.1-168.9,100.4-399.3,87.4C2216,3486.1,2239.4,3435.8,2285.6,3438z" class="Graphic_x0020_Style_x0020_100"></path>%0A</g>%0A</svg>%0A';var Yl=t=>{let{extra:o}=t,{title:{text:e},unregistered:s}=M(x=>x),r=new URLSearchParams(window.location.search),{token:a,setToken:n,mainPagePath:l}=M(x=>x),i=k(),{t:c}=C(),m=r.get("ticket");console.log("Ticket from URL:",m),console.log("Has ticket:",r.has("ticket")),console.log("Full search params:",window.location.search);let{isLoading:_}=Ue(r.has("ticket")?`/api/usystem/user/login?ticket=${r.get("ticket")}`:null,x=>i.get(x),{onSuccess:x=>{x&&"token"in x&&typeof x.token=="string"&&n(x.token);}});if(_)return jsx("div",{className:"w-screen h-screen flex justify-center items-center",children:jsx(Spin,{})});if(a){let x=!!window.location.hash,d=l;return x?(window.location.href=`${window.location.origin}${window.location.pathname}#${d}`,null):jsx(Navigate,{replace:!0,to:l})}return jsxs("div",{className:"w-screen h-screen relative flex overflow-hidden",children:[jsx("div",{className:"absolute top-16 right-16 z-10",children:o}),jsx("div",{className:"absolute left-14 top-6",children:jsxs(Space,{align:"center",children:[jsx(Le,{width:48}),jsx("span",{className:"text-2xl font-bold",children:e})]})}),jsx("div",{className:"flex-1 flex justify-center items-center bg-slate-50",children:jsx("img",{src:qr,alt:"background",className:"w-10/12"})}),jsx("div",{className:"w-[650px] relative top-0 left-0 right-0 bottom-0",children:jsx("div",{className:"absolute top-1/2 -translate-y-1/2 left-0 right-0",children:jsx("div",{className:"-translate-y-10 px-36",children:jsxs("div",{className:"flex flex-col justify-center",children:[jsx("div",{className:"h-10",children:s&&jsx(Alert,{banner:!0,closable:!0,message:c("SignIn.unregistered"),type:"error"})}),jsx(Typography.Title,{level:2,children:c("SignIn.welcome")}),jsx("div",{className:"mt-4",children:jsxs(Form,{layout:"vertical",autoComplete:"off",children:[jsx(Form.Item,{label:c("global.username"),name:"username",rules:[{required:!0}],children:jsx(Input,{})}),jsx(Form.Item,{label:c("global.password"),name:"password",rules:[{required:!0}],children:jsx(Input.Password,{})}),jsx(Form.Item,{children:jsx(Button,{block:!0,type:"primary",shape:"round",htmlType:"submit",children:c("global.signIn")})})]})}),jsx(Divider,{plain:!0,dashed:!0,children:c("SignIn.thirdParty")}),jsx("div",{className:"flex justify-center items-center",children:jsxs(Button,{block:!0,shape:"round",href:`${At}/logout?service=${At}/login?service=${window.location.href}`,target:"_self",children:[jsx(Le,{width:18}),c("SignIn.signInWithIDass")]})})]})})})})]})},Xl=Yl;te();qe();
2
+ export{ge as APP_ID_HEADER,Ta as DynamicTags,ft as ExpandableParagraph,_e as FRONTEND_ROUTE_PREFIX,Qe as FilterFormWrapper,Ce as Highlight,cn as InfiniteList,ri as Layout,Yt as NavMenu,y1 as NotFound,S1 as OperationLogList,$ as PermissionButton,je as PermissionVersion,me as QueryList,Gs as QueryListAction,Zt as RequireGame,Vi as RequirePermission,At as SSO_URL,Xl as SignIn,Sa as ToolkitsProvider,to as UserWidget,Z as WILDCARD,mt as generateId,p1 as menuRoutes,Fo as mixedStorage,Nl as permissionRoutes,Ut as useDraw,Et as useDrawerStore,tp as useFindGame,ca as useFormDraw,ye as useFormModal,we as useGames,De as useMenuList,ao as useModal,so as useModalStore,Y as usePermission,pe as useQueryListStore,M as useToolkitsStore,j as withContext};