@lodestar/beacon-node 1.20.0-dev.966f3acc0f → 1.20.0-dev.9b728eda63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/README.md +1 -1
  2. package/lib/api/impl/api.d.ts +2 -4
  3. package/lib/api/impl/beacon/blocks/index.d.ts +3 -2
  4. package/lib/api/impl/beacon/blocks/index.js +82 -77
  5. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  6. package/lib/api/impl/beacon/blocks/utils.d.ts +3 -3
  7. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  8. package/lib/api/impl/beacon/index.d.ts +3 -2
  9. package/lib/api/impl/beacon/index.js.map +1 -1
  10. package/lib/api/impl/beacon/pool/index.d.ts +3 -2
  11. package/lib/api/impl/beacon/pool/index.js +18 -18
  12. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  13. package/lib/api/impl/beacon/rewards/index.d.ts +3 -2
  14. package/lib/api/impl/beacon/rewards/index.js +7 -7
  15. package/lib/api/impl/beacon/rewards/index.js.map +1 -1
  16. package/lib/api/impl/beacon/state/index.d.ts +3 -2
  17. package/lib/api/impl/beacon/state/index.js +37 -51
  18. package/lib/api/impl/beacon/state/index.js.map +1 -1
  19. package/lib/api/impl/beacon/state/utils.d.ts +1 -2
  20. package/lib/api/impl/beacon/state/utils.js +2 -2
  21. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  22. package/lib/api/impl/config/index.d.ts +3 -2
  23. package/lib/api/impl/config/index.js.map +1 -1
  24. package/lib/api/impl/debug/index.d.ts +3 -2
  25. package/lib/api/impl/debug/index.js +10 -23
  26. package/lib/api/impl/debug/index.js.map +1 -1
  27. package/lib/api/impl/errors.d.ts +1 -1
  28. package/lib/api/impl/errors.js +1 -1
  29. package/lib/api/impl/errors.js.map +1 -1
  30. package/lib/api/impl/events/index.d.ts +3 -2
  31. package/lib/api/impl/events/index.js +2 -2
  32. package/lib/api/impl/events/index.js.map +1 -1
  33. package/lib/api/impl/lightclient/index.d.ts +3 -2
  34. package/lib/api/impl/lightclient/index.js +18 -18
  35. package/lib/api/impl/lightclient/index.js.map +1 -1
  36. package/lib/api/impl/lodestar/index.d.ts +3 -2
  37. package/lib/api/impl/lodestar/index.js +15 -17
  38. package/lib/api/impl/lodestar/index.js.map +1 -1
  39. package/lib/api/impl/node/index.d.ts +3 -2
  40. package/lib/api/impl/node/index.js +8 -12
  41. package/lib/api/impl/node/index.js.map +1 -1
  42. package/lib/api/impl/proof/index.d.ts +3 -2
  43. package/lib/api/impl/proof/index.js +12 -6
  44. package/lib/api/impl/proof/index.js.map +1 -1
  45. package/lib/api/impl/validator/index.d.ts +3 -2
  46. package/lib/api/impl/validator/index.js +115 -111
  47. package/lib/api/impl/validator/index.js.map +1 -1
  48. package/lib/api/rest/base.js +2 -0
  49. package/lib/api/rest/base.js.map +1 -1
  50. package/lib/api/rest/index.d.ts +4 -5
  51. package/lib/api/rest/index.js +1 -2
  52. package/lib/api/rest/index.js.map +1 -1
  53. package/lib/chain/beaconProposerCache.d.ts +2 -2
  54. package/lib/chain/beaconProposerCache.js +2 -2
  55. package/lib/chain/beaconProposerCache.js.map +1 -1
  56. package/lib/chain/blocks/importBlock.js +7 -7
  57. package/lib/chain/blocks/importBlock.js.map +1 -1
  58. package/lib/chain/blocks/index.js +1 -2
  59. package/lib/chain/blocks/index.js.map +1 -1
  60. package/lib/chain/blocks/types.d.ts +45 -39
  61. package/lib/chain/blocks/types.js +31 -15
  62. package/lib/chain/blocks/types.js.map +1 -1
  63. package/lib/chain/blocks/verifyBlock.d.ts +3 -3
  64. package/lib/chain/blocks/verifyBlock.js +1 -1
  65. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  66. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts +2 -2
  67. package/lib/chain/blocks/verifyBlocksDataAvailability.js +17 -14
  68. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  69. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +3 -3
  70. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  71. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -2
  72. package/lib/chain/blocks/verifyBlocksSignatures.js +3 -1
  73. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  74. package/lib/chain/blocks/writeBlockInputToDb.js +6 -6
  75. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  76. package/lib/chain/chain.d.ts +70 -9
  77. package/lib/chain/chain.js +46 -8
  78. package/lib/chain/chain.js.map +1 -1
  79. package/lib/chain/errors/blockError.d.ts +3 -3
  80. package/lib/chain/errors/blockError.js.map +1 -1
  81. package/lib/chain/forkChoice/index.js +2 -1
  82. package/lib/chain/forkChoice/index.js.map +1 -1
  83. package/lib/chain/initState.d.ts +3 -3
  84. package/lib/chain/initState.js.map +1 -1
  85. package/lib/chain/interface.d.ts +18 -9
  86. package/lib/chain/interface.js +6 -0
  87. package/lib/chain/interface.js.map +1 -1
  88. package/lib/chain/lightClient/index.d.ts +9 -9
  89. package/lib/chain/lightClient/index.js +3 -3
  90. package/lib/chain/lightClient/index.js.map +1 -1
  91. package/lib/chain/lightClient/proofs.d.ts +2 -2
  92. package/lib/chain/lightClient/proofs.js.map +1 -1
  93. package/lib/chain/opPools/opPool.d.ts +2 -2
  94. package/lib/chain/opPools/opPool.js.map +1 -1
  95. package/lib/chain/options.js +2 -1
  96. package/lib/chain/options.js.map +1 -1
  97. package/lib/chain/prepareNextSlot.d.ts +2 -0
  98. package/lib/chain/prepareNextSlot.js +49 -27
  99. package/lib/chain/prepareNextSlot.js.map +1 -1
  100. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +2 -2
  101. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  102. package/lib/chain/produceBlock/produceBlockBody.d.ts +4 -4
  103. package/lib/chain/produceBlock/produceBlockBody.js +3 -3
  104. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  105. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +2 -2
  106. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  107. package/lib/chain/regen/interface.d.ts +4 -3
  108. package/lib/chain/regen/interface.js +1 -0
  109. package/lib/chain/regen/interface.js.map +1 -1
  110. package/lib/chain/regen/queued.d.ts +3 -3
  111. package/lib/chain/regen/queued.js.map +1 -1
  112. package/lib/chain/regen/regen.d.ts +2 -2
  113. package/lib/chain/regen/regen.js.map +1 -1
  114. package/lib/chain/rewards/attestationsRewards.js +3 -4
  115. package/lib/chain/rewards/attestationsRewards.js.map +1 -1
  116. package/lib/chain/rewards/blockRewards.d.ts +2 -2
  117. package/lib/chain/rewards/blockRewards.js.map +1 -1
  118. package/lib/chain/rewards/syncCommitteeRewards.d.ts +2 -2
  119. package/lib/chain/rewards/syncCommitteeRewards.js +2 -2
  120. package/lib/chain/rewards/syncCommitteeRewards.js.map +1 -1
  121. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +2 -2
  122. package/lib/chain/seenCache/seenGossipBlockInput.js +34 -18
  123. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  124. package/lib/chain/validation/block.d.ts +2 -2
  125. package/lib/chain/validation/block.js.map +1 -1
  126. package/lib/chain/validation/lightClientFinalityUpdate.d.ts +2 -2
  127. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  128. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts +3 -3
  129. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  130. package/lib/db/buckets.d.ts +1 -1
  131. package/lib/db/repositories/block.d.ts +5 -5
  132. package/lib/db/repositories/block.js.map +1 -1
  133. package/lib/db/repositories/blockArchive.d.ts +13 -13
  134. package/lib/db/repositories/blockArchive.js.map +1 -1
  135. package/lib/db/repositories/blockArchiveIndex.d.ts +4 -3
  136. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  137. package/lib/db/repositories/lightclientBestUpdate.d.ts +4 -4
  138. package/lib/db/repositories/lightclientBestUpdate.js.map +1 -1
  139. package/lib/db/repositories/lightclientCheckpointHeader.d.ts +4 -4
  140. package/lib/db/repositories/lightclientCheckpointHeader.js.map +1 -1
  141. package/lib/db/single/preGenesisState.js.map +1 -1
  142. package/lib/eth1/provider/eth1Provider.js +2 -2
  143. package/lib/eth1/provider/eth1Provider.js.map +1 -1
  144. package/lib/execution/builder/http.d.ts +5 -5
  145. package/lib/execution/builder/http.js +14 -13
  146. package/lib/execution/builder/http.js.map +1 -1
  147. package/lib/execution/builder/interface.d.ts +3 -3
  148. package/lib/execution/engine/disabled.d.ts +1 -1
  149. package/lib/execution/engine/disabled.js +2 -4
  150. package/lib/execution/engine/disabled.js.map +1 -1
  151. package/lib/execution/engine/http.d.ts +4 -5
  152. package/lib/execution/engine/http.js +0 -3
  153. package/lib/execution/engine/http.js.map +1 -1
  154. package/lib/execution/engine/interface.d.ts +4 -4
  155. package/lib/execution/engine/types.d.ts +3 -3
  156. package/lib/execution/engine/types.js.map +1 -1
  157. package/lib/metrics/metrics/beacon.d.ts +12 -2
  158. package/lib/metrics/metrics/beacon.js +11 -0
  159. package/lib/metrics/metrics/beacon.js.map +1 -1
  160. package/lib/metrics/metrics/lodestar.d.ts +2 -2
  161. package/lib/metrics/metrics/lodestar.js.map +1 -1
  162. package/lib/metrics/options.d.ts +1 -1
  163. package/lib/metrics/validatorMonitor.d.ts +3 -3
  164. package/lib/network/gossip/encoding.d.ts +3 -2
  165. package/lib/network/gossip/encoding.js +2 -2
  166. package/lib/network/gossip/encoding.js.map +1 -1
  167. package/lib/network/gossip/interface.d.ts +7 -7
  168. package/lib/network/gossip/interface.js.map +1 -1
  169. package/lib/network/gossip/topic.d.ts +731 -43
  170. package/lib/network/gossip/topic.js +3 -3
  171. package/lib/network/gossip/topic.js.map +1 -1
  172. package/lib/network/interface.d.ts +6 -6
  173. package/lib/network/network.d.ts +10 -10
  174. package/lib/network/network.js.map +1 -1
  175. package/lib/network/peers/peerManager.d.ts +2 -2
  176. package/lib/network/peers/peerManager.js.map +1 -1
  177. package/lib/network/processor/gossipHandlers.js +2 -2
  178. package/lib/network/processor/gossipHandlers.js.map +1 -1
  179. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +2 -2
  180. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +2 -2
  181. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +9 -3
  182. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  183. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +10 -7
  184. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  185. package/lib/network/reqresp/types.d.ts +4 -4
  186. package/lib/network/reqresp/types.js +5 -5
  187. package/lib/network/reqresp/types.js.map +1 -1
  188. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts +2 -2
  189. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js.map +1 -1
  190. package/lib/node/nodejs.d.ts +3 -7
  191. package/lib/node/notifier.js +8 -1
  192. package/lib/node/notifier.js.map +1 -1
  193. package/lib/node/utils/interop/state.js +2 -2
  194. package/lib/node/utils/interop/state.js.map +1 -1
  195. package/lib/sync/backfill/backfill.d.ts +2 -2
  196. package/lib/sync/backfill/backfill.js.map +1 -1
  197. package/lib/sync/backfill/verify.d.ts +5 -5
  198. package/lib/sync/backfill/verify.js.map +1 -1
  199. package/lib/sync/interface.d.ts +1 -1
  200. package/lib/sync/range/chain.js +2 -2
  201. package/lib/sync/range/chain.js.map +1 -1
  202. package/lib/sync/sync.js +1 -1
  203. package/lib/sync/sync.js.map +1 -1
  204. package/lib/sync/unknownBlock.js +2 -2
  205. package/lib/sync/unknownBlock.js.map +1 -1
  206. package/lib/sync/utils/pendingBlocksTree.js +1 -1
  207. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  208. package/lib/util/blobs.d.ts +3 -3
  209. package/lib/util/blobs.js.map +1 -1
  210. package/lib/util/multifork.d.ts +5 -4
  211. package/lib/util/multifork.js.map +1 -1
  212. package/package.json +14 -14
@@ -1,11 +1,10 @@
1
- import { fromHexString, toHexString } from "@chainsafe/ssz";
2
1
  import { routes } from "@lodestar/api";
3
2
  import { computeStartSlotAtEpoch, proposerShufflingDecisionRoot, attesterShufflingDecisionRoot, getBlockRootAtSlot, computeEpochAtSlot, getCurrentSlot, beaconBlockToBlinded, } from "@lodestar/state-transition";
4
3
  import { GENESIS_SLOT, SLOTS_PER_EPOCH, SLOTS_PER_HISTORICAL_ROOT, SYNC_COMMITTEE_SUBNET_SIZE, isForkBlobs, isForkExecution, ForkSeq, } from "@lodestar/params";
5
4
  import { MAX_BUILDER_BOOST_FACTOR } from "@lodestar/validator";
