@effect-app/infra 2.72.0 → 2.73.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,13 +6,13 @@ import { determineMethod, isCommand } from "@effect-app/infra/api/routing/utils"
6
6
  import { logError, reportError } from "@effect-app/infra/errorReporter"
7
7
  import { InfraLogger } from "@effect-app/infra/logger"
8
8
  import { Rpc, RpcGroup, RpcServer } from "@effect/rpc"
9
- import { Array, Cause, Context, Duration, Effect, Layer, type NonEmptyArray, type NonEmptyReadonlyArray, ParseResult, Predicate, Request, S, Schedule, Schema } from "effect-app"
9
+ import { Array, Cause, Duration, Effect, Layer, type NonEmptyArray, type NonEmptyReadonlyArray, ParseResult, Predicate, Request, S, Schedule, Schema } from "effect-app"
10
10
  import type { GetEffectContext, GetEffectError, RPCContextMap } from "effect-app/client/req"
11
11
  import { type HttpHeaders, HttpRouter } from "effect-app/http"
12
12
  import { pretty, typedKeysOf, typedValuesOf } from "effect-app/utils"
13
13
  import type { Contravariant } from "effect/Types"
14
14
  import { type YieldWrap } from "effect/Utils"
15
- import { type ContextProviderShape, makeMiddlewareLayer, makeRpc, type Middleware } from "./routing/DynamicMiddleware.js"
15
+ import { type Middleware } from "./routing/DynamicMiddleware.js"
16
16
 
17
17
  export * from "./routing/DynamicMiddleware.js"
18
18
 
@@ -191,28 +191,19 @@ export class Router extends HttpRouter.Tag("@effect-app/Rpc")<Router>() {}
191
191
  export const makeRouter = <
192
192
  MiddlewareR,
193
193
  RequestContextMap extends Record<string, RPCContextMap.Any>,
194
+ MakeMiddlewareE,
194
195
  MakeMiddlewareR,
195
- MiddlewareDependencies extends NonEmptyArray<Layer.Layer.Any>,
196
- ContextProviderId,
197
- ContextProviderKey extends string,
198
- ContextProviderA,
199
- MakeContextProviderE,
200
- MakeContextProviderR
196
+ ContextProviderA
201
197
  >(
202
198
  middleware: Middleware<
203
199
  MiddlewareR,
204
200
  RequestContextMap,
201
+ MakeMiddlewareE,
205
202
  MakeMiddlewareR,
206
- MiddlewareDependencies,
207
- ContextProviderId,
208
- ContextProviderKey,
209
- ContextProviderA,
210
- MakeContextProviderE,
211
- MakeContextProviderR
203
+ ContextProviderA
212
204
  >,
213
205
  devMode: boolean
214
206
  ) => {
215
- const middlewareLayer = makeMiddlewareLayer(middleware)
216
207
  function matchFor<
217
208
  const ModuleName extends string,
218
209
  const Resource extends Record<string, any>
@@ -375,7 +366,8 @@ export const makeRouter = <
375
366
  any
376
367
  > ? R
377
368
  : never,
378
- GetEffectContext<RequestContextMap, Resource[K]["config"]>
369
+ | GetEffectContext<RequestContextMap, Resource[K]["config"]>
370
+ | ContextProviderA
379
371
  >,
380
372
  HttpRouter.HttpRouter.Provided
381
373
  >
@@ -406,7 +398,7 @@ export const makeRouter = <
406
398
  : make
407
399
 
408
400
  const controllers = yield* make
409
- const rpc = yield* makeRpc(middleware)
401
+ const rpc = yield* middleware
410
402
 
411
403
  // return make.pipe(Effect.map((c) => controllers(c, dependencies)))
412
404
  const mapped = typedKeysOf(requestModules).reduce((acc, cur) => {
@@ -507,7 +499,7 @@ export const makeRouter = <
507
499
  Effect.Success<ReturnType<THandlers[K]["handler"]>>,
508
500
  | Effect.Error<ReturnType<THandlers[K]["handler"]>>
509
501
  | GetEffectError<RequestContextMap, Resource[K]["config"]>,
510
- | MiddlewareR
502
+ | Exclude<MiddlewareR, ContextProviderA>
511
503
  | Exclude<
512
504
  Effect.Context<ReturnType<THandlers[K]["handler"]>>,
513
505
  ContextProviderA | GetEffectContext<RequestContextMap, Resource[K]["config"]>
@@ -528,13 +520,10 @@ export const makeRouter = <
528
520
  }, {} as Record<string, any>)
529
521
  })) as unknown as Layer<
