UNPKG

ngx-jenga-api

Version:

Angular wrapper for Equity's Jenga API. Still in progress

107 lines 20.6 kB
import { Component, Input } from '@angular/core'; import { Validators } from '@angular/forms'; import * as i0 from "@angular/core"; import * as i1 from "../../services/api.service"; import * as i2 from "../../services/general.service"; import * as i3 from "@angular/forms"; import * as i4 from "../../services/auth.service"; import * as i5 from "@angular/material/form-field"; import * as i6 from "@angular/material/button"; import * as i7 from "@angular/material/input"; import * as i8 from "@angular/material/card"; export class BillPaymentsComponent { constructor(api, gs, formbuilder, authenticateEndpoint) { this.api = api; this.gs = gs; this.formbuilder = formbuilder; this.authenticateEndpoint = authenticateEndpoint; this.cardShadow = true; this.authenticateEndpoint.authenticateMerchant().subscribe({ next: (res) => { localStorage.setItem('jenga-tkn', res.accessToken); }, error: (e) => { throw new Error(e.error.message); } }); } ngOnInit() { this.billForm = this.formbuilder.group({ billerCode: [this.billerCode, [Validators.required]], countryCode: [this.countryCode, [Validators.required]], reference: [this.reference, [Validators.required]], amount: [this.amount, [Validators.required]], currency: [this.currency, [Validators.required]], name: [this.name, [Validators.required]], account: [this.account, [Validators.required]], reference2: [this.gs.generateRandomString(12), [Validators.required]], partnerId: [this.partnerId, [Validators.required]], mobileNumber: [this.mobileNumber, [Validators.required]], remarks: [this.remarks, [Validators.required]], }); } billPayments() { this.paymentData = { biller: { billerCode: this.billForm.value.billerCode, countryCode: this.billForm.value.countryCode }, bill: { reference: this.billForm.value.reference, amount: this.billForm.value.amount, currency: this.billForm.value.currency }, payer: { name: this.billForm.value.name, account: this.billForm.value.reference, reference: this.billForm.value.reference2, mobileNumber: this.billForm.value.mobileNumber }, partnerId: this.billForm.value.partnerId, remarks: this.billForm.value.remarks }; this.api.receiveBillPayments(this.paymentData).subscribe({ next: (res) => { console.log("Bill payment is: ", res); }, error: (e) => { throw new Error(e.error.message); } }); } } BillPaymentsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BillPaymentsComponent, deps: [{ token: i1.ApiService }, { token: i2.GeneralService }, { token: i3.FormBuilder }, { token: i4.AuthService }], target: i0.ɵɵFactoryTarget.Component }); BillPaymentsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: BillPaymentsComponent, selector: "jenga-bill-payments", inputs: { billerCode: "billerCode", countryCode: "countryCode", reference: "reference", amount: "amount", currency: "currency", name: "name", account: "account", reference2: "reference2", partnerId: "partnerId", authorization: "authorization", signature: "signature", mobileNumber: "mobileNumber", remarks: "remarks", cardShadow: "cardShadow" }, ngImport: i0, template: "<mat-card [class.mat-elevation-z8]=\"cardShadow\">\n <form class=\"user-form\" [formGroup]=\"billForm\">\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Name</mat-label>\n <input matInput formControlName=\"name\">\n <mat-error>Kindly add your name</mat-error>\n </mat-form-field>\n <br>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Account Number</mat-label>\n <input matInput formControlName=\"reference\">\n <mat-error>Kindly add yur account number</mat-error>\n </mat-form-field>\n <br>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Mobile Number</mat-label>\n <input matInput formControlName=\"mobileNumber\">\n <mat-error>Kindly add a mobile number</mat-error>\n </mat-form-field>\n <br>\n\n <mat-form-field class=\"form-field full-width\" appearance=\"outline\" class=\"example-full-width\">\n <mat-label>Leave a Remark</mat-label>\n <textarea matInput formControlName=\"remarks\"></textarea>\n <mat-error>Kindly add a remark</mat-error>\n </mat-form-field>\n <br>\n\n <button (click)=\"billPayments()\" mat-raised-button color=\"primary\">Make Payment</button>\n\n </form>\n</mat-card>", styles: ["mat-card{width:inherit}.user-form{display:inline-grid;padding:30px}\n"], dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: BillPaymentsComponent, decorators: [{ type: Component, args: [{ selector: 'jenga-bill-payments', template: "<mat-card [class.mat-elevation-z8]=\"cardShadow\">\n <form class=\"user-form\" [formGroup]=\"billForm\">\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Name</mat-label>\n <input matInput formControlName=\"name\">\n <mat-error>Kindly add your name</mat-error>\n </mat-form-field>\n <br>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Account Number</mat-label>\n <input matInput formControlName=\"reference\">\n <mat-error>Kindly add yur account number</mat-error>\n </mat-form-field>\n <br>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Mobile Number</mat-label>\n <input matInput formControlName=\"mobileNumber\">\n <mat-error>Kindly add a mobile number</mat-error>\n </mat-form-field>\n <br>\n\n <mat-form-field class=\"form-field full-width\" appearance=\"outline\" class=\"example-full-width\">\n <mat-label>Leave a Remark</mat-label>\n <textarea matInput formControlName=\"remarks\"></textarea>\n <mat-error>Kindly add a remark</mat-error>\n </mat-form-field>\n <br>\n\n <button (click)=\"billPayments()\" mat-raised-button color=\"primary\">Make Payment</button>\n\n </form>\n</mat-card>", styles: ["mat-card{width:inherit}.user-form{display:inline-grid;padding:30px}\n"] }] }], ctorParameters: function () { return [{ type: i1.ApiService }, { type: i2.GeneralService }, { type: i3.FormBuilder }, { type: i4.AuthService }]; }, propDecorators: { billerCode: [{ type: Input }], countryCode: [{ type: Input }], reference: [{ type: Input }], amount: [{ type: Input }], currency: [{ type: Input }], name: [{ type: Input }], account: [{ type: Input }], reference2: [{ type: Input }], partnerId: [{ type: Input }], authorization: [{ type: Input }], signature: [{ type: Input }], mobileNumber: [{ type: Input }], remarks: [{ type: Input }], cardShadow: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbC1wYXltZW50cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtamVuZ2EtYXBpL3NyYy9saWIvY29tcG9uZW50cy9iaWxsLXBheW1lbnRzL2JpbGwtcGF5bWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWplbmdhLWFwaS9zcmMvbGliL2NvbXBvbmVudHMvYmlsbC1wYXltZW50cy9iaWxsLXBheW1lbnRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFXcEUsTUFBTSxPQUFPLHFCQUFxQjtJQXFCaEMsWUFDVSxHQUFlLEVBQ2YsRUFBa0IsRUFDbEIsV0FBd0IsRUFDeEIsb0JBQWlDO1FBSGpDLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZixPQUFFLEdBQUYsRUFBRSxDQUFnQjtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWE7UUFQbEMsZUFBVSxHQUFZLElBQUksQ0FBQTtRQVNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDekQsSUFBSSxFQUFFLENBQUMsR0FBTyxFQUFFLEVBQUU7Z0JBQ2hCLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUNwRCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsQ0FBSyxFQUFFLEVBQUU7Z0JBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ2xDLENBQUM7U0FDRixD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QUU7Z0JBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ2xDLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDOztrSEFqRlUscUJBQXFCO3NHQUFyQixxQkFBcUIscVpDWmxDLDA0Q0FrQ1c7MkZEdEJFLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxxQkFBcUI7a0xBU3RCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSUJpbGxGb3JtLCBJcmVjYmlsbFBheW1lbnRzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VuZXJhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9nZW5lcmFsLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdqZW5nYS1iaWxsLXBheW1lbnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JpbGwtcGF5bWVudHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iaWxsLXBheW1lbnRzLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCaWxsUGF5bWVudHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGJpbGxGb3JtITogRm9ybUdyb3VwXG4gIHBheW1lbnREYXRhITogSXJlY2JpbGxQYXltZW50c1xuXG4gIEBJbnB1dCgpIGJpbGxlckNvZGUhOiBzdHJpbmdcbiAgQElucHV0KCkgY291bnRyeUNvZGUhOiBzdHJpbmdcbiAgQElucHV0KCkgcmVmZXJlbmNlITogc3RyaW5nXG4gIEBJbnB1dCgpIGFtb3VudCE6IHN0cmluZ1xuICBASW5wdXQoKSBjdXJyZW5jeSE6IHN0cmluZ1xuICBASW5wdXQoKSBuYW1lITogc3RyaW5nXG4gIEBJbnB1dCgpIGFjY291bnQhOiBzdHJpbmdcbiAgQElucHV0KCkgcmVmZXJlbmNlMiE6IHN0cmluZ1xuICBASW5wdXQoKSBwYXJ0bmVySWQhOiBzdHJpbmdcbiAgQElucHV0KCkgYXV0aG9yaXphdGlvbiE6IHN0cmluZ1xuICBASW5wdXQoKSBzaWduYXR1cmUhOiBzdHJpbmdcbiAgQElucHV0KCkgbW9iaWxlTnVtYmVyITogc3RyaW5nXG4gIEBJbnB1dCgpIHJlbWFya3MhOiBzdHJpbmdcbiAgQElucHV0KCkgY2FyZFNoYWRvdzogYm9vbGVhbiA9IHRydWVcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBpOiBBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ3M6IEdlbmVyYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybWJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgYXV0aGVudGljYXRlRW5kcG9pbnQ6IEF1dGhTZXJ2aWNlXG4gICl7XG4gICAgdGhpcy5hdXRoZW50aWNhdGVFbmRwb2ludC5hdXRoZW50aWNhdGVNZXJjaGFudCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOmFueSkgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnamVuZ2EtdGtuJywgcmVzLmFjY2Vzc1Rva2VuKVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZTphbnkpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUuZXJyb3IubWVzc2FnZSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5iaWxsRm9ybSA9IHRoaXMuZm9ybWJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgYmlsbGVyQ29kZTogW3RoaXMuYmlsbGVyQ29kZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGNvdW50cnlDb2RlOiBbdGhpcy5jb3VudHJ5Q29kZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHJlZmVyZW5jZTogW3RoaXMucmVmZXJlbmNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgYW1vdW50OiBbdGhpcy5hbW91bnQsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBjdXJyZW5jeTogW3RoaXMuY3VycmVuY3ksIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBuYW1lOiBbdGhpcy5uYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgYWNjb3VudDogW3RoaXMuYWNjb3VudCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHJlZmVyZW5jZTI6IFt0aGlzLmdzLmdlbmVyYXRlUmFuZG9tU3RyaW5nKDEyKSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHBhcnRuZXJJZDogW3RoaXMucGFydG5lcklkLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgbW9iaWxlTnVtYmVyOiBbdGhpcy5tb2JpbGVOdW1iZXIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICByZW1hcmtzOiBbdGhpcy5yZW1hcmtzLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgIH0pIGFzIElCaWxsRm9ybVxuICB9XG5cbiAgYmlsbFBheW1lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMucGF5bWVudERhdGEgPSB7XG4gICAgICBiaWxsZXI6IHtcbiAgICAgICAgYmlsbGVyQ29kZTogdGhpcy5iaWxsRm9ybS52YWx1ZS5iaWxsZXJDb2RlLFxuICAgICAgICBjb3VudHJ5Q29kZTogdGhpcy5iaWxsRm9ybS52YWx1ZS5jb3VudHJ5Q29kZVxuICAgICAgfSxcbiAgICAgIGJpbGw6IHtcbiAgICAgICAgcmVmZXJlbmNlOiB0aGlzLmJpbGxGb3JtLnZhbHVlLnJlZmVyZW5jZSxcbiAgICAgICAgYW1vdW50OiB0aGlzLmJpbGxGb3JtLnZhbHVlLmFtb3VudCxcbiAgICAgICAgY3VycmVuY3k6IHRoaXMuYmlsbEZvcm0udmFsdWUuY3VycmVuY3lcbiAgICAgIH0sXG4gICAgICBwYXllcjoge1xuICAgICAgICBuYW1lOiB0aGlzLmJpbGxGb3JtLnZhbHVlLm5hbWUsXG4gICAgICAgIGFjY291bnQ6IHRoaXMuYmlsbEZvcm0udmFsdWUucmVmZXJlbmNlLFxuICAgICAgICByZWZlcmVuY2U6IHRoaXMuYmlsbEZvcm0udmFsdWUucmVmZXJlbmNlMixcbiAgICAgICAgbW9iaWxlTnVtYmVyOiB0aGlzLmJpbGxGb3JtLnZhbHVlLm1vYmlsZU51bWJlclxuICAgICAgfSxcbiAgICAgIHBhcnRuZXJJZDogdGhpcy5iaWxsRm9ybS52YWx1ZS5wYXJ0bmVySWQsXG4gICAgICByZW1hcmtzOiB0aGlzLmJpbGxGb3JtLnZhbHVlLnJlbWFya3NcbiAgICB9XG4gICAgdGhpcy5hcGkucmVjZWl2ZUJpbGxQYXltZW50cyh0aGlzLnBheW1lbnREYXRhKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczphbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJCaWxsIHBheW1lbnQgaXM6IFwiLCByZXMpXG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlOmFueSkgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZS5lcnJvci5tZXNzYWdlKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxufVxuIiwiPG1hdC1jYXJkIFtjbGFzcy5tYXQtZWxldmF0aW9uLXo4XT1cImNhcmRTaGFkb3dcIj5cbiAgICA8Zm9ybSBjbGFzcz1cInVzZXItZm9ybVwiIFtmb3JtR3JvdXBdPVwiYmlsbEZvcm1cIj5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb3JtLWZpZWxkXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+TmFtZTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3I+S2luZGx5IGFkZCB5b3VyIG5hbWU8L21hdC1lcnJvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGJyPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvcm0tZmllbGRcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5BY2NvdW50IE51bWJlcjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInJlZmVyZW5jZVwiPlxuICAgICAgICAgICAgPG1hdC1lcnJvcj5LaW5kbHkgYWRkIHl1ciBhY2NvdW50IG51bWJlcjwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8YnI+XG5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS1maWVsZFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPk1vYmlsZSBOdW1iZXI8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJtb2JpbGVOdW1iZXJcIj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3I+S2luZGx5IGFkZCBhIG1vYmlsZSBudW1iZXI8L21hdC1lcnJvcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGJyPlxuXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvcm0tZmllbGQgZnVsbC13aWR0aFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJleGFtcGxlLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+TGVhdmUgYSBSZW1hcms8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJyZW1hcmtzXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIDxtYXQtZXJyb3I+S2luZGx5IGFkZCBhIHJlbWFyazwvbWF0LWVycm9yPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8YnI+XG5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYmlsbFBheW1lbnRzKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIj5NYWtlIFBheW1lbnQ8L2J1dHRvbj5cblxuICAgIDwvZm9ybT5cbjwvbWF0LWNhcmQ+Il19