ngoffline2
Version:
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.10.
293 lines • 26.4 kB
JavaScript
import { Component, Directive, EventEmitter, Input, Output, } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/platform-browser";
import * as i2 from "@angular/common";
export class NgOfflineComponent {
constructor(sanitizer) {
this.sanitizer = sanitizer;
this.msg = 'You are not connected';
this.cnx = new EventEmitter(true);
this.onLine = false; // is en ligne 🔥
window.addEventListener('online', () => {
// 🔥 we're back online!
this.onLine = true;
this.cnx.emit(true);
});
window.addEventListener('offline', () => {
// 😱 oh no!
this.onLine = false;
this.cnx.emit(false);
});
}
}
NgOfflineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgOfflineComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
NgOfflineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.10", type: NgOfflineComponent, selector: "ngoffline", inputs: { msg: ["message", "msg"] }, outputs: { cnx: "isOnline" }, ngImport: i0, template: `
<div
id="box--ngoffline"
class="box"
*ngIf="!onLine"
(click)="onLine = true"
>
<div class="centreMessage">
<div class="close">
<svg
version="1.0"
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 1280.000000 1280.000000"
>
<metadata></metadata>
<g
transform="translate(0.000000,1280.000000) scale(0.100000,-0.100000)"
fill="#9c27b0"
stroke="none"
>
<path
d="M1545 12784 c-85 -19 -167 -51 -243 -95 -69 -41 -1089 -1049 -1157
-1144 -101 -141 -140 -263 -140 -440 0 -169 36 -293 125 -427 29 -43 705 -726
2149 -2170 l2106 -2108 -2111 -2112 c-1356 -1358 -2124 -2133 -2147 -2169 -88
-137 -121 -249 -121 -419 -1 -181 37 -302 139 -445 68 -95 1088 -1103 1157
-1144 273 -159 604 -143 853 42 22 17 986 976 2143 2131 l2102 2101 2103
-2101 c1156 -1155 2120 -2114 2142 -2131 69 -51 130 -82 224 -113 208 -70 431
-44 629 71 69 41 1089 1049 1157 1144 101 141 140 263 140 440 0 166 -36 290
-121 422 -25 39 -746 767 -2148 2171 l-2111 2112 2107 2108 c2207 2208 2162
2161 2219 2303 75 187 77 392 4 572 -53 132 -74 157 -615 700 -289 291 -552
548 -585 572 -141 101 -263 140 -440 140 -166 0 -289 -35 -420 -120 -41 -26
-724 -702 -2172 -2149 l-2113 -2111 -2112 2111 c-1454 1452 -2132 2123 -2173
2150 -64 41 -149 78 -230 101 -79 22 -258 26 -340 7z"
/>
</g>
</svg>
</div>
<div class="text">
<div>
<svg
version="1.0"
class="icon"
xmlns="http://www.w3.org/2000/svg"
width="100px"
height="100px"
viewBox="0 0 1280.000000 924.000000"
>
<metadata></metadata>
<g
transform="translate(0.000000,924.000000) scale(0.100000,-0.100000)"
fill="#9c27b0"
stroke="none"
>
<path
d="M5905 9230 c-1798 -115 -3490 -914 -5175 -2444 -91 -83 -293 -277
-449 -431 l-283 -281 528 -506 529 -506 270 267 c149 146 335 325 415 397
1869 1685 3702 2322 5595 1943 1358 -271 2797 -1094 4214 -2409 74 -69 158
-146 187 -173 l52 -47 448 467 c247 258 475 495 507 529 l57 61 -173 160
c-1962 1823 -3826 2779 -5767 2958 -194 18 -768 27 -955 15z"
/>
<path
d="M5945 6613 c-487 -39 -853 -114 -1300 -267 -920 -312 -1813 -899
-2709 -1777 -125 -122 -226 -225 -226 -229 0 -5 199 -199 442 -431 244 -233
480 -459 525 -503 l82 -79 189 184 c300 294 518 484 797 694 642 485 1278 784
1915 899 231 41 342 51 610 51 267 -1 368 -9 610 -51 936 -163 1919 -718 2938
-1658 85 -77 156 -140 158 -139 14 9 1004 1045 1004 1052 0 16 -394 372 -610
552 -967 804 -1919 1320 -2880 1559 -281 70 -549 114 -855 140 -108 9 -591 11
-690 3z"
/>
<path
d="M6035 4054 c-671 -53 -1337 -336 -1945 -827 -199 -161 -545 -486
-539 -506 2 -5 239 -235 527 -510 l522 -500 103 101 c574 564 1131 825 1664
778 326 -29 633 -144 983 -368 180 -115 437 -319 593 -471 l68 -66 57 60 c32
33 258 269 502 524 245 255 446 468 447 475 1 6 -49 57 -110 113 -761 692
-1495 1072 -2273 1178 -114 16 -490 27 -599 19z"
/>
<path
d="M6115 1659 c-299 -43 -565 -236 -689 -500 -55 -116 -70 -187 -70
-324 0 -137 15 -208 70 -324 154 -326 504 -527 884 -507 354 18 652 207 791
502 54 113 72 197 72 329 0 136 -19 220 -78 340 -167 344 -570 543 -980 484z"
/>
</g>
</svg>
</div>
<div>{{ msg }}</div>
</div>
</div>
</div>
`, isInline: true, styles: [".box{width:100vw;height:100vh;background:#0000009c;position:absolute;z-index:2}.box .centreMessage{color:#fff;border:1px solid #252525;width:clamp(20px,60vw,500px);position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#ffffffd1;border-radius:8px}.box .centreMessage .text{margin:15px;text-align:center;color:#000;font-size:clamp(1rem,2.5vw,2rem);font-family:inherit}.box .centreMessage .text img{width:clamp(20px,60vw,100px)}.box .centreMessage .icon{-webkit-animation:icon_animate;animation:icon_animate;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-direction:alternate;animation-direction:alternate;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.box .centreMessage .close{color:#000;background:#e3e3e3;border-radius:50%;cursor:pointer;width:40px;height:40px;position:absolute;top:-28px;right:-31px}.box .centreMessage .close svg{width:20px;transform:translate(10px,10px)}@-webkit-keyframes icon_animate{0%{opacity:0}to{opacity:1}}@keyframes icon_animate{0%{opacity:0}to{opacity:1}}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgOfflineComponent, decorators: [{
type: Component,
args: [{
selector: 'ngoffline',
template: `
<div
id="box--ngoffline"
class="box"
*ngIf="!onLine"
(click)="onLine = true"
>
<div class="centreMessage">
<div class="close">
<svg
version="1.0"
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 1280.000000 1280.000000"
>
<metadata></metadata>
<g
transform="translate(0.000000,1280.000000) scale(0.100000,-0.100000)"
fill="#9c27b0"
stroke="none"
>
<path
d="M1545 12784 c-85 -19 -167 -51 -243 -95 -69 -41 -1089 -1049 -1157
-1144 -101 -141 -140 -263 -140 -440 0 -169 36 -293 125 -427 29 -43 705 -726
2149 -2170 l2106 -2108 -2111 -2112 c-1356 -1358 -2124 -2133 -2147 -2169 -88
-137 -121 -249 -121 -419 -1 -181 37 -302 139 -445 68 -95 1088 -1103 1157
-1144 273 -159 604 -143 853 42 22 17 986 976 2143 2131 l2102 2101 2103
-2101 c1156 -1155 2120 -2114 2142 -2131 69 -51 130 -82 224 -113 208 -70 431
-44 629 71 69 41 1089 1049 1157 1144 101 141 140 263 140 440 0 166 -36 290
-121 422 -25 39 -746 767 -2148 2171 l-2111 2112 2107 2108 c2207 2208 2162
2161 2219 2303 75 187 77 392 4 572 -53 132 -74 157 -615 700 -289 291 -552
548 -585 572 -141 101 -263 140 -440 140 -166 0 -289 -35 -420 -120 -41 -26
-724 -702 -2172 -2149 l-2113 -2111 -2112 2111 c-1454 1452 -2132 2123 -2173
2150 -64 41 -149 78 -230 101 -79 22 -258 26 -340 7z"
/>
</g>
</svg>
</div>
<div class="text">
<div>
<svg
version="1.0"
class="icon"
xmlns="http://www.w3.org/2000/svg"
width="100px"
height="100px"
viewBox="0 0 1280.000000 924.000000"
>
<metadata></metadata>
<g
transform="translate(0.000000,924.000000) scale(0.100000,-0.100000)"
fill="#9c27b0"
stroke="none"
>
<path
d="M5905 9230 c-1798 -115 -3490 -914 -5175 -2444 -91 -83 -293 -277
-449 -431 l-283 -281 528 -506 529 -506 270 267 c149 146 335 325 415 397
1869 1685 3702 2322 5595 1943 1358 -271 2797 -1094 4214 -2409 74 -69 158
-146 187 -173 l52 -47 448 467 c247 258 475 495 507 529 l57 61 -173 160
c-1962 1823 -3826 2779 -5767 2958 -194 18 -768 27 -955 15z"
/>
<path
d="M5945 6613 c-487 -39 -853 -114 -1300 -267 -920 -312 -1813 -899
-2709 -1777 -125 -122 -226 -225 -226 -229 0 -5 199 -199 442 -431 244 -233
480 -459 525 -503 l82 -79 189 184 c300 294 518 484 797 694 642 485 1278 784
1915 899 231 41 342 51 610 51 267 -1 368 -9 610 -51 936 -163 1919 -718 2938
-1658 85 -77 156 -140 158 -139 14 9 1004 1045 1004 1052 0 16 -394 372 -610
552 -967 804 -1919 1320 -2880 1559 -281 70 -549 114 -855 140 -108 9 -591 11
-690 3z"
/>
<path
d="M6035 4054 c-671 -53 -1337 -336 -1945 -827 -199 -161 -545 -486
-539 -506 2 -5 239 -235 527 -510 l522 -500 103 101 c574 564 1131 825 1664
778 326 -29 633 -144 983 -368 180 -115 437 -319 593 -471 l68 -66 57 60 c32
33 258 269 502 524 245 255 446 468 447 475 1 6 -49 57 -110 113 -761 692
-1495 1072 -2273 1178 -114 16 -490 27 -599 19z"
/>
<path
d="M6115 1659 c-299 -43 -565 -236 -689 -500 -55 -116 -70 -187 -70
-324 0 -137 15 -208 70 -324 154 -326 504 -527 884 -507 354 18 652 207 791
502 54 113 72 197 72 329 0 136 -19 220 -78 340 -167 344 -570 543 -980 484z"
/>
</g>
</svg>
</div>
<div>{{ msg }}</div>
</div>
</div>
</div>
`,
styleUrls: ['./ngoffline.component.scss'],
}]
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { msg: [{
type: Input,
args: ['message']
}], cnx: [{
type: Output,
args: ['isOnline']
}] } });
export class NgOfflineDirective {
constructor(el) {
this.cnx = new EventEmitter(true);
this.onLine = true;
this._el = el;
this.goOnline();
window.addEventListener('online', () => {
// 🔥 we're back online!
this.goOnline();
this.cnx.emit(true);
});
window.addEventListener('offline', () => {
// 😱 oh no!
this.goOffline();
this.cnx.emit(false);
});
}
goOnline() {
this._el.nativeElement.style.display = 'none';
this.onLine = true;
}
goOffline() {
this._el.nativeElement.style.display = 'inherit';
this.onLine = false;
}
}
NgOfflineDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgOfflineDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
NgOfflineDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: NgOfflineDirective, selector: "[ngoffline]", outputs: { cnx: "isOnline" }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgOfflineDirective, decorators: [{
type: Directive,
args: [{
selector: '[ngoffline]',
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { cnx: [{
type: Output,
args: ['isOnline']
}] } });
export class NgOnlineDirective {
constructor(el) {
this.cnx = new EventEmitter(true);
this.onLine = true;
this._el = el;
this.goOnline();
window.addEventListener('online', () => {
// 🔥 we're back online!
this.goOnline();
this.cnx.emit(true);
});
window.addEventListener('offline', () => {
// 😱 oh no!
this.goOffline();
this.cnx.emit(false);
});
}
goOnline() {
this._el.nativeElement.style.display = 'inherit';
this.onLine = true;
}
goOffline() {
this._el.nativeElement.style.display = 'none';
this.onLine = false;
}
}
NgOnlineDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgOnlineDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
NgOnlineDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: NgOnlineDirective, selector: "[ngonline]", outputs: { cnx: "isOnline" }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: NgOnlineDirective, decorators: [{
type: Directive,
args: [{
selector: '[ngonline]',
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { cnx: [{
type: Output,
args: ['isOnline']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdvZmZsaW5lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nb2ZmbGluZS9zcmMvbGliL25nb2ZmbGluZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7Ozs7QUFrR3ZCLE1BQU0sT0FBTyxrQkFBa0I7SUFLN0IsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUp6QixRQUFHLEdBQVcsdUJBQXVCLENBQUM7UUFDcEMsUUFBRyxHQUFHLElBQUksWUFBWSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQzFELFdBQU0sR0FBWSxLQUFLLENBQUMsQ0FBQyxpQkFBaUI7UUFHeEMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxHQUFTLEVBQUU7WUFDM0Msd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFTLEVBQUU7WUFDNUMsWUFBWTtZQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Z0hBakJVLGtCQUFrQjtvR0FBbEIsa0JBQWtCLG9IQTdGbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBGVDs0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ZCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDOzsrR0E1QlUsaUJBQWlCO21HQUFqQixpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkFIN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtpQkFDdkI7aUdBRXFCLEdBQUc7c0JBQXRCLE1BQU07dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nb2ZmbGluZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgaWQ9XCJib3gtLW5nb2ZmbGluZVwiXG4gICAgICBjbGFzcz1cImJveFwiXG4gICAgICAqbmdJZj1cIiFvbkxpbmVcIlxuICAgICAgKGNsaWNrKT1cIm9uTGluZSA9IHRydWVcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjZW50cmVNZXNzYWdlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZVwiPlxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgIHZlcnNpb249XCIxLjBcIlxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICB3aWR0aD1cIjIwXCJcbiAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcbiAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTI4MC4wMDAwMDAgMTI4MC4wMDAwMDBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtZXRhZGF0YT48L21ldGFkYXRhPlxuICAgICAgICAgICAgPGdcbiAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuMDAwMDAwLDEyODAuMDAwMDAwKSBzY2FsZSgwLjEwMDAwMCwtMC4xMDAwMDApXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiM5YzI3YjBcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJub25lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTE1NDUgMTI3ODQgYy04NSAtMTkgLTE2NyAtNTEgLTI0MyAtOTUgLTY5IC00MSAtMTA4OSAtMTA0OSAtMTE1N1xuICAgICAgIC0xMTQ0IC0xMDEgLTE0MSAtMTQwIC0yNjMgLTE0MCAtNDQwIDAgLTE2OSAzNiAtMjkzIDEyNSAtNDI3IDI5IC00MyA3MDUgLTcyNlxuICAgICAgIDIxNDkgLTIxNzAgbDIxMDYgLTIxMDggLTIxMTEgLTIxMTIgYy0xMzU2IC0xMzU4IC0yMTI0IC0yMTMzIC0yMTQ3IC0yMTY5IC04OFxuICAgICAgIC0xMzcgLTEyMSAtMjQ5IC0xMjEgLTQxOSAtMSAtMTgxIDM3IC0zMDIgMTM5IC00NDUgNjggLTk1IDEwODggLTExMDMgMTE1N1xuICAgICAgIC0xMTQ0IDI3MyAtMTU5IDYwNCAtMTQzIDg1MyA0MiAyMiAxNyA5ODYgOTc2IDIxNDMgMjEzMSBsMjEwMiAyMTAxIDIxMDNcbiAgICAgICAtMjEwMSBjMTE1NiAtMTE1NSAyMTIwIC0yMTE0IDIxNDIgLTIxMzEgNjkgLTUxIDEzMCAtODIgMjI0IC0xMTMgMjA4IC03MCA0MzFcbiAgICAgICAtNDQgNjI5IDcxIDY5IDQxIDEwODkgMTA0OSAxMTU3IDExNDQgMTAxIDE0MSAxNDAgMjYzIDE0MCA0NDAgMCAxNjYgLTM2IDI5MFxuICAgICAgIC0xMjEgNDIyIC0yNSAzOSAtNzQ2IDc2NyAtMjE0OCAyMTcxIGwtMjExMSAyMTEyIDIxMDcgMjEwOCBjMjIwNyAyMjA4IDIxNjJcbiAgICAgICAyMTYxIDIyMTkgMjMwMyA3NSAxODcgNzcgMzkyIDQgNTcyIC01MyAxMzIgLTc0IDE1NyAtNjE1IDcwMCAtMjg5IDI5MSAtNTUyXG4gICAgICAgNTQ4IC01ODUgNTcyIC0xNDEgMTAxIC0yNjMgMTQwIC00NDAgMTQwIC0xNjYgMCAtMjg5IC0zNSAtNDIwIC0xMjAgLTQxIC0yNlxuICAgICAgIC03MjQgLTcwMiAtMjE3MiAtMjE0OSBsLTIxMTMgLTIxMTEgLTIxMTIgMjExMSBjLTE0NTQgMTQ1MiAtMjEzMiAyMTIzIC0yMTczXG4gICAgICAgMjE1MCAtNjQgNDEgLTE0OSA3OCAtMjMwIDEwMSAtNzkgMjIgLTI1OCAyNiAtMzQwIDd6XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgdmVyc2lvbj1cIjEuMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICB3aWR0aD1cIjEwMHB4XCJcbiAgICAgICAgICAgICAgaGVpZ2h0PVwiMTAwcHhcIlxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyODAuMDAwMDAwIDkyNC4wMDAwMDBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bWV0YWRhdGE+PC9tZXRhZGF0YT5cbiAgICAgICAgICAgICAgPGdcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC4wMDAwMDAsOTI0LjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKVwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiM5YzI3YjBcIlxuICAgICAgICAgICAgICAgIHN0cm9rZT1cIm5vbmVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGQ9XCJNNTkwNSA5MjMwIGMtMTc5OCAtMTE1IC0zNDkwIC05MTQgLTUxNzUgLTI0NDQgLTkxIC04MyAtMjkzIC0yNzdcbi00NDkgLTQzMSBsLTI4MyAtMjgxIDUyOCAtNTA2IDUyOSAtNTA2IDI3MCAyNjcgYzE0OSAxNDYgMzM1IDMyNSA0MTUgMzk3XG4xODY5IDE2ODUgMzcwMiAyMzIyIDU1OTUgMTk0MyAxMzU4IC0yNzEgMjc5NyAtMTA5NCA0MjE0IC0yNDA5IDc0IC02OSAxNThcbi0xNDYgMTg3IC0xNzMgbDUyIC00NyA0NDggNDY3IGMyNDcgMjU4IDQ3NSA0OTUgNTA3IDUyOSBsNTcgNjEgLTE3MyAxNjBcbmMtMTk2MiAxODIzIC0zODI2IDI3NzkgLTU3NjcgMjk1OCAtMTk0IDE4IC03NjggMjcgLTk1NSAxNXpcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGQ9XCJNNTk0NSA2NjEzIGMtNDg3IC0zOSAtODUzIC0xMTQgLTEzMDAgLTI2NyAtOTIwIC0zMTIgLTE4MTMgLTg5OVxuLTI3MDkgLTE3NzcgLTEyNSAtMTIyIC0yMjYgLTIyNSAtMjI2IC0yMjkgMCAtNSAxOTkgLTE5OSA0NDIgLTQzMSAyNDQgLTIzM1xuNDgwIC00NTkgNTI1IC01MDMgbDgyIC03OSAxODkgMTg0IGMzMDAgMjk0IDUxOCA0ODQgNzk3IDY5NCA2NDIgNDg1IDEyNzggNzg0XG4xOTE1IDg5OSAyMzEgNDEgMzQyIDUxIDYxMCA1MSAyNjcgLTEgMzY4IC05IDYxMCAtNTEgOTM2IC0xNjMgMTkxOSAtNzE4IDI5Mzhcbi0xNjU4IDg1IC03NyAxNTYgLTE0MCAxNTggLTEzOSAxNCA5IDEwMDQgMTA0NSAxMDA0IDEwNTIgMCAxNiAtMzk0IDM3MiAtNjEwXG41NTIgLTk2NyA4MDQgLTE5MTkgMTMyMCAtMjg4MCAxNTU5IC0yODEgNzAgLTU0OSAxMTQgLTg1NSAxNDAgLTEwOCA5IC01OTEgMTFcbi02OTAgM3pcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGQ9XCJNNjAzNSA0MDU0IGMtNjcxIC01MyAtMTMzNyAtMzM2IC0xOTQ1IC04MjcgLTE5OSAtMTYxIC01NDUgLTQ4NlxuLTUzOSAtNTA2IDIgLTUgMjM5IC0yMzUgNTI3IC01MTAgbDUyMiAtNTAwIDEwMyAxMDEgYzU3NCA1NjQgMTEzMSA4MjUgMTY2NFxuNzc4IDMyNiAtMjkgNjMzIC0xNDQgOTgzIC0zNjggMTgwIC0xMTUgNDM3IC0zMTkgNTkzIC00NzEgbDY4IC02NiA1NyA2MCBjMzJcbjMzIDI1OCAyNjkgNTAyIDUyNCAyNDUgMjU1IDQ0NiA0NjggNDQ3IDQ3NSAxIDYgLTQ5IDU3IC0xMTAgMTEzIC03NjEgNjkyXG4tMTQ5NSAxMDcyIC0yMjczIDExNzggLTExNCAxNiAtNDkwIDI3IC01OTkgMTl6XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICBkPVwiTTYxMTUgMTY1OSBjLTI5OSAtNDMgLTU2NSAtMjM2IC02ODkgLTUwMCAtNTUgLTExNiAtNzAgLTE4NyAtNzBcbi0zMjQgMCAtMTM3IDE1IC0yMDggNzAgLTMyNCAxNTQgLTMyNiA1MDQgLTUyNyA4ODQgLTUwNyAzNTQgMTggNjUyIDIwNyA3OTFcbjUwMiA1NCAxMTMgNzIgMTk3IDcyIDMyOSAwIDEzNiAtMTkgMjIwIC03OCAzNDAgLTE2NyAzNDQgLTU3MCA1NDMgLTk4MCA0ODR6XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2Pnt7IG1zZyB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9uZ29mZmxpbmUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTmdPZmZsaW5lQ29tcG9uZW50IHtcbiAgQElucHV0KCdtZXNzYWdlJykgbXNnOiBzdHJpbmcgPSAnWW91IGFyZSBub3QgY29ubmVjdGVkJztcbiAgQE91dHB1dCgnaXNPbmxpbmUnKSBjbnggPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KHRydWUpO1xuICBvbkxpbmU6IGJvb2xlYW4gPSBmYWxzZTsgLy8gaXMgZW4gbGlnbmUg8J+UpVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignb25saW5lJywgKCk6IHZvaWQgPT4ge1xuICAgICAgLy8g8J+UpSB3ZSdyZSBiYWNrIG9ubGluZSFcbiAgICAgIHRoaXMub25MaW5lID0gdHJ1ZTtcbiAgICAgIHRoaXMuY254LmVtaXQodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignb2ZmbGluZScsICgpOiB2b2lkID0+IHtcbiAgICAgIC8vIPCfmLEgb2ggbm8hXG4gICAgICB0aGlzLm9uTGluZSA9IGZhbHNlO1xuICAgICAgdGhpcy5jbnguZW1pdChmYWxzZSk7XG4gICAgfSk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nb2ZmbGluZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBOZ09mZmxpbmVEaXJlY3RpdmUge1xuICBAT3V0cHV0KCdpc09ubGluZScpIGNueCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4odHJ1ZSk7XG4gIF9lbDogYW55O1xuICBvbkxpbmU6IGJvb2xlYW4gPSB0cnVlO1xuICBjb25zdHJ1Y3RvcihlbDogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2VsID0gZWw7XG4gICAgdGhpcy5nb09ubGluZSgpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCAoKTogdm9pZCA9PiB7XG4gICAgICAvLyDwn5SlIHdlJ3JlIGJhY2sgb25saW5lIVxuICAgICAgdGhpcy5nb09ubGluZSgpO1xuICAgICAgdGhpcy5jbnguZW1pdCh0cnVlKTtcbiAgICB9KTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgKCk6IHZvaWQgPT4ge1xuICAgICAgLy8g8J+YsSBvaCBubyFcbiAgICAgIHRoaXMuZ29PZmZsaW5lKCk7XG4gICAgICB0aGlzLmNueC5lbWl0KGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnb09ubGluZSgpIHtcbiAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgdGhpcy5vbkxpbmUgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGdvT2ZmbGluZSgpIHtcbiAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnaW5oZXJpdCc7XG4gICAgdGhpcy5vbkxpbmUgPSBmYWxzZTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdvbmxpbmVdJyxcbn0pXG5leHBvcnQgY2xhc3MgTmdPbmxpbmVEaXJlY3RpdmUge1xuICBAT3V0cHV0KCdpc09ubGluZScpIGNueCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4odHJ1ZSk7XG4gIF9lbDogYW55O1xuICBvbkxpbmU6IGJvb2xlYW4gPSB0cnVlO1xuICBjb25zdHJ1Y3RvcihlbDogRWxlbWVudFJlZikge1xuICAgIHRoaXMuX2VsID0gZWw7XG4gICAgdGhpcy5nb09ubGluZSgpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvbmxpbmUnLCAoKTogdm9pZCA9PiB7XG4gICAgICAvLyDwn5SlIHdlJ3JlIGJhY2sgb25saW5lIVxuICAgICAgdGhpcy5nb09ubGluZSgpO1xuICAgICAgdGhpcy5jbnguZW1pdCh0cnVlKTtcbiAgICB9KTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvZmZsaW5lJywgKCk6IHZvaWQgPT4ge1xuICAgICAgLy8g8J+YsSBvaCBubyFcbiAgICAgIHRoaXMuZ29PZmZsaW5lKCk7XG4gICAgICB0aGlzLmNueC5lbWl0KGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnb09ubGluZSgpIHtcbiAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnaW5oZXJpdCc7XG4gICAgdGhpcy5vbkxpbmUgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGdvT2ZmbGluZSgpIHtcbiAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgdGhpcy5vbkxpbmUgPSBmYWxzZTtcbiAgfVxufVxuIl19