@noaestudio/forms
Version:
Dynamic forms extension for Covalent
163 lines (162 loc) • 14.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, forwardRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { AbstractControlValueAccessor } from '../abstract-control-value-accesor';
/**
* Node for to-do item
*/
var /**
* Node for to-do item
*/
ItemNode = /** @class */ (function () {
function ItemNode() {
}
return ItemNode;
}());
/**
* Node for to-do item
*/
export { ItemNode };
function ItemNode_tsickle_Closure_declarations() {
/** @type {?} */
ItemNode.prototype.id;
/** @type {?} */
ItemNode.prototype.name;
/** @type {?} */
ItemNode.prototype.children;
/** @type {?} */
ItemNode.prototype.parent;
/** @type {?} */
ItemNode.prototype.checked;
}
/**
* Flat to-do item node with expandable and level information
*/
var /**
* Flat to-do item node with expandable and level information
*/
ItemFlatNode = /** @class */ (function () {
function ItemFlatNode() {
}
return ItemFlatNode;
}());
/**
* Flat to-do item node with expandable and level information
*/
export { ItemFlatNode };
function ItemFlatNode_tsickle_Closure_declarations() {
/** @type {?} */
ItemFlatNode.prototype.id;
/** @type {?} */
ItemFlatNode.prototype.name;
/** @type {?} */
ItemFlatNode.prototype.parent;
/** @type {?} */
ItemFlatNode.prototype.level;
/** @type {?} */
ItemFlatNode.prototype.expandable;
/** @type {?} */
ItemFlatNode.prototype.checked;
/** @type {?} */
ItemFlatNode.prototype.children;
}
export var /** @type {?} */ INPUT_INPUT_CONTROL_VALUE_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(function () { return ChipSelectorComponent; }),
multi: true,
};
var ChipSelectorComponent = /** @class */ (function (_super) {
tslib_1.__extends(ChipSelectorComponent, _super);
function ChipSelectorComponent() {
var _this = _super.call(this) || this;
_this.label = '';
_this.chips = [];
_this.lastChip = null;
return _this;
}
/**
* @return {?}
*/
ChipSelectorComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
try {
for (var _a = tslib_1.__values(this.chips), _b = _a.next(); !_b.done; _b = _a.next()) {
var chip = _b.value;
chip.selected = false;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
}
finally { if (e_1) throw e_1.error; }
}
if (this.control.value != null) {
var /** @type {?} */ chip = this.chips.find(function (x) {
return x.value == _this.control.value;
});
if (chip) {
chip.selected = true;
this.lastChip = chip;
}
}
var e_1, _c;
};
/**
* @param {?} chip
* @return {?}
*/
ChipSelectorComponent.prototype.select = /**
* @param {?} chip
* @return {?}
*/
function (chip) {
if (!chip.active) {
return;
}
if (this.lastChip != null) {
this.lastChip.selected = false;
}
chip.selected = true;
this.control.setValue(chip.value);
this.lastChip = chip;
};
ChipSelectorComponent.decorators = [
{ type: Component, args: [{
providers: [INPUT_INPUT_CONTROL_VALUE_ACCESSOR],
selector: 'chip-selector',
styles: [".td-dynamic-input-wrapper{-ms-flex-direction:row;flex-direction:row;display:-ms-flexbox;display:flex;box-sizing:border-box}.td-dynamic-input-wrapper .td-dynamic-input-field{-ms-flex:1;flex:1;box-sizing:border-box}.td-dynamic-input-wrapper .ngx-editor{margin-top:10px}.label{padding:10px 0;display:inline-block;width:50%}.container{overflow:auto;border:1px solid #f3f3f3;border-radius:5px 5px 0 0}.selected-items{padding:5px;display:block;background:#f3f3f3;border-radius:0 0 5px 5px;min-height:30px}.selected-items span{background:#689f38;margin:2px;padding:5px;border-radius:5px;color:#fff;display:inline-block}.buttons{display:inline-block;width:50%;text-align:right}.buttons button{padding:0;width:30px!important;min-width:30px;border-radius:50px;height:30px}.buttons button mat-icon{position:relative!important;top:-4px!important}"],
template: "<style>\n\n\t.chip-holder {\n\t\tflex: 1 0 auto;\n\t\ttext-align: center;\n\t}\n\n\t.chip {\n\t\tmargin: auto;\n\t\tborder-radius: 50%/50%;\n \twidth: 40px;\n \theight: 40px;\n\t\tmargin-bottom: 10px;\n\t\tborder: 2px solid #932C88;\n\t\tbackground-color: rgba(0, 0, 0, 0.42);\n\t}\n\n\t.chip-active {\n\t\tbackground-color: #ffffff;\n\t}\n\n\t.chip-selected {\n\t\tbackground-color: #932C88;\n\t}\n\n</style>\n\n<div class=\"label\">{{label}}</div>\n\n<div style=\"display: flex;\">\n\t<div *ngFor=\"let chip of chips\" class=\"chip-holder\">\n\t\t<div (click)=\"select(chip)\" class=\"chip\" [class.chip-active]=\"chip.active\" [class.chip-selected]=\"chip.selected\"></div>\n\t\t<span style=\"margin-top: 20px;\">{{chip.label}}</span>\n\t</div>\n</div>\n",
},] },
];
/** @nocollapse */
ChipSelectorComponent.ctorParameters = function () { return []; };
return ChipSelectorComponent;
}(AbstractControlValueAccessor));
export { ChipSelectorComponent };
function ChipSelectorComponent_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ChipSelectorComponent.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ChipSelectorComponent.ctorParameters;
/** @type {?} */
ChipSelectorComponent.prototype.control;
/** @type {?} */
ChipSelectorComponent.prototype.label;
/** @type {?} */
ChipSelectorComponent.prototype.chips;
/** @type {?} */
ChipSelectorComponent.prototype.lastChip;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY292YWxlbnQvZHluYW1pYy1mb3Jtcy8iLCJzb3VyY2VzIjpbImR5bmFtaWMtZWxlbWVudHMvY2hpcC1zZWxlY3Rvci9jaGlwLXNlbGVjdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQXFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7QUFjakY7OztBQUFBOzs7bUJBakJBO0lBdUJDLENBQUE7Ozs7QUFORCxvQkFNQzs7Ozs7Ozs7Ozs7Ozs7OztBQUdEOzs7QUFBQTs7O3VCQTFCQTtJQWtDQyxDQUFBOzs7O0FBUkQsd0JBUUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUQsTUFBTSxDQUFDLHFCQUFNLGtDQUFrQyxHQUFRO0lBQ3RELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUFNLE9BQUEscUJBQXFCLEVBQXJCLENBQXFCLENBQUM7SUFDcEQsS0FBSyxFQUFFLElBQUk7Q0FDWCxDQUFDOztJQTJDeUMsaURBQTRCO0lBVXRFO1FBQUEsWUFDQyxpQkFBTyxTQUNQO3NCQVBlLEVBQUU7c0JBRUYsRUFBRTt5QkFDRCxJQUFJOztLQUlwQjs7OztJQUVELHdDQUFROzs7SUFBUjtRQUFBLGlCQWVDOztZQWRBLEdBQUcsQ0FBQyxDQUFhLElBQUEsS0FBQSxpQkFBQSxJQUFJLENBQUMsS0FBSyxDQUFBLGdCQUFBO2dCQUF0QixJQUFJLElBQUksV0FBQTtnQkFDWixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzthQUN0Qjs7Ozs7Ozs7O1FBRUQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNoQyxxQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUUsVUFBQSxDQUFDO2dCQUM1QixNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxLQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQzthQUNyQyxDQUFDLENBQUM7WUFDSCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzthQUNyQjtTQUVEOztLQUNEOzs7OztJQUVELHNDQUFNOzs7O0lBQU4sVUFBTyxJQUFVO1FBQ2hCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbEIsTUFBTSxDQUFDO1NBQ1A7UUFFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0tBRXJCOztnQkF0RkQsU0FBUyxTQUFDO29CQUNWLFNBQVMsRUFBRSxDQUFFLGtDQUFrQyxDQUFFO29CQUNqRCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsTUFBTSxFQUFFLENBQUMsbzBCQUFvMEIsQ0FBQztvQkFDOTBCLFFBQVEsRUFBRSw2dkJBbUNWO2lCQUNBOzs7O2dDQWxGRDtFQW1GMkMsNEJBQTRCO1NBQTFELHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICcuLi9hYnN0cmFjdC1jb250cm9sLXZhbHVlLWFjY2Vzb3InO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XHJcbmltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcclxuaW1wb3J0IHsgTWF0VHJlZUZsYXREYXRhU291cmNlLCBNYXRUcmVlRmxhdHRlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnO1xyXG5cclxuaW1wb3J0IHtvZiBhcyBvYnNlcnZhYmxlT2Z9IGZyb20gJ3J4anMnO1xyXG5cclxuLyoqXHJcbiAqIE5vZGUgZm9yIHRvLWRvIGl0ZW1cclxuICovXHJcbmV4cG9ydCBjbGFzcyBJdGVtTm9kZSB7XHJcblx0aWQ6IG51bWJlcjtcclxuXHRuYW1lOiBzdHJpbmc7IC8vaXRlbVxyXG5cdGNoaWxkcmVuOiBJdGVtTm9kZVtdO1xyXG5cdHBhcmVudDogbnVtYmVyO1xyXG5cdGNoZWNrZWQ6IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKiBGbGF0IHRvLWRvIGl0ZW0gbm9kZSB3aXRoIGV4cGFuZGFibGUgYW5kIGxldmVsIGluZm9ybWF0aW9uICovXHJcbmV4cG9ydCBjbGFzcyBJdGVtRmxhdE5vZGUge1xyXG5cdGlkOiBudW1iZXI7XHJcblx0bmFtZTogc3RyaW5nOyAvL2l0ZW1cclxuXHRwYXJlbnQ6IG51bWJlcjtcclxuXHRsZXZlbDogbnVtYmVyO1xyXG5cdGV4cGFuZGFibGU6IGJvb2xlYW47XHJcblx0Y2hlY2tlZDogYm9vbGVhbjtcclxuXHRjaGlsZHJlbjogSXRlbUZsYXROb2RlW107XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBJTlBVVF9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XHJcblx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcblx0dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2hpcFNlbGVjdG9yQ29tcG9uZW50KSxcclxuXHRtdWx0aTogdHJ1ZSxcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHByb3ZpZGVyczogWyBJTlBVVF9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SIF0sXHJcblx0c2VsZWN0b3I6ICdjaGlwLXNlbGVjdG9yJyxcclxuXHRzdHlsZXM6IFtgLnRkLWR5bmFtaWMtaW5wdXQtd3JhcHBlcnstbXMtZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtZGlyZWN0aW9uOnJvdztkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LnRkLWR5bmFtaWMtaW5wdXQtd3JhcHBlciAudGQtZHluYW1pYy1pbnB1dC1maWVsZHstbXMtZmxleDoxO2ZsZXg6MTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LnRkLWR5bmFtaWMtaW5wdXQtd3JhcHBlciAubmd4LWVkaXRvcnttYXJnaW4tdG9wOjEwcHh9LmxhYmVse3BhZGRpbmc6MTBweCAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjUwJX0uY29udGFpbmVye292ZXJmbG93OmF1dG87Ym9yZGVyOjFweCBzb2xpZCAjZjNmM2YzO2JvcmRlci1yYWRpdXM6NXB4IDVweCAwIDB9LnNlbGVjdGVkLWl0ZW1ze3BhZGRpbmc6NXB4O2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZDojZjNmM2YzO2JvcmRlci1yYWRpdXM6MCAwIDVweCA1cHg7bWluLWhlaWdodDozMHB4fS5zZWxlY3RlZC1pdGVtcyBzcGFue2JhY2tncm91bmQ6IzY4OWYzODttYXJnaW46MnB4O3BhZGRpbmc6NXB4O2JvcmRlci1yYWRpdXM6NXB4O2NvbG9yOiNmZmY7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmJ1dHRvbnN7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6NTAlO3RleHQtYWxpZ246cmlnaHR9LmJ1dHRvbnMgYnV0dG9ue3BhZGRpbmc6MDt3aWR0aDozMHB4IWltcG9ydGFudDttaW4td2lkdGg6MzBweDtib3JkZXItcmFkaXVzOjUwcHg7aGVpZ2h0OjMwcHh9LmJ1dHRvbnMgYnV0dG9uIG1hdC1pY29ue3Bvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDt0b3A6LTRweCFpbXBvcnRhbnR9YF0sXHJcblx0dGVtcGxhdGU6IGA8c3R5bGU+XHJcblxyXG5cdC5jaGlwLWhvbGRlciB7XHJcblx0XHRmbGV4OiAxIDAgYXV0bztcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHR9XHJcblxyXG5cdC5jaGlwIHtcclxuXHRcdG1hcmdpbjogYXV0bztcclxuXHRcdGJvcmRlci1yYWRpdXM6IDUwJS81MCU7XHJcbiAgICBcdHdpZHRoOiA0MHB4O1xyXG4gICAgXHRoZWlnaHQ6IDQwcHg7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG5cdFx0Ym9yZGVyOiAycHggc29saWQgIzkzMkM4ODtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40Mik7XHJcblx0fVxyXG5cclxuXHQuY2hpcC1hY3RpdmUge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuXHR9XHJcblxyXG5cdC5jaGlwLXNlbGVjdGVkIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICM5MzJDODg7XHJcblx0fVxyXG5cclxuPC9zdHlsZT5cclxuXHJcbjxkaXYgY2xhc3M9XCJsYWJlbFwiPnt7bGFiZWx9fTwvZGl2PlxyXG5cclxuPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcblx0PGRpdiAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjaGlwc1wiIGNsYXNzPVwiY2hpcC1ob2xkZXJcIj5cclxuXHRcdDxkaXYgKGNsaWNrKT1cInNlbGVjdChjaGlwKVwiIGNsYXNzPVwiY2hpcFwiIFtjbGFzcy5jaGlwLWFjdGl2ZV09XCJjaGlwLmFjdGl2ZVwiIFtjbGFzcy5jaGlwLXNlbGVjdGVkXT1cImNoaXAuc2VsZWN0ZWRcIj48L2Rpdj5cclxuXHRcdDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogMjBweDtcIj57e2NoaXAubGFiZWx9fTwvc3Bhbj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbmAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGlwU2VsZWN0b3JDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuXHQvL0NvbnRyb2xcclxuXHRjb250cm9sOiBGb3JtQ29udHJvbDtcclxuXHJcblx0bGFiZWw6IHN0cmluZyA9ICcnO1xyXG5cclxuXHRjaGlwcyA6IGFueVtdID0gW107XHJcblx0bGFzdENoaXAgOiBhbnkgPSBudWxsO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHN1cGVyKCk7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpIHtcclxuXHRcdGZvciAobGV0IGNoaXAgb2YgdGhpcy5jaGlwcykge1xyXG5cdFx0XHRjaGlwLnNlbGVjdGVkID0gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuY29udHJvbC52YWx1ZSAhPSBudWxsKSB7XHJcblx0XHRcdGxldCBjaGlwID0gdGhpcy5jaGlwcy5maW5kKCB4ID0+IHtcclxuXHRcdFx0XHRyZXR1cm4geC52YWx1ZSA9PSB0aGlzLmNvbnRyb2wudmFsdWU7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRpZiAoY2hpcCkge1xyXG5cdFx0XHRcdGNoaXAuc2VsZWN0ZWQgPSB0cnVlO1xyXG5cdFx0XHRcdHRoaXMubGFzdENoaXAgPSBjaGlwO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0c2VsZWN0KGNoaXAgOiBhbnkpIHtcclxuXHRcdGlmICghY2hpcC5hY3RpdmUpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLmxhc3RDaGlwICE9IG51bGwpIHtcclxuXHRcdFx0dGhpcy5sYXN0Q2hpcC5zZWxlY3RlZCA9IGZhbHNlO1xyXG5cdFx0fVxyXG5cdFx0Y2hpcC5zZWxlY3RlZCA9IHRydWU7XHJcblxyXG5cdFx0dGhpcy5jb250cm9sLnNldFZhbHVlKGNoaXAudmFsdWUpO1xyXG5cclxuXHRcdHRoaXMubGFzdENoaXAgPSBjaGlwO1xyXG5cclxuXHR9XHJcblxyXG59XHJcbiJdfQ==