UNPKG

ng-number-to-text

Version:

Set of pipes for angular2+ projects to convert numbers to words as ordinal numbers

263 lines (262 loc) 21 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Pipe } from '@angular/core'; export class NumberToTextArFemPipe { constructor() { this.first = 'الحادية'; } /** * @param {?} value * @return {?} */ transform(value) { /** @type {?} */ let number; if (typeof 'value' === 'string') { number = parseInt(value, 10); } else { number = value; } return this.checkNumber(number); } /** * @param {?} value * @return {?} */ checkNumber(value) { if (this.checkZero(value)) { return 'الارضى'; } else { if (value > 0 && value <= 10) return this.checkSingle(value); else if (value > 10 && value <= 20) return this.checkTenth(value); else if (value > 20 && value <= 30) return this.checkTwentieth(value); else if (value > 30 && value <= 40) return this.checkThirtieth(value); else if (value > 40 && value <= 50) return this.checkFortieth(value); else if (value > 50 && value <= 60) return this.checkFiftieth(value); else if (value > 60 && value <= 70) return this.checkSixtieth(value); else if (value > 70 && value <= 80) return this.checkSeventieth(value); else if (value > 80 && value <= 90) return this.checkEightieth(value); else if (value > 90 && value <= 100) return this.checkNinetieth(value); } } /** * @param {?} value * @return {?} */ checkZero(value) { return value === 0; } /** * @param {?} value * @return {?} */ checkSingle(value) { if (value < 10 && value > 0) { if (value === 1) return 'الاولى'; else if (value === 2) return 'الثانية'; else if (value === 3) return 'الثالثة'; else if (value === 4) return 'الرابعة'; else if (value === 5) return 'الخامسة'; else if (value === 6) return 'السادسة'; else if (value === 7) return 'السابعة'; else if (value === 8) return 'الثامنة'; else return 'التاسعة'; } else { return 'العاشرة'; } } /** * @param {?} value * @return {?} */ checkTenth(value) { /** @type {?} */ let prefix = ' عشر'; if (value > 10 && value < 20) { value -= 10; if (value === 1) return 'الحادية عشر'; else return this.checkSingle(value) + prefix; } else { return 'العشرون'; } } /** * @param {?} value * @return {?} */ checkTwentieth(value) { /** @type {?} */ let prefix = ' و العشرون'; if (value > 20 && value < 30) { value -= 20; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'الثلاثون'; } } /** * @param {?} value * @return {?} */ checkThirtieth(value) { /** @type {?} */ let prefix = ' و الثلاثون'; if (value > 30 && value < 40) { value -= 30; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'الاربعون'; } } /** * @param {?} value * @return {?} */ checkFortieth(value) { /** @type {?} */ let prefix = ' و الاربعون'; if (value > 40 && value < 50) { value -= 40; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'الخمسون'; } } /** * @param {?} value * @return {?} */ checkFiftieth(value) { /** @type {?} */ let prefix = ' و الخمسون'; if (value > 50 && value < 60) { value -= 50; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'الستون'; } } /** * @param {?} value * @return {?} */ checkSixtieth(value) { /** @type {?} */ let prefix = ' و الستون'; if (value > 60 && value < 70) { value -= 60; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'السبعون'; } } /** * @param {?} value * @return {?} */ checkSeventieth(value) { /** @type {?} */ let prefix = ' و السبعون'; if (value > 70 && value < 80) { value -= 70; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'الثمانون'; } } /** * @param {?} value * @return {?} */ checkEightieth(value) { /** @type {?} */ let prefix = ' و الثمانون'; if (value > 80 && value < 90) { value -= 80; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'التسعون'; } } /** * @param {?} value * @return {?} */ checkNinetieth(value) { /** @type {?} */ let prefix = ' و التسعون'; if (value > 90 && value < 100) { value -= 90; if (value === 1) return this.first + prefix; else return this.checkSingle(value) + prefix; } else { return 'المائة'; } } } NumberToTextArFemPipe.decorators = [ { type: Pipe, args: [{ name: 'numberToTextArFem' },] } ]; if (false) { /** @type {?} */ NumberToTextArFemPipe.prototype.first; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXRvLXRleHQtYXItZmVtLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1udW1iZXItdG8tdGV4dC8iLCJzb3VyY2VzIjpbImxpYi9waXBlcy9udW1iZXItdG8tdGV4dC1hci1mZW0ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLElBQUksRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFHbEQsTUFBTTs7cUJBRUksU0FBUzs7Ozs7O0lBRWpCLFNBQVMsQ0FBQyxLQUFVOztRQUNsQixJQUFJLE1BQU0sQ0FBUztRQUVuQixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUMvQixNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztTQUM5QjthQUFNO1lBQ0wsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUNoQjtRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNqQzs7Ozs7SUFFTyxXQUFXLENBQUMsS0FBYTtRQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekIsT0FBTyxRQUFRLENBQUM7U0FDakI7YUFBTTtZQUNMLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUM1QixJQUFJLEtBQUssR0FBRyxFQUFFLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDM0IsSUFBSSxLQUFLLEdBQUcsRUFBRSxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUNoQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQy9CLElBQUksS0FBSyxHQUFHLEVBQUUsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDaEMs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QUcsRUFBRSxJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDN0IsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksS0FBSyxLQUFLLENBQUM7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQzs7Z0JBRTNCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUM7U0FDM0M7YUFBTTtZQUNMLE9BQU8sUUFBUSxDQUFDO1NBQ2pCOzs7O1lBM0xKLElBQUksU0FBQyxFQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7bmFtZTogJ251bWJlclRvVGV4dEFyRmVtJ30pXHJcbmV4cG9ydCBjbGFzcyBOdW1iZXJUb1RleHRBckZlbVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgZmlyc3QgPSAn2KfZhNit2KfYr9mK2KknO1xyXG5cclxuICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICBsZXQgbnVtYmVyOiBudW1iZXI7XHJcblxyXG4gICAgaWYgKHR5cGVvZiAndmFsdWUnID09PSAnc3RyaW5nJykge1xyXG4gICAgICBudW1iZXIgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbnVtYmVyID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tOdW1iZXIobnVtYmVyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tOdW1iZXIodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5jaGVja1plcm8odmFsdWUpKSB7XHJcbiAgICAgIHJldHVybiAn2KfZhNin2LHYttmJJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh2YWx1ZSA+IDAgJiYgdmFsdWUgPD0gMTApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA+IDEwICYmIHZhbHVlIDw9IDIwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrVGVudGgodmFsdWUpO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA+IDIwICYmIHZhbHVlIDw9IDMwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrVHdlbnRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiAzMCAmJiB2YWx1ZSA8PSA0MClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1RoaXJ0aWV0aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gNDAgJiYgdmFsdWUgPD0gNTApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tGb3J0aWV0aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gNTAgJiYgdmFsdWUgPD0gNjApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tGaWZ0aWV0aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gNjAgJiYgdmFsdWUgPD0gNzApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaXh0aWV0aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gNzAgJiYgdmFsdWUgPD0gODApXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTZXZlbnRpZXRoKHZhbHVlKTtcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPiA4MCAmJiB2YWx1ZSA8PSA5MClcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0VpZ2h0aWV0aCh2YWx1ZSk7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID4gOTAgJiYgdmFsdWUgPD0gMTAwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrTmluZXRpZXRoKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2taZXJvKHZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB2YWx1ZSA9PT0gMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tTaW5nbGUodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAodmFsdWUgPCAxMCAmJiB2YWx1ZSA+IDApIHtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKVxyXG4gICAgICAgIHJldHVybiAn2KfZhNin2YjZhNmJJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDIpXHJcbiAgICAgICAgcmV0dXJuICfYp9mE2KvYp9mG2YrYqSc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSAzKVxyXG4gICAgICAgIHJldHVybiAn2KfZhNir2KfZhNir2KknO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gNClcclxuICAgICAgICByZXR1cm4gJ9in2YTYsdin2KjYudipJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDUpXHJcbiAgICAgICAgcmV0dXJuICfYp9mE2K7Yp9mF2LPYqSc7XHJcbiAgICAgIGVsc2UgaWYgKHZhbHVlID09PSA2KVxyXG4gICAgICAgIHJldHVybiAn2KfZhNiz2KfYr9iz2KknO1xyXG4gICAgICBlbHNlIGlmICh2YWx1ZSA9PT0gNylcclxuICAgICAgICByZXR1cm4gJ9in2YTYs9in2KjYudipJztcclxuICAgICAgZWxzZSBpZiAodmFsdWUgPT09IDgpXHJcbiAgICAgICAgcmV0dXJuICfYp9mE2KvYp9mF2YbYqSc7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gJ9in2YTYqtin2LPYudipJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAn2KfZhNi52KfYtNix2KknO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RlbnRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHByZWZpeCA9ICcg2LnYtNixJztcclxuICAgIGlmICh2YWx1ZSA+IDEwICYmIHZhbHVlIDwgMjApIHtcclxuICAgICAgdmFsdWUgLT0gMTA7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gMSlcclxuICAgICAgICByZXR1cm4gJ9in2YTYrdin2K/ZitipINi52LTYsSc7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSkgKyBwcmVmaXg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ9in2YTYudi02LHZiNmGJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tUd2VudGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJyDZiCDYp9mE2LnYtNix2YjZhic7XHJcbiAgICBpZiAodmFsdWUgPiAyMCAmJiB2YWx1ZSA8IDMwKSB7XHJcbiAgICAgIHZhbHVlIC09IDIwO1xyXG4gICAgICBpZiAodmFsdWUgPT09IDEpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3QgKyBwcmVmaXg7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSkgKyBwcmVmaXg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ9in2YTYq9mE2KfYq9mI2YYnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjaGVja1RoaXJ0aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAnINmIINin2YTYq9mE2KfYq9mI2YYnO1xyXG4gICAgaWYgKHZhbHVlID4gMzAgJiYgdmFsdWUgPCA0MCkge1xyXG4gICAgICB2YWx1ZSAtPSAzMDtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0ICsgcHJlZml4O1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpICsgcHJlZml4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICfYp9mE2KfYsdio2LnZiNmGJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tGb3J0aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAnINmIINin2YTYp9ix2KjYudmI2YYnO1xyXG4gICAgaWYgKHZhbHVlID4gNDAgJiYgdmFsdWUgPCA1MCkge1xyXG4gICAgICB2YWx1ZSAtPSA0MDtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0ICsgcHJlZml4O1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpICsgcHJlZml4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICfYp9mE2K7Zhdiz2YjZhic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrRmlmdGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJyDZiCDYp9mE2K7Zhdiz2YjZhic7XHJcbiAgICBpZiAodmFsdWUgPiA1MCAmJiB2YWx1ZSA8IDYwKSB7XHJcbiAgICAgIHZhbHVlIC09IDUwO1xyXG4gICAgICBpZiAodmFsdWUgPT09IDEpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3QgKyBwcmVmaXg7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSkgKyBwcmVmaXg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ9in2YTYs9iq2YjZhic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrU2l4dGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJyDZiCDYp9mE2LPYqtmI2YYnO1xyXG4gICAgaWYgKHZhbHVlID4gNjAgJiYgdmFsdWUgPCA3MCkge1xyXG4gICAgICB2YWx1ZSAtPSA2MDtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0ICsgcHJlZml4O1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpICsgcHJlZml4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICfYp9mE2LPYqNi52YjZhic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrU2V2ZW50aWV0aCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBwcmVmaXggPSAnINmIINin2YTYs9io2LnZiNmGJztcclxuICAgIGlmICh2YWx1ZSA+IDcwICYmIHZhbHVlIDwgODApIHtcclxuICAgICAgdmFsdWUgLT0gNzA7XHJcbiAgICAgIGlmICh2YWx1ZSA9PT0gMSlcclxuICAgICAgICByZXR1cm4gdGhpcy5maXJzdCArIHByZWZpeDtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrU2luZ2xlKHZhbHVlKSArIHByZWZpeDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAn2KfZhNir2YXYp9mG2YjZhic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrRWlnaHRpZXRoKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHByZWZpeCA9ICcg2Ygg2KfZhNir2YXYp9mG2YjZhic7XHJcbiAgICBpZiAodmFsdWUgPiA4MCAmJiB2YWx1ZSA8IDkwKSB7XHJcbiAgICAgIHZhbHVlIC09IDgwO1xyXG4gICAgICBpZiAodmFsdWUgPT09IDEpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3QgKyBwcmVmaXg7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1NpbmdsZSh2YWx1ZSkgKyBwcmVmaXg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ9in2YTYqtiz2LnZiNmGJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tOaW5ldGlldGgodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcHJlZml4ID0gJyDZiCDYp9mE2KrYs9i52YjZhic7XHJcbiAgICBpZiAodmFsdWUgPiA5MCAmJiB2YWx1ZSA8IDEwMCkge1xyXG4gICAgICB2YWx1ZSAtPSA5MDtcclxuICAgICAgaWYgKHZhbHVlID09PSAxKVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0ICsgcHJlZml4O1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tTaW5nbGUodmFsdWUpICsgcHJlZml4O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICfYp9mE2YXYp9im2KknO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=