6
5
  import { ssz, ProducedBlockSource, isBlindedBeaconBlock, isBlockContents, } from "@lodestar/types";
7
- import { ExecutionStatus } from "@lodestar/fork-choice";
8
- import { toHex, resolveOrRacePromises, prettyWeiToEth } from "@lodestar/utils";
6
+ import { ExecutionStatus, DataAvailabilityStatus } from "@lodestar/fork-choice";
7
+ import { fromHex, toHex, resolveOrRacePromises, prettyWeiToEth } from "@lodestar/utils";
9
8
  import { AttestationError, AttestationErrorCode, GossipAction, SyncCommitteeError, SyncCommitteeErrorCode, } from "../../../chain/errors/index.js";
10
9
  import { validateApiAggregateAndProof } from "../../../chain/validation/index.js";
11
10
  import { ZERO_HASH } from "../../../constants/index.js";
@@ -163,7 +162,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
163
162
  }
164
163
  const cp = {
165
164
  epoch: cpHex.epoch,
166
- root: fromHexString(cpHex.rootHex),
165
+ root: fromHex(cpHex.rootHex),
167
166
  };
168
167
  const slot0 = computeStartSlotAtEpoch(cp.epoch);
169
168
  // if not, wait for ChainEvent.checkpoint event until slot 1 of epoch
@@ -236,12 +235,20 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
236
235
  function notOnOptimisticBlockRoot(beaconBlockRoot) {
237
236
  const protoBeaconBlock = chain.forkChoice.getBlock(beaconBlockRoot);
238
237
  if (!protoBeaconBlock) {
239
- throw new ApiError(400, "Block not in forkChoice");
238
+ throw new ApiError(400, `Block not in forkChoice, beaconBlockRoot=${toHex(beaconBlockRoot)}`);
240
239
  }
241
240
  if (protoBeaconBlock.executionStatus === ExecutionStatus.Syncing)
242
241
  throw new NodeIsSyncing(`Block's execution payload not yet validated, executionPayloadBlockHash=${protoBeaconBlock.executionPayloadBlockHash} number=${protoBeaconBlock.executionPayloadNumber}`);
243
242
  }
244
- const produceBuilderBlindedBlock = async function produceBuilderBlindedBlock(slot, randaoReveal, graffiti,
243
+ function notOnOutOfRangeData(beaconBlockRoot) {
244
+ const protoBeaconBlock = chain.forkChoice.getBlock(beaconBlockRoot);
245
+ if (!protoBeaconBlock) {
246
+ throw new ApiError(400, `Block not in forkChoice, beaconBlockRoot=${toHex(beaconBlockRoot)}`);
247
+ }
248
+ if (protoBeaconBlock.dataAvailabilityStatus === DataAvailabilityStatus.OutOfRange)
249
+ throw new NodeIsSyncing("Block's data is out of range and not validated");
250
+ }
251
+ async function produceBuilderBlindedBlock(slot, randaoReveal, graffiti,
245
252
  // as of now fee recipient checks can not be performed because builder does not return bid recipient
246
253
  { skipHeadChecksAndUpdate, commonBlockBody, parentBlockRoot: inParentBlockRoot, } = {}) {
247
254
  const version = config.getForkName(slot);
@@ -265,11 +272,12 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
265
272
  // forkChoice.updateTime() might have already been called by the onSlot clock
266
273
  // handler, in which case this should just return.
267
274
  chain.forkChoice.updateTime(slot);
268
- parentBlockRoot = fromHexString(chain.recomputeForkChoiceHead().blockRoot);
275
+ parentBlockRoot = fromHex(chain.getProposerHead(slot).blockRoot);
269
276
  }
270
277
  else {
271
278
  parentBlockRoot = inParentBlockRoot;
272
279
  }
280
+ notOnOutOfRangeData(parentBlockRoot);
273
281
  let timer;
274
282
  try {
275
283
  timer = metrics?.blockProductionTime.startTimer();
@@ -286,7 +294,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
286
294
  slot,
287
295
  executionPayloadValue,
288
296
  consensusBlockValue,
289
- root: toHexString(config.getBlindedForkTypes(slot).BeaconBlock.hashTreeRoot(block)),
297
+ root: toHex(config.getExecutionForkTypes(slot).BlindedBeaconBlock.hashTreeRoot(block)),
290
298
  });
291
299
  if (chain.opts.persistProducedBlocks) {
292
300
  void chain.persistBlock(block, "produced_builder_block");
@@ -297,8 +305,8 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
297
305
  if (timer)
298
306
  timer({ source });
299
307
  }
300
- };
301
- const produceEngineFullBlockOrContents = async function produceEngineFullBlockOrContents(slot, randaoReveal, graffiti, { feeRecipient, strictFeeRecipientCheck, skipHeadChecksAndUpdate, commonBlockBody, parentBlockRoot: inParentBlockRoot, } = {}) {
308
+ }
309
+ async function produceEngineFullBlockOrContents(slot, randaoReveal, graffiti, { feeRecipient, strictFeeRecipientCheck, skipHeadChecksAndUpdate, commonBlockBody, parentBlockRoot: inParentBlockRoot, } = {}) {
302
310
  const source = ProducedBlockSource.engine;
303
311
  metrics?.blockProductionRequests.inc({ source });
304
312
  let parentBlockRoot;
@@ -309,11 +317,12 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
309
317
  // forkChoice.updateTime() might have already been called by the onSlot clock
310
318
  // handler, in which case this should just return.
311
319
  chain.forkChoice.updateTime(slot);
312
- parentBlockRoot = fromHexString(chain.recomputeForkChoiceHead().blockRoot);
320
+ parentBlockRoot = fromHex(chain.getProposerHead(slot).blockRoot);
313
321
  }
314
322
  else {
315
323
  parentBlockRoot = inParentBlockRoot;
316
324
  }
325
+ notOnOutOfRangeData(parentBlockRoot);
317
326
  let timer;
318
327
  try {
319
328
  timer = metrics?.blockProductionTime.startTimer();
@@ -327,7 +336,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
327
336
  });
328
337
  const version = config.getForkName(block.slot);
329
338
  if (strictFeeRecipientCheck && feeRecipient && isForkExecution(version)) {
330
- const blockFeeRecipient = toHexString(block.body.executionPayload.feeRecipient);
339
+ const blockFeeRecipient = toHex(block.body.executionPayload.feeRecipient);
331
340
  if (blockFeeRecipient !== feeRecipient) {
332
341
  throw Error(`Invalid feeRecipient set in engine block expected=${feeRecipient} actual=${blockFeeRecipient}`);
333
342
  }
@@ -338,7 +347,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
338
347
  slot,
339
348
  executionPayloadValue,
340
349
  consensusBlockValue,
341
- root: toHexString(config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block)),
350
+ root: toHex(config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block)),
342
351
  });
343
352
  if (chain.opts.persistProducedBlocks) {
344
353
  void chain.persistBlock(block, "produced_engine_block");
@@ -365,17 +374,18 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
365
374
  if (timer)
366
375
  timer({ source });
367
376
  }
368
- };
369
- const produceEngineOrBuilderBlock = async function produceEngineOrBuilderBlock(slot, randaoReveal, graffiti,
377
+ }
378
+ async function produceEngineOrBuilderBlock(slot, randaoReveal, graffiti,
370
379
  // TODO deneb: skip randao verification
371
- _skipRandaoVerification, { feeRecipient, builderSelection, builderBoostFactor, strictFeeRecipientCheck, } = {}) {
380
+ _skipRandaoVerification, builderBoostFactor, { feeRecipient, builderSelection, strictFeeRecipientCheck } = {}) {
372
381
  notWhileSyncing();
373
382
  await waitForSlot(slot); // Must never request for a future slot > currentSlot
374
383
  // Process the queued attestations in the forkchoice for correct head estimation
375
384
  // forkChoice.updateTime() might have already been called by the onSlot clock
376
385
  // handler, in which case this should just return.
377
386
  chain.forkChoice.updateTime(slot);
378
- const parentBlockRoot = fromHexString(chain.recomputeForkChoiceHead().blockRoot);
387
+ const parentBlockRoot = fromHex(chain.getProposerHead(slot).blockRoot);
388
+ notOnOutOfRangeData(parentBlockRoot);
379
389
  const fork = config.getForkName(slot);
380
390
  // set some sensible opts
381
391
  // builderSelection will be deprecated and will run in mode MaxProfit if builder is enabled
@@ -537,73 +547,59 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
537
547
  }
538
548
  }
539
549
  throw Error("Unreachable error occurred during the builder and execution block production");
