@strapi/plugin-documentation 5.0.0-alpha.2 → 5.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/admin/src/hooks/useDocumentation.js +3 -1
  2. package/admin/src/pages/PluginPage/index.jsx +1 -3
  3. package/admin/src/pages/PluginPage/tests/index.test.jsx +13 -58
  4. package/admin/src/pages/SettingsPage/index.jsx +1 -2
  5. package/admin/src/pages/SettingsPage/tests/index.test.jsx +5 -50
  6. package/dist/_chunks/index-6GAHWaUh.mjs +161 -0
  7. package/dist/_chunks/index-6GAHWaUh.mjs.map +1 -0
  8. package/dist/_chunks/{index-Qe1yXTJr.mjs → index-HycR2ObR.mjs} +4 -5
  9. package/dist/_chunks/index-HycR2ObR.mjs.map +1 -0
  10. package/dist/_chunks/index-Pvr8dZSE.js +163 -0
  11. package/dist/_chunks/index-Pvr8dZSE.js.map +1 -0
  12. package/dist/_chunks/{index-vkMtbOUa.mjs → index-eLsMJ-dN.mjs} +7 -8
  13. package/dist/_chunks/{index-vkMtbOUa.mjs.map → index-eLsMJ-dN.mjs.map} +1 -1
  14. package/dist/_chunks/{index-t0HziKWe.js → index-u-2-MHVI.js} +9 -10
  15. package/dist/_chunks/index-u-2-MHVI.js.map +1 -0
  16. package/dist/_chunks/{index-fMs5UEhq.js → index-zUlxm0T6.js} +9 -10
  17. package/dist/_chunks/{index-fMs5UEhq.js.map → index-zUlxm0T6.js.map} +1 -1
  18. package/dist/_chunks/{useDocumentation-xDcgWV5k.js → useDocumentation-AraxXjTL.js} +5 -5
  19. package/dist/_chunks/useDocumentation-AraxXjTL.js.map +1 -0
  20. package/dist/_chunks/{useDocumentation-6NfW7vH_.mjs → useDocumentation-FjCEFMNs.mjs} +3 -3
  21. package/dist/_chunks/useDocumentation-FjCEFMNs.mjs.map +1 -0
  22. package/dist/admin/index.js +1 -1
  23. package/dist/admin/index.mjs +1 -1
  24. package/package.json +5 -6
  25. package/dist/_chunks/EditViewPage-JFzIJClS-IWpUoy9m.js +0 -84410
  26. package/dist/_chunks/EditViewPage-JFzIJClS-IWpUoy9m.js.map +0 -1
  27. package/dist/_chunks/EditViewPage-JFzIJClS-wgqliPP3.mjs +0 -84382
  28. package/dist/_chunks/EditViewPage-JFzIJClS-wgqliPP3.mjs.map +0 -1
  29. package/dist/_chunks/ListViewPage-1VNVP9Rw-NpsAq5kD.js +0 -1617
  30. package/dist/_chunks/ListViewPage-1VNVP9Rw-NpsAq5kD.js.map +0 -1
  31. package/dist/_chunks/ListViewPage-1VNVP9Rw-pe2DvVcA.mjs +0 -1594
  32. package/dist/_chunks/ListViewPage-1VNVP9Rw-pe2DvVcA.mjs.map +0 -1
  33. package/dist/_chunks/ReviewWorkflowsColumn-sPZxvFUd-Tnpp_Ad0.mjs +0 -33
  34. package/dist/_chunks/ReviewWorkflowsColumn-sPZxvFUd-Tnpp_Ad0.mjs.map +0 -1
  35. package/dist/_chunks/ReviewWorkflowsColumn-sPZxvFUd-YJhb1Nw6.js +0 -33
  36. package/dist/_chunks/ReviewWorkflowsColumn-sPZxvFUd-YJhb1Nw6.js.map +0 -1
  37. package/dist/_chunks/constants-0OGkpIzK-bvNr9cfm.js +0 -209
  38. package/dist/_chunks/constants-0OGkpIzK-bvNr9cfm.js.map +0 -1
  39. package/dist/_chunks/constants-0OGkpIzK-fURlr3te.mjs +0 -190
  40. package/dist/_chunks/constants-0OGkpIzK-fURlr3te.mjs.map +0 -1
  41. package/dist/_chunks/index--h5HRJXN.mjs +0 -17909
  42. package/dist/_chunks/index--h5HRJXN.mjs.map +0 -1
  43. package/dist/_chunks/index-Qe1yXTJr.mjs.map +0 -1
  44. package/dist/_chunks/index-XxWFAaxW.js +0 -17934
  45. package/dist/_chunks/index-XxWFAaxW.js.map +0 -1
  46. package/dist/_chunks/index-t0HziKWe.js.map +0 -1
  47. package/dist/_chunks/useDocumentation-6NfW7vH_.mjs.map +0 -1
  48. package/dist/_chunks/useDocumentation-xDcgWV5k.js.map +0 -1
  49. package/dist/_chunks/useSyncRbac-JNQibLFa-qTsqKP_7.mjs +0 -39
  50. package/dist/_chunks/useSyncRbac-JNQibLFa-qTsqKP_7.mjs.map +0 -1
  51. package/dist/_chunks/useSyncRbac-JNQibLFa-xqTnRORv.js +0 -57
  52. package/dist/_chunks/useSyncRbac-JNQibLFa-xqTnRORv.js.map +0 -1
  53. package/dist/style.css +0 -84
