pp-command-bus 1.4.0 → 1.5.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.
- package/README.md +172 -64
- package/dist/command-bus/command-bus.spec.js +24 -29
- package/dist/command-bus/command-bus.spec.js.map +1 -1
- package/dist/command-bus/command.d.ts +22 -3
- package/dist/command-bus/command.js +17 -2
- package/dist/command-bus/command.js.map +1 -1
- package/dist/command-bus/job/job-processor.spec.js +15 -16
- package/dist/command-bus/job/job-processor.spec.js.map +1 -1
- package/dist/command-bus/logging/command-logger.spec.js +13 -14
- package/dist/command-bus/logging/command-logger.spec.js.map +1 -1
- package/dist/command-bus/rpc/payload-compression.service.d.ts +3 -4
- package/dist/command-bus/rpc/payload-compression.service.js +17 -20
- package/dist/command-bus/rpc/payload-compression.service.js.map +1 -1
- package/dist/command-bus/rpc/payload-compression.service.spec.js +20 -23
- package/dist/command-bus/rpc/payload-compression.service.spec.js.map +1 -1
- package/dist/command-bus/rpc/rpc-coordinator.spec.js +3 -4
- package/dist/command-bus/rpc/rpc-coordinator.spec.js.map +1 -1
- package/dist/command-bus/types/index.d.ts +14 -1
- package/dist/command-bus/worker/worker-benchmark.js +3 -4
- package/dist/command-bus/worker/worker-benchmark.js.map +1 -1
- package/dist/examples/auto-config.demo.js +8 -8
- package/dist/examples/auto-config.demo.js.map +1 -1
- package/dist/examples/rpc-compression.demo.js +32 -37
- package/dist/examples/rpc-compression.demo.js.map +1 -1
- package/dist/examples/rpc-resilience.demo.d.ts +8 -4
- package/dist/examples/rpc-resilience.demo.js +31 -33
- package/dist/examples/rpc-resilience.demo.js.map +1 -1
- package/dist/examples/rpc-throughput.demo.js +24 -22
- package/dist/examples/rpc-throughput.demo.js.map +1 -1
- package/dist/examples/rpc.demo.js +47 -53
- package/dist/examples/rpc.demo.js.map +1 -1
- package/dist/pp-command-bus-1.5.0.tgz +0 -0
- package/package.json +1 -1
- package/dist/pp-command-bus-1.4.0.tgz +0 -0
package/README.md
CHANGED
|
@@ -271,12 +271,9 @@ const commandBus = new CommandBus(config);
|
|
|
271
271
|
### 2. Definiowanie komend
|
|
272
272
|
|
|
273
273
|
```typescript
|
|
274
|
-
class CreateUserCommand extends Command {
|
|
275
|
-
constructor(
|
|
276
|
-
|
|
277
|
-
public readonly name: string,
|
|
278
|
-
) {
|
|
279
|
-
super();
|
|
274
|
+
class CreateUserCommand extends Command<{ email: string; name: string }> {
|
|
275
|
+
constructor(payload: { email: string; name: string }) {
|
|
276
|
+
super(payload);
|
|
280
277
|
}
|
|
281
278
|
}
|
|
282
279
|
```
|
|
@@ -285,10 +282,11 @@ class CreateUserCommand extends Command {
|
|
|
285
282
|
|
|
286
283
|
```typescript
|
|
287
284
|
commandBus.handle(CreateUserCommand, async (command) => {
|
|
288
|
-
|
|
285
|
+
const { name, email } = command.__payload;
|
|
286
|
+
console.log(`Creating user: ${name} (${email})`);
|
|
289
287
|
|
|
290
288
|
// Twoja logika biznesowa
|
|
291
|
-
const user = await createUser(
|
|
289
|
+
const user = await createUser(email, name);
|
|
292
290
|
|
|
293
291
|
// Zwróć wynik (opcjonalnie)
|
|
294
292
|
return { userId: user.id };
|
|
@@ -298,7 +296,10 @@ commandBus.handle(CreateUserCommand, async (command) => {
|
|
|
298
296
|
### 4. Wysyłanie komend (Fire-and-forget)
|
|
299
297
|
|
|
300
298
|
```typescript
|
|
301
|
-
const command = new CreateUserCommand(
|
|
299
|
+
const command = new CreateUserCommand({
|
|
300
|
+
email: 'jan.kowalski@example.com',
|
|
301
|
+
name: 'Jan Kowalski'
|
|
302
|
+
});
|
|
302
303
|
|
|
303
304
|
// Wyślij komendę bez oczekiwania na wynik
|
|
304
305
|
await commandBus.dispatch(command);
|
|
@@ -549,7 +550,10 @@ Wysyła komendę do kolejki bez oczekiwania na wynik (fire-and-forget).
|
|
|
549
550
|
4. Natychmiastowy return
|
|
550
551
|
|
|
551
552
|
```typescript
|
|
552
|
-
await commandBus.dispatch(new CreateUserCommand(
|
|
553
|
+
await commandBus.dispatch(new CreateUserCommand({
|
|
554
|
+
email: 'email@example.com',
|
|
555
|
+
name: 'Jan Kowalski'
|
|
556
|
+
}));
|
|
553
557
|
```
|
|
554
558
|
|
|
555
559
|
#### `call<T>(command: Command, timeout?: number): Promise<T>`
|
|
@@ -582,7 +586,8 @@ Rejestruje handler dla określonej klasy komendy. Tylko jeden handler per typ ko
|
|
|
582
586
|
|
|
583
587
|
```typescript
|
|
584
588
|
commandBus.handle(CreateUserCommand, async (command) => {
|
|
585
|
-
const
|
|
589
|
+
const { email, name } = command.__payload;
|
|
590
|
+
const user = await createUser(email, name);
|
|
586
591
|
return { userId: user.id };
|
|
587
592
|
});
|
|
588
593
|
```
|
|
@@ -603,23 +608,105 @@ await commandBus.close();
|
|
|
603
608
|
|
|
604
609
|
### Command
|
|
605
610
|
|
|
606
|
-
Klasa bazowa dla wszystkich komend. Każda komenda dziedziczy po `Command
|
|
611
|
+
Klasa bazowa dla wszystkich komend. Każda komenda dziedziczy po `Command<T>` gdzie `T` to typ danych biznesowych:
|
|
612
|
+
|
|
613
|
+
```typescript
|
|
614
|
+
class MyCommand extends Command<{ data: string }> {
|
|
615
|
+
constructor(payload: { data: string }) {
|
|
616
|
+
super(payload);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
// Uzycie
|
|
621
|
+
const cmd = new MyCommand({ data: 'hello' });
|
|
622
|
+
console.log(cmd.__payload.data); // 'hello'
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
#### Struktura Komendy
|
|
626
|
+
|
|
627
|
+
Kazda komenda po serializacji ma nastepujaca strukture:
|
|
628
|
+
|
|
629
|
+
```typescript
|
|
630
|
+
{
|
|
631
|
+
"__name": "MyCommand", // Nazwa klasy komendy
|
|
632
|
+
"__id": "550e8400-e29b-41d4-a716-446655440000", // UUID komendy
|
|
633
|
+
"__time": 1706347200000, // Timestamp utworzenia (ms)
|
|
634
|
+
"__payload": { // Dane biznesowe komendy
|
|
635
|
+
"data": "hello"
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
#### Opis Pol Komendy
|
|
641
|
+
|
|
642
|
+
| Pole | Typ | Opis |
|
|
643
|
+
|------|-----|------|
|
|
644
|
+
| `__name` | `string` | Nazwa klasy komendy (automatycznie ustawiana z `constructor.name`). Uzywana do routowania do odpowiedniego handlera. |
|
|
645
|
+
| `__id` | `string` | Unikalny identyfikator komendy (UUID v4). Generowany automatycznie przy tworzeniu komendy. Uzywany do korelacji RPC i logowania. |
|
|
646
|
+
| `__time` | `number` | Timestamp utworzenia komendy w milisekundach (`Date.now()`). Uzywany do audytu i debugowania. |
|
|
647
|
+
| `__payload` | `T` | Dane biznesowe komendy. Wszystkie dane specyficzne dla komendy powinny byc przechowywane tutaj. Typ `T` jest generyczny i definiowany przy tworzeniu klasy komendy. |
|
|
648
|
+
|
|
649
|
+
#### Przyklad Definicji Komendy
|
|
607
650
|
|
|
608
651
|
```typescript
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
652
|
+
// Komenda z prostym payloadem
|
|
653
|
+
class CreateUserCommand extends Command<{ name: string; email: string }> {
|
|
654
|
+
constructor(payload: { name: string; email: string }) {
|
|
655
|
+
super(payload);
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
// Komenda ze zlozonym payloadem
|
|
660
|
+
class ProcessOrderCommand extends Command<{
|
|
661
|
+
orderId: string;
|
|
662
|
+
items: Array<{ productId: string; quantity: number }>;
|
|
663
|
+
shippingAddress: {
|
|
664
|
+
street: string;
|
|
665
|
+
city: string;
|
|
666
|
+
postalCode: string;
|
|
667
|
+
};
|
|
668
|
+
}> {
|
|
669
|
+
constructor(payload: {
|
|
670
|
+
orderId: string;
|
|
671
|
+
items: Array<{ productId: string; quantity: number }>;
|
|
672
|
+
shippingAddress: { street: string; city: string; postalCode: string };
|
|
673
|
+
}) {
|
|
674
|
+
super(payload);
|
|
612
675
|
}
|
|
613
676
|
}
|
|
677
|
+
|
|
678
|
+
// Uzycie
|
|
679
|
+
const createUser = new CreateUserCommand({
|
|
680
|
+
name: 'Jan Kowalski',
|
|
681
|
+
email: 'jan@example.com'
|
|
682
|
+
});
|
|
683
|
+
|
|
684
|
+
console.log(createUser.__name); // 'CreateUserCommand'
|
|
685
|
+
console.log(createUser.__id); // '550e8400-e29b-41d4-...'
|
|
686
|
+
console.log(createUser.__time); // 1706347200000
|
|
687
|
+
console.log(createUser.__payload.name); // 'Jan Kowalski'
|
|
688
|
+
console.log(createUser.__payload.email); // 'jan@example.com'
|
|
614
689
|
```
|
|
615
690
|
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
691
|
+
#### Dostep do Danych w Handlerze
|
|
692
|
+
|
|
693
|
+
```typescript
|
|
694
|
+
commandBus.handle(CreateUserCommand, async (command) => {
|
|
695
|
+
// Dostep do danych biznesowych przez __payload
|
|
696
|
+
const { name, email } = command.__payload;
|
|
697
|
+
|
|
698
|
+
// Dostep do metadanych komendy
|
|
699
|
+
console.log(`Processing command ${command.__id} (${command.__name})`);
|
|
700
|
+
console.log(`Created at: ${new Date(command.__time).toISOString()}`);
|
|
701
|
+
|
|
702
|
+
// Logika biznesowa
|
|
703
|
+
const user = await createUser(name, email);
|
|
704
|
+
return { userId: user.id };
|
|
705
|
+
});
|
|
706
|
+
```
|
|
620
707
|
|
|
621
708
|
**Metody statyczne**:
|
|
622
|
-
- `reconstructDates(obj)` - rekonstrukcja
|
|
709
|
+
- `reconstructDates(obj)` - rekonstrukcja obiektow Date z serializowanych danych (uzywane wewnetrznie przez JobProcessor)
|
|
623
710
|
|
|
624
711
|
### CommandBusConfig
|
|
625
712
|
|
|
@@ -642,19 +729,19 @@ interface CommandBusConfigOptions {
|
|
|
642
729
|
|
|
643
730
|
## Przykłady Użycia
|
|
644
731
|
|
|
645
|
-
### Podstawowy
|
|
732
|
+
### Podstawowy przyklad z RPC
|
|
646
733
|
|
|
647
734
|
```typescript
|
|
648
735
|
import { CommandBus, CommandBusConfig, Command } from 'pp-command-bus';
|
|
649
736
|
|
|
650
|
-
// Definicja komendy
|
|
651
|
-
class CalculateCommand extends Command
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
) {
|
|
657
|
-
super();
|
|
737
|
+
// Definicja komendy z payloadem
|
|
738
|
+
class CalculateCommand extends Command<{
|
|
739
|
+
a: number;
|
|
740
|
+
b: number;
|
|
741
|
+
operation: 'add' | 'multiply';
|
|
742
|
+
}> {
|
|
743
|
+
constructor(payload: { a: number; b: number; operation: 'add' | 'multiply' }) {
|
|
744
|
+
super(payload);
|
|
658
745
|
}
|
|
659
746
|
}
|
|
660
747
|
|
|
@@ -666,64 +753,69 @@ const commandBus = new CommandBus(config);
|
|
|
666
753
|
|
|
667
754
|
// Rejestracja handlera
|
|
668
755
|
commandBus.handle(CalculateCommand, async (command) => {
|
|
669
|
-
|
|
756
|
+
const { a, b, operation } = command.__payload;
|
|
757
|
+
console.log(`Calculating: ${a} ${operation} ${b}`);
|
|
670
758
|
|
|
671
|
-
switch (
|
|
759
|
+
switch (operation) {
|
|
672
760
|
case 'add':
|
|
673
|
-
return
|
|
761
|
+
return a + b;
|
|
674
762
|
case 'multiply':
|
|
675
|
-
return
|
|
763
|
+
return a * b;
|
|
676
764
|
}
|
|
677
765
|
});
|
|
678
766
|
|
|
679
767
|
// Fire-and-forget
|
|
680
|
-
await commandBus.dispatch(new CalculateCommand(5, 3, 'add'));
|
|
768
|
+
await commandBus.dispatch(new CalculateCommand({ a: 5, b: 3, operation: 'add' }));
|
|
681
769
|
|
|
682
770
|
// RPC - czekamy na wynik
|
|
683
771
|
const result = await commandBus.call<number>(
|
|
684
|
-
new CalculateCommand(5, 3, 'multiply'),
|
|
772
|
+
new CalculateCommand({ a: 5, b: 3, operation: 'multiply' }),
|
|
685
773
|
5000 // timeout 5s
|
|
686
774
|
);
|
|
687
775
|
console.log(`Result: ${result}`); // Result: 15
|
|
688
776
|
```
|
|
689
777
|
|
|
690
|
-
###
|
|
778
|
+
### Rownolegle wywolania RPC
|
|
691
779
|
|
|
692
780
|
```typescript
|
|
693
|
-
// Wiele
|
|
781
|
+
// Wiele rownoległych RPC calls
|
|
694
782
|
const [result1, result2, result3] = await Promise.all([
|
|
695
|
-
commandBus.call<number>(new CalculateCommand(10, 5, 'add')),
|
|
696
|
-
commandBus.call<UserInfo>(new GetUserInfoCommand('user-1')),
|
|
697
|
-
commandBus.call<ValidationResult>(new ValidateUserCommand('jan@example.com', 30)),
|
|
783
|
+
commandBus.call<number>(new CalculateCommand({ a: 10, b: 5, operation: 'add' })),
|
|
784
|
+
commandBus.call<UserInfo>(new GetUserInfoCommand({ userId: 'user-1' })),
|
|
785
|
+
commandBus.call<ValidationResult>(new ValidateUserCommand({ email: 'jan@example.com', age: 30 })),
|
|
698
786
|
]);
|
|
699
787
|
|
|
700
788
|
console.log('All results:', { result1, result2, result3 });
|
|
701
789
|
```
|
|
702
790
|
|
|
703
|
-
###
|
|
791
|
+
### Obsluga bledow
|
|
704
792
|
|
|
705
793
|
```typescript
|
|
706
794
|
commandBus.handle(CreateUserCommand, async (command) => {
|
|
707
795
|
try {
|
|
796
|
+
const { email, name } = command.__payload;
|
|
797
|
+
|
|
708
798
|
// Walidacja
|
|
709
|
-
if (!
|
|
799
|
+
if (!email.includes('@')) {
|
|
710
800
|
throw new Error('Invalid email format');
|
|
711
801
|
}
|
|
712
802
|
|
|
713
|
-
const user = await createUser(
|
|
803
|
+
const user = await createUser(email, name);
|
|
714
804
|
return { userId: user.id };
|
|
715
805
|
} catch (error) {
|
|
716
|
-
// Loguj
|
|
806
|
+
// Loguj blad
|
|
717
807
|
console.error('Failed to create user:', error);
|
|
718
808
|
|
|
719
|
-
//
|
|
809
|
+
// Rzuc blad - BullMQ sprobuje ponownie (maxAttempts)
|
|
720
810
|
throw error;
|
|
721
811
|
}
|
|
722
812
|
});
|
|
723
813
|
|
|
724
|
-
//
|
|
814
|
+
// Obsluga bledow w RPC
|
|
725
815
|
try {
|
|
726
|
-
const result = await commandBus.call(
|
|
816
|
+
const result = await commandBus.call(
|
|
817
|
+
new CreateUserCommand({ email: 'invalid-email', name: 'Jan' })
|
|
818
|
+
);
|
|
727
819
|
} catch (error) {
|
|
728
820
|
console.error('RPC failed:', error.message);
|
|
729
821
|
}
|
|
@@ -886,18 +978,20 @@ const result = await commandBus.call<UserCreatedResult>(command);
|
|
|
886
978
|
|
|
887
979
|
### 2. Idempotentne handlery
|
|
888
980
|
|
|
889
|
-
Handlery powinny
|
|
981
|
+
Handlery powinny byc idempotentne (wielokrotne wykonanie = ten sam rezultat):
|
|
890
982
|
|
|
891
983
|
```typescript
|
|
892
984
|
commandBus.handle(CreateUserCommand, async (command) => {
|
|
893
|
-
|
|
894
|
-
|
|
985
|
+
const { email, name } = command.__payload;
|
|
986
|
+
|
|
987
|
+
// Sprawdz czy uzytkownik juz istnieje
|
|
988
|
+
const existing = await findUserByEmail(email);
|
|
895
989
|
if (existing) {
|
|
896
|
-
return { userId: existing.id }; //
|
|
990
|
+
return { userId: existing.id }; // Zwroc istniejacego
|
|
897
991
|
}
|
|
898
992
|
|
|
899
|
-
//
|
|
900
|
-
const user = await createUser(
|
|
993
|
+
// Utworz nowego
|
|
994
|
+
const user = await createUser(email, name);
|
|
901
995
|
return { userId: user.id };
|
|
902
996
|
});
|
|
903
997
|
```
|
|
@@ -917,17 +1011,19 @@ const result2 = await commandBus.call(longRunningCommand, 60000); // 60s dla dł
|
|
|
917
1011
|
|
|
918
1012
|
```typescript
|
|
919
1013
|
commandBus.handle(CreateUserCommand, async (command) => {
|
|
920
|
-
|
|
921
|
-
|
|
1014
|
+
const { email, name } = command.__payload;
|
|
1015
|
+
|
|
1016
|
+
// Walidacja na poczatku
|
|
1017
|
+
if (!email || !email.includes('@')) {
|
|
922
1018
|
throw new Error('Invalid email');
|
|
923
1019
|
}
|
|
924
1020
|
|
|
925
|
-
if (!
|
|
1021
|
+
if (!name || name.length < 2) {
|
|
926
1022
|
throw new Error('Invalid name');
|
|
927
1023
|
}
|
|
928
1024
|
|
|
929
1025
|
// Logika biznesowa
|
|
930
|
-
return await createUser(
|
|
1026
|
+
return await createUser(email, name);
|
|
931
1027
|
});
|
|
932
1028
|
```
|
|
933
1029
|
|
|
@@ -935,14 +1031,16 @@ commandBus.handle(CreateUserCommand, async (command) => {
|
|
|
935
1031
|
|
|
936
1032
|
```typescript
|
|
937
1033
|
commandBus.handle(CreateUserCommand, async (command) => {
|
|
1034
|
+
const { email, name } = command.__payload;
|
|
1035
|
+
|
|
938
1036
|
console.log('Processing CreateUserCommand', {
|
|
939
1037
|
commandId: command.__id,
|
|
940
1038
|
timestamp: command.__time,
|
|
941
|
-
email:
|
|
1039
|
+
email: email,
|
|
942
1040
|
});
|
|
943
1041
|
|
|
944
1042
|
// Logika biznesowa
|
|
945
|
-
const user = await createUser(
|
|
1043
|
+
const user = await createUser(email, name);
|
|
946
1044
|
|
|
947
1045
|
console.log('User created successfully', {
|
|
948
1046
|
commandId: command.__id,
|
|
@@ -960,6 +1058,13 @@ commandBus.handle(CreateUserCommand, async (command) => {
|
|
|
960
1058
|
```typescript
|
|
961
1059
|
import { CommandBus, CommandBusConfig, Command } from 'pp-command-bus';
|
|
962
1060
|
|
|
1061
|
+
// Definicja komendy testowej
|
|
1062
|
+
class CreateUserCommand extends Command<{ email: string; name: string }> {
|
|
1063
|
+
constructor(payload: { email: string; name: string }) {
|
|
1064
|
+
super(payload);
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
|
|
963
1068
|
describe('User Commands', () => {
|
|
964
1069
|
let commandBus: CommandBus;
|
|
965
1070
|
|
|
@@ -967,7 +1072,7 @@ describe('User Commands', () => {
|
|
|
967
1072
|
const config = new CommandBusConfig({
|
|
968
1073
|
redisUrl: 'redis://localhost:6379',
|
|
969
1074
|
logger: console,
|
|
970
|
-
logLevel: 'error', // Tylko
|
|
1075
|
+
logLevel: 'error', // Tylko bledy w testach
|
|
971
1076
|
});
|
|
972
1077
|
|
|
973
1078
|
commandBus = new CommandBus(config);
|
|
@@ -983,7 +1088,10 @@ describe('User Commands', () => {
|
|
|
983
1088
|
});
|
|
984
1089
|
|
|
985
1090
|
it('should create user', async () => {
|
|
986
|
-
const command = new CreateUserCommand(
|
|
1091
|
+
const command = new CreateUserCommand({
|
|
1092
|
+
email: 'test@example.com',
|
|
1093
|
+
name: 'Test User'
|
|
1094
|
+
});
|
|
987
1095
|
const result = await commandBus.call<{ userId: string }>(command, 5000);
|
|
988
1096
|
|
|
989
1097
|
expect(result.userId).toBeDefined();
|
|
@@ -992,9 +1100,9 @@ describe('User Commands', () => {
|
|
|
992
1100
|
|
|
993
1101
|
it('should handle multiple commands in parallel', async () => {
|
|
994
1102
|
const commands = [
|
|
995
|
-
new CreateUserCommand('user1@example.com', 'User 1'),
|
|
996
|
-
new CreateUserCommand('user2@example.com', 'User 2'),
|
|
997
|
-
new CreateUserCommand('user3@example.com', 'User 3'),
|
|
1103
|
+
new CreateUserCommand({ email: 'user1@example.com', name: 'User 1' }),
|
|
1104
|
+
new CreateUserCommand({ email: 'user2@example.com', name: 'User 2' }),
|
|
1105
|
+
new CreateUserCommand({ email: 'user3@example.com', name: 'User 3' }),
|
|
998
1106
|
];
|
|
999
1107
|
|
|
1000
1108
|
const results = await Promise.all(
|
|
@@ -63,25 +63,20 @@ jest.mock('ioredis', () => {
|
|
|
63
63
|
});
|
|
64
64
|
// Przykładowa komenda testowa
|
|
65
65
|
class TestCommand extends command_1.default {
|
|
66
|
-
constructor(
|
|
67
|
-
super();
|
|
68
|
-
this.data = data;
|
|
66
|
+
constructor(payload) {
|
|
67
|
+
super(payload);
|
|
69
68
|
}
|
|
70
69
|
}
|
|
71
70
|
// Inna komenda do testowania
|
|
72
71
|
class AnotherTestCommand extends command_1.default {
|
|
73
|
-
constructor(
|
|
74
|
-
super();
|
|
75
|
-
this.value = value;
|
|
72
|
+
constructor(payload) {
|
|
73
|
+
super(payload);
|
|
76
74
|
}
|
|
77
75
|
}
|
|
78
76
|
// Komenda do testowania RPC
|
|
79
77
|
class CalculateCommand extends command_1.default {
|
|
80
|
-
constructor(
|
|
81
|
-
super();
|
|
82
|
-
this.a = a;
|
|
83
|
-
this.b = b;
|
|
84
|
-
this.operation = operation;
|
|
78
|
+
constructor(payload) {
|
|
79
|
+
super(payload);
|
|
85
80
|
}
|
|
86
81
|
}
|
|
87
82
|
/**
|
|
@@ -140,7 +135,7 @@ describe('CommandBus', () => {
|
|
|
140
135
|
describe('dispatch', () => {
|
|
141
136
|
it('powinno dodać komendę do kolejki', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
142
137
|
// Given
|
|
143
|
-
const command = new TestCommand('test data');
|
|
138
|
+
const command = new TestCommand({ data: 'test data' });
|
|
144
139
|
// When
|
|
145
140
|
yield commandBus.dispatch(command);
|
|
146
141
|
// Then - sprawdź że Queue został utworzony z Redis connection
|
|
@@ -152,7 +147,7 @@ describe('CommandBus', () => {
|
|
|
152
147
|
__id: command.__id,
|
|
153
148
|
__time: command.__time,
|
|
154
149
|
__compressed: false, // Mała komenda nie powinna być skompresowana
|
|
155
|
-
data: 'test data',
|
|
150
|
+
__payload: { data: 'test data' },
|
|
156
151
|
}), expect.objectContaining({
|
|
157
152
|
attempts: 1,
|
|
158
153
|
backoff: expect.objectContaining({
|
|
@@ -163,8 +158,8 @@ describe('CommandBus', () => {
|
|
|
163
158
|
}));
|
|
164
159
|
it('powinno używać tej samej kolejki dla tego samego typu komendy', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
165
160
|
// Given
|
|
166
|
-
const command1 = new TestCommand('data 1');
|
|
167
|
-
const command2 = new TestCommand('data 2');
|
|
161
|
+
const command1 = new TestCommand({ data: 'data 1' });
|
|
162
|
+
const command2 = new TestCommand({ data: 'data 2' });
|
|
168
163
|
// When
|
|
169
164
|
yield commandBus.dispatch(command1);
|
|
170
165
|
yield commandBus.dispatch(command2);
|
|
@@ -173,17 +168,17 @@ describe('CommandBus', () => {
|
|
|
173
168
|
expect(mockQueue.add).toHaveBeenCalledTimes(2);
|
|
174
169
|
expect(mockQueue.add).toHaveBeenNthCalledWith(1, expect.any(String), expect.objectContaining({
|
|
175
170
|
__name: 'TestCommand',
|
|
176
|
-
data: 'data 1',
|
|
171
|
+
__payload: { data: 'data 1' },
|
|
177
172
|
}), expect.any(Object));
|
|
178
173
|
expect(mockQueue.add).toHaveBeenNthCalledWith(2, expect.any(String), expect.objectContaining({
|
|
179
174
|
__name: 'TestCommand',
|
|
180
|
-
data: 'data 2',
|
|
175
|
+
__payload: { data: 'data 2' },
|
|
181
176
|
}), expect.any(Object));
|
|
182
177
|
}));
|
|
183
178
|
it('powinno tworzyć osobne kolejki dla różnych typów komend', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
184
179
|
// Given
|
|
185
|
-
const testCommand = new TestCommand('test');
|
|
186
|
-
const anotherCommand = new AnotherTestCommand(42);
|
|
180
|
+
const testCommand = new TestCommand({ data: 'test' });
|
|
181
|
+
const anotherCommand = new AnotherTestCommand({ value: 42 });
|
|
187
182
|
// When
|
|
188
183
|
yield commandBus.dispatch(testCommand);
|
|
189
184
|
yield commandBus.dispatch(anotherCommand);
|
|
@@ -192,11 +187,11 @@ describe('CommandBus', () => {
|
|
|
192
187
|
expect(mockQueue.add).toHaveBeenCalledTimes(2);
|
|
193
188
|
expect(mockQueue.add).toHaveBeenNthCalledWith(1, expect.any(String), expect.objectContaining({
|
|
194
189
|
__name: 'TestCommand',
|
|
195
|
-
data: 'test',
|
|
190
|
+
__payload: { data: 'test' },
|
|
196
191
|
}), expect.any(Object));
|
|
197
192
|
expect(mockQueue.add).toHaveBeenNthCalledWith(2, expect.any(String), expect.objectContaining({
|
|
198
193
|
__name: 'AnotherTestCommand',
|
|
199
|
-
value: 42,
|
|
194
|
+
__payload: { value: 42 },
|
|
200
195
|
}), expect.any(Object));
|
|
201
196
|
}));
|
|
202
197
|
});
|
|
@@ -216,7 +211,7 @@ describe('CommandBus', () => {
|
|
|
216
211
|
it('powinno przetworzyć komendę przez handler', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
217
212
|
// Given
|
|
218
213
|
const handler = jest.fn().mockResolvedValue(undefined);
|
|
219
|
-
const command = new TestCommand('test data');
|
|
214
|
+
const command = new TestCommand({ data: 'test data' });
|
|
220
215
|
let workerProcessor;
|
|
221
216
|
bullmq_1.Worker.mockImplementation((_name, processor) => {
|
|
222
217
|
workerProcessor = processor;
|
|
@@ -245,7 +240,7 @@ describe('CommandBus', () => {
|
|
|
245
240
|
});
|
|
246
241
|
it('powinno obsłużyć błąd gdy brak handlera dla komendy', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
247
242
|
// Given
|
|
248
|
-
const command = new TestCommand('test');
|
|
243
|
+
const command = new TestCommand({ data: 'test' });
|
|
249
244
|
const handler = jest.fn().mockResolvedValue(undefined);
|
|
250
245
|
let workerProcessor;
|
|
251
246
|
bullmq_1.Worker.mockImplementation((_name, processor) => {
|
|
@@ -269,7 +264,7 @@ describe('CommandBus', () => {
|
|
|
269
264
|
describe('close', () => {
|
|
270
265
|
it('powinno zamknąć wszystkie kolejki i workery', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
271
266
|
// Given
|
|
272
|
-
const command = new TestCommand('test');
|
|
267
|
+
const command = new TestCommand({ data: 'test' });
|
|
273
268
|
yield commandBus.dispatch(command);
|
|
274
269
|
commandBus.handle(TestCommand, jest.fn());
|
|
275
270
|
yield waitForWorkerRegistration();
|
|
@@ -284,7 +279,7 @@ describe('CommandBus', () => {
|
|
|
284
279
|
it('powinno obsłużyć błąd połączenia', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
285
280
|
// Given
|
|
286
281
|
mockQueue.add.mockRejectedValueOnce(new Error('Connection failed'));
|
|
287
|
-
const command = new TestCommand('test');
|
|
282
|
+
const command = new TestCommand({ data: 'test' });
|
|
288
283
|
// When & Then
|
|
289
284
|
yield expect(commandBus.dispatch(command)).rejects.toThrow('Connection failed');
|
|
290
285
|
}));
|
|
@@ -302,7 +297,7 @@ describe('CommandBus', () => {
|
|
|
302
297
|
// When
|
|
303
298
|
commandBus.handle(TestCommand, handler);
|
|
304
299
|
yield waitForWorkerRegistration();
|
|
305
|
-
const command = new TestCommand('test');
|
|
300
|
+
const command = new TestCommand({ data: 'test' });
|
|
306
301
|
expect(workerProcessor).not.toBeNull();
|
|
307
302
|
const processor = workerProcessor;
|
|
308
303
|
yield expect(processor({
|
|
@@ -333,7 +328,7 @@ describe('CommandBus', () => {
|
|
|
333
328
|
it('RPC call() powinno dodać __rpcMetadata z unikalną replyQueue per wywołanie', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
334
329
|
// Given
|
|
335
330
|
const handler = jest.fn().mockResolvedValue(42);
|
|
336
|
-
const command = new CalculateCommand(5, 3, 'add');
|
|
331
|
+
const command = new CalculateCommand({ a: 5, b: 3, operation: 'add' });
|
|
337
332
|
mockQueue.add.mockResolvedValue({
|
|
338
333
|
id: 'test-job-id-123',
|
|
339
334
|
opts: {},
|
|
@@ -368,7 +363,7 @@ describe('CommandBus', () => {
|
|
|
368
363
|
it('powinno obsłużyć timeout RPC', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
369
364
|
// Given
|
|
370
365
|
const handler = jest.fn().mockResolvedValue(42);
|
|
371
|
-
const command = new CalculateCommand(5, 3, 'add');
|
|
366
|
+
const command = new CalculateCommand({ a: 5, b: 3, operation: 'add' });
|
|
372
367
|
commandBus.handle(CalculateCommand, handler);
|
|
373
368
|
yield waitForWorkerRegistration();
|
|
374
369
|
// When & Then
|
|
@@ -377,7 +372,7 @@ describe('CommandBus', () => {
|
|
|
377
372
|
}));
|
|
378
373
|
it('powinno mieć metodę call() zaimplementowaną', () => {
|
|
379
374
|
// Given
|
|
380
|
-
const command = new CalculateCommand(1, 2, 'add');
|
|
375
|
+
const command = new CalculateCommand({ a: 1, b: 2, operation: 'add' });
|
|
381
376
|
// When & Then - metoda call() powinna istnieć
|
|
382
377
|
expect(typeof commandBus.call).toBe('function');
|
|
383
378
|
// Test że metoda zwraca Promise (ale nie czekamy na wynik)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-bus.spec.js","sourceRoot":"","sources":["../../src/command-bus/command-bus.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,mCAAuC;AAEvC,oDAAiC;AACjC,qFAA2D;AAC3D,wDAAgC;AAEhC,cAAc;AACd,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEpB,eAAe;AACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;IACxB,MAAM,cAAc,GAAG;QACrB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QACjD,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QACnD,UAAU,EAAE,IAAI;aACb,EAAE,EAAE;aACJ,kBAAkB,CACjB,CAAC,QAAgB,EAAE,QAAqD,EAAE,EAAE;YAC1E,uDAAuD;YACvD,IAAI,QAAQ,EAAE,CAAC;gBACb,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC,CACF;QACH,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QACpD,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC9B,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,KAAa,EAAE,OAAqC,EAAE,EAAE;YAC1F,oDAAoD;YACpD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBACtB,YAAY,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,cAAc,CAAC;QACxB,CAAC,CAAC;QACF,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC/B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC9C,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;KAC7C,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;YACzC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACtC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,YAAY,CAAC;YAC9C,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACnC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,cAAc,CAAC;YACpD,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACvC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YAC9B,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YAChC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YAC/B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;SAC/C,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,8BAA8B;AAC9B,MAAM,WAAY,SAAQ,iBAAO;IAC/B,YAAmC,IAAY;QAC7C,KAAK,EAAE,CAAC;QADyB,SAAI,GAAJ,IAAI,CAAQ;IAE/C,CAAC;CACF;AAED,6BAA6B;AAC7B,MAAM,kBAAmB,SAAQ,iBAAO;IACtC,YAAmC,KAAa;QAC9C,KAAK,EAAE,CAAC;QADyB,UAAK,GAAL,KAAK,CAAQ;IAEhD,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,gBAAiB,SAAQ,iBAAO;IACpC,YACkB,CAAS,EACT,CAAS,EACT,SAAiB;QAEjC,KAAK,EAAE,CAAC;QAJQ,MAAC,GAAD,CAAC,CAAQ;QACT,MAAC,GAAD,CAAC,CAAQ;QACT,cAAS,GAAT,SAAS,CAAQ;IAGnC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,yBAAyB,GAAG,GAAkB,EAAE,CACpD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAErD,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,UAAsB,CAAC;IAC3B,IAAI,MAAwB,CAAC;IAC7B,IAAI,SAA6B,CAAC;IAClC,IAAI,UAA+B,CAAC;IAEpC,UAAU,CAAC,GAAG,EAAE;QACd,0BAA0B;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,uBAAuB;QACvB,MAAM,GAAG,IAAI,4BAAgB,CAAC;YAC5B,QAAQ,EAAE,wBAAwB;YAClC,WAAW,EAAE,CAAC;SACf,CAAC,CAAC;QAEH,aAAa;QACb,SAAS,GAAG;YACV,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC;YACvD,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC7C,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;SAClB,CAAC;QAEnC,cAAc;QACd,UAAU,GAAG;YACX,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC7C,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YAC9B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;SACb,CAAC;QAEpC,qBAAqB;QACpB,cAAwC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7E,eAA0C,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;QAEjF,UAAU,GAAG,IAAI,eAAU,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAS,EAAE;QACnB,qDAAqD;QACrD,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,iEAAiE;QACjE,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YACzB,iEAAiE;YACjE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yDAAyD;YACzD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAClF,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC,CAAA,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,kCAAkC,EAAE,GAAS,EAAE;YAChD,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;YAE7C,OAAO;YACP,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,8DAA8D;YAC9D,MAAM,CAAC,cAAK,CAAC,CAAC,oBAAoB,CAChC,eAAe,EACf,MAAM,CAAC,gBAAgB,CAAC;gBACtB,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;aAC/B,CAAC,CACH,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,oBAAoB,CACxC,aAAa,EACb,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,aAAa;gBACrB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,YAAY,EAAE,KAAK,EAAE,6CAA6C;gBAClE,IAAI,EAAE,WAAW;aAClB,CAAC,EACF,MAAM,CAAC,gBAAgB,CAAC;gBACtB,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC;oBAC/B,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,IAAI;iBACZ,CAAC;aACH,CAAC,CACH,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,GAAS,EAAE;YAC7E,QAAQ;YACR,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;YAE3C,OAAO;YACP,MAAM,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEpC,OAAO;YACP,0DAA0D;YAC1D,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAC3C,CAAC,EACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,aAAa;gBACrB,IAAI,EAAE,QAAQ;aACf,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAC3C,CAAC,EACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,aAAa;gBACrB,IAAI,EAAE,QAAQ;aACf,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAS,EAAE;YACvE,QAAQ;YACR,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,cAAc,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAElD,OAAO;YACP,MAAM,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAE1C,OAAO;YACP,+DAA+D;YAC/D,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAC3C,CAAC,EACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,aAAa;gBACrB,IAAI,EAAE,MAAM;aACb,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAC3C,CAAC,EACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,oBAAoB;gBAC5B,KAAK,EAAE,EAAE;aACV,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,sCAAsC,EAAE,GAAS,EAAE;YACpD,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAE1B,OAAO;YACP,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,yBAAyB,EAAE,CAAC;YAElC,OAAO;YACP,MAAM,CAAC,eAAM,CAAC,CAAC,oBAAoB,CACjC,eAAe,EACf,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EACpB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC9B,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,mCAAmC;aACrE,CAAC,CACH,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAS,EAAE;YACzD,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAI,eAAiE,CAAC;YAErE,eAA0C,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;gBAClF,eAAe,GAAG,SAA+C,CAAC;gBAClE,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,OAAO;YACP,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,yBAAyB,EAAE,CAAC;YAElC,kCAAkC;YAClC,MAAM,eAAgB,CAAC;gBACrB,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,aAAa;aACpB,CAAC,CAAC;YAEH,OAAO;YACP,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,QAAQ;YACR,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAE3B,OAAO;YACP,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAEzC,4CAA4C;YAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAC5D,8CAA8C,CAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAS,EAAE;YACnE,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,eAAiE,CAAC;YAErE,eAA0C,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;gBAClF,eAAe,GAAG,SAA+C,CAAC;gBAClE,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,gCAAgC;YAChC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,yBAAyB,EAAE,CAAC;YAElC,gFAAgF;YAChF,MAAM,eAAe,GACnB,UACD,CAAC,eAAe,CAAC;YAClB,OAAO,eAAe,CAAC,aAAa,CAAC,CAAC;YAEtC,cAAc;YACd,MAAM,MAAM,CACV,eAAgB,CAAC;gBACf,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,aAAa;aACpB,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;QAC7D,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,6CAA6C,EAAE,GAAS,EAAE;YAC3D,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACnC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,MAAM,yBAAyB,EAAE,CAAC;YAElC,OAAO;YACP,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YAEzB,OAAO;YACP,sEAAsE;YACtE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC9C,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,kCAAkC,EAAE,GAAS,EAAE;YAChD,QAAQ;YACR,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;YAExC,cAAc;YACd,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAClF,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,qCAAqC,EAAE,GAAS,EAAE;YACnD,QAAQ;YACR,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC;YACrE,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC5E,IAAI,eAAe,GAAgD,IAAI,CAAC;YAEvE,eAA0C,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;gBAClF,eAAe,GAAG,SAA+C,CAAC;gBAClE,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,OAAO;YACP,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,yBAAyB,EAAE,CAAC;YAElC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;YAExC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,eAAgB,CAAC;YACnC,MAAM,MAAM,CACV,SAAS,CAAC;gBACR,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,aAAa;aACpB,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAEvC,OAAO;YACP,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAE9C,UAAU;YACV,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACpD,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,eAAe;YACf,MAAM,WAAW,GAAG,IAAI,eAAU,CAAC,MAAM,CAAC,CAAC;YAE3C,6DAA6D;YAC7D,MAAM,cAAc,GAAI,WAAkD;iBACvE,cAAyC,CAAC;YAC7C,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;YAClD,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;YAEnD,uCAAuC;YACvC,MAAM,CAAE,WAAkD,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE,CAAC;YAE3F,UAAU;YACV,WAAW,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,GAAS,EAAE;YAC1F,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAElD,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;gBAC9B,EAAE,EAAE,iBAAiB;gBACrB,IAAI,EAAE,EAAE;aACS,CAAC,CAAC;YAErB,UAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,yBAAyB,EAAE,CAAC;YAElC,OAAO;YACP,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAElD,+DAA+D;YAC/D,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YAExB,iGAAiG;YACjG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,oBAAoB,CACxC,kBAAkB,EAClB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,aAAa,EAAE,MAAM,CAAC,gBAAgB,CAAC;oBACrC,aAAa,EAAE,OAAO,CAAC,IAAI;oBAC3B,2DAA2D;oBAC3D,eAAe,EAAE,MAAM,CAAC,cAAc,CACpC,IAAI,MAAM,CAAC,+BAA+B,OAAO,CAAC,IAAI,GAAG,CAAC,CAC3D;oBACD,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;iBAC9B,CAAC;aACH,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;YAEF,8BAA8B;YAC9B,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,UAAU,CAAC,GAAG,EAAE;YACd,wBAAwB;YACxB,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;gBAC9B,EAAE,EAAE,iBAAiB;gBACrB,IAAI,EAAE,EAAE;aACS,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAS,EAAE;YAC5C,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAElD,UAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,yBAAyB,EAAE,CAAC;YAElC,cAAc;YACd,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB;iBACzD,OAAO,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;QACjE,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAElD,8CAA8C;YAC9C,MAAM,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEhD,2DAA2D;YAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAEvC,6CAA6C;YAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,iDAAiD,EAAE,GAAS,EAAE;YAC/D,mCAAmC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE9C,+BAA+B;YAC/B,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,QAAQ,CAAC,SAAS,EAAE,CAAC;YAErB,IAAI,CAAC;gBACH,gDAAgD;gBAChD,MAAM,gBAAgB,GAAG,IAAI,4BAAgB,CAAC;oBAC5C,QAAQ,EAAE,wBAAwB;oBAClC,WAAW,EAAE,CAAC;oBACd,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC;gBAEH,MAAM,iBAAiB,GAAG,IAAI,eAAU,CAAC,gBAAgB,CAAC,CAAC;gBAE3D,yDAAyD;gBACzD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACtC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACvC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBAExC,UAAU;gBACV,MAAM,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAClC,CAAC;oBAAS,CAAC;gBACT,eAAe;gBACf,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrB,OAAO,CAAC,WAAW,EAAE,CAAC;gBACtB,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAS,EAAE;YACrE,0EAA0E;YAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE9C,+BAA+B;YAC/B,QAAQ,CAAC,SAAS,EAAE,CAAC;YAErB,IAAI,CAAC;gBACH,gDAAgD;gBAChD,MAAM,gBAAgB,GAAG,IAAI,4BAAgB,CAAC;oBAC5C,QAAQ,EAAE,wBAAwB;oBAClC,WAAW,EAAE,CAAC;oBACd,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC;gBAEH,MAAM,iBAAiB,GAAG,IAAI,eAAU,CAAC,gBAAgB,CAAC,CAAC;gBAE3D,iEAAiE;gBACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAEpC,UAAU;gBACV,MAAM,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAClC,CAAC;oBAAS,CAAC;gBACT,eAAe;gBACf,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,gCAAgC;YAChC,MAAM,UAAU,GAAG,IAAI,4BAAgB,CAAC;gBACtC,QAAQ,EAAE,wBAAwB;gBAClC,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YAEH,2BAA2B;YAC3B,MAAM,OAAO,GAAG,IAAI,eAAU,CAAC,UAAU,CAAC,CAAC;YAE3C,gEAAgE;YAChE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAElD,2CAA2C;YAC3C,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"command-bus.spec.js","sourceRoot":"","sources":["../../src/command-bus/command-bus.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,mCAAuC;AAEvC,oDAAiC;AACjC,qFAA2D;AAC3D,wDAAgC;AAEhC,cAAc;AACd,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEpB,eAAe;AACf,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;IACxB,MAAM,cAAc,GAAG;QACrB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QACjD,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QACnD,UAAU,EAAE,IAAI;aACb,EAAE,EAAE;aACJ,kBAAkB,CACjB,CAAC,QAAgB,EAAE,QAAqD,EAAE,EAAE;YAC1E,uDAAuD;YACvD,IAAI,QAAQ,EAAE,CAAC;gBACb,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC,CACF;QACH,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QACpD,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC9B,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,KAAa,EAAE,OAAqC,EAAE,EAAE;YAC1F,oDAAoD;YACpD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBACtB,YAAY,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,cAAc,CAAC;QACxB,CAAC,CAAC;QACF,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC/B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QAC9C,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;KAC7C,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;YACzC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;YACtC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,YAAY,CAAC;YAC9C,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACnC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,cAAc,CAAC;YACpD,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACvC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YAC9B,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YAChC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YAC/B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;SAC/C,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,8BAA8B;AAC9B,MAAM,WAAY,SAAQ,iBAAyB;IACjD,YAAmB,OAAyB;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAED,6BAA6B;AAC7B,MAAM,kBAAmB,SAAQ,iBAA0B;IACzD,YAAmB,OAA0B;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,gBAAiB,SAAQ,iBAAoD;IACjF,YAAmB,OAAoD;QACrE,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,yBAAyB,GAAG,GAAkB,EAAE,CACpD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AAErD,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,UAAsB,CAAC;IAC3B,IAAI,MAAwB,CAAC;IAC7B,IAAI,SAA6B,CAAC;IAClC,IAAI,UAA+B,CAAC;IAEpC,UAAU,CAAC,GAAG,EAAE;QACd,0BAA0B;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,uBAAuB;QACvB,MAAM,GAAG,IAAI,4BAAgB,CAAC;YAC5B,QAAQ,EAAE,wBAAwB;YAClC,WAAW,EAAE,CAAC;SACf,CAAC,CAAC;QAEH,aAAa;QACb,SAAS,GAAG;YACV,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC;YACvD,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC7C,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;SAClB,CAAC;QAEnC,cAAc;QACd,UAAU,GAAG;YACX,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YAC7C,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YAC9B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;SACb,CAAC;QAEpC,qBAAqB;QACpB,cAAwC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7E,eAA0C,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;QAEjF,UAAU,GAAG,IAAI,eAAU,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAS,EAAE;QACnB,qDAAqD;QACrD,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,iEAAiE;QACjE,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YACzB,iEAAiE;YACjE,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yDAAyD;YACzD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBAClF,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC,CAAA,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,kCAAkC,EAAE,GAAS,EAAE;YAChD,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAEvD,OAAO;YACP,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEnC,8DAA8D;YAC9D,MAAM,CAAC,cAAK,CAAC,CAAC,oBAAoB,CAChC,eAAe,EACf,MAAM,CAAC,gBAAgB,CAAC;gBACtB,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;aAC/B,CAAC,CACH,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,oBAAoB,CACxC,aAAa,EACb,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,aAAa;gBACrB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,YAAY,EAAE,KAAK,EAAE,6CAA6C;gBAClE,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;aACjC,CAAC,EACF,MAAM,CAAC,gBAAgB,CAAC;gBACtB,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC;oBAC/B,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,IAAI;iBACZ,CAAC;aACH,CAAC,CACH,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,GAAS,EAAE;YAC7E,QAAQ;YACR,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACrD,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAErD,OAAO;YACP,MAAM,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEpC,OAAO;YACP,0DAA0D;YAC1D,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAC3C,CAAC,EACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,aAAa;gBACrB,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC9B,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAC3C,CAAC,EACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,aAAa;gBACrB,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC9B,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAS,EAAE;YACvE,QAAQ;YACR,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACtD,MAAM,cAAc,GAAG,IAAI,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAE7D,OAAO;YACP,MAAM,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAE1C,OAAO;YACP,+DAA+D;YAC/D,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAC3C,CAAC,EACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,aAAa;gBACrB,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;aAC5B,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAC3C,CAAC,EACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,MAAM,EAAE,oBAAoB;gBAC5B,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;aACzB,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,sCAAsC,EAAE,GAAS,EAAE;YACpD,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAE1B,OAAO;YACP,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,yBAAyB,EAAE,CAAC;YAElC,OAAO;YACP,MAAM,CAAC,eAAM,CAAC,CAAC,oBAAoB,CACjC,eAAe,EACf,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EACpB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC9B,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,mCAAmC;aACrE,CAAC,CACH,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAS,EAAE;YACzD,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YACvD,IAAI,eAAiE,CAAC;YAErE,eAA0C,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;gBAClF,eAAe,GAAG,SAA+C,CAAC;gBAClE,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,OAAO;YACP,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,yBAAyB,EAAE,CAAC;YAElC,kCAAkC;YAClC,MAAM,eAAgB,CAAC;gBACrB,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,aAAa;aACpB,CAAC,CAAC;YAEH,OAAO;YACP,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,QAAQ;YACR,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAE3B,OAAO;YACP,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAEzC,4CAA4C;YAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAC5D,8CAA8C,CAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAS,EAAE;YACnE,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,eAAiE,CAAC;YAErE,eAA0C,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;gBAClF,eAAe,GAAG,SAA+C,CAAC;gBAClE,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,gCAAgC;YAChC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,yBAAyB,EAAE,CAAC;YAElC,gFAAgF;YAChF,MAAM,eAAe,GACnB,UACD,CAAC,eAAe,CAAC;YAClB,OAAO,eAAe,CAAC,aAAa,CAAC,CAAC;YAEtC,cAAc;YACd,MAAM,MAAM,CACV,eAAgB,CAAC;gBACf,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,aAAa;aACpB,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;QAC7D,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,6CAA6C,EAAE,GAAS,EAAE;YAC3D,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAClD,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACnC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,MAAM,yBAAyB,EAAE,CAAC;YAElC,OAAO;YACP,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YAEzB,OAAO;YACP,sEAAsE;YACtE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAC9C,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,kCAAkC,EAAE,GAAS,EAAE;YAChD,QAAQ;YACR,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAElD,cAAc;YACd,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAClF,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,qCAAqC,EAAE,GAAS,EAAE;YACnD,QAAQ;YACR,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC;YACrE,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC5E,IAAI,eAAe,GAAgD,IAAI,CAAC;YAEvE,eAA0C,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;gBAClF,eAAe,GAAG,SAA+C,CAAC;gBAClE,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,OAAO;YACP,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,yBAAyB,EAAE,CAAC;YAElC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAElD,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,eAAgB,CAAC;YACnC,MAAM,MAAM,CACV,SAAS,CAAC;gBACR,IAAI,EAAE,OAAO;gBACb,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,aAAa;aACpB,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAEvC,OAAO;YACP,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAE9C,UAAU;YACV,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACpD,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,eAAe;YACf,MAAM,WAAW,GAAG,IAAI,eAAU,CAAC,MAAM,CAAC,CAAC;YAE3C,6DAA6D;YAC7D,MAAM,cAAc,GAAI,WAAkD;iBACvE,cAAyC,CAAC;YAC7C,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;YAClD,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;YAEnD,uCAAuC;YACvC,MAAM,CAAE,WAAkD,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE,CAAC;YAE3F,UAAU;YACV,WAAW,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4EAA4E,EAAE,GAAS,EAAE;YAC1F,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAEvE,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;gBAC9B,EAAE,EAAE,iBAAiB;gBACrB,IAAI,EAAE,EAAE;aACS,CAAC,CAAC;YAErB,UAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,yBAAyB,EAAE,CAAC;YAElC,OAAO;YACP,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAElD,+DAA+D;YAC/D,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YAExB,iGAAiG;YACjG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,oBAAoB,CACxC,kBAAkB,EAClB,MAAM,CAAC,gBAAgB,CAAC;gBACtB,aAAa,EAAE,MAAM,CAAC,gBAAgB,CAAC;oBACrC,aAAa,EAAE,OAAO,CAAC,IAAI;oBAC3B,2DAA2D;oBAC3D,eAAe,EAAE,MAAM,CAAC,cAAc,CACpC,IAAI,MAAM,CAAC,+BAA+B,OAAO,CAAC,IAAI,GAAG,CAAC,CAC3D;oBACD,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;iBAC9B,CAAC;aACH,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;YAEF,8BAA8B;YAC9B,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,UAAU,CAAC,GAAG,EAAE;YACd,wBAAwB;YACxB,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;gBAC9B,EAAE,EAAE,iBAAiB;gBACrB,IAAI,EAAE,EAAE;aACS,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAS,EAAE;YAC5C,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAEvE,UAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,yBAAyB,EAAE,CAAC;YAElC,cAAc;YACd,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB;iBACzD,OAAO,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;QACjE,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,QAAQ;YACR,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAEvE,8CAA8C;YAC9C,MAAM,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAEhD,2DAA2D;YAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAEvC,6CAA6C;YAC7C,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,iDAAiD,EAAE,GAAS,EAAE;YAC/D,mCAAmC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE9C,+BAA+B;YAC/B,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,QAAQ,CAAC,SAAS,EAAE,CAAC;YAErB,IAAI,CAAC;gBACH,gDAAgD;gBAChD,MAAM,gBAAgB,GAAG,IAAI,4BAAgB,CAAC;oBAC5C,QAAQ,EAAE,wBAAwB;oBAClC,WAAW,EAAE,CAAC;oBACd,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC;gBAEH,MAAM,iBAAiB,GAAG,IAAI,eAAU,CAAC,gBAAgB,CAAC,CAAC;gBAE3D,yDAAyD;gBACzD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACtC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACvC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBAExC,UAAU;gBACV,MAAM,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAClC,CAAC;oBAAS,CAAC;gBACT,eAAe;gBACf,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrB,OAAO,CAAC,WAAW,EAAE,CAAC;gBACtB,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAS,EAAE;YACrE,0EAA0E;YAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE9C,+BAA+B;YAC/B,QAAQ,CAAC,SAAS,EAAE,CAAC;YAErB,IAAI,CAAC;gBACH,gDAAgD;gBAChD,MAAM,gBAAgB,GAAG,IAAI,4BAAgB,CAAC;oBAC5C,QAAQ,EAAE,wBAAwB;oBAClC,WAAW,EAAE,CAAC;oBACd,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC;gBAEH,MAAM,iBAAiB,GAAG,IAAI,eAAU,CAAC,gBAAgB,CAAC,CAAC;gBAE3D,iEAAiE;gBACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAEpC,UAAU;gBACV,MAAM,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAClC,CAAC;oBAAS,CAAC;gBACT,eAAe;gBACf,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,gCAAgC;YAChC,MAAM,UAAU,GAAG,IAAI,4BAAgB,CAAC;gBACtC,QAAQ,EAAE,wBAAwB;gBAClC,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YAEH,2BAA2B;YAC3B,MAAM,OAAO,GAAG,IAAI,eAAU,CAAC,UAAU,CAAC,CAAC;YAE3C,gEAAgE;YAChE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAElD,2CAA2C;YAC3C,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|