@gouvfr-anct/mediation-numerique
Version:
📚 Bibliothèque pour la cartographie de l’offre de médiation numérique.
182 lines • 21 kB
JavaScript
import { Address } from './address.model';
import { Equipment } from './enum/equipment.enum';
import { typeStructureEnum } from './enum/typeStructure.enum';
import { Weekday } from './enum/weekday.enum';
import { OpeningDay } from './openingDay.model';
import { Week } from './week.model';
export class Structure {
constructor(obj) {
this._id = null;
this.numero = null;
this.createdAt = null;
this.updatedAt = null;
this.structureName = null;
this.structureType = null;
this.description = null;
this.address = new Address();
this.contactPhone = null;
this.contactMail = null;
this.website = null;
this.facebook = null;
this.twitter = null;
this.instagram = null;
this.linkedin = null;
this.lockdownActivity = null;
this.pmrAccess = null;
this.placeOfReception = null;
this.choiceCompletion = null;
this.contactPersonFirstName = null;
this.contactPersonLastName = null;
this.contactPersonEmail = null;
this.publicsAccompaniment = [];
this.proceduresAccompaniment = [];
this.remoteAccompaniment = null;
this.accessModality = [];
this.labelsQualifications = [];
this.publics = [];
this.nbComputers = null;
this.nbPrinters = null;
this.nbTablets = null;
this.nbNumericTerminal = null;
this.nbScanners = null;
this.exceptionalClosures = null;
this.equipmentsAndServices = [];
this.freeWorkShop = null;
this.otherDescription = null;
this.isOpen = false;
this.openedOn = new OpeningDay();
this.baseSkills = [];
this.accessRight = [];
this.parentingHelp = [];
this.socialAndProfessional = [];
this.digitalCultureSecurity = [];
this.coord = [];
this.accountVerified = false;
this.personalOffers = [];
this.alreadySelected = false;
this.isClaimed = null;
Object.assign(this, obj, {
hours: obj && obj.hours ? new Week(obj.hours) : new Week()
});
}
getDayhours(day) {
switch (day) {
case Weekday.monday:
return this.hours.monday;
case Weekday.tuesday:
return this.hours.tuesday;
case Weekday.thursday:
return this.hours.thursday;
case Weekday.wednesday:
return this.hours.wednesday;
case Weekday.friday:
return this.hours.friday;
case Weekday.saturday:
return this.hours.saturday;
case Weekday.sunday:
return this.hours.sunday;
default:
return null;
}
}
/**
* Check if a structure has equipments
*/
hasEquipments() {
if (this.equipmentsAndServices.length && this.hasNotOnlyEmptyEquipments()) {
return true;
}
return false;
}
/**
* Verify that a structure as not only equipments with 0 as value. This is mostly use for display.
* @returns {Boolean} validation
*/
hasNotOnlyEmptyEquipments() {
if (this.nbComputers + this.nbPrinters + this.nbTablets + this.nbNumericTerminal + this.nbScanners > 0)
return true;
return false;
}
/**
* Check if a structure has pass Numeric label
*/
hasPassNumeric() {
return this.labelsQualifications.includes('passNumerique');
}
/**
* Return a range, according to the distance, between [1,3] to get a distance reference.
* - [0,5km] => 1
* - [5km,10km] => 2
* - [10km, [ => 3
*/
getDistanceRange() {
if (!this.distance) {
return 3;
}
else {
// If it's in km
if (this.distance > 10000) {
return 3;
}
else if (this.distance < 5000) {
// If it's between 0 and 500 m
return 1;
}
else {
return 2;
}
}
}
getLat() {
return this.coord[1];
}
getLon() {
return this.coord[0];
}
getEquipmentsIcon(equipment) {
switch (equipment) {
case Equipment.wifi:
return 'wifi';
case Equipment.bornes:
return 'borne';
case Equipment.printer:
return 'print';
case Equipment.tablet:
return 'tablet';
case Equipment.computer:
return 'computer';
case Equipment.scanner:
return 'scan';
default:
return null;
}
}
getEquipmentsTitle(equipment) {
switch (equipment) {
case Equipment.wifi:
return 'Wifi en accès libre';
case Equipment.bornes:
return this.nbNumericTerminal > 1 ? 'Bornes numériques' : 'Borne numérique';
case Equipment.printer:
return this.nbPrinters > 1 ? 'Imprimantes' : 'Imprimante';
case Equipment.tablet:
return this.nbTablets > 1 ? 'Tablettes' : 'Tablette';
case Equipment.computer:
return this.nbComputers > 1 ? 'Ordinateurs' : 'Ordinateur';
case Equipment.scanner:
return this.nbScanners > 1 ? 'Scanners' : 'Scanner';
default:
return null;
}
}
getLabelTypeStructure() {
return typeStructureEnum[this.structureType] ? typeStructureEnum[this.structureType] : '';
}
hasSocialNetwork() {
return ((this.facebook !== null && this.facebook !== '') ||
(this.instagram !== null && this.instagram !== '') ||
(this.linkedin !== null && this.linkedin !== '') ||
(this.twitter !== null && this.twitter !== ''));
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvQGdvdXZmci1hbmN0L21lZGlhdGlvbi1udW1lcmlxdWUvc3JjL2xpYi9tYXAvbW9kZWxzL3N0cnVjdHVyZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwQyxNQUFNLE9BQU8sU0FBUztJQTJEcEIsWUFBWSxHQUFTO1FBMURkLFFBQUcsR0FBVyxJQUFJLENBQUM7UUFDbkIsV0FBTSxHQUFXLElBQUksQ0FBQztRQUN0QixjQUFTLEdBQVcsSUFBSSxDQUFDO1FBQ3pCLGNBQVMsR0FBVyxJQUFJLENBQUM7UUFDekIsa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFDN0Isa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFDN0IsZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFDM0IsWUFBTyxHQUFZLElBQUksT0FBTyxFQUFFLENBQUM7UUFDakMsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFDNUIsZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFDM0IsWUFBTyxHQUFXLElBQUksQ0FBQztRQUN2QixhQUFRLEdBQVcsSUFBSSxDQUFDO1FBQ3hCLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFDdkIsY0FBUyxHQUFXLElBQUksQ0FBQztRQUN6QixhQUFRLEdBQVcsSUFBSSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFXLElBQUksQ0FBQztRQUNoQyxjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLHFCQUFnQixHQUFZLElBQUksQ0FBQztRQUNqQyxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFDakMsMkJBQXNCLEdBQVcsSUFBSSxDQUFDO1FBQ3RDLDBCQUFxQixHQUFXLElBQUksQ0FBQztRQUNyQyx1QkFBa0IsR0FBVyxJQUFJLENBQUM7UUFDbEMseUJBQW9CLEdBQWEsRUFBRSxDQUFDO1FBQ3BDLDRCQUF1QixHQUFhLEVBQUUsQ0FBQztRQUN2Qyx3QkFBbUIsR0FBWSxJQUFJLENBQUM7UUFDcEMsbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFDOUIseUJBQW9CLEdBQWEsRUFBRSxDQUFDO1FBQ3BDLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFDdkIsZ0JBQVcsR0FBVyxJQUFJLENBQUM7UUFDM0IsZUFBVSxHQUFXLElBQUksQ0FBQztRQUMxQixjQUFTLEdBQVcsSUFBSSxDQUFDO1FBQ3pCLHNCQUFpQixHQUFXLElBQUksQ0FBQztRQUNqQyxlQUFVLEdBQVcsSUFBSSxDQUFDO1FBQzFCLHdCQUFtQixHQUFXLElBQUksQ0FBQztRQUNuQywwQkFBcUIsR0FBYSxFQUFFLENBQUM7UUFFckMsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDN0IscUJBQWdCLEdBQVcsSUFBSSxDQUFDO1FBRWhDLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDeEIsYUFBUSxHQUFlLElBQUksVUFBVSxFQUFFLENBQUM7UUFDeEMsZUFBVSxHQUFhLEVBQUUsQ0FBQztRQUMxQixnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUMzQixrQkFBYSxHQUFhLEVBQUUsQ0FBQztRQUM3QiwwQkFBcUIsR0FBYSxFQUFFLENBQUM7UUFDckMsMkJBQXNCLEdBQWEsRUFBRSxDQUFDO1FBR3RDLFVBQUssR0FBYyxFQUFFLENBQUM7UUFHdEIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFakMsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBRXJDLG9CQUFlLEdBQUksS0FBSyxDQUFDO1FBQ3pCLGNBQVMsR0FBYSxJQUFJLENBQUM7UUFHaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO1lBQ3ZCLEtBQUssRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtTQUMzRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVyxDQUFDLEdBQVk7UUFDN0IsUUFBUSxHQUFHLEVBQUU7WUFDWCxLQUFLLE9BQU8sQ0FBQyxNQUFNO2dCQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzNCLEtBQUssT0FBTyxDQUFDLE9BQU87Z0JBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDNUIsS0FBSyxPQUFPLENBQUMsUUFBUTtnQkFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUM3QixLQUFLLE9BQU8sQ0FBQyxTQUFTO2dCQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQzlCLEtBQUssT0FBTyxDQUFDLE1BQU07Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDM0IsS0FBSyxPQUFPLENBQUMsUUFBUTtnQkFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUM3QixLQUFLLE9BQU8sQ0FBQyxNQUFNO2dCQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzNCO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2xCLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUUsRUFBRTtZQUN6RSxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7OztPQUdHO0lBQ0kseUJBQXlCO1FBQzlCLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3BILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0ksY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7YUFBTTtZQUNMLGdCQUFnQjtZQUNoQixJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxFQUFFO2dCQUN6QixPQUFPLENBQUMsQ0FBQzthQUNWO2lCQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUU7Z0JBQy9CLDhCQUE4QjtnQkFDOUIsT0FBTyxDQUFDLENBQUM7YUFDVjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsQ0FBQzthQUNWO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRU0saUJBQWlCLENBQUMsU0FBb0I7UUFDM0MsUUFBUSxTQUFTLEVBQUU7WUFDakIsS0FBSyxTQUFTLENBQUMsSUFBSTtnQkFDakIsT0FBTyxNQUFNLENBQUM7WUFDaEIsS0FBSyxTQUFTLENBQUMsTUFBTTtnQkFDbkIsT0FBTyxPQUFPLENBQUM7WUFDakIsS0FBSyxTQUFTLENBQUMsT0FBTztnQkFDcEIsT0FBTyxPQUFPLENBQUM7WUFDakIsS0FBSyxTQUFTLENBQUMsTUFBTTtnQkFDbkIsT0FBTyxRQUFRLENBQUM7WUFDbEIsS0FBSyxTQUFTLENBQUMsUUFBUTtnQkFDckIsT0FBTyxVQUFVLENBQUM7WUFDcEIsS0FBSyxTQUFTLENBQUMsT0FBTztnQkFDcEIsT0FBTyxNQUFNLENBQUM7WUFDaEI7Z0JBQ0UsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNILENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxTQUFvQjtRQUM1QyxRQUFRLFNBQVMsRUFBRTtZQUNqQixLQUFLLFNBQVMsQ0FBQyxJQUFJO2dCQUNqQixPQUFPLHFCQUFxQixDQUFDO1lBQy9CLEtBQUssU0FBUyxDQUFDLE1BQU07Z0JBQ25CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1lBQzlFLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1lBQzVELEtBQUssU0FBUyxDQUFDLE1BQU07Z0JBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQ3ZELEtBQUssU0FBUyxDQUFDLFFBQVE7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1lBQzdELEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3REO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0lBRU0scUJBQXFCO1FBQzFCLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1RixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE9BQU8sQ0FDTCxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBRSxDQUFDO1lBQ2hELENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxFQUFFLENBQUM7WUFDbEQsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNoRCxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZGRyZXNzIH0gZnJvbSAnLi9hZGRyZXNzLm1vZGVsJztcbmltcG9ydCB7IERheSB9IGZyb20gJy4vZGF5Lm1vZGVsJztcbmltcG9ydCB7IEVxdWlwbWVudCB9IGZyb20gJy4vZW51bS9lcXVpcG1lbnQuZW51bSc7XG5pbXBvcnQgeyB0eXBlU3RydWN0dXJlRW51bSB9IGZyb20gJy4vZW51bS90eXBlU3RydWN0dXJlLmVudW0nO1xuaW1wb3J0IHsgV2Vla2RheSB9IGZyb20gJy4vZW51bS93ZWVrZGF5LmVudW0nO1xuaW1wb3J0IHsgT3BlbmluZ0RheSB9IGZyb20gJy4vb3BlbmluZ0RheS5tb2RlbCc7XG5pbXBvcnQgeyBQZXJzb25hbE9mZmVyIH0gZnJvbSAnLi9wZXJzb25hbE9mZmVyLm1vZGVsJztcbmltcG9ydCB7IFdlZWsgfSBmcm9tICcuL3dlZWsubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgU3RydWN0dXJlIHtcbiAgcHVibGljIF9pZDogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIG51bWVybzogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGNyZWF0ZWRBdDogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIHVwZGF0ZWRBdDogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIHN0cnVjdHVyZU5hbWU6IHN0cmluZyA9IG51bGw7XG4gIHB1YmxpYyBzdHJ1Y3R1cmVUeXBlOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZGVzY3JpcHRpb246IHN0cmluZyA9IG51bGw7XG4gIHB1YmxpYyBhZGRyZXNzOiBBZGRyZXNzID0gbmV3IEFkZHJlc3MoKTtcbiAgcHVibGljIGNvbnRhY3RQaG9uZTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGNvbnRhY3RNYWlsOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgd2Vic2l0ZTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGZhY2Vib29rOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgdHdpdHRlcjogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGluc3RhZ3JhbTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGxpbmtlZGluOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgbG9ja2Rvd25BY3Rpdml0eTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIHBtckFjY2VzczogYm9vbGVhbiA9IG51bGw7XG4gIHB1YmxpYyBwbGFjZU9mUmVjZXB0aW9uOiBib29sZWFuID0gbnVsbDtcbiAgcHVibGljIGNob2ljZUNvbXBsZXRpb246IGJvb2xlYW4gPSBudWxsO1xuICBwdWJsaWMgY29udGFjdFBlcnNvbkZpcnN0TmFtZTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGNvbnRhY3RQZXJzb25MYXN0TmFtZTogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGNvbnRhY3RQZXJzb25FbWFpbDogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIHB1YmxpY3NBY2NvbXBhbmltZW50OiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgcHJvY2VkdXJlc0FjY29tcGFuaW1lbnQ6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyByZW1vdGVBY2NvbXBhbmltZW50OiBib29sZWFuID0gbnVsbDtcbiAgcHVibGljIGFjY2Vzc01vZGFsaXR5OiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgbGFiZWxzUXVhbGlmaWNhdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIHB1YmxpYyBwdWJsaWNzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgbmJDb21wdXRlcnM6IG51bWJlciA9IG51bGw7XG4gIHB1YmxpYyBuYlByaW50ZXJzOiBudW1iZXIgPSBudWxsO1xuICBwdWJsaWMgbmJUYWJsZXRzOiBudW1iZXIgPSBudWxsO1xuICBwdWJsaWMgbmJOdW1lcmljVGVybWluYWw6IG51bWJlciA9IG51bGw7XG4gIHB1YmxpYyBuYlNjYW5uZXJzOiBudW1iZXIgPSBudWxsO1xuICBwdWJsaWMgZXhjZXB0aW9uYWxDbG9zdXJlczogc3RyaW5nID0gbnVsbDtcbiAgcHVibGljIGVxdWlwbWVudHNBbmRTZXJ2aWNlczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGhvdXJzOiBXZWVrO1xuICBwdWJsaWMgZnJlZVdvcmtTaG9wOiBib29sZWFuID0gbnVsbDtcbiAgcHVibGljIG90aGVyRGVzY3JpcHRpb246IHN0cmluZyA9IG51bGw7XG5cbiAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgb3BlbmVkT246IE9wZW5pbmdEYXkgPSBuZXcgT3BlbmluZ0RheSgpO1xuICBwdWJsaWMgYmFzZVNraWxsczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGFjY2Vzc1JpZ2h0OiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgcGFyZW50aW5nSGVscDogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIHNvY2lhbEFuZFByb2Zlc3Npb25hbDogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGRpZ2l0YWxDdWx0dXJlU2VjdXJpdHk6IHN0cmluZ1tdID0gW107XG5cbiAgcHVibGljIGRpc3RhbmNlPzogbnVtYmVyO1xuICBwdWJsaWMgY29vcmQ/OiBudW1iZXJbXSA9IFtdO1xuICBwdWJsaWMgZGF0YVNoYXJlQ29uc2VudERhdGU/OiBzdHJpbmc7XG5cbiAgcHVibGljIGFjY291bnRWZXJpZmllZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBwZXJzb25hbE9mZmVyczogUGVyc29uYWxPZmZlcltdID0gW107XG5cbiAgcHVibGljIGFscmVhZHlTZWxlY3RlZD8gPSBmYWxzZTtcbiAgcHVibGljIGlzQ2xhaW1lZD86IGJvb2xlYW4gPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKG9iaj86IGFueSkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgb2JqLCB7XG4gICAgICBob3Vyczogb2JqICYmIG9iai5ob3VycyA/IG5ldyBXZWVrKG9iai5ob3VycykgOiBuZXcgV2VlaygpXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF5aG91cnMoZGF5OiBXZWVrZGF5KTogRGF5IHtcbiAgICBzd2l0Y2ggKGRheSkge1xuICAgICAgY2FzZSBXZWVrZGF5Lm1vbmRheTpcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMubW9uZGF5O1xuICAgICAgY2FzZSBXZWVrZGF5LnR1ZXNkYXk6XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzLnR1ZXNkYXk7XG4gICAgICBjYXNlIFdlZWtkYXkudGh1cnNkYXk6XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzLnRodXJzZGF5O1xuICAgICAgY2FzZSBXZWVrZGF5LndlZG5lc2RheTpcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMud2VkbmVzZGF5O1xuICAgICAgY2FzZSBXZWVrZGF5LmZyaWRheTpcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91cnMuZnJpZGF5O1xuICAgICAgY2FzZSBXZWVrZGF5LnNhdHVyZGF5OlxuICAgICAgICByZXR1cm4gdGhpcy5ob3Vycy5zYXR1cmRheTtcbiAgICAgIGNhc2UgV2Vla2RheS5zdW5kYXk6XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzLnN1bmRheTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHN0cnVjdHVyZSBoYXMgZXF1aXBtZW50c1xuICAgKi9cbiAgcHVibGljIGhhc0VxdWlwbWVudHMoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZXF1aXBtZW50c0FuZFNlcnZpY2VzLmxlbmd0aCAmJiB0aGlzLmhhc05vdE9ubHlFbXB0eUVxdWlwbWVudHMoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhhdCBhIHN0cnVjdHVyZSBhcyBub3Qgb25seSBlcXVpcG1lbnRzIHdpdGggMCBhcyB2YWx1ZS4gVGhpcyBpcyBtb3N0bHkgdXNlIGZvciBkaXNwbGF5LlxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gdmFsaWRhdGlvblxuICAgKi9cbiAgcHVibGljIGhhc05vdE9ubHlFbXB0eUVxdWlwbWVudHMoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMubmJDb21wdXRlcnMgKyB0aGlzLm5iUHJpbnRlcnMgKyB0aGlzLm5iVGFibGV0cyArIHRoaXMubmJOdW1lcmljVGVybWluYWwgKyB0aGlzLm5iU2Nhbm5lcnMgPiAwKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSBzdHJ1Y3R1cmUgaGFzIHBhc3MgTnVtZXJpYyBsYWJlbFxuICAgKi9cbiAgcHVibGljIGhhc1Bhc3NOdW1lcmljKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxhYmVsc1F1YWxpZmljYXRpb25zLmluY2x1ZGVzKCdwYXNzTnVtZXJpcXVlJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgcmFuZ2UsIGFjY29yZGluZyB0byB0aGUgZGlzdGFuY2UsIGJldHdlZW4gWzEsM10gdG8gZ2V0IGEgZGlzdGFuY2UgcmVmZXJlbmNlLlxuICAgKiAtIFswLDVrbV0gPT4gMVxuICAgKiAtIFs1a20sMTBrbV0gPT4gMlxuICAgKiAtIFsxMGttLCBbID0+IDNcbiAgICovXG4gIHB1YmxpYyBnZXREaXN0YW5jZVJhbmdlKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmRpc3RhbmNlKSB7XG4gICAgICByZXR1cm4gMztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgaXQncyBpbiBrbVxuICAgICAgaWYgKHRoaXMuZGlzdGFuY2UgPiAxMDAwMCkge1xuICAgICAgICByZXR1cm4gMztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kaXN0YW5jZSA8IDUwMDApIHtcbiAgICAgICAgLy8gSWYgaXQncyBiZXR3ZWVuIDAgYW5kIDUwMCBtXG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldExhdCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvb3JkWzFdO1xuICB9XG5cbiAgcHVibGljIGdldExvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvb3JkWzBdO1xuICB9XG5cbiAgcHVibGljIGdldEVxdWlwbWVudHNJY29uKGVxdWlwbWVudDogRXF1aXBtZW50KTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGVxdWlwbWVudCkge1xuICAgICAgY2FzZSBFcXVpcG1lbnQud2lmaTpcbiAgICAgICAgcmV0dXJuICd3aWZpJztcbiAgICAgIGNhc2UgRXF1aXBtZW50LmJvcm5lczpcbiAgICAgICAgcmV0dXJuICdib3JuZSc7XG4gICAgICBjYXNlIEVxdWlwbWVudC5wcmludGVyOlxuICAgICAgICByZXR1cm4gJ3ByaW50JztcbiAgICAgIGNhc2UgRXF1aXBtZW50LnRhYmxldDpcbiAgICAgICAgcmV0dXJuICd0YWJsZXQnO1xuICAgICAgY2FzZSBFcXVpcG1lbnQuY29tcHV0ZXI6XG4gICAgICAgIHJldHVybiAnY29tcHV0ZXInO1xuICAgICAgY2FzZSBFcXVpcG1lbnQuc2Nhbm5lcjpcbiAgICAgICAgcmV0dXJuICdzY2FuJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRFcXVpcG1lbnRzVGl0bGUoZXF1aXBtZW50OiBFcXVpcG1lbnQpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoZXF1aXBtZW50KSB7XG4gICAgICBjYXNlIEVxdWlwbWVudC53aWZpOlxuICAgICAgICByZXR1cm4gJ1dpZmkgZW4gYWNjw6hzIGxpYnJlJztcbiAgICAgIGNhc2UgRXF1aXBtZW50LmJvcm5lczpcbiAgICAgICAgcmV0dXJuIHRoaXMubmJOdW1lcmljVGVybWluYWwgPiAxID8gJ0Jvcm5lcyBudW3DqXJpcXVlcycgOiAnQm9ybmUgbnVtw6lyaXF1ZSc7XG4gICAgICBjYXNlIEVxdWlwbWVudC5wcmludGVyOlxuICAgICAgICByZXR1cm4gdGhpcy5uYlByaW50ZXJzID4gMSA/ICdJbXByaW1hbnRlcycgOiAnSW1wcmltYW50ZSc7XG4gICAgICBjYXNlIEVxdWlwbWVudC50YWJsZXQ6XG4gICAgICAgIHJldHVybiB0aGlzLm5iVGFibGV0cyA+IDEgPyAnVGFibGV0dGVzJyA6ICdUYWJsZXR0ZSc7XG4gICAgICBjYXNlIEVxdWlwbWVudC5jb21wdXRlcjpcbiAgICAgICAgcmV0dXJuIHRoaXMubmJDb21wdXRlcnMgPiAxID8gJ09yZGluYXRldXJzJyA6ICdPcmRpbmF0ZXVyJztcbiAgICAgIGNhc2UgRXF1aXBtZW50LnNjYW5uZXI6XG4gICAgICAgIHJldHVybiB0aGlzLm5iU2Nhbm5lcnMgPiAxID8gJ1NjYW5uZXJzJyA6ICdTY2FubmVyJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRMYWJlbFR5cGVTdHJ1Y3R1cmUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHlwZVN0cnVjdHVyZUVudW1bdGhpcy5zdHJ1Y3R1cmVUeXBlXSA/IHR5cGVTdHJ1Y3R1cmVFbnVtW3RoaXMuc3RydWN0dXJlVHlwZV0gOiAnJztcbiAgfVxuXG4gIHB1YmxpYyBoYXNTb2NpYWxOZXR3b3JrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5mYWNlYm9vayAhPT0gbnVsbCAmJiB0aGlzLmZhY2Vib29rICE9PSAnJykgfHxcbiAgICAgICh0aGlzLmluc3RhZ3JhbSAhPT0gbnVsbCAmJiB0aGlzLmluc3RhZ3JhbSAhPT0gJycpIHx8XG4gICAgICAodGhpcy5saW5rZWRpbiAhPT0gbnVsbCAmJiB0aGlzLmxpbmtlZGluICE9PSAnJykgfHxcbiAgICAgICh0aGlzLnR3aXR0ZXIgIT09IG51bGwgJiYgdGhpcy50d2l0dGVyICE9PSAnJylcbiAgICApO1xuICB9XG59XG4iXX0=