clientnode 4.0.1436 → 4.0.1437
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Lock.js +83 -94
- package/dist/Logger.js +163 -715
- package/dist/Semaphore.js +46 -81
- package/dist/array.js +337 -568
- package/dist/cli.js +37 -71
- package/dist/constants.js +110 -209
- package/dist/context.js +25 -229
- package/dist/cookie.js +48 -226
- package/dist/data-transfer.js +166 -725
- package/dist/datetime.js +241 -1059
- package/dist/domNode.js +277 -441
- package/dist/expression/evaluators.js +234 -1112
- package/dist/expression/helper.js +82 -135
- package/dist/expression/index.js +10 -1245
- package/dist/expression/indicator-functions.js +21 -239
- package/dist/expression/type.js +4 -34
- package/dist/filesystem.js +323 -309
- package/dist/function.js +51 -125
- package/dist/index.js +26 -2709
- package/dist/indicators.js +68 -440
- package/dist/module.js +78 -164
- package/dist/number.js +25 -423
- package/dist/object.js +771 -852
- package/dist/process.js +39 -245
- package/dist/property-types.js +96 -157
- package/dist/scope.js +56 -1825
- package/dist/string.js +603 -909
- package/dist/test-helper.js +171 -541
- package/dist/type.js +8 -37
- package/dist/utility.js +91 -336
- package/package.json +2 -2
- package/dist/Lock.d.ts +0 -39
- package/dist/Logger.d.ts +0 -102
- package/dist/Semaphore.d.ts +0 -29
- package/dist/array.d.ts +0 -150
- package/dist/bundle/Lock.js +0 -111
- package/dist/bundle/Logger.js +0 -705
- package/dist/bundle/Semaphore.js +0 -100
- package/dist/bundle/array.js +0 -648
- package/dist/bundle/cli.js +0 -85
- package/dist/bundle/constants.js +0 -225
- package/dist/bundle/context.js +0 -243
- package/dist/bundle/cookie.js +0 -262
- package/dist/bundle/data-transfer.js +0 -741
- package/dist/bundle/datetime.js +0 -1064
- package/dist/bundle/domNode.js +0 -471
- package/dist/bundle/expression/evaluators.js +0 -1115
- package/dist/bundle/expression/helper.js +0 -106
- package/dist/bundle/expression/index.js +0 -1223
- package/dist/bundle/expression/indicator-functions.js +0 -235
- package/dist/bundle/expression/type.js +0 -50
- package/dist/bundle/filesystem.js +0 -374
- package/dist/bundle/function.js +0 -105
- package/dist/bundle/index.js +0 -2686
- package/dist/bundle/indicators.js +0 -459
- package/dist/bundle/module.js +0 -180
- package/dist/bundle/number.js +0 -425
- package/dist/bundle/object.js +0 -1004
- package/dist/bundle/process.js +0 -275
- package/dist/bundle/property-types.js +0 -167
- package/dist/bundle/scope.js +0 -1808
- package/dist/bundle/string.js +0 -1095
- package/dist/bundle/test-helper.js +0 -690
- package/dist/bundle/type.js +0 -50
- package/dist/bundle/utility.js +0 -362
- package/dist/cli.d.ts +0 -31
- package/dist/compatible/Lock.js +0 -111
- package/dist/compatible/Logger.js +0 -705
- package/dist/compatible/Semaphore.js +0 -100
- package/dist/compatible/array.js +0 -648
- package/dist/compatible/cli.js +0 -85
- package/dist/compatible/constants.js +0 -225
- package/dist/compatible/context.js +0 -243
- package/dist/compatible/cookie.js +0 -262
- package/dist/compatible/data-transfer.js +0 -741
- package/dist/compatible/datetime.js +0 -1064
- package/dist/compatible/domNode.js +0 -471
- package/dist/compatible/expression/evaluators.js +0 -1115
- package/dist/compatible/expression/helper.js +0 -106
- package/dist/compatible/expression/index.js +0 -1223
- package/dist/compatible/expression/indicator-functions.js +0 -235
- package/dist/compatible/expression/type.js +0 -50
- package/dist/compatible/filesystem.js +0 -374
- package/dist/compatible/function.js +0 -105
- package/dist/compatible/index.js +0 -2686
- package/dist/compatible/indicators.js +0 -459
- package/dist/compatible/module.js +0 -180
- package/dist/compatible/number.js +0 -425
- package/dist/compatible/object.js +0 -1004
- package/dist/compatible/process.js +0 -275
- package/dist/compatible/property-types.js +0 -167
- package/dist/compatible/scope.js +0 -1808
- package/dist/compatible/string.js +0 -1095
- package/dist/compatible/test-helper.js +0 -690
- package/dist/compatible/type.js +0 -50
- package/dist/compatible/utility.js +0 -362
- package/dist/constants.d.ts +0 -99
- package/dist/context.d.ts +0 -8
- package/dist/cookie.d.ts +0 -31
- package/dist/data-transfer.d.ts +0 -45
- package/dist/datetime.d.ts +0 -37
- package/dist/domNode.d.ts +0 -82
- package/dist/expression/evaluators.d.ts +0 -55
- package/dist/expression/helper.d.ts +0 -4
- package/dist/expression/index.d.ts +0 -7
- package/dist/expression/indicator-functions.d.ts +0 -14
- package/dist/expression/type.d.ts +0 -70
- package/dist/filesystem.d.ts +0 -143
- package/dist/function.d.ts +0 -20
- package/dist/index.d.ts +0 -23
- package/dist/indicators.d.ts +0 -68
- package/dist/module.d.ts +0 -8
- package/dist/number.d.ts +0 -35
- package/dist/object.d.ts +0 -231
- package/dist/process.d.ts +0 -22
- package/dist/property-types.d.ts +0 -460
- package/dist/scope.d.ts +0 -44
- package/dist/string.d.ts +0 -312
- package/dist/test/Lock.d.ts +0 -1
- package/dist/test/Logger.d.ts +0 -1
- package/dist/test/Semaphore.d.ts +0 -1
- package/dist/test/array.d.ts +0 -1
- package/dist/test/cookie.d.ts +0 -1
- package/dist/test/data-transfer.d.ts +0 -1
- package/dist/test/datetime.d.ts +0 -1
- package/dist/test/domNode.d.ts +0 -1
- package/dist/test/expression/evaluators.d.ts +0 -1
- package/dist/test/expression/helper.d.ts +0 -1
- package/dist/test/expression/indicator-functions.d.ts +0 -1
- package/dist/test/filesystem.d.ts +0 -1
- package/dist/test/function.d.ts +0 -1
- package/dist/test/indicators.d.ts +0 -1
- package/dist/test/number.d.ts +0 -1
- package/dist/test/object.d.ts +0 -1
- package/dist/test/process.d.ts +0 -1
- package/dist/test/property-types.d.ts +0 -1
- package/dist/test/scope.d.ts +0 -1
- package/dist/test/string.d.ts +0 -1
- package/dist/test/utility.d.ts +0 -1
- package/dist/test-helper.d.ts +0 -143
- package/dist/type.d.ts +0 -230
- package/dist/utility.d.ts +0 -44
package/dist/Semaphore.js
CHANGED
|
@@ -1,71 +1,9 @@
|
|
|
1
|
-
'use strict';if(typeof module!=='undefined'&&module!==null&&eval('typeof require')!=='undefined'&&eval('require')!==null&&'main'in eval('require')&&eval('typeof require.main')!=='undefined'&&eval('require.main')!==null){var ORIGINAL_MAIN_MODULE=module;if(module!==eval('require.main')&&'paths'in module&&'paths'in eval('require.main')&&typeof __dirname!=='undefined'&&__dirname!==null)module.paths=eval('require.main.paths').concat(module.paths.filter(function(path){return eval('require.main.paths').includes(path)}))};if(typeof window==='undefined'||window===null)var window=(typeof global==='undefined'||global===null)?{}:global;(function webpackUniversalModuleDefinition(root, factory) {
|
|
2
|
-
if(typeof exports === 'object' && typeof module === 'object')
|
|
3
|
-
module.exports = factory();
|
|
4
|
-
else if(typeof define === 'function' && define.amd)
|
|
5
|
-
define([], factory);
|
|
6
|
-
else {
|
|
7
|
-
var a = factory();
|
|
8
|
-
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
|
|
9
|
-
}
|
|
10
|
-
})(this, function() {
|
|
11
|
-
return /******/ (function() { // webpackBootstrap
|
|
12
|
-
/******/ "use strict";
|
|
13
|
-
/******/ // The require scope
|
|
14
|
-
/******/ var __webpack_require__ = {};
|
|
15
|
-
/******/
|
|
16
|
-
/************************************************************************/
|
|
17
|
-
/******/ /* webpack/runtime/define property getters */
|
|
18
|
-
/******/ !function() {
|
|
19
|
-
/******/ // define getter/value functions for harmony exports
|
|
20
|
-
/******/ __webpack_require__.d = function(exports, definition) {
|
|
21
|
-
/******/ if(Array.isArray(definition)) {
|
|
22
|
-
/******/ var i = 0;
|
|
23
|
-
/******/ while(i < definition.length) {
|
|
24
|
-
/******/ var key = definition[i++];
|
|
25
|
-
/******/ var binding = definition[i++];
|
|
26
|
-
/******/ if(!__webpack_require__.o(exports, key)) {
|
|
27
|
-
/******/ if(binding === 0) {
|
|
28
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
|
|
29
|
-
/******/ } else {
|
|
30
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
|
|
31
|
-
/******/ }
|
|
32
|
-
/******/ } else if(binding === 0) { i++; }
|
|
33
|
-
/******/ }
|
|
34
|
-
/******/ } else {
|
|
35
|
-
/******/ for(var key in definition) {
|
|
36
|
-
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
37
|
-
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
38
|
-
/******/ }
|
|
39
|
-
/******/ }
|
|
40
|
-
/******/ }
|
|
41
|
-
/******/ };
|
|
42
|
-
/******/ }();
|
|
43
|
-
/******/
|
|
44
|
-
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
45
|
-
/******/ !function() {
|
|
46
|
-
/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
|
|
47
|
-
/******/ }();
|
|
48
|
-
/******/
|
|
49
|
-
/******/ /* webpack/runtime/make namespace object */
|
|
50
|
-
/******/ !function() {
|
|
51
|
-
/******/ // define __esModule on exports
|
|
52
|
-
/******/ __webpack_require__.r = function(exports) {
|
|
53
|
-
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
54
|
-
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
55
|
-
/******/ }
|
|
56
|
-
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
57
|
-
/******/ };
|
|
58
|
-
/******/ }();
|
|
59
|
-
/******/
|
|
60
|
-
/************************************************************************/
|
|
61
|
-
var __webpack_exports__ = {};
|
|
62
|
-
__webpack_require__.r(__webpack_exports__);
|
|
63
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
64
|
-
/* harmony export */ Semaphore: function() { return /* binding */ Semaphore; }
|
|
65
|
-
/* harmony export */ });
|
|
66
1
|
// #!/usr/bin/env babel-node
|
|
67
2
|
// -*- coding: utf-8 -*-
|
|
68
|
-
/** @module Semaphore
|
|
3
|
+
/** @module Semaphore */
|
|
4
|
+
'use strict';
|
|
5
|
+
|
|
6
|
+
/* !
|
|
69
7
|
region header
|
|
70
8
|
[Project page](https://torben.website/clientnode)
|
|
71
9
|
|
|
@@ -78,23 +16,50 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
78
16
|
naming 3.0 unported license.
|
|
79
17
|
See https://creativecommons.org/licenses/by/3.0/deed.de
|
|
80
18
|
endregion
|
|
81
|
-
*/
|
|
19
|
+
*/
|
|
20
|
+
import "core-js/modules/es.array.push.js";
|
|
21
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
22
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
23
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
24
|
+
/**
|
|
82
25
|
* Represents the semaphore state.
|
|
83
26
|
* @property queue - List of waiting resource requests.
|
|
84
27
|
* @property numberOfFreeResources - Number free allowed concurrent resource
|
|
85
28
|
* uses.
|
|
86
29
|
* @property numberOfResources - Number of allowed concurrent resource uses.
|
|
87
|
-
*/
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
30
|
+
*/
|
|
31
|
+
export class Semaphore {
|
|
32
|
+
/**
|
|
33
|
+
* Initializes number of resources.
|
|
34
|
+
* @param numberOfResources - Number of resources to manage.
|
|
35
|
+
*/
|
|
36
|
+
constructor(numberOfResources = 2) {
|
|
37
|
+
_defineProperty(this, "queue", []);
|
|
38
|
+
_defineProperty(this, "numberOfResources", void 0);
|
|
39
|
+
_defineProperty(this, "numberOfFreeResources", void 0);
|
|
40
|
+
this.numberOfResources = numberOfResources;
|
|
41
|
+
this.numberOfFreeResources = numberOfResources;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Acquires a new resource and runs given callback if available.
|
|
45
|
+
* @returns A promise which will be resolved if requested resource is
|
|
46
|
+
* available.
|
|
47
|
+
*/
|
|
48
|
+
acquire() {
|
|
49
|
+
return new Promise(resolve => {
|
|
50
|
+
if (this.numberOfFreeResources <= 0) this.queue.push(resolve);else {
|
|
51
|
+
this.numberOfFreeResources -= 1;
|
|
52
|
+
resolve(this.numberOfFreeResources);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Releases a resource and runs a waiting resolver if there exists some.
|
|
58
|
+
*/
|
|
59
|
+
release() {
|
|
60
|
+
const callback = this.queue.shift();
|
|
61
|
+
if (callback === undefined) this.numberOfFreeResources += 1;else callback(this.numberOfFreeResources);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export default Semaphore;
|
|
65
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL1NlbWFwaG9yZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAjIS91c3IvYmluL2VudiBiYWJlbC1ub2RlXG4vLyAtKi0gY29kaW5nOiB1dGYtOCAtKi1cbi8qKiBAbW9kdWxlIFNlbWFwaG9yZSAqL1xuJ3VzZSBzdHJpY3QnXG4vKiAhXG4gICAgcmVnaW9uIGhlYWRlclxuICAgIFtQcm9qZWN0IHBhZ2VdKGh0dHBzOi8vdG9yYmVuLndlYnNpdGUvY2xpZW50bm9kZSlcblxuICAgIENvcHlyaWdodCBUb3JiZW4gU2lja2VydCAoaW5mb1tcIn5hdH5cIl10b3JiZW4ud2Vic2l0ZSkgMTYuMTIuMjAxMlxuXG4gICAgTGljZW5zZVxuICAgIC0tLS0tLS1cblxuICAgIFRoaXMgbGlicmFyeSB3cml0dGVuIGJ5IFRvcmJlbiBTaWNrZXJ0IHN0YW5kcyB1bmRlciBhIGNyZWF0aXZlIGNvbW1vbnNcbiAgICBuYW1pbmcgMy4wIHVucG9ydGVkIGxpY2Vuc2UuXG4gICAgU2VlIGh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS8zLjAvZGVlZC5kZVxuICAgIGVuZHJlZ2lvblxuKi9cbmltcG9ydCB0eXBlIHtBbnlGdW5jdGlvbn0gZnJvbSAnLi90eXBlJ1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHNlbWFwaG9yZSBzdGF0ZS5cbiAqIEBwcm9wZXJ0eSBxdWV1ZSAtIExpc3Qgb2Ygd2FpdGluZyByZXNvdXJjZSByZXF1ZXN0cy5cbiAqIEBwcm9wZXJ0eSBudW1iZXJPZkZyZWVSZXNvdXJjZXMgLSBOdW1iZXIgZnJlZSBhbGxvd2VkIGNvbmN1cnJlbnQgcmVzb3VyY2VcbiAqIHVzZXMuXG4gKiBAcHJvcGVydHkgbnVtYmVyT2ZSZXNvdXJjZXMgLSBOdW1iZXIgb2YgYWxsb3dlZCBjb25jdXJyZW50IHJlc291cmNlIHVzZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZW1hcGhvcmUge1xuICAgIHF1ZXVlOiBBcnJheTxBbnlGdW5jdGlvbj4gPSBbXVxuXG4gICAgbnVtYmVyT2ZSZXNvdXJjZXM6IG51bWJlclxuICAgIG51bWJlck9mRnJlZVJlc291cmNlczogbnVtYmVyXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgbnVtYmVyIG9mIHJlc291cmNlcy5cbiAgICAgKiBAcGFyYW0gbnVtYmVyT2ZSZXNvdXJjZXMgLSBOdW1iZXIgb2YgcmVzb3VyY2VzIHRvIG1hbmFnZS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihudW1iZXJPZlJlc291cmNlcyA9IDIpIHtcbiAgICAgICAgdGhpcy5udW1iZXJPZlJlc291cmNlcyA9IG51bWJlck9mUmVzb3VyY2VzXG4gICAgICAgIHRoaXMubnVtYmVyT2ZGcmVlUmVzb3VyY2VzID0gbnVtYmVyT2ZSZXNvdXJjZXNcbiAgICB9XG4gICAgLyoqXG4gICAgICogQWNxdWlyZXMgYSBuZXcgcmVzb3VyY2UgYW5kIHJ1bnMgZ2l2ZW4gY2FsbGJhY2sgaWYgYXZhaWxhYmxlLlxuICAgICAqIEByZXR1cm5zIEEgcHJvbWlzZSB3aGljaCB3aWxsIGJlIHJlc29sdmVkIGlmIHJlcXVlc3RlZCByZXNvdXJjZSBpc1xuICAgICAqIGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICBhY3F1aXJlKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxudW1iZXI+KChcbiAgICAgICAgICAgIHJlc29sdmU6IChfdmFsdWU6IG51bWJlcikgPT4gdm9pZFxuICAgICAgICApOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm51bWJlck9mRnJlZVJlc291cmNlcyA8PSAwKVxuICAgICAgICAgICAgICAgIHRoaXMucXVldWUucHVzaChyZXNvbHZlKVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5udW1iZXJPZkZyZWVSZXNvdXJjZXMgLT0gMVxuXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLm51bWJlck9mRnJlZVJlc291cmNlcylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVsZWFzZXMgYSByZXNvdXJjZSBhbmQgcnVucyBhIHdhaXRpbmcgcmVzb2x2ZXIgaWYgdGhlcmUgZXhpc3RzIHNvbWUuXG4gICAgICovXG4gICAgcmVsZWFzZSgpIHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2s6IEFueUZ1bmN0aW9uIHwgdW5kZWZpbmVkID0gdGhpcy5xdWV1ZS5zaGlmdCgpXG4gICAgICAgIGlmIChjYWxsYmFjayA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhpcy5udW1iZXJPZkZyZWVSZXNvdXJjZXMgKz0gMVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBjYWxsYmFjayh0aGlzLm51bWJlck9mRnJlZVJlc291cmNlcylcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNlbWFwaG9yZVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxZQUFZOztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFiQTtBQUFBO0FBQUE7QUFBQTtBQWdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sTUFBTSxTQUFTLENBQUM7RUFLbkI7QUFDSjtBQUNBO0FBQ0E7RUFDSSxXQUFXLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxFQUFFO0lBQUEsK0JBUlAsRUFBRTtJQUFBO0lBQUE7SUFTMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQjtJQUMxQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsaUJBQWlCO0VBQ2xEO0VBQ0E7QUFDSjtBQUNBO0FBQ0E7QUFDQTtFQUNJLE9BQU8sR0FBb0I7SUFDdkIsT0FBTyxJQUFJLE9BQU8sQ0FDZCxPQUFpQyxJQUMxQjtNQUNQLElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLENBQUMsRUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQ3ZCO1FBQ0QsSUFBSSxDQUFDLHFCQUFxQixJQUFJLENBQUM7UUFFL0IsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztNQUN2QztJQUNKLENBQUMsQ0FBQztFQUNOO0VBQ0E7QUFDSjtBQUNBO0VBQ0ksT0FBTyxHQUFHO0lBQ04sTUFBTSxRQUFpQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUN0QixJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxNQUUvQixRQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDO0VBQzVDO0FBQ0o7QUFFQSxlQUFlLFNBQVMiLCJpZ25vcmVMaXN0IjpbXX0=
|