1154 lines
134 KiB
JavaScript
1154 lines
134 KiB
JavaScript
|
/******/ (function(modules) { // webpackBootstrap
|
|||
|
/******/ // The module cache
|
|||
|
/******/ var installedModules = {};
|
|||
|
/******/
|
|||
|
/******/ // The require function
|
|||
|
/******/ function __webpack_require__(moduleId) {
|
|||
|
/******/
|
|||
|
/******/ // Check if module is in cache
|
|||
|
/******/ if(installedModules[moduleId]) {
|
|||
|
/******/ return installedModules[moduleId].exports;
|
|||
|
/******/ }
|
|||
|
/******/ // Create a new module (and put it into the cache)
|
|||
|
/******/ var module = installedModules[moduleId] = {
|
|||
|
/******/ i: moduleId,
|
|||
|
/******/ l: false,
|
|||
|
/******/ exports: {}
|
|||
|
/******/ };
|
|||
|
/******/
|
|||
|
/******/ // Execute the module function
|
|||
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|||
|
/******/
|
|||
|
/******/ // Flag the module as loaded
|
|||
|
/******/ module.l = true;
|
|||
|
/******/
|
|||
|
/******/ // Return the exports of the module
|
|||
|
/******/ return module.exports;
|
|||
|
/******/ }
|
|||
|
/******/
|
|||
|
/******/
|
|||
|
/******/ // expose the modules object (__webpack_modules__)
|
|||
|
/******/ __webpack_require__.m = modules;
|
|||
|
/******/
|
|||
|
/******/ // expose the module cache
|
|||
|
/******/ __webpack_require__.c = installedModules;
|
|||
|
/******/
|
|||
|
/******/ // define getter function for harmony exports
|
|||
|
/******/ __webpack_require__.d = function(exports, name, getter) {
|
|||
|
/******/ if(!__webpack_require__.o(exports, name)) {
|
|||
|
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
|||
|
/******/ }
|
|||
|
/******/ };
|
|||
|
/******/
|
|||
|
/******/ // define __esModule on exports
|
|||
|
/******/ __webpack_require__.r = function(exports) {
|
|||
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|||
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|||
|
/******/ }
|
|||
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|||
|
/******/ };
|
|||
|
/******/
|
|||
|
/******/ // create a fake namespace object
|
|||
|
/******/ // mode & 1: value is a module id, require it
|
|||
|
/******/ // mode & 2: merge all properties of value into the ns
|
|||
|
/******/ // mode & 4: return value when already ns object
|
|||
|
/******/ // mode & 8|1: behave like require
|
|||
|
/******/ __webpack_require__.t = function(value, mode) {
|
|||
|
/******/ if(mode & 1) value = __webpack_require__(value);
|
|||
|
/******/ if(mode & 8) return value;
|
|||
|
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
|||
|
/******/ var ns = Object.create(null);
|
|||
|
/******/ __webpack_require__.r(ns);
|
|||
|
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
|||
|
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
|||
|
/******/ return ns;
|
|||
|
/******/ };
|
|||
|
/******/
|
|||
|
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|||
|
/******/ __webpack_require__.n = function(module) {
|
|||
|
/******/ var getter = module && module.__esModule ?
|
|||
|
/******/ function getDefault() { return module['default']; } :
|
|||
|
/******/ function getModuleExports() { return module; };
|
|||
|
/******/ __webpack_require__.d(getter, 'a', getter);
|
|||
|
/******/ return getter;
|
|||
|
/******/ };
|
|||
|
/******/
|
|||
|
/******/ // Object.prototype.hasOwnProperty.call
|
|||
|
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
|||
|
/******/
|
|||
|
/******/ // __webpack_public_path__
|
|||
|
/******/ __webpack_require__.p = "";
|
|||
|
/******/
|
|||
|
/******/
|
|||
|
/******/ // Load entry module and return exports
|
|||
|
/******/ return __webpack_require__(__webpack_require__.s = "./src/paymentPage.js");
|
|||
|
/******/ })
|
|||
|
/************************************************************************/
|
|||
|
/******/ ({
|
|||
|
|
|||
|
/***/ "../config/instance.js":
|
|||
|
/*!*****************************!*\
|
|||
|
!*** ../config/instance.js ***!
|
|||
|
\*****************************/
|
|||
|
/*! no static exports found */
|
|||
|
/***/ (function(module, exports, __webpack_require__) {
|
|||
|
|
|||
|
var _module$exports;
|
|||
|
|
|||
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|||
|
|
|||
|
var users = __webpack_require__(/*! ./users */ "../config/users.js");
|
|||
|
|
|||
|
var questionnaires = __webpack_require__(/*! ./questionnaires */ "../config/questionnaires.js");
|
|||
|
|
|||
|
module.exports = (_module$exports = {
|
|||
|
apiUrl: "http://localhost:3000/api",
|
|||
|
siteUrl: "http://localhost:8080",
|
|||
|
adminName: "Fabrice",
|
|||
|
adminEmail: "dev@wikilerni.com",
|
|||
|
senderName: "WikiLerni (local)",
|
|||
|
senderEmail: "bonjour@wikilerni.com",
|
|||
|
adminLang: "fr",
|
|||
|
theme: "wikilerni",
|
|||
|
// le thème utilisé (dans /views) pour générer les pages HTML. Contient ses propres fichiers de configuration.
|
|||
|
availableLangs: ["fr"],
|
|||
|
// Languages in which the site is available. The first one is the default one.
|
|||
|
siteName: "WikiLerni (local)",
|
|||
|
beginCodeGodfather: "WL",
|
|||
|
// case-sensitive and can't contain "@" !
|
|||
|
defaultReceiptDays: "147",
|
|||
|
// Par défaut, quel(s) jour(s) de la semaine, l'utilisateur reçoit-il quelque chose ? (1=dimanche, 2=lundi... 7=samedi)
|
|||
|
cronTimingAlertInSeconde: 120,
|
|||
|
// for logs
|
|||
|
responseTimingAlertInSeconde: 3,
|
|||
|
// idem
|
|||
|
tokenSignupValidationTimeInHours: "48h",
|
|||
|
// https://github.com/zeit/ms
|
|||
|
tokenLoginLinkTimeInHours: "1h",
|
|||
|
tokenConnexionMinTimeInHours: "24h",
|
|||
|
tokenConnexionMaxTimeInDays: "180 days",
|
|||
|
tokenLoginChangingTimeInHours: "1h",
|
|||
|
// for email & password changing
|
|||
|
tokenDeleteUserTimeInHours: "1h",
|
|||
|
tokenUnsubscribeLinkTimeInDays: "7 days",
|
|||
|
// token send with subscription's emails
|
|||
|
freeAccountTimingInDays: 15,
|
|||
|
freeAccountExpirationNotificationInDays: 3,
|
|||
|
accountExpirationFirstNotificationInDays: 10,
|
|||
|
accountExpirationSecondNotificationInDays: 3,
|
|||
|
inactiveAccountTimeToDeleteInDays: 180,
|
|||
|
// Questionnaires:
|
|||
|
nbQuestionsMin: 1,
|
|||
|
// minimum number of questions for the questionnaire to be publishable
|
|||
|
nbQuestionsMax: 2,
|
|||
|
// if 0 = not maximum
|
|||
|
nbChoicesMax: 10,
|
|||
|
nbNewQuestionnaires: 12,
|
|||
|
// for RSS, etc.
|
|||
|
hourGiveNewQuestionnaireBegin: 7,
|
|||
|
// in user local time
|
|||
|
hourGiveNewQuestionnaireEnd: 21,
|
|||
|
// idem
|
|||
|
numberNewQuestionnaireAtSameTime: 50,
|
|||
|
// for mass mailing
|
|||
|
minSearchQuestionnaires: 3,
|
|||
|
fieldNewQuestionnaires: "publishingAt",
|
|||
|
// field to be used to create the list of the last questionnaires, can be "createdAt", "updatedAt" or "publishingAt"
|
|||
|
// Illustrations:
|
|||
|
nbIllustrationsMin: 0,
|
|||
|
nbIllustrationsMax: 1,
|
|||
|
maxIllustrationSizeinOctet: 1000000,
|
|||
|
// pas contrôlé pour l'instant. À revoir.
|
|||
|
mimeTypesForIllustration: ["image/jpg", "image/jpeg", "image/png", "image/gif", "image/png"],
|
|||
|
// -- Upload and resize:
|
|||
|
illustrationsWidthMaxInPx: 500,
|
|||
|
illustrationsMiniaturesWidthMaxInPx: 200,
|
|||
|
// Links:
|
|||
|
nbLinksMin: 1,
|
|||
|
nbLinksMax: 1
|
|||
|
}, _defineProperty(_module$exports, "nbQuestionsMin", 1), _defineProperty(_module$exports, "nbQuestionsMax", 0), _defineProperty(_module$exports, "nbChoicesMax", 10), _defineProperty(_module$exports, "passwordMinLength", users.password.minlength), _defineProperty(_module$exports, "dirCacheUsers", users.dirCacheUsers), _defineProperty(_module$exports, "dirCacheUsersAnswers", users.dirCacheUsersAnswers), _defineProperty(_module$exports, "dirCacheQuestionnaires", questionnaires.dirCacheQuestionnaires), _defineProperty(_module$exports, "dirCacheQuestions", questionnaires.dirCacheQuestions), _defineProperty(_module$exports, "dirCacheUsersQuestionnaires", questionnaires.dirCacheUsersQuestionnaires), _defineProperty(_module$exports, "dirHTMLQuestionnaire", questionnaires.dirHTMLQuestionnaire), _defineProperty(_module$exports, "dirWebQuestionnaire", questionnaires.dirWebQuestionnaire), _module$exports);
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ "../config/matomo.js":
|
|||
|
/*!***************************!*\
|
|||
|
!*** ../config/matomo.js ***!
|
|||
|
\***************************/
|
|||
|
/*! no static exports found */
|
|||
|
/***/ (function(module, exports) {
|
|||
|
|
|||
|
// Si non utilisé, supprimer l'appel des JS front-end puis recompiler.
|
|||
|
// Revoir comment réorganiser cela sous-forme de module indépendant.
|
|||
|
module.exports = {
|
|||
|
// Stats Matomo :
|
|||
|
matomo: {
|
|||
|
url: "https://stats.le-fab-lab.com/",
|
|||
|
siteId: "5"
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ "../config/questionnaires.js":
|
|||
|
/*!***********************************!*\
|
|||
|
!*** ../config/questionnaires.js ***!
|
|||
|
\***********************************/
|
|||
|
/*! no static exports found */
|
|||
|
/***/ (function(module, exports) {
|
|||
|
|
|||
|
module.exports = {
|
|||
|
// API'routes (after "apiUrl" defined in instance.js)
|
|||
|
questionnaireRoutes: "/questionnaire",
|
|||
|
getQuestionnaireRoutes: "/get",
|
|||
|
previewQuestionnaireRoutes: "/preview",
|
|||
|
publishedQuestionnaireRoutes: "/quiz/",
|
|||
|
saveAnswersRoute: "/answer/",
|
|||
|
getStatsQuestionnaires: "/stats/",
|
|||
|
searchQuestionnairesRoute: "/search",
|
|||
|
getRandomQuestionnairesRoute: "/getrandom",
|
|||
|
searchAdminQuestionnairesRoute: "/searchadmin",
|
|||
|
getListNextQuestionnaires: "/getlistnextquestionnaires/",
|
|||
|
regenerateHTML: "/htmlregenerated",
|
|||
|
// -- questions & choices :
|
|||
|
questionsRoute: "/question/",
|
|||
|
// -- tags :
|
|||
|
tagsSearchRoute: "/tags/search/",
|
|||
|
// -- answers :
|
|||
|
getQuestionnairesWithoutAnswer: "/withoutanswer/user/",
|
|||
|
getPreviousAnswers: "/user/answers/",
|
|||
|
getStatsAnswers: "/user/anwswers/stats/",
|
|||
|
getAdminStats: "/getadminstats/",
|
|||
|
// forms : à compléter avec valeurs par défaut, etc. cf modèle
|
|||
|
Questionnaire: {
|
|||
|
title: {
|
|||
|
maxlength: 255,
|
|||
|
required: true
|
|||
|
},
|
|||
|
slug: {
|
|||
|
maxlength: 150
|
|||
|
},
|
|||
|
// champ requis mais calculé à partir du titre qd vide
|
|||
|
introduction: {
|
|||
|
required: true
|
|||
|
}
|
|||
|
},
|
|||
|
searchQuestionnaires: {
|
|||
|
minlength: 3,
|
|||
|
required: true
|
|||
|
},
|
|||
|
Question: {
|
|||
|
text: {
|
|||
|
maxlength: 255,
|
|||
|
required: true
|
|||
|
},
|
|||
|
rank: {
|
|||
|
required: true,
|
|||
|
min: 1,
|
|||
|
defaultValue: 1
|
|||
|
}
|
|||
|
},
|
|||
|
Choice: {
|
|||
|
text: {
|
|||
|
maxlength: 255,
|
|||
|
required: true
|
|||
|
}
|
|||
|
},
|
|||
|
search: {
|
|||
|
minlength: 3,
|
|||
|
required: true
|
|||
|
},
|
|||
|
|
|||
|
/* valeurs en fait définies dans instance.js donc à supprimer quand plus utilisées ailleurs */
|
|||
|
nbQuestionsMin: 1,
|
|||
|
nbQuestionsMax: 0,
|
|||
|
nbChoicesMax: 10,
|
|||
|
nbTagsMin: 0,
|
|||
|
nbTagsMax: 0,
|
|||
|
// 0 = not max
|
|||
|
// JSON and HTML dir
|
|||
|
dirCacheQuestionnaires: "datas/questionnaires",
|
|||
|
dirCacheQuestions: "datas/questionnaires/questions",
|
|||
|
dirCacheUsersQuestionnaires: "datas/users/questionnaires",
|
|||
|
dirCacheTags: "datas/questionnaires/tags",
|
|||
|
dirHTMLQuestionnaire: "front/public/quiz",
|
|||
|
dirHTMLTags: "front/public/quizs",
|
|||
|
dirWebQuestionnaire: "quiz",
|
|||
|
//pour url page
|
|||
|
dirWebTags: "quizs/",
|
|||
|
// idem
|
|||
|
nbRandomResults: 3 // limite les résultat du moteur de recherche quand demande de résultats au hasard
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ "../config/users.js":
|
|||
|
/*!**************************!*\
|
|||
|
!*** ../config/users.js ***!
|
|||
|
\**************************/
|
|||
|
/*! no static exports found */
|
|||
|
/***/ (function(module, exports) {
|
|||
|
|
|||
|
module.exports = {
|
|||
|
// API'routes (after "apiUrl" defined in instance.js)
|
|||
|
userRoutes: "/user",
|
|||
|
checkDeleteLinkRoute: "/confirmdelete/",
|
|||
|
checkIfIsEmailfreeRoute: "/isemailfree",
|
|||
|
checkLoginRoute: "/checklogin/",
|
|||
|
checkNewLoginLinkRoute: "/confirmnewlogin/",
|
|||
|
checkSubscribeTokenRoute: "/validation/",
|
|||
|
connectionRoute: "/login",
|
|||
|
connectionWithLinkRoute: "/checkloginlink",
|
|||
|
createUserRoute: "/create",
|
|||
|
getAdminStats: "/getadminstats/",
|
|||
|
getGodChilds: "/getgodchilds/",
|
|||
|
getGodfatherRoute: "/getgodfatherid",
|
|||
|
getLoginLinkRoute: "/getloginlink",
|
|||
|
getPayments: "/payment/getforoneuser/",
|
|||
|
getUserInfos: "/get/",
|
|||
|
searchUserRoute: "/search/",
|
|||
|
subscribeRoute: "/signup",
|
|||
|
unsubscribeRoute: "/subscription/stop/",
|
|||
|
updateUserInfos: "/modify/",
|
|||
|
validateUserRoute: "/validate/",
|
|||
|
// forms : à compléter avec valeurs par défaut, etc. cf modèle
|
|||
|
name: {
|
|||
|
maxlength: 70,
|
|||
|
required: true
|
|||
|
},
|
|||
|
email: {
|
|||
|
maxlength: 255,
|
|||
|
required: true
|
|||
|
},
|
|||
|
password: {
|
|||
|
minlength: 8,
|
|||
|
maxlength: 72,
|
|||
|
required: true
|
|||
|
},
|
|||
|
// https://www.npmjs.com/package/bcrypt#security-issues-and-concerns
|
|||
|
newPassword: {
|
|||
|
minlength: 8,
|
|||
|
maxlength: 72
|
|||
|
},
|
|||
|
codeGodfather: {
|
|||
|
maxlength: 255
|
|||
|
},
|
|||
|
cguOk: {
|
|||
|
value: "true",
|
|||
|
required: true
|
|||
|
},
|
|||
|
search: {
|
|||
|
minlength: 1,
|
|||
|
required: true
|
|||
|
},
|
|||
|
timeDifferenceMin: -720,
|
|||
|
timeDifferenceMax: 840,
|
|||
|
// JSON dir
|
|||
|
dirCacheUsers: "datas/users",
|
|||
|
dirCacheUsersAnswers: "datas/users/questionnaires/answers",
|
|||
|
dirCacheUsersWithoutAnswers: "datas/users/questionnaires/without"
|
|||
|
};
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ "../tools/main.js":
|
|||
|
/*!************************!*\
|
|||
|
!*** ../tools/main.js ***!
|
|||
|
\************************/
|
|||
|
/*! no static exports found */
|
|||
|
/***/ (function(module, exports) {
|
|||
|
|
|||
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|||
|
|
|||
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|||
|
|
|||
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|||
|
|
|||
|
// Quelques fonctions utiles pour les chaînes
|
|||
|
var Tool = /*#__PURE__*/function () {
|
|||
|
function Tool() {
|
|||
|
_classCallCheck(this, Tool);
|
|||
|
}
|
|||
|
|
|||
|
_createClass(Tool, null, [{
|
|||
|
key: "isEmpty",
|
|||
|
value: function isEmpty(myVar) {
|
|||
|
if (myVar === undefined || myVar === null) return true;else {
|
|||
|
myVar += ""; // si autre chose qu'une chaîne envoyé...
|
|||
|
|
|||
|
myVar = myVar.trim();
|
|||
|
if (myVar === "") return true;else return false;
|
|||
|
}
|
|||
|
}
|
|||
|
}, {
|
|||
|
key: "trimIfNotNull",
|
|||
|
value: function trimIfNotNull(myString) {
|
|||
|
if (Tool.isEmpty(myString)) myString = null;else {
|
|||
|
myString += ""; // si autre chose qu'une chaîne envoyé...
|
|||
|
|
|||
|
myString = myString.trim();
|
|||
|
}
|
|||
|
return myString;
|
|||
|
}
|
|||
|
}, {
|
|||
|
key: "shortenIfLongerThan",
|
|||
|
value: function shortenIfLongerThan(myString, max) {
|
|||
|
myString += ""; // au cas où cela ne serait pas une chaîne...
|
|||
|
|
|||
|
if (myString.length > max) myString = myString.substring(0, max - 3) + "...";
|
|||
|
return myString;
|
|||
|
} // source : https://stackoverflow.com/questions/15604140/replace-multiple-strings-with-multiple-other-strings
|
|||
|
|
|||
|
}, {
|
|||
|
key: "replaceAll",
|
|||
|
value: function replaceAll(myString, mapObj) {
|
|||
|
var replaceElts = new RegExp(Object.keys(mapObj).join("|"), "gi");
|
|||
|
return myString.replace(replaceElts, function (matched) {
|
|||
|
return mapObj[matched];
|
|||
|
});
|
|||
|
} // source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random
|
|||
|
|
|||
|
}, {
|
|||
|
key: "getRandomInt",
|
|||
|
value: function getRandomInt(min, max) {
|
|||
|
min = Math.ceil(min);
|
|||
|
max = Math.floor(max);
|
|||
|
return Math.floor(Math.random() * (max - min)) + min;
|
|||
|
} // à compléter : https://en.wikipedia.org/wiki/Date_format_by_country
|
|||
|
|
|||
|
}, {
|
|||
|
key: "dateFormat",
|
|||
|
value: function dateFormat(dateString) {
|
|||
|
var lang = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "fr";
|
|||
|
if (Tool.isEmpty(dateString)) return "";
|
|||
|
var myDate = new Date(dateString);
|
|||
|
var myDay = myDate.getDate() + "";
|
|||
|
if (myDay.length === 1) myDay = "0" + myDay;
|
|||
|
var myMounth = myDate.getMonth() + 1 + "";
|
|||
|
if (myMounth.length === 1) myMounth = "0" + myMounth;
|
|||
|
var myYear = myDate.getFullYear();
|
|||
|
if (lang === "fr") return myDay + "/" + myMounth + "/" + myYear;else if (lang === "form") // 2014-02-09
|
|||
|
return myYear + "-" + myMounth + "-" + myDay;else return myMounth + "/" + myDay + "/" + myYear;
|
|||
|
}
|
|||
|
}]);
|
|||
|
|
|||
|
return Tool;
|
|||
|
}();
|
|||
|
|
|||
|
module.exports = Tool;
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ "../views sync recursive ^\\.\\/.*\\.js$":
|
|||
|
/*!**********************************!*\
|
|||
|
!*** ../views sync ^\.\/.*\.js$ ***!
|
|||
|
\**********************************/
|
|||
|
/*! no static exports found */
|
|||
|
/***/ (function(module, exports, __webpack_require__) {
|
|||
|
|
|||
|
var map = {
|
|||
|
"./default/config/fr.js": "../views/default/config/fr.js",
|
|||
|
"./wikilerni/config/fr.js": "../views/wikilerni/config/fr.js"
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
function webpackContext(req) {
|
|||
|
var id = webpackContextResolve(req);
|
|||
|
return __webpack_require__(id);
|
|||
|
}
|
|||
|
function webpackContextResolve(req) {
|
|||
|
if(!__webpack_require__.o(map, req)) {
|
|||
|
var e = new Error("Cannot find module '" + req + "'");
|
|||
|
e.code = 'MODULE_NOT_FOUND';
|
|||
|
throw e;
|
|||
|
}
|
|||
|
return map[req];
|
|||
|
}
|
|||
|
webpackContext.keys = function webpackContextKeys() {
|
|||
|
return Object.keys(map);
|
|||
|
};
|
|||
|
webpackContext.resolve = webpackContextResolve;
|
|||
|
module.exports = webpackContext;
|
|||
|
webpackContext.id = "../views sync recursive ^\\.\\/.*\\.js$";
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ "../views/default/config/fr.js":
|
|||
|
/*!*************************************!*\
|
|||
|
!*** ../views/default/config/fr.js ***!
|
|||
|
\*************************************/
|
|||
|
/*! no static exports found */
|
|||
|
/***/ (function(module, exports) {
|
|||
|
|
|||
|
module.exports = {
|
|||
|
headLinks: [{
|
|||
|
anchor: "Accueil",
|
|||
|
attributes: {
|
|||
|
href: "/"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "Mon compte",
|
|||
|
attributes: {
|
|||
|
href: "/connexion.html",
|
|||
|
id: "accountHeadLink"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "À propos",
|
|||
|
attributes: {
|
|||
|
href: "/a-propos.html"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "Contact",
|
|||
|
attributes: {
|
|||
|
href: "/contact.html"
|
|||
|
}
|
|||
|
}],
|
|||
|
footLinks: [{
|
|||
|
anchor: "Crédits",
|
|||
|
attributes: {
|
|||
|
href: "/credits.html"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "Mentions légales",
|
|||
|
attributes: {
|
|||
|
href: "/mentions-legales.html",
|
|||
|
rel: "nofollow"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "Données personnelles",
|
|||
|
attributes: {
|
|||
|
href: "/donnees.html"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "C.G.U.",
|
|||
|
attributes: {
|
|||
|
href: "/cgu.html",
|
|||
|
rel: "nofollow"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "C.G.V.",
|
|||
|
attributes: {
|
|||
|
href: "/cgv.html",
|
|||
|
rel: "nofollow"
|
|||
|
}
|
|||
|
}],
|
|||
|
maxQuestionnairesByPage: 10,
|
|||
|
userHomePage: "accueil.html",
|
|||
|
adminHomePage: "admin.html",
|
|||
|
managerHomePage: "gestion.html",
|
|||
|
subscribePage: "inscription.html",
|
|||
|
connectionPage: "connexion.html",
|
|||
|
accountPage: "compte.html",
|
|||
|
questionnairesManagementPage: "gestion-quizs.html",
|
|||
|
usersManagementPage: "gestion-utilisateurs.html",
|
|||
|
nbQuestionnairesUserHomePage: 10,
|
|||
|
illustrationDir: "/img/quizs/",
|
|||
|
siteSlogan: "Cultivons notre jardin !",
|
|||
|
homeTitle1: "De nature curieuse ?",
|
|||
|
homeP1: "Avec WikiLerni vous apprenez chaque jour de nouvelles choses.<br>Des articles de Wikipédia sont sélectionnés pour vous et sont suivis d'un quiz vous permettant de tester ce que vous en avez retenu.<br>De jour en jour de nouvelles graines de savoir sont ainsi semées dans votre \"jardin\".",
|
|||
|
homeTitle2: "La culture en liberté",
|
|||
|
homeP2: "Tout comme sur Wikipédia (*), le logiciel et le contenu partagé sur WikiLerni sont libres.<br>Vous pouvez les utiliser, les modifier et les diffuser selon votre souhait.<br>Sur WikiLerni, pas de publicité, ni de commercialisation de vos données personnelles.<br>Vous pouvez venir y \"cultiver votre jardin\" en toute tranquillité.<br><br><small><em>(*) Bien que partageant ses valeurs, WikiLerni est un projet indépendant de la fondation Wikipédia.</em></small>",
|
|||
|
newQuestionnairesTitle: "Les derniers quizs publiés sur WikiLerni",
|
|||
|
newQuestionnairesIntro: "Liste des derniers quizs publiés sur WikiLerni.",
|
|||
|
explanationTitle: "Vous découvrez WikiLerni ?",
|
|||
|
explanationTxt: "Le principe est simple : vous commencez par lire l'article Wikipédia dont le lien vous est proposé.<br>Puis vous afficher le quiz pour vérifier ce que vous en avez retenu de votre lecture. Vous obtenez alors votre résultat immédiatement.<br><br>Toutes les réponses se trouvent dans l'article proposé à la lecture. <b>Vous êtes ici pour apprendre de nouvelles choses</b>, mais libre à vous d'essayer d'y répondre immédiatement.<br><br>Quand le sujet s'y prête, ne vous étonnez pas si certaines des réponses proposées peuvent être un peu décalées, absurdes... On peut apprendre avec le sourire, non ? :-)<br><br>Une fois votre résultat obtenu, il vous sera proposé de créer un compte pour le sauvegarder.<br>Ce compte vous permettra de tester de nouveau ce quiz pour vérifier ce que vous en avez retenu plusieurs jours, semaines, mois... Et de recevoir régulièrement de nouvelles suggestions de lectures.<br><br>Mais <b>la création de ce compte est facultative</b> et <a href='/quizs/' title='Les derniers quizs publiés'>vous pouvez parcourir WikiLerni librement</a>.",
|
|||
|
noJSNotification: "Désolé, mais pour l'instant, l'utilisation de WikiLerni nécessite l'activation du JavaScript.",
|
|||
|
tagsListTxt: "Parcourir les rubriques :"
|
|||
|
};
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ "../views/wikilerni/config/fr.js":
|
|||
|
/*!***************************************!*\
|
|||
|
!*** ../views/wikilerni/config/fr.js ***!
|
|||
|
\***************************************/
|
|||
|
/*! no static exports found */
|
|||
|
/***/ (function(module, exports) {
|
|||
|
|
|||
|
module.exports = {
|
|||
|
headLinks: [{
|
|||
|
anchor: "Contact",
|
|||
|
attributes: {
|
|||
|
href: "/contact.html",
|
|||
|
rel: "nofollow"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "Parcourir",
|
|||
|
attributes: {
|
|||
|
href: "/quizs/",
|
|||
|
id: "indexHeadLink",
|
|||
|
title: "Les dernières mises à jour WikiLerni"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "Mon compte",
|
|||
|
attributes: {
|
|||
|
href: "/connexion.html",
|
|||
|
id: "accountHeadLink",
|
|||
|
title: "Accéder ou créez votre compte WikiLerni"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "À propos",
|
|||
|
attributes: {
|
|||
|
href: "/a-propos.html",
|
|||
|
title: "En savoir + sur WikiLerni"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "Accueil",
|
|||
|
attributes: {
|
|||
|
href: "/",
|
|||
|
title: "Page d'accueil"
|
|||
|
}
|
|||
|
}],
|
|||
|
footLinks: [{
|
|||
|
anchor: "Blog",
|
|||
|
attributes: {
|
|||
|
href: "https://framasphere.org/people/7e54b7a0b53201389eef2a0000053625",
|
|||
|
title: "Le blog WikiLerni sur diaspora*"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "Crédits",
|
|||
|
attributes: {
|
|||
|
href: "/credits.html",
|
|||
|
title: "Qui a créé WikiLerni ? Quels sont vos droits ?"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "Mentions légales",
|
|||
|
attributes: {
|
|||
|
href: "/mentions-legales.html",
|
|||
|
rel: "nofollow"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "Données personnelles",
|
|||
|
attributes: {
|
|||
|
href: "/donnees.html",
|
|||
|
title: "Vos données personnelles sur WikiLerni"
|
|||
|
}
|
|||
|
}, {
|
|||
|
anchor: "CGV & CGU",
|
|||
|
attributes: {
|
|||
|
href: "/CGV-CGU.html",
|
|||
|
rel: "nofollow"
|
|||
|
}
|
|||
|
}],
|
|||
|
maxQuestionnairesSiteHomePage: 3,
|
|||
|
maxQuestionnairesByPage: 12,
|
|||
|
nbQuestionnairesUserHomePage: 3,
|
|||
|
userHomePage: "accueil.html",
|
|||
|
userHomePageTxt: "Ma page d'accueil.",
|
|||
|
adminHomePage: "admin.html",
|
|||
|
managerHomePage: "gestion.html",
|
|||
|
subscribePage: "inscription.html",
|
|||
|
connectionPage: "connexion.html",
|
|||
|
validationLinkPage: "validation.html?t=",
|
|||
|
loginLinkPage: "login.html?t=",
|
|||
|
newLoginLinkPage: "newlogin.html?t=",
|
|||
|
deleteLinkPage: "aurevoir.html?t=",
|
|||
|
stopMailPage: "stop-mail.html?t=",
|
|||
|
accountPage: "compte.html",
|
|||
|
updateAccountPage: "compte.html",
|
|||
|
questionnairesManagementPage: "gestion-quizs.html",
|
|||
|
usersManagementPage: "gestion-utilisateurs.html",
|
|||
|
aboutPage: "a-propos.html",
|
|||
|
illustrationDir: "/img/quizs/",
|
|||
|
siteSlogan: "Cultivons notre jardin !",
|
|||
|
homePageTxt: "Page d'accueil",
|
|||
|
homeTitle1: "De nature curieuse ?",
|
|||
|
homeP1: "Avec WikiLerni, vous apprenez chaque jour de nouvelles choses.<br>Des articles de Wikipédia sont sélectionnés pour vous et sont suivis d'un quiz vous permettant de tester ce que vous en avez retenu.<br>De jour en jour de nouvelles graines de savoir sont ainsi semées dans votre \"jardin\".",
|
|||
|
homeTitle2: "La culture en liberté",
|
|||
|
homeP2: "Tout comme sur Wikipédia <span class='postscriptum'>(*)</span>, le logiciel et le contenu partagé sur WikiLerni <a href=\"/credits.html\" title=\"En savoir plus\">sont libres</a>.<br>Sur WikiLerni, pas de publicité, ni de commercialisation de vos données.<br>Vous pouvez venir y \"cultiver votre jardin\" en toute tranquillité.",
|
|||
|
homeBtnAboutTxt: "En savoir plus sur WikiLerni ?",
|
|||
|
homeBtnSubscribeTxt: "Tester WikiLerni gratuitement.",
|
|||
|
newQuestionnairesTitle: "Culture générale - apprenez de nouvelles choses avec WikiLerni",
|
|||
|
newQuestionnairesIntro: "WikiLerni : testez vos connaissances et apprenez de nouvelles choses avec les quizs WikiLerni.",
|
|||
|
explanationTitle: "Vous découvrez WikiLerni ?",
|
|||
|
explanationTxt: "<p>Le principe est simple : <b>vous commencez par lire l'article Wikipédia dont le lien vous est proposé</b>.<br>Puis vous <b>afficher le quiz pour vérifier ce que vous avez retenu de votre lecture</b>.</p><p>Suivant les questions, <b>une ou plusieurs réponses peuvent être correctes</b> et doivent donc être cochées.<br>C'est toujours <b>le contenu de l'article Wikipédia qui fait foi</b> concernant les \"bonnes\" réponses.<br>Mais les articles de Wikipédia peuvent évoluer, donc n'hésitez pas <a href='/contact.html'>à me signaler une erreur</a>.</p><h3>Pas le temps de lire l'article Wikipédia ?</h3><p>Il est vrai que certains sont longs ! :-)<br>Dans ce cas, <b>essayez simplement de répondre avec vos connaissances actuelles</b>.<br>Il n'est pas nécessaire de répondre à toutes les questions pour obtenir les réponses.<br>Après validation, vous verrez apparaître les bonnes réponses + un extrait de l'article Wikipédia.<br>Vous pouvez ainsi <b>apprendre de nouvelles choses en quelques minutes</b>.</p><p>Une autre possibilité est d'afficher le quiz avant d'aller chercher les réponses dans l'article Wikipédia... Elles y sont toutes !</p><p><b>Il n'y a pas de bonne façon de faire</b>, et dans tous les cas <b>vous apprenez des choses sur des sujets très variés, ce qui est le but de WikiLerni</b>.</p><p>Quand le sujet s'y prête, ne vous étonnez pas si certaines des réponses proposées peuvent être un peu décalées, absurdes... On peut apprendre avec le sourire, non ? :)</p><p>Une fois votre résultat obtenu, il vous sera proposé de créer un compte pour le sauvegarder. Ce compte vous permettra de <b>tester de nouveau ce quiz</b> pour vérifier ce que vous en avez retenu après plusieurs jours, semaines, mois... Grâce à ce compte, vous pourrez aussi <b>recevoir régulièrement de nouveaux quizs</b> pour continuer à \"cultiver votre jardin\".</p>",
|
|||
|
questionnaireLicenceTxt: "Ce quiz <a href=\"/credits.html\">est libre</a>, mais il n'est pas gratuit. Vous pouvez <a href=\"/participer-financement.html\">participer à son financement en cliquant ici</a>.",
|
|||
|
noJSNotification: "Désolé, mais pour l'instant, l'utilisation de WikiLerni nécessite l'activation du JavaScript.",
|
|||
|
newsListTitle: "<h3>1 article Wikipédia + 1 quiz = 1 WikiLerni</h3><p>WikiLerni, ce sont plusieurs quizs publiés chaque semaine, chacun associé à un article Wikipédia.<br>Sans publicité, ni commerce de vos données, <b>vous apprenez de nouvelles choses en toute liberté</b>.</p><blockquote>Aristote : « L’homme a naturellement la passion de connaître… »</blockquote>",
|
|||
|
mailRecipientTxt: "Message envoyé à :",
|
|||
|
twitterAccount: "@WikiLerni"
|
|||
|
};
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ "./src/paymentPage.js":
|
|||
|
/*!****************************!*\
|
|||
|
!*** ./src/paymentPage.js ***!
|
|||
|
\****************************/
|
|||
|
/*! no exports provided */
|
|||
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|||
|
|
|||
|
"use strict";
|
|||
|
__webpack_require__.r(__webpack_exports__);
|
|||
|
/* harmony import */ var _config_instance_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config/instance.js */ "../config/instance.js");
|
|||
|
/* harmony import */ var _config_instance_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_config_instance_js__WEBPACK_IMPORTED_MODULE_0__);
|
|||
|
/* harmony import */ var _tools_clientstorage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tools/clientstorage.js */ "./src/tools/clientstorage.js");
|
|||
|
/* harmony import */ var _tools_everywhere_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tools/everywhere.js */ "./src/tools/everywhere.js");
|
|||
|
/* harmony import */ var _tools_matomo_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tools/matomo.js */ "./src/tools/matomo.js");
|
|||
|
/* harmony import */ var _tools_users_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tools/users.js */ "./src/tools/users.js");
|
|||
|
/* harmony import */ var _tools_webportage_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./tools/webportage.js */ "./src/tools/webportage.js");
|
|||
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|||
|
|
|||
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|||
|
|
|||
|
// -- GESTION DE LA PAGE DU FINANCEMENT PARTICIPATIF (SANS DEVOIR ÊTRE CONNECTÉ)
|
|||
|
/// Permet d'afficher les boutons de paiement WP suivant le choix de l'utilisateur.
|
|||
|
/// Matomo est également activité son internaute non connecté.
|
|||
|
// Fichier de configuration tirés du backend :
|
|||
|
|
|||
|
var lang = _config_instance_js__WEBPACK_IMPORTED_MODULE_0__["availableLangs"][0];
|
|||
|
|
|||
|
var configTemplate = __webpack_require__("../views sync recursive ^\\.\\/.*\\.js$")("./" + _config_instance_js__WEBPACK_IMPORTED_MODULE_0__["theme"] + "/config/" + lang + ".js"); // Fonctions utiles au script :
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Object(_tools_everywhere_js__WEBPACK_IMPORTED_MODULE_2__["helloDev"])();
|
|||
|
|
|||
|
var initialise = /*#__PURE__*/function () {
|
|||
|
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
|
|||
|
var isConnected, user, CGV, abo9, abo18, abo36, abo54, divWPBtns;
|
|||
|
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|||
|
while (1) {
|
|||
|
switch (_context.prev = _context.next) {
|
|||
|
case 0:
|
|||
|
_context.prev = 0;
|
|||
|
_context.next = 3;
|
|||
|
return Object(_tools_users_js__WEBPACK_IMPORTED_MODULE_4__["checkSession"])();
|
|||
|
|
|||
|
case 3:
|
|||
|
isConnected = _context.sent;
|
|||
|
|
|||
|
if (isConnected) {
|
|||
|
// on change le lien du compte en haut :
|
|||
|
user = Object(_tools_clientstorage_js__WEBPACK_IMPORTED_MODULE_1__["getLocaly"])("user", true);
|
|||
|
Object(_tools_everywhere_js__WEBPACK_IMPORTED_MODULE_2__["updateAccountLink"])(user.status, configTemplate);
|
|||
|
} else Object(_tools_matomo_js__WEBPACK_IMPORTED_MODULE_3__["loadMatomo"])(); // Les boutons de paiement WP :
|
|||
|
|
|||
|
|
|||
|
CGV = document.getElementById("CGVOk");
|
|||
|
abo9 = document.getElementById("abo9");
|
|||
|
abo18 = document.getElementById("abo18");
|
|||
|
abo36 = document.getElementById("abo36");
|
|||
|
abo54 = document.getElementById("abo54");
|
|||
|
divWPBtns = document.getElementById("WPBtns");
|
|||
|
divWPBtns.style.display = "none";
|
|||
|
abo9.addEventListener("change", function (e) {
|
|||
|
Object(_tools_webportage_js__WEBPACK_IMPORTED_MODULE_5__["unCheckAllOthers"])("abo9");
|
|||
|
});
|
|||
|
abo18.addEventListener("change", function (e) {
|
|||
|
Object(_tools_webportage_js__WEBPACK_IMPORTED_MODULE_5__["unCheckAllOthers"])("abo18");
|
|||
|
});
|
|||
|
abo36.addEventListener("change", function (e) {
|
|||
|
Object(_tools_webportage_js__WEBPACK_IMPORTED_MODULE_5__["unCheckAllOthers"])("abo36");
|
|||
|
});
|
|||
|
abo54.addEventListener("change", function (e) {
|
|||
|
Object(_tools_webportage_js__WEBPACK_IMPORTED_MODULE_5__["unCheckAllOthers"])("abo54");
|
|||
|
});
|
|||
|
CGV.addEventListener("change", function (e) {
|
|||
|
if (CGV.checked === true) {
|
|||
|
divWPBtns.style.display = "block";
|
|||
|
if (abo9.checked === true) Object(_tools_webportage_js__WEBPACK_IMPORTED_MODULE_5__["showBtnPayment"])("btn9");else if (abo18.checked === true) Object(_tools_webportage_js__WEBPACK_IMPORTED_MODULE_5__["showBtnPayment"])("btn18");else if (abo36.checked === true) Object(_tools_webportage_js__WEBPACK_IMPORTED_MODULE_5__["showBtnPayment"])("btn36");else if (abo54.checked === true) Object(_tools_webportage_js__WEBPACK_IMPORTED_MODULE_5__["showBtnPayment"])("btn54");else {
|
|||
|
divWPBtns.style.display = "none";
|
|||
|
CGV.checked = false;
|
|||
|
}
|
|||
|
} else divWPBtns.style.display = "none";
|
|||
|
});
|
|||
|
_context.next = 22;
|
|||
|
break;
|
|||
|
|
|||
|
case 19:
|
|||
|
_context.prev = 19;
|
|||
|
_context.t0 = _context["catch"](0);
|
|||
|
console.error(_context.t0);
|
|||
|
|
|||
|
case 22:
|
|||
|
case "end":
|
|||
|
return _context.stop();
|
|||
|
}
|
|||
|
}
|
|||
|
}, _callee, null, [[0, 19]]);
|
|||
|
}));
|
|||
|
|
|||
|
return function initialise() {
|
|||
|
return _ref.apply(this, arguments);
|
|||
|
};
|
|||
|
}();
|
|||
|
|
|||
|
initialise();
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ "./src/tools/clientstorage.js":
|
|||
|
/*!************************************!*\
|
|||
|
!*** ./src/tools/clientstorage.js ***!
|
|||
|
\************************************/
|
|||
|
/*! exports provided: saveLocaly, getLocaly, removeLocaly */
|
|||
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|||
|
|
|||
|
"use strict";
|
|||
|
__webpack_require__.r(__webpack_exports__);
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "saveLocaly", function() { return saveLocaly; });
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getLocaly", function() { return getLocaly; });
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeLocaly", function() { return removeLocaly; });
|
|||
|
// FONCTIONS UTILES AU STOCKAGE LOCAL (SESSION, COOKIES, INDEXDB, ETC.)
|
|||
|
// Revenir pour gérer le cas où local.storage n'est pas connu pour utiliser cookie
|
|||
|
var saveLocaly = function saveLocaly(name, data) {
|
|||
|
localStorage.setItem(name, JSON.stringify(data));
|
|||
|
};
|
|||
|
var getLocaly = function getLocaly(name) {
|
|||
|
var json = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|||
|
if (json) return JSON.parse(localStorage.getItem(name));else return localStorage.getItem(name);
|
|||
|
};
|
|||
|
var removeLocaly = function removeLocaly(name) {
|
|||
|
localStorage.removeItem(name);
|
|||
|
};
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ "./src/tools/everywhere.js":
|
|||
|
/*!*********************************!*\
|
|||
|
!*** ./src/tools/everywhere.js ***!
|
|||
|
\*********************************/
|
|||
|
/*! exports provided: helloDev, updateAccountLink */
|
|||
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|||
|
|
|||
|
"use strict";
|
|||
|
__webpack_require__.r(__webpack_exports__);
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "helloDev", function() { return helloDev; });
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateAccountLink", function() { return updateAccountLink; });
|
|||
|
// Ce script fournit des fonctions utilisées sur toutes les pages du site
|
|||
|
var helloDev = function helloDev() {
|
|||
|
console.log("**** Hello ami développeur :-)\n\nLe code de WikiLerni est libre et vous pouvez le trouver si Gitlab :\nhttps://gitlab.com/lefablab/wikilerni\n\nPour les suggestions d'amélioration ou questions : dev@wililerni.com ****");
|
|||
|
return true;
|
|||
|
};
|
|||
|
var updateAccountLink = function updateAccountLink(status, configTemplate) {
|
|||
|
var link = document.getElementById("accountHeadLink");
|
|||
|
var homePage = status + "HomePage";
|
|||
|
link.href = "/" + configTemplate[homePage];
|
|||
|
};
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ "./src/tools/matomo.js":
|
|||
|
/*!*****************************!*\
|
|||
|
!*** ./src/tools/matomo.js ***!
|
|||
|
\*****************************/
|
|||
|
/*! exports provided: loadMatomo */
|
|||
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|||
|
|
|||
|
"use strict";
|
|||
|
__webpack_require__.r(__webpack_exports__);
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadMatomo", function() { return loadMatomo; });
|
|||
|
/* harmony import */ var _config_matomo_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../config/matomo.js */ "../config/matomo.js");
|
|||
|
/* harmony import */ var _config_matomo_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_config_matomo_js__WEBPACK_IMPORTED_MODULE_0__);
|
|||
|
// Fonction chargeant le code matomo
|
|||
|
|
|||
|
var loadMatomo = function loadMatomo() {
|
|||
|
// chargement de matomo
|
|||
|
var _paq = window._paq = window._paq || []; //ajout cnil :
|
|||
|
|
|||
|
|
|||
|
_paq.push([function () {
|
|||
|
var self = this;
|
|||
|
|
|||
|
function getOriginalVisitorCookieTimeout() {
|
|||
|
var now = new Date(),
|
|||
|
nowTs = Math.round(now.getTime() / 1000),
|
|||
|
visitorInfo = self.getVisitorInfo();
|
|||
|
var createTs = parseInt(visitorInfo[2]);
|
|||
|
var cookieTimeout = 33696000; // 13 mois en secondes
|
|||
|
|
|||
|
var originalTimeout = createTs + cookieTimeout - nowTs;
|
|||
|
return originalTimeout;
|
|||
|
}
|
|||
|
|
|||
|
this.setVisitorCookieTimeout(getOriginalVisitorCookieTimeout());
|
|||
|
}]); //--fin ajout cnil
|
|||
|
|
|||
|
|
|||
|
_paq.push(['trackPageView']);
|
|||
|
|
|||
|
_paq.push(['enableLinkTracking']);
|
|||
|
|
|||
|
(function () {
|
|||
|
var u = _config_matomo_js__WEBPACK_IMPORTED_MODULE_0__["matomo"].url;
|
|||
|
|
|||
|
_paq.push(['setTrackerUrl', u + 'matomo.php']);
|
|||
|
|
|||
|
_paq.push(['setSiteId', _config_matomo_js__WEBPACK_IMPORTED_MODULE_0__["matomo"].siteId]);
|
|||
|
|
|||
|
var d = document,
|
|||
|
g = d.createElement('script'),
|
|||
|
s = d.getElementsByTagName('script')[0];
|
|||
|
g.type = 'text/javascript';
|
|||
|
g.async = true;
|
|||
|
g.src = u + 'matomo.js';
|
|||
|
s.parentNode.insertBefore(g, s);
|
|||
|
})();
|
|||
|
};
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ "./src/tools/users.js":
|
|||
|
/*!****************************!*\
|
|||
|
!*** ./src/tools/users.js ***!
|
|||
|
\****************************/
|
|||
|
/*! exports provided: getConfig, getTimeDifference, getPassword, setSession, checkAnswerDatas, checkSession */
|
|||
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|||
|
|
|||
|
"use strict";
|
|||
|
__webpack_require__.r(__webpack_exports__);
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getConfig", function() { return getConfig; });
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTimeDifference", function() { return getTimeDifference; });
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPassword", function() { return getPassword; });
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSession", function() { return setSession; });
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "checkAnswerDatas", function() { return checkAnswerDatas; });
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "checkSession", function() { return checkSession; });
|
|||
|
/* harmony import */ var _config_instance_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../config/instance.js */ "../config/instance.js");
|
|||
|
/* harmony import */ var _config_instance_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_config_instance_js__WEBPACK_IMPORTED_MODULE_0__);
|
|||
|
/* harmony import */ var _config_users_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../config/users.js */ "../config/users.js");
|
|||
|
/* harmony import */ var _config_users_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_config_users_js__WEBPACK_IMPORTED_MODULE_1__);
|
|||
|
/* harmony import */ var _clientstorage_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./clientstorage.js */ "./src/tools/clientstorage.js");
|
|||
|
/* harmony import */ var _tools_main__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../tools/main */ "../tools/main.js");
|
|||
|
/* harmony import */ var _tools_main__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_tools_main__WEBPACK_IMPORTED_MODULE_3__);
|
|||
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|||
|
|
|||
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|||
|
|
|||
|
|
|||
|
var lang = _config_instance_js__WEBPACK_IMPORTED_MODULE_0__["availableLangs"][0];
|
|||
|
|
|||
|
var configTemplate = __webpack_require__("../views sync recursive ^\\.\\/.*\\.js$")("./" + _config_instance_js__WEBPACK_IMPORTED_MODULE_0__["theme"] + "/config/" + lang + ".js");
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// Récupère les données de configuration des utilisateurs
|
|||
|
// À terme, un fichier statique importable comme module devrait éviter une requête ajax
|
|||
|
|
|||
|
var getConfig = /*#__PURE__*/function () {
|
|||
|
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
|
|||
|
return regeneratorRuntime.wrap(function _callee$(_context) {
|
|||
|
while (1) {
|
|||
|
switch (_context.prev = _context.next) {
|
|||
|
case 0:
|
|||
|
return _context.abrupt("return", new Promise(function (resolve, reject) {
|
|||
|
var xhr = new XMLHttpRequest();
|
|||
|
xhr.open("GET", _config_instance_js__WEBPACK_IMPORTED_MODULE_0__["apiUrl"] + "/user/getconfig");
|
|||
|
|
|||
|
xhr.onload = function () {
|
|||
|
return resolve(JSON.parse(xhr.responseText));
|
|||
|
};
|
|||
|
|
|||
|
xhr.onerror = function () {
|
|||
|
return reject(xhr.statusText);
|
|||
|
};
|
|||
|
|
|||
|
xhr.send();
|
|||
|
}));
|
|||
|
|
|||
|
case 1:
|
|||
|
case "end":
|
|||
|
return _context.stop();
|
|||
|
}
|
|||
|
}
|
|||
|
}, _callee);
|
|||
|
}));
|
|||
|
|
|||
|
return function getConfig() {
|
|||
|
return _ref.apply(this, arguments);
|
|||
|
};
|
|||
|
}();
|
|||
|
var getTimeDifference = function getTimeDifference() {
|
|||
|
// multiplier par -1, car c'est ce qu'il faut "ajouter" à l'heure UTC pour revenir en heure locale qui m'intéresse et non l'inverse
|
|||
|
var timeLocal = new Date().getTimezoneOffset() * -1;
|
|||
|
if (timeLocal > _config_users_js__WEBPACK_IMPORTED_MODULE_1__["timeDifferenceMax"] || timeLocal < _config_users_js__WEBPACK_IMPORTED_MODULE_1__["timeDifferenceMin"]) return 0;else return timeLocal;
|
|||
|
}; // On enlève volontairement les 0/O pour éviter les confusions !
|
|||
|
// Et mieux vaut aussi débuter et finir par une lettre simple.
|
|||
|
|
|||
|
var getPassword = function getPassword(nbCarMin, nbCarMax) {
|
|||
|
var nbCar = nbCarMin + Math.floor(Math.random() * (nbCarMax - nbCarMin));
|
|||
|
var letters = "ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijklmnpqrstuvwxyz";
|
|||
|
var others = "123456789!?.*-_%@&ÉÀÈÙ€$ÂÊÛÎ";
|
|||
|
var password = letters[Math.floor(Math.random() * letters.length)];
|
|||
|
|
|||
|
for (var i = 1; i < nbCar - 1; i++) {
|
|||
|
if (i % 2 === 1) password += others[Math.floor(Math.random() * others.length)];else password += letters[Math.floor(Math.random() * letters.length)];
|
|||
|
}
|
|||
|
|
|||
|
password += letters[Math.floor(Math.random() * letters.length)];
|
|||
|
return password;
|
|||
|
}; // J'utilise le stockage local du navigateur pour enregistrer les données permettant de reconnaître l'utilisateur par la suite
|
|||
|
// Seul le serveur pourra vérifier que les identifiants sont (toujours) valides.
|
|||
|
|
|||
|
var setSession = function setSession(userId, token, durationTS) {
|
|||
|
var storageUser = {
|
|||
|
id: userId,
|
|||
|
token: token,
|
|||
|
duration: durationTS
|
|||
|
};
|
|||
|
Object(_clientstorage_js__WEBPACK_IMPORTED_MODULE_2__["saveLocaly"])("user", storageUser);
|
|||
|
}; // Vérifie qu'il y a des données locales concernant le résultat d'un quiz
|
|||
|
// Et les ajoute aux données envoyées par les formulaires d'inscription/connexion si c'est le cas
|
|||
|
|
|||
|
var checkAnswerDatas = function checkAnswerDatas(datas) {
|
|||
|
var lastAnswer = Object(_clientstorage_js__WEBPACK_IMPORTED_MODULE_2__["getLocaly"])("lastAnswer");
|
|||
|
|
|||
|
if (!Object(_tools_main__WEBPACK_IMPORTED_MODULE_3__["isEmpty"])(lastAnswer)) {
|
|||
|
var answer = JSON.parse(lastAnswer);
|
|||
|
|
|||
|
if (!Object(_tools_main__WEBPACK_IMPORTED_MODULE_3__["isEmpty"])(answer.duration) && !Object(_tools_main__WEBPACK_IMPORTED_MODULE_3__["isEmpty"])(answer.nbCorrectAnswers) && !Object(_tools_main__WEBPACK_IMPORTED_MODULE_3__["isEmpty"])(answer.QuestionnaireId) && !Object(_tools_main__WEBPACK_IMPORTED_MODULE_3__["isEmpty"])(answer.nbQuestions)) {
|
|||
|
datas.duration = answer.duration;
|
|||
|
datas.nbCorrectAnswers = answer.nbCorrectAnswers;
|
|||
|
datas.QuestionnaireId = answer.QuestionnaireId;
|
|||
|
datas.nbQuestions = answer.nbQuestions;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return datas;
|
|||
|
}; // Cette fonction teste la connexion de l'utilisateur d'une page
|
|||
|
// On peut fournis une liste de statuts acceptés (si vide = tous), ainsi qu'une url de redirection si non connecté, un message d'erreur à afficher sur la page de destination et l'url sur laquelle revenir une fois connecté
|
|||
|
|
|||
|
var checkSession = /*#__PURE__*/function () {
|
|||
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
|
|||
|
var status,
|
|||
|
urlRedirection,
|
|||
|
message,
|
|||
|
urlWanted,
|
|||
|
_args2 = arguments;
|
|||
|
return regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|||
|
while (1) {
|
|||
|
switch (_context2.prev = _context2.next) {
|
|||
|
case 0:
|
|||
|
status = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : [];
|
|||
|
urlRedirection = _args2.length > 1 ? _args2[1] : undefined;
|
|||
|
message = _args2.length > 2 ? _args2[2] : undefined;
|
|||
|
urlWanted = _args2.length > 3 ? _args2[3] : undefined;
|
|||
|
return _context2.abrupt("return", new Promise(function (resolve, reject) {
|
|||
|
var userDatas = Object(_clientstorage_js__WEBPACK_IMPORTED_MODULE_2__["getLocaly"])("user");
|
|||
|
|
|||
|
if (Object(_tools_main__WEBPACK_IMPORTED_MODULE_3__["isEmpty"])(userDatas)) {
|
|||
|
redirectUser(urlRedirection, message, urlWanted);
|
|||
|
resolve(false);
|
|||
|
} else {
|
|||
|
var user = JSON.parse(userDatas);
|
|||
|
|
|||
|
if (Object(_tools_main__WEBPACK_IMPORTED_MODULE_3__["isEmpty"])(user.id) || Object(_tools_main__WEBPACK_IMPORTED_MODULE_3__["isEmpty"])(user.token) || Object(_tools_main__WEBPACK_IMPORTED_MODULE_3__["isEmpty"])(user.duration) || user.duration < Date.now()) {
|
|||
|
Object(_clientstorage_js__WEBPACK_IMPORTED_MODULE_2__["removeLocaly"])("user");
|
|||
|
redirectUser(urlRedirection, message, urlWanted);
|
|||
|
resolve(false);
|
|||
|
} else {
|
|||
|
var xhr = new XMLHttpRequest();
|
|||
|
xhr.open("GET", _config_instance_js__WEBPACK_IMPORTED_MODULE_0__["apiUrl"] + _config_users_js__WEBPACK_IMPORTED_MODULE_1__["userRoutes"] + _config_users_js__WEBPACK_IMPORTED_MODULE_1__["checkLoginRoute"] + user.token);
|
|||
|
|
|||
|
xhr.onload = function () {
|
|||
|
var response = JSON.parse(xhr.responseText);
|
|||
|
|
|||
|
if (xhr.status === 200 && response.isValid && response.id != undefined) {
|
|||
|
if (response.id === user.id) {
|
|||
|
user.name = response.name;
|
|||
|
user.language = response.language;
|
|||
|
user.timeDifference = response.timeDifference;
|
|||
|
user.status = response.status; // c'est le token qui sert à vérifier le statut à chaque requête à l'API
|
|||
|
|
|||
|
Object(_clientstorage_js__WEBPACK_IMPORTED_MODULE_2__["saveLocaly"])("user", user); // si il s'agit d'un "user" et que son abonnement a expiré, je le redirige vers la caisse :-)
|
|||
|
|
|||
|
if (response.status === "user" && response.nbDaysOk <= 0) {
|
|||
|
var urlAccount = _config_instance_js__WEBPACK_IMPORTED_MODULE_0__["siteUrl"] + "/" + configTemplate.accountPage;
|
|||
|
if (window.location.href.indexOf(urlAccount) === -1) window.location.assign("/" + configTemplate.accountPage + "#subscribe"); // passée directement ici, l'ancre #subscribe ne fonctionne pas !?
|
|||
|
|
|||
|
resolve(true);
|
|||
|
} else {
|
|||
|
if (status.length !== 0 && status.indexOf(response.status) === -1) {
|
|||
|
redirectUser(urlRedirection, message, urlWanted);
|
|||
|
resolve(false);
|
|||
|
} else resolve(true);
|
|||
|
}
|
|||
|
} else {
|
|||
|
Object(_clientstorage_js__WEBPACK_IMPORTED_MODULE_2__["removeLocaly"])("user");
|
|||
|
redirectUser(urlRedirection, message, urlWanted);
|
|||
|
resolve(false);
|
|||
|
}
|
|||
|
} else {
|
|||
|
Object(_clientstorage_js__WEBPACK_IMPORTED_MODULE_2__["removeLocaly"])("user");
|
|||
|
redirectUser(urlRedirection, message, urlWanted);
|
|||
|
resolve(false);
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
xhr.onerror = function () {
|
|||
|
return reject(xhr.statusText);
|
|||
|
};
|
|||
|
|
|||
|
xhr.send();
|
|||
|
}
|
|||
|
}
|
|||
|
}));
|
|||
|
|
|||
|
case 5:
|
|||
|
case "end":
|
|||
|
return _context2.stop();
|
|||
|
}
|
|||
|
}
|
|||
|
}, _callee2);
|
|||
|
}));
|
|||
|
|
|||
|
return function checkSession() {
|
|||
|
return _ref2.apply(this, arguments);
|
|||
|
};
|
|||
|
}(); // Cette fonction sert à la précédente en cas de connexion non valide
|
|||
|
|
|||
|
var redirectUser = function redirectUser(urlRedirection, message, urlWanted) {
|
|||
|
if (!Object(_tools_main__WEBPACK_IMPORTED_MODULE_3__["isEmpty"])(message)) Object(_clientstorage_js__WEBPACK_IMPORTED_MODULE_2__["saveLocaly"])("message", message);
|
|||
|
if (!Object(_tools_main__WEBPACK_IMPORTED_MODULE_3__["isEmpty"])(urlWanted)) Object(_clientstorage_js__WEBPACK_IMPORTED_MODULE_2__["saveLocaly"])("url", urlWanted);
|
|||
|
if (!Object(_tools_main__WEBPACK_IMPORTED_MODULE_3__["isEmpty"])(urlRedirection)) window.location.assign(urlRedirection);
|
|||
|
};
|
|||
|
|
|||
|
/***/ }),
|
|||
|
|
|||
|
/***/ "./src/tools/webportage.js":
|
|||
|
/*!*********************************!*\
|
|||
|
!*** ./src/tools/webportage.js ***!
|
|||
|
\*********************************/
|
|||
|
/*! exports provided: unCheckAllOthers, showBtnPayment */
|
|||
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|||
|
|
|||
|
"use strict";
|
|||
|
__webpack_require__.r(__webpack_exports__);
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unCheckAllOthers", function() { return unCheckAllOthers; });
|
|||
|
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "showBtnPayment", function() { return showBtnPayment; });
|
|||
|
var checkBoxes = {
|
|||
|
"CGV": document.getElementById("CGVOk"),
|
|||
|
"abo9": document.getElementById("abo9"),
|
|||
|
"abo18": document.getElementById("abo18"),
|
|||
|
"abo36": document.getElementById("abo36"),
|
|||
|
"abo54": document.getElementById("abo54")
|
|||
|
};
|
|||
|
var divWPBtns = document.getElementById("WPBtns"); // Lorsque l'on sélectionne un montant, les autres options + les CGV sont désélectionnés
|
|||
|
|
|||
|
var unCheckAllOthers = function unCheckAllOthers(choice) {
|
|||
|
for (var id in checkBoxes) {
|
|||
|
if (id !== choice) checkBoxes[id].checked = false;
|
|||
|
divWPBtns.style.display = "none";
|
|||
|
}
|
|||
|
};
|
|||
|
var btns = {
|
|||
|
"btn9": document.getElementById("WPBtn9"),
|
|||
|
"btn18": document.getElementById("WPBtn18"),
|
|||
|
"btn36": document.getElementById("WPBtn36"),
|
|||
|
"btn54": document.getElementById("WPBtn54")
|
|||
|
}; // Affiche le bon bouton de paiement et cache les autres
|
|||
|
|
|||
|
var showBtnPayment = function showBtnPayment(choice) {
|
|||
|
for (var id in btns) {
|
|||
|
if (id !== choice) btns[id].style.display = "none";else btns[id].style.display = "block";
|
|||
|
}
|
|||
|
};
|
|||
|
|
|||
|
/***/ })
|
|||
|
|
|||
|
/******/ });
|
|||
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2NvbmZpZy9pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi4vY29uZmlnL3F1ZXN0aW9ubmFpcmVzLmpzIiwid2VicGFjazovLy8uLi9jb25maWcvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2xzL21haW4uanMiLCJ3ZWJwYWNrOi8vLy4uL3ZpZXdzIHN5bmMgXlxcLlxcLy4qXFwuanMkIiwid2VicGFjazovLy8uLi92aWV3cy9kZWZhdWx0L2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi4vdmlld3Mvd2lraWxlcm5pL2NvbmZpZy9mci5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvcGF5bWVudFBhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2NsaWVudHN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL2V2ZXJ5d2hlcmUuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL21hdG9tby5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvdG9vbHMvdXNlcnMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3Rvb2xzL3dlYnBvcnRhZ2UuanMiXSwibmFtZXMiOlsidXNlcnMiLCJyZXF1aXJlIiwicXVlc3Rpb25uYWlyZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwiYXBpVXJsIiwic2l0ZVVybCIsImFkbWluTmFtZSIsImFkbWluRW1haWwiLCJzZW5kZXJOYW1lIiwic2VuZGVyRW1haWwiLCJhZG1pbkxhbmciLCJ0aGVtZSIsImF2YWlsYWJsZUxhbmdzIiwic2l0ZU5hbWUiLCJiZWdpbkNvZGVHb2RmYXRoZXIiLCJkZWZhdWx0UmVjZWlwdERheXMiLCJjcm9uVGltaW5nQWxlcnRJblNlY29uZGUiLCJyZXNwb25zZVRpbWluZ0FsZXJ0SW5TZWNvbmRlIiwidG9rZW5TaWdudXBWYWxpZGF0aW9uVGltZUluSG91cnMiLCJ0b2tlbkxvZ2luTGlua1RpbWVJbkhvdXJzIiwidG9rZW5Db25uZXhpb25NaW5UaW1lSW5Ib3VycyIsInRva2VuQ29ubmV4aW9uTWF4VGltZUluRGF5cyIsInRva2VuTG9naW5DaGFuZ2luZ1RpbWVJbkhvdXJzIiwidG9rZW5EZWxldGVVc2VyVGltZUluSG91cnMiLCJ0b2tlblVuc3Vic2NyaWJlTGlua1RpbWVJbkRheXMiLCJmcmVlQWNjb3VudFRpbWluZ0luRGF5cyIsImZyZWVBY2NvdW50RXhwaXJhdGlvbk5vdGlmaWNhdGlvbkluRGF5cyIsImFjY291bnRFeHBpcmF0aW9uRmlyc3ROb3RpZmljYXRpb25JbkRheXMiLCJhY2NvdW50RXhwaXJhdGlvblNlY29uZE5vdGlmaWNhdGlvbkluRGF5cyIsImluYWN0aXZlQWNjb3VudFRpbWVUb0RlbGV0ZUluRGF5cyIsIm5iUXVlc3Rpb25zTWluIiwibmJRdWVzdGlvbnNNYXgiLCJuYkNob2ljZXNNYXgiLCJuYk5ld1F1ZXN0aW9ubmFpcmVzIiwiaG91ckdpdmVOZXdRdWVzdGlvbm5haXJlQmVnaW4iLCJob3VyR2l2ZU5ld1F1ZXN0aW9ubmFpcmVFbmQiLCJudW1iZXJOZXdRdWVzdGlvbm5haXJlQXRTYW1lVGltZSIsIm1pblNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiZmllbGROZXdRdWVzdGlvbm5haXJlcyIsIm5iSWxsdXN0cmF0aW9uc01pbiIsIm5iSWxsdXN0cmF0aW9uc01heCIsIm1heElsbHVzdHJhdGlvblNpemVpbk9jdGV0IiwibWltZVR5cGVzRm9ySWxsdXN0cmF0aW9uIiwiaWxsdXN0cmF0aW9uc1dpZHRoTWF4SW5QeCIsImlsbHVzdHJhdGlvbnNNaW5pYXR1cmVzV2lkdGhNYXhJblB4IiwibmJMaW5rc01pbiIsIm5iTGlua3NNYXgiLCJwYXNzd29yZCIsIm1pbmxlbmd0aCIsImRpckNhY2hlVXNlcnMiLCJkaXJDYWNoZVVzZXJzQW5zd2VycyIsImRpckNhY2hlUXVlc3Rpb25uYWlyZXMiLCJkaXJDYWNoZVF1ZXN0aW9ucyIsImRpckNhY2hlVXNlcnNRdWVzdGlvbm5haXJlcyIsImRpckhUTUxRdWVzdGlvbm5haXJlIiwiZGlyV2ViUXVlc3Rpb25uYWlyZSIsIm1hdG9tbyIsInVybCIsInNpdGVJZCIsInF1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJnZXRRdWVzdGlvbm5haXJlUm91dGVzIiwicHJldmlld1F1ZXN0aW9ubmFpcmVSb3V0ZXMiLCJwdWJsaXNoZWRRdWVzdGlvbm5haXJlUm91dGVzIiwic2F2ZUFuc3dlcnNSb3V0ZSIsImdldFN0YXRzUXVlc3Rpb25uYWlyZXMiLCJzZWFyY2hRdWVzdGlvbm5haXJlc1JvdXRlIiwiZ2V0UmFuZG9tUXVlc3Rpb25uYWlyZXNSb3V0ZSIsInNlYXJjaEFkbWluUXVlc3Rpb25uYWlyZXNSb3V0ZSIsImdldExpc3ROZXh0UXVlc3Rpb25uYWlyZXMiLCJyZWdlbmVyYXRlSFRNTCIsInF1ZXN0aW9uc1JvdXRlIiwidGFnc1NlYXJjaFJvdXRlIiwiZ2V0UXVlc3Rpb25uYWlyZXNXaXRob3V0QW5zd2VyIiwiZ2V0UHJldmlvdXNBbnN3ZXJzIiwiZ2V0U3RhdHNBbnN3ZXJzIiwiZ2V0QWRtaW5TdGF0cyIsIlF1ZXN0aW9ubmFpcmUiLCJ0aXRsZSIsIm1heGxlbmd0aCIsInJlcXVpcmVkIiwic2x1ZyIsImludHJvZHVjdGlvbiIsInNlYXJjaFF1ZXN0aW9ubmFpcmVzIiwiUXVlc3Rpb24iLCJ0ZXh0IiwicmFuayIsIm1pbiIsImRlZmF1bHRWYWx1ZSIsIkNob2ljZSIsInNlYXJjaCIsIm5iVGFnc01pbiIsIm5iVGFnc01heCIsImRpckNhY2hlVGFncyIsImRpckhUTUxUYWdzIiwiZGlyV2ViVGFncyIsIm5iUmFuZG9tUmVzdWx0cyIsInVzZXJSb3V0ZXMiLCJjaGVja0RlbGV0ZUxpbmtSb3V0ZSIsImNoZWNrSWZJc0VtYWlsZnJlZVJvdXRlIiwiY2hlY2tMb2dpblJvdXRlIiwiY2hlY2tOZXdMb2dpbkxpbmtSb3V0ZSIsImNoZWNrU3Vic2NyaWJlVG9rZW5Sb3V0ZSIsImNvbm5lY3Rpb25Sb3V0ZSIsImNvbm5lY3Rpb25XaXRoTGlua1JvdXRlIiwiY3JlYXRlVXNlclJvdXRlIiwiZ2V0R29kQ2hpbGRzIiwiZ2V0R29kZmF0aGVyUm91dGUiLCJnZXRMb2dpbkxpbmtSb3V0ZSIsImdldFBheW1lbnRzIiwiZ2V0VXNlckluZm9zIiwic2VhcmNoVXNlclJvdXRlIiwic3Vic2NyaWJlUm91dGUiLCJ1bnN1YnNjcmliZVJvdXRlIiwidXBkYXRlVXNlckluZm9zIiwidmFsaWRhdGVVc2VyUm91dGUiLCJuYW1lIiwiZW1haWwiLCJuZXdQYXNzd29yZCIsImNvZGVHb2RmYXRoZXIiLCJjZ3VPayIsInZhbHVlIiwidGltZURpZmZlcmVuY2VNaW4iLCJ0aW1lRGlmZmVyZW5jZU1heCIsImRpckNhY2hlVXNlcnN
|