540
- };
541
- const produceBlock = async function produceBlock(slot, randaoReveal, graffiti) {
542
- const producedData = await produceEngineFullBlockOrContents(slot, randaoReveal, graffiti);
543
- if (isForkBlobs(producedData.version)) {
544
- throw Error(`Invalid call to produceBlock for deneb+ fork=${producedData.version}`);
545
- }
546
- else {
547
- // TODO: need to figure out why typescript requires typecasting here
548
- // by typing of produceFullBlockOrContents respose it should have figured this out itself
549
- return producedData;
550
- }
551
- };
552
- const produceEngineOrBuilderBlindedBlock = async function produceEngineOrBuilderBlindedBlock(slot, randaoReveal, graffiti) {
553
- const { data, executionPayloadValue, consensusBlockValue, version } = await produceEngineOrBuilderBlock(slot, randaoReveal, graffiti);
554
- if (!isForkExecution(version)) {
555
- throw Error(`Invalid fork=${version} for produceEngineOrBuilderBlindedBlock`);
556
- }
557
- const executionPayloadBlinded = true;
558
- if (isBlockContents(data)) {
559
- const { block } = data;
560
- const blindedBlock = beaconBlockToBlinded(config, block);
561
- return { executionPayloadValue, consensusBlockValue, data: blindedBlock, executionPayloadBlinded, version };
562
- }
563
- else if (isBlindedBeaconBlock(data)) {
564
- return { executionPayloadValue, consensusBlockValue, data, executionPayloadBlinded, version };
565
- }
566
- else {
567
- const blindedBlock = beaconBlockToBlinded(config, data);
568
- return { executionPayloadValue, consensusBlockValue, data: blindedBlock, executionPayloadBlinded, version };
569
- }
570
- };
571
- const produceBlockV3 = async function produceBlockV3(slot, randaoReveal, graffiti, skipRandaoVerification, opts = {}) {
572
- const produceBlockEngineOrBuilderRes = await produceEngineOrBuilderBlock(slot, randaoReveal, graffiti, skipRandaoVerification, opts);
573
- if (opts.blindedLocal === true && ForkSeq[produceBlockEngineOrBuilderRes.version] >= ForkSeq.bellatrix) {
574
- if (produceBlockEngineOrBuilderRes.executionPayloadBlinded) {
575
- return produceBlockEngineOrBuilderRes;
576
- }
577
- else {
578
- if (isBlockContents(produceBlockEngineOrBuilderRes.data)) {
579
- const { block } = produceBlockEngineOrBuilderRes.data;
580
- const blindedBlock = beaconBlockToBlinded(config, block);
581
- return {
582
- ...produceBlockEngineOrBuilderRes,
583
- data: blindedBlock,
584
- executionPayloadBlinded: true,
585
- };
550
+ }
551
+ return {
552
+ async produceBlockV2({ slot, randaoReveal, graffiti, ...opts }) {
553
+ const { data, ...meta } = await produceEngineFullBlockOrContents(slot, randaoReveal, graffiti, opts);
554
+ return { data, meta };
555
+ },
556
+ async produceBlockV3({ slot, randaoReveal, graffiti, skipRandaoVerification, builderBoostFactor, ...opts }) {
557
+ const { data, ...meta } = await produceEngineOrBuilderBlock(slot, randaoReveal, graffiti, skipRandaoVerification, builderBoostFactor, opts);
558
+ if (opts.blindedLocal === true && ForkSeq[meta.version] >= ForkSeq.bellatrix) {
559
+ if (meta.executionPayloadBlinded) {
560
+ return { data, meta };
586
561
  }
587
562
  else {
588
- const blindedBlock = beaconBlockToBlinded(config, produceBlockEngineOrBuilderRes.data);
589
- return {
590
- ...produceBlockEngineOrBuilderRes,
591
- data: blindedBlock,
592
- executionPayloadBlinded: true,
593
- };
563
+ if (isBlockContents(data)) {
564
+ const { block } = data;
565
+ const blindedBlock = beaconBlockToBlinded(config, block);
566
+ return {
567
+ data: blindedBlock,
568
+ meta: { ...meta, executionPayloadBlinded: true },
569
+ };
570
+ }
571
+ else {
572
+ const blindedBlock = beaconBlockToBlinded(config, data);
573
+ return {
574
+ data: blindedBlock,
575
+ meta: { ...meta, executionPayloadBlinded: true },
576
+ };
577
+ }
594
578
  }
595
579
  }
596
- }
597
- else {
598
- return produceBlockEngineOrBuilderRes;
599
- }
600
- };
601
- return {
602
- produceBlock,
603
- produceBlockV2: produceEngineFullBlockOrContents,
604
- produceBlockV3,
605
- produceBlindedBlock: produceEngineOrBuilderBlindedBlock,
606
- async produceAttestationData(committeeIndex, slot) {
580
+ else {
581
+ return { data, meta };
582
+ }
583
+ },
584
+ async produceBlindedBlock({ slot, randaoReveal, graffiti }) {
585
+ const { data, version } = await produceEngineOrBuilderBlock(slot, randaoReveal, graffiti);
586
+ if (!isForkExecution(version)) {
587
+ throw Error(`Invalid fork=${version} for produceBlindedBlock`);
588
+ }
589
+ if (isBlockContents(data)) {
590
+ const { block } = data;
591
+ const blindedBlock = beaconBlockToBlinded(config, block);
592
+ return { data: blindedBlock, meta: { version } };
593
+ }
594
+ else if (isBlindedBeaconBlock(data)) {
595
+ return { data, meta: { version } };
596
+ }
597
+ else {
598
+ const blindedBlock = beaconBlockToBlinded(config, data);
599
+ return { data: blindedBlock, meta: { version } };
600
+ }
601
+ },
602
+ async produceAttestationData({ committeeIndex, slot }) {
607
603
  notWhileSyncing();
608
604
  await waitForSlot(slot); // Must never request for a future slot > currentSlot
609
605
  // This needs a state in the same epoch as `slot` such that state.currentJustifiedCheckpoint is correct.
@@ -612,7 +608,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
612
608
  const headSlot = headState.slot;
613
609
  const attEpoch = computeEpochAtSlot(slot);
614
610
  const headBlockRootHex = chain.forkChoice.getHead().blockRoot;
615
- const headBlockRoot = fromHexString(headBlockRootHex);
611
+ const headBlockRoot = fromHex(headBlockRootHex);
616
612
  const beaconBlockRoot = slot >= headSlot
617
613
  ? // When attesting to the head slot or later, always use the head of the chain.
618
614
  headBlockRoot
@@ -627,9 +623,12 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
627
623
  // Check the execution status as validator shouldn't vote on an optimistic head
628
624
  // Check on target is sufficient as a valid target would imply a valid source
629
625
  notOnOptimisticBlockRoot(targetRoot);
626
+ notOnOutOfRangeData(targetRoot);
630
627
  // To get the correct source we must get a state in the same epoch as the attestation's epoch.
631
628
  // An epoch transition may change state.currentJustifiedCheckpoint
632
629
  const attEpochState = await chain.getHeadStateAtEpoch(attEpoch, RegenCaller.produceAttestationData);
630
+ // TODO confirm if the below is correct assertion
631
+ // notOnOutOfRangeData(attEpochState.currentJustifiedCheckpoint.root);
633
632
  return {
634
633
  data: {
635
634
  slot,
@@ -651,25 +650,26 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
651
650
  * @param subcommitteeIndex The subcommittee index for which to produce the contribution.
652
651
  * @param beaconBlockRoot The block root for which to produce the contribution.
653
652
  */
654
- async produceSyncCommitteeContribution(slot, subcommitteeIndex, beaconBlockRoot) {
653
+ async produceSyncCommitteeContribution({ slot, subcommitteeIndex, beaconBlockRoot }) {
655
654
  // when a validator is configured with multiple beacon node urls, this beaconBlockRoot may come from another beacon node
656
655
  // and it hasn't been in our forkchoice since we haven't seen / processing that block
657
656
  // see https://github.com/ChainSafe/lodestar/issues/5063
658
657
  if (!chain.forkChoice.hasBlock(beaconBlockRoot)) {
659
- const rootHex = toHexString(beaconBlockRoot);
658
+ const rootHex = toHex(beaconBlockRoot);
660
659
  network.searchUnknownSlotRoot({ slot, root: rootHex });
661
660
  // if result of this call is false, i.e. block hasn't seen after 1 slot then the below notOnOptimisticBlockRoot call will throw error
662
661
  await chain.waitForBlock(slot, rootHex);
663
662
  }
664
663
  // Check the execution status as validator shouldn't contribute on an optimistic head
665
664
  notOnOptimisticBlockRoot(beaconBlockRoot);
665
+ notOnOutOfRangeData(beaconBlockRoot);
666
666
  const contribution = chain.syncCommitteeMessagePool.getContribution(subcommitteeIndex, slot, beaconBlockRoot);
667
667
  if (!contribution)
668
668
  throw new ApiError(500, "No contribution available");
669
669
  metrics?.production.producedSyncContributionParticipants.observe(contribution.aggregationBits.getTrueBitIndexes().length);
670
670
  return { data: contribution };
671
671
  },
672
- async getProposerDuties(epoch) {
672
+ async getProposerDuties({ epoch }) {
673
673
  notWhileSyncing();
674
674
  // Early check that epoch is within [current_epoch, current_epoch + 1], or allow for pre-genesis
675
675
  const currentEpoch = currentEpochWithDisparity();
@@ -727,13 +727,15 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
727
727
  const dependentRoot = proposerShufflingDecisionRoot(state) || (await getGenesisBlockRoot(state));
728
728
  return {
729
729
  data: duties,
730
- dependentRoot: toHex(dependentRoot),
731
- executionOptimistic: isOptimisticBlock(head),
730
+ meta: {
731
+ dependentRoot: toHex(dependentRoot),
732
+ executionOptimistic: isOptimisticBlock(head),
733
+ },
732
734
  };
733
735
  },
734
- async getAttesterDuties(epoch, validatorIndices) {
736
+ async getAttesterDuties({ epoch, indices }) {
735
737
  notWhileSyncing();
736
- if (validatorIndices.length === 0) {
738
+ if (indices.length === 0) {
737
739
  throw new ApiError(400, "No validator to get attester duties");
738
740
  }
739
741
  // May request for an epoch that's in the future
@@ -752,11 +754,11 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
752
754
  // the first `MAXIMUM_GOSSIP_CLOCK_DISPARITY` duration of the epoch `tolerantCurrentEpoch`
753
755
  // will equal `currentEpoch + 1`
754
756
  // Check that all validatorIndex belong to the state before calling getCommitteeAssignments()
755
- const pubkeys = getPubkeysForIndices(state.validators, validatorIndices);
756
- const committeeAssignments = state.epochCtx.getCommitteeAssignments(epoch, validatorIndices);
757
+ const pubkeys = getPubkeysForIndices(state.validators, indices);
758
+ const committeeAssignments = state.epochCtx.getCommitteeAssignments(epoch, indices);
757
759
  const duties = [];
758
- for (let i = 0, len = validatorIndices.length; i < len; i++) {
759
- const validatorIndex = validatorIndices[i];
760
+ for (let i = 0, len = indices.length; i < len; i++) {
761
+ const validatorIndex = indices[i];
760
762
  const duty = committeeAssignments.get(validatorIndex);
761
763
  if (duty) {
762
764
  // Mutate existing object instead of re-creating another new object with spread operator
@@ -768,8 +770,10 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
768
770
  const dependentRoot = attesterShufflingDecisionRoot(state, epoch) || (await getGenesisBlockRoot(state));
769
771
  return {
770
772
  data: duties,
771
- dependentRoot: toHex(dependentRoot),
772
- executionOptimistic: isOptimisticBlock(head),
773
+ meta: {
774
+ dependentRoot: toHex(dependentRoot),
775
+ executionOptimistic: isOptimisticBlock(head),
776
+ },
773
777
  };
774
778
  },
775
779
  /**
@@ -785,9 +789,9 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
785
789
  *
786
790
  * @param validatorIndices an array of the validator indices for which to obtain the duties.
787
791
  */
788
- async getSyncCommitteeDuties(epoch, validatorIndices) {
792
+ async getSyncCommitteeDuties({ epoch, indices }) {
789
793
  notWhileSyncing();
790
- if (validatorIndices.length === 0) {
794
+ if (indices.length === 0) {
791
795
  throw new ApiError(400, "No validator to get attester duties");
792
796
  }
793
797
  // May request for an epoch that's in the future
@@ -798,13 +802,13 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
798
802
  const head = chain.forkChoice.getHead();
799
803
  const state = chain.getHeadState();
800
804
  // Check that all validatorIndex belong to the state before calling getCommitteeAssignments()
801
- const pubkeys = getPubkeysForIndices(state.validators, validatorIndices);
805
+ const pubkeys = getPubkeysForIndices(state.validators, indices);
802
806
  // Ensures `epoch // EPOCHS_PER_SYNC_COMMITTEE_PERIOD <= current_epoch // EPOCHS_PER_SYNC_COMMITTEE_PERIOD + 1`
803
807
  const syncCommitteeCache = state.epochCtx.getIndexedSyncCommitteeAtEpoch(epoch);
804
808
  const syncCommitteeValidatorIndexMap = syncCommitteeCache.validatorIndexMap;
805
809
  const duties = [];
806
- for (let i = 0, len = validatorIndices.length; i < len; i++) {
807
- const validatorIndex = validatorIndices[i];
810
+ for (let i = 0, len = indices.length; i < len; i++) {
811
+ const validatorIndex = indices[i];
808
812
  const validatorSyncCommitteeIndices = syncCommitteeValidatorIndexMap.get(validatorIndex);
809
813
  if (validatorSyncCommitteeIndices) {
810
814
  duties.push({
@@ -816,13 +820,13 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
816
820
  }
817
821
  return {
818
822
  data: duties,
819
- executionOptimistic: isOptimisticBlock(head),
823
+ meta: { executionOptimistic: isOptimisticBlock(head) },
820
824
  };
821
825
  },
822
- async getAggregatedAttestation(attestationDataRoot, slot) {
826
+ async getAggregatedAttestation({ attestationDataRoot, slot }) {
823
827
  notWhileSyncing();
824
828
  await waitForSlot(slot); // Must never request for a future slot > currentSlot
825
- const dataRootHex = toHexString(attestationDataRoot);
829
+ const dataRootHex = toHex(attestationDataRoot);
826
830
  const aggregate = chain.attestationPool.getAggregate(slot, dataRootHex);
827
831
  if (!aggregate) {
828
832
  throw new ApiError(404, `No aggregated attestation for slot=${slot}, dataRoot=${dataRootHex}`);
@@ -832,7 +836,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
832
836
  data: aggregate,
833
837
  };
834
838
  },
835
- async publishAggregateAndProofs(signedAggregateAndProofs) {
839
+ async publishAggregateAndProofs({ signedAggregateAndProofs }) {
836
840
  notWhileSyncing();
837
841
  const seenTimestampSec = Date.now() / 1000;
838
842
  const errors = [];
@@ -881,7 +885,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
881
885
  *
882
886
  * https://github.com/ethereum/beacon-APIs/pull/137
883
887
  */
884
- async publishContributionAndProofs(contributionAndProofs) {
888
+ async publishContributionAndProofs({ contributionAndProofs }) {
885
889
  notWhileSyncing();
886
890
  const errors = [];
887
891
  await Promise.all(contributionAndProofs.map(async (contributionAndProof, i) => {
@@ -916,7 +920,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
916
920
  throw errors[0];
917
921
  }
918
922
  },
919
- async prepareBeaconCommitteeSubnet(subscriptions) {
923
+ async prepareBeaconCommitteeSubnet({ subscriptions }) {
920
924
  notWhileSyncing();
921
925
  await network.prepareBeaconCommitteeSubnets(subscriptions.map(({ validatorIndex, slot, isAggregator, committeesAtSlot, committeeIndex }) => ({
922
926
  validatorIndex: validatorIndex,
@@ -943,7 +947,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
943
947
  *
944
948
  * https://github.com/ethereum/beacon-APIs/pull/136
945
949
  */
946
- async prepareSyncCommitteeSubnets(subscriptions) {
950
+ async prepareSyncCommitteeSubnets({ subscriptions }) {
947
951
  notWhileSyncing();
948
952
  // A `validatorIndex` can be in multiple subnets, so compute the CommitteeSubscription with double for loop
949
953
  const subs = [];
@@ -966,7 +970,7 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
966
970
  }
967
971
  }
968
972
  },
969
- async prepareBeaconProposer(proposers) {
973
+ async prepareBeaconProposer({ proposers }) {
970
974
  await chain.updateBeaconProposerData(chain.clock.currentEpoch, proposers);
971
975
  },
972
976
  async submitBeaconCommitteeSelections() {
@@ -975,8 +979,8 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
975
979
  async submitSyncCommitteeSelections() {
976
980
  throw new OnlySupportedByDVT();
977
981
  },
978
- async getLiveness(epoch, validatorIndices) {
979
- if (validatorIndices.length === 0) {
982
+ async getLiveness({ epoch, indices }) {
983
+ if (indices.length === 0) {
980
984
  return {
981
985
  data: [],
982
986
  };
@@ -986,13 +990,13 @@ export function getValidatorApi({ chain, config, logger, metrics, network, sync,
986
990
  throw new ApiError(400, `Request epoch ${epoch} is more than one epoch before or after the current epoch ${currentEpoch}`);
987
991
  }
988
992
  return {
989
- data: validatorIndices.map((index) => ({
993
+ data: indices.map((index) => ({
990
994
  index,
991
995
  isLive: chain.validatorSeenAtEpoch(index, epoch),
992
996
  })),
993
997
  };
994
998
  },
995
- async registerValidator(registrations) {
999
+ async registerValidator({ registrations }) {
996
1000
  if (!chain.executionBuilder) {
997
1001
  throw Error("Execution builder not enabled");
998
1002
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/validator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAC,MAAM,EAAY,MAAM,eAAe,CAAC;AAChD,OAAO,EAEL,uBAAuB,EACvB,6BAA6B,EAC7B,6BAA6B,EAC7B,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,yBAAyB,EACzB,0BAA0B,EAC1B,WAAW,EACX,eAAe,EACf,OAAO,GACR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAIL,GAAG,EAEH,mBAAmB,EAInB,oBAAoB,EACpB,eAAe,GAEhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAC,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAC,4BAA4B,EAAC,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAC,MAAM,cAAc,CAAC;AACzE,OAAO,EAAC,+CAA+C,EAAC,MAAM,gEAAgE,CAAC;AAG/H,OAAO,EAAC,WAAW,EAAC,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAC,gCAAgC,EAAC,MAAM,8CAA8C,CAAC;AAC9F,OAAO,EAAC,0BAA0B,EAAC,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAC,UAAU,EAAiC,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAC,gCAAgC,EAAE,oBAAoB,EAAE,2BAA2B,EAAC,MAAM,YAAY,CAAC;AAE/G;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,+BAA+B,GAAG,KAAK,CAAC;AAC9C,8DAA8D;AAC9D,MAAM,gCAAgC,GAAG,MAAM,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,IAAI,GACO;IACX,IAAI,gBAAgB,GAAgB,IAAI,CAAC;IAEzC;;;;;OAKG;IACH,MAAM,2BAA2B,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;IAC/E,MAAM,0BAA0B,GAAG,2BAA2B,GAAG,IAAI,CAAC;IAEtE,+CAA+C;IAC/C,KAAK,UAAU,mBAAmB,CAAC,KAAgC;QACjE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,oEAAoE;YACpE,IAAI,KAAK,CAAC,IAAI,GAAG,yBAAyB,EAAE,CAAC;gBAC3C,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;YACnE,IAAI,QAAQ,EAAE,CAAC;gBACb,gBAAgB,GAAG,MAAM;qBACtB,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;qBACzC,iBAAiB,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,oFAAoF;QACpF,6GAA6G;QAC7G,OAAO,gBAAgB,IAAI,SAAS,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,KAAK,UAAU,WAAW,CAAC,IAAU;QACnC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACxE,MAAM,QAAQ,GAAG,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAElD,IAAI,QAAQ,GAAG,0BAA0B,EAAE,CAAC;YAC1C,MAAM,KAAK,CAAC,kBAAkB,IAAI,mBAAmB,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAED,qDAAqD;IACvD,CAAC;IAED;;;OAGG;IACH,KAAK,UAAU,uBAAuB;QACpC,MAAM,aAAa,GAAG,aAAa,EAAE,CAAC;QACtC,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,0BAA0B,EAAE,CAAC;YACpE,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,aAAa;QACpB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC9D,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;QACtE,OAAO,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/C,CAAC;IAED,SAAS,yBAAyB;QAChC,OAAO,kBAAkB,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,GAAG,2BAA2B,CAAC,CAAC,CAAC;IACrG,CAAC;IAED,SAAS,oBAAoB,CAC3B,KAAmE,EACnE,MAA4B;QAE5B,MAAM,cAAc,GAAG,KAAK,CAAC,qBAAqB,CAAC;QACnD,MAAM,cAAc,GAAG,KAAK,CAAC,mBAAmB,CAAC;QACjD,MAAM,UAAU,GAAG,cAAc,GAAG,cAAc,CAAC;QAEnD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO;gBACL,qBAAqB,EAAE,cAAc,CAAC,cAAc,CAAC;gBACrD,mBAAmB,EAAE,cAAc,CAAC,cAAc,CAAC;gBACnD,eAAe,EAAE,cAAc,CAAC,UAAU,CAAC;aAC5C,CAAC;QACJ,CAAC;aAAM,IAAI,MAAM,KAAK,mBAAmB,CAAC,OAAO,EAAE,CAAC;YAClD,OAAO;gBACL,4BAA4B,EAAE,cAAc,CAAC,cAAc,CAAC;gBAC5D,0BAA0B,EAAE,cAAc,CAAC,cAAc,CAAC;gBAC1D,sBAAsB,EAAE,cAAc,CAAC,UAAU,CAAC;aACnD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,2BAA2B,EAAE,cAAc,CAAC,cAAc,CAAC;gBAC3D,yBAAyB,EAAE,cAAc,CAAC,cAAc,CAAC;gBACzD,qBAAqB,EAAE,cAAc,CAAC,UAAU,CAAC;aAClD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,UAAU,sBAAsB,CAAC,KAAoB;QACxD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,EAAE,GAAG;YACT,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;SACnC,CAAC;QACF,MAAM,KAAK,GAAG,uBAAuB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAChD,qEAAqE;QACrE,IAAI,QAAQ,GAAkD,IAAI,CAAC;QACnE,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YACtC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACtB,QAAQ,GAAG,CAAC,OAAO,EAAE,EAAE;oBACrB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC,CAAC;gBACF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACtD,CAAC,CAAC;YACF,8EAA8E;YAC9E,8CAA8C;YAC9C,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,SAAS,eAAe;QACtB,kDAAkD;QAClD,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,eAAe,EAAE,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7B,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,SAAS,CAAC,gBAAgB,CAAC;YAChC,KAAK,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;gBACjD,IAAI,WAAW,GAAG,QAAQ,GAAG,qBAAqB,GAAG,eAAe,EAAE,CAAC;oBACrE,MAAM,IAAI,aAAa,CAAC,YAAY,QAAQ,gBAAgB,WAAW,EAAE,CAAC,CAAC;gBAC7E,CAAC;qBAAM,CAAC;oBACN,OAAO;gBACT,CAAC;YACH,CAAC;YAED,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO;YAET,KAAK,SAAS,CAAC,OAAO;gBACpB,MAAM,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IAEH,SAAS,wBAAwB,CAAC,eAAqB;QACrD,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,gBAAgB,CAAC,eAAe,KAAK,eAAe,CAAC,OAAO;YAC9D,MAAM,IAAI,aAAa,CACrB,0EAA0E,gBAAgB,CAAC,yBAAyB,WAAW,gBAAgB,CAAC,sBAAsB,EAAE,CACzK,CAAC;IACN,CAAC;IAED,MAAM,0BAA0B,GAAG,KAAK,UAAU,0BAA0B,CAC1E,IAAU,EACV,YAA0B,EAC1B,QAAgB;IAChB,oGAAoG;IACpG,EACE,uBAAuB,EACvB,eAAe,EACf,eAAe,EAAE,iBAAiB,MAa9B,EAAE;QAER,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC,gBAAgB,OAAO,iCAAiC,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC;QAC3C,OAAO,EAAE,uBAAuB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QAE/C,qDAAqD;QACrD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC5B,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,eAAqB,CAAC;QAC1B,IAAI,uBAAuB,KAAK,IAAI,EAAE,CAAC;YACrC,eAAe,EAAE,CAAC;YAClB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD;YAE9E,gFAAgF;YAChF,6EAA6E;YAC7E,kDAAkD;YAClD,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,eAAe,GAAG,aAAa,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,iBAAiB,CAAC;QACtC,CAAC;QAED,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,OAAO,EAAE,mBAAmB,CAAC,UAAU,EAAE,CAAC;YAClD,MAAM,EAAC,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAC,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC;gBAC1F,IAAI;gBACJ,eAAe;gBACf,YAAY;gBACZ,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC1C,eAAe;aAChB,CAAC,CAAC;YAEH,OAAO,EAAE,sBAAsB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;YAC9C,OAAO,EAAE,4BAA4B,CAAC,OAAO,CAAC,EAAC,MAAM,EAAC,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACxF,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE;gBACvC,IAAI;gBACJ,qBAAqB;gBACrB,mBAAmB;gBACnB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACpF,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACrC,KAAK,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAC,CAAC;QAC5E,CAAC;gBAAS,CAAC;YACT,IAAI,KAAK;gBAAE,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,gCAAgC,GAAG,KAAK,UAAU,gCAAgC,CACtF,IAAU,EACV,YAA0B,EAC1B,QAAgB,EAChB,EACE,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,eAAe,EAAE,iBAAiB,MAS9B,EAAE;QAER,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC1C,OAAO,EAAE,uBAAuB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QAE/C,IAAI,eAAqB,CAAC;QAC1B,IAAI,uBAAuB,KAAK,IAAI,EAAE,CAAC;YACrC,eAAe,EAAE,CAAC;YAClB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD;YAE9E,gFAAgF;YAChF,6EAA6E;YAC7E,kDAAkD;YAClD,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,eAAe,GAAG,aAAa,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,iBAAiB,CAAC;QACtC,CAAC;QAED,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,OAAO,EAAE,mBAAmB,CAAC,UAAU,EAAE,CAAC;YAClD,MAAM,EAAC,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,qBAAqB,EAAC,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC;gBAC1G,IAAI;gBACJ,eAAe;gBACf,YAAY;gBACZ,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC1C,YAAY;gBACZ,eAAe;aAChB,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,uBAAuB,IAAI,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxE,MAAM,iBAAiB,GAAG,WAAW,CAAE,KAA+B,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBAC3G,IAAI,iBAAiB,KAAK,YAAY,EAAE,CAAC;oBACvC,MAAM,KAAK,CAAC,qDAAqD,YAAY,WAAW,iBAAiB,EAAE,CAAC,CAAC;gBAC/G,CAAC;YACH,CAAC;YAED,OAAO,EAAE,sBAAsB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;YAC9C,OAAO,EAAE,4BAA4B,CAAC,OAAO,CAAC,EAAC,MAAM,EAAC,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACxF,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE;gBACzC,IAAI;gBACJ,qBAAqB;gBACrB,mBAAmB;gBACnB,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aAC7E,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACrC,KAAK,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,KAAK,CAAE,KAA+B,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAC1F,MAAM,QAAQ,GAAG,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAC3C,CAAC;gBAED,OAAO;oBACL,IAAI,EAAE,EAAC,KAAK,EAAE,GAAG,QAAQ,EAA2B;oBACpD,OAAO;oBACP,qBAAqB;oBACrB,mBAAmB;oBACnB,qBAAqB;iBACtB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,qBAAqB,EAAC,CAAC;YACnG,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,KAAK;gBAAE,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,2BAA2B,GAC/B,KAAK,UAAU,2BAA2B,CACxC,IAAI,EACJ,YAAY,EACZ,QAAQ;IACR,uCAAuC;IACvC,uBAAiC,EACjC,EACE,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,MACkB,EAAE;QAE7C,eAAe,EAAE,CAAC;QAClB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD;QAE9E,gFAAgF;QAChF,6EAA6E;QAC7E,kDAAkD;QAClD,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,eAAe,GAAG,aAAa,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,CAAC;QAEjF,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtC,yBAAyB;QACzB,2FAA2F;QAC3F,+FAA+F;QAC/F,gBAAgB,GAAG,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC;QACnF,kBAAkB,GAAG,kBAAkB,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;YAClD,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,8BAA8B,kBAAkB,6BAA6B,CAAC,CAAC;QACzG,CAAC;QAED,MAAM,gBAAgB,GACpB,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,SAAS;YAClC,KAAK,CAAC,gBAAgB,KAAK,SAAS;YACpC,gBAAgB,KAAK,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC;QAEvE,+EAA+E;QAC/E,EAAE;QACF,iGAAiG;QACjG,6GAA6G;QAC7G,kGAAkG;QAClG,EAAE;QACF,+FAA+F;QAC/F,oDAAoD;QACpD,MAAM,eAAe,GAAG,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAAC;QAEhH,IAAI,CAAC,eAAe,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1C,MAAM,KAAK,CACT,0FAA0F,gBAAgB,qBAAqB,gBAAgB,EAAE,CAClJ,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG;YACpB,IAAI;YACJ,IAAI;YACJ,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;YACf,uBAAuB;YACvB,qCAAqC;YACrC,kBAAkB,EAAE,GAAG,kBAAkB,EAAE;SAC5C,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,mDAAmD,EAAE,aAAa,CAAC,CAAC;QACnF,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAAC;YACzD,IAAI;YACJ,eAAe;YACf,YAAY;YACZ,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,IAAI,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,aAAa,CAAC,CAAC;QAE1D,MAAM,CAAC,OAAO,CAAC,uDAAuD,EAAE;YACtE,GAAG,aAAa;YAChB,QAAQ,EAAE,+BAA+B;YACzC,SAAS,EAAE,gCAAgC;SAC5C,CAAC,CAAC;QAEH,8DAA8D;QAC9D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,wDAAwD;QAExD,MAAM,cAAc,GAAG,gBAAgB;YACrC,CAAC,CAAC,0BAA0B,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE;gBACvD,YAAY;gBACZ,qFAAqF;gBACrF,uBAAuB,EAAE,KAAK;gBAC9B,uEAAuE;gBACvE,uBAAuB,EAAE,IAAI;gBAC7B,eAAe;gBACf,eAAe;aAChB,CAAC;YACJ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAElD,MAAM,aAAa,GAAG,eAAe;YACnC,CAAC,CAAC,gCAAgC,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE;gBAC7D,YAAY;gBACZ,uBAAuB;gBACvB,uEAAuE;gBACvE,uBAAuB,EAAE,IAAI;gBAC7B,eAAe;gBACf,eAAe;aAChB,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;gBACtB,2DAA2D;gBAC3D,iCAAiC;gBACjC,yEAAyE;gBACzE,kFAAkF;gBAClF,IACE,WAAW,CAAC,qBAAqB;oBACjC,kBAAkB,KAAK,MAAM,CAAC,CAAC,CAAC;oBAChC,gBAAgB,KAAK,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,eAAe,EACtE,CAAC;oBACD,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC;gBACD,OAAO,WAAW,CAAC;YACrB,CAAC,CAAC;YACJ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAEjD,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,qBAAqB,CAAC,CAAC,cAAc,EAAE,aAAa,CAAC,EAAE;YACrF,gBAAgB,EAAE,+BAA+B;YACjD,aAAa,EAAE,gCAAgC;YAC/C,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChE,MAAM,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,eAAe,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CACT,oCAAoC,EACpC;gBACE,GAAG,aAAa;gBAChB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,EACD,MAAM,CAAC,MAAM,CACd,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,gBAAgB,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CACT,qCAAqC,EACrC;gBACE,GAAG,aAAa;gBAChB,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,EACD,OAAO,CAAC,MAAM,CACf,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClE,MAAM,KAAK,CACT,GAAG,gBAAgB,IAAI,eAAe,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,8BAA8B,CAC3I,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;YACxE,MAAM,CAAC,IAAI,CAAC,+DAA+D,EAAE;gBAC3E,GAAG,aAAa;gBAChB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,qBAAqB;gBACzD,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC;aACtC,CAAC,CAAC;YAEH,OAAO,EAAC,GAAG,MAAM,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,CAAC,MAAM,EAAC,CAAC;QAC/G,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE;gBAC9D,GAAG,aAAa;gBAChB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC;aACvC,CAAC,CAAC;YAEH,OAAO,EAAC,GAAG,OAAO,CAAC,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,sBAAsB,EAAE,mBAAmB,CAAC,OAAO,EAAC,CAAC;QAChH,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE;gBAC9D,GAAG,aAAa;gBAChB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC;aACtC,CAAC,CAAC;YAEH,OAAO,EAAC,GAAG,MAAM,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,CAAC,MAAM,EAAC,CAAC;QAC/G,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpE,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;gBACzD,iBAAiB,EAAE,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB;gBAC1F,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB;gBACvF,kBAAkB;gBAClB,gBAAgB;aACjB,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,YAAY,sBAAsB,QAAQ,EAAE;gBACtD,GAAG,aAAa;gBAChB,gBAAgB,EAAE,MAAM,CAAC,UAAU;gBACnC,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC;gBACjE,iBAAiB,EAAE,OAAO,CAAC,UAAU;gBACrC,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC;aACpE,CAAC,CAAC;YAEH,IAAI,sBAAsB,KAAK,mBAAmB,CAAC,MAAM,EAAE,CAAC;gBAC1D,OAAO;oBACL,GAAG,MAAM,CAAC,KAAK;oBACf,uBAAuB,EAAE,KAAK;oBAC9B,sBAAsB;iBACvB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO;oBACL,GAAG,OAAO,CAAC,KAAK;oBAChB,uBAAuB,EAAE,IAAI;oBAC7B,sBAAsB;iBACvB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAC9F,CAAC,CAAC;IAEJ,MAAM,YAAY,GAAoD,KAAK,UAAU,YAAY,CAC/F,IAAI,EACJ,YAAY,EACZ,QAAQ;QAER,MAAM,YAAY,GAAG,MAAM,gCAAgC,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC1F,IAAI,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,MAAM,KAAK,CAAC,gDAAgD,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,oEAAoE;YACpE,yFAAyF;YACzF,OAAO,YAA4C,CAAC;QACtD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,kCAAkC,GACtC,KAAK,UAAU,kCAAkC,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ;QAC5E,MAAM,EAAC,IAAI,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,OAAO,EAAC,GAAG,MAAM,2BAA2B,CACnG,IAAI,EACJ,YAAY,EACZ,QAAQ,CACT,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC,gBAAgB,OAAO,yCAAyC,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,uBAAuB,GAAG,IAAI,CAAC;QAErC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC;YACrB,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAkD,CAAC,CAAC;YACtG,OAAO,EAAC,qBAAqB,EAAE,mBAAmB,EAAE,IAAI,EAAE,YAAY,EAAE,uBAAuB,EAAE,OAAO,EAAC,CAAC;QAC5G,CAAC;aAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO,EAAC,qBAAqB,EAAE,mBAAmB,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAiD,CAAC,CAAC;YACrG,OAAO,EAAC,qBAAqB,EAAE,mBAAmB,EAAE,IAAI,EAAE,YAAY,EAAE,uBAAuB,EAAE,OAAO,EAAC,CAAC;QAC5G,CAAC;IACH,CAAC,CAAC;IAEJ,MAAM,cAAc,GAAsD,KAAK,UAAU,cAAc,CACrG,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,sBAAgC,EAChC,OAA8C,EAAE;QAEhD,MAAM,8BAA8B,GAAG,MAAM,2BAA2B,CACtE,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,sBAAsB,EACtB,IAAI,CACL,CAAC;QAEF,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,OAAO,CAAC,8BAA8B,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACvG,IAAI,8BAA8B,CAAC,uBAAuB,EAAE,CAAC;gBAC3D,OAAO,8BAA8B,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,IAAI,eAAe,CAAC,8BAA8B,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzD,MAAM,EAAC,KAAK,EAAC,GAAG,8BAA8B,CAAC,IAAI,CAAC;oBACpD,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAkD,CAAC,CAAC;oBACtG,OAAO;wBACL,GAAG,8BAA8B;wBACjC,IAAI,EAAE,YAAY;wBAClB,uBAAuB,EAAE,IAAI;qBAI9B,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,YAAY,GAAG,oBAAoB,CACvC,MAAM,EACN,8BAA8B,CAAC,IAAiD,CACjF,CAAC;oBACF,OAAO;wBACL,GAAG,8BAA8B;wBACjC,IAAI,EAAE,YAAY;wBAClB,uBAAuB,EAAE,IAAI;qBAI9B,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,8BAA8B,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,YAAY;QACZ,cAAc,EAAE,gCAAgC;QAChD,cAAc;QACd,mBAAmB,EAAE,kCAAkC;QAEvD,KAAK,CAAC,sBAAsB,CAAC,cAAc,EAAE,IAAI;YAC/C,eAAe,EAAE,CAAC;YAElB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD;YAE9E,wGAAwG;YACxG,mGAAmG;YACnG,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC;YAChC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC;YAC9D,MAAM,aAAa,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;YAEtD,MAAM,eAAe,GACnB,IAAI,IAAI,QAAQ;gBACd,CAAC,CAAC,8EAA8E;oBAC9E,aAAa;gBACf,CAAC,CAAC,gFAAgF;oBAChF,mEAAmE;oBACnE,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAE1C,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,UAAU,GACd,UAAU,IAAI,QAAQ;gBACpB,CAAC,CAAC,8FAA8F;oBAC9F,aAAa;gBACf,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAEhD,+EAA+E;YAC/E,6EAA6E;YAC7E,wBAAwB,CAAC,UAAU,CAAC,CAAC;YAErC,8FAA8F;YAC9F,kEAAkE;YAClE,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAC;YAEpG,OAAO;gBACL,IAAI,EAAE;oBACJ,IAAI;oBACJ,KAAK,EAAE,cAAc;oBACrB,eAAe;oBACf,MAAM,EAAE,aAAa,CAAC,0BAA0B;oBAChD,MAAM,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAC;iBAC5C;aACF,CAAC;QACJ,CAAC;QAED;;;;;;;;;;WAUG;QACH,KAAK,CAAC,gCAAgC,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe;YAC7E,wHAAwH;YACxH,qFAAqF;YACrF,wDAAwD;YACxD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChD,MAAM,OAAO,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;gBAC7C,OAAO,CAAC,qBAAqB,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC;gBACrD,qIAAqI;gBACrI,MAAM,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC;YAED,qFAAqF;YACrF,wBAAwB,CAAC,eAAe,CAAC,CAAC;YAE1C,MAAM,YAAY,GAAG,KAAK,CAAC,wBAAwB,CAAC,eAAe,CAAC,iBAAiB,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;YAC9G,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;YAExE,OAAO,EAAE,UAAU,CAAC,oCAAoC,CAAC,OAAO,CAC9D,YAAY,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,MAAM,CACxD,CAAC;YAEF,OAAO,EAAC,IAAI,EAAE,YAAY,EAAC,CAAC;QAC9B,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,KAAK;YAC3B,eAAe,EAAE,CAAC;YAElB,gGAAgG;YAChG,MAAM,YAAY,GAAG,yBAAyB,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC;YACnC,IAAI,YAAY,IAAI,CAAC,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACvE,MAAM,KAAK,CAAC,mBAAmB,KAAK,uBAAuB,YAAY,kBAAkB,SAAS,EAAE,CAAC,CAAC;YACxG,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,KAAK,GAA0C,SAAS,CAAC;YAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC9C,MAAM,0BAA0B,GAAG,MAAM,GAAG,0BAA0B,CAAC;YACvE,MAAM,aAAa,GAAG,aAAa,EAAE,CAAC;YACtC,2EAA2E;YAC3E,mEAAmE;YACnE,IAAI,KAAK,KAAK,SAAS,IAAI,aAAa,GAAG,0BAA0B,EAAE,CAAC;gBACtE,6EAA6E;gBAC7E,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,EAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;gBAC/E,IAAI,OAAO,EAAE,CAAC;oBACZ,KAAK,GAAG,OAAO,CAAC;oBAChB,OAAO,EAAE,MAAM,CAAC,iCAAiC,CAAC,GAAG,EAAE,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,MAAM,CAAC,kCAAkC,CAAC,GAAG,EAAE,CAAC;gBAC3D,CAAC;YACH,CAAC;YAED,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxC,IAAI,OAAO,GAAqB,EAAE,CAAC;YAEnC,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzB,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAChD,CAAC;iBAAM,IAAI,KAAK,KAAK,UAAU,GAAG,CAAC,EAAE,CAAC;gBACpC,iGAAiG;gBACjG,oEAAoE;gBACpE,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,2BAA2B,EAAE,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,8DAA8D;gBAC9D,MAAM,KAAK,CAAC,6BAA6B,KAAK,iCAAiC,UAAU,EAAE,CAAC,CAAC;YAC/F,CAAC;YAED,+DAA+D;YAC/D,yFAAyF;YACzF,6FAA6F;YAC7F,iGAAiG;YACjG,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAEhE,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,MAAM,GAAoC,EAAE,CAAC;YACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;YACrF,CAAC;YAED,4FAA4F;YAC5F,oFAAoF;YACpF,MAAM,aAAa,GAAG,6BAA6B,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAEjG,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;gBACnC,mBAAmB,EAAE,iBAAiB,CAAC,IAAI,CAAC;aAC7C,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,gBAAgB;YAC7C,eAAe,EAAE,CAAC;YAElB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;YACjE,CAAC;YAED,gDAAgD;YAChD,MAAM,uBAAuB,EAAE,CAAC;YAEhC,mEAAmE;YACnE,uEAAuE;YACvE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,iDAAiD,CAAC,CAAC;YAC7E,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAE5E,yFAAyF;YACzF,oCAAoC;YACpC,EAAE;YACF,4FAA4F;YAC5F,0FAA0F;YAC1F,gCAAgC;YAEhC,6FAA6F;YAC7F,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;YACzE,MAAM,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAC7F,MAAM,MAAM,GAAoC,EAAE,CAAC;YACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5D,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAA8C,CAAC;gBACnG,IAAI,IAAI,EAAE,CAAC;oBACT,wFAAwF;oBACxF,2CAA2C;oBAC3C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,MAAM,aAAa,GAAG,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAExG,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;gBACnC,mBAAmB,EAAE,iBAAiB,CAAC,IAAI,CAAC;aAC7C,CAAC;QACJ,CAAC;QAED;;;;;;;;;;;;WAYG;QACH,KAAK,CAAC,sBAAsB,CAAC,KAAK,EAAE,gBAAgB;YAClD,eAAe,EAAE,CAAC;YAElB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;YACjE,CAAC;YAED,gDAAgD;YAChD,MAAM,uBAAuB,EAAE,CAAC;YAEhC,4GAA4G;YAC5G,6FAA6F;YAC7F,gDAAgD;YAChD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YAEnC,6FAA6F;YAC7F,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;YACzE,+GAA+G;YAC/G,MAAM,kBAAkB,GAAG,KAAK,CAAC,QAAQ,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;YAChF,MAAM,8BAA8B,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;YAE5E,MAAM,MAAM,GAAgC,EAAE,CAAC;YAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5D,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAC3C,MAAM,6BAA6B,GAAG,8BAA8B,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBACzF,IAAI,6BAA6B,EAAE,CAAC;oBAClC,MAAM,CAAC,IAAI,CAAC;wBACV,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;wBAClB,cAAc;wBACd,6BAA6B;qBAC9B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,mBAAmB,EAAE,iBAAiB,CAAC,IAAI,CAAC;aAC7C,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,wBAAwB,CAAC,mBAAmB,EAAE,IAAI;YACtD,eAAe,EAAE,CAAC;YAElB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD;YAE9E,MAAM,WAAW,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAExE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,sCAAsC,IAAI,cAAc,WAAW,EAAE,CAAC,CAAC;YACjG,CAAC;YAED,OAAO,EAAE,UAAU,CAAC,6BAA6B,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC;YAEhH,OAAO;gBACL,IAAI,EAAE,SAAS;aAChB,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,yBAAyB,CAAC,wBAAwB;YACtD,eAAe,EAAE,CAAC;YAElB,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAC3C,MAAM,MAAM,GAAY,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAE/D,MAAM,OAAO,CAAC,GAAG,CACf,wBAAwB,CAAC,GAAG,CAAC,KAAK,EAAE,uBAAuB,EAAE,CAAC,EAAE,EAAE;gBAChE,IAAI,CAAC;oBACH,0BAA0B;oBAC1B,4EAA4E;oBAC5E,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC;oBAC5F,MAAM,EAAC,IAAI,EAAE,eAAe,EAAC,GAAG,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;oBAC/E,oHAAoH;oBACpH,4FAA4F;oBAC5F,wDAAwD;oBACxD,MAAM,EAAC,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAC,GAAG,MAAM,gCAAgC,CACnG,UAAU,EACV,OAAO,EACP,KAAK,EACL,IAAI,EACJ,eAAe,CAChB,CAAC;oBAEF,KAAK,CAAC,yBAAyB,CAAC,GAAG,CACjC,uBAAuB,CAAC,OAAO,CAAC,SAAS,EACzC,cAAc,EACd,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,EAC1C,gBAAgB,CACjB,CAAC;oBACF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,8BAA8B,CAAC,uBAAuB,CAAC,CAAC;oBACxF,OAAO,EAAE,iCAAiC,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;gBAC9F,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,MAAM,GAAG;wBACb,IAAI,EAAE,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;wBACzD,KAAK,EAAE,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;qBAC5D,CAAC;oBAEF,IAAI,CAAC,YAAY,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,oBAAoB,CAAC,wBAAwB,EAAE,CAAC;wBACnG,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC;wBAC/D,OAAO,CAAC,wCAAwC;oBAClD,CAAC;oBAED,MAAM,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,GAAG,EAAE,MAAM,EAAE,CAAU,CAAC,CAAC;oBAC9E,IAAI,CAAC,YAAY,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;wBACtE,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,YAAY,CAAC,CAAC;oBAC1G,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CACH,CAAC;YAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,KAAK,CAAC,gDAAgD,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1G,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED;;;;;;WAMG;QACH,KAAK,CAAC,4BAA4B,CAAC,qBAAqB;YACtD,eAAe,EAAE,CAAC;YAElB,MAAM,MAAM,GAAY,EAAE,CAAC;YAE3B,MAAM,OAAO,CAAC,GAAG,CACf,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,oBAAoB,EAAE,CAAC,EAAE,EAAE;gBAC1D,IAAI,CAAC;oBACH,0BAA0B;oBAC1B,MAAM,EAAC,+BAA+B,EAAC,GAAG,MAAM,+CAA+C,CAC7F,KAAK,EACL,oBAAoB,EACpB,IAAI,CAAC,gCAAgC;qBACtC,CAAC;oBACF,KAAK,CAAC,4BAA4B,CAAC,GAAG,CACpC,oBAAoB,CAAC,OAAO,EAC5B,+BAA+B,CAAC,MAAM,CACvC,CAAC;oBACF,MAAM,OAAO,CAAC,2BAA2B,CAAC,oBAAoB,CAAC,CAAC;gBAClE,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,MAAM,GAAG;wBACb,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI;wBACpD,iBAAiB,EAAE,oBAAoB,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB;qBAC/E,CAAC;oBAEF,IACE,CAAC,YAAY,kBAAkB;wBAC/B,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,uCAAuC,EAC9E,CAAC;wBACD,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC;wBAC5D,OAAO,CAAC,wCAAwC;oBAClD,CAAC;oBAED,MAAM,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,GAAG,EAAE,MAAM,EAAE,CAAU,CAAC,CAAC;oBACjF,IAAI,CAAC,YAAY,kBAAkB,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;wBACxE,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,0BAA0B,EAAE,oBAAoB,EAAE,YAAY,CAAC,CAAC;oBAC1G,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CACH,CAAC;YAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,KAAK,CAAC,mDAAmD,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7G,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,4BAA4B,CAAC,aAAa;YAC9C,eAAe,EAAE,CAAC;YAElB,MAAM,OAAO,CAAC,6BAA6B,CACzC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAC,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAC,EAAE,EAAE,CAAC,CAAC;gBAC7F,cAAc,EAAE,cAAc;gBAC9B,MAAM,EAAE,gCAAgC,CAAC,IAAI,EAAE,gBAAgB,EAAE,cAAc,CAAC;gBAChF,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,YAAY;aAC3B,CAAC,CAAC,CACJ,CAAC;YAEF,QAAQ;YACR,wFAAwF;YACxF,oBAAoB;YAEpB,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;oBACzC,OAAO,CAAC,sBAAsB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;QAED;;;;;;;;;WASG;QACH,KAAK,CAAC,2BAA2B,CAAC,aAAa;YAC7C,eAAe,EAAE,CAAC;YAElB,2GAA2G;YAC3G,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAChC,KAAK,MAAM,cAAc,IAAI,GAAG,CAAC,oBAAoB,EAAE,CAAC;oBACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,0BAA0B,CAAC,CAAC;oBACvE,IAAI,CAAC,IAAI,CAAC;wBACR,cAAc,EAAE,GAAG,CAAC,cAAc;wBAClC,MAAM,EAAE,MAAM;wBACd,mHAAmH;wBACnH,IAAI,EAAE,uBAAuB,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;wBACjD,YAAY,EAAE,IAAI;qBACnB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;YAEhD,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;oBACzC,OAAO,CAAC,qCAAqC,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;gBACtG,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,CAAC,qBAAqB,CAAC,SAAS;YACnC,MAAM,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC5E,CAAC;QAED,KAAK,CAAC,+BAA+B;YACnC,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,6BAA6B;YACjC,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,gBAAgB;YACvC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,OAAO;oBACL,IAAI,EAAE,EAAE;iBACT,CAAC;YACJ,CAAC;YACD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;YAC9C,IAAI,KAAK,GAAG,YAAY,GAAG,CAAC,IAAI,KAAK,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,QAAQ,CAChB,GAAG,EACH,iBAAiB,KAAK,6DAA6D,YAAY,EAAE,CAClG,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACrC,KAAK;oBACL,MAAM,EAAE,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;iBACjD,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,aAAa;YACnC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAC5B,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/C,CAAC;YAED,0DAA0D;YAC1D,6EAA6E;YAC7E,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;YAE9C,MAAM,qBAAqB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;gBAClE,MAAM,EAAC,MAAM,EAAC,GAAG,YAAY,CAAC,OAAO,CAAC;gBACtC,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnE,IAAI,cAAc,KAAK,SAAS;oBAAE,OAAO,KAAK,CAAC;gBAE/C,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBACnE,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAC3D,OAAO,CACL,MAAM,KAAK,QAAQ;oBACnB,MAAM,KAAK,gBAAgB;oBAC3B,MAAM,KAAK,gBAAgB;oBAC3B,MAAM,KAAK,gBAAgB;oBAC3B,MAAM,KAAK,qBAAqB;oBAChC,MAAM,KAAK,gBAAgB,CAC5B,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;YAEtE,MAAM,CAAC,KAAK,CAAC,wDAAwD,EAAE;gBACrE,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,qBAAqB,CAAC,MAAM;aACpC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/validator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAErC,OAAO,EAEL,uBAAuB,EACvB,6BAA6B,EAC7B,6BAA6B,EAC7B,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,eAAe,EACf,yBAAyB,EACzB,0BAA0B,EAC1B,WAAW,EACX,eAAe,EACf,OAAO,GAIR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAIL,GAAG,EAEH,mBAAmB,EAGnB,oBAAoB,EACpB,eAAe,GAMhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,eAAe,EAAE,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AACtF,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAC,4BAA4B,EAAC,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAC,MAAM,cAAc,CAAC;AACzE,OAAO,EAAC,+CAA+C,EAAC,MAAM,gEAAgE,CAAC;AAG/H,OAAO,EAAC,WAAW,EAAC,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAC,kBAAkB,EAAC,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAC,gCAAgC,EAAC,MAAM,8CAA8C,CAAC;AAC9F,OAAO,EAAC,0BAA0B,EAAC,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAC,UAAU,EAAiC,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAC,gCAAgC,EAAE,oBAAoB,EAAE,2BAA2B,EAAC,MAAM,YAAY,CAAC;AAE/G;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,+BAA+B,GAAG,KAAK,CAAC;AAC9C,8DAA8D;AAC9D,MAAM,gCAAgC,GAAG,MAAM,CAAC;AAgBhD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,IAAI,GACO;IACX,IAAI,gBAAgB,GAAgB,IAAI,CAAC;IAEzC;;;;;OAKG;IACH,MAAM,2BAA2B,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;IAC/E,MAAM,0BAA0B,GAAG,2BAA2B,GAAG,IAAI,CAAC;IAEtE,+CAA+C;IAC/C,KAAK,UAAU,mBAAmB,CAAC,KAAgC;QACjE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,oEAAoE;YACpE,IAAI,KAAK,CAAC,IAAI,GAAG,yBAAyB,EAAE,CAAC;gBAC3C,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;YACnE,IAAI,QAAQ,EAAE,CAAC;gBACb,gBAAgB,GAAG,MAAM;qBACtB,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;qBACzC,iBAAiB,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,oFAAoF;QACpF,6GAA6G;QAC7G,OAAO,gBAAgB,IAAI,SAAS,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,KAAK,UAAU,WAAW,CAAC,IAAU;QACnC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACxE,MAAM,QAAQ,GAAG,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAElD,IAAI,QAAQ,GAAG,0BAA0B,EAAE,CAAC;YAC1C,MAAM,KAAK,CAAC,kBAAkB,IAAI,mBAAmB,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;QAED,qDAAqD;IACvD,CAAC;IAED;;;OAGG;IACH,KAAK,UAAU,uBAAuB;QACpC,MAAM,aAAa,GAAG,aAAa,EAAE,CAAC;QACtC,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,0BAA0B,EAAE,CAAC;YACpE,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,aAAa;QACpB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC9D,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;QACtE,OAAO,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/C,CAAC;IAED,SAAS,yBAAyB;QAChC,OAAO,kBAAkB,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,GAAG,2BAA2B,CAAC,CAAC,CAAC;IACrG,CAAC;IAED,SAAS,oBAAoB,CAC3B,KAAmE,EACnE,MAA4B;QAE5B,MAAM,cAAc,GAAG,KAAK,CAAC,qBAAqB,CAAC;QACnD,MAAM,cAAc,GAAG,KAAK,CAAC,mBAAmB,CAAC;QACjD,MAAM,UAAU,GAAG,cAAc,GAAG,cAAc,CAAC;QAEnD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO;gBACL,qBAAqB,EAAE,cAAc,CAAC,cAAc,CAAC;gBACrD,mBAAmB,EAAE,cAAc,CAAC,cAAc,CAAC;gBACnD,eAAe,EAAE,cAAc,CAAC,UAAU,CAAC;aAC5C,CAAC;QACJ,CAAC;aAAM,IAAI,MAAM,KAAK,mBAAmB,CAAC,OAAO,EAAE,CAAC;YAClD,OAAO;gBACL,4BAA4B,EAAE,cAAc,CAAC,cAAc,CAAC;gBAC5D,0BAA0B,EAAE,cAAc,CAAC,cAAc,CAAC;gBAC1D,sBAAsB,EAAE,cAAc,CAAC,UAAU,CAAC;aACnD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,2BAA2B,EAAE,cAAc,CAAC,cAAc,CAAC;gBAC3D,yBAAyB,EAAE,cAAc,CAAC,cAAc,CAAC;gBACzD,qBAAqB,EAAE,cAAc,CAAC,UAAU,CAAC;aAClD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,UAAU,sBAAsB,CAAC,KAAoB;QACxD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,EAAE,GAAG;YACT,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;SAC7B,CAAC;QACF,MAAM,KAAK,GAAG,uBAAuB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAChD,qEAAqE;QACrE,IAAI,QAAQ,GAAkD,IAAI,CAAC;QACnE,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YACtC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACtB,QAAQ,GAAG,CAAC,OAAO,EAAE,EAAE;oBACrB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;gBACrD,CAAC,CAAC;gBACF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACtD,CAAC,CAAC;YACF,8EAA8E;YAC9E,8CAA8C;YAC9C,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,SAAS,eAAe;QACtB,kDAAkD;QAClD,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,eAAe,EAAE,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7B,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,SAAS,CAAC,gBAAgB,CAAC;YAChC,KAAK,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;gBACjD,IAAI,WAAW,GAAG,QAAQ,GAAG,qBAAqB,GAAG,eAAe,EAAE,CAAC;oBACrE,MAAM,IAAI,aAAa,CAAC,YAAY,QAAQ,gBAAgB,WAAW,EAAE,CAAC,CAAC;gBAC7E,CAAC;qBAAM,CAAC;oBACN,OAAO;gBACT,CAAC;YACH,CAAC;YAED,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO;YAET,KAAK,SAAS,CAAC,OAAO;gBACpB,MAAM,IAAI,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IAEH,SAAS,wBAAwB,CAAC,eAAqB;QACrD,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,4CAA4C,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;QAED,IAAI,gBAAgB,CAAC,eAAe,KAAK,eAAe,CAAC,OAAO;YAC9D,MAAM,IAAI,aAAa,CACrB,0EAA0E,gBAAgB,CAAC,yBAAyB,WAAW,gBAAgB,CAAC,sBAAsB,EAAE,CACzK,CAAC;IACN,CAAC;IAED,SAAS,mBAAmB,CAAC,eAAqB;QAChD,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,4CAA4C,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAChG,CAAC;QAED,IAAI,gBAAgB,CAAC,sBAAsB,KAAK,sBAAsB,CAAC,UAAU;YAC/E,MAAM,IAAI,aAAa,CAAC,gDAAgD,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,UAAU,0BAA0B,CACvC,IAAU,EACV,YAA0B,EAC1B,QAAgB;IAChB,oGAAoG;IACpG,EACE,uBAAuB,EACvB,eAAe,EACf,eAAe,EAAE,iBAAiB,MAa9B,EAAE;QAER,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC,gBAAgB,OAAO,iCAAiC,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC;QAC3C,OAAO,EAAE,uBAAuB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QAE/C,qDAAqD;QACrD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC5B,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,eAAqB,CAAC;QAC1B,IAAI,uBAAuB,KAAK,IAAI,EAAE,CAAC;YACrC,eAAe,EAAE,CAAC;YAClB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD;YAE9E,gFAAgF;YAChF,6EAA6E;YAC7E,kDAAkD;YAClD,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,iBAAiB,CAAC;QACtC,CAAC;QACD,mBAAmB,CAAC,eAAe,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,OAAO,EAAE,mBAAmB,CAAC,UAAU,EAAE,CAAC;YAClD,MAAM,EAAC,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAC,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC;gBAC1F,IAAI;gBACJ,eAAe;gBACf,YAAY;gBACZ,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC1C,eAAe;aAChB,CAAC,CAAC;YAEH,OAAO,EAAE,sBAAsB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;YAC9C,OAAO,EAAE,4BAA4B,CAAC,OAAO,CAAC,EAAC,MAAM,EAAC,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACxF,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE;gBACvC,IAAI;gBACJ,qBAAqB;gBACrB,mBAAmB;gBACnB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACvF,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACrC,KAAK,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAC,CAAC;QAC5E,CAAC;gBAAS,CAAC;YACT,IAAI,KAAK;gBAAE,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,UAAU,gCAAgC,CAC7C,IAAU,EACV,YAA0B,EAC1B,QAAgB,EAChB,EACE,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,eAAe,EAAE,iBAAiB,MAS9B,EAAE;QAER,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC;QAC1C,OAAO,EAAE,uBAAuB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QAE/C,IAAI,eAAqB,CAAC;QAC1B,IAAI,uBAAuB,KAAK,IAAI,EAAE,CAAC;YACrC,eAAe,EAAE,CAAC;YAClB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD;YAE9E,gFAAgF;YAChF,6EAA6E;YAC7E,kDAAkD;YAClD,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,iBAAiB,CAAC;QACtC,CAAC;QACD,mBAAmB,CAAC,eAAe,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,OAAO,EAAE,mBAAmB,CAAC,UAAU,EAAE,CAAC;YAClD,MAAM,EAAC,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,qBAAqB,EAAC,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC;gBAC1G,IAAI;gBACJ,eAAe;gBACf,YAAY;gBACZ,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAC1C,YAAY;gBACZ,eAAe;aAChB,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,uBAAuB,IAAI,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxE,MAAM,iBAAiB,GAAG,KAAK,CAAE,KAA+B,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBACrG,IAAI,iBAAiB,KAAK,YAAY,EAAE,CAAC;oBACvC,MAAM,KAAK,CAAC,qDAAqD,YAAY,WAAW,iBAAiB,EAAE,CAAC,CAAC;gBAC/G,CAAC;YACH,CAAC;YAED,OAAO,EAAE,sBAAsB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;YAC9C,OAAO,EAAE,4BAA4B,CAAC,OAAO,CAAC,EAAC,MAAM,EAAC,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACxF,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE;gBACzC,IAAI;gBACJ,qBAAqB;gBACrB,mBAAmB;gBACnB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACvE,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACrC,KAAK,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,KAAK,CAAE,KAA+B,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAC1F,MAAM,QAAQ,GAAG,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAC3C,CAAC;gBAED,OAAO;oBACL,IAAI,EAAE,EAAC,KAAK,EAAE,GAAG,QAAQ,EAAkB;oBAC3C,OAAO;oBACP,qBAAqB;oBACrB,mBAAmB;oBACnB,qBAAqB;iBACtB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,qBAAqB,EAAC,CAAC;YACnG,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,KAAK;gBAAE,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,UAAU,2BAA2B,CACxC,IAAU,EACV,YAA0B,EAC1B,QAAgB;IAChB,uCAAuC;IACvC,uBAAiC,EACjC,kBAA2B,EAC3B,EAAC,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,KAA4C,EAAE;QAEtG,eAAe,EAAE,CAAC;QAClB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD;QAE9E,gFAAgF;QAChF,6EAA6E;QAC7E,kDAAkD;QAClD,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;QACvE,mBAAmB,CAAC,eAAe,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtC,yBAAyB;QACzB,2FAA2F;QAC3F,+FAA+F;QAC/F,gBAAgB,GAAG,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC;QACnF,kBAAkB,GAAG,kBAAkB,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;YAClD,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,8BAA8B,kBAAkB,6BAA6B,CAAC,CAAC;QACzG,CAAC;QAED,MAAM,gBAAgB,GACpB,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,SAAS;YAClC,KAAK,CAAC,gBAAgB,KAAK,SAAS;YACpC,gBAAgB,KAAK,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC;QAEvE,+EAA+E;QAC/E,EAAE;QACF,iGAAiG;QACjG,6GAA6G;QAC7G,kGAAkG;QAClG,EAAE;QACF,+FAA+F;QAC/F,oDAAoD;QACpD,MAAM,eAAe,GAAG,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAAC;QAEhH,IAAI,CAAC,eAAe,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1C,MAAM,KAAK,CACT,0FAA0F,gBAAgB,qBAAqB,gBAAgB,EAAE,CAClJ,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG;YACpB,IAAI;YACJ,IAAI;YACJ,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;YACf,uBAAuB;YACvB,qCAAqC;YACrC,kBAAkB,EAAE,GAAG,kBAAkB,EAAE;SAC5C,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,mDAAmD,EAAE,aAAa,CAAC,CAAC;QACnF,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAAC;YACzD,IAAI;YACJ,eAAe;YACf,YAAY;YACZ,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,IAAI,EAAE,CAAC;SAC3C,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,aAAa,CAAC,CAAC;QAE1D,MAAM,CAAC,OAAO,CAAC,uDAAuD,EAAE;YACtE,GAAG,aAAa;YAChB,QAAQ,EAAE,+BAA+B;YACzC,SAAS,EAAE,gCAAgC;SAC5C,CAAC,CAAC;QAEH,8DAA8D;QAC9D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,wDAAwD;QAExD,MAAM,cAAc,GAAG,gBAAgB;YACrC,CAAC,CAAC,0BAA0B,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE;gBACvD,YAAY;gBACZ,qFAAqF;gBACrF,uBAAuB,EAAE,KAAK;gBAC9B,uEAAuE;gBACvE,uBAAuB,EAAE,IAAI;gBAC7B,eAAe;gBACf,eAAe;aAChB,CAAC;YACJ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAElD,MAAM,aAAa,GAAG,eAAe;YACnC,CAAC,CAAC,gCAAgC,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE;gBAC7D,YAAY;gBACZ,uBAAuB;gBACvB,uEAAuE;gBACvE,uBAAuB,EAAE,IAAI;gBAC7B,eAAe;gBACf,eAAe;aAChB,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;gBACtB,2DAA2D;gBAC3D,iCAAiC;gBACjC,yEAAyE;gBACzE,kFAAkF;gBAClF,IACE,WAAW,CAAC,qBAAqB;oBACjC,kBAAkB,KAAK,MAAM,CAAC,CAAC,CAAC;oBAChC,gBAAgB,KAAK,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,eAAe,EACtE,CAAC;oBACD,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC;gBACD,OAAO,WAAW,CAAC;YACrB,CAAC,CAAC;YACJ,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAEjD,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,qBAAqB,CAAC,CAAC,cAAc,EAAE,aAAa,CAAC,EAAE;YACrF,gBAAgB,EAAE,+BAA+B;YACjD,aAAa,EAAE,gCAAgC;YAC/C,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChE,MAAM,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,eAAe,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CACT,oCAAoC,EACpC;gBACE,GAAG,aAAa;gBAChB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,EACD,MAAM,CAAC,MAAM,CACd,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,gBAAgB,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CACT,qCAAqC,EACrC;gBACE,GAAG,aAAa;gBAChB,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,EACD,OAAO,CAAC,MAAM,CACf,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAClE,MAAM,KAAK,CACT,GAAG,gBAAgB,IAAI,eAAe,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,8BAA8B,CAC3I,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;YACxE,MAAM,CAAC,IAAI,CAAC,+DAA+D,EAAE;gBAC3E,GAAG,aAAa;gBAChB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,qBAAqB;gBACzD,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC;aACtC,CAAC,CAAC;YAEH,OAAO,EAAC,GAAG,MAAM,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,CAAC,MAAM,EAAC,CAAC;QAC/G,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE;gBAC9D,GAAG,aAAa;gBAChB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC;aACvC,CAAC,CAAC;YAEH,OAAO,EAAC,GAAG,OAAO,CAAC,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,sBAAsB,EAAE,mBAAmB,CAAC,OAAO,EAAC,CAAC;QAChH,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE;gBAC9D,GAAG,aAAa;gBAChB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC;aACtC,CAAC,CAAC;YAEH,OAAO,EAAC,GAAG,MAAM,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,CAAC,MAAM,EAAC,CAAC;QAC/G,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACpE,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;gBACzD,iBAAiB,EAAE,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB;gBAC1F,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB;gBACvF,kBAAkB;gBAClB,gBAAgB;aACjB,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,YAAY,sBAAsB,QAAQ,EAAE;gBACtD,GAAG,aAAa;gBAChB,gBAAgB,EAAE,MAAM,CAAC,UAAU;gBACnC,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC;gBACjE,iBAAiB,EAAE,OAAO,CAAC,UAAU;gBACrC,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC,OAAO,CAAC;aACpE,CAAC,CAAC;YAEH,IAAI,sBAAsB,KAAK,mBAAmB,CAAC,MAAM,EAAE,CAAC;gBAC1D,OAAO;oBACL,GAAG,MAAM,CAAC,KAAK;oBACf,uBAAuB,EAAE,KAAK;oBAC9B,sBAAsB;iBACvB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO;oBACL,GAAG,OAAO,CAAC,KAAK;oBAChB,uBAAuB,EAAE,IAAI;oBAC7B,sBAAsB;iBACvB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAC9F,CAAC;IAED,OAAO;QACL,KAAK,CAAC,cAAc,CAAC,EAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAC;YAC1D,MAAM,EAAC,IAAI,EAAE,GAAG,IAAI,EAAC,GAAG,MAAM,gCAAgC,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YACnG,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;QACtB,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,EAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,GAAG,IAAI,EAAC;YACtG,MAAM,EAAC,IAAI,EAAE,GAAG,IAAI,EAAC,GAAG,MAAM,2BAA2B,CACvD,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,sBAAsB,EACtB,kBAAkB,EAClB,IAAI,CACL,CAAC;YAEF,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC7E,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBACjC,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC1B,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC;wBACrB,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAmC,CAAC,CAAC;wBACvF,OAAO;4BACL,IAAI,EAAE,YAAY;4BAClB,IAAI,EAAE,EAAC,GAAG,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAC;yBAC/C,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAkC,CAAC,CAAC;wBACtF,OAAO;4BACL,IAAI,EAAE,YAAY;4BAClB,IAAI,EAAE,EAAC,GAAG,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAC;yBAC/C,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,mBAAmB,CAAC,EAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAC;YACtD,MAAM,EAAC,IAAI,EAAE,OAAO,EAAC,GAAG,MAAM,2BAA2B,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YACxF,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9B,MAAM,KAAK,CAAC,gBAAgB,OAAO,0BAA0B,CAAC,CAAC;YACjE,CAAC;YAED,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC;gBACrB,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAmC,CAAC,CAAC;gBACvF,OAAO,EAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAC,OAAO,EAAC,EAAC,CAAC;YAC/C,CAAC;iBAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,EAAC,OAAO,EAAC,EAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAkC,CAAC,CAAC;gBACtF,OAAO,EAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAC,OAAO,EAAC,EAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,KAAK,CAAC,sBAAsB,CAAC,EAAC,cAAc,EAAE,IAAI,EAAC;YACjD,eAAe,EAAE,CAAC;YAElB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD;YAE9E,wGAAwG;YACxG,mGAAmG;YACnG,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC;YAChC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC1C,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC;YAC9D,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAEhD,MAAM,eAAe,GACnB,IAAI,IAAI,QAAQ;gBACd,CAAC,CAAC,8EAA8E;oBAC9E,aAAa;gBACf,CAAC,CAAC,gFAAgF;oBAChF,mEAAmE;oBACnE,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAE1C,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YACrD,MAAM,UAAU,GACd,UAAU,IAAI,QAAQ;gBACpB,CAAC,CAAC,8FAA8F;oBAC9F,aAAa;gBACf,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAEhD,+EAA+E;YAC/E,6EAA6E;YAC7E,wBAAwB,CAAC,UAAU,CAAC,CAAC;YACrC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YAEhC,8FAA8F;YAC9F,kEAAkE;YAClE,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAC;YAEpG,iDAAiD;YACjD,sEAAsE;YAEtE,OAAO;gBACL,IAAI,EAAE;oBACJ,IAAI;oBACJ,KAAK,EAAE,cAAc;oBACrB,eAAe;oBACf,MAAM,EAAE,aAAa,CAAC,0BAA0B;oBAChD,MAAM,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAC;iBAC5C;aACF,CAAC;QACJ,CAAC;QAED;;;;;;;;;;WAUG;QACH,KAAK,CAAC,gCAAgC,CAAC,EAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,EAAC;YAC/E,wHAAwH;YACxH,qFAAqF;YACrF,wDAAwD;YACxD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChD,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;gBACvC,OAAO,CAAC,qBAAqB,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC;gBACrD,qIAAqI;gBACrI,MAAM,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC;YAED,qFAAqF;YACrF,wBAAwB,CAAC,eAAe,CAAC,CAAC;YAC1C,mBAAmB,CAAC,eAAe,CAAC,CAAC;YAErC,MAAM,YAAY,GAAG,KAAK,CAAC,wBAAwB,CAAC,eAAe,CAAC,iBAAiB,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;YAC9G,IAAI,CAAC,YAAY;gBAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;YAExE,OAAO,EAAE,UAAU,CAAC,oCAAoC,CAAC,OAAO,CAC9D,YAAY,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,MAAM,CACxD,CAAC;YAEF,OAAO,EAAC,IAAI,EAAE,YAAY,EAAC,CAAC;QAC9B,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,EAAC,KAAK,EAAC;YAC7B,eAAe,EAAE,CAAC;YAElB,gGAAgG;YAChG,MAAM,YAAY,GAAG,yBAAyB,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC;YACnC,IAAI,YAAY,IAAI,CAAC,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACvE,MAAM,KAAK,CAAC,mBAAmB,KAAK,uBAAuB,YAAY,kBAAkB,SAAS,EAAE,CAAC,CAAC;YACxG,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxC,IAAI,KAAK,GAA0C,SAAS,CAAC;YAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC9C,MAAM,0BAA0B,GAAG,MAAM,GAAG,0BAA0B,CAAC;YACvE,MAAM,aAAa,GAAG,aAAa,EAAE,CAAC;YACtC,2EAA2E;YAC3E,mEAAmE;YACnE,IAAI,KAAK,KAAK,SAAS,IAAI,aAAa,GAAG,0BAA0B,EAAE,CAAC;gBACtE,6EAA6E;gBAC7E,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,EAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;gBAC/E,IAAI,OAAO,EAAE,CAAC;oBACZ,KAAK,GAAG,OAAO,CAAC;oBAChB,OAAO,EAAE,MAAM,CAAC,iCAAiC,CAAC,GAAG,EAAE,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,MAAM,CAAC,kCAAkC,CAAC,GAAG,EAAE,CAAC;gBAC3D,CAAC;YACH,CAAC;YAED,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxC,IAAI,OAAO,GAAqB,EAAE,CAAC;YAEnC,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;gBACzB,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAChD,CAAC;iBAAM,IAAI,KAAK,KAAK,UAAU,GAAG,CAAC,EAAE,CAAC;gBACpC,iGAAiG;gBACjG,oEAAoE;gBACpE,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,2BAA2B,EAAE,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,8DAA8D;gBAC9D,MAAM,KAAK,CAAC,6BAA6B,KAAK,iCAAiC,UAAU,EAAE,CAAC,CAAC;YAC/F,CAAC;YAED,+DAA+D;YAC/D,yFAAyF;YACzF,6FAA6F;YAC7F,iGAAiG;YACjG,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAEhE,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,MAAM,GAAoC,EAAE,CAAC;YACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;YACrF,CAAC;YAED,4FAA4F;YAC5F,oFAAoF;YACpF,MAAM,aAAa,GAAG,6BAA6B,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAEjG,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;oBACJ,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;oBACnC,mBAAmB,EAAE,iBAAiB,CAAC,IAAI,CAAC;iBAC7C;aACF,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,EAAC,KAAK,EAAE,OAAO,EAAC;YACtC,eAAe,EAAE,CAAC;YAElB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;YACjE,CAAC;YAED,gDAAgD;YAChD,MAAM,uBAAuB,EAAE,CAAC;YAEhC,mEAAmE;YACnE,uEAAuE;YACvE,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,iDAAiD,CAAC,CAAC;YAC7E,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAE5E,yFAAyF;YACzF,oCAAoC;YACpC,EAAE;YACF,4FAA4F;YAC5F,0FAA0F;YAC1F,gCAAgC;YAEhC,6FAA6F;YAC7F,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAChE,MAAM,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACpF,MAAM,MAAM,GAAoC,EAAE,CAAC;YACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAA8C,CAAC;gBACnG,IAAI,IAAI,EAAE,CAAC;oBACT,wFAAwF;oBACxF,2CAA2C;oBAC3C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,MAAM,aAAa,GAAG,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAExG,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;oBACJ,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;oBACnC,mBAAmB,EAAE,iBAAiB,CAAC,IAAI,CAAC;iBAC7C;aACF,CAAC;QACJ,CAAC;QAED;;;;;;;;;;;;WAYG;QACH,KAAK,CAAC,sBAAsB,CAAC,EAAC,KAAK,EAAE,OAAO,EAAC;YAC3C,eAAe,EAAE,CAAC;YAElB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;YACjE,CAAC;YAED,gDAAgD;YAChD,MAAM,uBAAuB,EAAE,CAAC;YAEhC,4GAA4G;YAC5G,6FAA6F;YAC7F,gDAAgD;YAChD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YAEnC,6FAA6F;YAC7F,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAChE,+GAA+G;YAC/G,MAAM,kBAAkB,GAAG,KAAK,CAAC,QAAQ,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;YAChF,MAAM,8BAA8B,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;YAE5E,MAAM,MAAM,GAAgC,EAAE,CAAC;YAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,6BAA6B,GAAG,8BAA8B,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBACzF,IAAI,6BAA6B,EAAE,CAAC;oBAClC,MAAM,CAAC,IAAI,CAAC;wBACV,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;wBAClB,cAAc;wBACd,6BAA6B;qBAC9B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,EAAC,mBAAmB,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAC;aACrD,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,wBAAwB,CAAC,EAAC,mBAAmB,EAAE,IAAI,EAAC;YACxD,eAAe,EAAE,CAAC;YAElB,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,qDAAqD;YAE9E,MAAM,WAAW,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAExE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,sCAAsC,IAAI,cAAc,WAAW,EAAE,CAAC,CAAC;YACjG,CAAC;YAED,OAAO,EAAE,UAAU,CAAC,6BAA6B,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC;YAEhH,OAAO;gBACL,IAAI,EAAE,SAAS;aAChB,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,yBAAyB,CAAC,EAAC,wBAAwB,EAAC;YACxD,eAAe,EAAE,CAAC;YAElB,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAC3C,MAAM,MAAM,GAAY,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAE/D,MAAM,OAAO,CAAC,GAAG,CACf,wBAAwB,CAAC,GAAG,CAAC,KAAK,EAAE,uBAAuB,EAAE,CAAC,EAAE,EAAE;gBAChE,IAAI,CAAC;oBACH,0BAA0B;oBAC1B,4EAA4E;oBAC5E,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,4BAA4B,CAAC,IAAI,EAAE,KAAK,EAAE,uBAAuB,CAAC,CAAC;oBAC5F,MAAM,EAAC,IAAI,EAAE,eAAe,EAAC,GAAG,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;oBAC/E,oHAAoH;oBACpH,4FAA4F;oBAC5F,wDAAwD;oBACxD,MAAM,EAAC,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAC,GAAG,MAAM,gCAAgC,CACnG,UAAU,EACV,OAAO,EACP,KAAK,EACL,IAAI,EACJ,eAAe,CAChB,CAAC;oBAEF,KAAK,CAAC,yBAAyB,CAAC,GAAG,CACjC,uBAAuB,CAAC,OAAO,CAAC,SAAS,EACzC,cAAc,EACd,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,EAC1C,gBAAgB,CACjB,CAAC;oBACF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,8BAA8B,CAAC,uBAAuB,CAAC,CAAC;oBACxF,OAAO,EAAE,iCAAiC,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;gBAC9F,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,MAAM,GAAG;wBACb,IAAI,EAAE,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;wBACzD,KAAK,EAAE,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK;qBAC5D,CAAC;oBAEF,IAAI,CAAC,YAAY,gBAAgB,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,oBAAoB,CAAC,wBAAwB,EAAE,CAAC;wBACnG,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC;wBAC/D,OAAO,CAAC,wCAAwC;oBAClD,CAAC;oBAED,MAAM,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,GAAG,EAAE,MAAM,EAAE,CAAU,CAAC,CAAC;oBAC9E,IAAI,CAAC,YAAY,gBAAgB,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;wBACtE,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,YAAY,CAAC,CAAC;oBAC1G,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CACH,CAAC;YAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,KAAK,CAAC,gDAAgD,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1G,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED;;;;;;WAMG;QACH,KAAK,CAAC,4BAA4B,CAAC,EAAC,qBAAqB,EAAC;YACxD,eAAe,EAAE,CAAC;YAElB,MAAM,MAAM,GAAY,EAAE,CAAC;YAE3B,MAAM,OAAO,CAAC,GAAG,CACf,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,oBAAoB,EAAE,CAAC,EAAE,EAAE;gBAC1D,IAAI,CAAC;oBACH,0BAA0B;oBAC1B,MAAM,EAAC,+BAA+B,EAAC,GAAG,MAAM,+CAA+C,CAC7F,KAAK,EACL,oBAAoB,EACpB,IAAI,CAAC,gCAAgC;qBACtC,CAAC;oBACF,KAAK,CAAC,4BAA4B,CAAC,GAAG,CACpC,oBAAoB,CAAC,OAAO,EAC5B,+BAA+B,CAAC,MAAM,CACvC,CAAC;oBACF,MAAM,OAAO,CAAC,2BAA2B,CAAC,oBAAoB,CAAC,CAAC;gBAClE,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,MAAM,GAAG;wBACb,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI;wBACpD,iBAAiB,EAAE,oBAAoB,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB;qBAC/E,CAAC;oBAEF,IACE,CAAC,YAAY,kBAAkB;wBAC/B,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAsB,CAAC,uCAAuC,EAC9E,CAAC;wBACD,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC;wBAC5D,OAAO,CAAC,wCAAwC;oBAClD,CAAC;oBAED,MAAM,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,GAAG,EAAE,MAAM,EAAE,CAAU,CAAC,CAAC;oBACjF,IAAI,CAAC,YAAY,kBAAkB,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;wBACxE,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,0BAA0B,EAAE,oBAAoB,EAAE,YAAY,CAAC,CAAC;oBAC1G,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CACH,CAAC;YAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,KAAK,CAAC,mDAAmD,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7G,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,4BAA4B,CAAC,EAAC,aAAa,EAAC;YAChD,eAAe,EAAE,CAAC;YAElB,MAAM,OAAO,CAAC,6BAA6B,CACzC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAC,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAC,EAAE,EAAE,CAAC,CAAC;gBAC7F,cAAc,EAAE,cAAc;gBAC9B,MAAM,EAAE,gCAAgC,CAAC,IAAI,EAAE,gBAAgB,EAAE,cAAc,CAAC;gBAChF,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,YAAY;aAC3B,CAAC,CAAC,CACJ,CAAC;YAEF,QAAQ;YACR,wFAAwF;YACxF,oBAAoB;YAEpB,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;oBACzC,OAAO,CAAC,sBAAsB,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;QAED;;;;;;;;;WASG;QACH,KAAK,CAAC,2BAA2B,CAAC,EAAC,aAAa,EAAC;YAC/C,eAAe,EAAE,CAAC;YAElB,2GAA2G;YAC3G,MAAM,IAAI,GAA4B,EAAE,CAAC;YACzC,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;gBAChC,KAAK,MAAM,cAAc,IAAI,GAAG,CAAC,oBAAoB,EAAE,CAAC;oBACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,0BAA0B,CAAC,CAAC;oBACvE,IAAI,CAAC,IAAI,CAAC;wBACR,cAAc,EAAE,GAAG,CAAC,cAAc;wBAClC,MAAM,EAAE,MAAM;wBACd,mHAAmH;wBACnH,IAAI,EAAE,uBAAuB,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;wBACjD,YAAY,EAAE,IAAI;qBACnB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,MAAM,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;YAEhD,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;oBACzC,OAAO,CAAC,qCAAqC,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;gBACtG,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,CAAC,qBAAqB,CAAC,EAAC,SAAS,EAAC;YACrC,MAAM,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC5E,CAAC;QAED,KAAK,CAAC,+BAA+B;YACnC,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,6BAA6B;YACjC,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,EAAC,KAAK,EAAE,OAAO,EAAC;YAChC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,IAAI,EAAE,EAAE;iBACT,CAAC;YACJ,CAAC;YACD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;YAC9C,IAAI,KAAK,GAAG,YAAY,GAAG,CAAC,IAAI,KAAK,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,QAAQ,CAChB,GAAG,EACH,iBAAiB,KAAK,6DAA6D,YAAY,EAAE,CAClG,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC5B,KAAK;oBACL,MAAM,EAAE,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;iBACjD,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,EAAC,aAAa,EAAC;YACrC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAC5B,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/C,CAAC;YAED,0DAA0D;YAC1D,6EAA6E;YAC7E,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;YAE9C,MAAM,qBAAqB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;gBAClE,MAAM,EAAC,MAAM,EAAC,GAAG,YAAY,CAAC,OAAO,CAAC;gBACtC,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnE,IAAI,cAAc,KAAK,SAAS;oBAAE,OAAO,KAAK,CAAC;gBAE/C,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;gBACnE,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAC3D,OAAO,CACL,MAAM,KAAK,QAAQ;oBACnB,MAAM,KAAK,gBAAgB;oBAC3B,MAAM,KAAK,gBAAgB;oBAC3B,MAAM,KAAK,gBAAgB;oBAC3B,MAAM,KAAK,qBAAqB;oBAChC,MAAM,KAAK,gBAAgB,CAC5B,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;YAEtE,MAAM,CAAC,KAAK,CAAC,wDAAwD,EAAE;gBACrE,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,qBAAqB,CAAC,MAAM;aACpC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}