530
522
  { [K in keyof RequestModules]: Rpc.Handler<K> },
531
- | MakeContextProviderE
532
- | LayersUtils.GetLayersError<MiddlewareDependencies>
523
+ | Layer.Error<typeof middleware.Default>
533
524
  | LayersUtils.GetLayersError<MakeDependencies>,
534
525
  | RPCRouteR<typeof mapped[keyof typeof mapped]>
535
- | MakeContextProviderR
536
- | Exclude<MakeMiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
537
- | LayersUtils.GetLayersSuccess<MiddlewareDependencies>
526
+ | Layer.Context<typeof middleware.Default>
538
527
  | LayersUtils.GetLayersContext<MakeDependencies>
539
528
  >
540
529
 
@@ -556,20 +545,16 @@ export const makeRouter = <
556
545
  layer.pipe(
557
546
  Layer.provide([
558
547
  ...dependencies ?? [],
559
- middleware.contextProvider.Default,
560
- middlewareLayer
548
+ middleware.Default
561
549
  ] as any) as any
562
550
  )
563
551
  ) as (Layer.Layer<
564
552
  Router,
565
553
  | LayersUtils.GetLayersError<MakeDependencies>
566
554
  | MakeE
567
- | MakeContextProviderE
568
- | LayersUtils.GetLayersError<MiddlewareDependencies>,
555
+ | Layer.Error<typeof middleware.Default>,
569
556
  | LayersUtils.GetLayersContext<MakeDependencies>
570
- | Exclude<MakeMiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
571
- | LayersUtils.GetLayersContext<MiddlewareDependencies>
572
- | MakeContextProviderR
557
+ | Layer.Context<typeof middleware.Default>
573
558
  | Exclude<MakeR, LayersUtils.GetLayersSuccess<MakeDependencies>>
574
559
  >)
575
560
 
@@ -607,12 +592,9 @@ export const makeRouter = <
607
592
  RouterShape<Resource>,
608
593
  | MakeErrors<Make>
609
594
  | LayersUtils.GetLayersError<Make["dependencies"]>
610
- | LayersUtils.GetLayersError<MiddlewareDependencies>
611
- | MakeContextProviderE,
595
+ | Layer.Error<typeof middleware.Default>,
612
596
  | LayersUtils.GetLayersContext<Make["dependencies"]>
613
- | Exclude<MakeMiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
614
- | LayersUtils.GetLayersContext<MiddlewareDependencies>
615
- | MakeContextProviderR
597
+ | Layer.Context<typeof middleware.Default>
616
598
  | Exclude<
617
599
  MakeContext<Make>,
618
600
  LayersUtils.GetLayersSuccess<Make["dependencies"]>
@@ -643,12 +625,9 @@ export const makeRouter = <
643
625
  RouterShape<Resource>,
644
626
  | MakeErrors<Make>
645
627
  | LayersUtils.GetLayersError<Make["dependencies"]>
646
- | LayersUtils.GetLayersError<MiddlewareDependencies>
647
- | MakeContextProviderE,
628
+ | Layer.Error<typeof middleware.Default>,
648
629
  | LayersUtils.GetLayersContext<Make["dependencies"]>
649
- | Exclude<MakeMiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
650
- | LayersUtils.GetLayersContext<MiddlewareDependencies>
651
- | MakeContextProviderR
630
+ | Layer.Context<typeof middleware.Default>
652
631
  | Exclude<
653
632
  MakeContext<Make>,
654
633
  LayersUtils.GetLayersSuccess<Make["dependencies"]>
