occam-model 1.0.496 → 1.0.498

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/lib/entries.js CHANGED
@@ -8,244 +8,157 @@ Object.defineProperty(exports, "default", {
8
8
  return _default;
9
9
  }
10
10
  });
11
- var _necessary = require("necessary");
12
- var _file = /*#__PURE__*/ _interop_require_default(require("./file"));
13
- var _files = /*#__PURE__*/ _interop_require_default(require("./files"));
14
- var _directory = /*#__PURE__*/ _interop_require_default(require("./directory"));
15
- var _bnf = /*#__PURE__*/ _interop_require_default(require("./mixins/bnf"));
16
- var _files1 = /*#__PURE__*/ _interop_require_default(require("./mixins/files"));
17
- var _metaJSON = /*#__PURE__*/ _interop_require_default(require("./mixins/metaJSON"));
18
- var _vocabulary = /*#__PURE__*/ _interop_require_default(require("./mixins/vocabulary"));
19
- function _class_call_check(instance, Constructor) {
20
- if (!(instance instanceof Constructor)) {
21
- throw new TypeError("Cannot call a class as a function");
22
- }
23
- }
24
- function _defineProperties(target, props) {
25
- for(var i = 0; i < props.length; i++){
26
- var descriptor = props[i];
27
- descriptor.enumerable = descriptor.enumerable || false;
28
- descriptor.configurable = true;
29
- if ("value" in descriptor) descriptor.writable = true;
30
- Object.defineProperty(target, descriptor.key, descriptor);
31
- }
32
- }
33
- function _create_class(Constructor, protoProps, staticProps) {
34
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
35
- if (staticProps) _defineProperties(Constructor, staticProps);
36
- return Constructor;
37
- }
11
+ const _necessary = require("necessary");
12
+ const _file = /*#__PURE__*/ _interop_require_default(require("./file"));
13
+ const _files = /*#__PURE__*/ _interop_require_default(require("./files"));
14
+ const _directory = /*#__PURE__*/ _interop_require_default(require("./directory"));
15
+ const _bnf = /*#__PURE__*/ _interop_require_default(require("./mixins/bnf"));
16
+ const _files1 = /*#__PURE__*/ _interop_require_default(require("./mixins/files"));
17
+ const _metaJSON = /*#__PURE__*/ _interop_require_default(require("./mixins/metaJSON"));
18
+ const _vocabulary = /*#__PURE__*/ _interop_require_default(require("./mixins/vocabulary"));
38
19
  function _interop_require_default(obj) {
39
20
  return obj && obj.__esModule ? obj : {
40
21
  default: obj
41
22
  };
42
23
  }
