downcity 1.1.125 → 1.1.126
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/package.json +3 -3
- package/town/agent/Run.js +2 -2
- package/town/agent/Run.js.map +1 -1
- package/town/env/ProcessEnv.d.ts +1 -1
- package/town/env/ProcessEnv.d.ts.map +1 -1
- package/town/env/ProcessEnv.js +6 -1
- package/town/env/ProcessEnv.js.map +1 -1
- package/town/shared/CityBalance.d.ts.map +1 -1
- package/town/shared/CityBalance.js +36 -1
- package/town/shared/CityBalance.js.map +1 -1
- package/town/shared/CityUserLogin.d.ts.map +1 -1
- package/town/shared/CityUserLogin.js +30 -3
- package/town/shared/CityUserLogin.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "downcity",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.126",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Downcity CLI bundle — installs city and town commands",
|
|
6
6
|
"bin": {
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"prompts": "^2.4.2",
|
|
45
45
|
"ws": "^8.21.0",
|
|
46
46
|
"zod": "^4.4.3",
|
|
47
|
+
"@downcity/agent": "^1.1.100",
|
|
47
48
|
"@downcity/city": "^0.2.56",
|
|
48
|
-
"@downcity/plugins": "^1.0.51"
|
|
49
|
-
"@downcity/agent": "^1.1.100"
|
|
49
|
+
"@downcity/plugins": "^1.0.51"
|
|
50
50
|
},
|
|
51
51
|
"scripts": {
|
|
52
52
|
"build": "node scripts/copy-cli-products.mjs && node scripts/ensure-cli-executable.mjs",
|
package/town/agent/Run.js
CHANGED
|
@@ -14,7 +14,7 @@ import { Agent, loadDowncityConfig, loadStaticSystemPrompts, shellTools, StaticP
|
|
|
14
14
|
import { createBuiltinPlugins } from "@downcity/plugins";
|
|
15
15
|
import { CliError } from "../shared/CliError.js";
|
|
16
16
|
import { createRuntimeModel } from "../town/city-model/CreateRuntimeModel.js";
|
|
17
|
-
import {
|
|
17
|
+
import { mergeProcessEnvWithPlatformGlobalEnv } from "../env/ProcessEnv.js";
|
|
18
18
|
import { resolveAgentId } from "../shared/IndexSupport.js";
|
|
19
19
|
import { startAgentHttpGateway } from "./AgentHttpGateway.js";
|
|
20
20
|
/**
|
|
@@ -29,7 +29,7 @@ import { startAgentHttpGateway } from "./AgentHttpGateway.js";
|
|
|
29
29
|
*/
|
|
30
30
|
export async function runCommand(cwd = ".", options) {
|
|
31
31
|
const projectRoot = path.resolve(cwd);
|
|
32
|
-
const hostEnv =
|
|
32
|
+
const hostEnv = mergeProcessEnvWithPlatformGlobalEnv();
|
|
33
33
|
// 端口解析(中文):允许 number / string;空值返回 undefined 以便走配置回退链。
|
|
34
34
|
const parsePort = (value, label) => {
|
|
35
35
|
if (value === undefined || value === null || value === "")
|
package/town/agent/Run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Run.js","sourceRoot":"","sources":["../../src/agent/Run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,KAAK,EACL,kBAAkB,EAClB,uBAAuB,EACvB,UAAU,EACV,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Run.js","sourceRoot":"","sources":["../../src/agent/Run.ts"],"names":[],"mappings":"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"}
|
package/town/env/ProcessEnv.d.ts
CHANGED
|
@@ -20,5 +20,5 @@ export declare function readPlatformGlobalEnv(): Record<string, string>;
|
|
|
20
20
|
* - 平台 global env 视为宿主层统一真相,应覆盖基础进程环境中的同名键。
|
|
21
21
|
* - 返回新对象,不直接修改传入参数。
|
|
22
22
|
*/
|
|
23
|
-
export declare function mergeProcessEnvWithPlatformGlobalEnv(baseEnv?: NodeJS.ProcessEnv):
|
|
23
|
+
export declare function mergeProcessEnvWithPlatformGlobalEnv(baseEnv?: NodeJS.ProcessEnv): Record<string, string>;
|
|
24
24
|
//# sourceMappingURL=ProcessEnv.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcessEnv.d.ts","sourceRoot":"","sources":["../../src/env/ProcessEnv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS9D;AAED;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAClD,OAAO,GAAE,MAAM,CAAC,UAAwB,GACvC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"ProcessEnv.d.ts","sourceRoot":"","sources":["../../src/env/ProcessEnv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS9D;AAED;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAClD,OAAO,GAAE,MAAM,CAAC,UAAwB,GACvC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxB"}
|
package/town/env/ProcessEnv.js
CHANGED
|
@@ -33,8 +33,13 @@ export function readPlatformGlobalEnv() {
|
|
|
33
33
|
* - 返回新对象,不直接修改传入参数。
|
|
34
34
|
*/
|
|
35
35
|
export function mergeProcessEnvWithPlatformGlobalEnv(baseEnv = process.env) {
|
|
36
|
+
const merged = {};
|
|
37
|
+
for (const [key, value] of Object.entries(baseEnv)) {
|
|
38
|
+
if (typeof value === "string")
|
|
39
|
+
merged[key] = value;
|
|
40
|
+
}
|
|
36
41
|
return {
|
|
37
|
-
...
|
|
42
|
+
...merged,
|
|
38
43
|
...readPlatformGlobalEnv(),
|
|
39
44
|
};
|
|
40
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcessEnv.js","sourceRoot":"","sources":["../../src/env/ProcessEnv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oCAAoC,CAClD,UAA6B,OAAO,CAAC,GAAG;IAExC,OAAO;
|
|
1
|
+
{"version":3,"file":"ProcessEnv.js","sourceRoot":"","sources":["../../src/env/ProcessEnv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oCAAoC,CAClD,UAA6B,OAAO,CAAC,GAAG;IAExC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACrD,CAAC;IACD,OAAO;QACL,GAAG,MAAM;QACT,GAAG,qBAAqB,EAAE;KAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CityBalance.d.ts","sourceRoot":"","sources":["../../src/shared/CityBalance.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EACV,sBAAsB,EAGtB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"CityBalance.d.ts","sourceRoot":"","sources":["../../src/shared/CityBalance.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EACV,sBAAsB,EAGtB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAgBvE;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,mBAAmB,GAAG,IAAI,GAClC,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAQxC;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,mBAAmB,GAAG,IAAI,EACnC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CA8BxC;AAwCD;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,mBAAmB,GAAG,IAAI,GAClC,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAoB/E"}
|
|
@@ -17,7 +17,11 @@ export async function readCurrentTownCityBalance(session) {
|
|
|
17
17
|
const client = createCurrentUserCityClient(session);
|
|
18
18
|
if (!client)
|
|
19
19
|
return null;
|
|
20
|
-
|
|
20
|
+
const current_user_id = await readCurrentTokenUserId(client);
|
|
21
|
+
assertSessionUserMatchesToken(session, current_user_id);
|
|
22
|
+
const account = await client.service("balance").get("me");
|
|
23
|
+
assertBalanceUserMatchesToken(account, current_user_id);
|
|
24
|
+
return account;
|
|
21
25
|
}
|
|
22
26
|
/**
|
|
23
27
|
* 给当前 Town City user 发起充值。
|
|
@@ -26,6 +30,8 @@ export async function rechargeCurrentTownCityUser(session, input) {
|
|
|
26
30
|
const client = createCurrentUserCityClient(session);
|
|
27
31
|
if (!client)
|
|
28
32
|
return null;
|
|
33
|
+
const current_user_id = await readCurrentTokenUserId(client);
|
|
34
|
+
assertSessionUserMatchesToken(session, current_user_id);
|
|
29
35
|
const amount = normalizePositiveInteger(input.amount, "amount");
|
|
30
36
|
const method_id = normalizeText(input.method_id) || DEFAULT_PAYMENT_METHOD_ID;
|
|
31
37
|
const topup = await client.service("balance").action("topups/create").invoke({
|
|
@@ -50,6 +56,35 @@ export async function rechargeCurrentTownCityUser(session, input) {
|
|
|
50
56
|
opened,
|
|
51
57
|
};
|
|
52
58
|
}
|
|
59
|
+
async function readCurrentTokenUserId(client) {
|
|
60
|
+
const result = await client.service("accounts").get("me");
|
|
61
|
+
const user_id = normalizeText(result.user?.user_id);
|
|
62
|
+
if (!user_id) {
|
|
63
|
+
throw new Error("City user token resolved without a user_id. Please run `town city login` again.");
|
|
64
|
+
}
|
|
65
|
+
return user_id;
|
|
66
|
+
}
|
|
67
|
+
function assertSessionUserMatchesToken(session, token_user_id) {
|
|
68
|
+
const session_user_id = normalizeText(session?.user_id);
|
|
69
|
+
if (session_user_id && session_user_id !== token_user_id) {
|
|
70
|
+
throw new Error([
|
|
71
|
+
"Town City session user does not match the authenticated token.",
|
|
72
|
+
`session=${session_user_id}`,
|
|
73
|
+
`token=${token_user_id}`,
|
|
74
|
+
"Run `town city logout` and then `town city login`.",
|
|
75
|
+
].join(" "));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function assertBalanceUserMatchesToken(account, token_user_id) {
|
|
79
|
+
if (account.user_id !== token_user_id) {
|
|
80
|
+
throw new Error([
|
|
81
|
+
"Balance account user does not match the authenticated token.",
|
|
82
|
+
`balance=${account.user_id}`,
|
|
83
|
+
`token=${token_user_id}`,
|
|
84
|
+
"Run `town city logout` and then `town city login`.",
|
|
85
|
+
].join(" "));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
53
88
|
/**
|
|
54
89
|
* 输出当前 user 余额。
|
|
55
90
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CityBalance.js","sourceRoot":"","sources":["../../src/shared/CityBalance.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAUhD,MAAM,yBAAyB,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"CityBalance.js","sourceRoot":"","sources":["../../src/shared/CityBalance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CityUserLogin.d.ts","sourceRoot":"","sources":["../../src/shared/CityUserLogin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"CityUserLogin.d.ts","sourceRoot":"","sources":["../../src/shared/CityUserLogin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,6BAA6B,CAAC;AA2UrC;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAUrC"}
|
|
@@ -94,11 +94,12 @@ async function emailLogin(input) {
|
|
|
94
94
|
const result = await client.service("accounts").action("login").invoke({
|
|
95
95
|
email,
|
|
96
96
|
password,
|
|
97
|
+
town_id: input.town_id,
|
|
97
98
|
});
|
|
98
99
|
if (result.error || !result.user_token) {
|
|
99
100
|
throw new Error(result.error || "login failed: no token");
|
|
100
101
|
}
|
|
101
|
-
return
|
|
102
|
+
return await buildVerifiedUserSession({
|
|
102
103
|
...input,
|
|
103
104
|
user_token: result.user_token,
|
|
104
105
|
user_id: result.user_id,
|
|
@@ -148,11 +149,12 @@ async function emailRegister(input) {
|
|
|
148
149
|
return null;
|
|
149
150
|
const verified = await accounts.action("verify-email").invoke({
|
|
150
151
|
token: verification_token,
|
|
152
|
+
town_id: input.town_id,
|
|
151
153
|
});
|
|
152
154
|
if (verified.error || !verified.user_token) {
|
|
153
155
|
throw new Error(verified.error || "verification failed: no token");
|
|
154
156
|
}
|
|
155
|
-
return
|
|
157
|
+
return await buildVerifiedUserSession({
|
|
156
158
|
...input,
|
|
157
159
|
user_token: verified.user_token,
|
|
158
160
|
user_id: verified.user_id || registered.user_id,
|
|
@@ -164,6 +166,7 @@ async function oauthAuth(input, provider) {
|
|
|
164
166
|
const accounts = client.service("accounts");
|
|
165
167
|
const started = await accounts.action("oauth/start").invoke({
|
|
166
168
|
provider,
|
|
169
|
+
town_id: input.town_id,
|
|
167
170
|
});
|
|
168
171
|
if (started.error || !started.url || !started.state) {
|
|
169
172
|
throw new Error(started.error || "failed to start OAuth");
|
|
@@ -178,7 +181,7 @@ async function oauthAuth(input, provider) {
|
|
|
178
181
|
if (!result || result.error || !result.user_token) {
|
|
179
182
|
throw new Error(result?.error || "OAuth failed");
|
|
180
183
|
}
|
|
181
|
-
return
|
|
184
|
+
return await buildVerifiedUserSession({
|
|
182
185
|
...input,
|
|
183
186
|
user_token: result.user_token,
|
|
184
187
|
user_id: result.user_id,
|
|
@@ -212,6 +215,30 @@ function buildUserSession(input) {
|
|
|
212
215
|
updated_at: new Date().toISOString(),
|
|
213
216
|
};
|
|
214
217
|
}
|
|
218
|
+
async function buildVerifiedUserSession(input) {
|
|
219
|
+
const verified = await readUserSessionFromToken(input);
|
|
220
|
+
return buildUserSession({
|
|
221
|
+
...input,
|
|
222
|
+
user_id: verified.user_id || input.user_id,
|
|
223
|
+
user_label: verified.user_label || input.user_label,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
async function readUserSessionFromToken(input) {
|
|
227
|
+
const client = new City({
|
|
228
|
+
role: "user",
|
|
229
|
+
city_url: input.city_url,
|
|
230
|
+
town_id: input.town_id,
|
|
231
|
+
user_token: input.user_token,
|
|
232
|
+
});
|
|
233
|
+
const result = await client.service("accounts").get("me");
|
|
234
|
+
const user_id = readString(result.user?.user_id);
|
|
235
|
+
const email = readString(result.profile?.email);
|
|
236
|
+
const display_name = readString(result.profile?.display_name);
|
|
237
|
+
return {
|
|
238
|
+
user_id: user_id || undefined,
|
|
239
|
+
user_label: email || display_name || user_id || undefined,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
215
242
|
function openBrowser(url) {
|
|
216
243
|
const command = process.platform === "darwin"
|
|
217
244
|
? "open"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CityUserLogin.js","sourceRoot":"","sources":["../../src/shared/CityUserLogin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"CityUserLogin.js","sourceRoot":"","sources":["../../src/shared/CityUserLogin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA2ChD,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAA6B;IAC1D,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,SAAS;QAC5B,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC;oBACX,KAAK,EAAE,aAAa;oBACpB,KAAK,EAAE,OAAO;oBACd,WAAW,EAAE,+BAA+B;iBAC7C,CAAC,CAAC;YACL,CAAC;YACD,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;gBACpC,OAAO,CAAC,IAAI,CAAC;oBACX,KAAK,EAAE,gBAAgB;oBACvB,KAAK,EAAE,UAAU;oBACjB,WAAW,EAAE,2BAA2B;iBACzC,CAAC,CAAC;YACL,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,wBAAwB,CAAC,QAAQ,CAAC;gBACzC,KAAK,EAAE,SAAS,QAAQ,EAAE;gBAC1B,WAAW,EAAE,gBAAgB,wBAAwB,CAAC,QAAQ,CAAC,QAAQ;aACxE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAgB;IAC7C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAqC,WAAW,CAAC,CAAC;IACnF,OAAO,qBAAqB,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,YAAY,CAAC;YACX,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,oBAAoB;YAC3B,IAAI,EAAE,oDAAoD;SAC3D,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC;QAC9B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;KACJ,CAAC,CAAoC,CAAC;IACvC,OAAO,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,KAAyB;IACjD,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC;QAC9B;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,OAAO;SACjB;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,UAAU;SACpB;KACF,CAAC,CAA0C,CAAC;IAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE7D,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAc;QAClF,KAAK;QACL,QAAQ;QACR,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,wBAAwB,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,MAAM,wBAAwB,CAAC;QACpC,GAAG,KAAK;QACR,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;KAClC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAyB;IACpD,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC;QAC9B;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,OAAO;SACjB;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,6BAA6B;SACvC;KACF,CAAC,CAA0C,CAAC;IAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACrE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAEnF,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAiB;QAC1E,KAAK;QACL,QAAQ;KACT,CAAC,CAAC;IACH,IAAI,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,qBAAqB,CAAC,CAAC;IAC7D,CAAC;IAED,YAAY,CAAC;QACX,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,wBAAwB;QAC/B,IAAI,EAAE,gFAAgF;KACvF,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,CAAC,MAAM,OAAO,CAAC;QACrC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,oBAAoB;KAC9B,CAAC,CAAoC,CAAC;IACvC,MAAM,kBAAkB,GAAG,UAAU,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;IAC1E,IAAI,CAAC,kBAAkB;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAe;QAC1E,KAAK,EAAE,kBAAkB;QACzB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,+BAA+B,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,MAAM,wBAAwB,CAAC;QACpC,GAAG,KAAK;QACR,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO;QAC/C,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,KAAyB,EACzB,QAAgB;IAEhB,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAmB;QAC5E,QAAQ;QACR,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,uBAAuB,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,YAAY,CAAC;QACX,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACjC,KAAK,EAAE,UAAU,wBAAwB,CAAC,QAAQ,CAAC,EAAE;QACrD,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;KACpE,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,cAAc,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,wBAAwB,CAAC;QACpC,GAAG,KAAK;QACR,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,QAAQ,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE;KAClE,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,MAAY,EAAE,KAAa;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAkB,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9E,IAAI,MAAM,CAAC,KAAK;gBAAE,OAAO,MAAM,CAAC;YAChC,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;QAClD,CAAC;QACD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAIzB;IACC,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,eAAe;QACrD,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS;QAC/C,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,SAAS;QACrD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,KAIvC;IACC,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,gBAAgB,CAAC;QACtB,GAAG,KAAK;QACR,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;QAC1C,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU;KACpD,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,KAEvC;IAIC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC;QACtB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAmB,IAAI,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9D,OAAO;QACL,OAAO,EAAE,OAAO,IAAI,SAAS;QAC7B,UAAU,EAAE,KAAK,IAAI,YAAY,IAAI,OAAO,IAAI,SAAS;KAC1D,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAC3C,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC5B,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,UAAU,CAAC;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;QACvC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC;QAC1B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE;YACtC,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,wBAAwB,CAAC,QAAgB;IAChD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACjD,IAAI,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC;IAChC,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC7C,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC7C,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC7C,OAAO,UAAU;SACd,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC7D,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAyB;IAEzB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO,MAAM,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC"}
|