tnp 16.100.8 → 16.100.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/bin/start.js +217 -217
  3. package/bin/t +5 -5
  4. package/bin/t-debug +5 -5
  5. package/bin/t-debug-brk +4 -4
  6. package/bin/tnp +5 -5
  7. package/bin/tnp-debug +5 -5
  8. package/bin/tnp-debug-brk +4 -4
  9. package/browser/README.md +24 -24
  10. package/browser/esm2022/lib/build-options.mjs +1 -1
  11. package/browser/esm2022/lib/project/abstract/project.mjs +15 -2
  12. package/browser/fesm2022/tnp.mjs +14 -1
  13. package/browser/fesm2022/tnp.mjs.map +1 -1
  14. package/browser/lib/build-options.d.ts +4 -0
  15. package/browser/lib/project/abstract/project.d.ts +1 -1
  16. package/cli.js +83068 -94757
  17. package/client/README.md +24 -24
  18. package/client/esm2022/lib/build-options.mjs +1 -1
  19. package/client/esm2022/lib/project/abstract/project.mjs +15 -2
  20. package/client/fesm2022/tnp.mjs +14 -1
  21. package/client/fesm2022/tnp.mjs.map +1 -1
  22. package/client/lib/build-options.d.ts +4 -0
  23. package/client/lib/project/abstract/project.d.ts +1 -1
  24. package/client/package.json +36 -37
  25. package/firedev.jsonc +589 -589
  26. package/lib/build-options.d.ts +4 -0
  27. package/lib/build-options.js.map +1 -1
  28. package/lib/project/abstract/project.d.ts +1 -1
  29. package/lib/project/abstract/project.js +14 -5
  30. package/lib/project/abstract/project.js.map +1 -1
  31. package/lib/project/cli/cli-NEW.backend.js +2 -2
  32. package/lib/project/cli/cli-NEW.backend.js.map +1 -1
  33. package/lib/project/features/files-recreation/files-recreator.js +1 -1
  34. package/lib/project/features/files-recreation/files-recreator.js.map +1 -1
  35. package/lib/project/features/package-json/package-json-core.backend.js +24 -19
  36. package/lib/project/features/package-json/package-json-core.backend.js.map +1 -1
  37. package/lib/project/features/package-json/package-json.js +5 -2
  38. package/lib/project/features/package-json/package-json.js.map +1 -1
  39. package/package.json +15 -15
  40. package/paste.vbs +52 -0
  41. package/path.txt +1 -1
  42. package/tmp-environment.json +32 -32
  43. package/websql/README.md +24 -24
  44. package/websql/esm2022/lib/build-options.mjs +1 -1
  45. package/websql/esm2022/lib/project/abstract/project.mjs +15 -2
  46. package/websql/fesm2022/tnp.mjs +14 -1
  47. package/websql/fesm2022/tnp.mjs.map +1 -1
  48. package/websql/lib/build-options.d.ts +4 -0
  49. package/websql/lib/project/abstract/project.d.ts +1 -1
  50. package/fsevents.node +0 -0
@@ -1,6 +1,6 @@
1
1
  THIS FILE IS GENERATED. THIS FILE IS GENERATED. THIS FILE IS GENERATED.
2
2
 
3
- Assets from this folder are being shipped with this npm package (tnp@16.100.8)
3
+ Assets from this folder are being shipped with this npm package (tnp@16.100.10)
4
4
  created from this project.
5
5
 
6
6
  THIS FILE IS GENERATED.THIS FILE IS GENERATED. THIS FILE IS GENERATED.