@@ -679,12 +658,9 @@ export const makeRouter = <
679
658
  RouterShape<Resource>,
680
659
  | MakeErrors<Make>
681
660
  | LayersUtils.GetLayersError<Make["dependencies"]>
682
- | LayersUtils.GetLayersError<MiddlewareDependencies>
683
- | MakeContextProviderE,
661
+ | Layer.Error<typeof middleware.Default>,
684
662
  | LayersUtils.GetLayersContext<Make["dependencies"]>
685
- | Exclude<MakeMiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
686
- | LayersUtils.GetLayersContext<MiddlewareDependencies>
687
- | MakeContextProviderR
663
+ | Layer.Context<typeof middleware.Default>
688
664
  | Exclude<
689
665
  MakeContext<Make>,
690
666
  LayersUtils.GetLayersSuccess<Make["dependencies"]>
@@ -715,12 +691,9 @@ export const makeRouter = <
715
691
  RouterShape<Resource>,
716
692
  | MakeErrors<Make>
717
693
  | LayersUtils.GetLayersError<Make["dependencies"]>
718
- | LayersUtils.GetLayersError<MiddlewareDependencies>
719
- | MakeContextProviderE,
694
+ | Layer.Error<typeof middleware.Default>,
720
695
  | LayersUtils.GetLayersContext<Make["dependencies"]>
721
- | Exclude<MakeMiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
722
- | LayersUtils.GetLayersContext<MiddlewareDependencies>
723
- | MakeContextProviderR
696
+ | Layer.Context<typeof middleware.Default>
724
697
  | Exclude<
725
698
  MakeContext<Make>,
726
699
  LayersUtils.GetLayersSuccess<Make["dependencies"]>
@@ -751,12 +724,9 @@ export const makeRouter = <
751
724
  RouterShape<Resource>,
752
725
  | MakeErrors<Make>
753
726
  | LayersUtils.GetLayersError<Make["dependencies"]>
754
- | LayersUtils.GetLayersError<MiddlewareDependencies>
755
- | MakeContextProviderE,
727
+ | Layer.Error<typeof middleware.Default>,
756
728
  | LayersUtils.GetLayersContext<Make["dependencies"]>
757
- | Exclude<MakeMiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
758
- | LayersUtils.GetLayersContext<MiddlewareDependencies>
759
- | MakeContextProviderR
729
+ | Layer.Context<typeof middleware.Default>
760
730
  | Exclude<
761
731
  MakeContext<Make>,
762
732
  LayersUtils.GetLayersSuccess<Make["dependencies"]>
@@ -785,12 +755,9 @@ export const makeRouter = <
785
755
  RouterShape<Resource>,
786
756
  | MakeErrors<Make>
787
757
  | LayersUtils.GetLayersError<Make["dependencies"]>
788
- | LayersUtils.GetLayersError<MiddlewareDependencies>
789
- | MakeContextProviderE,
758
+ | Layer.Error<typeof middleware.Default>,
790
759
  | LayersUtils.GetLayersContext<Make["dependencies"]>
791
- | Exclude<MakeMiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
792
- | LayersUtils.GetLayersContext<MiddlewareDependencies>
793
- | MakeContextProviderR
760
+ | Layer.Context<typeof middleware.Default>
794
761
  | Exclude<
795
762
  MakeContext<Make>,
796
763
  LayersUtils.GetLayersSuccess<Make["dependencies"]>
@@ -822,12 +789,9 @@ export const makeRouter = <
822
789
  RouterShape<Resource>,
823
790
  | MakeErrors<Make>
824
791
  | LayersUtils.GetLayersError<Make["dependencies"]>
825
- | LayersUtils.GetLayersError<MiddlewareDependencies>
826
- | MakeContextProviderE,
792
+ | Layer.Error<typeof middleware.Default>,
827
793
  | LayersUtils.GetLayersContext<Make["dependencies"]>
828
- | Exclude<MakeMiddlewareR, LayersUtils.GetLayersSuccess<MiddlewareDependencies>>
829
- | LayersUtils.GetLayersContext<MiddlewareDependencies>
830
- | MakeContextProviderR
794
+ | Layer.Context<typeof middleware.Default>
831
795
  | Exclude<
