@acorex/core 1.3.90
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/README.md +3 -0
- package/acorex-core.d.ts +4 -0
- package/acorex-core.metadata.json +1 -0
- package/bundles/acorex-core.umd.js +2539 -0
- package/bundles/acorex-core.umd.js.map +1 -0
- package/bundles/acorex-core.umd.min.js +17 -0
- package/bundles/acorex-core.umd.min.js.map +1 -0
- package/esm2015/acorex-core.js +5 -0
- package/esm2015/lib/classes/base-page.class.js +21 -0
- package/esm2015/lib/classes/color.class.js +49 -0
- package/esm2015/lib/classes/datetime.class.js +314 -0
- package/esm2015/lib/classes/menu.class.js +27 -0
- package/esm2015/lib/classes/navigator.class.js +1 -0
- package/esm2015/lib/classes/popup.class.js +1 -0
- package/esm2015/lib/classes/promise.class.js +19 -0
- package/esm2015/lib/classes/sectionlist.class.js +1 -0
- package/esm2015/lib/classes/select.class.js +3 -0
- package/esm2015/lib/core.module.js +24 -0
- package/esm2015/lib/error/error.class.js +1 -0
- package/esm2015/lib/error/error.module.js +16 -0
- package/esm2015/lib/error/error.service.js +25 -0
- package/esm2015/lib/events/keyboard.js +1 -0
- package/esm2015/lib/http/http-error.class.js +1 -0
- package/esm2015/lib/http/http-events.interceptor.js +3 -0
- package/esm2015/lib/http/http-request.class.js +1 -0
- package/esm2015/lib/http/http-result.class.js +21 -0
- package/esm2015/lib/http/http.module.js +29 -0
- package/esm2015/lib/http/http.service.js +149 -0
- package/esm2015/lib/locale/en.json +249 -0
- package/esm2015/lib/locale/fa.json +238 -0
- package/esm2015/lib/pipe/datetime.pipe.js +24 -0
- package/esm2015/lib/pipe/htmlToText.pipe.js +23 -0
- package/esm2015/lib/services/config.js +29 -0
- package/esm2015/lib/services/event.service.js +36 -0
- package/esm2015/lib/services/navigator.service.js +9 -0
- package/esm2015/lib/services/storage.service.js +15 -0
- package/esm2015/lib/translator/translator.js +26 -0
- package/esm2015/lib/translator/translator.module.js +23 -0
- package/esm2015/lib/translator/translator.pipe.js +23 -0
- package/esm2015/lib/translator/translator.service.js +21 -0
- package/esm2015/lib/utils/array/array-util.js +133 -0
- package/esm2015/lib/utils/html/html-util.js +192 -0
- package/esm2015/lib/utils/html/html.module.js +16 -0
- package/esm2015/lib/utils/math/math-util.js +6 -0
- package/esm2015/lib/utils/object/object-util.js +83 -0
- package/esm2015/lib/utils/render/on-demand-preload-strategy.service.js +21 -0
- package/esm2015/lib/utils/render/render.service.js +112 -0
- package/esm2015/lib/utils/render/rendering.module.js +26 -0
- package/esm2015/lib/utils/scroll/scroll.directive.js +66 -0
- package/esm2015/lib/utils/scroll/scroll.module.js +16 -0
- package/esm2015/lib/utils/separator/separator.module.js +16 -0
- package/esm2015/lib/utils/separator/separator.pipe.js +22 -0
- package/esm2015/public-api.js +36 -0
- package/esm5/acorex-core.js +5 -0
- package/esm5/lib/classes/base-page.class.js +23 -0
- package/esm5/lib/classes/color.class.js +54 -0
- package/esm5/lib/classes/datetime.class.js +390 -0
- package/esm5/lib/classes/menu.class.js +42 -0
- package/esm5/lib/classes/navigator.class.js +1 -0
- package/esm5/lib/classes/popup.class.js +1 -0
- package/esm5/lib/classes/promise.class.js +22 -0
- package/esm5/lib/classes/sectionlist.class.js +1 -0
- package/esm5/lib/classes/select.class.js +7 -0
- package/esm5/lib/core.module.js +27 -0
- package/esm5/lib/error/error.class.js +1 -0
- package/esm5/lib/error/error.module.js +19 -0
- package/esm5/lib/error/error.service.js +26 -0
- package/esm5/lib/events/keyboard.js +1 -0
- package/esm5/lib/http/http-error.class.js +1 -0
- package/esm5/lib/http/http-events.interceptor.js +3 -0
- package/esm5/lib/http/http-request.class.js +1 -0
- package/esm5/lib/http/http-result.class.js +24 -0
- package/esm5/lib/http/http.module.js +33 -0
- package/esm5/lib/http/http.service.js +157 -0
- package/esm5/lib/locale/en.json +249 -0
- package/esm5/lib/locale/fa.json +238 -0
- package/esm5/lib/pipe/datetime.pipe.js +26 -0
- package/esm5/lib/pipe/htmlToText.pipe.js +26 -0
- package/esm5/lib/services/config.js +37 -0
- package/esm5/lib/services/event.service.js +37 -0
- package/esm5/lib/services/navigator.service.js +12 -0
- package/esm5/lib/services/storage.service.js +18 -0
- package/esm5/lib/translator/translator.js +34 -0
- package/esm5/lib/translator/translator.module.js +24 -0
- package/esm5/lib/translator/translator.pipe.js +25 -0
- package/esm5/lib/translator/translator.service.js +24 -0
- package/esm5/lib/utils/array/array-util.js +147 -0
- package/esm5/lib/utils/html/html-util.js +224 -0
- package/esm5/lib/utils/html/html.module.js +19 -0
- package/esm5/lib/utils/math/math-util.js +10 -0
- package/esm5/lib/utils/object/object-util.js +88 -0
- package/esm5/lib/utils/render/on-demand-preload-strategy.service.js +22 -0
- package/esm5/lib/utils/render/render.service.js +117 -0
- package/esm5/lib/utils/render/rendering.module.js +29 -0
- package/esm5/lib/utils/scroll/scroll.directive.js +68 -0
- package/esm5/lib/utils/scroll/scroll.module.js +19 -0
- package/esm5/lib/utils/separator/separator.module.js +19 -0
- package/esm5/lib/utils/separator/separator.pipe.js +25 -0
- package/esm5/public-api.js +36 -0
- package/fesm2015/acorex-core.js +2057 -0
- package/fesm2015/acorex-core.js.map +1 -0
- package/fesm5/acorex-core.js +2274 -0
- package/fesm5/acorex-core.js.map +1 -0
- package/lib/classes/base-page.class.d.ts +10 -0
- package/lib/classes/color.class.d.ts +17 -0
- package/lib/classes/datetime.class.d.ts +63 -0
- package/lib/classes/menu.class.d.ts +33 -0
- package/lib/classes/navigator.class.d.ts +5 -0
- package/lib/classes/popup.class.d.ts +12 -0
- package/lib/classes/promise.class.d.ts +7 -0
- package/lib/classes/sectionlist.class.d.ts +8 -0
- package/lib/classes/select.class.d.ts +7 -0
- package/lib/core.module.d.ts +2 -0
- package/lib/error/error.class.d.ts +4 -0
- package/lib/error/error.module.d.ts +2 -0
- package/lib/error/error.service.d.ts +10 -0
- package/lib/events/keyboard.d.ts +2 -0
- package/lib/http/http-error.class.d.ts +7 -0
- package/lib/http/http-events.interceptor.d.ts +10 -0
- package/lib/http/http-request.class.d.ts +14 -0
- package/lib/http/http-result.class.d.ts +11 -0
- package/lib/http/http.module.d.ts +4 -0
- package/lib/http/http.service.d.ts +20 -0
- package/lib/pipe/datetime.pipe.d.ts +5 -0
- package/lib/pipe/htmlToText.pipe.d.ts +4 -0
- package/lib/services/config.d.ts +9 -0
- package/lib/services/event.service.d.ts +6 -0
- package/lib/services/navigator.service.d.ts +5 -0
- package/lib/services/storage.service.d.ts +4 -0
- package/lib/translator/translator.d.ts +9 -0
- package/lib/translator/translator.module.d.ts +3 -0
- package/lib/translator/translator.pipe.d.ts +5 -0
- package/lib/translator/translator.service.d.ts +5 -0
- package/lib/utils/array/array-util.d.ts +6 -0
- package/lib/utils/html/html-util.d.ts +62 -0
- package/lib/utils/html/html.module.d.ts +2 -0
- package/lib/utils/math/math-util.d.ts +3 -0
- package/lib/utils/object/object-util.d.ts +7 -0
- package/lib/utils/render/on-demand-preload-strategy.service.d.ts +7 -0
- package/lib/utils/render/render.service.d.ts +14 -0
- package/lib/utils/render/rendering.module.d.ts +4 -0
- package/lib/utils/scroll/scroll.directive.d.ts +13 -0
- package/lib/utils/scroll/scroll.module.d.ts +2 -0
- package/lib/utils/separator/separator.module.d.ts +2 -0
- package/lib/utils/separator/separator.pipe.d.ts +4 -0
- package/package.json +23 -0
- package/public-api.d.ts +42 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Pipe, Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
let AXSeparatorPipe = class AXSeparatorPipe {
|
|
5
|
+
transform(value) {
|
|
6
|
+
if (value) {
|
|
7
|
+
return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
return '0';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
AXSeparatorPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AXSeparatorPipe_Factory() { return new AXSeparatorPipe(); }, token: AXSeparatorPipe, providedIn: "root" });
|
|
15
|
+
AXSeparatorPipe = __decorate([
|
|
16
|
+
Pipe({ name: 'separator' }),
|
|
17
|
+
Injectable({
|
|
18
|
+
providedIn: 'root'
|
|
19
|
+
})
|
|
20
|
+
], AXSeparatorPipe);
|
|
21
|
+
export { AXSeparatorPipe };
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VwYXJhdG9yLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWNvcmV4L2NvcmUvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvc2VwYXJhdG9yL3NlcGFyYXRvci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTWhFLElBQWEsZUFBZSxHQUE1QixNQUFhLGVBQWU7SUFDMUIsU0FBUyxDQUFDLEtBQWE7UUFDckIsSUFBSSxLQUFLLEVBQUU7WUFDVCxPQUFPLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDL0Q7YUFBTTtZQUNMLE9BQU8sR0FBRyxDQUFDO1NBQ1o7SUFDSCxDQUFDO0NBQ0YsQ0FBQTs7QUFSWSxlQUFlO0lBSjNCLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMzQixVQUFVLENBQUM7UUFDVixVQUFVLEVBQUUsTUFBTTtLQUNuQixDQUFDO0dBQ1csZUFBZSxDQVEzQjtTQVJZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICdzZXBhcmF0b3InIH0pXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYU2VwYXJhdG9yUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgJywnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnMCc7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export * from './lib/classes/color.class';
|
|
2
|
+
export * from './lib/classes/datetime.class';
|
|
3
|
+
export * from './lib/classes/menu.class';
|
|
4
|
+
export * from './lib/classes/promise.class';
|
|
5
|
+
export * from './lib/classes/select.class';
|
|
6
|
+
export * from './lib/classes/base-page.class';
|
|
7
|
+
export * from './lib/error/error.module';
|
|
8
|
+
export * from './lib/error/error.service';
|
|
9
|
+
export * from './lib/http/http-events.interceptor';
|
|
10
|
+
export * from './lib/http/http-result.class';
|
|
11
|
+
export * from './lib/http/http.module';
|
|
12
|
+
export * from './lib/http/http.service';
|
|
13
|
+
export * from './lib/pipe/datetime.pipe';
|
|
14
|
+
export * from './lib/pipe/htmlToText.pipe';
|
|
15
|
+
export * from './lib/services/event.service';
|
|
16
|
+
export * from './lib/services/navigator.service';
|
|
17
|
+
export * from './lib/services/storage.service';
|
|
18
|
+
export * from './lib/services/config';
|
|
19
|
+
export * from './lib/translator/translator.service';
|
|
20
|
+
export * from './lib/translator/translator.pipe';
|
|
21
|
+
export * from './lib/translator/translator';
|
|
22
|
+
export * from './lib/translator/translator.module';
|
|
23
|
+
export * from './lib/utils/array/array-util';
|
|
24
|
+
export * from './lib/utils/html/html-util';
|
|
25
|
+
export * from './lib/utils/html/html.module';
|
|
26
|
+
export * from './lib/utils/math/math-util';
|
|
27
|
+
export * from './lib/utils/object/object-util';
|
|
28
|
+
export * from './lib/utils/render/render.service';
|
|
29
|
+
export * from './lib/utils/render/on-demand-preload-strategy.service';
|
|
30
|
+
export * from './lib/utils/render/rendering.module';
|
|
31
|
+
export * from './lib/utils/scroll/scroll.directive';
|
|
32
|
+
export * from './lib/utils/scroll/scroll.module';
|
|
33
|
+
export * from './lib/utils/separator/separator.module';
|
|
34
|
+
export * from './lib/utils/separator/separator.pipe';
|
|
35
|
+
export * from './lib/core.module';
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29yZS8iLCJzb3VyY2VzIjpbInB1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMEJBQTBCLENBQUM7QUFHekMsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsK0JBQStCLENBQUM7QUFHOUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDJCQUEyQixDQUFDO0FBSzFDLGNBQWMsb0NBQW9DLENBQUM7QUFFbkQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBRTNDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsdUJBQXVCLENBQUM7QUFHdEMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy9jb2xvci5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvZGF0ZXRpbWUuY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL21lbnUuY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL25hdmlnYXRvci5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvcG9wdXAuY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3Byb21pc2UuY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3NlY3Rpb25saXN0LmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy9zZWxlY3QuY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL2Jhc2UtcGFnZS5jbGFzcyc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lcnJvci9lcnJvci5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Vycm9yL2Vycm9yLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Vycm9yL2Vycm9yLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZXZlbnRzL2tleWJvYXJkJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2h0dHAvaHR0cC1lcnJvci5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2h0dHAvaHR0cC1ldmVudHMuaW50ZXJjZXB0b3InO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9odHRwL2h0dHAtcmVxdWVzdC5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2h0dHAvaHR0cC1yZXN1bHQuY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9odHRwL2h0dHAubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaHR0cC9odHRwLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZS9kYXRldGltZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZS9odG1sVG9UZXh0LnBpcGUnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvZXZlbnQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvY29uZmlnJztcclxuXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90cmFuc2xhdG9yL3RyYW5zbGF0b3Iuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RyYW5zbGF0b3IvdHJhbnNsYXRvci5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhbnNsYXRvci90cmFuc2xhdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhbnNsYXRvci90cmFuc2xhdG9yLm1vZHVsZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9hcnJheS9hcnJheS11dGlsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvaHRtbC9odG1sLXV0aWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9odG1sL2h0bWwubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvbWF0aC9tYXRoLXV0aWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9vYmplY3Qvb2JqZWN0LXV0aWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9yZW5kZXIvcmVuZGVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9yZW5kZXIvb24tZGVtYW5kLXByZWxvYWQtc3RyYXRlZ3kuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3JlbmRlci9yZW5kZXJpbmcubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvc2Nyb2xsL3Njcm9sbC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9zY3JvbGwvc2Nyb2xsLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3NlcGFyYXRvci9zZXBhcmF0b3IubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvc2VwYXJhdG9yL3NlcGFyYXRvci5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS5tb2R1bGUnO1xyXG5cclxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWNvcmV4L2NvcmUvIiwic291cmNlcyI6WyJhY29yZXgtY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Use AXBasePageComponent from @acorex/components
|
|
4
|
+
*/
|
|
5
|
+
var AXBasePageComponent = /** @class */ (function () {
|
|
6
|
+
function AXBasePageComponent() {
|
|
7
|
+
this.onClosed = new EventEmitter();
|
|
8
|
+
}
|
|
9
|
+
AXBasePageComponent.prototype.close = function (data) {
|
|
10
|
+
this.onClosed.emit({
|
|
11
|
+
component: this,
|
|
12
|
+
data: data
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
AXBasePageComponent.prototype.onClosing = function (e) {
|
|
16
|
+
};
|
|
17
|
+
AXBasePageComponent.prototype.ngOnDestroy = function () {
|
|
18
|
+
this.onClosed.unsubscribe();
|
|
19
|
+
};
|
|
20
|
+
return AXBasePageComponent;
|
|
21
|
+
}());
|
|
22
|
+
export { AXBasePageComponent };
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wYWdlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjb3JleC9jb3JlLyIsInNvdXJjZXMiOlsibGliL2NsYXNzZXMvYmFzZS1wYWdlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0M7O0dBRUc7QUFDSDtJQUFBO1FBRUksYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBaUIxRCxDQUFDO0lBZkcsbUNBQUssR0FBTCxVQUFNLElBQVU7UUFDWixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNmLFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFLElBQUk7U0FDYixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsdUNBQVMsR0FBVCxVQUFVLENBQU07SUFDaEIsQ0FBQztJQUVELHlDQUFXLEdBQVg7UUFDSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFHTCwwQkFBQztBQUFELENBQUMsQUFuQkQsSUFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKlxyXG4gKiBAZGVwcmVjYXRlZCBVc2UgQVhCYXNlUGFnZUNvbXBvbmVudCBmcm9tIEBhY29yZXgvY29tcG9uZW50c1xyXG4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQmFzZVBhZ2VDb21wb25lbnQge1xyXG5cclxuICAgIG9uQ2xvc2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIGNsb3NlKGRhdGE/OiBhbnkpIHtcclxuICAgICAgICB0aGlzLm9uQ2xvc2VkLmVtaXQoe1xyXG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsb3NpbmcoZTogYW55KTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMub25DbG9zZWQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcblxyXG59XHJcblxyXG5cclxuIl19
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
var AXColorUtil = /** @class */ (function () {
|
|
2
|
+
function AXColorUtil() {
|
|
3
|
+
}
|
|
4
|
+
AXColorUtil.hex2Rgb = function (hexColor) {
|
|
5
|
+
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hexColor);
|
|
6
|
+
return result ? {
|
|
7
|
+
r: parseInt(result[1], 16),
|
|
8
|
+
g: parseInt(result[2], 16),
|
|
9
|
+
b: parseInt(result[3], 16)
|
|
10
|
+
} : null;
|
|
11
|
+
};
|
|
12
|
+
AXColorUtil.rgb2Hex = function (r, g, b, a) {
|
|
13
|
+
if (a === void 0) { a = 255; }
|
|
14
|
+
var alpha;
|
|
15
|
+
var hex = (r | 1 << 8).toString(16).slice(1) +
|
|
16
|
+
(g | 1 << 8).toString(16).slice(1) +
|
|
17
|
+
(b | 1 << 8).toString(16).slice(1);
|
|
18
|
+
if (a !== 255) {
|
|
19
|
+
alpha = a;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
alpha = 1;
|
|
23
|
+
}
|
|
24
|
+
alpha = Math.round(alpha * 100) / 100;
|
|
25
|
+
alpha = Math.round(alpha * 255);
|
|
26
|
+
var hexAlpha = (alpha + 0x10000).toString(16).substr(-2).toUpperCase();
|
|
27
|
+
return '#' + hex + (alpha == 255 ? '' : hexAlpha);
|
|
28
|
+
};
|
|
29
|
+
;
|
|
30
|
+
AXColorUtil.illuminance = function (hexColor) {
|
|
31
|
+
var rgbColor = AXColorUtil.hex2Rgb(hexColor);
|
|
32
|
+
if (!rgbColor) {
|
|
33
|
+
return -1;
|
|
34
|
+
}
|
|
35
|
+
var r = rgbColor.r;
|
|
36
|
+
var g = rgbColor.g;
|
|
37
|
+
var b = rgbColor.b;
|
|
38
|
+
var a = [r, g, b].map(function (v) {
|
|
39
|
+
v /= 255;
|
|
40
|
+
return (v <= 0.03928) ?
|
|
41
|
+
v / 12.92 :
|
|
42
|
+
Math.pow(((v + 0.055) / 1.055), 2.4);
|
|
43
|
+
});
|
|
44
|
+
return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;
|
|
45
|
+
};
|
|
46
|
+
AXColorUtil.contrastToWhite = function (hexColor) {
|
|
47
|
+
var whiteIlluminance = 1;
|
|
48
|
+
var illuminance = AXColorUtil.illuminance(hexColor);
|
|
49
|
+
return whiteIlluminance / illuminance;
|
|
50
|
+
};
|
|
51
|
+
return AXColorUtil;
|
|
52
|
+
}());
|
|
53
|
+
export { AXColorUtil };
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWNvcmV4L2NvcmUvIiwic291cmNlcyI6WyJsaWIvY2xhc3Nlcy9jb2xvci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQTtJQUFBO0lBb0RBLENBQUM7SUFqRFUsbUJBQU8sR0FBZCxVQUFlLFFBQWdCO1FBQzNCLElBQU0sTUFBTSxHQUFHLDJDQUEyQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDWixDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzFCLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUM3QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRU0sbUJBQU8sR0FBZCxVQUFlLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQWU7UUFBZixrQkFBQSxFQUFBLE9BQWU7UUFDM0QsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDeEMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRTtZQUNYLEtBQUssR0FBRyxDQUFDLENBQUM7U0FDYjthQUFNO1lBQ0gsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUNiO1FBRUQsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN0QyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pFLE9BQU8sR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUFBLENBQUM7SUFFSyx1QkFBVyxHQUFsQixVQUFtQixRQUFnQjtRQUMvQixJQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDWCxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ2I7UUFDRCxJQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLElBQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDckIsSUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNyQixJQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsQ0FBQztZQUNyQixDQUFDLElBQUksR0FBRyxDQUFDO1lBQ1QsT0FBTyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNuQixDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUN6RCxDQUFDO0lBRU0sMkJBQWUsR0FBdEIsVUFBdUIsUUFBZ0I7UUFDbkMsSUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0RCxPQUFPLGdCQUFnQixHQUFHLFdBQVcsQ0FBQztJQUMxQyxDQUFDO0lBRUwsa0JBQUM7QUFBRCxDQUFDLEFBcERELElBb0RDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBWENvbG9yIHtcclxuICAgIGlkPzogc3RyaW5nO1xyXG4gICAgY29sb3I/OiBzdHJpbmc7XHJcbiAgICBjb2RlOiBzdHJpbmc7XHJcbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XHJcbiAgICBhY3RpdmU/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhDb2xvclV0aWwge1xyXG5cclxuXHJcbiAgICBzdGF0aWMgaGV4MlJnYihoZXhDb2xvcjogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleENvbG9yKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0ID8ge1xyXG4gICAgICAgICAgICByOiBwYXJzZUludChyZXN1bHRbMV0sIDE2KSxcclxuICAgICAgICAgICAgZzogcGFyc2VJbnQocmVzdWx0WzJdLCAxNiksXHJcbiAgICAgICAgICAgIGI6IHBhcnNlSW50KHJlc3VsdFszXSwgMTYpXHJcbiAgICAgICAgfSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJnYjJIZXgocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciwgYTogbnVtYmVyID0gMjU1KTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgYWxwaGE7XHJcbiAgICAgICAgbGV0IGhleCA9IChyIHwgMSA8PCA4KS50b1N0cmluZygxNikuc2xpY2UoMSkgK1xyXG4gICAgICAgICAgICAoZyB8IDEgPDwgOCkudG9TdHJpbmcoMTYpLnNsaWNlKDEpICtcclxuICAgICAgICAgICAgKGIgfCAxIDw8IDgpLnRvU3RyaW5nKDE2KS5zbGljZSgxKTtcclxuICAgICAgICBpZiAoYSAhPT0gMjU1KSB7XHJcbiAgICAgICAgICAgIGFscGhhID0gYTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBhbHBoYSA9IDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhbHBoYSA9IE1hdGgucm91bmQoYWxwaGEgKiAxMDApIC8gMTAwO1xyXG4gICAgICAgIGFscGhhID0gTWF0aC5yb3VuZChhbHBoYSAqIDI1NSk7XHJcbiAgICAgICAgY29uc3QgaGV4QWxwaGEgPSAoYWxwaGEgKyAweDEwMDAwKS50b1N0cmluZygxNikuc3Vic3RyKC0yKS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIHJldHVybiAnIycgKyBoZXggKyAoYWxwaGEgPT0gMjU1ID8gJycgOiBoZXhBbHBoYSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHN0YXRpYyBpbGx1bWluYW5jZShoZXhDb2xvcjogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgcmdiQ29sb3IgPSBBWENvbG9yVXRpbC5oZXgyUmdiKGhleENvbG9yKTtcclxuICAgICAgICBpZiAoIXJnYkNvbG9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgciA9IHJnYkNvbG9yLnI7XHJcbiAgICAgICAgY29uc3QgZyA9IHJnYkNvbG9yLmc7XHJcbiAgICAgICAgY29uc3QgYiA9IHJnYkNvbG9yLmI7XHJcbiAgICAgICAgY29uc3QgYSA9IFtyLCBnLCBiXS5tYXAodiA9PiB7XHJcbiAgICAgICAgICAgIHYgLz0gMjU1O1xyXG4gICAgICAgICAgICByZXR1cm4gKHYgPD0gMC4wMzkyOCkgP1xyXG4gICAgICAgICAgICAgICAgdiAvIDEyLjkyIDpcclxuICAgICAgICAgICAgICAgIE1hdGgucG93KCgodiArIDAuMDU1KSAvIDEuMDU1KSwgMi40KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYVswXSAqIDAuMjEyNiArIGFbMV0gKiAwLjcxNTIgKyBhWzJdICogMC4wNzIyO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjb250cmFzdFRvV2hpdGUoaGV4Q29sb3I6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHdoaXRlSWxsdW1pbmFuY2UgPSAxO1xyXG4gICAgICAgIGNvbnN0IGlsbHVtaW5hbmNlID0gQVhDb2xvclV0aWwuaWxsdW1pbmFuY2UoaGV4Q29sb3IpO1xyXG4gICAgICAgIHJldHVybiB3aGl0ZUlsbHVtaW5hbmNlIC8gaWxsdW1pbmFuY2U7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import * as moment_ from 'jalali-moment';
|
|
2
|
+
import { AXConfig } from '../services/config';
|
|
3
|
+
var moment = moment_;
|
|
4
|
+
var AXDateTime = /** @class */ (function () {
|
|
5
|
+
// private get _moment(): moment_.Moment {
|
|
6
|
+
// const m = moment(this.date);
|
|
7
|
+
// if (this.type === 'jalali') {
|
|
8
|
+
// m.locale('fa');
|
|
9
|
+
// }
|
|
10
|
+
// return m;
|
|
11
|
+
// }
|
|
12
|
+
function AXDateTime(value, type) {
|
|
13
|
+
if (value === void 0) { value = new Date(); }
|
|
14
|
+
if (type === void 0) { type = AXConfig.get('dateTime.type') || 'gregorian'; }
|
|
15
|
+
this.type = type;
|
|
16
|
+
if (value instanceof Date) {
|
|
17
|
+
this._date = value;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
this._date = new Date(value);
|
|
21
|
+
}
|
|
22
|
+
this._moment = moment(this.date);
|
|
23
|
+
if (this.type === 'jalali') {
|
|
24
|
+
this._moment.locale('fa');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
AXDateTime.convert = function (value, type) {
|
|
28
|
+
if (type === void 0) { type = AXConfig.get('dateTime.type') || 'gregorian'; }
|
|
29
|
+
var date;
|
|
30
|
+
if (typeof value === 'string' || value instanceof String) {
|
|
31
|
+
date = new AXDateTime(value, type);
|
|
32
|
+
}
|
|
33
|
+
else if (value instanceof Date) {
|
|
34
|
+
date = new AXDateTime(value, type);
|
|
35
|
+
}
|
|
36
|
+
else if (value instanceof AXDateTime) {
|
|
37
|
+
date = value;
|
|
38
|
+
}
|
|
39
|
+
return date;
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(AXDateTime.prototype, "date", {
|
|
42
|
+
get: function () {
|
|
43
|
+
return this._date;
|
|
44
|
+
},
|
|
45
|
+
enumerable: true,
|
|
46
|
+
configurable: true
|
|
47
|
+
});
|
|
48
|
+
AXDateTime.prototype.resolveUnit = function (unit) {
|
|
49
|
+
return this.type === 'jalali' ? 'j' + unit : unit;
|
|
50
|
+
};
|
|
51
|
+
AXDateTime.prototype.clone = function () {
|
|
52
|
+
return new AXDateTime(this.date, this.type);
|
|
53
|
+
};
|
|
54
|
+
Object.defineProperty(AXDateTime.prototype, "dayInMonth", {
|
|
55
|
+
get: function () {
|
|
56
|
+
return this._moment.date();
|
|
57
|
+
},
|
|
58
|
+
enumerable: true,
|
|
59
|
+
configurable: true
|
|
60
|
+
});
|
|
61
|
+
Object.defineProperty(AXDateTime.prototype, "dayOfYear", {
|
|
62
|
+
get: function () {
|
|
63
|
+
return this._moment.dayOfYear();
|
|
64
|
+
},
|
|
65
|
+
enumerable: true,
|
|
66
|
+
configurable: true
|
|
67
|
+
});
|
|
68
|
+
Object.defineProperty(AXDateTime.prototype, "dayInWeek", {
|
|
69
|
+
get: function () {
|
|
70
|
+
return this._moment.day();
|
|
71
|
+
},
|
|
72
|
+
enumerable: true,
|
|
73
|
+
configurable: true
|
|
74
|
+
});
|
|
75
|
+
Object.defineProperty(AXDateTime.prototype, "hour", {
|
|
76
|
+
get: function () {
|
|
77
|
+
return this._moment.hour();
|
|
78
|
+
},
|
|
79
|
+
enumerable: true,
|
|
80
|
+
configurable: true
|
|
81
|
+
});
|
|
82
|
+
Object.defineProperty(AXDateTime.prototype, "minute", {
|
|
83
|
+
get: function () {
|
|
84
|
+
return this._moment.minute();
|
|
85
|
+
},
|
|
86
|
+
enumerable: true,
|
|
87
|
+
configurable: true
|
|
88
|
+
});
|
|
89
|
+
Object.defineProperty(AXDateTime.prototype, "second", {
|
|
90
|
+
get: function () {
|
|
91
|
+
return this._moment.second();
|
|
92
|
+
},
|
|
93
|
+
enumerable: true,
|
|
94
|
+
configurable: true
|
|
95
|
+
});
|
|
96
|
+
Object.defineProperty(AXDateTime.prototype, "year", {
|
|
97
|
+
get: function () {
|
|
98
|
+
return this._moment.year();
|
|
99
|
+
},
|
|
100
|
+
enumerable: true,
|
|
101
|
+
configurable: true
|
|
102
|
+
});
|
|
103
|
+
Object.defineProperty(AXDateTime.prototype, "monthOfYear", {
|
|
104
|
+
get: function () {
|
|
105
|
+
return this._moment.month();
|
|
106
|
+
},
|
|
107
|
+
enumerable: true,
|
|
108
|
+
configurable: true
|
|
109
|
+
});
|
|
110
|
+
Object.defineProperty(AXDateTime.prototype, "month", {
|
|
111
|
+
get: function () {
|
|
112
|
+
return new AXCalendarMonth(this);
|
|
113
|
+
},
|
|
114
|
+
enumerable: true,
|
|
115
|
+
configurable: true
|
|
116
|
+
});
|
|
117
|
+
Object.defineProperty(AXDateTime.prototype, "firstDayOfWeek", {
|
|
118
|
+
get: function () {
|
|
119
|
+
var a = moment(this.date);
|
|
120
|
+
if (this.type === 'jalali') {
|
|
121
|
+
this._moment.locale('fa');
|
|
122
|
+
}
|
|
123
|
+
return new AXDateTime(a.startOf('w').toDate(), this.type);
|
|
124
|
+
},
|
|
125
|
+
enumerable: true,
|
|
126
|
+
configurable: true
|
|
127
|
+
});
|
|
128
|
+
Object.defineProperty(AXDateTime.prototype, "endDayOfWeek", {
|
|
129
|
+
get: function () {
|
|
130
|
+
var a = moment(this.date);
|
|
131
|
+
if (this.type === 'jalali') {
|
|
132
|
+
this._moment.locale('fa');
|
|
133
|
+
}
|
|
134
|
+
return new AXDateTime(moment(this.date).endOf('w').toDate(), this.type);
|
|
135
|
+
},
|
|
136
|
+
enumerable: true,
|
|
137
|
+
configurable: true
|
|
138
|
+
});
|
|
139
|
+
AXDateTime.prototype.convertStringToJalali = function (date, format) {
|
|
140
|
+
return moment(date).locale('fa').format('YYYY/M/D');
|
|
141
|
+
};
|
|
142
|
+
AXDateTime.prototype.convertStringToGregorian = function (date, format) {
|
|
143
|
+
return new Date((moment.from(date, 'fa', 'YYYY/MM/DD').format('YYYY/MM/DD')));
|
|
144
|
+
};
|
|
145
|
+
AXDateTime.prototype.add = function (unit, amount) {
|
|
146
|
+
if (unit === void 0) { unit = 'day'; }
|
|
147
|
+
return new AXDateTime(moment(this.date).add(amount, this.resolveUnit(unit)).toDate(), this.type);
|
|
148
|
+
};
|
|
149
|
+
AXDateTime.prototype.addDay = function (amount) {
|
|
150
|
+
return new AXDateTime(moment(this.date).add(amount, 'd').toDate(), this.type);
|
|
151
|
+
};
|
|
152
|
+
AXDateTime.prototype.addMonth = function (amount) {
|
|
153
|
+
return new AXDateTime(moment(this.date).add(amount, 'months').toDate(), this.type);
|
|
154
|
+
};
|
|
155
|
+
AXDateTime.prototype.addHour = function (amount) {
|
|
156
|
+
return new AXDateTime(moment(this.date).add(amount, 'hours').toDate(), this.type);
|
|
157
|
+
};
|
|
158
|
+
AXDateTime.prototype.set = function (unit, value) {
|
|
159
|
+
if (unit === void 0) { unit = 'day'; }
|
|
160
|
+
return new AXDateTime(this._moment.set(unit, value).toDate(), this.type);
|
|
161
|
+
};
|
|
162
|
+
AXDateTime.prototype.duration = function (end, unit) {
|
|
163
|
+
if (unit === void 0) { unit = 'days'; }
|
|
164
|
+
var duration = moment.duration(this._moment.diff(end._moment));
|
|
165
|
+
return Math.round(duration.as(unit));
|
|
166
|
+
};
|
|
167
|
+
AXDateTime.prototype.startOf = function (unit) {
|
|
168
|
+
if (unit === void 0) { unit = 'day'; }
|
|
169
|
+
return new AXDateTime(moment(this.date).startOf(this.resolveUnit(unit)).toDate(), this.type);
|
|
170
|
+
};
|
|
171
|
+
AXDateTime.prototype.endOf = function (unit) {
|
|
172
|
+
if (unit === void 0) { unit = 'day'; }
|
|
173
|
+
return new AXDateTime(moment(this.date).endOf(this.resolveUnit(unit)).toDate(), this.type);
|
|
174
|
+
};
|
|
175
|
+
AXDateTime.prototype.format = function (format) {
|
|
176
|
+
if (format === void 0) { format = AXConfig.get('dateTime.shortDateFormat') || (this.type === 'gregorian' ? 'DD-MM-YYYY' : 'YYYY-MM-DD'); }
|
|
177
|
+
if (format === 'P') {
|
|
178
|
+
return this._moment.fromNow();
|
|
179
|
+
}
|
|
180
|
+
return this._moment.format(format);
|
|
181
|
+
};
|
|
182
|
+
AXDateTime.prototype.toString = function () {
|
|
183
|
+
return this.format();
|
|
184
|
+
};
|
|
185
|
+
AXDateTime.prototype.equal = function (value, unit) {
|
|
186
|
+
if (unit === void 0) { unit = 'day'; }
|
|
187
|
+
if (!value) {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
return this._moment.isSame(moment(value.date), this.resolveUnit(unit));
|
|
191
|
+
};
|
|
192
|
+
AXDateTime.prototype.convertToJalaliDate = function (value) {
|
|
193
|
+
var options = {
|
|
194
|
+
numberingSystem: 'latn',
|
|
195
|
+
year: 'numeric',
|
|
196
|
+
month: '2-digit',
|
|
197
|
+
day: '2-digit',
|
|
198
|
+
hour: '2-digit',
|
|
199
|
+
minute: '2-digit',
|
|
200
|
+
second: '2-digit'
|
|
201
|
+
};
|
|
202
|
+
var jDate = new Date(value).toLocaleDateString('fa-IR', options);
|
|
203
|
+
var item = {};
|
|
204
|
+
item.year = jDate.slice(0, 4);
|
|
205
|
+
item.month = jDate.slice(5, 7);
|
|
206
|
+
item.day = jDate.slice(8, 10);
|
|
207
|
+
item.hour = jDate.slice(13, 15);
|
|
208
|
+
item.minutes = jDate.slice(16, 18);
|
|
209
|
+
item.seconds = jDate.slice(19, 21);
|
|
210
|
+
return item;
|
|
211
|
+
};
|
|
212
|
+
AXDateTime.prototype.toJalaliString = function (value) {
|
|
213
|
+
var date = this.convertToJalaliDate(value);
|
|
214
|
+
var str = '';
|
|
215
|
+
str = date.year + '-' + date.month + '-' + date.day + 'T' + date.hour + ':' + date.minutes + ':' + date.seconds;
|
|
216
|
+
return str;
|
|
217
|
+
};
|
|
218
|
+
AXDateTime.prototype.convertToGregorianDate = function (value) {
|
|
219
|
+
var options = {
|
|
220
|
+
numberingSystem: 'latn',
|
|
221
|
+
year: 'numeric',
|
|
222
|
+
month: '2-digit',
|
|
223
|
+
day: '2-digit',
|
|
224
|
+
hour: '2-digit',
|
|
225
|
+
minute: '2-digit',
|
|
226
|
+
second: '2-digit'
|
|
227
|
+
};
|
|
228
|
+
var date = new Date(value).toLocaleString('en-us', options);
|
|
229
|
+
var item = {};
|
|
230
|
+
item.year = date.slice(6, 10);
|
|
231
|
+
item.month = date.slice(0, 2);
|
|
232
|
+
item.day = date.slice(3, 5);
|
|
233
|
+
item.hour = date.slice(12, 14);
|
|
234
|
+
item.minutes = date.slice(15, 17);
|
|
235
|
+
item.seconds = date.slice(18, 20);
|
|
236
|
+
return item;
|
|
237
|
+
};
|
|
238
|
+
AXDateTime.prototype.toGregorianString = function (value) {
|
|
239
|
+
var date = this.convertToGregorianDate(value);
|
|
240
|
+
var str = '';
|
|
241
|
+
str = date.year + '-' + date.month + '-' + date.day + 'T' + date.hour + ':' + date.minutes + ':' + date.seconds;
|
|
242
|
+
return str;
|
|
243
|
+
};
|
|
244
|
+
AXDateTime.prototype.compaireNew = function (value, unit, type) {
|
|
245
|
+
if (unit === void 0) { unit = 'YMD'; }
|
|
246
|
+
if (type === void 0) { type = 'jalali'; }
|
|
247
|
+
var range = [0, 0];
|
|
248
|
+
var str1;
|
|
249
|
+
var str2;
|
|
250
|
+
if (type === 'jalali') {
|
|
251
|
+
str1 = this.toJalaliString(this.date);
|
|
252
|
+
str2 = this.toJalaliString(value.date ? value.date : value);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
str1 = this.toGregorianString(this.date);
|
|
256
|
+
str2 = this.toGregorianString(value.date ? value.date : value);
|
|
257
|
+
}
|
|
258
|
+
switch (unit) {
|
|
259
|
+
case 'YMDhms':
|
|
260
|
+
range[0] = 0;
|
|
261
|
+
range[1] = 19;
|
|
262
|
+
break;
|
|
263
|
+
case 'YMDhm':
|
|
264
|
+
range[0] = 0;
|
|
265
|
+
range[1] = 16;
|
|
266
|
+
break;
|
|
267
|
+
case 'YMDh':
|
|
268
|
+
range[0] = 0;
|
|
269
|
+
range[1] = 13;
|
|
270
|
+
break;
|
|
271
|
+
case 'YMD':
|
|
272
|
+
range[0] = 0;
|
|
273
|
+
range[1] = 10;
|
|
274
|
+
break;
|
|
275
|
+
case 'YM':
|
|
276
|
+
range[0] = 0;
|
|
277
|
+
range[1] = 7;
|
|
278
|
+
break;
|
|
279
|
+
case 'h':
|
|
280
|
+
range[0] = 11;
|
|
281
|
+
range[1] = 13;
|
|
282
|
+
break;
|
|
283
|
+
case 'm':
|
|
284
|
+
range[0] = 14;
|
|
285
|
+
range[1] = 16;
|
|
286
|
+
break;
|
|
287
|
+
case 's':
|
|
288
|
+
range[0] = 17;
|
|
289
|
+
range[1] = 19;
|
|
290
|
+
break;
|
|
291
|
+
case 'D':
|
|
292
|
+
range[0] = 8;
|
|
293
|
+
range[1] = 10;
|
|
294
|
+
break;
|
|
295
|
+
case 'M':
|
|
296
|
+
range[0] = 5;
|
|
297
|
+
range[1] = 7;
|
|
298
|
+
break;
|
|
299
|
+
case 'Y':
|
|
300
|
+
range[0] = 0;
|
|
301
|
+
range[1] = 4;
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
if (str1.slice(range[0], range[1]) === str2.slice(range[0], range[1])) {
|
|
305
|
+
return 0;
|
|
306
|
+
}
|
|
307
|
+
else if (str1.slice(range[0], range[1]) > str2.slice(range[0], range[1])) {
|
|
308
|
+
return 1;
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
return -1;
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
AXDateTime.prototype.compaire = function (value, unit) {
|
|
315
|
+
if (unit === void 0) { unit = 'day'; }
|
|
316
|
+
if (this._moment.isSame(moment(value.date), this.resolveUnit(unit))) {
|
|
317
|
+
return 0;
|
|
318
|
+
}
|
|
319
|
+
else if (this._moment.isAfter(moment(value.date), this.resolveUnit(unit))) {
|
|
320
|
+
return 1;
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
return -1;
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
AXDateTime.prototype.toISOString = function () {
|
|
327
|
+
return this._date.toISOString();
|
|
328
|
+
};
|
|
329
|
+
return AXDateTime;
|
|
330
|
+
}());
|
|
331
|
+
export { AXDateTime };
|
|
332
|
+
var AXCalendarMonth = /** @class */ (function () {
|
|
333
|
+
function AXCalendarMonth(date) {
|
|
334
|
+
this._moment = moment(date.date);
|
|
335
|
+
this.index = date.date.getMonth();
|
|
336
|
+
this.name = this._moment.format('MMMM');
|
|
337
|
+
this.range = new AXDateTimeRange(new AXDateTime(this._moment.startOf('month').toDate(), date.type), new AXDateTime(this._moment.endOf('month').toDate(), date.type));
|
|
338
|
+
}
|
|
339
|
+
Object.defineProperty(AXCalendarMonth.prototype, "range", {
|
|
340
|
+
get: function () {
|
|
341
|
+
return this._range;
|
|
342
|
+
},
|
|
343
|
+
set: function (v) {
|
|
344
|
+
this._range = v;
|
|
345
|
+
},
|
|
346
|
+
enumerable: true,
|
|
347
|
+
configurable: true
|
|
348
|
+
});
|
|
349
|
+
return AXCalendarMonth;
|
|
350
|
+
}());
|
|
351
|
+
export { AXCalendarMonth };
|
|
352
|
+
var AXDateTimeRange = /** @class */ (function () {
|
|
353
|
+
function AXDateTimeRange(startTime, endTime) {
|
|
354
|
+
this.startTime = startTime;
|
|
355
|
+
this.endTime = endTime;
|
|
356
|
+
}
|
|
357
|
+
AXDateTimeRange.prototype.duration = function (unit) {
|
|
358
|
+
if (unit === void 0) { unit = 'days'; }
|
|
359
|
+
var duration = moment.duration(moment(this.startTime.date).diff(moment(this.endTime.date)));
|
|
360
|
+
return duration.as(unit);
|
|
361
|
+
};
|
|
362
|
+
AXDateTimeRange.prototype.enumurate = function (unit, type) {
|
|
363
|
+
if (unit === void 0) { unit = 'day'; }
|
|
364
|
+
if (type === void 0) { type = AXConfig.get('dateTime.type') || 'jalali'; }
|
|
365
|
+
var result = [];
|
|
366
|
+
for (var index = 0; this.startTime.add(unit, index).compaireNew(this.endTime, this.getViewCompaire(unit), type) <= 0; index++) {
|
|
367
|
+
result.push(this.startTime.add(unit, index));
|
|
368
|
+
}
|
|
369
|
+
return result;
|
|
370
|
+
};
|
|
371
|
+
AXDateTimeRange.prototype.includes = function (value, unit, type) {
|
|
372
|
+
if (unit === void 0) { unit = 'day'; }
|
|
373
|
+
if (type === void 0) { type = 'jalali'; }
|
|
374
|
+
return (value.compaireNew(this.startTime, this.getViewCompaire(unit), type) >= 0 &&
|
|
375
|
+
value.compaireNew(this.endTime, this.getViewCompaire(unit), type) <= 0);
|
|
376
|
+
};
|
|
377
|
+
AXDateTimeRange.prototype.getViewCompaire = function (view) {
|
|
378
|
+
switch (view) {
|
|
379
|
+
case 'day':
|
|
380
|
+
return 'YMD';
|
|
381
|
+
case 'month':
|
|
382
|
+
return 'YM';
|
|
383
|
+
case 'year':
|
|
384
|
+
return 'Y';
|
|
385
|
+
}
|
|
386
|
+
};
|
|
387
|
+
return AXDateTimeRange;
|
|
388
|
+
}());
|
|
389
|
+
export { AXDateTimeRange };
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuY2xhc3MuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWNvcmV4L2NvcmUvIiwic291cmNlcyI6WyJsaWIvY2xhc3Nlcy9kYXRldGltZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsSUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBVXZCO0lBd0JFLDBDQUEwQztJQUMxQyxtQ0FBbUM7SUFDbkMsb0NBQW9DO0lBQ3BDLDBCQUEwQjtJQUMxQixRQUFRO0lBQ1IsZ0JBQWdCO0lBQ2hCLElBQUk7SUFFSixvQkFBWSxLQUFpQyxFQUFTLElBQW1FO1FBQTdHLHNCQUFBLEVBQUEsWUFBMkIsSUFBSSxFQUFFO1FBQVMscUJBQUEsRUFBQSxPQUF1QixRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLFdBQVc7UUFBbkUsU0FBSSxHQUFKLElBQUksQ0FBK0Q7UUFDdkgsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBYSxDQUFDO1NBQzVCO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBekNNLGtCQUFPLEdBQWQsVUFBZSxLQUFVLEVBQUUsSUFBbUU7UUFBbkUscUJBQUEsRUFBQSxPQUF1QixRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLFdBQVc7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QUFDO1lBQ3pDLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEU7UUFDRCxRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssUUFBUTtnQkFDWCxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssS0FBSztnQkFDUixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2QsTUFBTTtZQUVSLEtBQUssSUFBSTtnQkFDUCxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2IsTUFBTTtZQUVSLEtBQUssR0FBRztnQkFDTixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNkLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2QsTUFBTTtZQUVSLEtBQUssR0FBRztnQkFDTixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNkLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2QsTUFBTTtZQUVSLEtBQUssR0FBRztnQkFDTixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNkLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssR0FBRztnQkFDTixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2QsTUFBTTtZQUVSLEtBQUssR0FBRztnQkFDTixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2IsTUFBTTtZQUVSLEtBQUssR0FBRztnQkFDTixLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNiLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2IsTUFBTTtTQUNUO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRSxPQUFPLENBQUMsQ0FBQztTQUNWO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMxRSxPQUFPLENBQUMsQ0FBQztTQUNWO2FBQU07WUFDTCxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ1g7SUFDSCxDQUFDO0lBRUQsNkJBQVEsR0FBUixVQUFTLEtBQWlCLEVBQUUsSUFBc0I7UUFBdEIscUJB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N0gsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUM5QztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxrQ0FBUSxHQUFSLFVBQVMsS0FBaUIsRUFBRSxJQUFzQixFQUFFLElBQWU7UUFBdkMscUJBQUEsRUFBQSxZQUFzQjtRQUFFLHFCQUFBLEVBQUEsZUFBZTtRQUNqRSxPQUFPLENBQ0wsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN4RSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ3ZFLENBQUM7SUFDSixDQUFDO0lBRUQseUNBQWUsR0FBZixVQUFnQixJQUFJO1FBQ2xCLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxLQUFLO2dCQUNSLE9BQU8sS0FBSyxDQUFDO1lBQ2YsS0FBSyxPQUFPO2dCQUNWLE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxNQUFNO2dCQUNULE9BQU8sR0FBRyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBakNELElBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdqYWxhbGktbW9tZW50JztcclxuaW1wb3J0IHsgQVhDb25maWcgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcnO1xyXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xyXG5cclxuZXhwb3J0IHR5cGUgVGltZVVuaXQgPSAnc2Vjb25kJyB8ICdtaW51dGUnIHwgJ21pbnV0ZXMnIHwgJ2hvdXInIHwgJ2hvdXJzJyB8ICdkYXknIHwgJ2RheXMnIHwgJ21vbnRoJyB8ICd5ZWFyJyB8ICd3ZWVrJztcclxuXHJcbmV4cG9ydCB0eXBlIFRpbWVEdXJhdGlvbiA9ICdzZWNvbmRzJyB8ICdtaW51dGVzJyB8ICdob3VycycgfCAnZGF5cycgfCAnd2Vla3MnIHwgJ21vbnRoJyB8ICd5ZWFycyc7XHJcblxyXG5leHBvcnQgdHlwZSBUaW1lU3RlcCA9ICdZJyB8ICdNJyB8ICdEJyB8ICdZTScgfCAnWU1EJyB8ICdZTURoJyB8ICdZTURobScgfCAnWU1EaG1zJyB8ICdoJyB8ICdtJyB8ICdzJztcclxuXHJcbmV4cG9ydCB0eXBlIEFYQ2FsZW5kYXJUeXBlID0gJ2phbGFsaScgfCAnZ3JlZ29yaWFuJztcclxuXHJcbmV4cG9ydCBjbGFzcyBBWERhdGVUaW1lIHtcclxuICBzdGF0aWMgY29udmVydCh2YWx1ZTogYW55LCB0eXBlOiBBWENhbGVuZGFyVHlwZSA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUudHlwZScpIHx8ICdncmVnb3JpYW4nKTogQVhEYXRlVGltZSB7XHJcbiAgICBsZXQgZGF0ZTogQVhEYXRlVGltZTtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nKSB7XHJcbiAgICAgIGRhdGUgPSBuZXcgQVhEYXRlVGltZSh2YWx1ZSBhcyBzdHJpbmcsIHR5cGUpO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgZGF0ZSA9IG5ldyBBWERhdGVUaW1lKHZhbHVlIGFzIERhdGUsIHR5cGUpO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUpIHtcclxuICAgICAgZGF0ZSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kYXRlOiBEYXRlO1xyXG4gIGdldCBkYXRlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc29sdmVVbml0KHVuaXQ6IFRpbWVVbml0KTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdqYWxhbGknID8gJ2onICsgdW5pdCA6IHVuaXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9tb21lbnQ6IG1vbWVudF8uTW9tZW50O1xyXG5cclxuICAvLyBwcml2YXRlIGdldCBfbW9tZW50KCk6IG1vbWVudF8uTW9tZW50IHtcclxuICAvLyAgICAgY29uc3QgbSA9IG1vbWVudCh0aGlzLmRhdGUpO1xyXG4gIC8vICAgICBpZiAodGhpcy50eXBlID09PSAnamFsYWxpJykge1xyXG4gIC8vICAgICAgICAgbS5sb2NhbGUoJ2ZhJyk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgcmV0dXJuIG07XHJcbiAgLy8gfVxyXG5cclxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogRGF0ZSB8IHN0cmluZyA9IG5ldyBEYXRlKCksIHB1YmxpYyB0eXBlOiBBWENhbGVuZGFyVHlwZSA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUudHlwZScpIHx8ICdncmVnb3JpYW4nKSB7XHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgIHRoaXMuX2RhdGUgPSB2YWx1ZSBhcyBEYXRlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgIH1cclxuICAgIHRoaXMuX21vbWVudCA9IG1vbWVudCh0aGlzLmRhdGUpO1xyXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2phbGFsaScpIHtcclxuICAgICAgdGhpcy5fbW9tZW50LmxvY2FsZSgnZmEnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb25lKCk6IEFYRGF0ZVRpbWUge1xyXG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKHRoaXMuZGF0ZSwgdGhpcy50eXBlKTtcclxuICB9XHJcblxyXG4gIGdldCBkYXlJbk1vbnRoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW9tZW50LmRhdGUoKTtcclxuICB9XHJcblxyXG4gIGdldCBkYXlPZlllYXIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9tb21lbnQuZGF5T2ZZZWFyKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGF5SW5XZWVrKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW9tZW50LmRheSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhvdXIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9tb21lbnQuaG91cigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1pbnV0ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vbWVudC5taW51dGUoKTtcclxuICB9XHJcblxyXG4gIGdldCBzZWNvbmQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9tb21lbnQuc2Vjb25kKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgeWVhcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vbWVudC55ZWFyKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgbW9udGhPZlllYXIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9tb21lbnQubW9udGgoKTtcclxuICB9XHJcblxyXG4gIGdldCBtb250aCgpOiBBWENhbGVuZGFyTW9udGgge1xyXG4gICAgcmV0dXJuIG5ldyBBWENhbGVuZGFyTW9udGgodGhpcyk7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlyc3REYXlPZldlZWsoKTogQVhEYXRlVGltZSB7XHJcbiAgICBjb25zdCBhID0gbW9tZW50KHRoaXMuZGF0ZSk7XHJcbiAgICBpZiAodGhpcy50eXBlID09PSAnamFsYWxpJykge1xyXG4gICAgICB0aGlzLl9tb21lbnQubG9jYWxlKCdmYScpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGEuc3RhcnRPZigndycpLnRvRGF0ZSgpLCB0aGlzLnR5cGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVuZERheU9mV2VlaygpOiBBWERhdGVUaW1lIHtcclxuICAgIGNvbnN0IGEgPSBtb21lbnQodGhpcy5kYXRlKTtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdqYWxhbGknKSB7XHJcbiAgICAgIHRoaXMuX21vbWVudC5sb2NhbGUoJ2ZhJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUobW9tZW50KHRoaXMuZGF0ZSkuZW5kT2YoJ3cnKS50b0RhdGUoKSwgdGhpcy50eXBlKTtcclxuICB9XHJcblxyXG4gIGNvbnZlcnRTdHJpbmdUb0phbGFsaShkYXRlOiBzdHJpbmcsIGZvcm1hdDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbW9tZW50KGRhdGUpLmxvY2FsZSgnZmEnKS5mb3JtYXQoJ1lZWVkvTS9EJyk7XHJcblxyXG5cclxuICB9XHJcbiAgY29udmVydFN0cmluZ1RvR3JlZ29yaWFuKGRhdGU6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBuZXcgRGF0ZSgobW9tZW50LmZyb20oZGF0ZSwgJ2ZhJywgJ1lZWVkvTU0vREQnKS5mb3JtYXQoJ1lZWVkvTU0vREQnKSkpO1xyXG4gIH1cclxuXHJcbiAgYWRkKHVuaXQ6IFRpbWVVbml0ID0gJ2RheScsIGFtb3VudDogbnVtYmVyKTogQVhEYXRlVGltZSB7XHJcbiAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUobW9tZW50KHRoaXMuZGF0ZSkuYWRkKGFtb3VudCwgdGhpcy5yZXNvbHZlVW5pdCh1bml0KSkudG9EYXRlKCksIHRoaXMudHlwZSk7XHJcbiAgfVxyXG5cclxuICBhZGREYXkoYW1vdW50OiBudW1iZXIpOiBBWERhdGVUaW1lIHtcclxuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShtb21lbnQodGhpcy5kYXRlKS5hZGQoYW1vdW50LCAnZCcpLnRvRGF0ZSgpLCB0aGlzLnR5cGUpO1xyXG4gIH1cclxuXHJcbiAgYWRkTW9udGgoYW1vdW50OiBudW1iZXIpOiBBWERhdGVUaW1lIHtcclxuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShtb21lbnQodGhpcy5kYXRlKS5hZGQoYW1vdW50LCAnbW9udGhzJykudG9EYXRlKCksIHRoaXMudHlwZSk7XHJcbiAgfVxyXG4gIGFkZEhvdXIoYW1vdW50OiBudW1iZXIpIHtcclxuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShtb21lbnQodGhpcy5kYXRlKS5hZGQoYW1vdW50LCAnaG91cnMnKS50b0RhdGUoKSwgdGhpcy50eXBlKTtcclxuICB9XHJcblxyXG4gIHNldCh1bml0OiBUaW1lVW5pdCA9ICdkYXknLCB2YWx1ZTogbnVtYmVyKTogQVhEYXRlVGltZSB7XHJcbiAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUodGhpcy5fbW9tZW50LnNldCh1bml0LCB2YWx1ZSkudG9EYXRlKCksIHRoaXMudHlwZSk7XHJcbiAgfVxyXG5cclxuICBkdXJhdGlvbihlbmQ6IEFYRGF0ZVRpbWUsIHVuaXQ6IFRpbWVEdXJhdGlvbiA9ICdkYXlzJyk6IG51bWJlciB7XHJcbiAgICBjb25zdCBkdXJhdGlvbiA9IG1vbWVudC5kdXJhdGlvbih0aGlzLl9tb21lbnQuZGlmZihlbmQuX21vbWVudCkpO1xyXG4gICAgcmV0dXJuIE1hdGgucm91bmQoZHVyYXRpb24uYXModW5pdCkpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRPZih1bml0OiBUaW1lVW5pdCA9ICdkYXknKTogQVhEYXRlVGltZSB7XHJcbiAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUobW9tZW50KHRoaXMuZGF0ZSkuc3RhcnRPZih0aGlzLnJlc29sdmVVbml0KHVuaXQpKS50b0RhdGUoKSwgdGhpcy50eXBlKTtcclxuICB9XHJcblxyXG4gIGVuZE9mKHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpOiBBWERhdGVUaW1lIHtcclxuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShtb21lbnQodGhpcy5kYXRlKS5lbmRPZih0aGlzLnJlc29sdmVVbml0KHVuaXQpKS50b0RhdGUoKSwgdGhpcy50eXBlKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdChmb3JtYXQ6IHN0cmluZyA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuc2hvcnREYXRlRm9ybWF0JykgfHwgKHRoaXMudHlwZSA9PT0gJ2dyZWdvcmlhbicgPyAnREQtTU0tWVlZWScgOiAnWVlZWS1NTS1ERCcpKTogc3RyaW5nIHtcclxuICAgIGlmIChmb3JtYXQgPT09ICdQJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5fbW9tZW50LmZyb21Ob3coKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9tb21lbnQuZm9ybWF0KGZvcm1hdCk7XHJcbiAgfVxyXG5cclxuICB0b1N0cmluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0KCk7XHJcbiAgfVxyXG5cclxuICBlcXVhbCh2YWx1ZTogQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jykge1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fbW9tZW50LmlzU2FtZShtb21lbnQodmFsdWUuZGF0ZSksIHRoaXMucmVzb2x2ZVVuaXQodW5pdCkpO1xyXG4gIH1cclxuXHJcbiAgY29udmVydFRvSmFsYWxpRGF0ZSh2YWx1ZSkge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgbnVtYmVyaW5nU3lzdGVtOiAnbGF0bicsXHJcbiAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcclxuICAgICAgZGF5OiAnMi1kaWdpdCcsXHJcbiAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcclxuICAgICAgbWludXRlOiAnMi1kaWdpdCcsXHJcbiAgICAgIHNlY29uZDogJzItZGlnaXQnXHJcbiAgICB9O1xyXG4gICAgY29uc3QgakRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSkudG9Mb2NhbGVEYXRlU3RyaW5nKCdmYS1JUicsIG9wdGlvbnMpO1xyXG4gICAgY29uc3QgaXRlbTogYW55ID0ge307XHJcbiAgICBpdGVtLnllYXIgPSBqRGF0ZS5zbGljZSgwLCA0KTtcclxuICAgIGl0ZW0ubW9udGggPSBqRGF0ZS5zbGljZSg1LCA3KTtcclxuICAgIGl0ZW0uZGF5ID0gakRhdGUuc2xpY2UoOCwgMTApO1xyXG4gICAgaXRlbS5ob3VyID0gakRhdGUuc2xpY2UoMTMsIDE1KTtcclxuICAgIGl0ZW0ubWludXRlcyA9IGpEYXRlLnNsaWNlKDE2LCAxOCk7XHJcbiAgICBpdGVtLnNlY29uZHMgPSBqRGF0ZS5zbGljZSgxOSwgMjEpO1xyXG4gICAgcmV0dXJuIGl0ZW07XHJcbiAgfVxyXG5cclxuICB0b0phbGFsaVN0cmluZyh2YWx1ZSkge1xyXG4gICAgY29uc3QgZGF0ZSA9IHRoaXMuY29udmVydFRvSmFsYWxpRGF0ZSh2YWx1ZSk7XHJcbiAgICBsZXQgc3RyID0gJyc7XHJcbiAgICBzdHIgPSBkYXRlLnllYXIgKyAnLScgKyBkYXRlLm1vbnRoICsgJy0nICsgZGF0ZS5kYXkgKyAnVCcgKyBkYXRlLmhvdXIgKyAnOicgKyBkYXRlLm1pbnV0ZXMgKyAnOicgKyBkYXRlLnNlY29uZHM7XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcbiAgY29udmVydFRvR3JlZ29yaWFuRGF0ZSh2YWx1ZSkge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgbnVtYmVyaW5nU3lzdGVtOiAnbGF0bicsXHJcbiAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgbW9udGg6ICcyLWRpZ2l0JyxcclxuICAgICAgZGF5OiAnMi1kaWdpdCcsXHJcbiAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcclxuICAgICAgbWludXRlOiAnMi1kaWdpdCcsXHJcbiAgICAgIHNlY29uZDogJzItZGlnaXQnXHJcbiAgICB9O1xyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKS50b0xvY2FsZVN0cmluZygnZW4tdXMnLCBvcHRpb25zKTtcclxuICAgIGNvbnN0IGl0ZW06IGFueSA9IHt9O1xyXG4gICAgaXRlbS55ZWFyID0gZGF0ZS5zbGljZSg2LCAxMCk7XHJcbiAgICBpdGVtLm1vbnRoID0gZGF0ZS5zbGljZSgwLCAyKTtcclxuICAgIGl0ZW0uZGF5ID0gZGF0ZS5zbGljZSgzLCA1KTtcclxuICAgIGl0ZW0uaG91ciA9IGRhdGUuc2xpY2UoMTIsIDE0KTtcclxuICAgIGl0ZW0ubWludXRlcyA9IGRhdGUuc2xpY2UoMTUsIDE3KTtcclxuICAgIGl0ZW0uc2Vjb25kcyA9IGRhdGUuc2xpY2UoMTgsIDIwKTtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxuXHJcbiAgdG9HcmVnb3JpYW5TdHJpbmcodmFsdWUpIHtcclxuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmNvbnZlcnRUb0dyZWdvcmlhbkRhdGUodmFsdWUpO1xyXG4gICAgbGV0IHN0ciA9ICcnO1xyXG4gICAgc3RyID0gZGF0ZS55ZWFyICsgJy0nICsgZGF0ZS5tb250aCArICctJyArIGRhdGUuZGF5ICsgJ1QnICsgZGF0ZS5ob3VyICsgJzonICsgZGF0ZS5taW51dGVzICsgJzonICsgZGF0ZS5zZWNvbmRzO1xyXG4gICAgcmV0dXJuIHN0cjtcclxuICB9XHJcblxyXG4gIGNvbXBhaXJlTmV3KHZhbHVlOiBBWERhdGVUaW1lLCB1bml0OiBUaW1lU3RlcCA9ICdZTUQnLCB0eXBlID0gJ2phbGFsaScpIHtcclxuICAgIGNvbnN0IHJhbmdlID0gWzAsIDBdO1xyXG4gICAgbGV0IHN0cjE7XHJcbiAgICBsZXQgc3RyMjtcclxuICAgIGlmICh0eXBlID09PSAnamFsYWxpJykge1xyXG4gICAgICBzdHIxID0gdGhpcy50b0phbGFsaVN0cmluZyh0aGlzLmRhdGUpO1xyXG4gICAgICBzdHIyID0gdGhpcy50b0phbGFsaVN0cmluZyh2YWx1ZS5kYXRlID8gdmFsdWUuZGF0ZSA6IHZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0cjEgPSB0aGlzLnRvR3JlZ29yaWFuU3RyaW5nKHRoaXMuZGF0ZSk7XHJcbiAgICAgIHN0cjIgPSB0aGlzLnRvR3JlZ29yaWFuU3RyaW5nKHZhbHVlLmRhdGUgPyB2YWx1ZS5kYXRlIDogdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoICh1bml0KSB7XHJcbiAgICAgIGNhc2UgJ1lNRGhtcyc6XHJcbiAgICAgICAgcmFuZ2VbMF0gPSAwO1xyXG4gICAgICAgIHJhbmdlWzFdID0gMTk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1lNRGhtJzpcclxuICAgICAgICByYW5nZVswXSA9IDA7XHJcbiAgICAgICAgcmFuZ2VbMV0gPSAxNjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnWU1EaCc6XHJcbiAgICAgICAgcmFuZ2VbMF0gPSAwO1xyXG4gICAgICAgIHJhbmdlWzFdID0gMTM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1lNRCc6XHJcbiAgICAgICAgcmFuZ2VbMF0gPSAwO1xyXG4gICAgICAgIHJhbmdlWzFdID0gMTA7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdZTSc6XHJcbiAgICAgICAgcmFuZ2VbMF0gPSAwO1xyXG4gICAgICAgIHJhbmdlWzFdID0gNztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ2gnOlxyXG4gICAgICAgIHJhbmdlWzBdID0gMTE7XHJcbiAgICAgICAgcmFuZ2VbMV0gPSAxMztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ20nOlxyXG4gICAgICAgIHJhbmdlWzBdID0gMTQ7XHJcbiAgICAgICAgcmFuZ2VbMV0gPSAxNjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ3MnOlxyXG4gICAgICAgIHJhbmdlWzBdID0gMTc7XHJcbiAgICAgICAgcmFuZ2VbMV0gPSAxOTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnRCc6XHJcbiAgICAgICAgcmFuZ2VbMF0gPSA4O1xyXG4gICAgICAgIHJhbmdlWzFdID0gMTA7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdNJzpcclxuICAgICAgICByYW5nZVswXSA9IDU7XHJcbiAgICAgICAgcmFuZ2VbMV0gPSA3O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnWSc6XHJcbiAgICAgICAgcmFuZ2VbMF0gPSAwO1xyXG4gICAgICAgIHJhbmdlWzFdID0gNDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RyMS5zbGljZShyYW5nZVswXSwgcmFuZ2VbMV0pID09PSBzdHIyLnNsaWNlKHJhbmdlWzBdLCByYW5nZVsxXSkpIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9IGVsc2UgaWYgKHN0cjEuc2xpY2UocmFuZ2VbMF0sIHJhbmdlWzFdKSA+IHN0cjIuc2xpY2UocmFuZ2VbMF0sIHJhbmdlWzFdKSkge1xyXG4gICAgICByZXR1cm4gMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAtMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBhaXJlKHZhbHVlOiBBWERhdGVUaW1lLCB1bml0OiBUaW1lVW5pdCA9ICdkYXknKSB7XHJcbiAgICBpZiAodGhpcy5fbW9tZW50LmlzU2FtZShtb21lbnQodmFsdWUuZGF0ZSksIHRoaXMucmVzb2x2ZVVuaXQodW5pdCkpKSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLl9tb21lbnQuaXNBZnRlcihtb21lbnQodmFsdWUuZGF0ZSksIHRoaXMucmVzb2x2ZVVuaXQodW5pdCkpKSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIC0xO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9JU09TdHJpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0ZS50b0lTT1N0cmluZygpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFYQ2FsZW5kYXJNb250aCB7XHJcbiAgcHJpdmF0ZSBfbW9tZW50OiBtb21lbnRfLk1vbWVudDtcclxuXHJcbiAgcHJpdmF0ZSBfcmFuZ2U6IEFYRGF0ZVRpbWVSYW5nZTtcclxuICBwdWJsaWMgZ2V0IHJhbmdlKCk6IEFYRGF0ZVRpbWVSYW5nZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2U7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgcmFuZ2UodjogQVhEYXRlVGltZVJhbmdlKSB7XHJcbiAgICB0aGlzLl9yYW5nZSA9IHY7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihkYXRlOiBBWERhdGVUaW1lKSB7XHJcbiAgICB0aGlzLl9tb21lbnQgPSBtb21lbnQoZGF0ZS5kYXRlKTtcclxuICAgIHRoaXMuaW5kZXggPSBkYXRlLmRhdGUuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMubmFtZSA9IHRoaXMuX21vbWVudC5mb3JtYXQoJ01NTU0nKTtcclxuICAgIHRoaXMucmFuZ2UgPSBuZXcgQVhEYXRlVGltZVJhbmdlKFxyXG4gICAgICBuZXcgQVhEYXRlVGltZSh0aGlzLl9tb21lbnQuc3RhcnRPZignbW9udGgnKS50b0RhdGUoKSwgZGF0ZS50eXBlKSxcclxuICAgICAgbmV3IEFYRGF0ZVRpbWUodGhpcy5fbW9tZW50LmVuZE9mKCdtb250aCcpLnRvRGF0ZSgpLCBkYXRlLnR5cGUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBpbmRleDogbnVtYmVyO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZVJhbmdlIHtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RhcnRUaW1lOiBBWERhdGVUaW1lLCBwdWJsaWMgZW5kVGltZTogQVhEYXRlVGltZSkgeyB9XHJcblxyXG4gIGR1cmF0aW9uKHVuaXQ6IFRpbWVEdXJhdGlvbiA9ICdkYXlzJyk6IG51bWJlciB7XHJcbiAgICBjb25zdCBkdXJhdGlvbiA9IG1vbWVudC5kdXJhdGlvbihtb21lbnQodGhpcy5zdGFydFRpbWUuZGF0ZSkuZGlmZihtb21lbnQodGhpcy5lbmRUaW1lLmRhdGUpKSk7XHJcbiAgICByZXR1cm4gZHVyYXRpb24uYXModW5pdCk7XHJcbiAgfVxyXG5cclxuICBlbnVtdXJhdGUodW5pdDogVGltZVVuaXQgPSAnZGF5JywgdHlwZTogQVhDYWxlbmRhclR5cGUgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLnR5cGUnKSB8fCAnamFsYWxpJyk6IEFYRGF0ZVRpbWVbXSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IEFYRGF0ZVRpbWVbXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyB0aGlzLnN0YXJ0VGltZS5hZGQodW5pdCwgaW5kZXgpLmNvbXBhaXJlTmV3KHRoaXMuZW5kVGltZSwgdGhpcy5nZXRWaWV3Q29tcGFpcmUodW5pdCksIHR5cGUpIDw9IDA7IGluZGV4KyspIHtcclxuICAgICAgcmVzdWx0LnB1c2godGhpcy5zdGFydFRpbWUuYWRkKHVuaXQsIGluZGV4KSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgaW5jbHVkZXModmFsdWU6IEFYRGF0ZVRpbWUsIHVuaXQ6IFRpbWVVbml0ID0gJ2RheScsIHR5cGUgPSAnamFsYWxpJyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdmFsdWUuY29tcGFpcmVOZXcodGhpcy5zdGFydFRpbWUsIHRoaXMuZ2V0Vmlld0NvbXBhaXJlKHVuaXQpLCB0eXBlKSA+PSAwICYmXHJcbiAgICAgIHZhbHVlLmNvbXBhaXJlTmV3KHRoaXMuZW5kVGltZSwgdGhpcy5nZXRWaWV3Q29tcGFpcmUodW5pdCksIHR5cGUpIDw9IDBcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRWaWV3Q29tcGFpcmUodmlldykge1xyXG4gICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgICAgIGNhc2UgJ2RheSc6XHJcbiAgICAgICAgcmV0dXJuICdZTUQnO1xyXG4gICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgcmV0dXJuICdZTSc7XHJcbiAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgIHJldHVybiAnWSc7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|