@lwc/template-compiler 2.45.2 → 2.45.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.
- package/README.md +2 -2
- package/dist/index.cjs.js +5313 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/{types/index.d.ts → index.d.ts} +1 -0
- package/dist/index.js +5286 -0
- package/dist/index.js.map +1 -0
- package/package.json +33 -30
- package/dist/commonjs/codegen/codegen.js +0 -330
- package/dist/commonjs/codegen/codegen.js.map +0 -1
- package/dist/commonjs/codegen/expression.js +0 -176
- package/dist/commonjs/codegen/expression.js.map +0 -1
- package/dist/commonjs/codegen/formatters/module.js +0 -91
- package/dist/commonjs/codegen/formatters/module.js.map +0 -1
- package/dist/commonjs/codegen/helpers.js +0 -233
- package/dist/commonjs/codegen/helpers.js.map +0 -1
- package/dist/commonjs/codegen/index.js +0 -549
- package/dist/commonjs/codegen/index.js.map +0 -1
- package/dist/commonjs/codegen/optimize.js +0 -119
- package/dist/commonjs/codegen/optimize.js.map +0 -1
- package/dist/commonjs/codegen/static-element-serializer.js +0 -122
- package/dist/commonjs/codegen/static-element-serializer.js.map +0 -1
- package/dist/commonjs/config.js +0 -78
- package/dist/commonjs/config.js.map +0 -1
- package/dist/commonjs/index.js +0 -66
- package/dist/commonjs/index.js.map +0 -1
- package/dist/commonjs/parser/attribute.js +0 -237
- package/dist/commonjs/parser/attribute.js.map +0 -1
- package/dist/commonjs/parser/constants.js +0 -155
- package/dist/commonjs/parser/constants.js.map +0 -1
- package/dist/commonjs/parser/expression-complex/html.js +0 -222
- package/dist/commonjs/parser/expression-complex/html.js.map +0 -1
- package/dist/commonjs/parser/expression-complex/index.js +0 -26
- package/dist/commonjs/parser/expression-complex/index.js.map +0 -1
- package/dist/commonjs/parser/expression-complex/types.js +0 -9
- package/dist/commonjs/parser/expression-complex/types.js.map +0 -1
- package/dist/commonjs/parser/expression-complex/validate.js +0 -141
- package/dist/commonjs/parser/expression-complex/validate.js.map +0 -1
- package/dist/commonjs/parser/expression.js +0 -130
- package/dist/commonjs/parser/expression.js.map +0 -1
- package/dist/commonjs/parser/html.js +0 -112
- package/dist/commonjs/parser/html.js.map +0 -1
- package/dist/commonjs/parser/index.js +0 -1181
- package/dist/commonjs/parser/index.js.map +0 -1
- package/dist/commonjs/parser/parse5Errors.js +0 -77
- package/dist/commonjs/parser/parse5Errors.js.map +0 -1
- package/dist/commonjs/parser/parser.js +0 -309
- package/dist/commonjs/parser/parser.js.map +0 -1
- package/dist/commonjs/parser/utils/html-element-attributes.js +0 -411
- package/dist/commonjs/parser/utils/html-element-attributes.js.map +0 -1
- package/dist/commonjs/parser/utils/html-elements.js +0 -141
- package/dist/commonjs/parser/utils/html-elements.js.map +0 -1
- package/dist/commonjs/parser/utils/javascript.js +0 -25
- package/dist/commonjs/parser/utils/javascript.js.map +0 -1
- package/dist/commonjs/parser/utils/svg-elements.js +0 -42
- package/dist/commonjs/parser/utils/svg-elements.js.map +0 -1
- package/dist/commonjs/shared/ast.js +0 -496
- package/dist/commonjs/shared/ast.js.map +0 -1
- package/dist/commonjs/shared/constants.js +0 -33
- package/dist/commonjs/shared/constants.js.map +0 -1
- package/dist/commonjs/shared/estree.js +0 -325
- package/dist/commonjs/shared/estree.js.map +0 -1
- package/dist/commonjs/shared/naming.js +0 -32
- package/dist/commonjs/shared/naming.js.map +0 -1
- package/dist/commonjs/shared/parse5.js +0 -20
- package/dist/commonjs/shared/parse5.js.map +0 -1
- package/dist/commonjs/shared/renderer-hooks.js +0 -55
- package/dist/commonjs/shared/renderer-hooks.js.map +0 -1
- package/dist/commonjs/shared/types.js +0 -49
- package/dist/commonjs/shared/types.js.map +0 -1
- package/dist/commonjs/shared/utils.js +0 -45
- package/dist/commonjs/shared/utils.js.map +0 -1
- package/dist/commonjs/state.js +0 -24
- package/dist/commonjs/state.js.map +0 -1
- /package/dist/{types/codegen → codegen}/codegen.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/expression.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/formatters/module.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/helpers.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/index.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/optimize.d.ts +0 -0
- /package/dist/{types/codegen → codegen}/static-element-serializer.d.ts +0 -0
- /package/dist/{types/config.d.ts → config.d.ts} +0 -0
- /package/dist/{types/parser → parser}/attribute.d.ts +0 -0
- /package/dist/{types/parser → parser}/constants.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression-complex/html.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression-complex/index.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression-complex/types.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression-complex/validate.d.ts +0 -0
- /package/dist/{types/parser → parser}/expression.d.ts +0 -0
- /package/dist/{types/parser → parser}/html.d.ts +0 -0
- /package/dist/{types/parser → parser}/index.d.ts +0 -0
- /package/dist/{types/parser → parser}/parse5Errors.d.ts +0 -0
- /package/dist/{types/parser → parser}/parser.d.ts +0 -0
- /package/dist/{types/parser → parser}/utils/html-element-attributes.d.ts +0 -0
- /package/dist/{types/parser → parser}/utils/html-elements.d.ts +0 -0
- /package/dist/{types/parser → parser}/utils/javascript.d.ts +0 -0
- /package/dist/{types/parser → parser}/utils/svg-elements.d.ts +0 -0
- /package/dist/{types/shared → shared}/ast.d.ts +0 -0
- /package/dist/{types/shared → shared}/constants.d.ts +0 -0
- /package/dist/{types/shared → shared}/estree.d.ts +0 -0
- /package/dist/{types/shared → shared}/naming.d.ts +0 -0
- /package/dist/{types/shared → shared}/parse5.d.ts +0 -0
- /package/dist/{types/shared → shared}/renderer-hooks.d.ts +0 -0
- /package/dist/{types/shared → shared}/types.d.ts +0 -0
- /package/dist/{types/shared → shared}/utils.d.ts +0 -0
- /package/dist/{types/state.d.ts → state.d.ts} +0 -0
|
@@ -1,549 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
/*
|
|
30
|
-
* Copyright (c) 2018, salesforce.com, inc.
|
|
31
|
-
* All rights reserved.
|
|
32
|
-
* SPDX-License-Identifier: MIT
|
|
33
|
-
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
34
|
-
*/
|
|
35
|
-
const astring = __importStar(require("astring"));
|
|
36
|
-
const shared_1 = require("@lwc/shared");
|
|
37
|
-
const errors_1 = require("@lwc/errors");
|
|
38
|
-
const ast_1 = require("../shared/ast");
|
|
39
|
-
const constants_1 = require("../shared/constants");
|
|
40
|
-
const t = __importStar(require("../shared/estree"));
|
|
41
|
-
const attribute_1 = require("../parser/attribute");
|
|
42
|
-
const renderer_hooks_1 = require("../shared/renderer-hooks");
|
|
43
|
-
const codegen_1 = __importDefault(require("./codegen"));
|
|
44
|
-
const helpers_1 = require("./helpers");
|
|
45
|
-
const module_1 = require("./formatters/module");
|
|
46
|
-
function transform(codeGen) {
|
|
47
|
-
function transformElement(element, slotParentName) {
|
|
48
|
-
const databag = elementDataBag(element, slotParentName);
|
|
49
|
-
let res;
|
|
50
|
-
if (codeGen.staticNodes.has(element) && (0, ast_1.isElement)(element)) {
|
|
51
|
-
// do not process children of static nodes.
|
|
52
|
-
return codeGen.genHoistedElement(element, slotParentName);
|
|
53
|
-
}
|
|
54
|
-
const children = transformChildren(element);
|
|
55
|
-
const { name } = element;
|
|
56
|
-
// lwc:dynamic directive
|
|
57
|
-
const deprecatedDynamicDirective = element.directives.find(ast_1.isDynamicDirective);
|
|
58
|
-
// lwc:is directive
|
|
59
|
-
const dynamicDirective = element.directives.find(ast_1.isLwcIsDirective);
|
|
60
|
-
if (deprecatedDynamicDirective) {
|
|
61
|
-
const expression = codeGen.bindExpression(deprecatedDynamicDirective.value);
|
|
62
|
-
res = codeGen.genDeprecatedDynamicElement(name, expression, databag, children);
|
|
63
|
-
}
|
|
64
|
-
else if (dynamicDirective) {
|
|
65
|
-
const expression = codeGen.bindExpression(dynamicDirective.value);
|
|
66
|
-
res = codeGen.genDynamicElement(expression, databag, children);
|
|
67
|
-
}
|
|
68
|
-
else if ((0, ast_1.isComponent)(element)) {
|
|
69
|
-
res = codeGen.genCustomElement(name, (0, helpers_1.identifierFromComponentName)(name), databag, children);
|
|
70
|
-
}
|
|
71
|
-
else if ((0, ast_1.isSlot)(element)) {
|
|
72
|
-
const defaultSlot = children;
|
|
73
|
-
res = codeGen.getSlot(element.slotName, databag, defaultSlot);
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
res = codeGen.genElement(name, databag, children);
|
|
77
|
-
}
|
|
78
|
-
return res;
|
|
79
|
-
}
|
|
80
|
-
function transformText(consecutiveText) {
|
|
81
|
-
return codeGen.genText(consecutiveText.map(({ value }) => {
|
|
82
|
-
return (0, ast_1.isStringLiteral)(value) ? value.value : codeGen.bindExpression(value);
|
|
83
|
-
}));
|
|
84
|
-
}
|
|
85
|
-
function transformComment(comment) {
|
|
86
|
-
return codeGen.genComment(comment.value);
|
|
87
|
-
}
|
|
88
|
-
function transformChildren(parent) {
|
|
89
|
-
const res = [];
|
|
90
|
-
const children = parent.children;
|
|
91
|
-
const childrenIterator = children[Symbol.iterator]();
|
|
92
|
-
let current;
|
|
93
|
-
while ((current = childrenIterator.next()) && !current.done) {
|
|
94
|
-
let child = current.value;
|
|
95
|
-
if ((0, ast_1.isText)(child)) {
|
|
96
|
-
const continuousText = [];
|
|
97
|
-
// Consume all the contiguous text nodes.
|
|
98
|
-
do {
|
|
99
|
-
continuousText.push(child);
|
|
100
|
-
current = childrenIterator.next();
|
|
101
|
-
child = current.value;
|
|
102
|
-
} while (!current.done && (0, ast_1.isText)(child));
|
|
103
|
-
res.push(transformText(continuousText));
|
|
104
|
-
// Early exit if a text node is the last child node.
|
|
105
|
-
if (current.done) {
|
|
106
|
-
break;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
if ((0, ast_1.isForBlock)(child)) {
|
|
110
|
-
res.push(transformForBlock(child));
|
|
111
|
-
}
|
|
112
|
-
else if ((0, ast_1.isIf)(child)) {
|
|
113
|
-
const children = transformIf(child);
|
|
114
|
-
Array.isArray(children) ? res.push(...children) : res.push(children);
|
|
115
|
-
}
|
|
116
|
-
else if ((0, ast_1.isBaseElement)(child)) {
|
|
117
|
-
const slotParentName = (0, ast_1.isSlot)(parent) ? parent.slotName : undefined;
|
|
118
|
-
res.push(transformElement(child, slotParentName));
|
|
119
|
-
}
|
|
120
|
-
else if ((0, ast_1.isComment)(child) && codeGen.preserveComments) {
|
|
121
|
-
res.push(transformComment(child));
|
|
122
|
-
}
|
|
123
|
-
else if ((0, ast_1.isIfBlock)(child)) {
|
|
124
|
-
res.push(transformConditionalParentBlock(child));
|
|
125
|
-
}
|
|
126
|
-
else if ((0, ast_1.isScopedSlotFragment)(child)) {
|
|
127
|
-
res.push(transformScopedSlotFragment(child));
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
if ((0, helpers_1.shouldFlatten)(codeGen, children)) {
|
|
131
|
-
if (children.length === 1) {
|
|
132
|
-
return res[0];
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
return codeGen.genFlatten([t.arrayExpression(res)]);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
return t.arrayExpression(res);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
function transformScopedSlotFragment(scopedSlotFragment) {
|
|
143
|
-
const { slotName, slotData: { value: dataIdentifier }, } = scopedSlotFragment;
|
|
144
|
-
codeGen.beginScope();
|
|
145
|
-
codeGen.declareIdentifier(dataIdentifier);
|
|
146
|
-
// At runtime, the 'key' of the <slot> element will be propagated to the fragment vnode
|
|
147
|
-
// produced by the ScopedSlotFactory
|
|
148
|
-
const key = t.identifier('key');
|
|
149
|
-
codeGen.declareIdentifier(key);
|
|
150
|
-
const fragment = codeGen.genFragment(key, transformChildren(scopedSlotFragment));
|
|
151
|
-
codeGen.endScope();
|
|
152
|
-
// The factory is invoked with two parameters:
|
|
153
|
-
// 1. The value of the binding specified in lwc:slot-bind directive
|
|
154
|
-
// 2. The key to be applied to the fragment vnode, this will be used for diffing
|
|
155
|
-
const slotFragmentFactory = t.functionExpression(null, [dataIdentifier, key], t.blockStatement([t.returnStatement(fragment)]));
|
|
156
|
-
let slotNameTransformed;
|
|
157
|
-
if (t.isLiteral(slotName)) {
|
|
158
|
-
slotNameTransformed = t.literal(slotName.value);
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
slotNameTransformed = codeGen.bindExpression(slotName);
|
|
162
|
-
}
|
|
163
|
-
return codeGen.getScopedSlotFactory(slotFragmentFactory, slotNameTransformed);
|
|
164
|
-
}
|
|
165
|
-
function transformIf(ifNode) {
|
|
166
|
-
const expression = transformChildren(ifNode);
|
|
167
|
-
let res;
|
|
168
|
-
if (t.isArrayExpression(expression)) {
|
|
169
|
-
// Bind the expression once for all the template children
|
|
170
|
-
const testExpression = codeGen.bindExpression(ifNode.condition);
|
|
171
|
-
res = t.arrayExpression(expression.elements.map((element) => element !== null
|
|
172
|
-
? applyInlineIf(ifNode, element, testExpression)
|
|
173
|
-
: null));
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
// If the template has a single children, make sure the ternary expression returns an array
|
|
177
|
-
res = applyInlineIf(ifNode, expression, undefined, t.arrayExpression([]));
|
|
178
|
-
}
|
|
179
|
-
if (t.isArrayExpression(res)) {
|
|
180
|
-
// The `if` transformation does not use the SpreadElement, neither null, therefore we can safely
|
|
181
|
-
// typecast it to t.Expression[]
|
|
182
|
-
res = res.elements;
|
|
183
|
-
}
|
|
184
|
-
return res;
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Transforms an IfBlock or ElseifBlock along with both its direct descendants and its 'else' descendants.
|
|
188
|
-
*
|
|
189
|
-
* @param conditionalParentBlock The IfBlock or ElseifBlock to transform into a conditional expression
|
|
190
|
-
* @param key The key to use for this chain of IfBlock/ElseifBlock branches, if applicable
|
|
191
|
-
* @returns A conditional expression representing the full conditional tree with conditionalParentBlock as the root node
|
|
192
|
-
*/
|
|
193
|
-
function transformConditionalParentBlock(conditionalParentBlock, key) {
|
|
194
|
-
const ifBlockKey = key !== null && key !== void 0 ? key : codeGen.generateKey();
|
|
195
|
-
const childrenExpression = codeGen.genFragment(t.literal(ifBlockKey), transformChildren(conditionalParentBlock));
|
|
196
|
-
let elseExpression = t.literal(null);
|
|
197
|
-
if (conditionalParentBlock.else) {
|
|
198
|
-
elseExpression = (0, ast_1.isElseifBlock)(conditionalParentBlock.else)
|
|
199
|
-
? transformConditionalParentBlock(conditionalParentBlock.else, ifBlockKey)
|
|
200
|
-
: codeGen.genFragment(t.literal(ifBlockKey), transformChildren(conditionalParentBlock.else));
|
|
201
|
-
}
|
|
202
|
-
return t.conditionalExpression(codeGen.bindExpression(conditionalParentBlock.condition), childrenExpression, elseExpression);
|
|
203
|
-
}
|
|
204
|
-
function applyInlineIf(ifNode, node, testExpression, falseValue) {
|
|
205
|
-
if (!testExpression) {
|
|
206
|
-
testExpression = codeGen.bindExpression(ifNode.condition);
|
|
207
|
-
}
|
|
208
|
-
let leftExpression;
|
|
209
|
-
const modifier = ifNode.modifier;
|
|
210
|
-
/* istanbul ignore else */
|
|
211
|
-
if (modifier === 'true') {
|
|
212
|
-
leftExpression = testExpression;
|
|
213
|
-
}
|
|
214
|
-
else if (modifier === 'false') {
|
|
215
|
-
leftExpression = t.unaryExpression('!', testExpression);
|
|
216
|
-
}
|
|
217
|
-
else if (modifier === 'strict-true') {
|
|
218
|
-
leftExpression = t.binaryExpression('===', testExpression, t.literal(true));
|
|
219
|
-
}
|
|
220
|
-
else {
|
|
221
|
-
// This is a defensive check, should be taken care of during parsing.
|
|
222
|
-
throw (0, errors_1.generateCompilerError)(errors_1.TemplateErrors.UNKNOWN_IF_MODIFIER, {
|
|
223
|
-
messageArgs: [modifier],
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
return t.conditionalExpression(leftExpression, node, falseValue !== null && falseValue !== void 0 ? falseValue : t.literal(null));
|
|
227
|
-
}
|
|
228
|
-
function transformForBlock(forBlock) {
|
|
229
|
-
let expression = transformForChildren(forBlock);
|
|
230
|
-
if (t.isArrayExpression(expression) && expression.elements.length === 1) {
|
|
231
|
-
expression = expression.elements[0];
|
|
232
|
-
}
|
|
233
|
-
let res;
|
|
234
|
-
if ((0, ast_1.isForEach)(forBlock)) {
|
|
235
|
-
res = applyInlineFor(forBlock, expression);
|
|
236
|
-
}
|
|
237
|
-
else {
|
|
238
|
-
res = applyInlineForOf(forBlock, expression);
|
|
239
|
-
}
|
|
240
|
-
return res;
|
|
241
|
-
}
|
|
242
|
-
function transformForChildren(forBlock) {
|
|
243
|
-
codeGen.beginScope();
|
|
244
|
-
if ((0, ast_1.isForEach)(forBlock)) {
|
|
245
|
-
const { item, index } = forBlock;
|
|
246
|
-
if (index) {
|
|
247
|
-
codeGen.declareIdentifier(index);
|
|
248
|
-
}
|
|
249
|
-
codeGen.declareIdentifier(item);
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
codeGen.declareIdentifier(forBlock.iterator);
|
|
253
|
-
}
|
|
254
|
-
const children = transformChildren(forBlock);
|
|
255
|
-
codeGen.endScope();
|
|
256
|
-
return children;
|
|
257
|
-
}
|
|
258
|
-
function applyInlineFor(forEach, node) {
|
|
259
|
-
const { expression, item, index } = forEach;
|
|
260
|
-
const params = [item];
|
|
261
|
-
if (index) {
|
|
262
|
-
params.push(index);
|
|
263
|
-
}
|
|
264
|
-
const iterable = codeGen.bindExpression(expression);
|
|
265
|
-
const iterationFunction = t.functionExpression(null, params, t.blockStatement([t.returnStatement(node)]));
|
|
266
|
-
return codeGen.genIterator(iterable, iterationFunction);
|
|
267
|
-
}
|
|
268
|
-
function applyInlineForOf(forOf, node) {
|
|
269
|
-
const { expression, iterator } = forOf;
|
|
270
|
-
const { name: iteratorName } = iterator;
|
|
271
|
-
const argsMapping = {
|
|
272
|
-
value: `${iteratorName}Value`,
|
|
273
|
-
index: `${iteratorName}Index`,
|
|
274
|
-
first: `${iteratorName}First`,
|
|
275
|
-
last: `${iteratorName}Last`,
|
|
276
|
-
};
|
|
277
|
-
const iteratorArgs = Object.values(argsMapping).map((arg) => t.identifier(arg));
|
|
278
|
-
const iteratorObject = t.objectExpression(Object.entries(argsMapping).map(([prop, arg]) => t.property(t.identifier(prop), t.identifier(arg))));
|
|
279
|
-
const iterable = codeGen.bindExpression(expression);
|
|
280
|
-
const iterationFunction = t.functionExpression(null, iteratorArgs, t.blockStatement([
|
|
281
|
-
t.variableDeclaration('const', [
|
|
282
|
-
t.variableDeclarator(t.identifier(iteratorName), iteratorObject),
|
|
283
|
-
]),
|
|
284
|
-
t.returnStatement(node),
|
|
285
|
-
]));
|
|
286
|
-
return codeGen.genIterator(iterable, iterationFunction);
|
|
287
|
-
}
|
|
288
|
-
function computeAttrValue(attr, element, addLegacySanitizationHook) {
|
|
289
|
-
const { name: elmName, namespace = '' } = element;
|
|
290
|
-
const { value: attrValue } = attr;
|
|
291
|
-
// Evaluate properties based on their attribute name
|
|
292
|
-
const attrName = (0, ast_1.isProperty)(attr) ? attr.attributeName : attr.name;
|
|
293
|
-
const isUsedAsAttribute = (0, attribute_1.isAttribute)(element, attrName);
|
|
294
|
-
if ((0, ast_1.isExpression)(attrValue)) {
|
|
295
|
-
const expression = codeGen.bindExpression(attrValue);
|
|
296
|
-
// TODO [#2012]: Normalize global boolean attrs values passed to custom elements as props
|
|
297
|
-
if (isUsedAsAttribute && (0, shared_1.isBooleanAttribute)(attrName, elmName)) {
|
|
298
|
-
// We need to do some manipulation to allow the diffing algorithm add/remove the attribute
|
|
299
|
-
// without handling special cases at runtime.
|
|
300
|
-
return codeGen.genBooleanAttributeExpr(expression);
|
|
301
|
-
}
|
|
302
|
-
if (attrName === 'tabindex') {
|
|
303
|
-
return codeGen.genTabIndex([expression]);
|
|
304
|
-
}
|
|
305
|
-
if (attrName === 'id' || (0, attribute_1.isIdReferencingAttribute)(attrName)) {
|
|
306
|
-
return codeGen.genScopedId(expression);
|
|
307
|
-
}
|
|
308
|
-
if (codeGen.scopeFragmentId &&
|
|
309
|
-
(0, attribute_1.isAllowedFragOnlyUrlsXHTML)(elmName, attrName, namespace)) {
|
|
310
|
-
return codeGen.genScopedFragId(expression);
|
|
311
|
-
}
|
|
312
|
-
if ((0, attribute_1.isSvgUseHref)(elmName, attrName, namespace)) {
|
|
313
|
-
if (addLegacySanitizationHook) {
|
|
314
|
-
codeGen.usedLwcApis.add('sanitizeAttribute');
|
|
315
|
-
return t.callExpression(t.identifier('sanitizeAttribute'), [
|
|
316
|
-
t.literal(elmName),
|
|
317
|
-
t.literal(namespace),
|
|
318
|
-
t.literal(attrName),
|
|
319
|
-
codeGen.genScopedFragId(expression),
|
|
320
|
-
]);
|
|
321
|
-
}
|
|
322
|
-
return codeGen.genScopedFragId(expression);
|
|
323
|
-
}
|
|
324
|
-
return expression;
|
|
325
|
-
}
|
|
326
|
-
else if ((0, ast_1.isStringLiteral)(attrValue)) {
|
|
327
|
-
if (attrName === 'id') {
|
|
328
|
-
return codeGen.genScopedId(attrValue.value);
|
|
329
|
-
}
|
|
330
|
-
if (attrName === 'spellcheck') {
|
|
331
|
-
return t.literal(attrValue.value.toLowerCase() !== 'false');
|
|
332
|
-
}
|
|
333
|
-
if (!isUsedAsAttribute && (0, shared_1.isBooleanAttribute)(attrName, elmName)) {
|
|
334
|
-
// We are in presence of a string value, for a recognized boolean attribute, which is used as
|
|
335
|
-
// property. for these cases, always set the property to true.
|
|
336
|
-
return t.literal(true);
|
|
337
|
-
}
|
|
338
|
-
if ((0, attribute_1.isIdReferencingAttribute)(attrName)) {
|
|
339
|
-
return codeGen.genScopedId(attrValue.value);
|
|
340
|
-
}
|
|
341
|
-
if (codeGen.scopeFragmentId &&
|
|
342
|
-
(0, attribute_1.isAllowedFragOnlyUrlsXHTML)(elmName, attrName, namespace) &&
|
|
343
|
-
(0, attribute_1.isFragmentOnlyUrl)(attrValue.value)) {
|
|
344
|
-
return codeGen.genScopedFragId(attrValue.value);
|
|
345
|
-
}
|
|
346
|
-
if ((0, attribute_1.isSvgUseHref)(elmName, attrName, namespace)) {
|
|
347
|
-
// apply the fragment id tranformation if necessary
|
|
348
|
-
const value = (0, attribute_1.isFragmentOnlyUrl)(attrValue.value)
|
|
349
|
-
? codeGen.genScopedFragId(attrValue.value)
|
|
350
|
-
: t.literal(attrValue.value);
|
|
351
|
-
if (addLegacySanitizationHook) {
|
|
352
|
-
codeGen.usedLwcApis.add('sanitizeAttribute');
|
|
353
|
-
return t.callExpression(t.identifier('sanitizeAttribute'), [
|
|
354
|
-
t.literal(elmName),
|
|
355
|
-
t.literal(namespace),
|
|
356
|
-
t.literal(attrName),
|
|
357
|
-
value,
|
|
358
|
-
]);
|
|
359
|
-
}
|
|
360
|
-
return value;
|
|
361
|
-
}
|
|
362
|
-
return t.literal(attrValue.value);
|
|
363
|
-
}
|
|
364
|
-
else {
|
|
365
|
-
// A boolean value used in an attribute should always generate .setAttribute(attr.name, ''),
|
|
366
|
-
// regardless if is a boolean attribute or not.
|
|
367
|
-
return isUsedAsAttribute ? t.literal('') : t.literal(attrValue.value);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
function elementDataBag(element, slotParentName) {
|
|
371
|
-
const data = [];
|
|
372
|
-
const { attributes, properties, listeners } = element;
|
|
373
|
-
const innerHTML = element.directives.find(ast_1.isInnerHTMLDirective);
|
|
374
|
-
const forKey = element.directives.find(ast_1.isKeyDirective);
|
|
375
|
-
const dom = element.directives.find(ast_1.isDomDirective);
|
|
376
|
-
const ref = element.directives.find(ast_1.isRefDirective);
|
|
377
|
-
const spread = element.directives.find(ast_1.isSpreadDirective);
|
|
378
|
-
const addSanitizationHook = (0, renderer_hooks_1.isCustomRendererHookRequired)(element, codeGen.state);
|
|
379
|
-
const slotBindDirective = element.directives.find(ast_1.isSlotBindDirective);
|
|
380
|
-
// Attributes
|
|
381
|
-
if (attributes.length) {
|
|
382
|
-
const rest = {};
|
|
383
|
-
for (const attr of attributes) {
|
|
384
|
-
const { name, value } = attr;
|
|
385
|
-
if (name === 'class') {
|
|
386
|
-
// Handle class attribute:
|
|
387
|
-
// - expression values are turned into a `className` property.
|
|
388
|
-
// - string values are parsed and turned into a `classMap` object associating
|
|
389
|
-
// each individual class name with a `true` boolean.
|
|
390
|
-
if ((0, ast_1.isExpression)(value)) {
|
|
391
|
-
const classExpression = codeGen.bindExpression(value);
|
|
392
|
-
data.push(t.property(t.identifier('className'), classExpression));
|
|
393
|
-
}
|
|
394
|
-
else if ((0, ast_1.isStringLiteral)(value)) {
|
|
395
|
-
const classNames = (0, helpers_1.parseClassNames)(value.value);
|
|
396
|
-
const classMap = t.objectExpression(classNames.map((name) => t.property(t.literal(name), t.literal(true))));
|
|
397
|
-
data.push(t.property(t.identifier('classMap'), classMap));
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
else if (name === 'style') {
|
|
401
|
-
// Handle style attribute:
|
|
402
|
-
// - expression values are turned into a `style` property.
|
|
403
|
-
// - string values are parsed and turned into a `styles` array
|
|
404
|
-
// containing triples of [name, value, important (optional)]
|
|
405
|
-
if ((0, ast_1.isExpression)(value)) {
|
|
406
|
-
const styleExpression = codeGen.bindExpression(value);
|
|
407
|
-
data.push(t.property(t.identifier('style'), styleExpression));
|
|
408
|
-
}
|
|
409
|
-
else if ((0, ast_1.isStringLiteral)(value)) {
|
|
410
|
-
const styleMap = (0, helpers_1.parseStyleText)(value.value);
|
|
411
|
-
const styleAST = (0, helpers_1.styleMapToStyleDeclsAST)(styleMap);
|
|
412
|
-
data.push(t.property(t.identifier('styleDecls'), styleAST));
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
else {
|
|
416
|
-
rest[name] = computeAttrValue(attr, element, !addSanitizationHook);
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
// Add all the remaining attributes to an `attrs` object where the key is the attribute
|
|
420
|
-
// name and the value is the computed attribute value.
|
|
421
|
-
if (Object.keys(rest).length) {
|
|
422
|
-
const attrsObj = (0, helpers_1.objectToAST)(rest, (key) => rest[key]);
|
|
423
|
-
data.push(t.property(t.identifier('attrs'), attrsObj));
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
// Properties
|
|
427
|
-
const propsObj = t.objectExpression([]);
|
|
428
|
-
// Properties
|
|
429
|
-
if (properties.length) {
|
|
430
|
-
for (const prop of properties) {
|
|
431
|
-
propsObj.properties.push(t.property(t.literal(prop.name), computeAttrValue(prop, element, !addSanitizationHook)));
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
// Properties: lwc:inner-html directive
|
|
435
|
-
if (innerHTML) {
|
|
436
|
-
const expr = (0, ast_1.isStringLiteral)(innerHTML.value)
|
|
437
|
-
? t.literal(innerHTML.value.value)
|
|
438
|
-
: codeGen.bindExpression(innerHTML.value);
|
|
439
|
-
propsObj.properties.push(t.property(t.identifier('innerHTML'),
|
|
440
|
-
// If lwc:inner-html is added as a directive requiring custom renderer, no need
|
|
441
|
-
// to add the legacy sanitizeHtmlContent hook
|
|
442
|
-
addSanitizationHook ? expr : codeGen.genSanitizedHtmlExpr(expr)));
|
|
443
|
-
}
|
|
444
|
-
// Properties: lwc:ref directive
|
|
445
|
-
if (ref) {
|
|
446
|
-
data.push(t.property(t.identifier('ref'), ref.value));
|
|
447
|
-
codeGen.hasRefs = true;
|
|
448
|
-
}
|
|
449
|
-
if (propsObj.properties.length) {
|
|
450
|
-
data.push(t.property(t.identifier('props'), propsObj));
|
|
451
|
-
}
|
|
452
|
-
// Context
|
|
453
|
-
if (dom || innerHTML) {
|
|
454
|
-
const contextObj = t.objectExpression([
|
|
455
|
-
t.property(t.identifier('lwc'), t.objectExpression([t.property(t.identifier('dom'), t.literal('manual'))])),
|
|
456
|
-
]);
|
|
457
|
-
data.push(t.property(t.identifier('context'), contextObj));
|
|
458
|
-
}
|
|
459
|
-
if (spread) {
|
|
460
|
-
data.push(t.property(t.identifier('spread'), codeGen.bindExpression(spread.value)));
|
|
461
|
-
}
|
|
462
|
-
// Key property on VNode
|
|
463
|
-
if (forKey) {
|
|
464
|
-
// If element has user-supplied `key` or is in iterator, call `api.k`
|
|
465
|
-
const forKeyExpression = codeGen.bindExpression(forKey.value);
|
|
466
|
-
const generatedKey = codeGen.genKey(t.literal(codeGen.generateKey()), forKeyExpression);
|
|
467
|
-
data.push(t.property(t.identifier('key'), generatedKey));
|
|
468
|
-
}
|
|
469
|
-
else {
|
|
470
|
-
// If standalone element with no user-defined key
|
|
471
|
-
let key = codeGen.generateKey();
|
|
472
|
-
// Parent slot name could be the empty string
|
|
473
|
-
if (slotParentName !== undefined) {
|
|
474
|
-
// Prefixing the key is necessary to avoid conflicts with default content for the
|
|
475
|
-
// slot which might have similar keys. Each vnode will always have a key that starts
|
|
476
|
-
// with a numeric character from compiler. In this case, we add a unique notation
|
|
477
|
-
// for slotted vnodes keys, e.g.: `@foo:1:1`. Note that this is *not* needed for
|
|
478
|
-
// dynamic keys, since `api.k` already scopes based on the iteration.
|
|
479
|
-
key = `@${slotParentName}:${key}`;
|
|
480
|
-
}
|
|
481
|
-
data.push(t.property(t.identifier('key'), t.literal(key)));
|
|
482
|
-
}
|
|
483
|
-
// Event handler
|
|
484
|
-
if (listeners.length) {
|
|
485
|
-
const listenerObj = Object.fromEntries(listeners.map((listener) => [listener.name, listener]));
|
|
486
|
-
const listenerObjAST = (0, helpers_1.objectToAST)(listenerObj, (key) => {
|
|
487
|
-
const componentHandler = codeGen.bindExpression(listenerObj[key].handler);
|
|
488
|
-
const handler = codeGen.genBind(componentHandler);
|
|
489
|
-
return (0, helpers_1.memorizeHandler)(codeGen, componentHandler, handler);
|
|
490
|
-
});
|
|
491
|
-
data.push(t.property(t.identifier('on'), listenerObjAST));
|
|
492
|
-
}
|
|
493
|
-
// SVG handling
|
|
494
|
-
if (element.namespace === shared_1.SVG_NAMESPACE) {
|
|
495
|
-
data.push(t.property(t.identifier('svg'), t.literal(true)));
|
|
496
|
-
}
|
|
497
|
-
if (addSanitizationHook) {
|
|
498
|
-
codeGen.usedLwcApis.add(constants_1.RENDERER);
|
|
499
|
-
data.push(t.property(t.identifier(constants_1.RENDERER), t.identifier(constants_1.RENDERER)));
|
|
500
|
-
}
|
|
501
|
-
if (!(0, shared_1.isUndefined)(slotBindDirective)) {
|
|
502
|
-
data.push(t.property(t.identifier('slotData'), codeGen.bindExpression(slotBindDirective.value)));
|
|
503
|
-
}
|
|
504
|
-
if ((0, ast_1.isExternalComponent)(element)) {
|
|
505
|
-
data.push(t.property(t.identifier('external'), t.literal(true)));
|
|
506
|
-
}
|
|
507
|
-
return t.objectExpression(data);
|
|
508
|
-
}
|
|
509
|
-
return transformChildren(codeGen.root);
|
|
510
|
-
}
|
|
511
|
-
function generateTemplateFunction(codeGen) {
|
|
512
|
-
const returnedValue = transform(codeGen);
|
|
513
|
-
const args = [
|
|
514
|
-
constants_1.TEMPLATE_PARAMS.API,
|
|
515
|
-
constants_1.TEMPLATE_PARAMS.INSTANCE,
|
|
516
|
-
constants_1.TEMPLATE_PARAMS.SLOT_SET,
|
|
517
|
-
constants_1.TEMPLATE_PARAMS.CONTEXT,
|
|
518
|
-
].map((id) => t.identifier(id));
|
|
519
|
-
const usedApis = Object.keys(codeGen.usedApis);
|
|
520
|
-
const body = usedApis.length === 0
|
|
521
|
-
? []
|
|
522
|
-
: [
|
|
523
|
-
t.variableDeclaration('const', [
|
|
524
|
-
t.variableDeclarator(t.objectPattern(usedApis.map((name) => t.assignmentProperty(t.identifier(name), codeGen.usedApis[name]))), t.identifier(constants_1.TEMPLATE_PARAMS.API)),
|
|
525
|
-
]),
|
|
526
|
-
];
|
|
527
|
-
if (codeGen.memorizedIds.length) {
|
|
528
|
-
body.push(t.variableDeclaration('const', [
|
|
529
|
-
t.variableDeclarator(t.objectPattern(codeGen.memorizedIds.map((id) => t.assignmentProperty(id, id, { shorthand: true }))), t.identifier(constants_1.TEMPLATE_PARAMS.CONTEXT)),
|
|
530
|
-
]));
|
|
531
|
-
}
|
|
532
|
-
body.push(t.returnStatement(returnedValue));
|
|
533
|
-
return t.functionDeclaration(t.identifier(constants_1.TEMPLATE_FUNCTION_NAME), args, t.blockStatement(body, {
|
|
534
|
-
trailingComments: [t.comment(shared_1.LWC_VERSION_COMMENT)],
|
|
535
|
-
}));
|
|
536
|
-
}
|
|
537
|
-
function default_1(root, state) {
|
|
538
|
-
const scopeFragmentId = (0, helpers_1.hasIdAttribute)(root);
|
|
539
|
-
const codeGen = new codegen_1.default({
|
|
540
|
-
root,
|
|
541
|
-
state,
|
|
542
|
-
scopeFragmentId,
|
|
543
|
-
});
|
|
544
|
-
const templateFunction = generateTemplateFunction(codeGen);
|
|
545
|
-
const program = (0, module_1.format)(templateFunction, codeGen);
|
|
546
|
-
return astring.generate(program, { comments: true });
|
|
547
|
-
}
|
|
548
|
-
exports.default = default_1;
|
|
549
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codegen/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,iDAAmC;AAEnC,wCAAkG;AAClG,wCAAoE;AAEpE,uCAyBuB;AACvB,mDAAwF;AAkBxF,oDAAsC;AACtC,mDAM6B;AAE7B,6DAAwE;AACxE,wDAAgC;AAChC,uCASmB;AACnB,gDAA6D;AAE7D,SAAS,SAAS,CAAC,OAAgB;IAC/B,SAAS,gBAAgB,CAAC,OAAoB,EAAE,cAAuB;QACnE,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACxD,IAAI,GAAiB,CAAC;QAEtB,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAA,eAAS,EAAC,OAAO,CAAC,EAAE;YACxD,2CAA2C;YAC3C,OAAO,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;SAC7D;QAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACzB,wBAAwB;QACxB,MAAM,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,wBAAkB,CAAC,CAAC;QAC/E,mBAAmB;QACnB,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAgB,CAAC,CAAC;QAEnE,IAAI,0BAA0B,EAAE;YAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;YAC5E,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SAClF;aAAM,IAAI,gBAAgB,EAAE;YACzB,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAClE,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SAClE;aAAM,IAAI,IAAA,iBAAW,EAAC,OAAO,CAAC,EAAE;YAC7B,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAC1B,IAAI,EACJ,IAAA,qCAA2B,EAAC,IAAI,CAAC,EACjC,OAAO,EACP,QAAQ,CACX,CAAC;SACL;aAAM,IAAI,IAAA,YAAM,EAAC,OAAO,CAAC,EAAE;YACxB,MAAM,WAAW,GAAG,QAAQ,CAAC;YAE7B,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;SACjE;aAAM;YACH,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SACrD;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAED,SAAS,aAAa,CAAC,eAAuB;QAC1C,OAAO,OAAO,CAAC,OAAO,CAClB,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YAC9B,OAAO,IAAA,qBAAe,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAChF,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAED,SAAS,gBAAgB,CAAC,OAAgB;QACtC,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,SAAS,iBAAiB,CAAC,MAAkB;QACzC,MAAM,GAAG,GAAmB,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,IAAI,OAAkC,CAAC;QAEvC,OAAO,CAAC,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACzD,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAE1B,IAAI,IAAA,YAAM,EAAC,KAAK,CAAC,EAAE;gBACf,MAAM,cAAc,GAAW,EAAE,CAAC;gBAElC,yCAAyC;gBACzC,GAAG;oBACC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC3B,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC;oBAClC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;iBACzB,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,IAAA,YAAM,EAAC,KAAK,CAAC,EAAE;gBAEzC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;gBAExC,oDAAoD;gBACpD,IAAI,OAAO,CAAC,IAAI,EAAE;oBACd,MAAM;iBACT;aACJ;YAED,IAAI,IAAA,gBAAU,EAAC,KAAK,CAAC,EAAE;gBACnB,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;aACtC;iBAAM,IAAI,IAAA,UAAI,EAAC,KAAK,CAAC,EAAE;gBACpB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBACpC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxE;iBAAM,IAAI,IAAA,mBAAa,EAAC,KAAK,CAAC,EAAE;gBAC7B,MAAM,cAAc,GAAG,IAAA,YAAM,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpE,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;aACrD;iBAAM,IAAI,IAAA,eAAS,EAAC,KAAK,CAAC,IAAI,OAAO,CAAC,gBAAgB,EAAE;gBACrD,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;aACrC;iBAAM,IAAI,IAAA,eAAS,EAAC,KAAK,CAAC,EAAE;gBACzB,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC;aACpD;iBAAM,IAAI,IAAA,0BAAoB,EAAC,KAAK,CAAC,EAAE;gBACpC,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC;aAChD;SACJ;QAED,IAAI,IAAA,uBAAa,EAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;YAClC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvB,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;aACjB;iBAAM;gBACH,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACvD;SACJ;aAAM;YACH,OAAO,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;SACjC;IACL,CAAC;IAED,SAAS,2BAA2B,CAAC,kBAAsC;QACvE,MAAM,EACF,QAAQ,EACR,QAAQ,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GACtC,GAAG,kBAAkB,CAAC;QACvB,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,OAAO,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAE1C,uFAAuF;QACvF,oCAAoC;QACpC,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAE/B,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,QAAQ,EAAE,CAAC;QAEnB,8CAA8C;QAC9C,mEAAmE;QACnE,gFAAgF;QAChF,MAAM,mBAAmB,GAAG,CAAC,CAAC,kBAAkB,CAC5C,IAAI,EACJ,CAAC,cAAc,EAAE,GAAG,CAAC,EACrB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAClD,CAAC;QACF,IAAI,mBAAmD,CAAC;QACxD,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACvB,mBAAmB,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACnD;aAAM;YACH,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;SAC1D;QACD,OAAO,OAAO,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAClF,CAAC;IAED,SAAS,WAAW,CAAC,MAAU;QAC3B,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,GAAkC,CAAC;QAEvC,IAAI,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE;YACjC,yDAAyD;YACzD,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAEhE,GAAG,GAAG,CAAC,CAAC,eAAe,CACnB,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAChC,OAAO,KAAK,IAAI;gBACZ,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,OAAuB,EAAE,cAAc,CAAC;gBAChE,CAAC,CAAC,IAAI,CACb,CACJ,CAAC;SACL;aAAM;YACH,2FAA2F;YAC3F,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7E;QAED,IAAI,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE;YAC1B,gGAAgG;YAChG,gCAAgC;YAChC,GAAG,GAAG,GAAG,CAAC,QAA0B,CAAC;SACxC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,SAAS,+BAA+B,CACpC,sBAA6C,EAC7C,GAAY;QAEZ,MAAM,UAAU,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAEhD,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAC1C,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,iBAAiB,CAAC,sBAAsB,CAAC,CAC5C,CAAC;QAEF,IAAI,cAAc,GAAiB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,sBAAsB,CAAC,IAAI,EAAE;YAC7B,cAAc,GAAG,IAAA,mBAAa,EAAC,sBAAsB,CAAC,IAAI,CAAC;gBACvD,CAAC,CAAC,+BAA+B,CAAC,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC;gBAC1E,CAAC,CAAC,OAAO,CAAC,WAAW,CACf,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EACrB,iBAAiB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CACjD,CAAC;SACX;QAED,OAAO,CAAC,CAAC,qBAAqB,CAC1B,OAAO,CAAC,cAAc,CAAC,sBAAsB,CAAC,SAAS,CAAC,EACxD,kBAAkB,EAClB,cAAc,CACjB,CAAC;IACN,CAAC;IAED,SAAS,aAAa,CAClB,MAAU,EACV,IAAkB,EAClB,cAA6B,EAC7B,UAAyB;QAEzB,IAAI,CAAC,cAAc,EAAE;YACjB,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC7D;QAED,IAAI,cAA4B,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAS,CAAC;QAElC,0BAA0B;QAC1B,IAAI,QAAQ,KAAK,MAAM,EAAE;YACrB,cAAc,GAAG,cAAc,CAAC;SACnC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE;YAC7B,cAAc,GAAG,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;SAC3D;aAAM,IAAI,QAAQ,KAAK,aAAa,EAAE;YACnC,cAAc,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;SAC/E;aAAM;YACH,qEAAqE;YACrE,MAAM,IAAA,8BAAqB,EAAC,uBAAc,CAAC,mBAAmB,EAAE;gBAC5D,WAAW,EAAE,CAAC,QAAQ,CAAC;aAC1B,CAAC,CAAC;SACN;QAED,OAAO,CAAC,CAAC,qBAAqB,CAAC,cAAc,EAAE,IAAI,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,SAAS,iBAAiB,CAAC,QAAkB;QACzC,IAAI,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACrE,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAiB,CAAC;SACvD;QAED,IAAI,GAAiB,CAAC;QACtB,IAAI,IAAA,eAAS,EAAC,QAAQ,CAAC,EAAE;YACrB,GAAG,GAAG,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SAC9C;aAAM;YACH,GAAG,GAAG,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SAChD;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAED,SAAS,oBAAoB,CAAC,QAAkB;QAC5C,OAAO,CAAC,UAAU,EAAE,CAAC;QAErB,IAAI,IAAA,eAAS,EAAC,QAAQ,CAAC,EAAE;YACrB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;YACjC,IAAI,KAAK,EAAE;gBACP,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;aACpC;YAED,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SACnC;aAAM;YACH,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAChD;QAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,EAAE,CAAC;QAEnB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,SAAS,cAAc,CAAC,OAAgB,EAAE,IAAkB;QACxD,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAC5C,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,KAAK,EAAE;YACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACtB;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,CAC1C,IAAI,EACJ,MAAM,EACN,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAC9C,CAAC;QAEF,OAAO,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,gBAAgB,CAAC,KAAY,EAAE,IAAkB;QACtD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;QACvC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC;QAExC,MAAM,WAAW,GAAG;YAChB,KAAK,EAAE,GAAG,YAAY,OAAO;YAC7B,KAAK,EAAE,GAAG,YAAY,OAAO;YAC7B,KAAK,EAAE,GAAG,YAAY,OAAO;YAC7B,IAAI,EAAE,GAAG,YAAY,MAAM;SAC9B,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF,MAAM,cAAc,GAAG,CAAC,CAAC,gBAAgB,CACrC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAC5C,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CACpD,CACJ,CAAC;QAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,CAC1C,IAAI,EACJ,YAAY,EACZ,CAAC,CAAC,cAAc,CAAC;YACb,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE;gBAC3B,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;aACnE,CAAC;YACF,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;SAC1B,CAAC,CACL,CAAC;QAEF,OAAO,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,gBAAgB,CACrB,IAA0B,EAC1B,OAAoB,EACpB,yBAAkC;QAElC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;QAClD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAClC,oDAAoD;QACpD,MAAM,QAAQ,GAAG,IAAA,gBAAU,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACnE,MAAM,iBAAiB,GAAG,IAAA,uBAAW,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEzD,IAAI,IAAA,kBAAY,EAAC,SAAS,CAAC,EAAE;YACzB,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAErD,yFAAyF;YACzF,IAAI,iBAAiB,IAAI,IAAA,2BAAkB,EAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;gBAC5D,0FAA0F;gBAC1F,6CAA6C;gBAC7C,OAAO,OAAO,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;aACtD;YACD,IAAI,QAAQ,KAAK,UAAU,EAAE;gBACzB,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;aAC5C;YACD,IAAI,QAAQ,KAAK,IAAI,IAAI,IAAA,oCAAwB,EAAC,QAAQ,CAAC,EAAE;gBACzD,OAAO,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;aAC1C;YACD,IACI,OAAO,CAAC,eAAe;gBACvB,IAAA,sCAA0B,EAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAC1D;gBACE,OAAO,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;aAC9C;YACD,IAAI,IAAA,wBAAY,EAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;gBAC5C,IAAI,yBAAyB,EAAE;oBAC3B,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;oBAE7C,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;wBACvD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;wBAClB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;wBACpB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;wBACnB,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC;qBACtC,CAAC,CAAC;iBACN;gBACD,OAAO,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;aAC9C;YAED,OAAO,UAAU,CAAC;SACrB;aAAM,IAAI,IAAA,qBAAe,EAAC,SAAS,CAAC,EAAE;YACnC,IAAI,QAAQ,KAAK,IAAI,EAAE;gBACnB,OAAO,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aAC/C;YAED,IAAI,QAAQ,KAAK,YAAY,EAAE;gBAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC;aAC/D;YAED,IAAI,CAAC,iBAAiB,IAAI,IAAA,2BAAkB,EAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;gBAC7D,6FAA6F;gBAC7F,8DAA8D;gBAC9D,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAC1B;YAED,IAAI,IAAA,oCAAwB,EAAC,QAAQ,CAAC,EAAE;gBACpC,OAAO,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aAC/C;YAED,IACI,OAAO,CAAC,eAAe;gBACvB,IAAA,sCAA0B,EAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;gBACxD,IAAA,6BAAiB,EAAC,SAAS,CAAC,KAAK,CAAC,EACpC;gBACE,OAAO,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aACnD;YAED,IAAI,IAAA,wBAAY,EAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;gBAC5C,mDAAmD;gBACnD,MAAM,KAAK,GAAG,IAAA,6BAAiB,EAAC,SAAS,CAAC,KAAK,CAAC;oBAC5C,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC1C,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,yBAAyB,EAAE;oBAC3B,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;oBAE7C,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;wBACvD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;wBAClB,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;wBACpB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;wBACnB,KAAK;qBACR,CAAC,CAAC;iBACN;gBACD,OAAO,KAAK,CAAC;aAChB;YAED,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACrC;aAAM;YACH,4FAA4F;YAC5F,+CAA+C;YAC/C,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACzE;IACL,CAAC;IAED,SAAS,cAAc,CAAC,OAAoB,EAAE,cAAuB;QACjE,MAAM,IAAI,GAAiB,EAAE,CAAC;QAE9B,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAEtD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,0BAAoB,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAc,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAc,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAc,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAiB,CAAC,CAAC;QAC1D,MAAM,mBAAmB,GAAG,IAAA,6CAA4B,EAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACjF,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAmB,CAAC,CAAC;QAEvE,aAAa;QACb,IAAI,UAAU,CAAC,MAAM,EAAE;YACnB,MAAM,IAAI,GAAqC,EAAE,CAAC;YAElD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;gBAC3B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;gBAC7B,IAAI,IAAI,KAAK,OAAO,EAAE;oBAClB,0BAA0B;oBAC1B,8DAA8D;oBAC9D,6EAA6E;oBAC7E,sDAAsD;oBACtD,IAAI,IAAA,kBAAY,EAAC,KAAK,CAAC,EAAE;wBACrB,MAAM,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBACtD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;qBACrE;yBAAM,IAAI,IAAA,qBAAe,EAAC,KAAK,CAAC,EAAE;wBAC/B,MAAM,UAAU,GAAG,IAAA,yBAAe,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAChD,MAAM,QAAQ,GAAG,CAAC,CAAC,gBAAgB,CAC/B,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CACzE,CAAC;wBACF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;qBAC7D;iBACJ;qBAAM,IAAI,IAAI,KAAK,OAAO,EAAE;oBACzB,0BAA0B;oBAC1B,0DAA0D;oBAC1D,8DAA8D;oBAC9D,4DAA4D;oBAC5D,IAAI,IAAA,kBAAY,EAAC,KAAK,CAAC,EAAE;wBACrB,MAAM,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBACtD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;qBACjE;yBAAM,IAAI,IAAA,qBAAe,EAAC,KAAK,CAAC,EAAE;wBAC/B,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC7C,MAAM,QAAQ,GAAG,IAAA,iCAAuB,EAAC,QAAQ,CAAC,CAAC;wBACnD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;qBAC/D;iBACJ;qBAAM;oBACH,IAAI,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,mBAAmB,CAAC,CAAC;iBACtE;aACJ;YAED,uFAAuF;YACvF,sDAAsD;YACtD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;gBAC1B,MAAM,QAAQ,GAAG,IAAA,qBAAW,EAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;aAC1D;SACJ;QAED,aAAa;QACb,MAAM,QAAQ,GAAG,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAExC,aAAa;QACb,IAAI,UAAU,CAAC,MAAM,EAAE;YACnB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;gBAC3B,QAAQ,CAAC,UAAU,CAAC,IAAI,CACpB,CAAC,CAAC,QAAQ,CACN,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EACpB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,mBAAmB,CAAC,CACxD,CACJ,CAAC;aACL;SACJ;QAED,uCAAuC;QACvC,IAAI,SAAS,EAAE;YACX,MAAM,IAAI,GAAG,IAAA,qBAAe,EAAC,SAAS,CAAC,KAAK,CAAC;gBACzC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;gBAClC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC9C,QAAQ,CAAC,UAAU,CAAC,IAAI,CACpB,CAAC,CAAC,QAAQ,CACN,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;YACzB,+EAA+E;YAC/E,6CAA6C;YAC7C,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAClE,CACJ,CAAC;SACL;QAED,gCAAgC;QAChC,IAAI,GAAG,EAAE;YACL,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;SAC1B;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;SAC1D;QAED,UAAU;QACV,IAAI,GAAG,IAAI,SAAS,EAAE;YAClB,MAAM,UAAU,GAAG,CAAC,CAAC,gBAAgB,CAAC;gBAClC,CAAC,CAAC,QAAQ,CACN,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EACnB,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC7E;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;SAC9D;QAED,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACvF;QAED,wBAAwB;QACxB,IAAI,MAAM,EAAE;YACR,qEAAqE;YACrE,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;YACxF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;SAC5D;aAAM;YACH,iDAAiD;YACjD,IAAI,GAAG,GAAoB,OAAO,CAAC,WAAW,EAAE,CAAC;YACjD,6CAA6C;YAC7C,IAAI,cAAc,KAAK,SAAS,EAAE;gBAC9B,iFAAiF;gBACjF,oFAAoF;gBACpF,iFAAiF;gBACjF,gFAAgF;gBAChF,qEAAqE;gBACrE,GAAG,GAAG,IAAI,cAAc,IAAI,GAAG,EAAE,CAAC;aACrC;YACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAC9D;QAED,gBAAgB;QAChB,IAAI,SAAS,CAAC,MAAM,EAAE;YAClB,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAClC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CACzD,CAAC;YACF,MAAM,cAAc,GAAG,IAAA,qBAAW,EAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;gBACpD,MAAM,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAElD,OAAO,IAAA,yBAAe,EAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;SAC7D;QAED,eAAe;QACf,IAAI,OAAO,CAAC,SAAS,KAAK,sBAAa,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC/D;QAED,IAAI,mBAAmB,EAAE;YACrB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,oBAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,oBAAQ,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,oBAAQ,CAAC,CAAC,CAAC,CAAC;SACzE;QAED,IAAI,CAAC,IAAA,oBAAW,EAAC,iBAAiB,CAAC,EAAE;YACjC,IAAI,CAAC,IAAI,CACL,CAAC,CAAC,QAAQ,CACN,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EACxB,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAClD,CACJ,CAAC;SACL;QAED,IAAI,IAAA,yBAAmB,EAAC,OAAO,CAAC,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACpE;QAED,OAAO,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAgB;IAC9C,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAEzC,MAAM,IAAI,GAAG;QACT,2BAAe,CAAC,GAAG;QACnB,2BAAe,CAAC,QAAQ;QACxB,2BAAe,CAAC,QAAQ;QACxB,2BAAe,CAAC,OAAO;KAC1B,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,IAAI,GACN,QAAQ,CAAC,MAAM,KAAK,CAAC;QACjB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACI,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE;gBAC3B,CAAC,CAAC,kBAAkB,CAChB,CAAC,CAAC,aAAa,CACX,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAClB,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACnE,CACJ,EACD,CAAC,CAAC,UAAU,CAAC,2BAAe,CAAC,GAAG,CAAC,CACpC;aACJ,CAAC;SACL,CAAC;IAEZ,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE;QAC7B,IAAI,CAAC,IAAI,CACL,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE;YAC3B,CAAC,CAAC,kBAAkB,CAChB,CAAC,CAAC,aAAa,CACX,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAC5B,CAAC,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CACpD,CACJ,EACD,CAAC,CAAC,UAAU,CAAC,2BAAe,CAAC,OAAO,CAAC,CACxC;SACJ,CAAC,CACL,CAAC;KACL;IAED,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC;IAE5C,OAAO,CAAC,CAAC,mBAAmB,CACxB,CAAC,CAAC,UAAU,CAAC,kCAAsB,CAAC,EACpC,IAAI,EACJ,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE;QACnB,gBAAgB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,4BAAmB,CAAC,CAAC;KACrD,CAAC,CACL,CAAC;AACN,CAAC;AAED,mBAAyB,IAAU,EAAE,KAAY;IAC7C,MAAM,eAAe,GAAG,IAAA,wBAAc,EAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC;QACxB,IAAI;QACJ,KAAK;QACL,eAAe;KAClB,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAE3D,MAAM,OAAO,GAAc,IAAA,eAAY,EAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAEnE,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACzD,CAAC;AAbD,4BAaC"}
|