832
796
  MakeContext<Make>,
833
797
  LayersUtils.GetLayersSuccess<Make["dependencies"]>
@@ -940,44 +904,3 @@ export const RequestCacheLayers = Layer.mergeAll(
940
904
  Layer.setRequestCaching(true),
941
905
  Layer.setRequestBatching(true)
942
906
  )
943
-
944
- type GetContext<T> = T extends Context.Context<infer Y> ? Y : never
945
-
946
- export const contextMaker = <
947
- // TDeps is an array of services whit Default implementation
948
- // each service is an effect which builds some context for each request
949
- TDeps extends Array.NonEmptyReadonlyArray<
950
- & (
951
- | Context.Tag<any, Effect<Context.Context<any>, any, any> & { _tag: any }>
952
- | Context.Tag<any, Effect<Context.Context<any>, never, never> & { _tag: any }>
953
- )
954
- & {
955
- new(...args: any[]): any
956
- Default: Layer.Layer<Effect<Context.Context<any>> & { _tag: any }, any, any>
957
- }
958
- >
959
- >(...deps: TDeps): {
960
- dependencies: { [K in keyof TDeps]: TDeps[K]["Default"] }
961
- effect: Effect.Effect<
962
- Effect.Effect<
963
- Context.Context<GetContext<Effect.Success<InstanceType<TDeps[number]>>>>,
964
- Effect.Error<InstanceType<TDeps[number]>>,
965
- Effect.Context<InstanceType<TDeps[number]>>
966
- >,
967
- never,
968
- InstanceType<TDeps[number]>
969
- >
970
- } => ({
971
- dependencies: deps.map((_) => _.Default) as any,
972
- effect: Effect.gen(function*() {
973
- const services = yield* Effect.all(deps)
974
- // services are effects which return some Context.Context<...>
975
- return Effect.all(services as any[]).pipe(
976
- Effect.map((_) => Context.mergeAll(..._ as any))
977
- )
978
- }) as any
979
- })
980
-
981
- export class EmptyContextMaker extends Effect.Service<EmptyContextMaker>()("EmptyContextMaker", {
982
- succeed: Effect.succeed(Context.empty()) satisfies ContextProviderShape<never>
983
- }) {}
@@ -7,7 +7,7 @@ import { Console, Context, Effect, Layer, S } from "effect-app"
7
7
  import { type GetEffectContext, InvalidStateError, makeRpcClient, type RPCContextMap, UnauthorizedError } from "effect-app/client"
8
8
  import { HttpServerRequest } from "effect-app/http"
9
9
  import { Class, TaggedError } from "effect-app/Schema"
10
- import { makeMiddleware } from "../src/api/routing/DynamicMiddleware.js"
10
+ import { ContextProvider, makeMiddleware, mergeContextProviders } from "../src/api/routing/DynamicMiddleware.js"
11
11
  import { SomeService } from "./query.test.js"
12
12
 
