@wishcore/wish-rpc 0.6.14 → 0.6.15

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.
@@ -1,143 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const rpc_client_1 = require("../src/rpc-client");
13
- const rpc_server_1 = require("../src/rpc-server");
14
- const expect = require("expect");
15
- describe('RPC test', function () {
16
- let server;
17
- let client;
18
- let session;
19
- before(function (done) {
20
- server = new rpc_server_1.Server();
21
- server.insertMethods({
22
- _fwupdate: {},
23
- fwupdate: {
24
- _debug: { doc: 'Bunch of debug related functions.' },
25
- debug: {
26
- _enable: { doc: 'Enable debug mode' },
27
- enable: (req, res) => {
28
- res.send('enabled');
29
- },
30
- _disable: { doc: 'Disable debug mode' },
31
- disable: (req, res) => {
32
- res.send('disabled');
33
- }
34
- },
35
- _state: { doc: 'Send a ucp write request' },
36
- state: (req, res) => {
37
- res.send('hello ' + req.args[0]);
38
- },
39
- _updateState: { doc: 'Send a ucp write request' },
40
- updateState: (req, res) => {
41
- res.send('That is done.');
42
- }
43
- },
44
- _list: { doc: 'Get a list' },
45
- list: function (req, res) {
46
- res.send(['hello', 'this', 'is', 'the', 'list', { that: 'is', great: true }]);
47
- }
48
- });
49
- server.insertMethods({
50
- _login: { doc: 'Login to service' },
51
- login: function (req, res) {
52
- res.emit('hello');
53
- res.send('world');
54
- },
55
- _logout: { doc: 'Logout from service' },
56
- logout: function (req, res) {
57
- res.send('done');
58
- }
59
- });
60
- session = server.open();
61
- /** Simulates a bidirectional connection between client and server */
62
- const connection = {
63
- write: (data) => {
64
- // console.log('about to send to rpc.parse:', data);
65
- server.parse(data, (data) => {
66
- // console.log('client received message:', data);
67
- client.messageReceived(data);
68
- }, {}, session);
69
- }
70
- };
71
- client = new rpc_client_1.Client(connection.write);
72
- done();
73
- });
74
- it('should make a basic request', function (done) {
75
- client.request('fwupdate.state', ['world'], function (err, data) {
76
- expect(data).toStrictEqual('hello world');
77
- done();
78
- });
79
- });
80
- it('should make a basic request deep', function (done) {
81
- client.request('fwupdate.debug.enable', [], function (err, data) {
82
- expect(data).toStrictEqual('enabled');
83
- done();
84
- });
85
- });
86
- xit('should throw error when no callback specified', function () {
87
- return __awaiter(this, void 0, void 0, function* () {
88
- yield client.request('fwupdate.state', ['world']);
89
- });
90
- });
91
- it('should list available methods', function (done) {
92
- client.request('methods', [], function (err, data) {
93
- //console.log("list of methods", err, data);
94
- try {
95
- expect(typeof data['login']).toStrictEqual('object');
96
- expect(data['fwupdate.debug.enable'].doc).toStrictEqual('Enable debug mode');
97
- }
98
- catch (e) {
99
- done(e);
100
- return;
101
- }
102
- done();
103
- });
104
- });
105
- it('should receive a signal and then end', function (done) {
106
- let state = 0;
107
- client.request('login', [], function (err, data) {
108
- if (err) {
109
- done(new Error('Problem in ' + JSON.stringify(data)));
110
- return;
111
- }
112
- if (state === 0) {
113
- if (data === 'hello') {
114
- state = 1;
115
- }
116
- else {
117
- // fail
118
- done(new Error('Expected "hello", but got "' + data + '"'));
119
- }
120
- }
121
- else if (state === 1) {
122
- if (data === 'world') {
123
- done();
124
- }
125
- else {
126
- // fail
127
- done(new Error('Expected "world", but got "' + data + '"'));
128
- }
129
- }
130
- });
131
- });
132
- it('should get an error', function (done) {
133
- client.request('nonexisting.method', [], function (err, data) {
134
- if (err) {
135
- done();
136
- }
137
- else {
138
- done(new Error('Got response to non-existing methods which was not an error.'));
139
- }
140
- });
141
- });
142
- });
143
- //# sourceMappingURL=test-rpc.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-rpc.spec.js","sourceRoot":"","sources":["../../test/test-rpc.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const rpc_client_1 = require("../src/rpc-client");
4
- const rpc_server_1 = require("../src/rpc-server");
5
- const expect = require("expect");
6
- describe('RPC Session', function () {
7
- let server;
8
- before(function (done) {
9
- server = new rpc_server_1.Server();
10
- server.insertMethods({
11
- _login: { doc: 'Login to service' },
12
- login: function (req, res) {
13
- res.send('world');
14
- },
15
- _signals: { doc: 'Get a list' },
16
- signals: function (req, res, context) {
17
- this.end = () => { console.log('signals cleanup...'); };
18
- res.emit('ok');
19
- },
20
- _logout: { doc: 'Logout from service' },
21
- logout: function (req, res) {
22
- res.send('done');
23
- }
24
- });
25
- done();
26
- });
27
- let client;
28
- let clientId;
29
- it('should set up client', function (done) {
30
- client = new rpc_client_1.Client((data) => {
31
- server.parse(data, function (data) {
32
- client.messageReceived(data);
33
- }, {}, clientId);
34
- });
35
- done();
36
- });
37
- it('should open and close session', function (done) {
38
- clientId = server.open();
39
- client.request('signals', [], (err, data) => {
40
- expect(data).toStrictEqual('ok');
41
- server.close(clientId);
42
- done();
43
- });
44
- });
45
- });
46
- //# sourceMappingURL=test-session.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-session.spec.js","sourceRoot":"","sources":["../../test/test-session.spec.ts"],"names":[],"mappings":";;AACA,kDAA2C;AAC3C,kDAA2C;AAC3C,iCAAiC;AAEjC,QAAQ,CAAC,aAAa,EAAE;IAEpB,IAAI,MAAc,CAAC;IAEnB,MAAM,CAAC,UAAU,IAAI;QACjB,MAAM,GAAG,IAAI,mBAAM,EAAE,CAAC;QAEtB,MAAM,CAAC,aAAa,CAAC;YACjB,MAAM,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE;YACnC,KAAK,EAAE,UAAU,GAAG,EAAE,GAAG;gBACrB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YACD,QAAQ,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE;YAC/B,OAAO,EAAE,UAAU,GAAG,EAAE,GAAG,EAAE,OAAO;gBAChC,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YACD,OAAO,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE;YACvC,MAAM,EAAE,UAAU,GAAG,EAAE,GAAG;gBACtB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,IAAI,MAAc,CAAC;IACnB,IAAI,QAAgB,CAAC;IAErB,EAAE,CAAC,sBAAsB,EAAE,UAAS,IAAI;QACpC,MAAM,GAAG,IAAI,mBAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACzB,MAAM,CAAC,KAAK,CAAC,IAAsB,EAAE,UAAS,IAAI;gBAC9C,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,IAAI,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,UAAU,IAAI;QAC9C,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACzB,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACxC,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACvB,IAAI,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,253 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fs_1 = require("fs");
4
- const rpc_client_1 = require("src/rpc-client");
5
- const rpc_server_1 = require("src/rpc-server");
6
- const stream_1 = require("stream");
7
- describe('RPC Stream Control', function () {
8
- let rpc;
9
- let client;
10
- let bufferServerWriteInterval;
11
- let bufferClientWriteInterval;
12
- before(function (done) {
13
- rpc = new rpc_server_1.Server();
14
- rpc.insertMethods({
15
- _streamUpload: {},
16
- streamUpload: function (req, res, context) {
17
- const filename = req.args[0].filename;
18
- this.pipe(fs_1.createWriteStream('./' + filename));
19
- },
20
- _streamDownload: {},
21
- streamDownload: function (req, res, context) {
22
- const filename = req.args[0].filename;
23
- fs_1.createReadStream('./' + filename).pipe(this);
24
- },
25
- _stream: {},
26
- stream: function (req, res, context) {
27
- if (context.stream) {
28
- // stream data
29
- if (req.payload) {
30
- context.stream.push(req.payload);
31
- res.emit({ _uack: true });
32
- return;
33
- }
34
- if (req._end) {
35
- //console.log("In streaming mode and got _end signal.", context.stream);
36
- context.stream.push(null);
37
- res.send({ _uend: true });
38
- }
39
- if (req._ack === 0 || req._ack) {
40
- context.canSend = true;
41
- if (context.emitReadable) {
42
- process.nextTick(function () { context.stream.emit('readable'); });
43
- context.emitReadable = false;
44
- }
45
- }
46
- }
47
- else {
48
- // open new stream
49
- const duplex = new RpcStream();
50
- const read = fs_1.createReadStream(__dirname + '/support/rsmith_single_blade_of_grass_ds.jpg');
51
- const write = fs_1.createWriteStream(__dirname + '/../stream-out.jpg');
52
- duplex.pipe(write);
53
- context.stream = duplex;
54
- res.emit({ _readable: true, _writable: true });
55
- context.offset = 0;
56
- context.canSend = true;
57
- read.on('readable', function () {
58
- for (;;) {
59
- if (!context.canSend) {
60
- break;
61
- }
62
- const chunk = read.read(1536);
63
- if (chunk === null) {
64
- break;
65
- }
66
- context.canSend = res.emit({ offset: context.offset, payload: chunk });
67
- context.offset += chunk.length;
68
- if (!context.canSend) {
69
- context.emitReadable = true;
70
- break;
71
- }
72
- }
73
- });
74
- read.on('end', function () {
75
- //console.log("End. No more readable signals needed....");
76
- res.emit({ _end: true });
77
- });
78
- }
79
- }
80
- });
81
- const clientWriteBuffer = [];
82
- const serverWriteBuffer = [];
83
- const bufferedServerWrite = function (data) {
84
- serverWriteBuffer.push(data);
85
- return serverWriteBuffer.length < 500;
86
- };
87
- bufferServerWriteInterval = setInterval(function () {
88
- //console.log('serverWrite', serverWriteBuffer.length);
89
- while (serverWriteBuffer.length > 0) {
90
- client.messageReceived(serverWriteBuffer[0], () => { });
91
- serverWriteBuffer.shift();
92
- }
93
- }, 15);
94
- const bufferedClientWrite = function (data) {
95
- clientWriteBuffer.push(data);
96
- return clientWriteBuffer.length < 500;
97
- };
98
- bufferClientWriteInterval = setInterval(function () {
99
- //console.log('clientWrite', clientWriteBuffer.length);
100
- while (clientWriteBuffer.length > 0) {
101
- rpc.parse(clientWriteBuffer[0], bufferedServerWrite, {});
102
- clientWriteBuffer.shift();
103
- }
104
- }, 15);
105
- client = new rpc_client_1.Client(bufferedClientWrite, { mtu: 128 });
106
- done();
107
- });
108
- after(function (done) {
109
- clearInterval(bufferServerWriteInterval);
110
- clearInterval(bufferClientWriteInterval);
111
- done();
112
- });
113
- it('should stream data to a client file stream', function (done) {
114
- let state = 0;
115
- let attached = false;
116
- client.request('stream', [], function (err, data, end) {
117
- if (data._end) {
118
- // download stream end signal from server
119
- this.stream.push(null);
120
- return;
121
- }
122
- if (data._uend) {
123
- // upload stream end signal from server
124
- console.log('upload complete.');
125
- return;
126
- }
127
- switch (state) {
128
- case 0:
129
- if (data._readable) {
130
- // server accepts data as stream
131
- state = 1;
132
- this.stream = new RpcClientStream();
133
- const out = fs_1.createWriteStream('./test-stream.data');
134
- out.on('close', function () { done(); });
135
- this.stream.pipe(out);
136
- this.len = 0;
137
- return true;
138
- }
139
- break;
140
- case 1:
141
- // server delivering data to stream
142
- if (data.payload) {
143
- this.len += data.payload.length;
144
- const canPush = this.stream.push(data.payload);
145
- if (!canPush) {
146
- if (!attached) {
147
- this.stream.on('more', () => { this.emit({ _ack: 9999 }); });
148
- attached = true;
149
- }
150
- }
151
- else {
152
- this.emit({ _ack: data.offset });
153
- }
154
- return canPush;
155
- }
156
- break;
157
- }
158
- return true;
159
- });
160
- });
161
- it('should stream data to a server stream', function (done) {
162
- client.request('stream', [], (err, data, end) => {
163
- this.canSend = true;
164
- this.offset = 0;
165
- if (data._uack) {
166
- this.canSend = true;
167
- this.in.emit('readable');
168
- return;
169
- }
170
- if (!data._writable) {
171
- if (data._readable || data._end || data.payload) {
172
- // we are not interested in the server stream
173
- return;
174
- }
175
- }
176
- if (data._uend) {
177
- done();
178
- return;
179
- }
180
- const clientFileStream = fs_1.createReadStream('./src/rpc-server.js');
181
- this.in = clientFileStream;
182
- clientFileStream.on('readable', () => {
183
- for (;;) {
184
- if (!this.canSend) {
185
- break;
186
- }
187
- const chunk = clientFileStream.read(1536);
188
- if (chunk === null) {
189
- break;
190
- }
191
- this.canSend = this.emit({ offset: this.offset, payload: chunk });
192
- this.offset += chunk.length;
193
- if (!this.canSend) {
194
- this.emitReadable = true;
195
- break;
196
- }
197
- }
198
- });
199
- clientFileStream.on('end', function () {
200
- this.emit({ _end: true });
201
- });
202
- return true;
203
- });
204
- });
205
- /*
206
- it('should stream data to a server stream', function(done) {
207
- client.request('stream', ['this is my file'], function(err, data, end) {
208
- fs.createReadStream('./4k-dji-video.mp4').pipe(this);
209
- });
210
- });
211
- */
212
- });
213
- /**
214
- * Duplex stream which:
215
- * - generates current time every sec for rstream
216
- * - outputs the write stream to stdout
217
- *
218
- * Stop the read stream by calling stopTimer
219
- */
220
- class RpcStream extends stream_1.Duplex {
221
- constructor(options) {
222
- super(options);
223
- this._read = function (n) {
224
- //console.log("reading data, ", n, 'bytes');
225
- };
226
- /* for write stream just ouptut to stdout */
227
- this._write = function (chunk, enc, cb) {
228
- console.log('====== write:', chunk.length);
229
- cb();
230
- };
231
- }
232
- }
233
- /**
234
- * Duplex stream which:
235
- * - generates current time every sec for rstream
236
- * - outputs the write stream to stdout
237
- *
238
- * Stop the read stream by calling stopTimer
239
- */
240
- class RpcClientStream extends stream_1.Duplex {
241
- constructor(options) {
242
- super(options);
243
- this._read = function (n) {
244
- //console.log("in read reading: ", this._readableState.reading);
245
- this.emit('more');
246
- };
247
- this._write = function (chunk, enc, cb) {
248
- //console.log('write: ', chunk.length);
249
- cb();
250
- };
251
- }
252
- }
253
- //# sourceMappingURL=test-stream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-stream.js","sourceRoot":"","sources":["../../test/test-stream.ts"],"names":[],"mappings":";;AAAA,2BAAyD;AACzD,+CAAwC;AACxC,+CAAwC;AACxC,mCAAgC;AAEhC,QAAQ,CAAC,oBAAoB,EAAE;IAE3B,IAAI,GAAG,CAAC;IACR,IAAI,MAAM,CAAC;IAEX,IAAI,yBAAyB,CAAC;IAC9B,IAAI,yBAAyB,CAAC;IAE9B,MAAM,CAAC,UAAU,IAAI;QACjB,GAAG,GAAG,IAAI,mBAAM,EAAE,CAAC;QAEnB,GAAG,CAAC,aAAa,CAAC;YACd,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,UAAS,GAAG,EAAE,GAAG,EAAE,OAAO;gBACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,sBAAiB,CAAC,IAAI,GAAC,QAAQ,CAAC,CAAC,CAAC;YAChD,CAAC;YACD,eAAe,EAAE,EAAE;YACnB,cAAc,EAAE,UAAS,GAAG,EAAE,GAAG,EAAE,OAAO;gBACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACtC,qBAAgB,CAAC,IAAI,GAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;YACD,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,UAAS,GAAG,EAAE,GAAG,EAAE,OAAO;gBAC9B,IAAI,OAAO,CAAC,MAAM,EAAE;oBAChB,cAAc;oBACd,IAAG,GAAG,CAAC,OAAO,EAAE;wBACZ,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBACjC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC1B,OAAO;qBACV;oBACD,IAAG,GAAG,CAAC,IAAI,EAAE;wBACT,wEAAwE;wBACxE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC7B;oBACD,IAAG,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE;wBAC3B,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;wBACvB,IAAG,OAAO,CAAC,YAAY,EAAE;4BACrB,OAAO,CAAC,QAAQ,CAAC,cAAa,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAClE,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC;yBAChC;qBACJ;iBACJ;qBAAM;oBACH,kBAAkB;oBAClB,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;oBAE/B,MAAM,IAAI,GAAG,qBAAgB,CAAC,SAAS,GAAG,8CAA8C,CAAC,CAAC;oBAC1F,MAAM,KAAK,GAAG,sBAAiB,CAAC,SAAS,GAAG,oBAAoB,CAAC,CAAC;oBAClE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAEnB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;oBAExB,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC/C,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;oBACnB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;oBAEvB,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE;wBAChB,SAAS;4BACL,IAAG,CAAC,OAAO,CAAC,OAAO,EAAE;gCACjB,MAAM;6BACT;4BACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAC9B,IAAI,KAAK,KAAK,IAAI,EAAE;gCAChB,MAAM;6BACT;4BACD,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;4BACvE,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;4BAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gCAClB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;gCAC5B,MAAM;6BACT;yBACJ;oBACL,CAAC,CAAC,CAAC;oBAEH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;wBACX,0DAA0D;wBAC1D,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC7B,CAAC,CAAC,CAAC;iBACN;YACL,CAAC;SACJ,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,EAAE,CAAC;QAC7B,MAAM,iBAAiB,GAAG,EAAE,CAAC;QAE7B,MAAM,mBAAmB,GAAG,UAAS,IAAI;YACrC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO,iBAAiB,CAAC,MAAM,GAAG,GAAG,CAAC;QAC1C,CAAC,CAAC;QAEF,yBAAyB,GAAG,WAAW,CAAC;YACpC,uDAAuD;YACvD,OAAM,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAChC,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAQ,CAAC,CAAC,CAAC;gBAC7D,iBAAiB,CAAC,KAAK,EAAE,CAAC;aAC7B;QACL,CAAC,EAAE,EAAE,CAAC,CAAC;QAGP,MAAM,mBAAmB,GAAG,UAAS,IAAI;YACrC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO,iBAAiB,CAAC,MAAM,GAAG,GAAG,CAAC;QAC1C,CAAC,CAAC;QAEF,yBAAyB,GAAG,WAAW,CAAC;YACpC,uDAAuD;YACvD,OAAO,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;gBACzD,iBAAiB,CAAC,KAAK,EAAE,CAAC;aAC7B;QACL,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,MAAM,GAAG,IAAI,mBAAM,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAEvD,IAAI,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,UAAS,IAAI;QACf,aAAa,CAAC,yBAAyB,CAAC,CAAC;QACzC,aAAa,CAAC,yBAAyB,CAAC,CAAC;QACzC,IAAI,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IAGH,EAAE,CAAC,4CAA4C,EAAE,UAAS,IAAI;QAC1D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAS,GAAG,EAAE,IAAI,EAAE,GAAG;YAChD,IAAG,IAAI,CAAC,IAAI,EAAE;gBACV,yCAAyC;gBACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvB,OAAO;aACV;YAED,IAAG,IAAI,CAAC,KAAK,EAAE;gBACX,uCAAuC;gBACvC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAChC,OAAO;aACV;YAED,QAAO,KAAK,EAAE;gBACV,KAAK,CAAC;oBACF,IAAG,IAAI,CAAC,SAAS,EAAE;wBACf,gCAAgC;wBAChC,KAAK,GAAG,CAAC,CAAC;wBACV,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;wBACpC,MAAM,GAAG,GAAG,sBAAiB,CAAC,oBAAoB,CAAC,CAAC;wBACpD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,cAAa,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACtB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;wBACb,OAAO,IAAI,CAAC;qBACf;oBACD,MAAM;gBACV,KAAK,CAAC;oBACF,mCAAmC;oBACnC,IAAG,IAAI,CAAC,OAAO,EAAE;wBACb,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;wBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC/C,IAAG,CAAC,OAAO,EAAE;4BACT,IAAG,CAAC,QAAQ,EAAE;gCACV,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gCAC7D,QAAQ,GAAG,IAAI,CAAC;6BACnB;yBACJ;6BAAM;4BACH,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;yBACpC;wBACD,OAAO,OAAO,CAAC;qBAClB;oBACD,MAAM;aACb;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAGH,EAAE,CAAC,uCAAuC,EAAE,UAAS,IAAI;QACrD,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAEhB,IAAG,IAAI,CAAC,KAAK,EAAE;gBACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACzB,OAAO;aACV;YAED,IAAG,CAAC,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;oBAC5C,6CAA6C;oBAC7C,OAAO;iBACV;aACJ;YAED,IAAG,IAAI,CAAC,KAAK,EAAE;gBACX,IAAI,EAAE,CAAC;gBACP,OAAO;aACV;YAED,MAAM,gBAAgB,GAAG,qBAAgB,CAAC,qBAAqB,CAAC,CAAC;YACjE,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC;YAC3B,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;gBACjC,SAAS;oBACL,IAAG,CAAC,IAAI,CAAC,OAAO,EAAE;wBACd,MAAM;qBACT;oBACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC1C,IAAI,KAAK,KAAK,IAAI,EAAE;wBAChB,MAAM;qBACT;oBACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;oBAClE,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;oBAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;wBACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wBACzB,MAAM;qBACT;iBACJ;YACL,CAAC,CAAC,CAAC;YAEH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;gBACvB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH;;;;;;MAME;AACN,CAAC,CAAC,CAAC;AAIH;;;;;;GAMG;AACH,MAAM,SAAU,SAAQ,eAAM;IAC1B,YAAY,OAAQ;QAChB,KAAK,CAAC,OAAO,CAAC,CAAC;QAGnB,UAAK,GAAG,UAAS,CAAC;YACd,4CAA4C;QAChD,CAAC,CAAC;QAEF,4CAA4C;QAC5C,WAAM,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3C,EAAE,EAAE,CAAC;QACT,CAAC,CAAC;IAVF,CAAC;CAWJ;AAED;;;;;;GAMG;AACH,MAAM,eAAgB,SAAQ,eAAM;IAChC,YAAY,OAAQ;QAChB,KAAK,CAAC,OAAO,CAAC,CAAC;QAGnB,UAAK,GAAG,UAAS,CAAC;YACd,gEAAgE;YAChE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC,CAAC;QAEF,WAAM,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,uCAAuC;YACvC,EAAE,EAAE,CAAC;QACT,CAAC,CAAC;IAVF,CAAC;CAWJ"}