package/bin/start.js CHANGED
@@ -1,217 +1,217 @@
1
- //#region @backend
2
- //#region quick fixes
3
- Error.stackTraceLimit = 100;
4
- global.i0 = {
5
- defineInjectable: function () { }
6
- }
7
- const process= require('process');
8
- process.removeAllListeners('warning');
9
- //#endregion
10
-
11
- //#region resolve constants
12
- const childprocsecretarg = '-childproc';
13
- const isWinGitBash = (process.platform === 'win32');
14
- const procType = (process.argv[1].endsWith('tnp') || process.argv[1].endsWith('firedev')) ? 'root'
15
- : ((process.argv.find(a => a.startsWith(childprocsecretarg)))
16
- ? 'child-of-root'
17
- : 'child-of-child'
18
- );
19
- const debugMode = (process.argv[1].endsWith('-debug') || process.argv[1].endsWith('-debug-brk'))
20
- global.spinnerInParentProcess = (procType === 'child-of-root');
21
- const orgArgv = JSON.parse(JSON.stringify(process.argv));
22
- global.tnpNonInteractive = (typeof process.argv.find(a => a.startsWith('--tnpNonInteractive')) !== 'undefined');
23
- const spinnerIsDefault = !tnpNonInteractive;
24
- global.frameworkName = 'tnp';
25
-
26
- global.globalSystemToolMode = true;
27
- const verbose = process.argv.includes('-verbose')
28
- global.hideLog = !verbose;
29
- global.verboseLevel = 0;
30
-
31
- global.skipCoreCheck = (typeof process.argv.find(a => a.startsWith('--skipCoreCheck')) !== 'undefined');
32
- const verboseLevelExists = (typeof process.argv.find(a => a.startsWith('-verbose=')) !== 'undefined');
33
- global.verboseLevel = (verboseLevelExists ? Number(
34
- process.argv.find(a => {
35
- const v = a.startsWith('-verbose=');
36
- if (v) {
37
- return v.replace('-verbose=', '');
38
- }
39
- })
40
- ) : 0) || 0;
41
-
42
- if (!verbose && verboseLevelExists) {
43
- global.hideLog = false;
44
- }
45
-
46
-
47
-
48
- const spinnerOnInArgs = process.argv.includes('-spinner');
49
- const spinnerOffInArgs = (process.argv.includes('-spinner=false') || process.argv.includes('-spinner=off'));
50
- //#endregion
51
-
52
- //#region clear argument from variables
53
- process.argv = process.argv.filter(a => !a.startsWith('-spinner'));
54
- process.argv = process.argv.filter(a => a !== '-childproc');
55
- process.argv = process.argv.filter(a => a !== '--skipCoreCheck');
56
- process.argv = process.argv.filter(a => !a.startsWith('-verbose'));
57
- //#endregion
58
-
59
- //#region fix argument
60
- process.argv = process.argv.map(a => {
61
- if (a === '-websql') {
62
- return '--websql'
63
- }
64
- return a;
65
- })
66
- //#endregion
67
-
68
- //#region variables
69
- let mode;
70
- let start;
71
- let startSpinner = spinnerIsDefault || spinnerOnInArgs;
72
- if (spinnerOffInArgs) {
73
- startSpinner = false;
74
- }
75
- if (procType === 'child-of-root' || debugMode) {
76
- startSpinner = false;
77
- }
78
-
79
- if (verbose || frameworkName === 'tnp' || global.skipCoreCheck) {
80
- startSpinner = false;
81
- }
82
-
83
- //#endregion
84
-
85
- const path = require('path');
86
-
87
-
88
- if (procType === 'child-of-root') {
89
- global.spinner = {
90
- start() {
91
- process.send && process.send('start-spinner')
92
- },
93
- stop() {
94
- process.send && process.send('stop-spinner')
95
- }
96
- }
97
- }
98
-
99
- if (startSpinner) {
100
- //#region start spinner in processs
101
- var ora = require('ora');
102
- var spinner = ora();
103
- spinner.start();
104
- global.spinner = spinner;
105
-
106
- const child_process = require('child_process');
107
- const orgArgvForChild = orgArgv.filter(a => !a.startsWith('-spinner'));
108
-
109
- const env = {
110
- ...process.env,
111
- FORCE_COLOR: '1'
112
- };
113
-
114
- const cwd = process.cwd();
115
- const argsToCHildProc = (`${orgArgvForChild.slice(2).join(' ')} ${global.verbose ? '-verbose' : ''} ${global.skipCoreCheck ? '--skipCoreCheck' : ''} `
116
- + `${spinnerOnInArgs ? '-spinner' : (spinnerOffInArgs ? '-spinner=off' : '')} ${childprocsecretarg}`).split(' ');
117
-
118
- const proc = child_process.fork(crossPlatofrmPath(__filename), argsToCHildProc, {
119
- env,
120
- stdio: [0, 1, 2, 'ipc'],
121
- cwd,
122
- });
123
-
124
- proc.on('exit', (code) => {
125
- spinner.stop();
126
- setTimeout(() => {
127
- process.exit(code);
128
- })
129
- });
130
-
131
- proc.on('message', message => {
132
- message = (message ? message : '').trimLeft();
133
- if (message === 'start-spinner') {
134
- spinner.start();
135
- } else if (message === 'stop-spinner') {
136
- spinner.stop();
137
- } else if (message.startsWith('info::')) {
138
- setText((message));
139
- } else if (message.startsWith('success::')) {
140
- setText((message));
141
- } else if (message.startsWith('taskstart::')) {
142
- setText((message));
143
- } else if (message.startsWith('taskdone::')) {
144
- setText((message));
145
- } else if (message.startsWith('error::')) {
146
- setText((message));
147
- } else if (message.startsWith('log::')) {
148
- setText((message), true);
149
- } else if (message.startsWith('warn::')) {
150
- setText((message));
151
- }
152
- });
153
-
154
- // process.stdin.resume(); // not needed ?
155
- //#endregion
156
- } else {
157
- //#region child or child of child
158
-
159
- //#region uknow dist or npm mode
160
- const fs = require('fs');
161
-
162
- const pathToDistRun = path.join(__dirname, '../dist/cli.js');
163
- const pathToIndexRun = path.join(__dirname, '../cli.js');
164
- const distExist = fs.existsSync(pathToDistRun);
165
-
166
- if (distExist) {
167
- mode = 'dist';
168
- !global.hideLog && setText('- firedev dist -', true);
169
- // TODO TOOOO MUCH TIME !!!!!!
170
- start = require(pathToDistRun.replace(/\.js$/g, '')).default;
171
- } else {
172
- mode = 'npm';
173
- !global.hideLog && setText('- npm mode -', true);
174
- start = require(pathToIndexRun.replace(/\.js$/g, '')).default;
175
- }
176
- //#endregion
177
-
178
-
179
- // global.start = start;
180
- process.argv = process.argv.filter(f => !!f);
181
- start(process.argv, global.frameworkName, mode);
182
- //#endregion
183
- }
184
-
185
- function crossPlatofrmPath(p) {
186
- if (isWinGitBash) {
187
- return p.replace(/\\/g, '/');
188
- }
189
- return p;
190
- }
191
-
192
- function setText(text, toSpiner = false) {
193
- const spinner = global.spinner;
194
- if (text) {
195
- text = text.split('::').slice(1).join('::');
196
- }
197
- if (spinner) {
198
- if (toSpiner) {
199
- spinner.text = text.replace(/(?:\r\n|\r|\n)/g, ' ');
200
- } else {
201
- const wasSpinning = spinner.isSpinning;
202
- if (wasSpinning) {
203
- spinner.stop();
204
- spinner.clear();
205
- }
206
- console.log(text);
207
- if (wasSpinning) {
208
- spinner.start()
209
- }
210
- }
211
- } else {
212
- console.log(text);
213
- }
214
-
215
- }
216
-
217
- //#endregion
1
+ //#region @backend
2
+ //#region quick fixes
3
+ Error.stackTraceLimit = 100;
4
+ global.i0 = {
5
+ defineInjectable: function () { }
6
+ }
7
+ const process= require('process');
8
+ process.removeAllListeners('warning');
9
+ //#endregion
10
+
11
+ //#region resolve constants
12
+ const childprocsecretarg = '-childproc';
13
+ const isWinGitBash = (process.platform === 'win32');
14
+ const procType = (process.argv[1].endsWith('tnp') || process.argv[1].endsWith('firedev')) ? 'root'
15
+ : ((process.argv.find(a => a.startsWith(childprocsecretarg)))
16
+ ? 'child-of-root'
17
+ : 'child-of-child'
18
+ );
19
+ const debugMode = (process.argv[1].endsWith('-debug') || process.argv[1].endsWith('-debug-brk'))
20
+ global.spinnerInParentProcess = (procType === 'child-of-root');
21
+ const orgArgv = JSON.parse(JSON.stringify(process.argv));
22
+ global.tnpNonInteractive = (typeof process.argv.find(a => a.startsWith('--tnpNonInteractive')) !== 'undefined');
23
+ const spinnerIsDefault = !tnpNonInteractive;
24
+ global.frameworkName = 'tnp';
25
+
26
+ global.globalSystemToolMode = true;
27
+ const verbose = process.argv.includes('-verbose')
28
+ global.hideLog = !verbose;
29
+ global.verboseLevel = 0;
30
+
31
+ global.skipCoreCheck = (typeof process.argv.find(a => a.startsWith('--skipCoreCheck')) !== 'undefined');
32
+ const verboseLevelExists = (typeof process.argv.find(a => a.startsWith('-verbose=')) !== 'undefined');
33
+ global.verboseLevel = (verboseLevelExists ? Number(
34
+ process.argv.find(a => {
35
+ const v = a.startsWith('-verbose=');
36
+ if (v) {
37
+ return v.replace('-verbose=', '');
38
+ }
39
+ })
40
+ ) : 0) || 0;
41
+
42
+ if (!verbose && verboseLevelExists) {
43
+ global.hideLog = false;
44
+ }
45
+
46
+
47
+
48
+ const spinnerOnInArgs = process.argv.includes('-spinner');
49
+ const spinnerOffInArgs = (process.argv.includes('-spinner=false') || process.argv.includes('-spinner=off'));
50
+ //#endregion
51
+
52
+ //#region clear argument from variables
53
+ process.argv = process.argv.filter(a => !a.startsWith('-spinner'));
54
+ process.argv = process.argv.filter(a => a !== '-childproc');
55
+ process.argv = process.argv.filter(a => a !== '--skipCoreCheck');
56
+ process.argv = process.argv.filter(a => !a.startsWith('-verbose'));
57
+ //#endregion
58
+
59
+ //#region fix argument
60
+ process.argv = process.argv.map(a => {
61
+ if (a === '-websql') {
62
+ return '--websql'
63
+ }
64
+ return a;
65
+ })
66
+ //#endregion
67
+
68
+ //#region variables
69
+ let mode;
70
+ let start;
71
+ let startSpinner = spinnerIsDefault || spinnerOnInArgs;
72
+ if (spinnerOffInArgs) {
73
+ startSpinner = false;
74
+ }
75
+ if (procType === 'child-of-root' || debugMode) {
76
+ startSpinner = false;
77
+ }
78
+
79
+ if (verbose || frameworkName === 'tnp' || global.skipCoreCheck) {
80
+ startSpinner = false;
81
+ }
82
+
83
+ //#endregion
84
+
85
+ const path = require('path');
86
+
87
+
88
+ if (procType === 'child-of-root') {
89
+ global.spinner = {
90
+ start() {
91
+ process.send && process.send('start-spinner')
92
+ },
93
+ stop() {
94
+ process.send && process.send('stop-spinner')
95
+ }
96
+ }
97
+ }
98
+
99
+ if (startSpinner) {
100
+ //#region start spinner in processs
101
+ var ora = require('ora');
102
+ var spinner = ora();
103
+ spinner.start();
104
+ global.spinner = spinner;
105
+
106
+ const child_process = require('child_process');
107
+ const orgArgvForChild = orgArgv.filter(a => !a.startsWith('-spinner'));
108
+
109
+ const env = {
110
+ ...process.env,
111
+ FORCE_COLOR: '1'
112
+ };
113
+
114
+ const cwd = process.cwd();
115
+ const argsToCHildProc = (`${orgArgvForChild.slice(2).join(' ')} ${global.verbose ? '-verbose' : ''} ${global.skipCoreCheck ? '--skipCoreCheck' : ''} `
116
+ + `${spinnerOnInArgs ? '-spinner' : (spinnerOffInArgs ? '-spinner=off' : '')} ${childprocsecretarg}`).split(' ');
117
+
118
+ const proc = child_process.fork(crossPlatofrmPath(__filename), argsToCHildProc, {
119
+ env,
120
+ stdio: [0, 1, 2, 'ipc'],
121
+ cwd,
122
+ });
123
+
124
+ proc.on('exit', (code) => {
125
+ spinner.stop();
126
+ setTimeout(() => {
127
+ process.exit(code);
128
+ })
129
+ });
130
+
131
+ proc.on('message', message => {
132
+ message = (message ? message : '').trimLeft();
133
+ if (message === 'start-spinner') {
134
+ spinner.start();
135
+ } else if (message === 'stop-spinner') {
136
+ spinner.stop();
137
+ } else if (message.startsWith('info::')) {
138
+ setText((message));
139
+ } else if (message.startsWith('success::')) {
140
+ setText((message));
141
+ } else if (message.startsWith('taskstart::')) {
142
+ setText((message));
143
+ } else if (message.startsWith('taskdone::')) {
144
+ setText((message));
145
+ } else if (message.startsWith('error::')) {
146
+ setText((message));
147
+ } else if (message.startsWith('log::')) {
148
+ setText((message), true);
149
+ } else if (message.startsWith('warn::')) {
150
+ setText((message));
151
+ }
152
+ });
153
+
154
+ // process.stdin.resume(); // not needed ?
155
+ //#endregion
156
+ } else {
157
+ //#region child or child of child
158
+
159
+ //#region uknow dist or npm mode
160
+ const fs = require('fs');
161
+
162
+ const pathToDistRun = path.join(__dirname, '../dist/cli.js');
163
+ const pathToIndexRun = path.join(__dirname, '../cli.js');
164
+ const distExist = fs.existsSync(pathToDistRun);
165
+
166
+ if (distExist) {
167
+ mode = 'dist';
168
+ !global.hideLog && setText('- firedev dist -', true);
169
+ // TODO TOOOO MUCH TIME !!!!!!
170
+ start = require(pathToDistRun.replace(/\.js$/g, '')).default;
171
+ } else {
172
+ mode = 'npm';
173
+ !global.hideLog && setText('- npm mode -', true);
174
+ start = require(pathToIndexRun.replace(/\.js$/g, '')).default;
175
+ }
176
+ //#endregion
177
+
178
+
179
+ // global.start = start;
180
+ process.argv = process.argv.filter(f => !!f);
181
+ start(process.argv, global.frameworkName, mode);
182
+ //#endregion
183
+ }
184
+
185
+ function crossPlatofrmPath(p) {
186
+ if (isWinGitBash) {
187
+ return p.replace(/\\/g, '/');
188
+ }
189
+ return p;
190
+ }
191
+
192
+ function setText(text, toSpiner = false) {
193
+ const spinner = global.spinner;
194
+ if (text) {
195
+ text = text.split('::').slice(1).join('::');
196
+ }
197
+ if (spinner) {
198
+ if (toSpiner) {
199
+ spinner.text = text.replace(/(?:\r\n|\r|\n)/g, ' ');
200
+ } else {
201
+ const wasSpinning = spinner.isSpinning;
202
+ if (wasSpinning) {
203
+ spinner.stop();
204
+ spinner.clear();
205
+ }
206
+ console.log(text);
207
+ if (wasSpinning) {
208
+ spinner.start()
209
+ }
210
+ }
211
+ } else {
212
+ console.log(text);
213
+ }
214
+
215
+ }
216
+
217
+ //#endregion
package/bin/t CHANGED
@@ -1,5 +1,5 @@
1
- #!/usr/bin/env node --no-deprecation
2
- //#region @backend
3
- // --stack-trace-limit=10000
4
- require('./start');
5
- //#endregion
1
+ #!/usr/bin/env node --no-deprecation
2
+ //#region @backend
3
+ // --stack-trace-limit=10000
4
+ require('./start');
5
+ //#endregion
package/bin/t-debug CHANGED
@@ -1,5 +1,5 @@
1
- #!/usr/bin/env -S node --inspect --stack-trace-limit=10000 --no-deprecation
2
- //#region @backend
3
- // --stack-trace-limit=10000
4
- require('./start');
5
- //#endregion
1
+ #!/usr/bin/env -S node --inspect --stack-trace-limit=10000 --no-deprecation
2
+ //#region @backend
3
+ // --stack-trace-limit=10000
4
+ require('./start');
5
+ //#endregion
package/bin/t-debug-brk CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env -S node --inspect-brk --stack-trace-limit=10000 --no-deprecation
2
- //#region @backend
3
- require('./start');
4
- //#endregion
1
+ #!/usr/bin/env -S node --inspect-brk --stack-trace-limit=10000 --no-deprecation
2
+ //#region @backend
3
+ require('./start');
4
+ //#endregion
package/bin/tnp CHANGED
@@ -1,5 +1,5 @@
1
- #!/usr/bin/env node --no-deprecation
2
- //#region @backend
3
- // --stack-trace-limit=10000
4
- require('./start');
5
- //#endregion
1
+ #!/usr/bin/env node --no-deprecation
2
+ //#region @backend
3
+ // --stack-trace-limit=10000
4
+ require('./start');
5
+ //#endregion
package/bin/tnp-debug CHANGED
@@ -1,5 +1,5 @@
1
- #!/usr/bin/env -S node --inspect --stack-trace-limit=10000 --no-deprecation
2
- //#region @backend
3
- // --stack-trace-limit=10000
4
- require('./start');
5
- //#endregion
1
+ #!/usr/bin/env -S node --inspect --stack-trace-limit=10000 --no-deprecation
2
+ //#region @backend
3
+ // --stack-trace-limit=10000
4
+ require('./start');
5
+ //#endregion
package/bin/tnp-debug-brk CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env -S node --inspect-brk --stack-trace-limit=10000 --no-deprecation
2
- //#region @backend
3
- require('./start');
4
- //#endregion
1
+ #!/usr/bin/env -S node --inspect-brk --stack-trace-limit=10000 --no-deprecation
2
+ //#region @backend
3
+ require('./start');
4
+ //#endregion
package/browser/README.md CHANGED
@@ -1,24 +1,24 @@
1
- # MyLib
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
- > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
1
+ # MyLib
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
8
+ > Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -122,4 +122,4 @@ function from(options, classFn) {
122
122
  }
