keycloakify 7.14.0 → 7.14.2
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/README.md +6 -1
- package/bin/eject-keycloak-page.js +0 -3
- package/bin/eject-keycloak-page.js.map +1 -1
- package/bin/getSrcDirPath.d.ts +1 -2
- package/bin/getSrcDirPath.js +61 -4
- package/bin/getSrcDirPath.js.map +1 -1
- package/bin/initialize-email-theme.js +0 -4
- package/bin/initialize-email-theme.js.map +1 -1
- package/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +213 -210
- package/bin/keycloakify/generateTheme/generateTheme.d.ts +1 -1
- package/bin/keycloakify/generateTheme/generateTheme.js +10 -16
- package/bin/keycloakify/generateTheme/generateTheme.js.map +1 -1
- package/bin/keycloakify/generateTheme/readFieldNameUsage.d.ts +3 -2
- package/bin/keycloakify/generateTheme/readFieldNameUsage.js +2 -51
- package/bin/keycloakify/generateTheme/readFieldNameUsage.js.map +1 -1
- package/bin/keycloakify/keycloakify.js +0 -5
- package/bin/keycloakify/keycloakify.js.map +1 -1
- package/package.json +1 -1
- package/src/bin/eject-keycloak-page.ts +0 -4
- package/src/bin/getSrcDirPath.ts +19 -5
- package/src/bin/initialize-email-theme.ts +0 -6
- package/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +213 -210
- package/src/bin/keycloakify/generateTheme/generateTheme.ts +24 -31
- package/src/bin/keycloakify/generateTheme/readFieldNameUsage.ts +5 -64
- package/src/bin/keycloakify/keycloakify.ts +0 -6
package/README.md
CHANGED
@@ -45,6 +45,10 @@
|
|
45
45
|
> when using React; it's a well-regarded solution that many
|
46
46
|
> developers appreciate.
|
47
47
|
|
48
|
+
Keycloakify is fully compatible with Keycloak, starting from version 11 and is anticipated to maintain compatibility with all future versions.
|
49
|
+
You can update your Keycloak, your Keycloakify generated theme won't break.
|
50
|
+
To understand the basis of my confidence in this, you can [visit this discussion thread where I've explained in detail](https://github.com/keycloakify/keycloakify/discussions/346).
|
51
|
+
|
48
52
|
## Sponsor 👼
|
49
53
|
|
50
54
|
We are exclusively sponsored by [Cloud IAM](https://cloud-iam.com/?mtm_campaign=keycloakify-deal&mtm_source=keycloakify-github), a French company offering Keycloak as a service.
|
@@ -123,7 +127,8 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
|
123
127
|
|
124
128
|
## 7.13
|
125
129
|
|
126
|
-
- Deprecate `customUserAttribute`, Keycloakify now analyze your code to predict field name usage. [See doc](https://docs.keycloakify.dev/build-options#customuserattributes).
|
130
|
+
- Deprecate `customUserAttribute`, Keycloakify now analyze your code to predict field name usage. [See doc](https://docs.keycloakify.dev/build-options#customuserattributes).
|
131
|
+
It's now mandatory to [adopt the new directory structure](https://docs.keycloakify.dev/migration-guides/v6-greater-than-v7).
|
127
132
|
|
128
133
|
## 7.12
|
129
134
|
|
@@ -108,9 +108,6 @@ var getSrcDirPath_1 = require("./getSrcDirPath");
|
|
108
108
|
pageId = (_c.sent()).value;
|
109
109
|
pageBasename = (0, capitalize_1.capitalize)((0, kebabCaseToSnakeCase_1.kebabCaseToCamelCase)(pageId)).replace(/ftl$/, "tsx");
|
110
110
|
themeSrcDirPath = (0, getSrcDirPath_1.getThemeSrcDirPath)({ "projectDirPath": process.cwd() }).themeSrcDirPath;
|
111
|
-
if (themeSrcDirPath === undefined) {
|
112
|
-
throw new Error("Couldn't locate your theme sources");
|
113
|
-
}
|
114
111
|
targetFilePath = (0, path_1.join)(themeSrcDirPath, themeType, "pages", pageBasename);
|
115
112
|
if ((0, fs_1.existsSync)(targetFilePath)) {
|
116
113
|
console.log("".concat(pageId, " is already ejected, ").concat((0, path_1.relative)(process.cwd(), targetFilePath), " already exists"));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"eject-keycloak-page.js","sourceRoot":"","sources":["../src/bin/eject-keycloak-page.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yDAAwD;AACxD,0DAAmC;AACnC,yDAOmC;AACnC,+CAA8C;AAC9C,wCAAkD;AAClD,yBAAgC;AAChC,6BAAkE;AAClE,qEAAoE;AACpE,uCAA8C;AAC9C,iDAAqD;AAErD,CAAC;;;;;gBACG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBAEN,qBAAM,IAAA,oBAAS,EAAY;wBACpD,QAAQ,2BAAM,wBAAU,SAAC;qBAC5B,CAAC,CAAC,KAAK,CAAC;wBACL,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAExB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrB,CAAC,CAAC,EAAA;;gBANa,SAAS,GAAK,CAAA,SAM3B,CAAA,MANsB;gBAQxB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;gBAE3B,qBAAM,IAAA,oBAAS,EAAwC;wBAC7E,QAAQ,EAAE,CAAC;4BACP,QAAQ,SAAS,EAAE;gCACf,KAAK,OAAO;oCACR,gCAAW,+BAAiB,UAAE;gCAClC,KAAK,SAAS;oCACV,gCAAW,iCAAmB,UAAE;6BACvC;4BACD,IAAA,eAAM,EAAkC,KAAK,CAAC,CAAC;wBACnD,CAAC,CAAC,EAAE;qBACP,CAAC,CAAC,KAAK,CAAC;wBACL,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAExB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrB,CAAC,CAAC,EAAA;;gBAda,MAAM,GAAK,CAAA,SAcxB,CAAA,MAdmB;gBAgBf,YAAY,GAAG,IAAA,uBAAU,EAAC,IAAA,2CAAoB,EAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAE7E,eAAe,GAAK,IAAA,kCAAkB,EAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,gBAA5D,CAA6D;
|
1
|
+
{"version":3,"file":"eject-keycloak-page.js","sourceRoot":"","sources":["../src/bin/eject-keycloak-page.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yDAAwD;AACxD,0DAAmC;AACnC,yDAOmC;AACnC,+CAA8C;AAC9C,wCAAkD;AAClD,yBAAgC;AAChC,6BAAkE;AAClE,qEAAoE;AACpE,uCAA8C;AAC9C,iDAAqD;AAErD,CAAC;;;;;gBACG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBAEN,qBAAM,IAAA,oBAAS,EAAY;wBACpD,QAAQ,2BAAM,wBAAU,SAAC;qBAC5B,CAAC,CAAC,KAAK,CAAC;wBACL,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAExB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrB,CAAC,CAAC,EAAA;;gBANa,SAAS,GAAK,CAAA,SAM3B,CAAA,MANsB;gBAQxB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;gBAE3B,qBAAM,IAAA,oBAAS,EAAwC;wBAC7E,QAAQ,EAAE,CAAC;4BACP,QAAQ,SAAS,EAAE;gCACf,KAAK,OAAO;oCACR,gCAAW,+BAAiB,UAAE;gCAClC,KAAK,SAAS;oCACV,gCAAW,iCAAmB,UAAE;6BACvC;4BACD,IAAA,eAAM,EAAkC,KAAK,CAAC,CAAC;wBACnD,CAAC,CAAC,EAAE;qBACP,CAAC,CAAC,KAAK,CAAC;wBACL,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAExB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrB,CAAC,CAAC,EAAA;;gBAda,MAAM,GAAK,CAAA,SAcxB,CAAA,MAdmB;gBAgBf,YAAY,GAAG,IAAA,uBAAU,EAAC,IAAA,2CAAoB,EAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAE7E,eAAe,GAAK,IAAA,kCAAkB,EAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,gBAA5D,CAA6D;gBAE9E,cAAc,GAAG,IAAA,WAAQ,EAAC,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;gBAEnF,IAAI,IAAA,eAAU,EAAC,cAAc,CAAC,EAAE;oBAC5B,OAAO,CAAC,GAAG,CAAC,UAAG,MAAM,kCAAwB,IAAA,eAAY,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,oBAAiB,CAAC,CAAC;oBAE3G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpB;gBAEK,KAAA,oBAAS,CAAA;sBAAC,cAAc;gBAAE,qBAAM,IAAA,mBAAQ,EAAC,IAAA,WAAQ,EAAC,IAAA,+BAAc,GAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,EAAA;oBAAnH,qBAAM,4BAA0B,SAAmF,GAAC,EAAA;;gBAApH,SAAoH,CAAC;gBAErH,OAAO,CAAC,GAAG,CAAC,UAAG,IAAA,eAAY,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,aAAU,CAAC,CAAC;;;;KACzE,CAAC,EAAE,CAAC"}
|
package/bin/getSrcDirPath.d.ts
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
+
/** Can't catch error, if the directory isn't found, this function will just exit the process with an error message. */
|
1
2
|
export declare function getThemeSrcDirPath(params: {
|
2
3
|
projectDirPath: string;
|
3
4
|
}): {
|
4
5
|
themeSrcDirPath: string;
|
5
|
-
} | {
|
6
|
-
themeSrcDirPath: undefined;
|
7
6
|
};
|
package/bin/getSrcDirPath.js
CHANGED
@@ -22,14 +22,53 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
22
|
__setModuleDefault(result, mod);
|
23
23
|
return result;
|
24
24
|
};
|
25
|
+
var __read = (this && this.__read) || function (o, n) {
|
26
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
27
|
+
if (!m) return o;
|
28
|
+
var i = m.call(o), r, ar = [], e;
|
29
|
+
try {
|
30
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
31
|
+
}
|
32
|
+
catch (error) { e = { error: error }; }
|
33
|
+
finally {
|
34
|
+
try {
|
35
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
36
|
+
}
|
37
|
+
finally { if (e) throw e.error; }
|
38
|
+
}
|
39
|
+
return ar;
|
40
|
+
};
|
41
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
42
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
43
|
+
if (ar || !(i in from)) {
|
44
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
45
|
+
ar[i] = from[i];
|
46
|
+
}
|
47
|
+
}
|
48
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
49
|
+
};
|
50
|
+
var __values = (this && this.__values) || function(o) {
|
51
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
52
|
+
if (m) return m.call(o);
|
53
|
+
if (o && typeof o.length === "number") return {
|
54
|
+
next: function () {
|
55
|
+
if (o && i >= o.length) o = void 0;
|
56
|
+
return { value: o && o[i++], done: !o };
|
57
|
+
}
|
58
|
+
};
|
59
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
60
|
+
};
|
25
61
|
Object.defineProperty(exports, "__esModule", { value: true });
|
26
62
|
exports.getThemeSrcDirPath = void 0;
|
27
63
|
var fs = __importStar(require("fs"));
|
28
64
|
var tsafe_1 = require("tsafe");
|
29
65
|
var crawl_1 = require("./tools/crawl");
|
30
66
|
var path_1 = require("path");
|
67
|
+
var generateFtl_1 = require("./keycloakify/generateFtl");
|
31
68
|
var themeSrcDirBasename = "keycloak-theme";
|
69
|
+
/** Can't catch error, if the directory isn't found, this function will just exit the process with an error message. */
|
32
70
|
function getThemeSrcDirPath(params) {
|
71
|
+
var e_1, _a;
|
33
72
|
var projectDirPath = params.projectDirPath;
|
34
73
|
var srcDirPath = (0, path_1.join)(projectDirPath, "src");
|
35
74
|
var themeSrcDirPath = (0, crawl_1.crawl)({ "dirPath": srcDirPath, "returnedPathsType": "relative to dirPath" })
|
@@ -41,13 +80,31 @@ function getThemeSrcDirPath(params) {
|
|
41
80
|
return (0, path_1.join)(srcDirPath, split[0] + themeSrcDirBasename);
|
42
81
|
})
|
43
82
|
.filter((0, tsafe_1.exclude)(undefined))[0];
|
44
|
-
if (themeSrcDirPath
|
45
|
-
|
83
|
+
if (themeSrcDirPath !== undefined) {
|
84
|
+
return { themeSrcDirPath: themeSrcDirPath };
|
85
|
+
}
|
86
|
+
try {
|
87
|
+
for (var _b = __values(__spreadArray(__spreadArray([], __read(generateFtl_1.themeTypes), false), ["email"], false)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
88
|
+
var themeType = _c.value;
|
89
|
+
if (!fs.existsSync((0, path_1.join)(srcDirPath, themeType))) {
|
90
|
+
continue;
|
91
|
+
}
|
46
92
|
return { "themeSrcDirPath": srcDirPath };
|
47
93
|
}
|
48
|
-
return { "themeSrcDirPath": undefined };
|
49
94
|
}
|
50
|
-
|
95
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
96
|
+
finally {
|
97
|
+
try {
|
98
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
99
|
+
}
|
100
|
+
finally { if (e_1) throw e_1.error; }
|
101
|
+
}
|
102
|
+
console.error([
|
103
|
+
"Can't locate your theme source directory. It should be either: ",
|
104
|
+
"src/ or src/keycloak-theme.",
|
105
|
+
"Example in the starter: https://github.com/keycloakify/keycloakify-starter/tree/main/src/keycloak-theme"
|
106
|
+
].join("\n"));
|
107
|
+
process.exit(-1);
|
51
108
|
}
|
52
109
|
exports.getThemeSrcDirPath = getThemeSrcDirPath;
|
53
110
|
//# sourceMappingURL=getSrcDirPath.js.map
|
package/bin/getSrcDirPath.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getSrcDirPath.js","sourceRoot":"","sources":["../src/bin/getSrcDirPath.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"getSrcDirPath.js","sourceRoot":"","sources":["../src/bin/getSrcDirPath.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AACzB,+BAAgC;AAChC,uCAAsC;AACtC,6BAAwC;AACxC,yDAAuD;AAEvD,IAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAE7C,uHAAuH;AACvH,SAAgB,kBAAkB,CAAC,MAAkC;;IACzD,IAAA,cAAc,GAAK,MAAM,eAAX,CAAY;IAElC,IAAM,UAAU,GAAG,IAAA,WAAQ,EAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAEnD,IAAM,eAAe,GAAuB,IAAA,aAAK,EAAC,EAAE,SAAS,EAAE,UAAU,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,CAAC;SACnH,GAAG,CAAC,UAAA,gBAAgB;QACjB,IAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACpB,OAAO,SAAS,CAAC;SACpB;QAED,OAAO,IAAA,WAAQ,EAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC;IAChE,CAAC,CAAC;SACD,MAAM,CAAC,IAAA,eAAO,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,eAAe,KAAK,SAAS,EAAE;QAC/B,OAAO,EAAE,eAAe,iBAAA,EAAE,CAAC;KAC9B;;QAED,KAAwB,IAAA,KAAA,gDAAI,wBAAU,YAAE,OAAO,UAAC,gBAAA,4BAAE;YAA7C,IAAM,SAAS,WAAA;YAChB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAA,WAAQ,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE;gBACjD,SAAS;aACZ;YACD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;SAC5C;;;;;;;;;IAED,OAAO,CAAC,KAAK,CACT;QACI,iEAAiE;QACjE,6BAA6B;QAC7B,yGAAyG;KAC5G,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AArCD,gDAqCC"}
|
@@ -83,10 +83,6 @@ function main() {
|
|
83
83
|
themeSrcDirPath = (0, getSrcDirPath_1.getThemeSrcDirPath)({
|
84
84
|
"projectDirPath": process.cwd()
|
85
85
|
}).themeSrcDirPath;
|
86
|
-
if (themeSrcDirPath === undefined) {
|
87
|
-
logger.warn("Couldn't locate your theme source directory");
|
88
|
-
process.exit(-1);
|
89
|
-
}
|
90
86
|
emailThemeSrcDirPath = (0, path_1.join)(themeSrcDirPath, "email");
|
91
87
|
if (fs.existsSync(emailThemeSrcDirPath)) {
|
92
88
|
logger.warn("There is already a ".concat((0, path_1.relative)(process.cwd(), emailThemeSrcDirPath), " directory in your project. Aborting."));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"initialize-email-theme.js","sourceRoot":"","sources":["../src/bin/initialize-email-theme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qFAAiF;AACjF,6BAAkE;AAClE,+DAA8D;AAC9D,iEAAgE;AAChE,2DAA8D;AAC9D,qCAAyB;AACzB,yCAA2C;AAC3C,iDAAqD;AAErD,SAAsB,IAAI;;;;;;oBACd,QAAQ,GAAK,IAAA,+BAAgB,EAAC;wBAClC,gBAAgB,EAAE,OAAO,CAAC,GAAG,EAAE;wBAC/B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;qBACvC,CAAC,SAHc,CAGb;oBAEG,MAAM,GAAG,IAAA,kBAAS,EAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;oBAE/B,eAAe,GAAK,IAAA,kCAAkB,EAAC;wBAC3C,gBAAgB,EAAE,OAAO,CAAC,GAAG,EAAE;qBAClC,CAAC,gBAFqB,CAEpB;
|
1
|
+
{"version":3,"file":"initialize-email-theme.js","sourceRoot":"","sources":["../src/bin/initialize-email-theme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qFAAiF;AACjF,6BAAkE;AAClE,+DAA8D;AAC9D,iEAAgE;AAChE,2DAA8D;AAC9D,qCAAyB;AACzB,yCAA2C;AAC3C,iDAAqD;AAErD,SAAsB,IAAI;;;;;;oBACd,QAAQ,GAAK,IAAA,+BAAgB,EAAC;wBAClC,gBAAgB,EAAE,OAAO,CAAC,GAAG,EAAE;wBAC/B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;qBACvC,CAAC,SAHc,CAGb;oBAEG,MAAM,GAAG,IAAA,kBAAS,EAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;oBAE/B,eAAe,GAAK,IAAA,kCAAkB,EAAC;wBAC3C,gBAAgB,EAAE,OAAO,CAAC,GAAG,EAAE;qBAClC,CAAC,gBAFqB,CAEpB;oBAEG,oBAAoB,GAAG,IAAA,WAAQ,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;oBAEhE,IAAI,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;wBACrC,MAAM,CAAC,IAAI,CAAC,6BAAsB,IAAA,eAAY,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC,0CAAuC,CAAC,CAAC;wBAE5H,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;qBACpB;oBAE2B,qBAAM,IAAA,6CAAqB,GAAE,EAAA;;oBAAjD,eAAe,GAAK,CAAA,SAA6B,CAAA,gBAAlC;oBAEjB,8BAA8B,GAAG,IAAA,WAAQ,EAAC,oBAAoB,EAAE,IAAI,EAAE,kCAAkC,CAAC,CAAC;oBAEhH,qBAAM,IAAA,8DAA4B,EAAC;4BAC/B,eAAe,iBAAA;4BACf,aAAa,EAAE,8BAA8B;4BAC7C,QAAQ,UAAA;yBACX,CAAC,EAAA;;oBAJF,SAIE,CAAC;oBAEH,IAAA,qCAAiB,EAAC;wBACd,YAAY,EAAE,IAAA,WAAQ,EAAC,8BAA8B,EAAE,MAAM,EAAE,OAAO,CAAC;wBACvE,aAAa,EAAE,oBAAoB;qBACtC,CAAC,CAAC;oBAEH;wBACU,qBAAqB,GAAG,IAAA,WAAQ,EAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;wBAEjF,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,uBAAgB,EAAE,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC,CAAC;qBAC3I;oBAED,MAAM,CAAC,GAAG,CAAC,UAAG,IAAA,eAAY,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC,iFAA8E,CAAC,CAAC;oBAE/I,EAAE,CAAC,MAAM,CAAC,8BAA8B,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;CACnF;AA5CD,oBA4CC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IACzB,IAAI,EAAE,CAAC;CACV"}
|