@@ -1,190 +0,0 @@
1
- import { ai as useGetWorkflowsQuery, aj as useCreateWorkflowMutation, ak as useUpdateWorkflowMutation, al as useDeleteWorkflowMutation, am as STAGE_ATTRIBUTE_NAME, a as getTranslation, an as ASSIGNEE_ATTRIBUTE_NAME, a5 as useAdminUsers, u as useField, a1 as getDisplayName, e as useDoc, ao as getStageColorByHex } from "./index--h5HRJXN.mjs";
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- import * as React from "react";
4
- import { Combobox, ComboboxOption, SingleSelect, Flex, Typography, Loader, SingleSelectOption } from "@strapi/design-system";
5
- import { useIntl } from "react-intl";
6
- function useReviewWorkflows(params = {}) {
7
- const { id = "", ...queryParams } = params;
8
- const { data, isLoading } = useGetWorkflowsQuery({
9
- id,
10
- populate: "stages",
11
- ...queryParams
12
- });
13
- const [createWorkflow] = useCreateWorkflowMutation();
14
- const [updateWorkflow] = useUpdateWorkflowMutation();
15
- const [deleteWorkflow] = useDeleteWorkflowMutation();
16
- const { workflows, meta } = data ?? {};
17
- return {
18
- // meta contains e.g. the total of all workflows. we can not use
19
- // the pagination object here, because the list is not paginated.
20
- meta,
21
- workflows,
22
- isLoading,
23
- createWorkflow,
24
- updateWorkflow,
25
- deleteWorkflow
26
- };
27
- }
28
- const AssigneeFilter = ({ name }) => {
29
- const [page, setPage] = React.useState(1);
30
- const { formatMessage } = useIntl();
31
- const { data, isLoading } = useAdminUsers({
32
- page
33
- });
34
- const users = data?.users || [];
35
- const field = useField(name);
36
- const handleChange = (value) => {
37
- setPage(1);
38
- field.onChange(name, value);
39
- };
40
- return /* @__PURE__ */ jsx(
41
- Combobox,
42
- {
43
- value: field.value,
44
- "aria-label": formatMessage({
45
- id: "content-manager.components.Filters.usersSelect.label",
46
- defaultMessage: "Search and select an user to filter"
47
- }),
48
- onChange: handleChange,
49
- loading: isLoading,
50
- onLoadMore: () => setPage((prev) => prev + 1),
51
- children: users.map((user) => {
52
- return /* @__PURE__ */ jsx(ComboboxOption, { value: user.id.toString(), children: getDisplayName(user, formatMessage) }, user.id);
53
- })
54
- }
55
- );
56
- };
57
- const StageFilter = (props) => {
58
- const { model } = useDoc();
59
- const { formatMessage } = useIntl();
60
- const { workflows, isLoading } = useReviewWorkflows({ filters: { contentTypes: model } });
61
- const field = useField(props.name);
62
- const [workflow] = workflows ?? [];
63
- return /* @__PURE__ */ jsx(
64
- SingleSelect,
65
- {
66
- "aria-label": formatMessage({
67
- id: "content-manager.components.Filters.reviewWorkflows.label",
68
- defaultMessage: "Search and select an workflow stage to filter"
69
- }),
70
- value: field.value,
71
- onChange: (value) => {
72
- field.onChange(props.name, value);
73
- },
74
- loading: isLoading,
75
- customizeContent: () => /* @__PURE__ */ jsxs(Flex, { as: "span", justifyContent: "space-between", alignItems: "center", width: "100%", children: [
76
- /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", ellipsis: true, children: field.value }),
77
- isLoading ? /* @__PURE__ */ jsx(Loader, { small: true, style: { display: "flex" } }) : null
78
- ] }),
79
- children: (workflow?.stages ?? []).map(({ id, color, name }) => {
80
- const { themeColorName } = getStageColorByHex(color) ?? {};
81
- return /* @__PURE__ */ jsx(
82
- SingleSelectOption,
83
- {
84
- startIcon: /* @__PURE__ */ jsx(
85
- Flex,
86
- {
87
- height: 2,
88
- background: color,
89
- borderColor: themeColorName === "neutral0" ? "neutral150" : void 0,
90
- hasRadius: true,
91
- shrink: 0,
92
- width: 2
93
- }
94
- ),
95
- value: name,
96
- children: name
97
- },
98
- id
99
- );
100
- })
101
- }
102
- );
103
- };
104
- const REVIEW_WORKFLOW_COLUMNS_EE = [
105
- {
106
- name: STAGE_ATTRIBUTE_NAME,
107
- attribute: {
108
- type: "relation",
109
- relation: "oneToMany",
110
- target: "admin::review-workflow-stage"
111
- },
112
- label: {
113
- id: getTranslation(`containers.list.table-headers.reviewWorkflows.stage`),
114
- defaultMessage: "Review stage"
115
- },
116
- searchable: false,
117
- sortable: true,
118
- mainField: {
119
- name: "name",
120
- type: "string"
121
- }
122
- },
123
- {
124
- name: ASSIGNEE_ATTRIBUTE_NAME,
125
- attribute: {
126
- type: "relation",
127
- target: "admin::user",
128
- relation: "oneToMany"
129
- },
130
- label: {
131
- id: getTranslation(`containers.list.table-headers.reviewWorkflows.assignee`),
132
- defaultMessage: "Assignee"
133
- },
134
- searchable: false,
135
- sortable: true,
136
- mainField: {
137
- name: "firstname",
138
- type: "string"
139
- }
140
- }
141
- ];
142
- const REVIEW_WORKFLOW_FILTERS = [
143
- {
144
- mainField: {
145
- name: "name",
146
- type: "string"
147
- },
148
- input: StageFilter,
149
- label: {
150
- id: getTranslation(`containers.list.table-headers.reviewWorkflows.stage`),
151
- defaultMessage: "Review stage"
152
- },
153
- name: "strapi_stage",
154
- type: "relation"
155
- },
156
- {
157
- type: "relation",
158
- mainField: {
159
- name: "id",
160
- type: "integer"
161
- },
162
- input: AssigneeFilter,
163
- operators: [
164
- {
165
- label: {
166
- id: "components.FilterOptions.FILTER_TYPES.$eq",
167
- defaultMessage: "is"
168
- },
169
- value: "$eq"
170
- },
171
- {
172
- label: {
173
- id: "components.FilterOptions.FILTER_TYPES.$ne",
174
- defaultMessage: "is not"
175
- },
176
- value: "$ne"
177
- }
178
- ],
179
- label: {
180
- id: getTranslation(`containers.list.table-headers.reviewWorkflows.assignee.label`),
181
- defaultMessage: "Assignee"
182
- },
183
- name: "strapi_assignee"
184
- }
185
- ];
186
- export {
187
- REVIEW_WORKFLOW_COLUMNS_EE,
188
- REVIEW_WORKFLOW_FILTERS
189
- };
190
- //# sourceMappingURL=constants-0OGkpIzK-fURlr3te.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants-0OGkpIzK-fURlr3te.mjs","sources":["../../../../core/admin/dist/_chunks/useReviewWorkflows--7WPIykR.mjs","../../../../core/admin/dist/_chunks/constants-0OGkpIzK.mjs"],"sourcesContent":["import { W as useGetWorkflowsQuery, X as useCreateWorkflowMutation, Y as useUpdateWorkflowMutation, Z as useDeleteWorkflowMutation } from \"./index-GIVuHJgC.mjs\";\nfunction useReviewWorkflows(params = {}) {\n const { id = \"\", ...queryParams } = params;\n const { data, isLoading } = useGetWorkflowsQuery({\n id,\n populate: \"stages\",\n ...queryParams\n });\n const [createWorkflow] = useCreateWorkflowMutation();\n const [updateWorkflow] = useUpdateWorkflowMutation();\n const [deleteWorkflow] = useDeleteWorkflowMutation();\n const { workflows, meta } = data ?? {};\n return {\n // meta contains e.g. the total of all workflows. we can not use\n // the pagination object here, because the list is not paginated.\n meta,\n workflows,\n isLoading,\n createWorkflow,\n updateWorkflow,\n deleteWorkflow\n };\n}\nexport {\n useReviewWorkflows as u\n};\n//# sourceMappingURL=useReviewWorkflows--7WPIykR.mjs.map\n","import { D as useAdminUsers, E as useField, g as getDisplayName, am as useDoc, aj as getStageColorByHex, bo as STAGE_ATTRIBUTE_NAME, ar as getTranslation, bp as ASSIGNEE_ATTRIBUTE_NAME } from \"./index-GIVuHJgC.mjs\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nimport { Combobox, ComboboxOption, SingleSelect, Flex, Typography, Loader, SingleSelectOption } from \"@strapi/design-system\";\nimport { useIntl } from \"react-intl\";\nimport { u as useReviewWorkflows } from \"./useReviewWorkflows--7WPIykR.mjs\";\nconst AssigneeFilter = ({ name }) => {\n const [page, setPage] = React.useState(1);\n const { formatMessage } = useIntl();\n const { data, isLoading } = useAdminUsers({\n page\n });\n const users = data?.users || [];\n const field = useField(name);\n const handleChange = (value) => {\n setPage(1);\n field.onChange(name, value);\n };\n return /* @__PURE__ */ jsx(\n Combobox,\n {\n value: field.value,\n \"aria-label\": formatMessage({\n id: \"content-manager.components.Filters.usersSelect.label\",\n defaultMessage: \"Search and select an user to filter\"\n }),\n onChange: handleChange,\n loading: isLoading,\n onLoadMore: () => setPage((prev) => prev + 1),\n children: users.map((user) => {\n return /* @__PURE__ */ jsx(ComboboxOption, { value: user.id.toString(), children: getDisplayName(user, formatMessage) }, user.id);\n })\n }\n );\n};\nconst StageFilter = (props) => {\n const { model } = useDoc();\n const { formatMessage } = useIntl();\n const { workflows, isLoading } = useReviewWorkflows({ filters: { contentTypes: model } });\n const field = useField(props.name);\n const [workflow] = workflows ?? [];\n return /* @__PURE__ */ jsx(\n SingleSelect,\n {\n \"aria-label\": formatMessage({\n id: \"content-manager.components.Filters.reviewWorkflows.label\",\n defaultMessage: \"Search and select an workflow stage to filter\"\n }),\n value: field.value,\n onChange: (value) => {\n field.onChange(props.name, value);\n },\n loading: isLoading,\n customizeContent: () => /* @__PURE__ */ jsxs(Flex, { as: \"span\", justifyContent: \"space-between\", alignItems: \"center\", width: \"100%\", children: [\n /* @__PURE__ */ jsx(Typography, { textColor: \"neutral800\", ellipsis: true, children: field.value }),\n isLoading ? /* @__PURE__ */ jsx(Loader, { small: true, style: { display: \"flex\" } }) : null\n ] }),\n children: (workflow?.stages ?? []).map(({ id, color, name }) => {\n const { themeColorName } = getStageColorByHex(color) ?? {};\n return /* @__PURE__ */ jsx(\n SingleSelectOption,\n {\n startIcon: /* @__PURE__ */ jsx(\n Flex,\n {\n height: 2,\n background: color,\n borderColor: themeColorName === \"neutral0\" ? \"neutral150\" : void 0,\n hasRadius: true,\n shrink: 0,\n width: 2\n }\n ),\n value: name,\n children: name\n },\n id\n );\n })\n }\n );\n};\nconst REVIEW_WORKFLOW_COLUMNS_EE = [\n {\n name: STAGE_ATTRIBUTE_NAME,\n attribute: {\n type: \"relation\",\n relation: \"oneToMany\",\n target: \"admin::review-workflow-stage\"\n },\n label: {\n id: getTranslation(`containers.list.table-headers.reviewWorkflows.stage`),\n defaultMessage: \"Review stage\"\n },\n searchable: false,\n sortable: true,\n mainField: {\n name: \"name\",\n type: \"string\"\n }\n },\n {\n name: ASSIGNEE_ATTRIBUTE_NAME,\n attribute: {\n type: \"relation\",\n target: \"admin::user\",\n relation: \"oneToMany\"\n },\n label: {\n id: getTranslation(`containers.list.table-headers.reviewWorkflows.assignee`),\n defaultMessage: \"Assignee\"\n },\n searchable: false,\n sortable: true,\n mainField: {\n name: \"firstname\",\n type: \"string\"\n }\n }\n];\nconst REVIEW_WORKFLOW_FILTERS = [\n {\n mainField: {\n name: \"name\",\n type: \"string\"\n },\n input: StageFilter,\n label: {\n id: getTranslation(`containers.list.table-headers.reviewWorkflows.stage`),\n defaultMessage: \"Review stage\"\n },\n name: \"strapi_stage\",\n type: \"relation\"\n },\n {\n type: \"relation\",\n mainField: {\n name: \"id\",\n type: \"integer\"\n },\n input: AssigneeFilter,\n operators: [\n {\n label: {\n id: \"components.FilterOptions.FILTER_TYPES.$eq\",\n defaultMessage: \"is\"\n },\n value: \"$eq\"\n },\n {\n label: {\n id: \"components.FilterOptions.FILTER_TYPES.$ne\",\n defaultMessage: \"is not\"\n },\n value: \"$ne\"\n }\n ],\n label: {\n id: getTranslation(`containers.list.table-headers.reviewWorkflows.assignee.label`),\n defaultMessage: \"Assignee\"\n },\n name: \"strapi_assignee\"\n }\n];\nexport {\n REVIEW_WORKFLOW_COLUMNS_EE,\n REVIEW_WORKFLOW_FILTERS\n};\n//# sourceMappingURL=constants-0OGkpIzK.mjs.map\n"],"names":[],"mappings":";;;;;AACA,SAAS,mBAAmB,SAAS,IAAI;AACvC,QAAM,EAAE,KAAK,IAAI,GAAG,YAAW,IAAK;AACpC,QAAM,EAAE,MAAM,UAAW,IAAG,qBAAqB;AAAA,IAC/C;AAAA,IACA,UAAU;AAAA,IACV,GAAG;AAAA,EACP,CAAG;AACD,QAAM,CAAC,cAAc,IAAI;AACzB,QAAM,CAAC,cAAc,IAAI;AACzB,QAAM,CAAC,cAAc,IAAI;AACzB,QAAM,EAAE,WAAW,SAAS,QAAQ,CAAA;AACpC,SAAO;AAAA;AAAA;AAAA,IAGL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AChBA,MAAM,iBAAiB,CAAC,EAAE,WAAW;AACnC,QAAM,CAAC,MAAM,OAAO,IAAI,MAAM,SAAS,CAAC;AACxC,QAAM,EAAE,kBAAkB;AAC1B,QAAM,EAAE,MAAM,UAAW,IAAG,cAAc;AAAA,IACxC;AAAA,EACJ,CAAG;AACD,QAAM,QAAQ,MAAM,SAAS;AAC7B,QAAM,QAAQ,SAAS,IAAI;AAC3B,QAAM,eAAe,CAAC,UAAU;AAC9B,YAAQ,CAAC;AACT,UAAM,SAAS,MAAM,KAAK;AAAA,EAC9B;AACE,SAAuB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,OAAO,MAAM;AAAA,MACb,cAAc,cAAc;AAAA,QAC1B,IAAI;AAAA,QACJ,gBAAgB;AAAA,MACxB,CAAO;AAAA,MACD,UAAU;AAAA,MACV,SAAS;AAAA,MACT,YAAY,MAAM,QAAQ,CAAC,SAAS,OAAO,CAAC;AAAA,MAC5C,UAAU,MAAM,IAAI,CAAC,SAAS;AAC5B,eAAuB,oBAAI,gBAAgB,EAAE,OAAO,KAAK,GAAG,SAAQ,GAAI,UAAU,eAAe,MAAM,aAAa,EAAC,GAAI,KAAK,EAAE;AAAA,MACxI,CAAO;AAAA,IACF;AAAA,EACL;AACA;AACA,MAAM,cAAc,CAAC,UAAU;AAC7B,QAAM,EAAE,UAAU;AAClB,QAAM,EAAE,kBAAkB;AAC1B,QAAM,EAAE,WAAW,UAAS,IAAK,mBAAmB,EAAE,SAAS,EAAE,cAAc,MAAO,EAAA,CAAE;AACxF,QAAM,QAAQ,SAAS,MAAM,IAAI;AACjC,QAAM,CAAC,QAAQ,IAAI,aAAa;AAChC,SAAuB;AAAA,IACrB;AAAA,IACA;AAAA,MACE,cAAc,cAAc;AAAA,QAC1B,IAAI;AAAA,QACJ,gBAAgB;AAAA,MACxB,CAAO;AAAA,MACD,OAAO,MAAM;AAAA,MACb,UAAU,CAAC,UAAU;AACnB,cAAM,SAAS,MAAM,MAAM,KAAK;AAAA,MACjC;AAAA,MACD,SAAS;AAAA,MACT,kBAAkB,MAAsB,qBAAK,MAAM,EAAE,IAAI,QAAQ,gBAAgB,iBAAiB,YAAY,UAAU,OAAO,QAAQ,UAAU;AAAA,QAC/H,oBAAI,YAAY,EAAE,WAAW,cAAc,UAAU,MAAM,UAAU,MAAM,OAAO;AAAA,QAClG,YAA4B,oBAAI,QAAQ,EAAE,OAAO,MAAM,OAAO,EAAE,SAAS,OAAQ,EAAA,CAAE,IAAI;AAAA,MAC/F,GAAS;AAAA,MACH,WAAW,UAAU,UAAU,CAAE,GAAE,IAAI,CAAC,EAAE,IAAI,OAAO,WAAW;AAC9D,cAAM,EAAE,eAAgB,IAAG,mBAAmB,KAAK,KAAK,CAAA;AACxD,eAAuB;AAAA,UACrB;AAAA,UACA;AAAA,YACE,WAA2B;AAAA,cACzB;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,YAAY;AAAA,gBACZ,aAAa,mBAAmB,aAAa,eAAe;AAAA,gBAC5D,WAAW;AAAA,gBACX,QAAQ;AAAA,gBACR,OAAO;AAAA,cACR;AAAA,YACF;AAAA,YACD,OAAO;AAAA,YACP,UAAU;AAAA,UACX;AAAA,UACD;AAAA,QACV;AAAA,MACA,CAAO;AAAA,IACF;AAAA,EACL;AACA;AACK,MAAC,6BAA6B;AAAA,EACjC;AAAA,IACE,MAAM;AAAA,IACN,WAAW;AAAA,MACT,MAAM;AAAA,MACN,UAAU;AAAA,MACV,QAAQ;AAAA,IACT;AAAA,IACD,OAAO;AAAA,MACL,IAAI,eAAe,qDAAqD;AAAA,MACxE,gBAAgB;AAAA,IACjB;AAAA,IACD,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,WAAW;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IACP;AAAA,EACF;AAAA,EACD;AAAA,IACE,MAAM;AAAA,IACN,WAAW;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU;AAAA,IACX;AAAA,IACD,OAAO;AAAA,MACL,IAAI,eAAe,wDAAwD;AAAA,MAC3E,gBAAgB;AAAA,IACjB;AAAA,IACD,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,WAAW;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IACP;AAAA,EACF;AACH;AACK,MAAC,0BAA0B;AAAA,EAC9B;AAAA,IACE,WAAW;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IACP;AAAA,IACD,OAAO;AAAA,IACP,OAAO;AAAA,MACL,IAAI,eAAe,qDAAqD;AAAA,MACxE,gBAAgB;AAAA,IACjB;AAAA,IACD,MAAM;AAAA,IACN,MAAM;AAAA,EACP;AAAA,EACD;AAAA,IACE,MAAM;AAAA,IACN,WAAW;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IACP;AAAA,IACD,OAAO;AAAA,IACP,WAAW;AAAA,MACT;AAAA,QACE,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB;AAAA,QACD,OAAO;AAAA,MACR;AAAA,MACD;AAAA,QACE,OAAO;AAAA,UACL,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB;AAAA,QACD,OAAO;AAAA,MACR;AAAA,IACF;AAAA,IACD,OAAO;AAAA,MACL,IAAI,eAAe,8DAA8D;AAAA,MACjF,gBAAgB;AAAA,IACjB;AAAA,IACD,MAAM;AAAA,EACP;AACH;"}