123
123
  ;
124
124
  ({}); // @--end-of-file-for-module=tnp lib/build-options.ts
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3RucC9wcm9qZWN0cy90bnAvc3JjL2xpYi9idWlsZC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlwRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHekQsTUFBTSxVQUFVO0lBQ2QsZ0JBQTBCLENBQUM7SUFFcEIsS0FBSyxDQUFDLFFBQW9CO1FBQy9CLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUU5RSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sU0FBYSxTQUFRLFVBQWE7SUFXN0M7Ozs7Ozs7Ozs7T0FVRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUlGO0FBRUQsTUFBTSxvQkFBd0IsU0FBUSxTQUFZO0NBWWpEO0FBSUQsTUFBTSxPQUFPLFVBQVcsU0FBUSxVQUFzQjtDQUVyRDtBQUlELE1BQU0sT0FBTyxXQUFZLFNBQVEsU0FBc0I7SUFFckQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxxQkFB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bEUsSUFBSSxpQkFBaUIsRUFBRTtRQUNyQixHQUFHLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDO0tBQ3hDO1NBQU07UUFDTCxHQUFHLENBQUMsY0FBYyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtLQUMvQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMscURBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IENvcmVNb2RlbHMsIF8sIGNyb3NzUGxhdGZvcm1QYXRoIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tICcuL3Byb2plY3QvYWJzdHJhY3QvcHJvamVjdCc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICd0bnAtY29uZmlnL2Jyb3dzZXInO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3Nlcic7XG5cblxuY2xhc3MgU3lzdGVtVGFzazxUPiB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHsgfVxuICBmaW5pc2hDYWxsYmFjazogKCkgPT4gYW55O1xuICBwdWJsaWMgY2xvbmUob3ZlcnJpZGU6IFBhcnRpYWw8VD4pOiBUIHtcbiAgICBjb25zdCBjbGFzc0ZuID0gQ0xBU1MuZ2V0RnJvbU9iamVjdCh0aGlzKTtcbiAgICBjb25zdCByZXN1bHQgPSBfLm1lcmdlKG5ldyAoY2xhc3NGbikoKSwgXy5tZXJnZShfLmNsb25lRGVlcCh0aGlzKSwgb3ZlcnJpZGUpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJhc2VCdWlsZDxUPiBleHRlbmRzIFN5c3RlbVRhc2s8VD4ge1xuICAvKipcbiAgICogd2F0Y2ggYnVpbGRcbiAgICovXG4gIHdhdGNoOiBib29sZWFuO1xuICAvKipcbiAgICAqIGJ1aWxkIG9uIHJlbW90ZSBzZXJ2ZXIgKHVzZXIgY2Fubm90IGludGVyZmVyZSB3aXRoIGNvbnNvbGUpXG4gICAgKiB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb25cbiAgICAqL1xuICBjaTogYm9vbGVhbjtcblxuICAvKipcbiAgICogYmFzZS1ocmVmIC0+IGlzIGEgcGFydCBvZiBsaWIgY29kZSBidWlsZFxuICAgKlxuICAgKiBvdmVyd2l0ZSBiYXNlIGhyZWYgZm9yIGFwcCBkZXBsb3ltZW50LlxuICAgKiBNdXN0IGJlIGF0IGxlYXN0IGVxdWFsOiAnLydcbiAgICpcbiAgICogZGVmYXVsdDogL1xuICAgKiBkZWZhdWx0IGZvciBnaXRodWIgcGFnZXMgc3RhbmRhbG9uZSBwcm9qZWN0OiAnLzxwcm9qZWN0LW5hbWUtb3Itb3ZlcndyaXR0ZW4+LydcbiAgICogZGVmYXVsdCBmb3Igb3JnYW5pemFpb24gbWFpbiB0YXJnZXQ6ICcvPHByb2plY3QtbmFtZS1vci1vdmVyd3JpdHRlbj4vJ1xuICAgKiBkZWZhdWx0IGZvciBvcmdhbml6YWlvbiBtYWluIG90aGVyIHRhcmdldHM6ICcvPHByb2plY3QtbmFtZS1vci1vdmVyd3JpdHRlbj4vLS88b3RoZXItdGFyZ2V0LW5hbWU+LydcbiAgICovXG4gIGdldCBiYXNlSHJlZigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9iYXNlSHJlZjtcbiAgfVxuICBzZXQgYmFzZUhyZWYodikge1xuICAgIHRoaXMuX2Jhc2VIcmVmID0gY3Jvc3NQbGF0Zm9ybVBhdGgodik7XG4gIH1cbiAgcHJpdmF0ZSBfYmFzZUhyZWY6IHN0cmluZztcbiAgZGlzYWJsZVNlcnZpY2VXb3JrZXI6IGJvb2xlYW47XG4gIGJ1aWxkQW5ndWxhckFwcEZvckVsZWN0cm9uOiBib29sZWFuO1xufVxuXG5jbGFzcyBCdWlsZE9wdGlvbnNMaWJPckFwcDxUPiBleHRlbmRzIEJhc2VCdWlsZDxUPiB7XG4gIGNsaUJ1aWxkTm9EdHM6IGJvb2xlYW47XG4gIGNsaUJ1aWxkVWdsaWZ5OiBib29sZWFuO1xuICBjbGlCdWlsZE9ic2N1cmU6IGJvb2xlYW47XG4gIGNsaUJ1aWxkSW5jbHVkZU5vZGVNb2R1bGVzOiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIGFsbCBwcm9kdWN0aW9uIG9wdGltYWxpemF0aW9uIGZvciBidWlsZFxuICAgKiAtIG1pbmlmaWNhdGlvblxuICAgKiAtIGNhY2hlc1xuICAgKiBldGMuXG4gICAqL1xuICBwcm9kOiBib29sZWFuO1xufVxuXG5cblxuZXhwb3J0IGNsYXNzIE5ld09wdGlvbnMgZXh0ZW5kcyBTeXN0ZW1UYXNrPE5ld09wdGlvbnM+IHtcbiAgYnJhbmRpbmc6IGJvb2xlYW47XG59XG5cblxuXG5leHBvcnQgY2xhc3MgSW5pdE9wdGlvbnMgZXh0ZW5kcyBCYXNlQnVpbGQ8SW5pdE9wdGlvbnM+IHtcbiAgcmVhZG9ubHkgYWxyZWFkeUluaXRlZFBvcmplY3RzOiBQcm9qZWN0W107XG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFscmVhZHlJbml0ZWRQb3JqZWN0cyA9IFtdO1xuICB9XG4gIG9taXRDaGlsZHJlbjogYm9vbGVhbjtcbiAgaW5pdGlhdG9yOiBQcm9qZWN0O1xuICAvKipcbiAgICogaW5pdCBvbmx5IHN0cnVjdHJlIHdpdGhvdXQgZGVwc1xuICAgKi9cbiAgc3RydWN0OiBib29sZWFuO1xuICB3ZWJzcWw6IGJvb2xlYW47XG4gIGJyYW5kaW5nOiBib29sZWFuO1xuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbShvcHRpb25zOiBQYXJ0aWFsPEluaXRPcHRpb25zPik6IEluaXRPcHRpb25zIHtcbiAgICByZXR1cm4gZnJvbShvcHRpb25zLCBJbml0T3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZyb21CdWlsZChvcHRpb25zOiBCdWlsZE9wdGlvbnMpOiBJbml0T3B0aW9ucyB7XG4gICAgY29uc3QgaW5pdE9wdGlvbnMgPSBJbml0T3B0aW9ucy5mcm9tKHt9KTtcblxuICAgIGNvbnN0IHByb3BzVG9Jbml0ID0gW1xuICAgICAgJ2Jhc2VIcmVmJyxcbiAgICAgICd3YXRjaCcsXG4gICAgICAnd2Vic3FsJyxcbiAgICAgICdzbWFydENvbnRhaW5lclRhcmdldE5hbWUnLFxuICAgICAgJ2NpJyxcbiAgICAgICd0YXJnZXRBcHAnLFxuICAgICAgJ3Byb2QnLFxuICAgICAgJ2Rpc2FibGVTZXJ2aWNlV29ya2VyJyxcbiAgICAgICdidWlsZEFuZ3VsYXJBcHBGb3JFbGVjdHJvbicsXG4gICAgXSBhcyAoa2V5b2YgQnVpbGRPcHRpb25zKVtdO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BzVG9Jbml0KSB7XG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9uc1twcm9wXSkpIHtcbiAgICAgICAgaW5pdE9wdGlvbnNbcHJvcF0gPSBvcHRpb25zW3Byb3BdXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluaXRPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGZpbGxCYXNlSHJlZkZyb21GaWxlKHByb2plY3Q6IFByb2plY3QpIHtcblxuICB9XG59XG5cblxuXG5leHBvcnQgY2xhc3MgQnVpbGRPcHRpb25zIGV4dGVuZHMgQnVpbGRPcHRpb25zTGliT3JBcHA8QnVpbGRPcHRpb25zPiB7XG4gIHJlYWRvbmx5IG91dERpcjogJ2Rpc3QnO1xuICByZWFkb25seSB0YXJnZXRBcHA6ICdwd2EnIHwgJ2VsZWN0cm9uJztcbiAgZ2V0IGFwcEJ1aWxkKCkge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkVHlwZSA9PT0gJ2FwcCcgfHwgdGhpcy5idWlsZFR5cGUgPT09ICdsaWItYXBwJztcbiAgfVxuICBnZXQgbGliQnVpbGQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRUeXBlID09PSAnbGliJyB8fCB0aGlzLmJ1aWxkVHlwZSA9PT0gJ2xpYi1hcHAnO1xuICB9XG5cbiAgZ2V0IHRlbXBvcmFyeVNyY0ZvclJlbGVhc2VDdXRDb2RlKCkge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMub3V0RGlyID0gJ2Rpc3QnO1xuICAgIHRoaXMudGFyZ2V0QXBwID0gJ3B3YSc7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqL1xuICB3ZWJzcWw6IGJvb2xlYW47XG4gIGJ1aWxkVHlwZTogJ2xpYicgfCAnYXBwJyB8ICdsaWItYXBwJztcbiAgcHJpdmF0ZSBfc2tpcFByb2plY3RQcm9jZXNzOiBib29sZWFuO1xuICAvKipcbiAgICogU2tpcCBwcm9qZWN0IHByb2Nlc3MgZm9yIGFzc2lnbmluZyBhdXRvbWF0aWMgcG9ydHNcbiAgICovXG4gIGdldCBza2lwUHJvamVjdFByb2Nlc3MoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuICBzZXQgc2tpcFByb2plY3RQcm9jZXNzKHZhbHVlKSB7XG4gICAgdGhpcy5fc2tpcFByb2plY3RQcm9jZXNzID0gdmFsdWU7XG4gIH1cblxuICBza2lwQ29weU1hbmFnZXI6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBidWlsZCBleGVjdXRlZCBkcnVyaW5nIGxpYiByZWxlYXNlXG4gICAqL1xuICBidWlsZEZvclJlbGVhc2U6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGRlZmF1bHQ6ICc8cHJvamVjdC1sb2NhaXRvbj4vZGlzdC1hcHAnXG4gICAqIGRlZmF1bHQgZm9yIGdpdGh1YiBwYWdlOiAnPHByb2plY3QtbG9jYXRpb24+L2RvY3MnXG4gICAqL1xuICBhcHBCdWlsZExvY2F0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDdXQgPEA+bm90Rm9yTnBtICB0YWcgZnJvbSBsaWIgYnVpbGRcbiAgICovXG4gIGN1dE5wbVB1Ymxpc2hMaWJSZWxlYXNlQ29kZTogYm9vbGVhbjtcbiAgLyoqXG4gKiBEbyBub3QgZ2VuZXJhdGUgYmFja2VuZCBjb2RlXG4gKi9cbiAgZ2VuT25seUNsaWVudENvZGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBvbmx5IGJhY2tlbmQsIHdpdGhvdXQgYnJvd3NlciB2ZXJzaW9uXG4gICAqL1xuICBvbmx5QmFja2VuZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgd2UgY2FuIHN0YXJ0IGJ1aWxkIG9mIHNtYXJ0IGNvbnRhaW5lclxuICAgKiB3aXRoIGRpZmZlcmVudCBhcHBcbiAgICovXG4gIHNtYXJ0Q29udGFpbmVyVGFyZ2V0TmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbShvcHRpb25zOiBPbWl0PFBhcnRpYWw8QnVpbGRPcHRpb25zPiwgJ2FwcEJ1aWxkJyB8ICdzZXJ2ZUFwcCc+KTogQnVpbGRPcHRpb25zIHtcbiAgICByZXR1cm4gZnJvbShvcHRpb25zLCBCdWlsZE9wdGlvbnMpO1xuICB9XG59XG5cblxuXG5leHBvcnQgY2xhc3MgUmVsZWFzZU9wdGlvbnMgZXh0ZW5kcyBCdWlsZE9wdGlvbnNMaWJPckFwcDxSZWxlYXNlT3B0aW9ucz4ge1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlbGVhc2VUeXBlID0gJ3BhdGNoJztcbiAgICB0aGlzLnJlc29sdmVkID0gW107XG4gIH1cbiAgcmVsZWFzZVR5cGU6IENvcmVNb2RlbHMuUmVsZWFzZVR5cGU7XG4gIHNob3VsZFJlbGVhc2VMaWJyYXJ5OiBib29sZWFuO1xuICAvKipcbiAgICogYnVpbGQgYWN0aW9uIG9ubHkgZm9yIHNwZWN5ZmljIGZyYW1ld29yayB2ZXJzaW9uIG9mIHByb2hlY3RcbiAgICovXG4gIGZyYW1ld29ya1ZlcnNpb246IENvcmVNb2RlbHMuRnJhbWV3b3JrVmVyc2lvbjtcbiAgLyoqXG4gICAqIHN0YXJ0IHJlbGVhc2Ugb24gcHJvamVjdFxuICAgKi9cbiAgc3RhcnRGcm9tUHJvamVjdD86IHN0cmluZztcbiAgLyoqXG4gICAqIGVuZCByZWxlYXNlIG9uIHByb2plY3RcbiAgICovXG4gIGVuZE9uUHJvamVjdD86IHN0cmluZztcbiAgc2tpcFByb2plY3RQcm9jZXNzOiBib29sZWFuO1xuICAvKipcbiAgICogUHJvamVjdHMgdG8gcmVsZWFzZSBpbiBjb250YWluZXJcbiAgICovXG4gIHJlc29sdmVkOiBQcm9qZWN0W107XG4gIC8qKlxuICAgKiBxdWljayBhdXRvbWF0aWMgcmVsZWFzZSBvZiBsaWJcbiAgICovXG4gIGF1dG9tYXRpY1JlbGVhc2U6IGJvb2xlYW47XG4gIC8qKlxuICAqIHF1aWNrIGF1dG9tYXRpYyByZWxlYXNlIG9mIGRvY3MgYXBwKHMpXG4gICovXG4gIGF1dG9tYXRpY1JlbGVhc2VEb2NzOiBib29sZWFuO1xuICBidW1iVmVyc2lvbkluOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBzcGVjaWZpZWRWZXJzaW9uOiBzdHJpbmc7XG4gIHJlbGVhc2VUYXJnZXQ6ICdsaWInIHwgJ2FwcCcgfCAnbGliLWFwcCc7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbShvcHRpb25zOiBQYXJ0aWFsPFJlbGVhc2VPcHRpb25zPik6IFJlbGVhc2VPcHRpb25zIHtcbiAgICByZXR1cm4gZnJvbShvcHRpb25zLCBSZWxlYXNlT3B0aW9ucyk7XG4gIH1cbn1cblxuXG5cbmZ1bmN0aW9uIGZyb20ob3B0aW9uczogUGFydGlhbDxJbml0T3B0aW9ucyB8IEJ1aWxkT3B0aW9ucyB8IFJlbGVhc2VPcHRpb25zPiwgY2xhc3NGbjogRnVuY3Rpb24pIHtcbiAgY29uc3Qgb3JnRmluaXNoQ2FsbGJhY2sgPSBvcHRpb25zPy5maW5pc2hDYWxsYmFjaztcbiAgb3B0aW9ucyA9IChvcHRpb25zID8gb3B0aW9ucyA6IHt9KSBhcyBhbnk7XG4gIGNvbnN0IHJlcyA9IF8ubWVyZ2UobmV3IChjbGFzc0ZuIGFzIGFueSkoKSwgXy5jbG9uZURlZXAob3B0aW9ucykpO1xuICBpZiAob3JnRmluaXNoQ2FsbGJhY2spIHtcbiAgICByZXMuZmluaXNoQ2FsbGJhY2sgPSBvcmdGaW5pc2hDYWxsYmFjaztcbiAgfSBlbHNlIHtcbiAgICByZXMuZmluaXNoQ2FsbGJhY2sgPSAoKSA9PiB7IH1cbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wIGxpYi9idWlsZC1vcHRpb25zLnRzIl19
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L3RucC9wcm9qZWN0cy90bnAvc3JjL2xpYi9idWlsZC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlwRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHekQsTUFBTSxVQUFVO0lBQ2QsZ0JBQTBCLENBQUM7SUFFcEIsS0FBSyxDQUFDLFFBQW9CO1FBQy9CLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUU5RSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sU0FBYSxTQUFRLFVBQWE7SUFXN0M7Ozs7Ozs7Ozs7T0FVRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUlGO0FBRUQsTUFBTSxvQkFBd0IsU0FBUSxTQUFZO0NBWWpEO0FBSUQsTUFBTSxPQUFPLFVBQVcsU0FBUSxVQUFzQjtDQUVyRDtBQUlELE1BQU0sT0FBTyxXQUFZLFNBQVEsU0FBc0I7SUFFckQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxxQkFB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bEUsSUFBSSxpQkFBaUIsRUFBRTtRQUNyQixHQUFHLENBQUMsY0FBYyxHQUFHLGlCQUFpQixDQUFDO0tBQ3hDO1NBQU07UUFDTCxHQUFHLENBQUMsY0FBYyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtLQUMvQjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMscURBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmltcG9ydCB7IENvcmVNb2RlbHMsIF8sIGNyb3NzUGxhdGZvcm1QYXRoIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgdHlwZSB7IFByb2plY3QgfSBmcm9tICcuL3Byb2plY3QvYWJzdHJhY3QvcHJvamVjdCc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICd0bnAtY29uZmlnL2Jyb3dzZXInO1xuaW1wb3J0IHsgTW9kZWxzIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgQ0xBU1MgfSBmcm9tICd0eXBlc2NyaXB0LWNsYXNzLWhlbHBlcnMvYnJvd3Nlcic7XG5cblxuY2xhc3MgU3lzdGVtVGFzazxUPiB7XG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHsgfVxuICBmaW5pc2hDYWxsYmFjazogKCkgPT4gYW55O1xuICBwdWJsaWMgY2xvbmUob3ZlcnJpZGU6IFBhcnRpYWw8VD4pOiBUIHtcbiAgICBjb25zdCBjbGFzc0ZuID0gQ0xBU1MuZ2V0RnJvbU9iamVjdCh0aGlzKTtcbiAgICBjb25zdCByZXN1bHQgPSBfLm1lcmdlKG5ldyAoY2xhc3NGbikoKSwgXy5tZXJnZShfLmNsb25lRGVlcCh0aGlzKSwgb3ZlcnJpZGUpKTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJhc2VCdWlsZDxUPiBleHRlbmRzIFN5c3RlbVRhc2s8VD4ge1xuICAvKipcbiAgICogd2F0Y2ggYnVpbGRcbiAgICovXG4gIHdhdGNoOiBib29sZWFuO1xuICAvKipcbiAgICAqIGJ1aWxkIG9uIHJlbW90ZSBzZXJ2ZXIgKHVzZXIgY2Fubm90IGludGVyZmVyZSB3aXRoIGNvbnNvbGUpXG4gICAgKiB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb25cbiAgICAqL1xuICBjaTogYm9vbGVhbjtcblxuICAvKipcbiAgICogYmFzZS1ocmVmIC0+IGlzIGEgcGFydCBvZiBsaWIgY29kZSBidWlsZFxuICAgKlxuICAgKiBvdmVyd2l0ZSBiYXNlIGhyZWYgZm9yIGFwcCBkZXBsb3ltZW50LlxuICAgKiBNdXN0IGJlIGF0IGxlYXN0IGVxdWFsOiAnLydcbiAgICpcbiAgICogZGVmYXVsdDogL1xuICAgKiBkZWZhdWx0IGZvciBnaXRodWIgcGFnZXMgc3RhbmRhbG9uZSBwcm9qZWN0OiAnLzxwcm9qZWN0LW5hbWUtb3Itb3ZlcndyaXR0ZW4+LydcbiAgICogZGVmYXVsdCBmb3Igb3JnYW5pemFpb24gbWFpbiB0YXJnZXQ6ICcvPHByb2plY3QtbmFtZS1vci1vdmVyd3JpdHRlbj4vJ1xuICAgKiBkZWZhdWx0IGZvciBvcmdhbml6YWlvbiBtYWluIG90aGVyIHRhcmdldHM6ICcvPHByb2plY3QtbmFtZS1vci1vdmVyd3JpdHRlbj4vLS88b3RoZXItdGFyZ2V0LW5hbWU+LydcbiAgICovXG4gIGdldCBiYXNlSHJlZigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9iYXNlSHJlZjtcbiAgfVxuICBzZXQgYmFzZUhyZWYodikge1xuICAgIHRoaXMuX2Jhc2VIcmVmID0gY3Jvc3NQbGF0Zm9ybVBhdGgodik7XG4gIH1cbiAgcHJpdmF0ZSBfYmFzZUhyZWY6IHN0cmluZztcbiAgZGlzYWJsZVNlcnZpY2VXb3JrZXI6IGJvb2xlYW47XG4gIGJ1aWxkQW5ndWxhckFwcEZvckVsZWN0cm9uOiBib29sZWFuO1xufVxuXG5jbGFzcyBCdWlsZE9wdGlvbnNMaWJPckFwcDxUPiBleHRlbmRzIEJhc2VCdWlsZDxUPiB7XG4gIGNsaUJ1aWxkTm9EdHM6IGJvb2xlYW47XG4gIGNsaUJ1aWxkVWdsaWZ5OiBib29sZWFuO1xuICBjbGlCdWlsZE9ic2N1cmU6IGJvb2xlYW47XG4gIGNsaUJ1aWxkSW5jbHVkZU5vZGVNb2R1bGVzOiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIGFsbCBwcm9kdWN0aW9uIG9wdGltYWxpemF0aW9uIGZvciBidWlsZFxuICAgKiAtIG1pbmlmaWNhdGlvblxuICAgKiAtIGNhY2hlc1xuICAgKiBldGMuXG4gICAqL1xuICBwcm9kOiBib29sZWFuO1xufVxuXG5cblxuZXhwb3J0IGNsYXNzIE5ld09wdGlvbnMgZXh0ZW5kcyBTeXN0ZW1UYXNrPE5ld09wdGlvbnM+IHtcbiAgYnJhbmRpbmc6IGJvb2xlYW47XG59XG5cblxuXG5leHBvcnQgY2xhc3MgSW5pdE9wdGlvbnMgZXh0ZW5kcyBCYXNlQnVpbGQ8SW5pdE9wdGlvbnM+IHtcbiAgcmVhZG9ubHkgYWxyZWFkeUluaXRlZFBvcmplY3RzOiBQcm9qZWN0W107XG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFscmVhZHlJbml0ZWRQb3JqZWN0cyA9IFtdO1xuICB9XG4gIG9taXRDaGlsZHJlbjogYm9vbGVhbjtcbiAgaW5pdGlhdG9yOiBQcm9qZWN0O1xuICAvKipcbiAgICogaW5pdCBvbmx5IHN0cnVjdHJlIHdpdGhvdXQgZGVwc1xuICAgKi9cbiAgc3RydWN0OiBib29sZWFuO1xuICB3ZWJzcWw6IGJvb2xlYW47XG4gIGJyYW5kaW5nOiBib29sZWFuO1xuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbShvcHRpb25zOiBQYXJ0aWFsPEluaXRPcHRpb25zPik6IEluaXRPcHRpb25zIHtcbiAgICByZXR1cm4gZnJvbShvcHRpb25zLCBJbml0T3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZyb21CdWlsZChvcHRpb25zOiBCdWlsZE9wdGlvbnMpOiBJbml0T3B0aW9ucyB7XG4gICAgY29uc3QgaW5pdE9wdGlvbnMgPSBJbml0T3B0aW9ucy5mcm9tKHt9KTtcblxuICAgIGNvbnN0IHByb3BzVG9Jbml0ID0gW1xuICAgICAgJ2Jhc2VIcmVmJyxcbiAgICAgICd3YXRjaCcsXG4gICAgICAnd2Vic3FsJyxcbiAgICAgICdzbWFydENvbnRhaW5lclRhcmdldE5hbWUnLFxuICAgICAgJ2NpJyxcbiAgICAgICd0YXJnZXRBcHAnLFxuICAgICAgJ3Byb2QnLFxuICAgICAgJ2Rpc2FibGVTZXJ2aWNlV29ya2VyJyxcbiAgICAgICdidWlsZEFuZ3VsYXJBcHBGb3JFbGVjdHJvbicsXG4gICAgXSBhcyAoa2V5b2YgQnVpbGRPcHRpb25zKVtdO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BzVG9Jbml0KSB7XG4gICAgICBpZiAoIV8uaXNVbmRlZmluZWQob3B0aW9uc1twcm9wXSkpIHtcbiAgICAgICAgaW5pdE9wdGlvbnNbcHJvcF0gPSBvcHRpb25zW3Byb3BdXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluaXRPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGZpbGxCYXNlSHJlZkZyb21GaWxlKHByb2plY3Q6IFByb2plY3QpIHtcblxuICB9XG59XG5cblxuXG5leHBvcnQgY2xhc3MgQnVpbGRPcHRpb25zIGV4dGVuZHMgQnVpbGRPcHRpb25zTGliT3JBcHA8QnVpbGRPcHRpb25zPiB7XG4gIHJlYWRvbmx5IG91dERpcjogJ2Rpc3QnO1xuICByZWFkb25seSB0YXJnZXRBcHA6ICdwd2EnIHwgJ2VsZWN0cm9uJztcbiAgZ2V0IGFwcEJ1aWxkKCkge1xuICAgIHJldHVybiB0aGlzLmJ1aWxkVHlwZSA9PT0gJ2FwcCcgfHwgdGhpcy5idWlsZFR5cGUgPT09ICdsaWItYXBwJztcbiAgfVxuICBnZXQgbGliQnVpbGQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRUeXBlID09PSAnbGliJyB8fCB0aGlzLmJ1aWxkVHlwZSA9PT0gJ2xpYi1hcHAnO1xuICB9XG5cbiAgZ2V0IHRlbXBvcmFyeVNyY0ZvclJlbGVhc2VDdXRDb2RlKCkge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMub3V0RGlyID0gJ2Rpc3QnO1xuICAgIHRoaXMudGFyZ2V0QXBwID0gJ3B3YSc7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqL1xuICB3ZWJzcWw6IGJvb2xlYW47XG4gIGJ1aWxkVHlwZTogJ2xpYicgfCAnYXBwJyB8ICdsaWItYXBwJztcbiAgcHJpdmF0ZSBfc2tpcFByb2plY3RQcm9jZXNzOiBib29sZWFuO1xuICAvKipcbiAgICogU2tpcCBwcm9qZWN0IHByb2Nlc3MgZm9yIGFzc2lnbmluZyBhdXRvbWF0aWMgcG9ydHNcbiAgICovXG4gIGdldCBza2lwUHJvamVjdFByb2Nlc3MoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuICBzZXQgc2tpcFByb2plY3RQcm9jZXNzKHZhbHVlKSB7XG4gICAgdGhpcy5fc2tpcFByb2plY3RQcm9jZXNzID0gdmFsdWU7XG4gIH1cblxuICBza2lwQ29weU1hbmFnZXI6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBidWlsZCBleGVjdXRlZCBkcnVyaW5nIGxpYiByZWxlYXNlXG4gICAqL1xuICBidWlsZEZvclJlbGVhc2U6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGRlZmF1bHQ6ICc8cHJvamVjdC1sb2NhaXRvbj4vZGlzdC1hcHAnXG4gICAqIGRlZmF1bHQgZm9yIGdpdGh1YiBwYWdlOiAnPHByb2plY3QtbG9jYXRpb24+L2RvY3MnXG4gICAqL1xuICBhcHBCdWlsZExvY2F0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDdXQgPEA+bm90Rm9yTnBtICB0YWcgZnJvbSBsaWIgYnVpbGRcbiAgICovXG4gIGN1dE5wbVB1Ymxpc2hMaWJSZWxlYXNlQ29kZTogYm9vbGVhbjtcbiAgLyoqXG4gKiBEbyBub3QgZ2VuZXJhdGUgYmFja2VuZCBjb2RlXG4gKi9cbiAgZ2VuT25seUNsaWVudENvZGU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBvbmx5IGJhY2tlbmQsIHdpdGhvdXQgYnJvd3NlciB2ZXJzaW9uXG4gICAqL1xuICBvbmx5QmFja2VuZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgd2UgY2FuIHN0YXJ0IGJ1aWxkIG9mIHNtYXJ0IGNvbnRhaW5lclxuICAgKiB3aXRoIGRpZmZlcmVudCBhcHBcbiAgICovXG4gIHNtYXJ0Q29udGFpbmVyVGFyZ2V0TmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbShvcHRpb25zOiBPbWl0PFBhcnRpYWw8QnVpbGRPcHRpb25zPiwgJ2FwcEJ1aWxkJyB8ICdzZXJ2ZUFwcCc+KTogQnVpbGRPcHRpb25zIHtcbiAgICByZXR1cm4gZnJvbShvcHRpb25zLCBCdWlsZE9wdGlvbnMpO1xuICB9XG59XG5cblxuXG5leHBvcnQgY2xhc3MgUmVsZWFzZU9wdGlvbnMgZXh0ZW5kcyBCdWlsZE9wdGlvbnNMaWJPckFwcDxSZWxlYXNlT3B0aW9ucz4ge1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlbGVhc2VUeXBlID0gJ3BhdGNoJztcbiAgICB0aGlzLnJlc29sdmVkID0gW107XG4gIH1cbiAgcmVsZWFzZVR5cGU6IENvcmVNb2RlbHMuUmVsZWFzZVR5cGU7XG4gIHNob3VsZFJlbGVhc2VMaWJyYXJ5OiBib29sZWFuO1xuICAvKipcbiAgICogYnVpbGQgYWN0aW9uIG9ubHkgZm9yIHNwZWN5ZmljIGZyYW1ld29yayB2ZXJzaW9uIG9mIHByb2hlY3RcbiAgICovXG4gIGZyYW1ld29ya1ZlcnNpb246IENvcmVNb2RlbHMuRnJhbWV3b3JrVmVyc2lvbjtcbiAgLyoqXG4gICAqIHN0YXJ0IHJlbGVhc2Ugb24gcHJvamVjdFxuICAgKi9cbiAgc3RhcnRGcm9tUHJvamVjdD86IHN0cmluZztcbiAgLyoqXG4gICAqIHJlbGVhc2Ugb25seSBzcGVjaWZpZWQgcHJvamVjdHNcbiAgICovXG4gIHJlbGVhc2VPbmx5Pzogc3RyaW5nIHwgc3RyaW5nW107XG4gIC8qKlxuICAgKiBlbmQgcmVsZWFzZSBvbiBwcm9qZWN0XG4gICAqL1xuICBlbmRPblByb2plY3Q/OiBzdHJpbmc7XG4gIHNraXBQcm9qZWN0UHJvY2VzczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFByb2plY3RzIHRvIHJlbGVhc2UgaW4gY29udGFpbmVyXG4gICAqL1xuICByZXNvbHZlZDogUHJvamVjdFtdO1xuICAvKipcbiAgICogcXVpY2sgYXV0b21hdGljIHJlbGVhc2Ugb2YgbGliXG4gICAqL1xuICBhdXRvbWF0aWNSZWxlYXNlOiBib29sZWFuO1xuICAvKipcbiAgKiBxdWljayBhdXRvbWF0aWMgcmVsZWFzZSBvZiBkb2NzIGFwcChzKVxuICAqL1xuICBhdXRvbWF0aWNSZWxlYXNlRG9jczogYm9vbGVhbjtcbiAgYnVtYlZlcnNpb25Jbjogc3RyaW5nW107XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgc3BlY2lmaWVkVmVyc2lvbjogc3RyaW5nO1xuICByZWxlYXNlVGFyZ2V0OiAnbGliJyB8ICdhcHAnIHwgJ2xpYi1hcHAnO1xuICBwdWJsaWMgc3RhdGljIGZyb20ob3B0aW9uczogUGFydGlhbDxSZWxlYXNlT3B0aW9ucz4pOiBSZWxlYXNlT3B0aW9ucyB7XG4gICAgcmV0dXJuIGZyb20ob3B0aW9ucywgUmVsZWFzZU9wdGlvbnMpO1xuICB9XG59XG5cblxuXG5mdW5jdGlvbiBmcm9tKG9wdGlvbnM6IFBhcnRpYWw8SW5pdE9wdGlvbnMgfCBCdWlsZE9wdGlvbnMgfCBSZWxlYXNlT3B0aW9ucz4sIGNsYXNzRm46IEZ1bmN0aW9uKSB7XG4gIGNvbnN0IG9yZ0ZpbmlzaENhbGxiYWNrID0gb3B0aW9ucz8uZmluaXNoQ2FsbGJhY2s7XG4gIG9wdGlvbnMgPSAob3B0aW9ucyA/IG9wdGlvbnMgOiB7fSkgYXMgYW55O1xuICBjb25zdCByZXMgPSBfLm1lcmdlKG5ldyAoY2xhc3NGbiBhcyBhbnkpKCksIF8uY2xvbmVEZWVwKG9wdGlvbnMpKTtcbiAgaWYgKG9yZ0ZpbmlzaENhbGxiYWNrKSB7XG4gICAgcmVzLmZpbmlzaENhbGxiYWNrID0gb3JnRmluaXNoQ2FsbGJhY2s7XG4gIH0gZWxzZSB7XG4gICAgcmVzLmZpbmlzaENhbGxiYWNrID0gKCkgPT4geyB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucCBsaWIvYnVpbGQtb3B0aW9ucy50cyJdfQ==