43
- var first = _necessary.arrayUtilities.first, filter = _necessary.arrayUtilities.filter, topmostDirectoryNameFromPath = _necessary.pathUtilities.topmostDirectoryNameFromPath;
44
- var Entries = /*#__PURE__*/ function() {
45
- function Entries(array) {
46
- _class_call_check(this, Entries);
24
+ const { first, filter } = _necessary.arrayUtilities, { topmostDirectoryNameFromPath } = _necessary.pathUtilities;
25
+ class Entries {
26
+ constructor(array){
47
27
  this.array = array;
48
28
  }
49
- _create_class(Entries, [
50
- {
51
- key: "getArray",
52
- value: function getArray() {
53
- return this.array;
54
- }
55
- },
56
- {
57
- key: "getTopmostDirectoryName",
58
- value: function getTopmostDirectoryName() {
59
- var topmostDirectoryName = null;
60
- var firstEntry = first(this.array); ///
61
- if (firstEntry) {
62
- var firstEntryPath = firstEntry.getPath();
63
- topmostDirectoryName = topmostDirectoryNameFromPath(firstEntryPath);
64
- if (topmostDirectoryName === null) {
65
- topmostDirectoryName = firstEntryPath; ///
66
- }
67
- }
68
- return topmostDirectoryName;
69
- }
70
- },
71
- {
72
- key: "removeFileByPath",
73
- value: function removeFileByPath(path) {
74
- filter(this.array, function(entry) {
75
- var entryFile = entry.isFile();
76
- if (entryFile) {
77
- var file = entry, filePath = file.getPath();
78
- if (filePath === path) {
79
- return false;
80
- }
81
- }
82
- return true;
83
- });
84
- }
85
- },
86
- {
87
- key: "findFile",
88
- value: function findFile(filePath) {
89
- var files = this.getFiles(), file = files.findFile(function(file) {
90
- var filePathMatches = file.matchFilePath(filePath);
91
- if (filePathMatches) {
92
- return true;
93
- }
94
- }) || null;
95
- return file;
96
- }
97
- },
98
- {
99
- key: "getFiles",
100
- value: function getFiles() {
101
- var files = _files.default.fromNothing();
102
- this.mapEntry(function(entry) {
103
- var entryFile = entry.isFile();
104
- if (entryFile) {
105
- var file = entry; ///
106
- files.addFile(file);
107
- }
108
- });
109
- return files;
110
- }
111
- },
112
- {
113
- key: "getFilePaths",
114
- value: function getFilePaths() {
115
- var filePaths = this.reduceEntry(function(filePaths, entry) {
116
- var entryFile = entry.isFile();
117
- if (entryFile) {
118
- var file = entry, filePath = file.getPath();
119
- filePaths.push(filePath);
120
- }
121
- return filePaths;
122
- }, []);
123
- return filePaths;
124
- }
125
- },
126
- {
127
- key: "getDirectoryPaths",
128
- value: function getDirectoryPaths() {
129
- var directoryPaths = this.reduceEntry(function(directoryPaths, entry) {
130
- var entryDirectory = entry.isDirectory();
131
- if (entryDirectory) {
132
- var directory = entry, directoryPath = directory.getPath();
133
- directoryPaths.push(directoryPath);
134
- }
135
- return directoryPaths;
136
- }, []);
137
- return directoryPaths;
138
- }
139
- },
140
- {
141
- key: "matchShortenedVersion",
142
- value: function matchShortenedVersion(shortenedVersion) {
143
- var version = this.getVersion(), versionMatchesShortenedVersion = version.matchShortenedVersion(shortenedVersion);
144
- return versionMatchesShortenedVersion;
145
- }
146
- },
147
- {
148
- key: "addFile",
149
- value: function addFile(file) {
150
- var entry = file; ///
151
- this.addEntry(entry);
152
- }
153
- },
154
- {
155
- key: "addEntry",
156
- value: function addEntry(entry) {
157
- this.array.push(entry);
158
- }
159
- },
160
- {
161
- key: "addDirectory",
162
- value: function addDirectory(directory) {
163
- var entry = directory; ///
164
- this.addEntry(entry);
165
- }
166
- },
167
- {
168
- key: "forEachFile",
169
- value: function forEachFile(callback) {
170
- var files = this.getFiles();
171
- files.forEachFile(callback);
172
- }
173
- },
174
- {
175
- key: "mapEntry",
176
- value: function mapEntry(callback) {
177
- return this.array.map(callback);
178
- }
179
- },
180
- {
181
- key: "someEntry",
182
- value: function someEntry(callback) {
183
- return this.array.some(callback);
184
- }
185
- },
186
- {
187
- key: "everyEntry",
188
- value: function everyEntry(callback) {
189
- return this.array.every(callback);
190
- }
191
- },
192
- {
193
- key: "forEachEntry",
194
- value: function forEachEntry(callback) {
195
- this.array.forEach(callback);
196
- }
197
- },
198
- {
199
- key: "reduceEntry",
200
- value: function reduceEntry(callback, initialValue) {
201
- return this.array.reduce(callback, initialValue);
202
- }
203
- },
204
- {
205
- key: "toJSON",
206
- value: function toJSON() {
207
- var entriesJSON = this.array.map(function(entry) {
208
- var entryJSON = entry.toJSON();
209
- return entryJSON;
210
- }), json = entriesJSON; ///
211
- return json;
29
+ getArray() {
30
+ return this.array;
31
+ }
32
+ getTopmostDirectoryName() {
33
+ let topmostDirectoryName = null;
34
+ const firstEntry = first(this.array); ///
35
+ if (firstEntry) {
36
+ const firstEntryPath = firstEntry.getPath();
37
+ topmostDirectoryName = topmostDirectoryNameFromPath(firstEntryPath);
38
+ if (topmostDirectoryName === null) {
39
+ topmostDirectoryName = firstEntryPath; ///
212
40
  }
213
41
  }
214
- ], [
215
- {
216
- key: "fromJSON",
217
- value: function fromJSON(json) {
218
- var array = [], entries = new Entries(array), entriesJSON = json; ///
219
- entriesJSON.map(function(entryJSON) {
220
- var _$json = entryJSON, file = _file.default.fromJSON(_$json), directory = _directory.default.fromJSON(_$json), entry = file || directory; ///
221
- entries.addEntry(entry);
222
- });
223
- return entries;
224
- }
225
- },
226
- {
227
- key: "fromEntry",
228
- value: function fromEntry(entry) {
229
- var array = [
230
- entry
231
- ], entries = new Entries(array);
232
- return entries;
233
- }
234
- },
235
- {
236
- key: "fromNothing",
237
- value: function fromNothing() {
238
- var array = [], entries = new Entries(array);
239
- return entries;
42
+ return topmostDirectoryName;
43
+ }
44
+ removeFileByPath(path) {
45
+ filter(this.array, (entry)=>{
46
+ const entryFile = entry.isFile();
47
+ if (entryFile) {
48
+ const file = entry, filePath = file.getPath();
49
+ if (filePath === path) {
50
+ return false;
51
+ }
240
52
  }
241
- }
242
- ]);
243
- return Entries;
244
- }();
53
+ return true;
54
+ });
55
+ }
56
+ findFile(filePath) {
57
+ const files = this.getFiles(), file = files.findFile((file)=>{
58
+ const filePathMatches = file.matchFilePath(filePath);
59
+ if (filePathMatches) {
60
+ return true;
61
+ }
62
+ }) || null;
63
+ return file;
64
+ }
65
+ getFiles() {
66
+ const files = _files.default.fromNothing();
67
+ this.mapEntry((entry)=>{
68
+ const entryFile = entry.isFile();
69
+ if (entryFile) {
70
+ const file = entry; ///
71
+ files.addFile(file);
72
+ }
73
+ });
74
+ return files;
75
+ }
76
+ getFilePaths() {
77
+ const filePaths = this.reduceEntry((filePaths, entry)=>{
78
+ const entryFile = entry.isFile();
79
+ if (entryFile) {
80
+ const file = entry, filePath = file.getPath();
81
+ filePaths.push(filePath);
82
+ }
83
+ return filePaths;
84
+ }, []);
85
+ return filePaths;
86
+ }
87
+ getDirectoryPaths() {
88
+ const directoryPaths = this.reduceEntry((directoryPaths, entry)=>{
89
+ const entryDirectory = entry.isDirectory();
90
+ if (entryDirectory) {
91
+ const directory = entry, directoryPath = directory.getPath();
92
+ directoryPaths.push(directoryPath);
93
+ }
94
+ return directoryPaths;
95
+ }, []);
96
+ return directoryPaths;
97
+ }
98
+ matchShortenedVersion(shortenedVersion) {
99
+ const version = this.getVersion(), versionMatchesShortenedVersion = version.matchShortenedVersion(shortenedVersion);
100
+ return versionMatchesShortenedVersion;
101
+ }
102
+ addFile(file) {
103
+ const entry = file; ///
104
+ this.addEntry(entry);
105
+ }
106
+ addEntry(entry) {
107
+ this.array.push(entry);
108
+ }
109
+ addDirectory(directory) {
110
+ const entry = directory; ///
111
+ this.addEntry(entry);
112
+ }
113
+ forEachFile(callback) {
114
+ const files = this.getFiles();
115
+ files.forEachFile(callback);
116
+ }
117
+ mapEntry(callback) {
118
+ return this.array.map(callback);
119
+ }
120
+ someEntry(callback) {
121
+ return this.array.some(callback);
122
+ }
123
+ everyEntry(callback) {
124
+ return this.array.every(callback);
125
+ }
126
+ forEachEntry(callback) {
127
+ this.array.forEach(callback);
128
+ }
129
+ reduceEntry(callback, initialValue) {
130
+ return this.array.reduce(callback, initialValue);
131
+ }
132
+ toJSON() {
133
+ const entriesJSON = this.array.map((entry)=>{
134
+ const entryJSON = entry.toJSON();
135
+ return entryJSON;
136
+ }), json = entriesJSON; ///
137
+ return json;
138
+ }
139
+ static fromJSON(json) {
140
+ const array = [], entries = new Entries(array), entriesJSON = json; ///
141
+ entriesJSON.map((entryJSON)=>{
142
+ const json = entryJSON, file = _file.default.fromJSON(json), directory = _directory.default.fromJSON(json), entry = file || directory; ///
143
+ entries.addEntry(entry);
144
+ });
145
+ return entries;
146
+ }
147
+ static fromEntry(entry) {
148
+ const array = [
149
+ entry
150
+ ], entries = new Entries(array);
151
+ return entries;
152
+ }
153
+ static fromNothing() {
154
+ const array = [], entries = new Entries(array);
155
+ return entries;
156
+ }
157
+ }
245
158
  Object.assign(Entries.prototype, _bnf.default);
246
159
  Object.assign(Entries.prototype, _files1.default);
247
160
  Object.assign(Entries.prototype, _metaJSON.default);
248
161
  Object.assign(Entries.prototype, _vocabulary.default);
249
- var _default = Entries;
162
+ const _default = Entries;
250
163
 
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lbnRyaWVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBwYXRoVXRpbGl0aWVzLCBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IEZpbGUgZnJvbSBcIi4vZmlsZVwiO1xuaW1wb3J0IEZpbGVzIGZyb20gXCIuL2ZpbGVzXCI7XG5pbXBvcnQgRGlyZWN0b3J5IGZyb20gXCIuL2RpcmVjdG9yeVwiO1xuaW1wb3J0IGJuZk1peGlucyBmcm9tIFwiLi9taXhpbnMvYm5mXCI7XG5pbXBvcnQgZmlsZXNNaXhpbnMgZnJvbSBcIi4vbWl4aW5zL2ZpbGVzXCI7XG5pbXBvcnQgbWV0YUpTT05NaXhpbnMgZnJvbSBcIi4vbWl4aW5zL21ldGFKU09OXCI7XG5pbXBvcnQgdm9jYWJ1bGFyeU1peGlucyBmcm9tIFwiLi9taXhpbnMvdm9jYWJ1bGFyeVwiO1xuXG5jb25zdCB7IGZpcnN0LCBmaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoIH0gPSBwYXRoVXRpbGl0aWVzO1xuXG5jbGFzcyBFbnRyaWVzIHtcbiAgY29uc3RydWN0b3IoYXJyYXkpIHtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG4gIH1cblxuICBnZXRBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheTtcbiAgfVxuXG4gIGdldFRvcG1vc3REaXJlY3RvcnlOYW1lKCkge1xuICAgIGxldCB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IG51bGw7XG4gICAgXG4gICAgY29uc3QgZmlyc3RFbnRyeSA9IGZpcnN0KHRoaXMuYXJyYXkpOyAvLy9cblxuICAgIGlmIChmaXJzdEVudHJ5KSB7IC8vL1xuICAgICAgY29uc3QgZmlyc3RFbnRyeVBhdGggPSBmaXJzdEVudHJ5LmdldFBhdGgoKTtcblxuICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKGZpcnN0RW50cnlQYXRoKTtcblxuICAgICAgaWYgKHRvcG1vc3REaXJlY3RvcnlOYW1lID09PSBudWxsKSB7XG4gICAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lID0gZmlyc3RFbnRyeVBhdGg7ICAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9wbW9zdERpcmVjdG9yeU5hbWU7XG4gIH1cblxuICByZW1vdmVGaWxlQnlQYXRoKHBhdGgpIHtcbiAgICBmaWx0ZXIodGhpcy5hcnJheSwgKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeUZpbGUgPSBlbnRyeS5pc0ZpbGUoKTtcblxuICAgICAgaWYgKGVudHJ5RmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlID0gZW50cnksIC8vL1xuICAgICAgICAgICAgICBmaWxlUGF0aCA9IGZpbGUuZ2V0UGF0aCgpO1xuXG4gICAgICAgIGlmIChmaWxlUGF0aCA9PT0gcGF0aCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGZpbmRGaWxlKGZpbGVQYXRoKSB7XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLmdldEZpbGVzKCksXG4gICAgICAgICAgZmlsZSA9IGZpbGVzLmZpbmRGaWxlKChmaWxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aE1hdGNoZXMgPSBmaWxlLm1hdGNoRmlsZVBhdGgoZmlsZVBhdGgpO1xuXG4gICAgICAgICAgICBpZiAoZmlsZVBhdGhNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGdldEZpbGVzKCkge1xuICAgIGNvbnN0IGZpbGVzID0gRmlsZXMuZnJvbU5vdGhpbmcoKTtcblxuICAgIHRoaXMubWFwRW50cnkoKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeUZpbGUgPSBlbnRyeS5pc0ZpbGUoKTtcblxuICAgICAgaWYgKGVudHJ5RmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlID0gZW50cnk7IC8vL1xuXG4gICAgICAgIGZpbGVzLmFkZEZpbGUoZmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmlsZXM7XG4gIH1cblxuICBnZXRGaWxlUGF0aHMoKSB7XG4gICAgY29uc3QgZmlsZVBhdGhzID0gdGhpcy5yZWR1Y2VFbnRyeSgoZmlsZVBhdGhzLCBlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgZW50cnlGaWxlID0gZW50cnkuaXNGaWxlKCk7XG5cbiAgICAgIGlmIChlbnRyeUZpbGUpIHtcbiAgICAgICAgY29uc3QgZmlsZSA9IGVudHJ5LCAvLy9cbiAgICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlLmdldFBhdGgoKTtcblxuICAgICAgICBmaWxlUGF0aHMucHVzaChmaWxlUGF0aCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaWxlUGF0aHM7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIGZpbGVQYXRocztcbiAgfVxuXG4gIGdldERpcmVjdG9yeVBhdGhzKCkge1xuICAgIGNvbnN0IGRpcmVjdG9yeVBhdGhzID0gdGhpcy5yZWR1Y2VFbnRyeSgoZGlyZWN0b3J5UGF0aHMsIGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeURpcmVjdG9yeSA9IGVudHJ5LmlzRGlyZWN0b3J5KCk7XG5cbiAgICAgIGlmIChlbnRyeURpcmVjdG9yeSkge1xuICAgICAgICBjb25zdCBkaXJlY3RvcnkgPSBlbnRyeSwgLy8vXG4gICAgICAgICAgICAgIGRpcmVjdG9yeVBhdGggPSBkaXJlY3RvcnkuZ2V0UGF0aCgpO1xuXG4gICAgICAgIGRpcmVjdG9yeVBhdGhzLnB1c2goZGlyZWN0b3J5UGF0aCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkaXJlY3RvcnlQYXRocztcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gZGlyZWN0b3J5UGF0aHM7XG4gIH1cblxuICBtYXRjaFNob3J0ZW5lZFZlcnNpb24oc2hvcnRlbmVkVmVyc2lvbikge1xuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFZlcnNpb24oKSxcbiAgICAgICAgICB2ZXJzaW9uTWF0Y2hlc1Nob3J0ZW5lZFZlcnNpb24gPSB2ZXJzaW9uLm1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKTtcblxuICAgIHJldHVybiB2ZXJzaW9uTWF0Y2hlc1Nob3J0ZW5lZFZlcnNpb247XG4gIH1cblxuICBhZGRGaWxlKGZpbGUpIHtcbiAgICBjb25zdCBlbnRyeSA9IGZpbGU7IC8vL1xuXG4gICAgdGhpcy5hZGRFbnRyeShlbnRyeSk7XG4gIH1cblxuICBhZGRFbnRyeShlbnRyeSkgeyB0aGlzLmFycmF5LnB1c2goZW50cnkpOyB9XG5cbiAgYWRkRGlyZWN0b3J5KGRpcmVjdG9yeSkge1xuICAgIGNvbnN0IGVudHJ5ID0gZGlyZWN0b3J5OyAgLy8vXG5cbiAgICB0aGlzLmFkZEVudHJ5KGVudHJ5KTtcbiAgfVxuXG4gIGZvckVhY2hGaWxlKGNhbGxiYWNrKSB7XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLmdldEZpbGVzKCk7XG5cbiAgICBmaWxlcy5mb3JFYWNoRmlsZShjYWxsYmFjayk7XG4gIH1cblxuICBtYXBFbnRyeShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5hcnJheS5tYXAoY2FsbGJhY2spOyB9XG5cbiAgc29tZUVudHJ5KGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmFycmF5LnNvbWUoY2FsbGJhY2spOyB9XG5cbiAgZXZlcnlFbnRyeShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5hcnJheS5ldmVyeShjYWxsYmFjayk7IH1cblxuICBmb3JFYWNoRW50cnkoY2FsbGJhY2spIHsgdGhpcy5hcnJheS5mb3JFYWNoKGNhbGxiYWNrKTsgfVxuXG4gIHJlZHVjZUVudHJ5KGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHsgcmV0dXJuIHRoaXMuYXJyYXkucmVkdWNlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpOyB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGVudHJpZXNKU09OID0gdGhpcy5hcnJheS5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeUpTT04gPSBlbnRyeS50b0pTT04oKTtcbiAgXG4gICAgICAgICAgICByZXR1cm4gZW50cnlKU09OO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGpzb24gPSBlbnRyaWVzSlNPTjsgLy8vXG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgYXJyYXkgPSBbXSxcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpLFxuICAgICAgICAgIGVudHJpZXNKU09OID0ganNvbjsgLy8vXG5cbiAgICBlbnRyaWVzSlNPTi5tYXAoKGVudHJ5SlNPTikgPT4ge1xuICAgICAgY29uc3QganNvbiA9IGVudHJ5SlNPTiwgLy8vXG4gICAgICAgICAgICBmaWxlID0gRmlsZS5mcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5mcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgIGVudHJ5ID0gZmlsZSB8fCBkaXJlY3Rvcnk7ICAvLy9cblxuICAgICAgZW50cmllcy5hZGRFbnRyeShlbnRyeSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW50cmllcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRW50cnkoZW50cnkpIHtcbiAgICBjb25zdCBhcnJheSA9IFtcbiAgICAgICAgICAgIGVudHJ5XG4gICAgICAgICAgXSxcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpO1xuXG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3QgYXJyYXkgPSBbXSxcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpO1xuXG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cbn1cblxuT2JqZWN0LmFzc2lnbihFbnRyaWVzLnByb3RvdHlwZSwgYm5mTWl4aW5zKTtcbk9iamVjdC5hc3NpZ24oRW50cmllcy5wcm90b3R5cGUsIGZpbGVzTWl4aW5zKTtcbk9iamVjdC5hc3NpZ24oRW50cmllcy5wcm90b3R5cGUsIG1ldGFKU09OTWl4aW5zKTtcbk9iamVjdC5hc3NpZ24oRW50cmllcy5wcm90b3R5cGUsIHZvY2FidWxhcnlNaXhpbnMpO1xuXG5leHBvcnQgZGVmYXVsdCBFbnRyaWVzO1xuIl0sIm5hbWVzIjpbImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJmaWx0ZXIiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoIiwicGF0aFV0aWxpdGllcyIsIkVudHJpZXMiLCJhcnJheSIsImdldEFycmF5IiwiZ2V0VG9wbW9zdERpcmVjdG9yeU5hbWUiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZSIsImZpcnN0RW50cnkiLCJmaXJzdEVudHJ5UGF0aCIsImdldFBhdGgiLCJyZW1vdmVGaWxlQnlQYXRoIiwicGF0aCIsImVudHJ5IiwiZW50cnlGaWxlIiwiaXNGaWxlIiwiZmlsZSIsImZpbGVQYXRoIiwiZmluZEZpbGUiLCJmaWxlcyIsImdldEZpbGVzIiwiZmlsZVBhdGhNYXRjaGVzIiwibWF0Y2hGaWxlUGF0aCIsIkZpbGVzIiwiZnJvbU5vdGhpbmciLCJtYXBFbnRyeSIsImFkZEZpbGUiLCJnZXRGaWxlUGF0aHMiLCJmaWxlUGF0aHMiLCJyZWR1Y2VFbnRyeSIsInB1c2giLCJnZXREaXJlY3RvcnlQYXRocyIsImRpcmVjdG9yeVBhdGhzIiwiZW50cnlEaXJlY3RvcnkiLCJpc0RpcmVjdG9yeSIsImRpcmVjdG9yeSIsImRpcmVjdG9yeVBhdGgiLCJtYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJzaG9ydGVuZWRWZXJzaW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJ2ZXJzaW9uTWF0Y2hlc1Nob3J0ZW5lZFZlcnNpb24iLCJhZGRFbnRyeSIsImFkZERpcmVjdG9yeSIsImZvckVhY2hGaWxlIiwiY2FsbGJhY2siLCJtYXAiLCJzb21lRW50cnkiLCJzb21lIiwiZXZlcnlFbnRyeSIsImV2ZXJ5IiwiZm9yRWFjaEVudHJ5IiwiZm9yRWFjaCIsImluaXRpYWxWYWx1ZSIsInJlZHVjZSIsInRvSlNPTiIsImVudHJpZXNKU09OIiwiZW50cnlKU09OIiwianNvbiIsImZyb21KU09OIiwiZW50cmllcyIsIkZpbGUiLCJEaXJlY3RvcnkiLCJmcm9tRW50cnkiLCJPYmplY3QiLCJhc3NpZ24iLCJwcm90b3R5cGUiLCJibmZNaXhpbnMiLCJmaWxlc01peGlucyIsIm1ldGFKU09OTWl4aW5zIiwidm9jYWJ1bGFyeU1peGlucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBaU5BOzs7ZUFBQTs7O3lCQS9NOEM7MkRBRTdCOzREQUNDO2dFQUNJOzBEQUNBOzZEQUNFOytEQUNHO2lFQUNFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTdCLElBQVFBLFFBQWtCQyx5QkFBYyxDQUFoQ0QsT0FBT0UsU0FBV0QseUJBQWMsQ0FBekJDLFFBQ1QsQUFBRUMsK0JBQWlDQyx3QkFBYSxDQUE5Q0Q7QUFFUixJQUFBLEFBQU1FLHdCQUFOO2FBQU1BLFFBQ1FDLEtBQUs7Z0NBRGJEO1FBRUYsSUFBSSxDQUFDQyxLQUFLLEdBQUdBOztrQkFGWEQ7O1lBS0pFLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0QsS0FBSztZQUNuQjs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFJQyx1QkFBdUI7Z0JBRTNCLElBQU1DLGFBQWFWLE1BQU0sSUFBSSxDQUFDTSxLQUFLLEdBQUcsR0FBRztnQkFFekMsSUFBSUksWUFBWTtvQkFDZCxJQUFNQyxpQkFBaUJELFdBQVdFLE9BQU87b0JBRXpDSCx1QkFBdUJOLDZCQUE2QlE7b0JBRXBELElBQUlGLHlC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
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lbnRyaWVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBwYXRoVXRpbGl0aWVzLCBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IEZpbGUgZnJvbSBcIi4vZmlsZVwiO1xuaW1wb3J0IEZpbGVzIGZyb20gXCIuL2ZpbGVzXCI7XG5pbXBvcnQgRGlyZWN0b3J5IGZyb20gXCIuL2RpcmVjdG9yeVwiO1xuaW1wb3J0IGJuZk1peGlucyBmcm9tIFwiLi9taXhpbnMvYm5mXCI7XG5pbXBvcnQgZmlsZXNNaXhpbnMgZnJvbSBcIi4vbWl4aW5zL2ZpbGVzXCI7XG5pbXBvcnQgbWV0YUpTT05NaXhpbnMgZnJvbSBcIi4vbWl4aW5zL21ldGFKU09OXCI7XG5pbXBvcnQgdm9jYWJ1bGFyeU1peGlucyBmcm9tIFwiLi9taXhpbnMvdm9jYWJ1bGFyeVwiO1xuXG5jb25zdCB7IGZpcnN0LCBmaWx0ZXIgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoIH0gPSBwYXRoVXRpbGl0aWVzO1xuXG5jbGFzcyBFbnRyaWVzIHtcbiAgY29uc3RydWN0b3IoYXJyYXkpIHtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG4gIH1cblxuICBnZXRBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheTtcbiAgfVxuXG4gIGdldFRvcG1vc3REaXJlY3RvcnlOYW1lKCkge1xuICAgIGxldCB0b3Btb3N0RGlyZWN0b3J5TmFtZSA9IG51bGw7XG4gICAgXG4gICAgY29uc3QgZmlyc3RFbnRyeSA9IGZpcnN0KHRoaXMuYXJyYXkpOyAvLy9cblxuICAgIGlmIChmaXJzdEVudHJ5KSB7IC8vL1xuICAgICAgY29uc3QgZmlyc3RFbnRyeVBhdGggPSBmaXJzdEVudHJ5LmdldFBhdGgoKTtcblxuICAgICAgdG9wbW9zdERpcmVjdG9yeU5hbWUgPSB0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoKGZpcnN0RW50cnlQYXRoKTtcblxuICAgICAgaWYgKHRvcG1vc3REaXJlY3RvcnlOYW1lID09PSBudWxsKSB7XG4gICAgICAgIHRvcG1vc3REaXJlY3RvcnlOYW1lID0gZmlyc3RFbnRyeVBhdGg7ICAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9wbW9zdERpcmVjdG9yeU5hbWU7XG4gIH1cblxuICByZW1vdmVGaWxlQnlQYXRoKHBhdGgpIHtcbiAgICBmaWx0ZXIodGhpcy5hcnJheSwgKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeUZpbGUgPSBlbnRyeS5pc0ZpbGUoKTtcblxuICAgICAgaWYgKGVudHJ5RmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlID0gZW50cnksIC8vL1xuICAgICAgICAgICAgICBmaWxlUGF0aCA9IGZpbGUuZ2V0UGF0aCgpO1xuXG4gICAgICAgIGlmIChmaWxlUGF0aCA9PT0gcGF0aCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGZpbmRGaWxlKGZpbGVQYXRoKSB7XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLmdldEZpbGVzKCksXG4gICAgICAgICAgZmlsZSA9IGZpbGVzLmZpbmRGaWxlKChmaWxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlUGF0aE1hdGNoZXMgPSBmaWxlLm1hdGNoRmlsZVBhdGgoZmlsZVBhdGgpO1xuXG4gICAgICAgICAgICBpZiAoZmlsZVBhdGhNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGdldEZpbGVzKCkge1xuICAgIGNvbnN0IGZpbGVzID0gRmlsZXMuZnJvbU5vdGhpbmcoKTtcblxuICAgIHRoaXMubWFwRW50cnkoKGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeUZpbGUgPSBlbnRyeS5pc0ZpbGUoKTtcblxuICAgICAgaWYgKGVudHJ5RmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlID0gZW50cnk7IC8vL1xuXG4gICAgICAgIGZpbGVzLmFkZEZpbGUoZmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmlsZXM7XG4gIH1cblxuICBnZXRGaWxlUGF0aHMoKSB7XG4gICAgY29uc3QgZmlsZVBhdGhzID0gdGhpcy5yZWR1Y2VFbnRyeSgoZmlsZVBhdGhzLCBlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgZW50cnlGaWxlID0gZW50cnkuaXNGaWxlKCk7XG5cbiAgICAgIGlmIChlbnRyeUZpbGUpIHtcbiAgICAgICAgY29uc3QgZmlsZSA9IGVudHJ5LCAvLy9cbiAgICAgICAgICAgICAgZmlsZVBhdGggPSBmaWxlLmdldFBhdGgoKTtcblxuICAgICAgICBmaWxlUGF0aHMucHVzaChmaWxlUGF0aCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmaWxlUGF0aHM7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIGZpbGVQYXRocztcbiAgfVxuXG4gIGdldERpcmVjdG9yeVBhdGhzKCkge1xuICAgIGNvbnN0IGRpcmVjdG9yeVBhdGhzID0gdGhpcy5yZWR1Y2VFbnRyeSgoZGlyZWN0b3J5UGF0aHMsIGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBlbnRyeURpcmVjdG9yeSA9IGVudHJ5LmlzRGlyZWN0b3J5KCk7XG5cbiAgICAgIGlmIChlbnRyeURpcmVjdG9yeSkge1xuICAgICAgICBjb25zdCBkaXJlY3RvcnkgPSBlbnRyeSwgLy8vXG4gICAgICAgICAgICAgIGRpcmVjdG9yeVBhdGggPSBkaXJlY3RvcnkuZ2V0UGF0aCgpO1xuXG4gICAgICAgIGRpcmVjdG9yeVBhdGhzLnB1c2goZGlyZWN0b3J5UGF0aCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkaXJlY3RvcnlQYXRocztcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gZGlyZWN0b3J5UGF0aHM7XG4gIH1cblxuICBtYXRjaFNob3J0ZW5lZFZlcnNpb24oc2hvcnRlbmVkVmVyc2lvbikge1xuICAgIGNvbnN0IHZlcnNpb24gPSB0aGlzLmdldFZlcnNpb24oKSxcbiAgICAgICAgICB2ZXJzaW9uTWF0Y2hlc1Nob3J0ZW5lZFZlcnNpb24gPSB2ZXJzaW9uLm1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKTtcblxuICAgIHJldHVybiB2ZXJzaW9uTWF0Y2hlc1Nob3J0ZW5lZFZlcnNpb247XG4gIH1cblxuICBhZGRGaWxlKGZpbGUpIHtcbiAgICBjb25zdCBlbnRyeSA9IGZpbGU7IC8vL1xuXG4gICAgdGhpcy5hZGRFbnRyeShlbnRyeSk7XG4gIH1cblxuICBhZGRFbnRyeShlbnRyeSkgeyB0aGlzLmFycmF5LnB1c2goZW50cnkpOyB9XG5cbiAgYWRkRGlyZWN0b3J5KGRpcmVjdG9yeSkge1xuICAgIGNvbnN0IGVudHJ5ID0gZGlyZWN0b3J5OyAgLy8vXG5cbiAgICB0aGlzLmFkZEVudHJ5KGVudHJ5KTtcbiAgfVxuXG4gIGZvckVhY2hGaWxlKGNhbGxiYWNrKSB7XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLmdldEZpbGVzKCk7XG5cbiAgICBmaWxlcy5mb3JFYWNoRmlsZShjYWxsYmFjayk7XG4gIH1cblxuICBtYXBFbnRyeShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5hcnJheS5tYXAoY2FsbGJhY2spOyB9XG5cbiAgc29tZUVudHJ5KGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmFycmF5LnNvbWUoY2FsbGJhY2spOyB9XG5cbiAgZXZlcnlFbnRyeShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5hcnJheS5ldmVyeShjYWxsYmFjayk7IH1cblxuICBmb3JFYWNoRW50cnkoY2FsbGJhY2spIHsgdGhpcy5hcnJheS5mb3JFYWNoKGNhbGxiYWNrKTsgfVxuXG4gIHJlZHVjZUVudHJ5KGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHsgcmV0dXJuIHRoaXMuYXJyYXkucmVkdWNlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpOyB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGVudHJpZXNKU09OID0gdGhpcy5hcnJheS5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeUpTT04gPSBlbnRyeS50b0pTT04oKTtcbiAgXG4gICAgICAgICAgICByZXR1cm4gZW50cnlKU09OO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGpzb24gPSBlbnRyaWVzSlNPTjsgLy8vXG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgY29uc3QgYXJyYXkgPSBbXSxcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpLFxuICAgICAgICAgIGVudHJpZXNKU09OID0ganNvbjsgLy8vXG5cbiAgICBlbnRyaWVzSlNPTi5tYXAoKGVudHJ5SlNPTikgPT4ge1xuICAgICAgY29uc3QganNvbiA9IGVudHJ5SlNPTiwgLy8vXG4gICAgICAgICAgICBmaWxlID0gRmlsZS5mcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5mcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgIGVudHJ5ID0gZmlsZSB8fCBkaXJlY3Rvcnk7ICAvLy9cblxuICAgICAgZW50cmllcy5hZGRFbnRyeShlbnRyeSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW50cmllcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRW50cnkoZW50cnkpIHtcbiAgICBjb25zdCBhcnJheSA9IFtcbiAgICAgICAgICAgIGVudHJ5XG4gICAgICAgICAgXSxcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpO1xuXG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cblxuICBzdGF0aWMgZnJvbU5vdGhpbmcoKSB7XG4gICAgY29uc3QgYXJyYXkgPSBbXSxcbiAgICAgICAgICBlbnRyaWVzID0gbmV3IEVudHJpZXMoYXJyYXkpO1xuXG4gICAgcmV0dXJuIGVudHJpZXM7XG4gIH1cbn1cblxuT2JqZWN0LmFzc2lnbihFbnRyaWVzLnByb3RvdHlwZSwgYm5mTWl4aW5zKTtcbk9iamVjdC5hc3NpZ24oRW50cmllcy5wcm90b3R5cGUsIGZpbGVzTWl4aW5zKTtcbk9iamVjdC5hc3NpZ24oRW50cmllcy5wcm90b3R5cGUsIG1ldGFKU09OTWl4aW5zKTtcbk9iamVjdC5hc3NpZ24oRW50cmllcy5wcm90b3R5cGUsIHZvY2FidWxhcnlNaXhpbnMpO1xuXG5leHBvcnQgZGVmYXVsdCBFbnRyaWVzO1xuIl0sIm5hbWVzIjpbImZpcnN0IiwiZmlsdGVyIiwiYXJyYXlVdGlsaXRpZXMiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZUZyb21QYXRoIiwicGF0aFV0aWxpdGllcyIsIkVudHJpZXMiLCJhcnJheSIsImdldEFycmF5IiwiZ2V0VG9wbW9zdERpcmVjdG9yeU5hbWUiLCJ0b3Btb3N0RGlyZWN0b3J5TmFtZSIsImZpcnN0RW50cnkiLCJmaXJzdEVudHJ5UGF0aCIsImdldFBhdGgiLCJyZW1vdmVGaWxlQnlQYXRoIiwicGF0aCIsImVudHJ5IiwiZW50cnlGaWxlIiwiaXNGaWxlIiwiZmlsZSIsImZpbGVQYXRoIiwiZmluZEZpbGUiLCJmaWxlcyIsImdldEZpbGVzIiwiZmlsZVBhdGhNYXRjaGVzIiwibWF0Y2hGaWxlUGF0aCIsIkZpbGVzIiwiZnJvbU5vdGhpbmciLCJtYXBFbnRyeSIsImFkZEZpbGUiLCJnZXRGaWxlUGF0aHMiLCJmaWxlUGF0aHMiLCJyZWR1Y2VFbnRyeSIsInB1c2giLCJnZXREaXJlY3RvcnlQYXRocyIsImRpcmVjdG9yeVBhdGhzIiwiZW50cnlEaXJlY3RvcnkiLCJpc0RpcmVjdG9yeSIsImRpcmVjdG9yeSIsImRpcmVjdG9yeVBhdGgiLCJtYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJzaG9ydGVuZWRWZXJzaW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJ2ZXJzaW9uTWF0Y2hlc1Nob3J0ZW5lZFZlcnNpb24iLCJhZGRFbnRyeSIsImFkZERpcmVjdG9yeSIsImZvckVhY2hGaWxlIiwiY2FsbGJhY2siLCJtYXAiLCJzb21lRW50cnkiLCJzb21lIiwiZXZlcnlFbnRyeSIsImV2ZXJ5IiwiZm9yRWFjaEVudHJ5IiwiZm9yRWFjaCIsImluaXRpYWxWYWx1ZSIsInJlZHVjZSIsInRvSlNPTiIsImVudHJpZXNKU09OIiwiZW50cnlKU09OIiwianNvbiIsImZyb21KU09OIiwiZW50cmllcyIsIkZpbGUiLCJEaXJlY3RvcnkiLCJmcm9tRW50cnkiLCJPYmplY3QiLCJhc3NpZ24iLCJwcm90b3R5cGUiLCJibmZNaXhpbnMiLCJmaWxlc01peGlucyIsIm1ldGFKU09OTWl4aW5zIiwidm9jYWJ1bGFyeU1peGlucyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBaU5BOzs7ZUFBQTs7OzJCQS9NOEM7NkRBRTdCOzhEQUNDO2tFQUNJOzREQUNBOytEQUNFO2lFQUNHO21FQUNFOzs7Ozs7QUFFN0IsTUFBTSxFQUFFQSxLQUFLLEVBQUVDLE1BQU0sRUFBRSxHQUFHQyx5QkFBYyxFQUNsQyxFQUFFQyw0QkFBNEIsRUFBRSxHQUFHQyx3QkFBYTtBQUV0RCxNQUFNQztJQUNKLFlBQVlDLEtBQUssQ0FBRTtRQUNqQixJQUFJLENBQUNBLEtBQUssR0FBR0E7SUFDZjtJQUVBQyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNELEtBQUs7SUFDbkI7SUFFQUUsMEJBQTBCO1FBQ3hCLElBQUlDLHVCQUF1QjtRQUUzQixNQUFNQyxhQUFhVixNQUFNLElBQUksQ0FBQ00sS0FBSyxHQUFHLEdBQUc7UUFFekMsSUFBSUksWUFBWTtZQUNkLE1BQU1DLGlCQUFpQkQsV0FBV0UsT0FBTztZQUV6Q0gsdUJBQXVCTiw2QkFBNkJRO1lBRXBELElBQUlGLHlCQUF5QixNQUFNO2dCQUNqQ0EsdUJBQXVCRSxnQkFBaUIsR0FBRztZQUM3QztRQUNGO1FBRUEsT0FBT0Y7SUFDVDtJQUVBSSxpQkFBaUJDLElBQUksRUFBRTtRQUNyQmIsT0FBTyxJQUFJLENBQUNLLEtBQUssRUFBRSxDQUFDUztZQUNsQixNQUFNQyxZQUFZRCxNQUFNRSxNQUFNO1lBRTlCLElBQUlELFdBQVc7Z0JBQ2IsTUFBTUUsT0FBT0gsT0FDUEksV0FBV0QsS0FBS04sT0FBTztnQkFFN0IsSUFBSU8sYUFBYUwsTUFBTTtvQkFDckIsT0FBTztnQkFDVDtZQUNGO1lBRUEsT0FBTztRQUNUO0lBQ0Y7SUFFQU0sU0FBU0QsUUFBUSxFQUFFO1FBQ2pCLE1BQU1FLFFBQVEsSUFBSSxDQUFDQyxRQUFRLElBQ3JCSixPQUFPRyxNQUFNRCxRQUFRLENBQUMsQ0FBQ0Y7WUFDckIsTUFBTUssa0JBQWtCTCxLQUFLTSxhQUFhLENBQUNMO1lBRTNDLElBQUlJLGlCQUFpQjtnQkFDbkIsT0FBTztZQUNUO1FBQ0YsTUFBTTtRQUVaLE9BQU9MO0lBQ1Q7SUFFQUksV0FBVztRQUNULE1BQU1ELFFBQVFJLGNBQUssQ0FBQ0MsV0FBVztRQUUvQixJQUFJLENBQUNDLFFBQVEsQ0FBQyxDQUFDWjtZQUNiLE1BQU1DLFlBQVlELE1BQU1FLE1BQU07WUFFOUIsSUFBSUQsV0FBVztnQkFDYixNQUFNRSxPQUFPSCxPQUFPLEdBQUc7Z0JBRXZCTSxNQUFNTyxPQUFPLENBQUNWO1lBQ2hCO1FBQ0Y7UUFFQSxPQUFPRztJQUNUO0lBRUFRLGVBQWU7UUFDYixNQUFNQyxZQUFZLElBQUksQ0FBQ0MsV0FBVyxDQUFDLENBQUNELFdBQVdmO1lBQzdDLE1BQU1DLFlBQVlELE1BQU1FLE1BQU07WUFFOUIsSUFBSUQsV0FBVztnQkFDYixNQUFNRSxPQUFPSCxPQUNQSSxXQUFXRCxLQUFLTixPQUFPO2dCQUU3QmtCLFVBQVVFLElBQUksQ0FBQ2I7WUFDakI7WUFFQSxPQUFPVztRQUNULEdBQUcsRUFBRTtRQUVMLE9BQU9BO0lBQ1Q7SUFFQUcsb0JBQW9CO1FBQ2xCLE1BQU1DLGlCQUFpQixJQUFJLENBQUNILFdBQVcsQ0FBQyxDQUFDRyxnQkFBZ0JuQjtZQUN2RCxNQUFNb0IsaUJBQWlCcEIsTUFBTXFCLFdBQVc7WUFFeEMsSUFBSUQsZ0JBQWdCO2dCQUNsQixNQUFNRSxZQUFZdEIsT0FDWnVCLGdCQUFnQkQsVUFBVXpCLE9BQU87Z0JBRXZDc0IsZUFBZUYsSUFBSSxDQUFDTTtZQUN0QjtZQUVBLE9BQU9KO1FBQ1QsR0FBRyxFQUFFO1FBRUwsT0FBT0E7SUFDVDtJQUVBSyxzQkFBc0JDLGdCQUFnQixFQUFFO1FBQ3RDLE1BQU1DLFVBQVUsSUFBSSxDQUFDQyxVQUFVLElBQ3pCQyxpQ0FBaUNGLFFBQVFGLHFCQUFxQixDQUFDQztRQUVyRSxPQUFPRztJQUNUO0lBRUFmLFFBQVFWLElBQUksRUFBRTtRQUNaLE1BQU1ILFFBQVFHLE1BQU0sR0FBRztRQUV2QixJQUFJLENBQUMwQixRQUFRLENBQUM3QjtJQUNoQjtJQUVBNkIsU0FBUzdCLEtBQUssRUFBRTtRQUFFLElBQUksQ0FBQ1QsS0FBSyxDQUFDMEIsSUFBSSxDQUFDakI7SUFBUTtJQUUxQzhCLGFBQWFSLFNBQVMsRUFBRTtRQUN0QixNQUFNdEIsUUFBUXNCLFdBQVksR0FBRztRQUU3QixJQUFJLENBQUNPLFFBQVEsQ0FBQzdCO0lBQ2hCO0lBRUErQixZQUFZQyxRQUFRLEVBQUU7UUFDcEIsTUFBTTFCLFFBQVEsSUFBSSxDQUFDQyxRQUFRO1FBRTNCRCxNQUFNeUIsV0FBVyxDQUFDQztJQUNwQjtJQUVBcEIsU0FBU29CLFFBQVEsRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDekMsS0FBSyxDQUFDMEMsR0FBRyxDQUFDRDtJQUFXO0lBRXRERSxVQUFVRixRQUFRLEVBQUU7UUFBRSxPQUFPLElBQUksQ0FBQ3pDLEtBQUssQ0FBQzRDLElBQUksQ0FBQ0g7SUFBVztJQUV4REksV0FBV0osUUFBUSxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUN6QyxLQUFLLENBQUM4QyxLQUFLLENBQUNMO0lBQVc7SUFFMURNLGFBQWFOLFFBQVEsRUFBRTtRQUFFLElBQUksQ0FBQ3pDLEtBQUssQ0FBQ2dELE9BQU8sQ0FBQ1A7SUFBVztJQUV2RGhCLFlBQVlnQixRQUFRLEVBQUVRLFlBQVksRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDakQsS0FBSyxDQUFDa0QsTUFBTSxDQUFDVCxVQUFVUTtJQUFlO0lBRXhGRSxTQUFTO1FBQ1AsTUFBTUMsY0FBYyxJQUFJLENBQUNwRCxLQUFLLENBQUMwQyxHQUFHLENBQUMsQ0FBQ2pDO1lBQzVCLE1BQU00QyxZQUFZNUMsTUFBTTBDLE1BQU07WUFFOUIsT0FBT0U7UUFDVCxJQUNBQyxPQUFPRixhQUFhLEdBQUc7UUFFN0IsT0FBT0U7SUFDVDtJQUVBLE9BQU9DLFNBQVNELElBQUksRUFBRTtRQUNwQixNQUFNdEQsUUFBUSxFQUFFLEVBQ1Z3RCxVQUFVLElBQUl6RCxRQUFRQyxRQUN0Qm9ELGNBQWNFLE1BQU0sR0FBRztRQUU3QkYsWUFBWVYsR0FBRyxDQUFDLENBQUNXO1lBQ2YsTUFBTUMsT0FBT0QsV0FDUHpDLE9BQU82QyxhQUFJLENBQUNGLFFBQVEsQ0FBQ0QsT0FDckJ2QixZQUFZMkIsa0JBQVMsQ0FBQ0gsUUFBUSxDQUFDRCxPQUMvQjdDLFFBQVFHLFFBQVFtQixXQUFZLEdBQUc7WUFFckN5QixRQUFRbEIsUUFBUSxDQUFDN0I7UUFDbkI7UUFFQSxPQUFPK0M7SUFDVDtJQUVBLE9BQU9HLFVBQVVsRCxLQUFLLEVBQUU7UUFDdEIsTUFBTVQsUUFBUTtZQUNOUztTQUNELEVBQ0QrQyxVQUFVLElBQUl6RCxRQUFRQztRQUU1QixPQUFPd0Q7SUFDVDtJQUVBLE9BQU9wQyxjQUFjO1FBQ25CLE1BQU1wQixRQUFRLEVBQUUsRUFDVndELFVBQVUsSUFBSXpELFFBQVFDO1FBRTVCLE9BQU93RDtJQUNUO0FBQ0Y7QUFFQUksT0FBT0MsTUFBTSxDQUFDOUQsUUFBUStELFNBQVMsRUFBRUMsWUFBUztBQUMxQ0gsT0FBT0MsTUFBTSxDQUFDOUQsUUFBUStELFNBQVMsRUFBRUUsZUFBVztBQUM1Q0osT0FBT0MsTUFBTSxDQUFDOUQsUUFBUStELFNBQVMsRUFBRUcsaUJBQWM7QUFDL0NMLE9BQU9DLE1BQU0sQ0FBQzlELFFBQVErRCxTQUFTLEVBQUVJLG1CQUFnQjtNQUVqRCxXQUFlbkUifQ==