@magic-xpa/mscorelib 4.800.0-dev480.22 → 4.800.0-dev480.220

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 (40) hide show
  1. package/bundles/magic-xpa-mscorelib.umd.js +50 -164
  2. package/bundles/magic-xpa-mscorelib.umd.js.map +1 -1
  3. package/bundles/magic-xpa-mscorelib.umd.min.js +1 -1
  4. package/bundles/magic-xpa-mscorelib.umd.min.js.map +1 -1
  5. package/esm2015/index.js +1 -1
  6. package/esm2015/magic-xpa-mscorelib.js +1 -4
  7. package/esm2015/src/ApplicationException.js +1 -1
  8. package/esm2015/src/ArrayEnumerator.js +1 -1
  9. package/esm2015/src/BitArray.js +2 -22
  10. package/esm2015/src/Char.js +1 -1
  11. package/esm2015/src/CultureInfo.js +1 -1
  12. package/esm2015/src/DateTime.js +1 -6
  13. package/esm2015/src/Debug.js +1 -1
  14. package/esm2015/src/Dictionary.js +1 -1
  15. package/esm2015/src/Encoding.js +44 -52
  16. package/esm2015/src/Exception.js +1 -14
  17. package/esm2015/src/HashTable.js +3 -20
  18. package/esm2015/src/IComparable.js +1 -1
  19. package/esm2015/src/ISO_8859_1_Encoding.js +1 -1
  20. package/esm2015/src/Int32.js +1 -1
  21. package/esm2015/src/Int64.js +1 -1
  22. package/esm2015/src/List.js +2 -6
  23. package/esm2015/src/NChar.js +1 -1
  24. package/esm2015/src/NNumber.js +2 -15
  25. package/esm2015/src/NString.js +2 -8
  26. package/esm2015/src/NotImplementedException.js +1 -1
  27. package/esm2015/src/NumberFormatInfo.js +2 -2
  28. package/esm2015/src/RefParam.js +1 -1
  29. package/esm2015/src/Stack.js +1 -1
  30. package/esm2015/src/StackFrame.js +1 -3
  31. package/esm2015/src/StackTrace.js +1 -6
  32. package/esm2015/src/StringBuilder.js +1 -15
  33. package/esm2015/src/StringUtils.js +1 -1
  34. package/esm2015/src/Thread.js +1 -5
  35. package/esm2015/src/WebException.js +1 -1
  36. package/esm2015/src/XmlConvert.js +1 -2
  37. package/fesm2015/magic-xpa-mscorelib.js +50 -164
  38. package/fesm2015/magic-xpa-mscorelib.js.map +1 -1
  39. package/magic-xpa-mscorelib.d.ts +0 -3
  40. package/package.json +1 -1
@@ -1,10 +1,7 @@
1
- // Reference: https://github.com/rkostrzewski/hashtable-ts/blob/master/src/hashtable.ts
2
1
  import { Array_Enumerator } from "./ArrayEnumerator";
3
2
  import { Exception } from "./Exception";
4
3
  import { Encoding } from "./Encoding";
