sfdx-hardis 6.1.3 → 6.1.5-beta202508282306.0
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/CHANGELOG.md +14 -0
- package/README.md +22 -11
- package/defaults/templates/sfdmu/ContactEmailsAnonymize.json +19 -0
- package/lib/commands/hardis/org/configure/data.js +2 -2
- package/lib/commands/hardis/org/configure/data.js.map +1 -1
- package/lib/commands/hardis/org/data/export.js +29 -7
- package/lib/commands/hardis/org/data/export.js.map +1 -1
- package/lib/commands/hardis/org/data/import.js +30 -7
- package/lib/commands/hardis/org/data/import.js.map +1 -1
- package/lib/commands/hardis/org/refresh/after-refresh.d.ts +1 -0
- package/lib/commands/hardis/org/refresh/after-refresh.js +50 -18
- package/lib/commands/hardis/org/refresh/after-refresh.js.map +1 -1
- package/lib/commands/hardis/org/refresh/before-refresh.d.ts +1 -0
- package/lib/commands/hardis/org/refresh/before-refresh.js +88 -29
- package/lib/commands/hardis/org/refresh/before-refresh.js.map +1 -1
- package/lib/commands/hardis/org/retrieve/packageconfig.js +2 -0
- package/lib/commands/hardis/org/retrieve/packageconfig.js.map +1 -1
- package/lib/commands/hardis/package/install.js +2 -0
- package/lib/commands/hardis/package/install.js.map +1 -1
- package/lib/common/utils/dataUtils.d.ts +7 -2
- package/lib/common/utils/dataUtils.js +66 -22
- package/lib/common/utils/dataUtils.js.map +1 -1
- package/oclif.manifest.json +689 -654
- package/package.json +1 -1
|
@@ -6,17 +6,20 @@ import { elapseEnd, elapseStart, execCommand, uxLog } from './index.js';
|
|
|
6
6
|
import { getConfig } from '../../config/index.js';
|
|
7
7
|
import { prompts } from './prompts.js';
|
|
8
8
|
import { isProductionOrg } from './orgUtils.js';
|
|
9
|
-
export const
|
|
9
|
+
export const DATA_FOLDERS_ROOT = path.join(process.cwd(), 'scripts', 'data');
|
|
10
10
|
// Import data from sfdmu folder
|
|
11
|
-
export async function importData(sfdmuPath, commandThis, options = {}) {
|
|
11
|
+
export async function importData(sfdmuPath, commandThis, options = { cwd: process.cwd() }) {
|
|
12
|
+
const cwd = options?.cwd || process.cwd();
|
|
12
13
|
const dtl = await getDataWorkspaceDetail(sfdmuPath);
|
|
13
14
|
if (dtl?.isDelete === true) {
|
|
14
15
|
throw new SfError('Your export.json contains deletion info, please use appropriate delete command');
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
+
const targetUsername = options.targetUsername || commandThis?.org?.getConnection().username;
|
|
18
|
+
uxLog("action", commandThis, c.cyan(`Importing data from ${c.green(dtl?.full_label)} into ${targetUsername}...`));
|
|
17
19
|
/* jscpd:ignore-start */
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
if (dtl?.description) {
|
|
21
|
+
uxLog("log", commandThis, c.italic(c.grey("Data Workspace Description:" + dtl?.description)));
|
|
22
|
+
}
|
|
20
23
|
await fs.ensureDir(path.join(sfdmuPath, 'logs'));
|
|
21
24
|
const config = await getConfig('branch');
|
|
22
25
|
const dataImportCommand = 'sf sfdmu:run' +
|
|
@@ -28,15 +31,19 @@ export async function importData(sfdmuPath, commandThis, options = {}) {
|
|
|
28
31
|
(config.sfdmuCanModify || process.env.SFDMU_CAN_MODIFY ? ` --canmodify ${config.sfdmuCanModify || process.env.SFDMU_CAN_MODIFY}` : '');
|
|
29
32
|
/* jscpd:ignore-end */
|
|
30
33
|
elapseStart(`import ${dtl?.full_label}`);
|
|
31
|
-
await execCommand(dataImportCommand, commandThis, {
|
|
34
|
+
const res = await execCommand(dataImportCommand, commandThis, {
|
|
32
35
|
fail: true,
|
|
33
36
|
output: true,
|
|
37
|
+
cwd: cwd,
|
|
34
38
|
});
|
|
39
|
+
uxLog("success", commandThis, c.green(`Data imported successfully from ${c.green(dtl?.full_label)} into ${targetUsername}`));
|
|
40
|
+
uxLog("log", commandThis, c.italic(c.grey(res.stdout || '')));
|
|
35
41
|
elapseEnd(`import ${dtl?.full_label}`);
|
|
36
42
|
}
|
|
37
43
|
// Delete data using sfdmu folder
|
|
38
|
-
export async function deleteData(sfdmuPath, commandThis, options = {}) {
|
|
44
|
+
export async function deleteData(sfdmuPath, commandThis, options = { cwd: process.cwd() }) {
|
|
39
45
|
const config = await getConfig('branch');
|
|
46
|
+
const cwd = options?.cwd || process.cwd();
|
|
40
47
|
const dtl = await getDataWorkspaceDetail(sfdmuPath);
|
|
41
48
|
if (dtl?.isDelete === false) {
|
|
42
49
|
throw new SfError('Your export.json does not contain deletion information. Please check http://help.sfdmu.com/full-documentation/advanced-features/delete-from-source');
|
|
@@ -47,11 +54,12 @@ export async function deleteData(sfdmuPath, commandThis, options = {}) {
|
|
|
47
54
|
throw new SfError(`To run this delete SFDMU script in production, you need to define "runnableInProduction": true in its export.json file`);
|
|
48
55
|
}
|
|
49
56
|
if (isProdOrg === true && !config.sfdmuCanModify) {
|
|
50
|
-
uxLog("warning",
|
|
57
|
+
uxLog("warning", commandThis, c.yellow(`If you see a sfdmu error, you probably need to add a property sfdmuCanModify: YOUR_ORG_INSTANCE_URL in the related config/branches/.sfdx-hardis.YOUR_BRANCH.yml config file.`));
|
|
51
58
|
}
|
|
52
|
-
// Delete using sfdmu
|
|
53
59
|
uxLog("action", commandThis, c.cyan(`Deleting data from ${c.green(dtl?.full_label)} ...`));
|
|
54
|
-
|
|
60
|
+
if (dtl?.description) {
|
|
61
|
+
uxLog("log", commandThis, c.italic(c.grey("Data Workspace Description:" + dtl?.description)));
|
|
62
|
+
}
|
|
55
63
|
const targetUsername = options.targetUsername || options.conn.username;
|
|
56
64
|
await fs.ensureDir(path.join(sfdmuPath, 'logs'));
|
|
57
65
|
const dataImportCommand = 'sf sfdmu:run' +
|
|
@@ -60,38 +68,73 @@ export async function deleteData(sfdmuPath, commandThis, options = {}) {
|
|
|
60
68
|
' --noprompt' +
|
|
61
69
|
(config.sfdmuCanModify ? ` --canmodify ${config.sfdmuCanModify}` : '');
|
|
62
70
|
elapseStart(`delete ${dtl?.full_label}`);
|
|
63
|
-
await execCommand(dataImportCommand, commandThis, {
|
|
71
|
+
const res = await execCommand(dataImportCommand, commandThis, {
|
|
64
72
|
fail: true,
|
|
65
73
|
output: true,
|
|
74
|
+
cwd: cwd,
|
|
66
75
|
});
|
|
76
|
+
uxLog("success", commandThis, c.green(`Data deleted successfully from ${c.green(dtl?.full_label)}`));
|
|
77
|
+
uxLog("log", commandThis, c.italic(c.grey(res.stdout || '')));
|
|
67
78
|
elapseEnd(`delete ${dtl?.full_label}`);
|
|
68
79
|
}
|
|
69
80
|
// Export data from sfdmu folder
|
|
70
|
-
export async function exportData(sfdmuPath, commandThis, options = {}) {
|
|
81
|
+
export async function exportData(sfdmuPath, commandThis, options = { cwd: process.cwd() }) {
|
|
71
82
|
/* jscpd:ignore-start */
|
|
83
|
+
const cwd = options?.cwd || process.cwd();
|
|
72
84
|
const dtl = await getDataWorkspaceDetail(sfdmuPath);
|
|
73
85
|
if (dtl?.isDelete === true) {
|
|
74
86
|
throw new SfError('Your export.json contains deletion info, please use appropriate delete command');
|
|
75
87
|
}
|
|
76
88
|
/* jscpd:ignore-end */
|
|
77
89
|
uxLog("action", commandThis, c.cyan(`Exporting data from ${c.green(dtl?.full_label)} ...`));
|
|
78
|
-
|
|
79
|
-
|
|
90
|
+
if (dtl?.description) {
|
|
91
|
+
uxLog("log", commandThis, c.italic(c.grey("Data Workspace Description:" + dtl?.description)));
|
|
92
|
+
}
|
|
93
|
+
const sourceUsername = options.sourceUsername || commandThis?.org?.getConnection().username;
|
|
80
94
|
await fs.ensureDir(path.join(sfdmuPath, 'logs'));
|
|
81
|
-
const dataImportCommand = `sf sfdmu:run --sourceusername ${sourceUsername} --targetusername csvfile -p ${sfdmuPath} --noprompt`;
|
|
82
|
-
|
|
95
|
+
const dataImportCommand = `sf sfdmu:run --sourceusername ${sourceUsername} --targetusername csvfile -p ${sfdmuPath} --noprompt`;
|
|
96
|
+
elapseStart(`export ${dtl?.full_label}`);
|
|
97
|
+
const res = await execCommand(dataImportCommand, commandThis, {
|
|
83
98
|
fail: true,
|
|
84
99
|
output: true,
|
|
100
|
+
cwd: cwd,
|
|
85
101
|
});
|
|
102
|
+
uxLog("success", commandThis, c.green(`Data exported successfully from ${c.green(dtl?.full_label)}`));
|
|
103
|
+
uxLog("log", commandThis, c.italic(c.grey(res.stdout || '')));
|
|
104
|
+
elapseEnd(`export ${dtl?.full_label}`);
|
|
105
|
+
}
|
|
106
|
+
export async function findDataWorkspaceByName(projectName) {
|
|
107
|
+
const folderPath = path.join(DATA_FOLDERS_ROOT, projectName);
|
|
108
|
+
if (fs.existsSync(folderPath)) {
|
|
109
|
+
return folderPath;
|
|
110
|
+
}
|
|
111
|
+
throw new SfError(`There is no sfdmu folder named ${projectName} in your workspace (${DATA_FOLDERS_ROOT})`);
|
|
86
112
|
}
|
|
87
|
-
export async function
|
|
88
|
-
|
|
89
|
-
|
|
113
|
+
export async function hasDataWorkspaces(cwd = process.cwd()) {
|
|
114
|
+
const dataFolderToSearch = path.join(cwd, 'scripts', 'data');
|
|
115
|
+
if (!fs.existsSync(dataFolderToSearch)) {
|
|
116
|
+
return false;
|
|
90
117
|
}
|
|
118
|
+
const sfdmuFolders = listDataFolders(dataFolderToSearch);
|
|
119
|
+
return sfdmuFolders.length > 0;
|
|
120
|
+
}
|
|
121
|
+
function listDataFolders(dataFolderToSearch) {
|
|
91
122
|
const sfdmuFolders = fs
|
|
92
|
-
.readdirSync(
|
|
123
|
+
.readdirSync(dataFolderToSearch, { withFileTypes: true })
|
|
93
124
|
.filter((dirent) => dirent.isDirectory())
|
|
94
|
-
.map((dirent) => path.join('
|
|
125
|
+
.map((dirent) => path.join('scripts', 'data', dirent.name));
|
|
126
|
+
return sfdmuFolders;
|
|
127
|
+
}
|
|
128
|
+
export async function selectDataWorkspace(opts = { selectDataLabel: 'Please select a data workspace to export', multiple: false }) {
|
|
129
|
+
let dataFolderToSearch = DATA_FOLDERS_ROOT;
|
|
130
|
+
if (opts.cwd) {
|
|
131
|
+
dataFolderToSearch = path.join(opts.cwd, 'scripts', 'data');
|
|
132
|
+
}
|
|
133
|
+
if (!fs.existsSync(dataFolderToSearch)) {
|
|
134
|
+
uxLog("warning", this, c.yellowBright("There is no sfdmu root folder 'scripts/data' in your workspace. Create it and define sfdmu exports using sfdmu: https://help.sfdmu.com/"));
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
const sfdmuFolders = listDataFolders(dataFolderToSearch);
|
|
95
138
|
if (sfdmuFolders.length === 0) {
|
|
96
139
|
throw new SfError('There is no sfdmu folder in your workspace. Create them using sfdmu: https://help.sfdmu.com/');
|
|
97
140
|
}
|
|
@@ -107,11 +150,12 @@ export async function selectDataWorkspace(opts = { selectDataLabel: 'Please sele
|
|
|
107
150
|
}
|
|
108
151
|
}
|
|
109
152
|
const sfdmuDirResult = await prompts({
|
|
110
|
-
type: 'select',
|
|
153
|
+
type: opts.multiple ? 'multiselect' : 'select',
|
|
111
154
|
name: 'value',
|
|
112
155
|
message: c.cyanBright(opts.selectDataLabel),
|
|
113
156
|
description: 'Select the SFDMU data configuration to use for this operation',
|
|
114
157
|
choices: choices,
|
|
158
|
+
initial: opts?.initial === "all" ? sfdmuFolders : opts?.initial ?? null
|
|
115
159
|
});
|
|
116
160
|
return sfdmuDirResult.value;
|
|
117
161
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataUtils.js","sourceRoot":"","sources":["../../../src/common/utils/dataUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,CAAC,MAAM,OAAO,CAAC;AACtB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"dataUtils.js","sourceRoot":"","sources":["../../../src/common/utils/dataUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,CAAC,MAAM,OAAO,CAAC;AACtB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAE7E,gCAAgC;AAChC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,WAAgB,EAAE,UAAe,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE;IACzG,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,GAAG,EAAE,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,OAAO,CAAC,gFAAgF,CAAC,CAAC;IACtG,CAAC;IACD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,QAAQ,CAAC;IAC5F,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,SAAS,cAAc,KAAK,CAAC,CAAC,CAAC;IAClH,wBAAwB;IACxB,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC;QACrB,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,GAAG,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,iBAAiB,GACrB,cAAc;QACd,2BAA2B;QAC3B,qBAAqB,cAAc,EAAE,GAAG,yDAAyD;QACjG,OAAO,SAAS,EAAE;QAClB,aAAa;QACb,6BAA6B;QAC7B,CAAC,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzI,sBAAsB;IACtB,WAAW,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,iBAAiB,EAAE,WAAW,EAAE;QAC5D,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,GAAG;KACT,CAAC,CAAC;IACH,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC,CAAC;IAC7H,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,SAAS,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,iCAAiC;AACjC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,WAAgB,EAAE,UAAe,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE;IACzG,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,GAAG,EAAE,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC5B,MAAM,IAAI,OAAO,CACf,oJAAoJ,CACrJ,CAAC;IACJ,CAAC;IACD,8FAA8F;IAC9F,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,cAAc,IAAI,OAAO,EAAE,IAAI,EAAE,QAAQ,IAAI,OAAO,EAAE,OAAO,CAAC,CAAC;IAChH,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,oBAAoB,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QACxE,MAAM,IAAI,OAAO,CAAC,wHAAwH,CAAC,CAAC;IAC9I,CAAC;IACD,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACjD,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,8KAA8K,CAAC,CAAC,CAAC;IAC1N,CAAC;IACD,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC;QACrB,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,GAAG,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IACvE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,MAAM,iBAAiB,GACrB,cAAc;QACd,qBAAqB,cAAc,EAAE;QACrC,OAAO,SAAS,EAAE;QAClB,aAAa;QACb,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzE,WAAW,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,iBAAiB,EAAE,WAAW,EAAE;QAC5D,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,GAAG;KACT,CAAC,CAAC;IACH,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACrG,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,SAAS,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,gCAAgC;AAChC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,WAAgB,EAAE,UAAe,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE;IACzG,wBAAwB;IACxB,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,GAAG,EAAE,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,OAAO,CAAC,gFAAgF,CAAC,CAAC;IACtG,CAAC;IACD,sBAAsB;IACtB,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5F,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC;QACrB,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,GAAG,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,QAAQ,CAAC;IAC5F,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,MAAM,iBAAiB,GAAG,iCAAiC,cAAc,gCAAgC,SAAS,aAAa,CAAC;IAChI,WAAW,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,iBAAiB,EAAE,WAAW,EAAE;QAC5D,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,GAAG;KACT,CAAC,CAAC;IACH,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IACtG,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,SAAS,CAAC,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,WAAmB;IAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,OAAO,CAAC,kCAAkC,WAAW,uBAAuB,iBAAiB,GAAG,CAAC,CAAC;AAC9G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACjE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,YAAY,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACzD,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,eAAe,CAAC,kBAA0B;IACjD,MAAM,YAAY,GAAG,EAAE;SACpB,WAAW,CAAC,kBAAkB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACxD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;SACxC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAmG,EAAE,eAAe,EAAE,0CAA0C,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC3N,IAAI,kBAAkB,GAAG,iBAAiB,CAAC;IAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACvC,KAAK,CAAC,SAAS,EAAE,IAAI,EACnB,CAAC,CAAC,YAAY,CACZ,yIAAyI,CAC1I,CAAC,CAAC;QACL,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACzD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,OAAO,CAAC,8FAA8F,CAAC,CAAC;IACpH,CAAC;IACD,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,MAAM,GAAG,CAAC,UAAU,EAAE;gBAC7B,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ;QAC9C,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;QAC3C,WAAW,EAAE,+DAA+D;QAC5E,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI,EAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI;KACxE,CAAC,CAAC;IACH,OAAO,cAAc,CAAC,KAAK,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,aAAqB;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,KAAK,CACH,SAAS,EACT,IAAI,EACJ,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,CACnH,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,IAAI,UAAU,CAAC;IACjE,MAAM,iBAAiB,GAAG,cAAc,CAAC,qBAAqB,IAAI,aAAa,CAAC;IAChF,OAAO;QACL,UAAU,EAAE,IAAI,UAAU,IAAI,UAAU,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACnF,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,iBAAiB;QAC9B,UAAU,EAAE,cAAc;QAC1B,QAAQ,EAAE,qBAAqB,CAAC,cAAc,CAAC;QAC/C,oBAAoB,EAAE,cAAc,CAAC,oBAAoB,IAAI,KAAK;KACnE,CAAC;AACJ,CAAC;AAED,oZAAoZ;AACpZ,MAAM,UAAU,qBAAqB,CAAC,cAAmB;IACvD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,YAAY,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,YAAY,EAAE,gBAAgB,KAAK,IAAI,IAAI,YAAY,CAAC,SAAS,KAAK,cAAc,EAAE,CAAC;YACzF,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|