13
13
  class UserProfile extends Context.assignTag<UserProfile, UserProfile>("UserProfile")(
@@ -28,13 +28,32 @@ export interface CTX {
28
28
  export class Some extends Context.TagMakeId("Some", Effect.succeed({ a: 1 }))<Some>() {}
29
29
 
30
30
  // @effect-diagnostics-next-line missingEffectServiceDependency:off
31
- export class ContextMaker extends Effect.Service<ContextMaker>()("ContextMaker", {
31
+ const contextProvider = ContextProvider({
32
32
  effect: Effect.gen(function*() {
33
33
  yield* SomeService
34
- return Effect.sync(() => Context.make(Some, new Some({ a: 1 })))
34
+ return Effect.gen(function*() {
35
+ yield* HttpServerRequest.HttpServerRequest
36
+ // yield* Str2 // not allowed
37
+ return Context.make(Some, new Some({ a: 1 }))
38
+ })
39
+ })
40
+ })
41
+
42
+ // @effect-diagnostics-next-line missingEffectServiceDependency:off
43
+ class MyContextProvider extends Effect.Service<MyContextProvider>()("MyContextProvider", {
44
+ effect: Effect.gen(function*() {
45
+ yield* SomeService
46
+ return Effect.gen(function*() {
47
+ yield* HttpServerRequest.HttpServerRequest
48
+ // yield* Str2 // not allowed
49
+ return Context.make(Some, new Some({ a: 1 }))
50
+ })
35
51
  })
36
52
  }) {}
37
53
 
54
+ const merged = mergeContextProviders(MyContextProvider)
55
+ export const contextProvider2 = ContextProvider(merged)
56
+
38
57
  export type RequestContextMap = {
39
58
  allowAnonymous: RPCContextMap.Inverted<"userProfile", UserProfile, typeof NotLoggedInError>
40
59
  // TODO: not boolean but `string[]`
@@ -46,7 +65,7 @@ const Str2 = Context.GenericTag<"str2", "str">("str2")
46
65
 
47
66
  const middleware = makeMiddleware<RequestContextMap, HttpServerRequest.HttpServerRequest>()({
48
67
  dependencies: [Layer.effect(Str2, Str)],
49
- contextProvider: ContextMaker,
68
+ contextProvider,
50
69
  execute: (maker) =>
51
70
  Effect.gen(function*() {
52
71
  return maker((_schema, handler, moduleName) => (req, headers) => {
@@ -1 +1 @@
1
- {"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAc,MAAM,+BAA+B,CAAA;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAW,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,KAAK,gBAAgB,EAAoC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAClI,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;;;;;;;;AAE7C,cAAM,WAAY,SAAQ,gBAIzB;CACA;;;;;;AAED,cAAM,gBAAiB,SAAQ,qBAE7B;CAAG;AAEL,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAA2D;CAAG;;;;AAGxF,qBAAa,YAAa,SAAQ,iBAKhC;CAAG;AAEL,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,gBAAgB,CAAC,CAAA;IAE3F,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AA+CD,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG/B,CAAA;;;;;;;;;;AAEF,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;AACtE,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;;;AAEtE,qBAAa,WAAY,SAAQ,gBAEV;CAAG;;;;;;;;;;;;AAgB1B,qBAAa,YAAa,SAAQ,iBAET;CAAG;;;;;;;;;;;;AAE5B,qBAAa,aAAc,SAAQ,kBAEA;CAAG;;;;;AAItC,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;AAEL,eAAO,MAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAE,QAAQ;;;;;2HAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qFAAiC,CAAA"}
1
+ {"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAc,MAAM,+BAA+B,CAAA;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAW,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,EAAE,KAAK,gBAAgB,EAAoC,KAAK,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAClI,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;;;;;;;;AAE7C,cAAM,WAAY,SAAQ,gBAIzB;CACA;;;;;;AAED,cAAM,gBAAiB,SAAQ,qBAE7B;CAAG;AAEL,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAA2D;CAAG;AA2BxF,eAAO,MAAM,gBAAgB;;CAA0B,CAAA;AAEvD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,gBAAgB,CAAC,CAAA;IAE3F,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACvF,CAAA;AA+CD,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,cAAc,CAAC,EAAE,IAAI,CAAA;IACrB,iEAAiE;IACjE,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B,CAAA;AACD,eAAO,MAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAG/B,CAAA;;;;;;;;;;AAEF,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;AACtE,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;;;AAEtE,qBAAa,WAAY,SAAQ,gBAEV;CAAG;;;;;;;;;;;;AAgB1B,qBAAa,YAAa,SAAQ,iBAET;CAAG;;;;;;;;;;;;AAE5B,qBAAa,aAAc,SAAQ,kBAEA;CAAG;;;;;AAItC,qBAAa,gBAAiB,SAAQ,qBAKpC;CAAG;;;;;AASL,qBAAa,aAAc,SAAQ,kBAOjC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAKrC;CAAG;AAEL,eAAO,MAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAE,QAAQ;;;;;2HAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qFAAiC,CAAA"}