5
4
  export class HashUtils {
6
- // Pay attention that in server there is the same function and it must
7
- // return the same hash value.
8
5
  static GetHashCode(str) {
9
6
  let bytes = null;
10
7
  bytes = Encoding.UTF8.GetBytes(str);
@@ -31,11 +28,10 @@ export class HashUtils {
31
28
  }
32
29
  }
33
30
  const HashTableLoadFactor = 0.75;
34
- // Hashtable implementation for key TKey and Value TValue
35
31
  export class Hashtable {
36
32
  constructor(bucketCount = 8, loadFactor = HashTableLoadFactor) {
37
- this._buckets = []; // total no. of buckets
38
- this._elementsCount = 0; // total elements
33
+ this._buckets = [];
34
+ this._elementsCount = 0;
39
35
  this._bucketCount = 0;
40
36
  this._loadFactor = 0;
41
37
  this._bucketCount = bucketCount;
@@ -44,7 +40,6 @@ export class Hashtable {
44
40
  throw new Exception('Bucket count must be a positive number and be multiple of 2.');
45
41
  }
46
42
  }
47
- // Generic Hash funtion
48
43
  HashFunction(key) {
49
44
  if (typeof key.GetHashCode === 'function') {
50
45
  return key.GetHashCode();
@@ -57,11 +52,9 @@ export class Hashtable {
57
52
  }
58
53
  return 0;
59
54
  }
60
- // returns elementCount
61
55
  get Count() {
62
56
  return this._elementsCount;
63
57
  }
64
- // returns ValueCollection (Array Enumerator)
65
58
  get Values() {
66
59
  let array = [];
67
60
  this._buckets.forEach(b => b.forEach(item => {
@@ -69,7 +62,6 @@ export class Hashtable {
69
62
  }));
70
63
  return new Array_Enumerator(array);
71
64
  }
72
- // returns KeyCollection (Array Enumerator)
73
65
  get Keys() {
74
66
  let array = [];
75
67
  this._buckets.forEach(b => b.forEach(item => {
@@ -77,15 +69,12 @@ export class Hashtable {
77
69
  }));
78
70
  return new Array_Enumerator(array);
79
71
  }
80
- // adds item to Hashtable
81
72
  Add(key, value) {
82
73
  this.Insert(key, value, true);
83
74
  }
84
- // sets item in Hashtable
85
75
  set_Item(key, value) {
86
76
  this.Insert(key, value, false);
87
77
  }
88
- // Insert element in Hashtable
89
78
  Insert(key, value, add) {
90
79
  let bucketIndex = this.GetBucketIndex(key);
91
80
  if (typeof this._buckets[bucketIndex] === "undefined") {
@@ -106,7 +95,6 @@ export class Hashtable {
106
95
  this.Resize(this._bucketCount * 2);
107
96
  }
108
97
  }
109
- // Gets value for key TKey
110
98
  get_Item(key) {
111
99
  let bucketIndex = this.GetBucketIndex(key);
112
100
  let bucket = this._buckets[bucketIndex];
@@ -119,7 +107,6 @@ export class Hashtable {
119
107
  }
120
108
  return null;
121
109
  }
122
- // Returns if key TKey is present in Hashtable
123
110
  ContainsKey(key) {
124
111
  let bucketIndex = this.GetBucketIndex(key);
125
112
  let bucket = this._buckets[bucketIndex];
@@ -129,7 +116,6 @@ export class Hashtable {
129
116
  let itemIndex = bucket.findIndex(x => x.key === key);
130
117
  return (itemIndex > -1);
131
118
  }
132
- // Removes item with key TKey from Hashtable
133
119
  Remove(key) {
134
120
  let bucketIndex = this.GetBucketIndex(key);
135
121
  let bucket = this._buckets[bucketIndex];
@@ -145,7 +131,6 @@ export class Hashtable {
145
131
  }
146
132
  }
147
133
  }
148
- // Resize bucket (Hashtable)
149
134
  Resize(newBucketCount) {
150
135
  let _oldBuckets = this._buckets;
151
136
  this._elementsCount = 0;
@@ -153,7 +138,6 @@ export class Hashtable {
153
138
  this._bucketCount = newBucketCount;
154
139
  _oldBuckets.forEach(b => b.forEach(item => this.Add(item.key, item.value)));
155
140
  }
156
- // returns bucketIndex for key
157
141
  GetBucketIndex(key) {
158
142
  let hash = this.HashFunction(key);
159
143
  if (hash % 1 !== 0) {
@@ -165,10 +149,9 @@ export class Hashtable {
165
149
  }
166
150
  return index;
167
151
  }
168
- // Clears Hashtable
169
152
  Clear() {
170
153
  this._elementsCount = 0;
171
154
  this._buckets = [];
172
155
  }
173
156
  }
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFzaFRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbXNjb3JlbGliL3NyYy9IYXNoVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUZBQXVGO0FBRXZGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUVwQyxNQUFNLE9BQU8sU0FBUztJQUNwQixzRUFBc0U7SUFDdEUsOEJBQThCO0lBQzlCLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBVztRQUM1QixJQUFJLEtBQUssR0FBZSxJQUFJLENBQUM7UUFFN0IsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLE9BQU8sU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFxQjtRQUM5QyxJQUFJLE9BQWUsQ0FBQztRQUVwQixJQUFJLEtBQUssR0FBVyxJQUFJLENBQUM7UUFDekIsSUFBSSxLQUFLLEdBQVcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBUyxDQUFDO1FBRWQsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwRCxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxNQUFNO2dCQUM5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RUFBRTtZQUNsQixNQUFNLElBQUksU0FBUyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7U0FDeEQ7UUFFRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFL0MsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzNDLE1BQU0sSUFBSSxTQUFTLENBQUMsaUNBQWlDLENBQUMsQ0FBQztTQUN4RDtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVILG1CQUFtQjtJQUNqQixLQUFLO1FBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVmZXJlbmNlOiBodHRwczovL2dpdGh1Yi5jb20vcmtvc3RyemV3c2tpL2hhc2h0YWJsZS10cy9ibG9iL21hc3Rlci9zcmMvaGFzaHRhYmxlLnRzXHJcblxyXG5pbXBvcnQge0FycmF5X0VudW1lcmF0b3J9IGZyb20gXCIuL0FycmF5RW51bWVyYXRvclwiO1xyXG5pbXBvcnQge0V4Y2VwdGlvbn0gZnJvbSBcIi4vRXhjZXB0aW9uXCI7XHJcbmltcG9ydCB7RW5jb2Rpbmd9IGZyb20gXCIuL0VuY29kaW5nXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgSGFzaFV0aWxzIHtcclxuICAvLyBQYXkgYXR0ZW50aW9uIHRoYXQgaW4gc2VydmVyIHRoZXJlIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFuZCBpdCBtdXN0XHJcbiAgLy8gcmV0dXJuIHRoZSBzYW1lIGhhc2ggdmFsdWUuXHJcbiAgc3RhdGljIEdldEhhc2hDb2RlKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGxldCBieXRlczogVWludDhBcnJheSA9IG51bGw7XHJcblxyXG4gICAgYnl0ZXMgPSBFbmNvZGluZy5VVEY4LkdldEJ5dGVzKHN0cik7XHJcblxyXG4gICAgcmV0dXJuIEhhc2hVdGlscy5nZXRIYXNoQ29kZShieXRlcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZXRIYXNoQ29kZShieXRlQXJyYXk6IFVpbnQ4QXJyYXkpIHtcclxuICAgIGxldCBoYXNodmFsOiBudW1iZXI7XHJcblxyXG4gICAgbGV0IGhhc2gxOiBudW1iZXIgPSA1MzgxO1xyXG4gICAgbGV0IGhhc2gyOiBudW1iZXIgPSBoYXNoMTtcclxuICAgIGxldCBjOiBudW1iZXI7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGJ5dGVBcnJheS5sZW5ndGg7IGkgKz0gMikge1xyXG4gICAgICBjID0gYnl0ZUFycmF5W2ldO1xyXG4gICAgICBoYXNoMSA9ICgoaGFzaDEgPDwgNSkgKyBoYXNoMSkgXiBjO1xyXG4gICAgICBpZiAoKGkgKyAxKSA9PT0gYnl0ZUFycmF5Lmxlbmd0aClcclxuICAgICAgICBicmVhaztcclxuICAgICAgYyA9IGJ5dGVBcnJheVtpICsgMV07XHJcbiAgICAgIGhhc2gyID0gKChoYXNoMiA8PCA1KSArIGhhc2gyKSBeIGM7XHJcbiAgICAgIGhhc2gxID0gaGFzaDEgJiAweGZmZmY7XHJcbiAgICAgIGhhc2gyID0gaGFzaDIgJiAweGZmZmY7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGhhc2gzOiBudW1iZXIgPSAoaGFzaDIgKiAxMzU3Nyk7XHJcbiAgICBoYXNodmFsID0gKGhhc2gxICsgaGFzaDMpO1xyXG4gICAgcmV0dXJuIChoYXNodmFsKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUhhc2hDb2RlIHtcclxuICBHZXRIYXNoQ29kZSgpOiBudW1iZXI7XHJcbn1cclxuXHJcbnR5cGUgQnVja2V0RWxlbWVudDxUS2V5LCBUVmFsdWU+ID0geyBrZXk6IFRLZXksIHZhbHVlOiBUVmFsdWUgfTtcclxudHlwZSBCdWNrZXQ8VEtleSwgVFZhbHVlPiA9IFtCdWNrZXRFbGVtZW50PFRLZXksIFRWYWx1ZT5dO1xyXG5cclxuY29uc3QgSGFzaFRhYmxlTG9hZEZhY3RvciA9IDAuNzU7XHJcblxyXG4vLyBIYXNodGFibGUgaW1wbGVtZW50YXRpb24gZm9yIGtleSBUS2V5IGFuZCBWYWx1ZSBUVmFsdWVcclxuZXhwb3J0IGNsYXNzIEhhc2h0YWJsZTxUS2V5IGV4dGVuZHMgKElIYXNoQ29kZSB8IHN0cmluZyB8IG51bWJlciksIFRWYWx1ZT4ge1xyXG5cclxuICBwcml2YXRlIF9idWNrZXRzOiBCdWNrZXQ8VEtleSwgVFZhbHVlPltdID0gW107IC8vIHRvdGFsIG5vLiBvZiBidWNrZXRzXHJcbiAgcHJpdmF0ZSBfZWxlbWVudHNDb3VudCA9IDA7IC8vIHRvdGFsIGVsZW1lbnRzXHJcbiAgcHJpdmF0ZSBfYnVja2V0Q291bnQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfbG9hZEZhY3RvcjogbnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoYnVja2V0Q291bnQ6IG51bWJlciA9IDgsIGxvYWRGYWN0b3I6IG51bWJlciA9IEhhc2hUYWJsZUxvYWRGYWN0b3IpIHtcclxuICAgIHRoaXMuX2J1Y2tldENvdW50ID0gYnVja2V0Q291bnQ7XHJcbiAgICB0aGlzLl9sb2FkRmFjdG9yID0gbG9hZEZhY3RvcjtcclxuXHJcbiAgICBpZiAodGhpcy5fYnVja2V0Q291bnQgJSAyICE9PSAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0J1Y2tldCBjb3VudCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIGFuZCBiZSBtdWx0aXBsZSBvZiAyLicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR2VuZXJpYyBIYXNoIGZ1bnRpb25cclxuICBwcml2YXRlIEhhc2hGdW5jdGlvbihrZXkpOiBudW1iZXIge1xyXG4gICAgaWYgKHR5cGVvZiBrZXkuR2V0SGFzaENvZGUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmV0dXJuIGtleS5HZXRIYXNoQ29kZSgpO1xyXG4gICAgfSBlbHNlIGlmIChrZXkuY29uc3RydWN0b3IgPT09IFN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBIYXNoVXRpbHMuR2V0SGFzaENvZGUoa2V5LnRvU3RyaW5nKCkpO1xyXG4gICAgfSBlbHNlIGlmIChrZXkuY29uc3RydWN0b3IgPT09IE51bWJlcikge1xyXG4gICAgICByZXR1cm4gK2tleTtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgLy8gcmV0dXJucyBlbGVtZW50Q291bnRcclxuICBnZXQgQ291bnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudHNDb3VudDtcclxuICB9XHJcblxyXG4gIC8vIHJldHVybnMgVmFsdWVDb2xsZWN0aW9uIChBcnJheSBFbnVtZXJhdG9yKVxyXG4gIGdldCBWYWx1ZXMoKTogQXJyYXlfRW51bWVyYXRvcjxUVmFsdWU+IHtcclxuICAgIGxldCBhcnJheTogQXJyYXk8VFZhbHVlPiA9IFtdO1xyXG4gICAgdGhpcy5fYnVja2V0cy5mb3JFYWNoKGIgPT4gYi5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBhcnJheS5wdXNoKGl0ZW0udmFsdWUpO1xyXG4gICAgfSkpO1xyXG4gICAgcmV0dXJuIG5ldyBBcnJheV9FbnVtZXJhdG9yKGFycmF5KTtcclxuICB9XHJcblxyXG4gIC8vIHJldHVybnMgS2V5Q29sbGVjdGlvbiAoQXJyYXkgRW51bWVyYXRvcilcclxuICBnZXQgS2V5cygpOiBBcnJheV9FbnVtZXJhdG9yPFRLZXk+IHtcclxuICAgIGxldCBhcnJheTogQXJyYXk8VEtleT4gPSBbXTtcclxuICAgIHRoaXMuX2J1Y2tldHMuZm9yRWFjaChiID0+IGIuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgYXJyYXkucHVzaChpdGVtLmtleSk7XHJcbiAgICB9KSk7XHJcbiAgICByZXR1cm4gbmV3IEFycmF5X0VudW1lcmF0b3IoYXJyYXkpO1xyXG4gIH1cclxuXHJcbiAgLy8gYWRkcyBpdGVtIHRvIEhhc2h0YWJsZVxyXG4gIEFkZChrZXk6IFRLZXksIHZhbHVlOiBUVmFsdWUpOiB2b2lkIHtcclxuICAgIHRoaXMuSW5zZXJ0KGtleSwgdmFsdWUsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLy8gc2V0cyBpdGVtIGluIEhhc2h0YWJsZVxyXG4gIHNldF9JdGVtKGtleTogVEtleSwgdmFsdWU6IFRWYWx1ZSkge1xyXG4gICAgdGhpcy5JbnNlcnQoa2V5LCB2YWx1ZSwgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLy8gSW5zZXJ0IGVsZW1lbnQgaW4gSGFzaHRhYmxlXHJcbiAgcHJpdmF0ZSBJbnNlcnQoa2V5OiBUS2V5LCB2YWx1ZTogVFZhbHVlLCBhZGQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGxldCBidWNrZXRJbmRleCA9IHRoaXMuR2V0QnVja2V0SW5kZXgoa2V5KTtcclxuXHJcbiAgICBpZiAodHlwZW9mIHRoaXMuX2J1Y2tldHNbYnVja2V0SW5kZXhdID09PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgIHRoaXMuX2J1Y2tldHNbYnVja2V0SW5kZXhdID0gPEJ1Y2tldDxUS2V5LCBUVmFsdWU+Pjx1bmtub3duPltdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9idWNrZXRzW2J1Y2tldEluZGV4XS5maW5kKHggPT4geC5rZXkgPT09IGtleSkpIHtcclxuICAgICAgaWYgKGFkZCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0l0ZW0gd2l0aCBwcm92aWRlZCBrZXkgYWxyZWFkeSBleGlzdHMhJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5SZW1vdmUoa2V5KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9idWNrZXRzW2J1Y2tldEluZGV4XS5wdXNoKHtrZXk6IGtleSwgdmFsdWU6IHZhbHVlfSk7XHJcblxyXG4gICAgdGhpcy5fZWxlbWVudHNDb3VudCsrO1xyXG4gICAgaWYgKHRoaXMuX2VsZW1lbnRzQ291bnQgPiB0aGlzLl9idWNrZXRDb3VudCAqIHRoaXMuX2xvYWRGYWN0b3IpIHtcclxuICAgICAgdGhpcy5SZXNpemUodGhpcy5fYnVja2V0Q291bnQgKiAyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4vLyBHZXRzIHZhbHVlIGZvciBrZXkgVEtleVxyXG4gIGdldF9JdGVtKGtleTogVEtleSk6IFRWYWx1ZSB7XHJcbiAgICBsZXQgYnVja2V0SW5kZXggPSB0aGlzLkdldEJ1Y2tldEluZGV4KGtleSk7XHJcbiAgICBsZXQgYnVja2V0ID0gdGhpcy5fYnVja2V0c1tidWNrZXRJbmRleF07XHJcbiAgICBpZiAoIWJ1Y2tldCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaXRlbSA9IGJ1Y2tldC5maW5kKHggPT4geC5rZXkgPT09IGtleSk7XHJcbiAgICBpZiAoaXRlbSkge1xyXG4gICAgICByZXR1cm4gaXRlbS52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIFJldHVybnMgaWYga2V5IFRLZXkgaXMgcHJlc2VudCBpbiBIYXNodGFibGVcclxuICBDb250YWluc0tleShrZXk6IFRLZXkpOiBib29sZWFuIHtcclxuICAgIGxldCBidWNrZXRJbmRleCA9IHRoaXMuR2V0QnVja2V0SW5kZXgoa2V5KTtcclxuICAgIGxldCBidWNrZXQgPSB0aGlzLl9idWNrZXRzW2J1Y2tldEluZGV4XTtcclxuICAgIGlmICghYnVja2V0KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaXRlbUluZGV4ID0gYnVja2V0LmZpbmRJbmRleCh4ID0+IHgua2V5ID09PSBrZXkpO1xyXG4gICAgcmV0dXJuIChpdGVtSW5kZXggPiAtMSk7XHJcbiAgfVxyXG5cclxuICAvLyBSZW1vdmVzIGl0ZW0gd2l0aCBrZXkgVEtleSBmcm9tIEhhc2h0YWJsZVxyXG4gIFJlbW92ZShrZXk6IFRLZXkpIHtcclxuICAgIGxldCBidWNrZXRJbmRleCA9IHRoaXMuR2V0QnVja2V0SW5kZXgoa2V5KTtcclxuICAgIGxldCBidWNrZXQgPSB0aGlzLl9idWNrZXRzW2J1Y2tldEluZGV4XTtcclxuICAgIGlmICghYnVja2V0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaXRlbUluZGV4ID0gYnVja2V0LmZpbmRJbmRleCh4ID0+IHgua2V5ID09PSBrZXkpO1xyXG4gICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XHJcbiAgICAgIGJ1Y2tldC5zcGxpY2UoaXRlbUluZGV4LCAxKTtcclxuICAgICAgdGhpcy5fZWxlbWVudHNDb3VudC0tO1xyXG4gICAgICBpZiAodGhpcy5fZWxlbWVudHNDb3VudCA8PSB0aGlzLl9idWNrZXRDb3VudCAqICgxIC0gdGhpcy5fbG9hZEZhY3RvcikpIHtcclxuICAgICAgICB0aGlzLlJlc2l6ZSh0aGlzLl9idWNrZXRDb3VudCAvIDIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBSZXNpemUgYnVja2V0IChIYXNodGFibGUpXHJcbiAgcHJpdmF0ZSBSZXNpemUobmV3QnVja2V0Q291bnQ6IG51bWJlcikge1xyXG4gICAgbGV0IF9vbGRCdWNrZXRzID0gdGhpcy5fYnVja2V0cztcclxuICAgIHRoaXMuX2VsZW1lbnRzQ291bnQgPSAwO1xyXG4gICAgdGhpcy5fYnVja2V0cyA9IFtdO1xyXG4gICAgdGhpcy5fYnVja2V0Q291bnQgPSBuZXdCdWNrZXRDb3VudDtcclxuXHJcbiAgICBfb2xkQnVja2V0cy5mb3JFYWNoKGIgPT4gYi5mb3JFYWNoKGl0ZW0gPT4gdGhpcy5BZGQoaXRlbS5rZXksIGl0ZW0udmFsdWUpKSk7XHJcbiAgfVxyXG5cclxuLy8gcmV0dXJucyBidWNrZXRJbmRleCBmb3Iga2V5XHJcbiAgcHJpdmF0ZSBHZXRCdWNrZXRJbmRleChrZXk6IFRLZXkpIHtcclxuICAgIGxldCBoYXNoID0gdGhpcy5IYXNoRnVuY3Rpb24oa2V5KTtcclxuICAgIGlmIChoYXNoICUgMSAhPT0gMCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdLZXlcXCdzIGhhc2ggbXVzdCBiZSBhbiBpbnRlZ2VyIScpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpbmRleCA9IE1hdGguYWJzKGhhc2gpICUgdGhpcy5fYnVja2V0Q291bnQ7XHJcblxyXG4gICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLl9idWNrZXRDb3VudCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdJbmRleCBleGNlZWRzIGJ1Y2tldCBib3VuZGFyaWVzJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuXHJcbi8vIENsZWFycyBIYXNodGFibGVcclxuICBDbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2VsZW1lbnRzQ291bnQgPSAwO1xyXG4gICAgdGhpcy5fYnVja2V0cyA9IFtdO1xyXG4gIH1cclxufVxyXG4iXX0=
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGFzaFRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXNjb3JlbGliL3NyYy9IYXNoVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE1BQU0sT0FBTyxTQUFTO0lBR3BCLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBVztRQUM1QixJQUFJLEtBQUssR0FBZSxJQUFJLENBQUM7UUFFN0IsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLE9BQU8sU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFxQjtRQUM5QyxJQUFJLE9BQWUsQ0FBQztRQUVwQixJQUFJLEtBQUssR0FBVyxJQUFJLENBQUM7UUFDekIsSUFBSSxLQUFLLEdBQVcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBUyxDQUFDO1FBRWQsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNwRCxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxNQUFNO2dCQUM5QixNQUFNO1lBQ1IsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFD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Q0FBQztTQUN4RDtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUdELEtBQUs7UUFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBSZWZlcmVuY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9ya29zdHJ6ZXdza2kvaGFzaHRhYmxlLXRzL2Jsb2IvbWFzdGVyL3NyYy9oYXNodGFibGUudHNcclxuXHJcbmltcG9ydCB7QXJyYXlfRW51bWVyYXRvcn0gZnJvbSBcIi4vQXJyYXlFbnVtZXJhdG9yXCI7XHJcbmltcG9ydCB7RXhjZXB0aW9ufSBmcm9tIFwiLi9FeGNlcHRpb25cIjtcclxuaW1wb3J0IHtFbmNvZGluZ30gZnJvbSBcIi4vRW5jb2RpbmdcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBIYXNoVXRpbHMge1xyXG4gIC8vIFBheSBhdHRlbnRpb24gdGhhdCBpbiBzZXJ2ZXIgdGhlcmUgaXMgdGhlIHNhbWUgZnVuY3Rpb24gYW5kIGl0IG11c3RcclxuICAvLyByZXR1cm4gdGhlIHNhbWUgaGFzaCB2YWx1ZS5cclxuICBzdGF0aWMgR2V0SGFzaENvZGUoc3RyOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgbGV0IGJ5dGVzOiBVaW50OEFycmF5ID0gbnVsbDtcclxuXHJcbiAgICBieXRlcyA9IEVuY29kaW5nLlVURjguR2V0Qnl0ZXMoc3RyKTtcclxuXHJcbiAgICByZXR1cm4gSGFzaFV0aWxzLmdldEhhc2hDb2RlKGJ5dGVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldEhhc2hDb2RlKGJ5dGVBcnJheTogVWludDhBcnJheSkge1xyXG4gICAgbGV0IGhhc2h2YWw6IG51bWJlcjtcclxuXHJcbiAgICBsZXQgaGFzaDE6IG51bWJlciA9IDUzODE7XHJcbiAgICBsZXQgaGFzaDI6IG51bWJlciA9IGhhc2gxO1xyXG4gICAgbGV0IGM6IG51bWJlcjtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgYnl0ZUFycmF5Lmxlbmd0aDsgaSArPSAyKSB7XHJcbiAgICAgIGMgPSBieXRlQXJyYXlbaV07XHJcbiAgICAgIGhhc2gxID0gKChoYXNoMSA8PCA1KSArIGhhc2gxKSBeIGM7XHJcbiAgICAgIGlmICgoaSArIDEpID09PSBieXRlQXJyYXkubGVuZ3RoKVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjID0gYnl0ZUFycmF5W2kgKyAxXTtcclxuICAgICAgaGFzaDIgPSAoKGhhc2gyIDw8IDUpICsgaGFzaDIpIF4gYztcclxuICAgICAgaGFzaDEgPSBoYXNoMSAmIDB4ZmZmZjtcclxuICAgICAgaGFzaDIgPSBoYXNoMiAmIDB4ZmZmZjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaGFzaDM6IG51bWJlciA9IChoYXNoMiAqIDEzNTc3KTtcclxuICAgIGhhc2h2YWwgPSAoaGFzaDEgKyBoYXNoMyk7XHJcbiAgICByZXR1cm4gKGhhc2h2YWwpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSGFzaENvZGUge1xyXG4gIEdldEhhc2hDb2RlKCk6IG51bWJlcjtcclxufVxyXG5cclxudHlwZSBCdWNrZXRFbGVtZW50PFRLZXksIFRWYWx1ZT4gPSB7IGtleTogVEtleSwgdmFsdWU6IFRWYWx1ZSB9O1xyXG50eXBlIEJ1Y2tldDxUS2V5LCBUVmFsdWU+ID0gW0J1Y2tldEVsZW1lbnQ8VEtleSwgVFZhbHVlPl07XHJcblxyXG5jb25zdCBIYXNoVGFibGVMb2FkRmFjdG9yID0gMC43NTtcclxuXHJcbi8vIEhhc2h0YWJsZSBpbXBsZW1lbnRhdGlvbiBmb3Iga2V5IFRLZXkgYW5kIFZhbHVlIFRWYWx1ZVxyXG5leHBvcnQgY2xhc3MgSGFzaHRhYmxlPFRLZXkgZXh0ZW5kcyAoSUhhc2hDb2RlIHwgc3RyaW5nIHwgbnVtYmVyKSwgVFZhbHVlPiB7XHJcblxyXG4gIHByaXZhdGUgX2J1Y2tldHM6IEJ1Y2tldDxUS2V5LCBUVmFsdWU+W10gPSBbXTsgLy8gdG90YWwgbm8uIG9mIGJ1Y2tldHNcclxuICBwcml2YXRlIF9lbGVtZW50c0NvdW50ID0gMDsgLy8gdG90YWwgZWxlbWVudHNcclxuICBwcml2YXRlIF9idWNrZXRDb3VudDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9sb2FkRmFjdG9yOiBudW1iZXIgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihidWNrZXRDb3VudDogbnVtYmVyID0gOCwgbG9hZEZhY3RvcjogbnVtYmVyID0gSGFzaFRhYmxlTG9hZEZhY3Rvcikge1xyXG4gICAgdGhpcy5fYnVja2V0Q291bnQgPSBidWNrZXRDb3VudDtcclxuICAgIHRoaXMuX2xvYWRGYWN0b3IgPSBsb2FkRmFjdG9yO1xyXG5cclxuICAgIGlmICh0aGlzLl9idWNrZXRDb3VudCAlIDIgIT09IDApIHtcclxuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignQnVja2V0IGNvdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIgYW5kIGJlIG11bHRpcGxlIG9mIDIuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBHZW5lcmljIEhhc2ggZnVudGlvblxyXG4gIHByaXZhdGUgSGFzaEZ1bmN0aW9uKGtleSk6IG51bWJlciB7XHJcbiAgICBpZiAodHlwZW9mIGtleS5HZXRIYXNoQ29kZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXR1cm4ga2V5LkdldEhhc2hDb2RlKCk7XHJcbiAgICB9IGVsc2UgaWYgKGtleS5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIEhhc2hVdGlscy5HZXRIYXNoQ29kZShrZXkudG9TdHJpbmcoKSk7XHJcbiAgICB9IGVsc2UgaWYgKGtleS5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSB7XHJcbiAgICAgIHJldHVybiAra2V5O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG5cclxuICAvLyByZXR1cm5zIGVsZW1lbnRDb3VudFxyXG4gIGdldCBDb3VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtZW50c0NvdW50O1xyXG4gIH1cclxuXHJcbiAgLy8gcmV0dXJucyBWYWx1ZUNvbGxlY3Rpb24gKEFycmF5IEVudW1lcmF0b3IpXHJcbiAgZ2V0IFZhbHVlcygpOiBBcnJheV9FbnVtZXJhdG9yPFRWYWx1ZT4ge1xyXG4gICAgbGV0IGFycmF5OiBBcnJheTxUVmFsdWU+ID0gW107XHJcbiAgICB0aGlzLl9idWNrZXRzLmZvckVhY2goYiA9PiBiLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGFycmF5LnB1c2goaXRlbS52YWx1ZSk7XHJcbiAgICB9KSk7XHJcbiAgICByZXR1cm4gbmV3IEFycmF5X0VudW1lcmF0b3IoYXJyYXkpO1xyXG4gIH1cclxuXHJcbiAgLy8gcmV0dXJucyBLZXlDb2xsZWN0aW9uIChBcnJheSBFbnVtZXJhdG9yKVxyXG4gIGdldCBLZXlzKCk6IEFycmF5X0VudW1lcmF0b3I8VEtleT4ge1xyXG4gICAgbGV0IGFycmF5OiBBcnJheTxUS2V5PiA9IFtdO1xyXG4gICAgdGhpcy5fYnVja2V0cy5mb3JFYWNoKGIgPT4gYi5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBhcnJheS5wdXNoKGl0ZW0ua2V5KTtcclxuICAgIH0pKTtcclxuICAgIHJldHVybiBuZXcgQXJyYXlfRW51bWVyYXRvcihhcnJheSk7XHJcbiAgfVxyXG5cclxuICAvLyBhZGRzIGl0ZW0gdG8gSGFzaHRhYmxlXHJcbiAgQWRkKGtleTogVEtleSwgdmFsdWU6IFRWYWx1ZSk6IHZvaWQge1xyXG4gICAgdGhpcy5JbnNlcnQoa2V5LCB2YWx1ZSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyBzZXRzIGl0ZW0gaW4gSGFzaHRhYmxlXHJcbiAgc2V0X0l0ZW0oa2V5OiBUS2V5LCB2YWx1ZTogVFZhbHVlKSB7XHJcbiAgICB0aGlzLkluc2VydChrZXksIHZhbHVlLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvLyBJbnNlcnQgZWxlbWVudCBpbiBIYXNodGFibGVcclxuICBwcml2YXRlIEluc2VydChrZXk6IFRLZXksIHZhbHVlOiBUVmFsdWUsIGFkZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IGJ1Y2tldEluZGV4ID0gdGhpcy5HZXRCdWNrZXRJbmRleChrZXkpO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdGhpcy5fYnVja2V0c1tidWNrZXRJbmRleF0gPT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgdGhpcy5fYnVja2V0c1tidWNrZXRJbmRleF0gPSA8QnVja2V0PFRLZXksIFRWYWx1ZT4+PHVua25vd24+W107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX2J1Y2tldHNbYnVja2V0SW5kZXhdLmZpbmQoeCA9PiB4LmtleSA9PT0ga2V5KSkge1xyXG4gICAgICBpZiAoYWRkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignSXRlbSB3aXRoIHByb3ZpZGVkIGtleSBhbHJlYWR5IGV4aXN0cyEnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLlJlbW92ZShrZXkpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2J1Y2tldHNbYnVja2V0SW5kZXhdLnB1c2goe2tleToga2V5LCB2YWx1ZTogdmFsdWV9KTtcclxuXHJcbiAgICB0aGlzLl9lbGVtZW50c0NvdW50Kys7XHJcbiAgICBpZiAodGhpcy5fZWxlbWVudHNDb3VudCA+IHRoaXMuX2J1Y2tldENvdW50ICogdGhpcy5fbG9hZEZhY3Rvcikge1xyXG4gICAgICB0aGlzLlJlc2l6ZSh0aGlzLl9idWNrZXRDb3VudCAqIDIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbi8vIEdldHMgdmFsdWUgZm9yIGtleSBUS2V5XHJcbiAgZ2V0X0l0ZW0oa2V5OiBUS2V5KTogVFZhbHVlIHtcclxuICAgIGxldCBidWNrZXRJbmRleCA9IHRoaXMuR2V0QnVja2V0SW5kZXgoa2V5KTtcclxuICAgIGxldCBidWNrZXQgPSB0aGlzLl9idWNrZXRzW2J1Y2tldEluZGV4XTtcclxuICAgIGlmICghYnVja2V0KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpdGVtID0gYnVja2V0LmZpbmQoeCA9PiB4LmtleSA9PT0ga2V5KTtcclxuICAgIGlmIChpdGVtKSB7XHJcbiAgICAgIHJldHVybiBpdGVtLnZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8gUmV0dXJucyBpZiBrZXkgVEtleSBpcyBwcmVzZW50IGluIEhhc2h0YWJsZVxyXG4gIENvbnRhaW5zS2V5KGtleTogVEtleSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGJ1Y2tldEluZGV4ID0gdGhpcy5HZXRCdWNrZXRJbmRleChrZXkpO1xyXG4gICAgbGV0IGJ1Y2tldCA9IHRoaXMuX2J1Y2tldHNbYnVja2V0SW5kZXhdO1xyXG4gICAgaWYgKCFidWNrZXQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpdGVtSW5kZXggPSBidWNrZXQuZmluZEluZGV4KHggPT4geC5rZXkgPT09IGtleSk7XHJcbiAgICByZXR1cm4gKGl0ZW1JbmRleCA+IC0xKTtcclxuICB9XHJcblxyXG4gIC8vIFJlbW92ZXMgaXRlbSB3aXRoIGtleSBUS2V5IGZyb20gSGFzaHRhYmxlXHJcbiAgUmVtb3ZlKGtleTogVEtleSkge1xyXG4gICAgbGV0IGJ1Y2tldEluZGV4ID0gdGhpcy5HZXRCdWNrZXRJbmRleChrZXkpO1xyXG4gICAgbGV0IGJ1Y2tldCA9IHRoaXMuX2J1Y2tldHNbYnVja2V0SW5kZXhdO1xyXG4gICAgaWYgKCFidWNrZXQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpdGVtSW5kZXggPSBidWNrZXQuZmluZEluZGV4KHggPT4geC5rZXkgPT09IGtleSk7XHJcbiAgICBpZiAoaXRlbUluZGV4ID4gLTEpIHtcclxuICAgICAgYnVja2V0LnNwbGljZShpdGVtSW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLl9lbGVtZW50c0NvdW50LS07XHJcbiAgICAgIGlmICh0aGlzLl9lbGVtZW50c0NvdW50IDw9IHRoaXMuX2J1Y2tldENvdW50ICogKDEgLSB0aGlzLl9sb2FkRmFjdG9yKSkge1xyXG4gICAgICAgIHRoaXMuUmVzaXplKHRoaXMuX2J1Y2tldENvdW50IC8gMik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJlc2l6ZSBidWNrZXQgKEhhc2h0YWJsZSlcclxuICBwcml2YXRlIFJlc2l6ZShuZXdCdWNrZXRDb3VudDogbnVtYmVyKSB7XHJcbiAgICBsZXQgX29sZEJ1Y2tldHMgPSB0aGlzLl9idWNrZXRzO1xyXG4gICAgdGhpcy5fZWxlbWVudHNDb3VudCA9IDA7XHJcbiAgICB0aGlzLl9idWNrZXRzID0gW107XHJcbiAgICB0aGlzLl9idWNrZXRDb3VudCA9IG5ld0J1Y2tldENvdW50O1xyXG5cclxuICAgIF9vbGRCdWNrZXRzLmZvckVhY2goYiA9PiBiLmZvckVhY2goaXRlbSA9PiB0aGlzLkFkZChpdGVtLmtleSwgaXRlbS52YWx1ZSkpKTtcclxuICB9XHJcblxyXG4vLyByZXR1cm5zIGJ1Y2tldEluZGV4IGZvciBrZXlcclxuICBwcml2YXRlIEdldEJ1Y2tldEluZGV4KGtleTogVEtleSkge1xyXG4gICAgbGV0IGhhc2ggPSB0aGlzLkhhc2hGdW5jdGlvbihrZXkpO1xyXG4gICAgaWYgKGhhc2ggJSAxICE9PSAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0tleVxcJ3MgaGFzaCBtdXN0IGJlIGFuIGludGVnZXIhJyk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGluZGV4ID0gTWF0aC5hYnMoaGFzaCkgJSB0aGlzLl9idWNrZXRDb3VudDtcclxuXHJcbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMuX2J1Y2tldENvdW50KSB7XHJcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0luZGV4IGV4Y2VlZHMgYnVja2V0IGJvdW5kYXJpZXMnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW5kZXg7XHJcbiAgfVxyXG5cclxuLy8gQ2xlYXJzIEhhc2h0YWJsZVxyXG4gIENsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZWxlbWVudHNDb3VudCA9IDA7XHJcbiAgICB0aGlzLl9idWNrZXRzID0gW107XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1 +1 @@
1
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUNvbXBhcmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL0lDb21wYXJhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElDb21wYXJhYmxlIHtcclxuICBDb21wYXJlVG8ob2JqOiBhbnkpOiBudW1iZXI7XHJcbn1cclxuIl19
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUNvbXBhcmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL0lDb21wYXJhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElDb21wYXJhYmxlIHtcclxuICBDb21wYXJlVG8ob2JqOiBhbnkpOiBudW1iZXI7XHJcbn1cclxuIl19
@@ -36,4 +36,4 @@ export class ISO_8859_1_Encoding extends Encoding {
36
36
  }
37
37
  }
38
38
  ISO_8859_1_Encoding.ISO_8859_1 = new ISO_8859_1_Encoding("iso_8859-1");
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVNPXzg4NTlfMV9FbmNvZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvSVNPXzg4NTlfMV9FbmNvZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxRQUFRO0lBRy9DLFlBQVksS0FBYTtRQUN6QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQVc7UUFFbEIsSUFBSSxHQUFHLEtBQUssSUFBSTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV0QyxJQUFJLEtBQUssR0FBZSxJQUFJLENBQUM7UUFFN0IsS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkMsSUFBSSxVQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQzNCLElBQUksUUFBb0IsQ0FBQztRQUV6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFDbkM7WUFDRSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUMxQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBaUIsRUFBRSxLQUFhLEVBQUUsS0FBYTtRQUN2RCxJQUFJLEdBQUcsR0FBVyxJQUFJLENBQUM7UUFFdkIsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFdEMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU07WUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRTNDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFFN0MsSUFBSTtZQUVGLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDVCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFDckM7Z0JBQ0UsR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEM7WUFBQSxDQUFDO1NBQ0g7UUFDRCxPQUFPLEVBQUUsRUFBRTtTQUNWO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOztBQWhEZSw4QkFBVSxHQUF3QixJQUFJLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFbmNvZGluZ30gZnJvbSBcIi4vRW5jb2RpbmdcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBJU09fODg1OV8xX0VuY29kaW5nIGV4dGVuZHMgRW5jb2Rpbmcge1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgSVNPXzg4NTlfMTogSVNPXzg4NTlfMV9FbmNvZGluZyA9IG5ldyBJU09fODg1OV8xX0VuY29kaW5nKFwiaXNvXzg4NTktMVwiKTtcclxuICBjb25zdHJ1Y3RvcihsYWJlbDogc3RyaW5nKSB7XHJcbiAgc3VwZXIobGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgR2V0Qnl0ZXMoc3RyOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcclxuXHJcbiAgICBpZiAoc3RyID09PSBudWxsKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBcmd1bWVudCBpcyBudWxsXCIpO1xyXG5cclxuICAgIGxldCBieXRlczogVWludDhBcnJheSA9IG51bGw7XHJcblxyXG4gICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheShzdHIubGVuZ3RoICogMyk7XHJcbiAgICBsZXQgYnl0ZXNDb3VudDogbnVtYmVyID0gMDtcclxuICAgIGxldCB0bXBCeXRlczogVWludDhBcnJheTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKylcclxuICAgIHtcclxuICAgICAgYnl0ZXNbYnl0ZXNDb3VudCsrXSA9IHN0cltpXS5jaGFyQ29kZUF0KDApO1xyXG4gICAgfVxyXG5cclxuICAgIGJ5dGVzID0gYnl0ZXMuc3ViYXJyYXkoMCwgMCArIGJ5dGVzQ291bnQpO1xyXG4gICAgcmV0dXJuIGJ5dGVzO1xyXG4gIH1cclxuXHJcbiAgR2V0U3RyaW5nKGJ5dGVzOiBVaW50OEFycmF5LCBpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBzdHI6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgaWYgKGJ5dGVzID09PSBudWxsKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBcmd1bWVudCBpcyBudWxsXCIpO1xyXG5cclxuICAgIGlmIChpbmRleCA8IDAgfHwgY291bnQgPCAwIHx8IChpbmRleCArIGNvdW50KSA+IGJ5dGVzLmxlbmd0aClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXJndW1lbnQgb3V0IG9mIHJhbmdlXCIpO1xyXG5cclxuICAgIGJ5dGVzID0gYnl0ZXMuc3ViYXJyYXkoaW5kZXgsIGluZGV4ICsgY291bnQpO1xyXG5cclxuICAgIHRyeSB7XHJcblxyXG4gICAgICBzdHIgPSAnJztcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKylcclxuICAgICAge1xyXG4gICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldKTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleCkge1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVNPXzg4NTlfMV9FbmNvZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvSVNPXzg4NTlfMV9FbmNvZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxRQUFRO0lBRy9DLFlBQVksS0FBYTtRQUN6QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQVc7UUFFbEIsSUFBSSxHQUFHLEtBQUssSUFBSTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV0QyxJQUFJLEtBQUssR0FBZSxJQUFJLENBQUM7UUFFN0IsS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkMsSUFBSSxVQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQzNCLElBQUksUUFBb0IsQ0FBQztRQUV6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFDbkM7WUFDRSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztRQUMxQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBaUIsRUFBRSxLQUFhLEVBQUUsS0FBYTtRQUN2RCxJQUFJLEdBQUcsR0FBVyxJQUFJLENBQUM7UUFFdkIsSUFBSSxLQUFLLEtBQUssSUFBSTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFdEMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU07WUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRTNDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFFN0MsSUFBSTtZQUVGLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDVCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFDckM7Z0JBQ0UsR0FBRyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDdEM7WUFBQSxDQUFDO1NBQ0g7UUFDRCxPQUFPLEVBQUUsRUFBRTtTQUNWO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOztBQWhEZSw4QkFBVSxHQUF3QixJQUFJLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFbmNvZGluZ30gZnJvbSBcIi4vRW5jb2RpbmdcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBJU09fODg1OV8xX0VuY29kaW5nIGV4dGVuZHMgRW5jb2Rpbmcge1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgSVNPXzg4NTlfMTogSVNPXzg4NTlfMV9FbmNvZGluZyA9IG5ldyBJU09fODg1OV8xX0VuY29kaW5nKFwiaXNvXzg4NTktMVwiKTtcclxuICBjb25zdHJ1Y3RvcihsYWJlbDogc3RyaW5nKSB7XHJcbiAgc3VwZXIobGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgR2V0Qnl0ZXMoc3RyOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcclxuXHJcbiAgICBpZiAoc3RyID09PSBudWxsKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBcmd1bWVudCBpcyBudWxsXCIpO1xyXG5cclxuICAgIGxldCBieXRlczogVWludDhBcnJheSA9IG51bGw7XHJcblxyXG4gICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheShzdHIubGVuZ3RoICogMyk7XHJcbiAgICBsZXQgYnl0ZXNDb3VudDogbnVtYmVyID0gMDtcclxuICAgIGxldCB0bXBCeXRlczogVWludDhBcnJheTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKylcclxuICAgIHtcclxuICAgICAgYnl0ZXNbYnl0ZXNDb3VudCsrXSA9IHN0cltpXS5jaGFyQ29kZUF0KDApO1xyXG4gICAgfVxyXG5cclxuICAgIGJ5dGVzID0gYnl0ZXMuc3ViYXJyYXkoMCwgMCArIGJ5dGVzQ291bnQpO1xyXG4gICAgcmV0dXJuIGJ5dGVzO1xyXG4gIH1cclxuXHJcbiAgR2V0U3RyaW5nKGJ5dGVzOiBVaW50OEFycmF5LCBpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBzdHI6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgaWYgKGJ5dGVzID09PSBudWxsKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBcmd1bWVudCBpcyBudWxsXCIpO1xyXG5cclxuICAgIGlmIChpbmRleCA8IDAgfHwgY291bnQgPCAwIHx8IChpbmRleCArIGNvdW50KSA+IGJ5dGVzLmxlbmd0aClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXJndW1lbnQgb3V0IG9mIHJhbmdlXCIpO1xyXG5cclxuICAgIGJ5dGVzID0gYnl0ZXMuc3ViYXJyYXkoaW5kZXgsIGluZGV4ICsgY291bnQpO1xyXG5cclxuICAgIHRyeSB7XHJcblxyXG4gICAgICBzdHIgPSAnJztcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKylcclxuICAgICAge1xyXG4gICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldKTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleCkge1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -2,4 +2,4 @@ export class Int32 {
2
2
  }
3
3
  Int32.MinValue = -2147483648;
4
4
  Int32.MaxValue = 2147483647;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50MzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL0ludDMyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxLQUFLOztBQUNULGNBQVEsR0FBVyxDQUFDLFVBQVUsQ0FBQztBQUMvQixjQUFRLEdBQVcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEludDMyIHtcclxuICBzdGF0aWMgTWluVmFsdWU6IG51bWJlciA9IC0yMTQ3NDgzNjQ4O1xyXG4gIHN0YXRpYyBNYXhWYWx1ZTogbnVtYmVyID0gMjE0NzQ4MzY0NztcclxufVxyXG4iXX0=
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50MzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL0ludDMyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxLQUFLOztBQUNULGNBQVEsR0FBVyxDQUFDLFVBQVUsQ0FBQztBQUMvQixjQUFRLEdBQVcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEludDMyIHtcclxuICBzdGF0aWMgTWluVmFsdWU6IG51bWJlciA9IC0yMTQ3NDgzNjQ4O1xyXG4gIHN0YXRpYyBNYXhWYWx1ZTogbnVtYmVyID0gMjE0NzQ4MzY0NztcclxufVxyXG4iXX0=
@@ -1,4 +1,4 @@
1
1
  export class Int64 {
2
2
  }
3
3
  Int64.MinValue = -9223372036854775808;
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50NjQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL0ludDY0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxLQUFLOztBQUNULGNBQVEsR0FBVyxDQUFDLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEludDY0IHtcclxuICBzdGF0aWMgTWluVmFsdWU6IG51bWJlciA9IC05MjIzMzcyMDM2ODU0Nzc1ODA4O1xyXG59XHJcbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50NjQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL0ludDY0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxLQUFLOztBQUNULGNBQVEsR0FBVyxDQUFDLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEludDY0IHtcclxuICBzdGF0aWMgTWluVmFsdWU6IG51bWJlciA9IC05MjIzMzcyMDM2ODU0Nzc1ODA4O1xyXG59XHJcbiJdfQ==
@@ -49,7 +49,7 @@ export class List extends Array {
49
49
  Insert(index, item) {
50
50
  if (index >= 0 && index < this.length)
51
51
  this.splice(index, 0, item);
52
- else if (index === this.length) // inserting at end means append
52
+ else if (index === this.length)
53
53
  this.push(item);
54
54
  else
55
55
  throw new Error("index out of bounds");
@@ -76,10 +76,6 @@ export class List extends Array {
76
76
  foundItem = null;
77
77
  return foundItem;
78
78
  }
79
- /// <summary>
80
- /// add null cells up to 'size' cells.
81
- /// </summary>
82
- /// <param name="size"></param>
83
79
  SetSize(size) {
84
80
  if (this.length > size) {
85
81
  this.RemoveRange(size, this.length - size);
@@ -88,4 +84,4 @@ export class List extends Array {
88
84
  this.length = size;
89
85
  }
90
86
  }
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWpDLE1BQU0sT0FBTyxJQUFTLFNBQVEsS0FBUTtJQUVwQyxZQUFZLGVBQXFDO1FBQy9DLEtBQUssRUFBRSxDQUFDO1FBQ1IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTVDLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksZUFBZSxDQUFDLFdBQVcsS0FBSyxnQkFBZ0IsRUFBRTtZQUM5RSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUlELFFBQVEsQ0FBQyxzQkFBMkI7UUFDbEMsSUFBSSxzQkFBc0IsQ0FBQyxXQUFXLEtBQUssS0FBSyxFQUFFO1lBQ2hELHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQU8sRUFBRSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFDSTtZQUNILElBQUksQ0FBQyxHQUFHLHNCQUFzQixDQUFDO1lBQy9CLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN0QjtTQUNGO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxD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e0FycmF5X0VudW1lcmF0b3J9IGZyb20gXCIuL0FycmF5RW51bWVyYXRvclwiO1xyXG5pbXBvcnQge2lzVW5kZWZpbmVkfSBmcm9tIFwidXRpbFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIExpc3Q8VD4gIGV4dGVuZHMgQXJyYXk8VD4ge1xyXG5cclxuICBjb25zdHJ1Y3RvcihhcnJheUVudW1lcmF0b3I/OiBBcnJheV9FbnVtZXJhdG9yPFQ+KSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIExpc3QucHJvdG90eXBlKTtcclxuXHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiBhcnJheUVudW1lcmF0b3IuY29uc3RydWN0b3IgPT09IEFycmF5X0VudW1lcmF0b3IpIHtcclxuICAgICAgdGhpcy5BZGRSYW5nZShhcnJheUVudW1lcmF0b3IpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQWRkUmFuZ2UoYXJyYXlFbnVtZXJhdG9yOiBBcnJheV9FbnVtZXJhdG9yPFQ+KVxyXG4gIEFkZFJhbmdlKGFycmF5OiBBcnJheTxUPilcclxuICBBZGRSYW5nZShhcnJheUVudW1lcmF0b3JPckFycmF5OiBhbnkpIHtcclxuICAgIGlmIChhcnJheUVudW1lcmF0b3JPckFycmF5LmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xyXG4gICAgICBhcnJheUVudW1lcmF0b3JPckFycmF5LmZvckVhY2goKGl0ZW06IFQpID0+IHtcclxuICAgICAgICB0aGlzLnB1c2goaXRlbSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBlID0gYXJyYXlFbnVtZXJhdG9yT3JBcnJheTtcclxuICAgICAgd2hpbGUgKGUuTW92ZU5leHQoKSkge1xyXG4gICAgICAgIHRoaXMucHVzaChlLkN1cnJlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRfSXRlbShpbmRleDogbnVtYmVyKTogVCB7XHJcbiAgICBpZiAoaXNVbmRlZmluZWQodGhpc1tpbmRleF0pKVxyXG4gICAgICB0aGlzW2luZGV4XSA9IG51bGw7XHJcbiAgICByZXR1cm4gdGhpc1tpbmRleF07XHJcbiAgfVxyXG5cclxuICBzZXRfSXRlbShpbmRleDogbnVtYmVyLCB2YWx1ZTogVCk6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLmxlbmd0aClcclxuICAgICAgdGhpc1tpbmRleF0gPSB2YWx1ZTtcclxuICAgIGVsc2VcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcclxuICB9XHJcblxyXG4gIEdldEVudW1lcmF0b3IoKTogQXJyYXlfRW51bWVyYXRvcjxUPiB7XHJcbiAgICByZXR1cm4gbmV3IEFycmF5X0VudW1lcmF0b3I8VD4odGhpcyk7XHJcbiAgfVxyXG5cclxuICBSZW1vdmUob2JqZWN0OiBUKTogdm9pZCB7XHJcbiAgICBsZXQgaW5kZXg6IG51bWJlciA9IHRoaXMuaW5kZXhPZihvYmplY3QpO1xyXG5cclxuICAgIGlmIChpbmRleCA+IC0xKVxyXG4gICAgICB0aGlzLlJlbW92ZUF0KGluZGV4KTtcclxuICB9XHJcblxyXG4gIFJlbW92ZUF0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuUmVtb3ZlUmFuZ2UoaW5kZXgsIDEpO1xyXG4gIH1cclxuXHJcbiAgUmVtb3ZlUmFuZ2UoaW5kZXg6IG51bWJlciwgY291bnQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zcGxpY2UoaW5kZXgsIGNvdW50KTtcclxuICB9XHJcblxyXG4gIEluc2VydChpbmRleDogbnVtYmVyLCBpdGVtOiBUKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMubGVuZ3RoKVxyXG4gICAgICB0aGlzLnNwbGljZShpbmRleCwgMCwgaXRlbSk7XHJcbiAgICBlbHNlIGlmIChpbmRleCA9PT0gdGhpcy5sZW5ndGgpIC8vIGluc2VydGluZyBhdCBlbmQgbWVhbnMgYXBwZW5kXHJcbiAgICAgIHRoaXMucHVzaChpdGVtKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcclxuICB9XHJcblxyXG4gIEluc2VydFJhbmdlKGluZGV4OiBudW1iZXIsIGl0ZW1zOiBUW10pOiB2b2lkIHtcclxuICAgIGxldCBpZHg6IG51bWJlciA9IDA7XHJcbiAgICB3aGlsZSAoaWR4IDwgaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuSW5zZXJ0KGlkeCwgaXRlbXNbaWR4XSk7XHJcbiAgICAgIGlkeCsrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQ2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNwbGljZSgwLCB0aGlzLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICBUb0FycmF5KCk6IFRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5zbGljZSgwKTtcclxuICB9XHJcblxyXG4gIENvbnRhaW5zKG9iamVjdDogVCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5kZXhPZihvYmplY3QpID4gLTE7XHJcbiAgfVxyXG5cclxuICBmaW5kKHByZWRpY2F0ZTogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyLCBvYmo6IFRbXSkgPT4gYm9vbGVhbiwgdGhpc0FyZz86IGFueSk6IFQge1xyXG4gICAgbGV0IGZvdW5kSXRlbSA9IHN1cGVyLmZpbmQocHJlZGljYXRlKTtcclxuICAgIGlmIChpc1VuZGVmaW5lZChmb3VuZEl0ZW0pKVxyXG4gICAgICBmb3VuZEl0ZW0gPSBudWxsO1xyXG5cclxuICAgIHJldHVybiBmb3VuZEl0ZW07XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGFkZCBudWxsIGNlbGxzIHVwIHRvICdzaXplJyBjZWxscy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNpemVcIj48L3BhcmFtPlxyXG4gIFNldFNpemUoc2l6ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5sZW5ndGggPiBzaXplKSB7XHJcbiAgICAgIHRoaXMuUmVtb3ZlUmFuZ2Uoc2l6ZSwgdGhpcy5sZW5ndGggLSBzaXplKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5sZW5ndGggPSBzaXplO1xyXG4gIH1cclxufVxyXG4iXX0=
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWpDLE1BQU0sT0FBTyxJQUFTLFNBQVEsS0FBUTtJQUVwQyxZQUFZLGVBQXFDO1FBQy9DLEtBQUssRUFBRSxDQUFDO1FBQ1IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTVDLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksZUFBZSxDQUFDLFdBQVcsS0FBSyxnQkFBZ0IsRUFBRTtZQUM5RSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUlELFFBQVEsQ0FBQyxzQkFBMkI7UUFDbEMsSUFBSSxzQkFBc0IsQ0FBQyxXQUFXLEtBQUssS0FBSyxFQUFFO1lBQ2hELHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQU8sRUFBRSxFQUFFO2dCQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFDSTtZQUNILElBQUksQ0FBQyxHQUFHLHNCQUFzQixDQUFDO1lBQy9CLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN0QjtTQUNGO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYSxFQUFFLEtBQVE7UUFDOUIsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTTtZQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDOztZQUVwQixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksZ0JBQWdCLENBQUksSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFTO1FBQ2QsSUFBSSxLQUFLLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV6QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYSxFQUFFLElBQU87UUFDM0IsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTTtZQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDekIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU07WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs7WUFFaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYSxFQUFFLEtBQVU7UUFDbkMsSUFBSSxHQUFHLEdBQVcsQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDN0IsR0FBRyxFQUFFLENBQUM7U0FDUDtJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBUztRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksQ0FBQyxTQUF5RCxFQUFFLE9BQWE7UUFDM0UsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN0QyxJQUFJLFdBQVcsQ0FBQyxTQUFTLENBQUM7WUFDeEIsU0FBUyxHQUFHLElBQUksQ0FBQztRQUVuQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBTUQsT0FBTyxDQUFDLElBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQzVDOztZQUVDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXJyYXlfRW51bWVyYXRvcn0gZnJvbSBcIi4vQXJyYXlFbnVtZXJhdG9yXCI7XHJcbmltcG9ydCB7aXNVbmRlZmluZWR9IGZyb20gXCJ1dGlsXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgTGlzdDxUPiAgZXh0ZW5kcyBBcnJheTxUPiB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGFycmF5RW51bWVyYXRvcj86IEFycmF5X0VudW1lcmF0b3I8VD4pIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgTGlzdC5wcm90b3R5cGUpO1xyXG5cclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIGFycmF5RW51bWVyYXRvci5jb25zdHJ1Y3RvciA9PT0gQXJyYXlfRW51bWVyYXRvcikge1xyXG4gICAgICB0aGlzLkFkZFJhbmdlKGFycmF5RW51bWVyYXRvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBBZGRSYW5nZShhcnJheUVudW1lcmF0b3I6IEFycmF5X0VudW1lcmF0b3I8VD4pXHJcbiAgQWRkUmFuZ2UoYXJyYXk6IEFycmF5PFQ+KVxyXG4gIEFkZFJhbmdlKGFycmF5RW51bWVyYXRvck9yQXJyYXk6IGFueSkge1xyXG4gICAgaWYgKGFycmF5RW51bWVyYXRvck9yQXJyYXkuY29uc3RydWN0b3IgPT09IEFycmF5KSB7XHJcbiAgICAgIGFycmF5RW51bWVyYXRvck9yQXJyYXkuZm9yRWFjaCgoaXRlbTogVCkgPT4ge1xyXG4gICAgICAgIHRoaXMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGUgPSBhcnJheUVudW1lcmF0b3JPckFycmF5O1xyXG4gICAgICB3aGlsZSAoZS5Nb3ZlTmV4dCgpKSB7XHJcbiAgICAgICAgdGhpcy5wdXNoKGUuQ3VycmVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldF9JdGVtKGluZGV4OiBudW1iZXIpOiBUIHtcclxuICAgIGlmIChpc1VuZGVmaW5lZCh0aGlzW2luZGV4XSkpXHJcbiAgICAgIHRoaXNbaW5kZXhdID0gbnVsbDtcclxuICAgIHJldHVybiB0aGlzW2luZGV4XTtcclxuICB9XHJcblxyXG4gIHNldF9JdGVtKGluZGV4OiBudW1iZXIsIHZhbHVlOiBUKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMubGVuZ3RoKVxyXG4gICAgICB0aGlzW2luZGV4XSA9IHZhbHVlO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xyXG4gIH1cclxuXHJcbiAgR2V0RW51bWVyYXRvcigpOiBBcnJheV9FbnVtZXJhdG9yPFQ+IHtcclxuICAgIHJldHVybiBuZXcgQXJyYXlfRW51bWVyYXRvcjxUPih0aGlzKTtcclxuICB9XHJcblxyXG4gIFJlbW92ZShvYmplY3Q6IFQpOiB2b2lkIHtcclxuICAgIGxldCBpbmRleDogbnVtYmVyID0gdGhpcy5pbmRleE9mKG9iamVjdCk7XHJcblxyXG4gICAgaWYgKGluZGV4ID4gLTEpXHJcbiAgICAgIHRoaXMuUmVtb3ZlQXQoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgUmVtb3ZlQXQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5SZW1vdmVSYW5nZShpbmRleCwgMSk7XHJcbiAgfVxyXG5cclxuICBSZW1vdmVSYW5nZShpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnNwbGljZShpbmRleCwgY291bnQpO1xyXG4gIH1cclxuXHJcbiAgSW5zZXJ0KGluZGV4OiBudW1iZXIsIGl0ZW06IFQpOiB2b2lkIHtcclxuICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5sZW5ndGgpXHJcbiAgICAgIHRoaXMuc3BsaWNlKGluZGV4LCAwLCBpdGVtKTtcclxuICAgIGVsc2UgaWYgKGluZGV4ID09PSB0aGlzLmxlbmd0aCkgLy8gaW5zZXJ0aW5nIGF0IGVuZCBtZWFucyBhcHBlbmRcclxuICAgICAgdGhpcy5wdXNoKGl0ZW0pO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xyXG4gIH1cclxuXHJcbiAgSW5zZXJ0UmFuZ2UoaW5kZXg6IG51bWJlciwgaXRlbXM6IFRbXSk6IHZvaWQge1xyXG4gICAgbGV0IGlkeDogbnVtYmVyID0gMDtcclxuICAgIHdoaWxlIChpZHggPCBpdGVtcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5JbnNlcnQoaWR4LCBpdGVtc1tpZHhdKTtcclxuICAgICAgaWR4Kys7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBDbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuc3BsaWNlKDAsIHRoaXMubGVuZ3RoKTtcclxuICB9XHJcblxyXG4gIFRvQXJyYXkoKTogVFtdIHtcclxuICAgIHJldHVybiB0aGlzLnNsaWNlKDApO1xyXG4gIH1cclxuXHJcbiAgQ29udGFpbnMob2JqZWN0OiBUKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pbmRleE9mKG9iamVjdCkgPiAtMTtcclxuICB9XHJcblxyXG4gIGZpbmQocHJlZGljYXRlOiAodmFsdWU6IFQsIGluZGV4OiBudW1iZXIsIG9iajogVFtdKSA9PiBib29sZWFuLCB0aGlzQXJnPzogYW55KTogVCB7XHJcbiAgICBsZXQgZm91bmRJdGVtID0gc3VwZXIuZmluZChwcmVkaWNhdGUpO1xyXG4gICAgaWYgKGlzVW5kZWZpbmVkKGZvdW5kSXRlbSkpXHJcbiAgICAgIGZvdW5kSXRlbSA9IG51bGw7XHJcblxyXG4gICAgcmV0dXJuIGZvdW5kSXRlbTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gYWRkIG51bGwgY2VsbHMgdXAgdG8gJ3NpemUnIGNlbGxzLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic2l6ZVwiPjwvcGFyYW0+XHJcbiAgU2V0U2l6ZShzaXplOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmxlbmd0aCA+IHNpemUpIHtcclxuICAgICAgdGhpcy5SZW1vdmVSYW5nZShzaXplLCB0aGlzLmxlbmd0aCAtIHNpemUpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmxlbmd0aCA9IHNpemU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -22,4 +22,4 @@ export class NChar {
22
22
  return isUpperCase(ch);
23
23
  }
24
24
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTkNoYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL05DaGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTdGLE1BQU0sT0FBTyxLQUFLO0lBQ2hCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBVztRQUM3QixJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE9BQU8sWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQVc7UUFDaEMsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBVztRQUN4QixJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQVc7UUFDekIsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQVU7UUFDdkIsT0FBTyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBVTtRQUN2QixPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUN4QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbmltcG9ydCB7aXNBc2NpaUxldHRlciwgaXNEaWdpdCwgaXNMb3dlckNhc2UsIGlzVXBwZXJDYXNlLCBpc1doaXRlc3BhY2V9IGZyb20gXCIuL1N0cmluZ1V0aWxzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgTkNoYXIge1xyXG4gIHN0YXRpYyBJc1doaXRlU3BhY2Uoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCBjaCA9IHN0ci5jaGFyQ29kZUF0KDApO1xyXG4gICAgcmV0dXJuIGlzV2hpdGVzcGFjZShjaCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgSXNMZXR0ZXJPckRpZ2l0KHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY2ggPSBzdHIuY2hhckNvZGVBdCgwKTtcclxuICAgIHJldHVybiBpc0RpZ2l0KGNoKSB8fCBpc0FzY2lpTGV0dGVyKGNoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBJc0RpZ2l0KHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY2ggPSBzdHIuY2hhckNvZGVBdCgwKTtcclxuICAgIHJldHVybiBpc0RpZ2l0KGNoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBJc0xldHRlcihsdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGlzQXNjaWlMZXR0ZXIobHRyLmNoYXJDb2RlQXQoMCkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIElzTG93ZXIoY2g6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGlzTG93ZXJDYXNlKGNoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBJc1VwcGVyKGNoOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBpc1VwcGVyQ2FzZShjaClcclxuICB9XHJcbn1cclxuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTkNoYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL05DaGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTdGLE1BQU0sT0FBTyxLQUFLO0lBQ2hCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBVztRQUM3QixJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE9BQU8sWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQVc7UUFDaEMsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixPQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBVztRQUN4QixJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQVc7UUFDekIsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQVU7UUFDdkIsT0FBTyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBVTtRQUN2QixPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUN4QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbmltcG9ydCB7aXNBc2NpaUxldHRlciwgaXNEaWdpdCwgaXNMb3dlckNhc2UsIGlzVXBwZXJDYXNlLCBpc1doaXRlc3BhY2V9IGZyb20gXCIuL1N0cmluZ1V0aWxzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgTkNoYXIge1xyXG4gIHN0YXRpYyBJc1doaXRlU3BhY2Uoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCBjaCA9IHN0ci5jaGFyQ29kZUF0KDApO1xyXG4gICAgcmV0dXJuIGlzV2hpdGVzcGFjZShjaCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgSXNMZXR0ZXJPckRpZ2l0KHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY2ggPSBzdHIuY2hhckNvZGVBdCgwKTtcclxuICAgIHJldHVybiBpc0RpZ2l0KGNoKSB8fCBpc0FzY2lpTGV0dGVyKGNoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBJc0RpZ2l0KHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY2ggPSBzdHIuY2hhckNvZGVBdCgwKTtcclxuICAgIHJldHVybiBpc0RpZ2l0KGNoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBJc0xldHRlcihsdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGlzQXNjaWlMZXR0ZXIobHRyLmNoYXJDb2RlQXQoMCkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIElzTG93ZXIoY2g6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGlzTG93ZXJDYXNlKGNoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBJc1VwcGVyKGNoOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBpc1VwcGVyQ2FzZShjaClcclxuICB9XHJcbn1cclxuIl19
@@ -4,11 +4,6 @@ export var NumberStyles;
4
4
  NumberStyles[NumberStyles["HexNumber"] = 0] = "HexNumber";
5
5
  })(NumberStyles || (NumberStyles = {}));
6
6
  export class NNumber {
7
- /// <summary>
8
- /// convert a string to number
9
- /// for blank string , it will return 0
10
- /// for incorrect format it will return NaN
11
- /// <summary>
12
7
  static Parse(text, style) {
13
8
  if (arguments.length === 2) {
14
9
  if (style === NumberStyles.HexNumber)
@@ -16,20 +11,12 @@ export class NNumber {
16
11
  else
17
12
  throw new NotImplementedException();
18
13
  }
19
- return +text; // use unary + operator to convert string to number.
14
+ return +text;
20
15
  }
21
- /// <summary>
22
- /// convert a string to number
23
- /// return true if string is correctly parsed i.e pvalue.value is number
24
- /// for incorrect format it will return false
25
- /// <summary>
26
16
  static TryParse(str, pvalue) {
27
17
  pvalue.value = +str;
28
18
  return !isNaN(pvalue.value);
29
19
  }
30
- /// <summary>
31
- /// convert a number to string with specified format
32
- /// <summary>
33
20
  static ToString(num, format) {
34
21
  if (format === 'X2') {
35
22
  let res = num.toString(16);
@@ -38,4 +25,4 @@ export class NNumber {
38
25
  throw new NotImplementedException();
39
26
  }
40
27
  }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTk51bWJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvTk51bWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxNQUFNLENBQU4sSUFBWSxZQUVYO0FBRkQsV0FBWSxZQUFZO0lBQ3RCLHlEQUFTLENBQUE7QUFDWCxDQUFDLEVBRlcsWUFBWSxLQUFaLFlBQVksUUFFdkI7QUFFRCxNQUFNLE9BQU8sT0FBTztJQUVsQixhQUFhO0lBQ2IsK0JBQStCO0lBQy9CLHVDQUF1QztJQUN2Qyw0Q0FBNEM7SUFDNUMsYUFBYTtJQUNiLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBWSxFQUFFLEtBQW9CO1FBQzdDLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDMUIsSUFBSSxLQUFLLEtBQUssWUFBWSxDQUFDLFNBQVM7Z0JBQ2xDLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzs7Z0JBRTFCLE1BQU0sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLHFEQUFxRDtJQUNyRSxDQUFDO0lBR0QsYUFBYTtJQUNiLCtCQUErQjtJQUMvQix5RUFBeUU7SUFDekUsOENBQThDO0lBQzlDLGFBQWE7SUFDYixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQVcsRUFBRSxNQUF3QjtRQUNuRCxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxhQUFhO0lBQ2IscURBQXFEO0lBQ3JELGFBQWE7SUFDYixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQVcsRUFBRSxNQUFjO1FBQ3pDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtZQUNuQixJQUFJLEdBQUcsR0FBVyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztTQUMzQztRQUNELE1BQU0sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UmVmUGFyYW19IGZyb20gXCIuL1JlZlBhcmFtXCI7XHJcbmltcG9ydCB7Tm90SW1wbGVtZW50ZWRFeGNlcHRpb259IGZyb20gXCIuL05vdEltcGxlbWVudGVkRXhjZXB0aW9uXCI7XHJcblxyXG5leHBvcnQgZW51bSBOdW1iZXJTdHlsZXMge1xyXG4gIEhleE51bWJlclxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTk51bWJlciB7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gIGNvbnZlcnQgYSBzdHJpbmcgdG8gbnVtYmVyXHJcbiAgLy8vIGZvciBibGFuayBzdHJpbmcgLCBpdCB3aWxsIHJldHVybiAwXHJcbiAgLy8vICBmb3IgaW5jb3JyZWN0IGZvcm1hdCBpdCB3aWxsIHJldHVybiBOYU5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgc3RhdGljIFBhcnNlKHRleHQ6IHN0cmluZywgc3R5bGU/OiBOdW1iZXJTdHlsZXMpOiBudW1iZXIge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcclxuICAgICAgaWYgKHN0eWxlID09PSBOdW1iZXJTdHlsZXMuSGV4TnVtYmVyKVxyXG4gICAgICAgIHJldHVybiBwYXJzZUludCh0ZXh0LCAxNik7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24oKTtcclxuICAgIH1cclxuICAgIHJldHVybiArdGV4dDsgLy8gdXNlIHVuYXJ5ICsgb3BlcmF0b3IgdG8gY29udmVydCBzdHJpbmcgIHRvIG51bWJlci5cclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICBjb252ZXJ0IGEgc3RyaW5nIHRvIG51bWJlclxyXG4gIC8vLyAgcmV0dXJuIHRydWUgaWYgc3RyaW5nIGlzIGNvcnJlY3RseSBwYXJzZWQgaS5lIHB2YWx1ZS52YWx1ZSBpcyBudW1iZXJcclxuICAvLy8gIGZvciBpbmNvcnJlY3QgZm9ybWF0IGl0IHdpbGwgcmV0dXJuIGZhbHNlXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIHN0YXRpYyBUcnlQYXJzZShzdHI6IHN0cmluZywgcHZhbHVlOiBSZWZQYXJhbTxudW1iZXI+KTogYm9vbGVhbiB7XHJcbiAgICBwdmFsdWUudmFsdWUgPSArc3RyO1xyXG4gICAgcmV0dXJuICFpc05hTihwdmFsdWUudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgY29udmVydCBhIG51bWJlciB0byBzdHJpbmcgd2l0aCBzcGVjaWZpZWQgZm9ybWF0XHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIHN0YXRpYyBUb1N0cmluZyhudW06IG51bWJlciwgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKGZvcm1hdCA9PT0gJ1gyJykge1xyXG4gICAgICBsZXQgcmVzOiBzdHJpbmcgPSBudW0udG9TdHJpbmcoMTYpO1xyXG4gICAgICByZXR1cm4gcmVzLmxlbmd0aCA9PT0gMSA/ICcwJyArIHJlcyA6IHJlcztcclxuICAgIH1cclxuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigpO1xyXG4gIH1cclxufVxyXG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTk51bWJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvTk51bWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRSxNQUFNLENBQU4sSUFBWSxZQUVYO0FBRkQsV0FBWSxZQUFZO0lBQ3RCLHlEQUFTLENBQUE7QUFDWCxDQUFDLEVBRlcsWUFBWSxLQUFaLFlBQVksUUFFdkI7QUFFRCxNQUFNLE9BQU8sT0FBTztJQU9sQixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVksRUFBRSxLQUFvQjtRQUM3QyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksS0FBSyxLQUFLLFlBQVksQ0FBQyxTQUFTO2dCQUNsQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7O2dCQUUxQixNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztTQUN2QztRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDZixDQUFDO0lBUUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsTUFBd0I7UUFDbkQsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBS0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsTUFBYztRQUN6QyxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7WUFDbkIsSUFBSSxHQUFHLEdBQVcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7U0FDM0M7UUFDRCxNQUFNLElBQUksdUJBQXVCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1JlZlBhcmFtfSBmcm9tIFwiLi9SZWZQYXJhbVwiO1xyXG5pbXBvcnQge05vdEltcGxlbWVudGVkRXhjZXB0aW9ufSBmcm9tIFwiLi9Ob3RJbXBsZW1lbnRlZEV4Y2VwdGlvblwiO1xyXG5cclxuZXhwb3J0IGVudW0gTnVtYmVyU3R5bGVzIHtcclxuICBIZXhOdW1iZXJcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE5OdW1iZXIge1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICBjb252ZXJ0IGEgc3RyaW5nIHRvIG51bWJlclxyXG4gIC8vLyBmb3IgYmxhbmsgc3RyaW5nICwgaXQgd2lsbCByZXR1cm4gMFxyXG4gIC8vLyAgZm9yIGluY29ycmVjdCBmb3JtYXQgaXQgd2lsbCByZXR1cm4gTmFOXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIHN0YXRpYyBQYXJzZSh0ZXh0OiBzdHJpbmcsIHN0eWxlPzogTnVtYmVyU3R5bGVzKTogbnVtYmVyIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XHJcbiAgICAgIGlmIChzdHlsZSA9PT0gTnVtYmVyU3R5bGVzLkhleE51bWJlcilcclxuICAgICAgICByZXR1cm4gcGFyc2VJbnQodGV4dCwgMTYpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXhjZXB0aW9uKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gK3RleHQ7IC8vIHVzZSB1bmFyeSArIG9wZXJhdG9yIHRvIGNvbnZlcnQgc3RyaW5nICB0byBudW1iZXIuXHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgY29udmVydCBhIHN0cmluZyB0byBudW1iZXJcclxuICAvLy8gIHJldHVybiB0cnVlIGlmIHN0cmluZyBpcyBjb3JyZWN0bHkgcGFyc2VkIGkuZSBwdmFsdWUudmFsdWUgaXMgbnVtYmVyXHJcbiAgLy8vICBmb3IgaW5jb3JyZWN0IGZvcm1hdCBpdCB3aWxsIHJldHVybiBmYWxzZVxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICBzdGF0aWMgVHJ5UGFyc2Uoc3RyOiBzdHJpbmcsIHB2YWx1ZTogUmVmUGFyYW08bnVtYmVyPik6IGJvb2xlYW4ge1xyXG4gICAgcHZhbHVlLnZhbHVlID0gK3N0cjtcclxuICAgIHJldHVybiAhaXNOYU4ocHZhbHVlLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gIGNvbnZlcnQgYSBudW1iZXIgdG8gc3RyaW5nIHdpdGggc3BlY2lmaWVkIGZvcm1hdFxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICBzdGF0aWMgVG9TdHJpbmcobnVtOiBudW1iZXIsIGZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChmb3JtYXQgPT09ICdYMicpIHtcclxuICAgICAgbGV0IHJlczogc3RyaW5nID0gbnVtLnRvU3RyaW5nKDE2KTtcclxuICAgICAgcmV0dXJuIHJlcy5sZW5ndGggPT09IDEgPyAnMCcgKyByZXMgOiByZXM7XHJcbiAgICB9XHJcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFeGNlcHRpb24oKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,6 +1,5 @@
1
1
  import { isNullOrUndefined } from "util";
2
2
  import { Exception } from "./Exception";
3
- // @dynamic
4
3
  export class NString {
5
4
  static IndexOf(str, searchStr, startIndex, count) {
6
5
  let index = str.substr(startIndex, count).indexOf(searchStr);
@@ -49,7 +48,7 @@ export class NString {
49
48
  for (i = 0, l = str.length; i < l; i++) {
50
49
  ch = str.charCodeAt(i);
51
50
  hash = ((hash << 5) - hash) + ch;
52
- hash |= 0; // Convert to 32bit integer
51
+ hash |= 0;
53
52
  }
54
53
  return hash;
55
54
  }
@@ -104,17 +103,14 @@ export class NString {
104
103
  let lenA = strA.length;
105
104
  let lenB = strB.length;
106
105
  let len = Math.min(lenA, lenB);
107
- // compare character by character
108
106
  for (let i = 0; i < len; i++) {
109
107
  if (strA[i].charCodeAt(0) !== strB[i].charCodeAt(0)) {
110
108
  return strA[i].charCodeAt(0) - strB[i].charCodeAt(0);
111
109
  }
112
110
  }
113
- // if all characters are same , but length is different return the difference of length
114
111
  if (lenA !== lenB) {
115
112
  return lenA - lenB;
116
113
  }
117
- // all chars are same , so strings are equal
118
114
  return 0;
119
115
  }
120
116
  static PadRight(source, maxLength, fillString) {
@@ -130,8 +126,6 @@ export class NString {
130
126
  }
131
127
  static Replace(str, orgSubStr, newSubStr) {
132
128
  let resultStr = '';
133
- // fixed defect 151810: replace "*" with "\*" before we update the string so * will be as char and not reg exp
134
- // also for special chars $ ^ . ? + , [
135
129
  orgSubStr = orgSubStr.replace(new RegExp("\\\\", 'g'), "\\\\");
136
130
  orgSubStr = orgSubStr.replace(new RegExp("\\*", 'g'), "\\\*");
137
131
  orgSubStr = orgSubStr.replace(new RegExp("\\$", 'g'), "\\\$");
@@ -152,4 +146,4 @@ export class NString {
152
146
  }
153
147
  }
154
148
  NString.Empty = "";
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTlN0cmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvTlN0cmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUd0QyxXQUFXO0FBQ1gsTUFBTSxPQUFPLE9BQU87SUFHaEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFXLEVBQUUsU0FBYyxFQUFFLFVBQWtCLEVBQUUsS0FBYTtRQUN6RSxJQUFJLEtBQUssR0FBVyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckUsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFXLEVBQUUsSUFBYyxFQUFFLFVBQWtCLEVBQUUsS0FBYTtRQUM1RSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ25DLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUNsQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUNiLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDL0I7U0FDSjtRQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDZCxD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QyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVILE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBVSxFQUFFLFNBQWlCLEVBQUUsU0FBaUI7UUFDN0QsSUFBSSxTQUFTLEdBQVUsRUFBRSxDQUFDO1FBRTFCLCtHQUErRztRQUMvRyx1Q0FBdUM7UUFDdkMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssRUFBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3RCxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0QsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdELFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssRUFBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3RCxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0QsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdELFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssRUFBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3RCxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0QsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTdELElBQUk7WUFDRixTQUFTLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDL0Q7UUFDRCxPQUFPLENBQUMsRUFBRTtZQUNSLE1BQU0sSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzs7QUFwTFEsYUFBSyxHQUFHLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQge2lzTnVsbE9yVW5kZWZpbmVkfSBmcm9tIFwidXRpbFwiO1xyXG5pbXBvcnQge0V4Y2VwdGlvbn0gZnJvbSBcIi4vRXhjZXB0aW9uXCI7XHJcblxyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIE5TdHJpbmcge1xyXG4gICAgc3RhdGljIEVtcHR5ID0gXCJcIjtcclxuXHJcbiAgICBzdGF0aWMgSW5kZXhPZihzdHI6IHN0cmluZywgc2VhcmNoU3RyOiBhbnksIHN0YXJ0SW5kZXg6IG51bWJlciwgY291bnQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IGluZGV4OiBudW1iZXIgPSBzdHIuc3Vic3RyKHN0YXJ0SW5kZXgsIGNvdW50KS5pbmRleE9mKHNlYXJjaFN0cik7XHJcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gLTEgPyBzdGFydEluZGV4ICsgaW5kZXggOiBpbmRleDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgSW5kZXhPZkFueShzdHI6IHN0cmluZywgc3Viczogc3RyaW5nW10sIHN0YXJ0SW5kZXg6IG51bWJlciwgY291bnQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7XHJcbiAgICAgICAgICAgIGxldCBjID0gc3RyLmNoYXJBdChzdGFydEluZGV4ICsgaSk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc3Vicy5sZW5ndGg7ICsraikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGMgPT09IHN1YnNbal0pXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzdGFydEluZGV4ICsgaSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBDb3B5VG8oc291cmNlOiBzdHJpbmcsIHNvdXJjZUluZGV4OiBudW1iZXIsIGRlc3RpbmF0aW9uOiBzdHJpbmdbXSwgZGVzdGluYXRpb25JbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uW2Rlc3RpbmF0aW9uSW5kZXggKyBpXSA9IHNvdXJjZVtzb3VyY2VJbmRleCArIGldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgQ29tcGFyZShzdHJBOiBzdHJpbmcsIHN0ckI6IHN0cmluZywgaWdub3JlQ2FzZTogYm9vbGVhbik6IG51bWJlclxyXG4gICAgc3RhdGljIENvbXBhcmUoc3RyQTogc3RyaW5nLCBzdHJCOiBzdHJpbmcsIGlnbm9yZUNhc2U6IGJvb2xlYW4sIGluZGV4QTogbnVtYmVyLCBpbmRleEI6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpOiBudW1iZXJcclxuICAgIHN0YXRpYyBDb21wYXJlKHN0ckE6IHN0cmluZywgc3RyQjogc3RyaW5nLCBpZ25vcmVDYXNlOiBib29sZWFuLCBpbmRleEE/OiBudW1iZXIsIGluZGV4Qj86IG51bWJlciwgbGVuZ3RoPzogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9IDYpIHtcclxuICAgICAgICAgICAgc3RyQSA9IHN0ckEuc3Vic3RyKGluZGV4QSwgbGVuZ3RoKTtcclxuICAgICAgICAgICAgc3RyQiA9IHN0ckIuc3Vic3RyKGluZGV4QiwgbGVuZ3RoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlnbm9yZUNhc2UpIHtcclxuICAgICAgICAgICAgc3RyQSA9IHN0ckEudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgc3RyQiA9IHN0ckIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN0ckEubG9jYWxlQ29tcGFyZShzdHJCKTtcclxuICAgIH1cclxuXHJcblxyXG4gIHN0YXRpYyBFcXVhbHMoc3RyQTogc3RyaW5nLCBzdHJCOiBzdHJpbmcsIGlnbm9yZUNhc2U6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIGlmICghTlN0cmluZy5Jc051bGxPckVtcHR5KHN0ckEpICYmICFOU3RyaW5nLklzTnVsbE9yRW1wdHkoc3RyQikpIHtcclxuICAgICAgaWYgKGlnbm9yZUNhc2UpIHtcclxuICAgICAgICBzdHJBID0gc3RyQS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIHN0ckIgPSBzdHJCLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHN0ckEgPT09IHN0ckI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAgIHN0YXRpYyBHZXRIYXNoQ29kZShzdHI6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgdmFyIGhhc2ggPSAwLCBpLCBsLCBjaDtcclxuICAgICAgICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGhhc2g7XHJcbiAgICAgICAgZm9yIChpID0gMCwgbCA9IHN0ci5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgY2ggPSBzdHIuY2hhckNvZGVBdChpKTtcclxuICAgICAgICAgICAgaGFzaCA9ICgoaGFzaCA8PCA1KSAtIGhhc2gpICsgY2g7XHJcbiAgICAgICAgICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBoYXNoO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzdGF0aWMgUmVtb3ZlKHN0cjogc3RyaW5nLCBzdGFydEluZGV4OiBudW1iZXIsIGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gc3RyLnN1YnN0cigwLCBzdGFydEluZGV4IC0gMSkgKyBzdHIuc3Vic3RyKHN0YXJ0SW5kZXggKyBsZW5ndGggLSAxKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgVHJpbVN0YXJ0KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHNcXHMqLywgJycpXHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIFRyaW1FbmQoc3RyaW5nOiBzdHJpbmcsIHRyaW1DaGFycz86IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSlcclxuICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXHNcXHMqJC8sICcnKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0cmltQ2hhcnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgbGV0IHRyaW1DaGFyID0gdHJpbUNoYXJzW2pdO1xyXG4gICAgICAgICAgICBsZXQgaSA9IHN0cmluZy5sZW5ndGggLSAxO1xyXG4gICAgICAgICAgICB3aGlsZSAoIWlzTnVsbE9yVW5kZWZpbmVkKHN0cmluZ1tpXSkgJiYgc3RyaW5nW2ldLmVuZHNXaXRoKHRyaW1DaGFyKSkge1xyXG4gICAgICAgICAgICAgICAgc3RyaW5nID0gTlN0cmluZy5SZW1vdmUoc3RyaW5nLCBzdHJpbmcubGVuZ3RoLCAxKTtcclxuICAgICAgICAgICAgICAgIGktLTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RyaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBGb3JtYXQoZm9ybWF0OiBzdHJpbmcsIGFyZzA6IGFueSwgYXJnMT86IGFueSwgYXJnMj86IGFueSwgYXJnMz86IGFueSwgYXJnND86IGFueSwgYXJnNT86IGFueSk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChhcmcwKSAmJiBhcmcwLmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xyXG4gICAgICAgICAgICB2YXIgcyA9IGZvcm1hdCxcclxuICAgICAgICAgICAgICAgIGkgPSBhcmcwLmxlbmd0aDtcclxuICAgICAgICAgICAgd2hpbGUgKGktLSkge1xyXG4gICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxceycgKyBpICsgJ1xcXFx9JywgJ2dtJyksIGFyZzBbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBzO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbYXJnMCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNV07XHJcbiAgICAgICAgICAgIHJldHVybiBOU3RyaW5nLkZvcm1hdChmb3JtYXQsIGFyZ3MpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgSXNOdWxsT3JFbXB0eShzdHIxOiBzdHJpbmcgfCBOU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICFzdHIxO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBGcm9tQ2hhcnMoY2hPckNoYXJzOiBzdHJpbmdbXSlcclxuICAgIHN0YXRpYyBGcm9tQ2hhcnMoY2hPckNoYXJzOiBzdHJpbmdbXSwgc3RhcnRJbmRleDogbnVtYmVyLCBsZW46IG51bWJlcilcclxuICAgIHN0YXRpYyBGcm9tQ2hhcnMoY2hPckNoYXJzOiBzdHJpbmdbXSwgc3RhcnRJbmRleD86IG51bWJlciwgbGVuPzogbnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IHN0cjogc3RyaW5nID0gY2hPckNoYXJzLmpvaW4oJycpO1xyXG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKVxyXG4gICAgICAgICAgICByZXR1cm4gc3RyLnN1YnN0cihzdGFydEluZGV4LCBsZW4pO1xyXG4gICAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIEZyb21DaGFyKGNoOiBzdHJpbmcsIGNvdW50KTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gKG5ldyBBcnJheTxzdHJpbmc+KGNvdW50KS5maWxsKDxzdHJpbmc+Y2gpKS5qb2luKCcnKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgVG9DaGFyQXJyYXkoc3RyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oc3RyKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgQ29tcGFyZU9yZGluYWwoc3RyQTogc3RyaW5nLCBzdHJCOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBsZW5BID0gc3RyQS5sZW5ndGg7XHJcbiAgICAgICAgbGV0IGxlbkIgPSBzdHJCLmxlbmd0aDtcclxuXHJcbiAgICAgICAgbGV0IGxlbiA9IE1hdGgubWluKGxlbkEsIGxlbkIpO1xyXG5cclxuICAgICAgICAvLyBjb21wYXJlIGNoYXJhY3RlciBieSBjaGFyYWN0ZXJcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHJBW2ldLmNoYXJDb2RlQXQoMCkgIT09IHN0ckJbaV0uY2hhckNvZGVBdCgwKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0ckFbaV0uY2hhckNvZGVBdCgwKSAtIHN0ckJbaV0uY2hhckNvZGVBdCgwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gaWYgYWxsIGNoYXJhY3RlcnMgYXJlIHNhbWUgLCBidXQgbGVuZ3RoIGlzIGRpZmZlcmVudCByZXR1cm4gdGhlIGRpZmZlcmVuY2Ugb2YgbGVuZ3RoXHJcbiAgICAgICAgaWYgKGxlbkEgIT09IGxlbkIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxlbkEgLSBsZW5CO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gYWxsIGNoYXJzIGFyZSBzYW1lICwgc28gc3RyaW5ncyBhcmUgZXF1YWxcclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgUGFkUmlnaHQoc291cmNlOiBzdHJpbmcsIG1heExlbmd0aDogbnVtYmVyLCBmaWxsU3RyaW5nPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoc291cmNlLmxlbmd0aCA+PSBtYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2U7XHJcblxyXG4gICAgICAgIGxldCBmaWxsTGVuID0gbWF4TGVuZ3RoIC0gc291cmNlLmxlbmd0aDtcclxuICAgICAgICBsZXQgdGltZXNUb1JlcGVhdCA9IE1hdGguY2VpbChmaWxsTGVuIC8gZmlsbFN0cmluZy5sZW5ndGgpO1xyXG4gICAgICAgIGxldCB0cnVuY2F0ZWRTdHJpbmdGaWxsZXIgPSBmaWxsU3RyaW5nLnJlcGVhdCh0aW1lc1RvUmVwZWF0KS5zbGljZSgwLCBmaWxsTGVuKTtcclxuICAgICAgICByZXR1cm4gc291cmNlICsgdHJ1bmNhdGVkU3RyaW5nRmlsbGVyO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBJbnNlcnQoc3RyOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIGNoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBzdHIuc3Vic3RyKDAsIGluZGV4KSArIGNoICsgc3RyLnN1YnN0cihpbmRleCwgc3RyLmxlbmd0aCAtIGluZGV4KTtcclxuICAgIH1cclxuXHJcbiAgc3RhdGljIFJlcGxhY2Uoc3RyOnN0cmluZywgb3JnU3ViU3RyOiBzdHJpbmcsIG5ld1N1YlN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCByZXN1bHRTdHI6c3RyaW5nID0gJyc7XHJcblxyXG4gICAgLy8gZml4ZWQgZGVmZWN0IDE1MTgxMDogIHJlcGxhY2UgXCIqXCIgd2l0aCBcIlxcKlwiIGJlZm9yZSB3ZSB1cGRhdGUgdGhlIHN0cmluZyBzbyAqIHdpbGwgYmUgYXMgY2hhciBhbmQgbm90IHJlZyBleHBcclxuICAgIC8vIGFsc28gZm9yIHNwZWNpYWwgY2hhcnMgJCBeIC4gPyArICwgW1xyXG4gICAgb3JnU3ViU3RyID0gb3JnU3ViU3RyLnJlcGxhY2UobmV3IFJlZ0V4cChcIlxcXFxcXFxcXCIsICdnJyksIFwiXFxcXFxcXFxcIik7XHJcbiAgICBvcmdTdWJTdHIgPSBvcmdTdWJTdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXCpcIiwnZycpLCBcIlxcXFxcXCpcIik7XHJcbiAgICBvcmdTdWJTdHIgPSBvcmdTdWJTdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXCRcIiwnZycpLCBcIlxcXFxcXCRcIik7XHJcbiAgICBvcmdTdWJTdHIgPSBvcmdTdWJTdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXF5cIiwnZycpLCBcIlxcXFxcXF5cIik7XHJcbiAgICBvcmdTdWJTdHIgPSBvcmdTdWJTdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXC5cIiwnZycpLCBcIlxcXFxcXC5cIik7XHJcbiAgICBvcmdTdWJTdHIgPSBvcmdTdWJTdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXD9cIiwnZycpLCBcIlxcXFxcXD9cIik7XHJcbiAgICBvcmdTdWJTdHIgPSBvcmdTdWJTdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXCtcIiwnZycpLCBcIlxcXFxcXCtcIik7XHJcbiAgICBvcmdTdWJTdHIgPSBvcmdTdWJTdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXCxcIiwnZycpLCBcIlxcXFxcXCxcIik7XHJcbiAgICBvcmdTdWJTdHIgPSBvcmdTdWJTdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXFtcIiwnZycpLCBcIlxcXFxcXFtcIik7XHJcbiAgICBvcmdTdWJTdHIgPSBvcmdTdWJTdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXHxcIiwnZycpLCBcIlxcXFxcXHxcIik7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgcmVzdWx0U3RyID0gc3RyLnJlcGxhY2UobmV3IFJlZ0V4cChvcmdTdWJTdHIsJ2cnKSwgbmV3U3ViU3RyKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlKSB7XHJcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oZS5tZXNzYWdlKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHRTdHI7XHJcbiAgfVxyXG59XHJcbiJdfQ==
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTlN0cmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvTlN0cmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUl0QyxNQUFNLE9BQU8sT0FBTztJQUdoQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQVcsRUFBRSxTQUFjLEVBQUUsVUFBa0IsRUFBRSxLQUFhO1FBQ3pFLElBQUksS0FBSyxHQUFXLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRSxPQUFPLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ25ELENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVcsRUFBRSxJQUFjLEVBQUUsVUFBa0IsRUFBRSxLQUFhO1FBQzVFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ2IsT0FBTyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUMvQjtTQUNKO1FBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNkLENBQUM7SUFF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QzdFLENBQUM7SUFFSCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQVUsRUFBRSxTQUFpQixFQUFFLFNBQWlCO1FBQzdELElBQUksU0FBUyxHQUFVLEVBQUUsQ0FBQztRQUkxQixTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0QsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdELFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssRUFBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3RCxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0QsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdELFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssRUFBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3RCxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0QsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdELFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssRUFBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3RCxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFN0QsSUFBSTtZQUNGLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUMvRDtRQUNELE9BQU8sQ0FBQyxFQUFFO1lBQ1IsTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDaEM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOztBQXBMUSxhQUFLLEdBQUcsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7aXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCJ1dGlsXCI7XHJcbmltcG9ydCB7RXhjZXB0aW9ufSBmcm9tIFwiLi9FeGNlcHRpb25cIjtcclxuXHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgTlN0cmluZyB7XHJcbiAgICBzdGF0aWMgRW1wdHkgPSBcIlwiO1xyXG5cclxuICAgIHN0YXRpYyBJbmRleE9mKHN0cjogc3RyaW5nLCBzZWFyY2hTdHI6IGFueSwgc3RhcnRJbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgaW5kZXg6IG51bWJlciA9IHN0ci5zdWJzdHIoc3RhcnRJbmRleCwgY291bnQpLmluZGV4T2Yoc2VhcmNoU3RyKTtcclxuICAgICAgICByZXR1cm4gaW5kZXggPiAtMSA/IHN0YXJ0SW5kZXggKyBpbmRleCA6IGluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBJbmRleE9mQW55KHN0cjogc3RyaW5nLCBzdWJzOiBzdHJpbmdbXSwgc3RhcnRJbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHtcclxuICAgICAgICAgICAgbGV0IGMgPSBzdHIuY2hhckF0KHN0YXJ0SW5kZXggKyBpKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzdWJzLmxlbmd0aDsgKytqKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYyA9PT0gc3Vic1tqXSlcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHN0YXJ0SW5kZXggKyBpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIENvcHlUbyhzb3VyY2U6IHN0cmluZywgc291cmNlSW5kZXg6IG51bWJlciwgZGVzdGluYXRpb246IHN0cmluZ1tdLCBkZXN0aW5hdGlvbkluZGV4OiBudW1iZXIsIGNvdW50OiBudW1iZXIpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgZGVzdGluYXRpb25bZGVzdGluYXRpb25JbmRleCArIGldID0gc291cmNlW3NvdXJjZUluZGV4ICsgaV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBDb21wYXJlKHN0ckE6IHN0cmluZywgc3RyQjogc3RyaW5nLCBpZ25vcmVDYXNlOiBib29sZWFuKTogbnVtYmVyXHJcbiAgICBzdGF0aWMgQ29tcGFyZShzdHJBOiBzdHJpbmcsIHN0ckI6IHN0cmluZywgaWdub3JlQ2FzZTogYm9vbGVhbiwgaW5kZXhBOiBudW1iZXIsIGluZGV4QjogbnVtYmVyLCBsZW5ndGg6IG51bWJlcik6IG51bWJlclxyXG4gICAgc3RhdGljIENvbXBhcmUoc3RyQTogc3RyaW5nLCBzdHJCOiBzdHJpbmcsIGlnbm9yZUNhc2U6IGJvb2xlYW4sIGluZGV4QT86IG51bWJlciwgaW5kZXhCPzogbnVtYmVyLCBsZW5ndGg/OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID0gNikge1xyXG4gICAgICAgICAgICBzdHJBID0gc3RyQS5zdWJzdHIoaW5kZXhBLCBsZW5ndGgpO1xyXG4gICAgICAgICAgICBzdHJCID0gc3RyQi5zdWJzdHIoaW5kZXhCLCBsZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaWdub3JlQ2FzZSkge1xyXG4gICAgICAgICAgICBzdHJBID0gc3RyQS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICBzdHJCID0gc3RyQi50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RyQS5sb2NhbGVDb21wYXJlKHN0ckIpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgc3RhdGljIEVxdWFscyhzdHJBOiBzdHJpbmcsIHN0ckI6IHN0cmluZywgaWdub3JlQ2FzZTogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFOU3RyaW5nLklzTnVsbE9yRW1wdHkoc3RyQSkgJiYgIU5TdHJpbmcuSXNOdWxsT3JFbXB0eShzdHJCKSkge1xyXG4gICAgICBpZiAoaWdub3JlQ2FzZSkge1xyXG4gICAgICAgIHN0ckEgPSBzdHJBLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgc3RyQiA9IHN0ckIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gc3RyQSA9PT0gc3RyQjtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gICAgc3RhdGljIEdldEhhc2hDb2RlKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgICAgICB2YXIgaGFzaCA9IDAsIGksIGwsIGNoO1xyXG4gICAgICAgIGlmIChzdHIubGVuZ3RoID09PSAwKSByZXR1cm4gaGFzaDtcclxuICAgICAgICBmb3IgKGkgPSAwLCBsID0gc3RyLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBjaCA9IHN0ci5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgICBoYXNoID0gKChoYXNoIDw8IDUpIC0gaGFzaCkgKyBjaDtcclxuICAgICAgICAgICAgaGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhhc2g7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHN0YXRpYyBSZW1vdmUoc3RyOiBzdHJpbmcsIHN0YXJ0SW5kZXg6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBzdHIuc3Vic3RyKDAsIHN0YXJ0SW5kZXggLSAxKSArIHN0ci5zdWJzdHIoc3RhcnRJbmRleCArIGxlbmd0aCAtIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBUcmltU3RhcnQoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvXlxcc1xccyovLCAnJylcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgVHJpbUVuZChzdHJpbmc6IHN0cmluZywgdHJpbUNoYXJzPzogc3RyaW5nW10pOiBzdHJpbmcge1xyXG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKVxyXG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1xcc1xccyokLywgJycpO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRyaW1DaGFycy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgdHJpbUNoYXIgPSB0cmltQ2hhcnNbal07XHJcbiAgICAgICAgICAgIGxldCBpID0gc3RyaW5nLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgICAgIHdoaWxlICghaXNOdWxsT3JVbmRlZmluZWQoc3RyaW5nW2ldKSAmJiBzdHJpbmdbaV0uZW5kc1dpdGgodHJpbUNoYXIpKSB7XHJcbiAgICAgICAgICAgICAgICBzdHJpbmcgPSBOU3RyaW5nLlJlbW92ZShzdHJpbmcsIHN0cmluZy5sZW5ndGgsIDEpO1xyXG4gICAgICAgICAgICAgICAgaS0tO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIEZvcm1hdChmb3JtYXQ6IHN0cmluZywgYXJnMDogYW55LCBhcmcxPzogYW55LCBhcmcyPzogYW55LCBhcmczPzogYW55LCBhcmc0PzogYW55LCBhcmc1PzogYW55KTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKGFyZzApICYmIGFyZzAuY29uc3RydWN0b3IgPT09IEFycmF5KSB7XHJcbiAgICAgICAgICAgIHZhciBzID0gZm9ybWF0LFxyXG4gICAgICAgICAgICAgICAgaSA9IGFyZzAubGVuZ3RoO1xyXG4gICAgICAgICAgICB3aGlsZSAoaS0tKSB7XHJcbiAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFx7JyArIGkgKyAnXFxcXH0nLCAnZ20nKSwgYXJnMFtpXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgYXJncyA9IFthcmcwLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1XTtcclxuICAgICAgICAgICAgcmV0dXJuIE5TdHJpbmcuRm9ybWF0KGZvcm1hdCwgYXJncyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBJc051bGxPckVtcHR5KHN0cjE6IHN0cmluZyB8IE5TdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXN0cjE7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIEZyb21DaGFycyhjaE9yQ2hhcnM6IHN0cmluZ1tdKVxyXG4gICAgc3RhdGljIEZyb21DaGFycyhjaE9yQ2hhcnM6IHN0cmluZ1tdLCBzdGFydEluZGV4OiBudW1iZXIsIGxlbjogbnVtYmVyKVxyXG4gICAgc3RhdGljIEZyb21DaGFycyhjaE9yQ2hhcnM6IHN0cmluZ1tdLCBzdGFydEluZGV4PzogbnVtYmVyLCBsZW4/OiBudW1iZXIpIHtcclxuICAgICAgICBsZXQgc3RyOiBzdHJpbmcgPSBjaE9yQ2hhcnMuam9pbignJyk7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpXHJcbiAgICAgICAgICAgIHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0SW5kZXgsIGxlbik7XHJcbiAgICAgICAgcmV0dXJuIHN0cjtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgRnJvbUNoYXIoY2g6IHN0cmluZywgY291bnQpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiAobmV3IEFycmF5PHN0cmluZz4oY291bnQpLmZpbGwoPHN0cmluZz5jaCkpLmpvaW4oJycpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBUb0NoYXJBcnJheShzdHI6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBDb21wYXJlT3JkaW5hbChzdHJBOiBzdHJpbmcsIHN0ckI6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IGxlbkEgPSBzdHJBLmxlbmd0aDtcclxuICAgICAgICBsZXQgbGVuQiA9IHN0ckIubGVuZ3RoO1xyXG5cclxuICAgICAgICBsZXQgbGVuID0gTWF0aC5taW4obGVuQSwgbGVuQik7XHJcblxyXG4gICAgICAgIC8vIGNvbXBhcmUgY2hhcmFjdGVyIGJ5IGNoYXJhY3RlclxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHN0ckFbaV0uY2hhckNvZGVBdCgwKSAhPT0gc3RyQltpXS5jaGFyQ29kZUF0KDApKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyQVtpXS5jaGFyQ29kZUF0KDApIC0gc3RyQltpXS5jaGFyQ29kZUF0KDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBpZiBhbGwgY2hhcmFjdGVycyBhcmUgc2FtZSAsIGJ1dCBsZW5ndGggaXMgZGlmZmVyZW50IHJldHVybiB0aGUgZGlmZmVyZW5jZSBvZiBsZW5ndGhcclxuICAgICAgICBpZiAobGVuQSAhPT0gbGVuQikge1xyXG4gICAgICAgICAgICByZXR1cm4gbGVuQSAtIGxlbkI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBhbGwgY2hhcnMgYXJlIHNhbWUgLCBzbyBzdHJpbmdzIGFyZSBlcXVhbFxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBQYWRSaWdodChzb3VyY2U6IHN0cmluZywgbWF4TGVuZ3RoOiBudW1iZXIsIGZpbGxTdHJpbmc/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmIChzb3VyY2UubGVuZ3RoID49IG1heExlbmd0aClcclxuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTtcclxuXHJcbiAgICAgICAgbGV0IGZpbGxMZW4gPSBtYXhMZW5ndGggLSBzb3VyY2UubGVuZ3RoO1xyXG4gICAgICAgIGxldCB0aW1lc1RvUmVwZWF0ID0gTWF0aC5jZWlsKGZpbGxMZW4gLyBmaWxsU3RyaW5nLmxlbmd0aCk7XHJcbiAgICAgICAgbGV0IHRydW5jYXRlZFN0cmluZ0ZpbGxlciA9IGZpbGxTdHJpbmcucmVwZWF0KHRpbWVzVG9SZXBlYXQpLnNsaWNlKDAsIGZpbGxMZW4pO1xyXG4gICAgICAgIHJldHVybiBzb3VyY2UgKyB0cnVuY2F0ZWRTdHJpbmdGaWxsZXI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIEluc2VydChzdHI6IHN0cmluZywgaW5kZXg6IG51bWJlciwgY2g6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHIoMCwgaW5kZXgpICsgY2ggKyBzdHIuc3Vic3RyKGluZGV4LCBzdHIubGVuZ3RoIC0gaW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICBzdGF0aWMgUmVwbGFjZShzdHI6c3RyaW5nLCBvcmdTdWJTdHI6IHN0cmluZywgbmV3U3ViU3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdFN0cjpzdHJpbmcgPSAnJztcclxuXHJcbiAgICAvLyBmaXhlZCBkZWZlY3QgMTUxODEwOiAgcmVwbGFjZSBcIipcIiB3aXRoIFwiXFwqXCIgYmVmb3JlIHdlIHVwZGF0ZSB0aGUgc3RyaW5nIHNvICogd2lsbCBiZSBhcyBjaGFyIGFuZCBub3QgcmVnIGV4cFxyXG4gICAgLy8gYWxzbyBmb3Igc3BlY2lhbCBjaGFycyAkIF4gLiA/ICsgLCBbXHJcbiAgICBvcmdTdWJTdHIgPSBvcmdTdWJTdHIucmVwbGFjZShuZXcgUmVnRXhwKFwiXFxcXFxcXFxcIiwgJ2cnKSwgXCJcXFxcXFxcXFwiKTtcclxuICAgIG9yZ1N1YlN0ciA9IG9yZ1N1YlN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxcKlwiLCdnJyksIFwiXFxcXFxcKlwiKTtcclxuICAgIG9yZ1N1YlN0ciA9IG9yZ1N1YlN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxcJFwiLCdnJyksIFwiXFxcXFxcJFwiKTtcclxuICAgIG9yZ1N1YlN0ciA9IG9yZ1N1YlN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxcXlwiLCdnJyksIFwiXFxcXFxcXlwiKTtcclxuICAgIG9yZ1N1YlN0ciA9IG9yZ1N1YlN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxcLlwiLCdnJyksIFwiXFxcXFxcLlwiKTtcclxuICAgIG9yZ1N1YlN0ciA9IG9yZ1N1YlN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxcP1wiLCdnJyksIFwiXFxcXFxcP1wiKTtcclxuICAgIG9yZ1N1YlN0ciA9IG9yZ1N1YlN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxcK1wiLCdnJyksIFwiXFxcXFxcK1wiKTtcclxuICAgIG9yZ1N1YlN0ciA9IG9yZ1N1YlN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxcLFwiLCdnJyksIFwiXFxcXFxcLFwiKTtcclxuICAgIG9yZ1N1YlN0ciA9IG9yZ1N1YlN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxcW1wiLCdnJyksIFwiXFxcXFxcW1wiKTtcclxuICAgIG9yZ1N1YlN0ciA9IG9yZ1N1YlN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxcfFwiLCdnJyksIFwiXFxcXFxcfFwiKTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICByZXN1bHRTdHIgPSBzdHIucmVwbGFjZShuZXcgUmVnRXhwKG9yZ1N1YlN0ciwnZycpLCBuZXdTdWJTdHIpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihlLm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdFN0cjtcclxuICB9XHJcbn1cclxuIl19
@@ -4,4 +4,4 @@ export class NotImplementedException extends Exception {
4
4
  super(message);
5
5
  }
6
6
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90SW1wbGVtZW50ZWRFeGNlcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL05vdEltcGxlbWVudGVkRXhjZXB0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFdEMsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFNBQVM7SUFDcEQsWUFBWSxVQUFrQixpQkFBaUI7UUFDN0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXhjZXB0aW9ufSBmcm9tIFwiLi9FeGNlcHRpb25cIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbiB7XHJcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nID0gXCJOb3QgaW1wbGVtZW50ZWRcIikge1xyXG4gICAgc3VwZXIobWVzc2FnZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90SW1wbGVtZW50ZWRFeGNlcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL05vdEltcGxlbWVudGVkRXhjZXB0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFdEMsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFNBQVM7SUFDcEQsWUFBWSxVQUFrQixpQkFBaUI7UUFDN0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXhjZXB0aW9ufSBmcm9tIFwiLi9FeGNlcHRpb25cIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbiB7XHJcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nID0gXCJOb3QgaW1wbGVtZW50ZWRcIikge1xyXG4gICAgc3VwZXIobWVzc2FnZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,8 +1,8 @@
1
1
  export class NumberFormatInfo {
2
2
  static GetLocaleDecimalSeperator() {
3
- return (1.1).toLocaleString()[1]; // get the decimal seperator of current locale
3
+ return (1.1).toLocaleString()[1];
4
4
  }
5
5
  }
6
6
  NumberFormatInfo.NegativeSign = '-';
7
7
  NumberFormatInfo.NumberDecimalSeparator = NumberFormatInfo.GetLocaleDecimalSeperator();
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTnVtYmVyRm9ybWF0SW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvTnVtYmVyRm9ybWF0SW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZ0JBQWdCO0lBS25CLE1BQU0sQ0FBQyx5QkFBeUI7UUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsOENBQThDO0lBQ2xGLENBQUM7O0FBTnNCLDZCQUFZLEdBQVcsR0FBRyxDQUFDO0FBRTNCLHVDQUFzQixHQUFXLGdCQUFnQixDQUFDLHlCQUF5QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTnVtYmVyRm9ybWF0SW5mbyB7XHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOZWdhdGl2ZVNpZ246IHN0cmluZyA9ICctJztcclxuXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOdW1iZXJEZWNpbWFsU2VwYXJhdG9yOiBzdHJpbmcgPSBOdW1iZXJGb3JtYXRJbmZvLkdldExvY2FsZURlY2ltYWxTZXBlcmF0b3IoKTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgR2V0TG9jYWxlRGVjaW1hbFNlcGVyYXRvcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgxLjEpLnRvTG9jYWxlU3RyaW5nKClbMV07IC8vIGdldCB0aGUgZGVjaW1hbCBzZXBlcmF0b3Igb2YgY3VycmVudCBsb2NhbGVcclxuICB9XHJcbn1cclxuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTnVtYmVyRm9ybWF0SW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvTnVtYmVyRm9ybWF0SW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sZ0JBQWdCO0lBS25CLE1BQU0sQ0FBQyx5QkFBeUI7UUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7O0FBTnNCLDZCQUFZLEdBQVcsR0FBRyxDQUFDO0FBRTNCLHVDQUFzQixHQUFXLGdCQUFnQixDQUFDLHlCQUF5QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTnVtYmVyRm9ybWF0SW5mbyB7XHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOZWdhdGl2ZVNpZ246IHN0cmluZyA9ICctJztcclxuXHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOdW1iZXJEZWNpbWFsU2VwYXJhdG9yOiBzdHJpbmcgPSBOdW1iZXJGb3JtYXRJbmZvLkdldExvY2FsZURlY2ltYWxTZXBlcmF0b3IoKTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgR2V0TG9jYWxlRGVjaW1hbFNlcGVyYXRvcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgxLjEpLnRvTG9jYWxlU3RyaW5nKClbMV07IC8vIGdldCB0aGUgZGVjaW1hbCBzZXBlcmF0b3Igb2YgY3VycmVudCBsb2NhbGVcclxuICB9XHJcbn1cclxuIl19
@@ -3,4 +3,4 @@ export class RefParam {
3
3
  this.value = value;
4
4
  }
5
5
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVmUGFyYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL1JlZlBhcmFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxRQUFRO0lBR25CLFlBQVksS0FBUTtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUmVmUGFyYW08VD4ge1xyXG4gIHZhbHVlOiBUO1xyXG5cclxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCkge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxufVxyXG4iXX0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVmUGFyYW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL1JlZlBhcmFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxRQUFRO0lBR25CLFlBQVksS0FBUTtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUmVmUGFyYW08VD4ge1xyXG4gIHZhbHVlOiBUO1xyXG5cclxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogVCkge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -31,4 +31,4 @@ export class Stack {
31
31
  return clone;
32
32
  }
33
33
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL1N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxLQUFLO0lBSWhCO1FBQ0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBUyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLO1FBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxJQUFJLENBQUMsS0FBWTtRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU0sR0FBRztRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM1QzthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLEtBQUssR0FBaUIsSUFBSSxLQUFLLEVBQVMsQ0FBQztRQUM3QyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU3RhY2s8VERhdGE+IHtcclxuXHJcbiAgcHJpdmF0ZSBfYXJyYXk6IEFycmF5PFREYXRhPjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9hcnJheSA9IG5ldyBBcnJheTxURGF0YT4oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FycmF5Lmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc0VtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FycmF5Lmxlbmd0aCA9PT0gMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwdXNoKHZhbHVlOiBURGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5fYXJyYXkucHVzaCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcG9wKCk6IFREYXRhIHtcclxuICAgIHJldHVybiB0aGlzLl9hcnJheS5wb3AoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwZWVrKCk6IFREYXRhIHtcclxuICAgIGlmICh0aGlzLl9hcnJheS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hcnJheVt0aGlzLl9hcnJheS5sZW5ndGggLSAxXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIENsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYXJyYXkuc3BsaWNlKDAsIHRoaXMuX2FycmF5Lmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ2xvbmUoKTogU3RhY2s8VERhdGE+IHtcclxuICAgIGxldCBjbG9uZTogU3RhY2s8VERhdGE+ID0gbmV3IFN0YWNrPFREYXRhPigpO1xyXG4gICAgY2xvbmUuX2FycmF5ID0gdGhpcy5fYXJyYXkuc2xpY2UoKTtcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcbn1cclxuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tc2NvcmVsaWIvc3JjL1N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxLQUFLO0lBSWhCO1FBQ0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBUyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLO1FBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxJQUFJLENBQUMsS0FBWTtRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU0sR0FBRztRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sSUFBSTtRQUNULElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM1QzthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLEtBQUssR0FBaUIsSUFBSSxLQUFLLEVBQVMsQ0FBQztRQUM3QyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU3RhY2s8VERhdGE+IHtcclxuXHJcbiAgcHJpdmF0ZSBfYXJyYXk6IEFycmF5PFREYXRhPjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9hcnJheSA9IG5ldyBBcnJheTxURGF0YT4oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb3VudCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FycmF5Lmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc0VtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FycmF5Lmxlbmd0aCA9PT0gMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwdXNoKHZhbHVlOiBURGF0YSk6IHZvaWQge1xyXG4gICAgdGhpcy5fYXJyYXkucHVzaCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcG9wKCk6IFREYXRhIHtcclxuICAgIHJldHVybiB0aGlzLl9hcnJheS5wb3AoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwZWVrKCk6IFREYXRhIHtcclxuICAgIGlmICh0aGlzLl9hcnJheS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hcnJheVt0aGlzLl9hcnJheS5sZW5ndGggLSAxXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIENsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fYXJyYXkuc3BsaWNlKDAsIHRoaXMuX2FycmF5Lmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ2xvbmUoKTogU3RhY2s8VERhdGE+IHtcclxuICAgIGxldCBjbG9uZTogU3RhY2s8VERhdGE+ID0gbmV3IFN0YWNrPFREYXRhPigpO1xyXG4gICAgY2xvbmUuX2FycmF5ID0gdGhpcy5fYXJyYXkuc2xpY2UoKTtcclxuICAgIHJldHVybiBjbG9uZTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,6 +1,4 @@
1
1
  import * as StackTrace from 'stacktrace-js';
2
- // StackFrame uses StackTrace utility using stacktrace-js utility from npm
3
- // https://www.npmjs.com/package/stacktrace-js
4
2
  export class StackFrame {
5
3
  constructor(skipFrames, fNeedFileInfo) {
6
4
  this.stackFrame = null;
@@ -13,4 +11,4 @@ export class StackFrame {
13
11
  return this.stackFrame.fileName;
14
12
  }
15
13
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2tGcmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvU3RhY2tGcmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUc1QywwRUFBMEU7QUFDMUUsOENBQThDO0FBQzlDLE1BQU0sT0FBTyxVQUFVO0lBR3JCLFlBQVksVUFBa0IsRUFBRSxhQUFzQjtRQUY5QyxlQUFVLEdBQWlCLElBQUksQ0FBQztRQUl0QyxJQUFJLFdBQVcsR0FBbUIsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZELElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxVQUFVLElBQUksV0FBVyxDQUFDLE1BQU07WUFDcEQsTUFBTyxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgU3RhY2tUcmFjZSBmcm9tICdzdGFja3RyYWNlLWpzJztcclxuaW1wb3J0IEpTU3RhY2tGcmFtZSA9IFN0YWNrVHJhY2UuU3RhY2tGcmFtZTtcclxuXHJcbi8vIFN0YWNrRnJhbWUgdXNlcyBTdGFja1RyYWNlIHV0aWxpdHkgdXNpbmcgc3RhY2t0cmFjZS1qcyB1dGlsaXR5IGZyb20gbnBtXHJcbi8vIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3N0YWNrdHJhY2UtanNcclxuZXhwb3J0IGNsYXNzIFN0YWNrRnJhbWUge1xyXG4gIHByaXZhdGUgc3RhY2tGcmFtZTogSlNTdGFja0ZyYW1lID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3Ioc2tpcEZyYW1lczogbnVtYmVyLCBmTmVlZEZpbGVJbmZvOiBib29sZWFuKSB7XHJcblxyXG4gICAgbGV0IHN0YWNrRnJhbWVzOiBKU1N0YWNrRnJhbWVbXSA9IFN0YWNrVHJhY2UuZ2V0U3luYygpO1xyXG4gICAgaWYgKHNraXBGcmFtZXMgPCAwIHx8IHNraXBGcmFtZXMgPj0gc3RhY2tGcmFtZXMubGVuZ3RoKVxyXG4gICAgICB0aHJvdyAgbmV3IEVycm9yKFwiQXJndW1lbnQgb3V0IG9mIHJhbmdlXCIpO1xyXG5cclxuICAgIHRoaXMuc3RhY2tGcmFtZSA9IHN0YWNrRnJhbWVzW3NraXBGcmFtZXNdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEZpbGVOYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGFja0ZyYW1lLmZpbGVOYW1lO1xyXG4gIH1cclxufVxyXG4iXX0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2tGcmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvU3RhY2tGcmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUs1QyxNQUFNLE9BQU8sVUFBVTtJQUdyQixZQUFZLFVBQWtCLEVBQUUsYUFBc0I7UUFGOUMsZUFBVSxHQUFpQixJQUFJLENBQUM7UUFJdEMsSUFBSSxXQUFXLEdBQW1CLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2RCxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksVUFBVSxJQUFJLFdBQVcsQ0FBQyxNQUFNO1lBQ3BELE1BQU8sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUU1QyxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQ2xDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFN0YWNrVHJhY2UgZnJvbSAnc3RhY2t0cmFjZS1qcyc7XHJcbmltcG9ydCBKU1N0YWNrRnJhbWUgPSBTdGFja1RyYWNlLlN0YWNrRnJhbWU7XHJcblxyXG4vLyBTdGFja0ZyYW1lIHVzZXMgU3RhY2tUcmFjZSB1dGlsaXR5IHVzaW5nIHN0YWNrdHJhY2UtanMgdXRpbGl0eSBmcm9tIG5wbVxyXG4vLyBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9zdGFja3RyYWNlLWpzXHJcbmV4cG9ydCBjbGFzcyBTdGFja0ZyYW1lIHtcclxuICBwcml2YXRlIHN0YWNrRnJhbWU6IEpTU3RhY2tGcmFtZSA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHNraXBGcmFtZXM6IG51bWJlciwgZk5lZWRGaWxlSW5mbzogYm9vbGVhbikge1xyXG5cclxuICAgIGxldCBzdGFja0ZyYW1lczogSlNTdGFja0ZyYW1lW10gPSBTdGFja1RyYWNlLmdldFN5bmMoKTtcclxuICAgIGlmIChza2lwRnJhbWVzIDwgMCB8fCBza2lwRnJhbWVzID49IHN0YWNrRnJhbWVzLmxlbmd0aClcclxuICAgICAgdGhyb3cgIG5ldyBFcnJvcihcIkFyZ3VtZW50IG91dCBvZiByYW5nZVwiKTtcclxuXHJcbiAgICB0aGlzLnN0YWNrRnJhbWUgPSBzdGFja0ZyYW1lc1tza2lwRnJhbWVzXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRGaWxlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhY2tGcmFtZS5maWxlTmFtZTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,12 +1,7 @@
1
1
  import * as JSStackTrace from 'stacktrace-js';
2
- // This uses StackTrace utility using stacktrace-js utility from npm. Use this in package.json
3
- // https://www.npmjs.com/package/stacktrace-js
4
2
  export class StackTrace {
5
3
  GetFrames() {
6
- // Using getSync() method, it returns references of callstack ethod from the javascript files bindled and not typeScript file from sources.
7
- // However, if aSync method would have used, it overcomes above problems but the call to log would have been async and we would not have
8
- // received synchronous logs which would be confusing.
9
4
  return JSStackTrace.getSync();
10
5
  }
11
6
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2tUcmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvU3RhY2tUcmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssWUFBWSxNQUFNLGVBQWUsQ0FBQztBQUc5Qyw4RkFBOEY7QUFDOUYsOENBQThDO0FBQzlDLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLFNBQVM7UUFDUCwySUFBMkk7UUFDM0ksd0lBQXdJO1FBQ3hJLHNEQUFzRDtRQUN0RCxPQUFPLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBKU1N0YWNrVHJhY2UgZnJvbSAnc3RhY2t0cmFjZS1qcyc7XHJcbmltcG9ydCBKU1N0YWNrRnJhbWUgPSBKU1N0YWNrVHJhY2UuU3RhY2tGcmFtZTtcclxuXHJcbi8vIFRoaXMgdXNlcyBTdGFja1RyYWNlIHV0aWxpdHkgdXNpbmcgc3RhY2t0cmFjZS1qcyB1dGlsaXR5IGZyb20gbnBtLiBVc2UgdGhpcyBpbiBwYWNrYWdlLmpzb25cclxuLy8gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvc3RhY2t0cmFjZS1qc1xyXG5leHBvcnQgY2xhc3MgU3RhY2tUcmFjZSB7XHJcbiAgR2V0RnJhbWVzKCk6IEpTU3RhY2tGcmFtZVtdIHtcclxuICAgIC8vIFVzaW5nIGdldFN5bmMoKSBtZXRob2QsIGl0IHJldHVybnMgcmVmZXJlbmNlcyBvZiBjYWxsc3RhY2sgZXRob2QgZnJvbSB0aGUgamF2YXNjcmlwdCBmaWxlcyBiaW5kbGVkIGFuZCBub3QgdHlwZVNjcmlwdCBmaWxlIGZyb20gc291cmNlcy5cclxuICAgIC8vIEhvd2V2ZXIsIGlmIGFTeW5jIG1ldGhvZCB3b3VsZCBoYXZlIHVzZWQsIGl0IG92ZXJjb21lcyBhYm92ZSBwcm9ibGVtcyBidXQgdGhlIGNhbGwgdG8gbG9nIHdvdWxkIGhhdmUgYmVlbiBhc3luYyBhbmQgd2Ugd291bGQgbm90IGhhdmVcclxuICAgIC8vIHJlY2VpdmVkIHN5bmNocm9ub3VzIGxvZ3Mgd2hpY2ggd291bGQgYmUgY29uZnVzaW5nLlxyXG4gICAgcmV0dXJuIEpTU3RhY2tUcmFjZS5nZXRTeW5jKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2tUcmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21zY29yZWxpYi9zcmMvU3RhY2tUcmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssWUFBWSxNQUFNLGVBQWUsQ0FBQztBQUs5QyxNQUFNLE9BQU8sVUFBVTtJQUNyQixTQUFTO1FBSVAsT0FBTyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgSlNTdGFja1RyYWNlIGZyb20gJ3N0YWNrdHJhY2UtanMnO1xyXG5pbXBvcnQgSlNTdGFja0ZyYW1lID0gSlNTdGFja1RyYWNlLlN0YWNrRnJhbWU7XHJcblxyXG4vLyBUaGlzIHVzZXMgU3RhY2tUcmFjZSB1dGlsaXR5IHVzaW5nIHN0YWNrdHJhY2UtanMgdXRpbGl0eSBmcm9tIG5wbS4gVXNlIHRoaXMgaW4gcGFja2FnZS5qc29uXHJcbi8vIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL3N0YWNrdHJhY2UtanNcclxuZXhwb3J0IGNsYXNzIFN0YWNrVHJhY2Uge1xyXG4gIEdldEZyYW1lcygpOiBKU1N0YWNrRnJhbWVbXSB7XHJcbiAgICAvLyBVc2luZyBnZXRTeW5jKCkgbWV0aG9kLCBpdCByZXR1cm5zIHJlZmVyZW5jZXMgb2YgY2FsbHN0YWNrIGV0aG9kIGZyb20gdGhlIGphdmFzY3JpcHQgZmlsZXMgYmluZGxlZCBhbmQgbm90IHR5cGVTY3JpcHQgZmlsZSBmcm9tIHNvdXJjZXMuXHJcbiAgICAvLyBIb3dldmVyLCBpZiBhU3luYyBtZXRob2Qgd291bGQgaGF2ZSB1c2VkLCBpdCBvdmVyY29tZXMgYWJvdmUgcHJvYmxlbXMgYnV0IHRoZSBjYWxsIHRvIGxvZyB3b3VsZCBoYXZlIGJlZW4gYXN5bmMgYW5kIHdlIHdvdWxkIG5vdCBoYXZlXHJcbiAgICAvLyByZWNlaXZlZCBzeW5jaHJvbm91cyBsb2dzIHdoaWNoIHdvdWxkIGJlIGNvbmZ1c2luZy5cclxuICAgIHJldHVybiBKU1N0YWNrVHJhY2UuZ2V0U3luYygpO1xyXG4gIH1cclxufVxyXG4iXX0=