<!doctypehtml><html dir=ltr xmlns=http://www.w3.org/1999/xhtml><head lang=en><meta http-equiv=X-UA-Compatible content="IE=edge"><meta content="text/html; charset=utf-8"http-equiv=Content-Type><meta name=viewport content="user-scalable=1,initial-scale=1,minimum-scale=1,maximum-scale=1"><meta name=apple-mobile-web-app-capable content=yes><meta name=format-detection content="telephone=no"><meta name=robots content=noindex,nofollow><link rel=manifest href={{{domainurl}}}manifest.json><link rel="shortcut icon"type=image/x-icon href={{{domainurl}}}favicon.ico><link keeplink=1 type=text/css href=styles/style.css media=screen rel=stylesheet title=CSS><link rel=apple-touch-icon href=/favicon-303x303.png><script src=scripts/common-0.0.1{{min}}.js></script><script keeplink=1 src=scripts/u2f-api{{min}}.js></script><title>{{{title}}} - Login</title><style>#body{background-color:#5f9ea0;background:linear-gradient(to bottom right,#369,#036)}#flink a:link{color:#c8c8c8}#flink a:visited{color:#c8c8c8}#flink a:hover{color:#c8c8c8}#flink a:active{color:#c8c8c8}#welcomeText a:link{color:#fff}#welcomeText a:visited{color:#fff}#welcomeText a:hover{color:#fff}#welcomeText a:active{color:#fff}</style><body id=body onload='"undefined"!=typeof startup&&startup()'class="arg_hide login"><div id=backgroundImage style="position:absolute;left:0;bottom:0;z-index:-1;height:60%;width:100%;opacity:.1;background-image:url(welcome.png);background-repeat:no-repeat;background-position:left bottom;background-size:contain"></div><table id=centralTable class=container style=height:100%;z-index:1><tr><td id=logincell>{{{titlehtml}}} <img id=loginPicture><div style="font-size:46px;font-family:Arial,Helvetica,sans-serif;font-weight:700;padding-bottom:10px;color:#c8c8c8;text-shadow:2px 2px 2px #000">{{{title1}}}<sup style=font-size:20px> {{{title2}}}</sup></div><div id=loginpanel style="display:none;box-shadow:1px 1px 4px #000"><form id=loginpanelform method=post><input type=hidden name=action value=login><div id=message1></div><div id=loginuserpassdiv style=display:none><table style=width:100%><tr><td><input id=username title="Nom d'utilisateur"style=box-sizing:border-box;width:280px;border:0;border-radius:4px;padding:8px;background-color:#fff8cc {{{autocomplete}}}=username placeholder="Nom d'utilisateur"maxlength=64 name=username required onchange=validateLogin(1) onkeyup=validateLogin(1,event)><tr><td><input id=password title="Mot de passe"style=box-sizing:border-box;width:280px;border:0;border-radius:4px;padding:8px;background-color:#fff8cc {{{autocomplete}}}=current-password placeholder="Mot de passe"type=password maxlength=256 name=password required onchange=validateLogin(2) onkeyup=validateLogin(2,event)><tr><td><div id=showPassHintLink title="Indice pour le mot de passe"style=box-sizing:border-box;width:280px;border:0;border-radius:4px;padding:8px;background-color:#fff8cc;display:none><a onclick="return showPassHint(event)"href=# style=cursor:pointer>Dévoiler indice</a></div><tr><td><input id=loginButton style=box-sizing:border-box;width:280px;border:0;border-radius:4px;padding:6px onclick='submitButtonClicked("loginpanelform")'type=button value=Connexion><tr id=topLanguageSelectRow style=display:none><td id=topLanguageSelect></table><div id=hrAccountDiv style=display:none><hr></div><div id=resetAccountDiv style=display:none;padding:2px><span id=resetAccountSpan>Nom d'utilisateur / Mot de passe oublié ?</span> <a onclick="return xgo(3,event)"href=# style=cursor:pointer>Réinitialiser le compte</a>.</div><div id=newAccountDiv style=display:none;padding:2px;padding-top:10px>Pas encore de compte ? <a onclick="return xgo(2,event)"href=# style=cursor:pointer>Créer un</a>.</div></div><input id=loginformargs name=urlargs type=hidden><div id=authStrategies style=display:none><hr id=loginuserpasshr style=display:none><div style=margin-bottom:8px>S'authentifier en utilisant un compte existant</div><a id=auth-twitter href=auth-twitter style=display:none><img src=images/login/twitter32.png srcset="images/login/twitter64.png 2x"loading=lazy width=32 height=32 style="margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer"title="S'authentifier en utilisant Twitter"></a><a id=auth-google href=auth-google style=display:none><img src=images/login/google32.png srcset="images/login/google64.png 2x"loading=lazy width=32 height=32 style="margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer"title="S'authentifier en utilisant Google"></a><a id=auth-github href=auth-github style=display:none><img src=images/login/github32.png srcset="images/login/github64.png 2x"loading=lazy width=32 height=32 style="margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer"title="S'authentifier en utilisant GitHub"></a><a id=auth-azure href=auth-azure style=display:none><img src=images/login/azure32.png srcset="images/login/azure64.png 2x"loading=lazy width=32 height=32 style="margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer"title="S'authentifier en utilisant Azure"></a><a id=auth-oidc href=auth-oidc style=display:none><img src=images/login/oidc32.png srcset="images/login/oidc64.png 2x"loading=lazy width=32 height=32 style="margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer"title="Authentification avec OpenID"></a><a id=auth-oidc-azure href=auth-oidc style=display:none><img src=images/login/azure32.png srcset="images/login/azure64.png 2x"loading=lazy width=32 height=32 style="margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer"title="Sign-in with Azure using OpenID Connect"></a><a id=auth-oidc-google href=auth-oidc style=display:none><img src=images/login/google32.png srcset="images/login/google64.png 2x"loading=lazy width=32 height=32 style="margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer"title="Sign-in with Google using OpenID Connect"></a><a id=auth-jumpcloud href=auth-jumpcloud style=display:none><img src=images/login/jumpcloud32.png srcset="images/login/jumpcloud64.png 2x"loading=lazy width=32 height=32 style="margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer"title="S'authentifier en utilisant JumpCloud"></a><a id=auth-intel href=auth-intel style=display:none><img src=images/login/intel32.png srcset="images/login/intel64.png 2x"loading=lazy width=32 height=32 style="margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer"title="S'authentifier en utilisant Intel"></a><a id=auth-saml href=auth-saml style=display:none><img src=images/login/generic32.png srcset="images/login/generic64.png 2x"loading=lazy width=32 height=32 style="margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer"title="Authentification unique"></a></div></form></div><div id=createpanel style=display:none;position:relative><form id=createpanelform method=post><input type=hidden name=action value=createaccount><div id=message2></div><div><b>Création de compte</b></div><div id=passwordPolicyCallout style=display:none></div><table><tr id=nuUserRow><td id=nuUser align=right width=100>Nom d'utilisateur:<td><input id=ausername {{{autocomplete}}}=username name=username onchange=validateCreate(1) maxlength=64 onkeydown=haltReturn(event) onkeyup=validateCreate(1,event)><tr><td id=nuEmail align=right width=100>Email:<td><input id=aemail {{{autocomplete}}}=email inputmode=email name=email onchange=validateCreate(2) maxlength=256 onkeydown=haltReturn(event) onkeyup=validateCreate(2,event)><tr><td id=nuPass1 align=right>Mot de passe:<td><input id=apassword1 type=password name=password1 {{{autocomplete}}}=new-password maxlength=256 onkeydown=haltReturn(event) onchange=validateCreate(3,event) onkeyup=validateCreate(3,event)><tr><td id=nuPass2 align=right>Mot de passe:<td><input id=apassword2 type=password name=password2 {{{autocomplete}}}=new-password maxlength=256 onkeydown=haltReturn(event) onchange=validateCreate(4,event) onkeyup=validateCreate(4,event)><tr id=createPanelHint style=display:none><td id=nuHint align=right>Indice pour le mot de passe:<td><input id=apasswordhint name=apasswordhint {{{autocomplete}}}=off maxlength=256 onkeydown=haltReturn(event) onchange=validateCreate(5,event) onkeyup=validateCreate(5,event)><tr id=newAccountPass title="Saisissez le jeton de création de compte"><td id=nuToken align=right>Jeton de création:<td><input id=anewaccountpass type=password name=anewaccountpass {{{autocomplete}}}=off maxlength=256 onkeydown=haltReturn(event) onchange=validateCreate(6,event) onkeyup=validateCreate(6,event)><tr id=newAccountCaptchaImg title="image CAPTCHA"><td><td colspan=2><img src={{{newAccountCaptchaImage}}} loading=lazy><tr id=newAccountCaptcha title="Vérification de la sécurité"><td id=nuCaptcha align=right>Vérification de la sécurité :<td><input id=anewaccountcaptcha name=anewaccountcaptcha {{{autocomplete}}}=off maxlength=256 onkeydown=haltReturn(event) onchange=validateCreate(7,event) onkeyup=validateCreate(7,event)><tr><td colspan=2><div style=float:right><input id=createButton type=button onclick='submitButtonClicked("createpanelform")'value="Créer un compte"disabled></div><div id=passWarning style=padding-top:6px></div></table><hr><a onclick="return xgo(1,event)"href=# style=cursor:pointer>Revenir à l'authentification</a> <input id=createformargs name=urlargs type=hidden> <input id=createformcaptcha name=captchaargs type=hidden value={{{newAccountCaptcha}}}></form></div><div id=resetpanel style=display:none><form id=resetpanelform method=post><input type=hidden name=action value=resetaccount><div id=message3></div><div><b>Réinitialisation du compte</b></div><table style=width:100%;margin-top:4px;margin-bottom:4px><tr><td><input id=remail title=Email style=box-sizing:border-box;width:280px;border:0;border-radius:4px;padding:8px;background-color:#fff8cc {{{autocomplete}}}=username placeholder=Email maxlength=256 name=email onchange=validateReset() onkeyup=validateReset(event)><tr><td><input id=eresetButton style=box-sizing:border-box;width:280px;border:0;border-radius:4px;padding:6px type=button onclick='submitButtonClicked("resetpanelform")'value="Réinitialiser le Compte"disabled></table><hr><a onclick="return xgo(1,event)"href=# style=cursor:pointer>Revenir à l'authentification</a> <input id=resetformargs name=urlargs type=hidden></form></div><div id=tokenpanel style=display:none><form id=tokenpanelform method=post {{{autocomplete}}}=off><input type=hidden name=action value=tokenlogin> <input type=hidden name=hwstate value={{{hwstate}}}><div id=message4></div><table style=width:100%><tr><td><input id=tokenInput {{{autocomplete}}}=one-time-code title=Jeton style=box-sizing:border-box;width:280px;border:0;border-radius:4px;padding:8px;background-color:#fff8cc placeholder=Jeton maxlength=50 name=token onchange=checkToken(event) onpaste=checkToken(event) onkeyup=checkToken(event) onkeydown=checkToken(event)><br><input id=hwtokenInput name=hwtoken style=display:none><tr><td><div><input id=tokenOkButton style=box-sizing:border-box;width:280px;border:0;border-radius:4px;padding:6px type=button onclick='submitButtonClicked("tokenpanelform")'value=Connexion disabled></div><tr><td style=align-content:center;padding-top:10px><label id=tokenInputRememberLabel><input id=tokenInputRemember name=remembertoken type=checkbox><span id=tokenInputRememberSpan></span></label><tr id=2farow><td><hr><div><img id=securityKeyButton src=images/login/2fa-key-48.png srcset="images/login/2fa-key-96.png 2x"title="Utiliser clé de sécurité"loading=lazy width=48 height=48 style="display:none;margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer;background-color:#fff"onclick=useSecurityKey(1)> <img id=smsKeyButton src=images/login/2fa-sms-48.png srcset="images/login/2fa-sms-96.png 2x"title=SMS loading=lazy width=48 height=48 style="display:none;margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer;background-color:#fff"onclick=useSMSToken(1)> <img id=msgKeyButton src=images/login/2fa-messaging-48.png srcset="images/login/2fa-messaging-96.png 2x"title=Messagerie loading=lazy width=48 height=48 style="display:none;margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer;background-color:#fff"onclick=useMsgToken(1)> <img id=emailKeyButton src=images/login/2fa-mail-48.png srcset="images/login/2fa-mail-96.png 2x"title=Email loading=lazy width=48 height=48 style="display:none;margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer;background-color:#fff"onclick=useEmailToken(1)> <img id=pushKeyButton src=images/login/2fa-push-48.png srcset="images/login/2fa-push-96.png 2x"title="Authentification de l'appareil"loading=lazy width=48 height=48 style="display:none;margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer;background-color:#fff"onclick=usePushToken(1)> <img id=duoKeyButton src=images/login/2fa-duo-48.png srcset="images/login/2fa-duo-96.png 2x"title="Duo Authentication"loading=lazy width=48 height=48 style="display:none;margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer;background-color:#fff"onclick=useDuoToken(1)></div></table><hr><a onclick="return xgo(1,event)"href=# style=cursor:pointer>Revenir à l'authentification</a> <input id=tokenformargs name=urlargs type=hidden></form></div><div id=resettokenpanel style=display:none><form id=resettokenpanelform method=post><input type=hidden name=action value=resetaccount><div id=message5></div><table style=width:100%><tr><td><input id=resetTokenInput {{{autocomplete}}}=one-time-code title=Jeton style=box-sizing:border-box;width:280px;border:0;border-radius:4px;padding:8px;background-color:#fff8cc placeholder=Jeton maxlength=50 name=token onchange=resetCheckToken(event) onpaste=resetCheckToken(event) onkeyup=resetCheckToken(event) onkeydown=resetCheckToken(event)><br><input id=resetHwtokenInput name=hwtoken style=display:none><tr><td><div><input id=resetTokenOkButton style=box-sizing:border-box;width:280px;border:0;border-radius:4px;padding:6px type=button onclick='submitButtonClicked("resettokenpanelform")'value=Connexion disabled></div><tr id=2farow2><td colspan=2><hr><div><img id=securityKeyButton2 src=images/login/2fa-key-48.png srcset="images/login/2fa-key-96.png 2x"title="Utiliser clé de sécurité"loading=lazy width=48 height=48 style="display:none;margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer;background-color:#fff"onclick=useSecurityKey(2)> <img id=smsKeyButton2 src=images/login/2fa-sms-48.png srcset="images/login/2fa-sms-96.png 2x"title=SMS loading=lazy width=48 height=48 style="display:none;margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer;background-color:#fff"onclick=useSMSToken(2)> <img id=msgKeyButton2 src=images/login/2fa-msg-48.png srcset="images/login/2fa-msg-96.png 2x"title=SMS loading=lazy width=48 height=48 style="display:none;margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer;background-color:#fff"onclick=useMsgToken(2)> <img id=emailKeyButton2 src=images/login/2fa-mail-48.png srcset="images/login/2fa-mail-96.png 2x"title=Email loading=lazy width=48 height=48 style="display:none;margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer;background-color:#fff"onclick=useEmailToken(2)> <img id=pushKeyButton2 src=images/login/2fa-push-48.png srcset="images/login/2fa-push-96.png 2x"title="Authentification de l'appareil"loading=lazy width=48 height=48 style="display:none;margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer;background-color:#fff"onclick=usePushToken(2)> <img id=duoKeyButton2 src=images/login/2fa-duo-48.png srcset="images/login/2fa-duo-96.png 2x"title="Duo Authentication"loading=lazy width=48 height=48 style="display:none;margin-left:3px;margin-right:3px;border-radius:3px;box-shadow:2px 2px 5px #000;cursor:pointer;background-color:#fff"onclick=useDuoToken(2)></div></table><hr><a onclick="return xgo(1,event)"href=# style=cursor:pointer>Revenir à l'authentification</a> <input id=resettokenformargs name=urlargs type=hidden></form></div><div id=resetpasswordpanel style=display:none;position:relative><form id=resetpasswordpanelform method=post><input type=hidden name=action value=resetpassword><div id=message6></div><div id=rpasswordPolicyCallout style=display:none></div><table><tr><td id=rnuPass1 width=100 align=right>Mot de passe:<td><input id=rapassword1 type=password name=rpassword1 {{{autocomplete}}}=off maxlength=256 onkeydown=haltReturn(event) onchange=validatePassReset(3,event) onkeyup=validatePassReset(3,event)><tr><td id=rnuPass2 align=right>Mot de passe:<td><input id=rapassword2 type=password name=rpassword2 {{{autocomplete}}}=off maxlength=256 onkeydown=haltReturn(event) onchange=validatePassReset(4,event) onkeyup=validatePassReset(4,event)><tr id=resetpasswordpanelHint style=display:none><td id=rnuHint align=right>Indice pour le mot de passe:<td><input id=rapasswordhint name=rpasswordhint {{{autocomplete}}}=off maxlength=256 onkeydown=haltReturn(event) onchange=validatePassReset(5,event) onkeyup=validatePassReset(5,event)><tr><td colspan=2><div style=float:right><input id=resetPassButton type=button onclick='submitButtonClicked("resetpasswordpanelform")'value="Réinitialiser le mot de passe"disabled></div><div id=rpassWarning style=padding-top:6px></div></table><hr><a onclick="return xgo(1,event)"href=# style=cursor:pointer>Revenir à l'authentification</a> <input id=resetpasswordformargs name=urlargs type=hidden></form></div><div id=checkemailpanel style=display:none;position:relative><form id=checkemailpanelform method=post><input type=hidden name=action value=checkemail><div id=message7></div><table id=checkCheckOperations style=width:100%;display:none><tr><td><div id=unconfirmedEmail></div><br><tr><td><div><input id=changeEmailButton type=button value="Changer l'adresse email"onclick=changeEmailAddress()> <input id=checkEmailButton2 type=button value="Renvoyer un courriel de confirmation"onclick=resentEmailConfirmation()> <input id=checkEmailButton type=button onclick='submitButtonClicked("checkemailpanelform")'style=display:none> <input id=checkEmailVal name=email type=hidden></div></table><hr><a onclick="return xgo(1,event)"href=# style=cursor:pointer>Revenir à l'authentification</a> <input id=checkemailformargs name=urlargs type=hidden></form></div><div id=waitpushpanel style=display:none><form id=waitpushpanelform method=post><input type=hidden name=action value=pushlogin><div id=message8></div><table style=width:100%><tr><td style=align-content:center;padding-top:10px><img id=waitpushpanelimage src=images/login/push-150.png srcset="images/login/push-300.png 2x"style=opacity:.3 loading=lazy width=265 height=150><tr><td style=align-content:center;padding-top:10px><label id=tokenInputRememberLabel2><input id=tokenInputRemember2 name=remembertoken type=checkbox><span id=tokenInputRememberSpan2></span></label></table><hr><a onclick="return xgo(1,event)"href=# style=cursor:pointer>Revenir à l'authentification</a> <input id=pushtokenformargs name=urlargs type=hidden> <input id=pushtokenInput name=hwstate type=hidden> <input id=pushOkButton onclick='submitButtonClicked("waitpushpanelform")'style=display:none></form></div><tr id=welcomeTextRow><td><div id=welcomeText style=color:#fff;text-align:center;margin-left:20px;margin-right:20px></div><tr id=bottomLanguageSelectRow style=display:none;text-align:center><td id=bottomLanguageSelect><tr style=height:20px><td><div><div id=flink style=float:right;margin-right:4px;color:#c8c8c8>{{{rootCertLink}}}&nbsp;<a href=terms>CGU &amp; Vie privée</a></div><div id=flink style=margin-left:4px;color:#c8c8c8>{{{footer}}}</div></div></table><div id=dialog style=display:none><div id=dialogHeader><div id=id_dialogclose style=float:right;padding:5px;cursor:pointer onclick=setDialogMode()><b>X</b></div><div id=id_dialogtitle style=padding:5px></div><div style=width:100%;margin:6px></div></div><div id=dialogBody><div id=dialog1><div id=id_dialogMessage></div></div><div id=dialog2><div id=id_dialogOptions></div></div></div><div id=idx_dlgButtonBar><input id=idx_dlgCancelButton type=button value=Annuler onclick=dialogclose(0)> <input id=idx_dlgOkButton type=button value=OK onclick=dialogclose(1)></div></div><script>var xxdialogMode,xxdialogFunc,xxdialogButtons,xxdialogTag,random="{{{randomlength}}}",welcomePictureFullScreen="true"===decodeURIComponent("{{{welcomePictureFullScreen}}}"),passlogin="{{{passlogin}}}",passhint="{{{passhint}}}",loginMode="{{{loginmode}}}",newAccount="{{{newAccount}}}",newAccountPass=parseInt("{{{newAccountPass}}}"),newAccountCaptcha="{{{newAccountCaptcha}}}",emailCheck="{{{emailcheck}}}",passRequirements="{{{passRequirements}}}",hardwareKeyChallenge=decodeURIComponent("{{{hkey}}}"),passRequirementsEx=null!=(passRequirements=""!=passRequirements?JSON.parse(decodeURIComponent(passRequirements)):{}).min||null!=passRequirements.max||null!=passRequirements.upper||null!=passRequirements.lower||null!=passRequirements.numeric||null!=passRequirements.nonalpha,features=parseInt("{{{features}}}"),welcomeText=decodeURIComponent("{{{welcometext}}}"),currentpanel=0,publicKeyCredentialRequestOptions=null,otpduo="true"===decodeURIComponent("{{{otpduo}}}"),otpemail="true"===decodeURIComponent("{{{otpemail}}}"),otpsms="true"===decodeURIComponent("{{{otpsms}}}"),otpmsg="true"===decodeURIComponent("{{{otpmsg}}}"),otppush="true"===decodeURIComponent("{{{otppush}}}"),autofido="true"===decodeURIComponent("{{{autofido}}}"),twoFactorCookieDays=parseInt("{{{twoFactorCookieDays}}}"),authStrategies="{{{authStrategies}}}".split(","),tokenTimeout=parseInt("{{{tokenTimeout}}}"),websocket=null,formSubmitted=!1,serverLangs="{{{renderLanguages}}}".split(","),loclist={af:"afrikaans",sq:"Albanais",ar:"Arabe (Standard)","ar-dz":"Arabe (Algérie)","ar-bh":"Arabe (Bahreïn)","ar-eg":"Arabe (Egypte)","ar-iq":"Arabe (Iraq)","ar-jo":"Arabe (Jordanie)","ar-kw":"Arabe (Koweït)","ar-lb":"Arabe (Liban)","ar-ly":"Arabe (Lybie)","ar-ma":"Arabe (Maroc)","ar-om":"Arabe (Oman)","ar-qa":"Arabe (Qatar)","ar-sa":"Arabe (Arabie Saoudite)","ar-sy":"Arabe (Syrie)","ar-tn":"Arabe (Tunisie)","ar-ae":"Arabe (U.A.E.)","ar-ye":"Arabe (Yemen)",an:"Aragonais",hy:"Arménien",as:"Assamais",ast:"Asturien",az:"Azerbaïdjanais",eu:"basque",bg:"Bulgare",be:"Biélorusse",bn:"Bengalais",bs:"Bosniaque",br:"Breton",my:"Birman",ca:"catalan",ch:"Chamorro",ce:"Tchétchène",zh:"Chinois","zh-hk":"Chinois (Hong Kong)","zh-cn":"Chinois (continental)","zh-sg":"Chinois (Singapore)","zh-tw":"Chinois (Taiwan)",cv:"Tchouvache",co:"Corse",cr:"Cri",hr:"croate",cs:"Tchèque",da:"Danois",nl:"Néerlandais (Standard)","nl-be":"Néerlandais (Belgique)",en:"Anglais","en-au":"Anglais (Australie)","en-bz":"English (Bélize)","en-ca":"Anglais (Canada)","en-ie":"Anglais (Irelande)","en-jm":"Anglais (Jamaïque)","en-nz":"Anglais (Nouvelle-Zélande)","en-ph":"Anglais (Philippines)","en-za":"Anglais (Afrique du Sud)","en-tt":"Anglais (Trinidad & Tobago)","en-gb":"Anglais (Royaume Uni)","en-us":"Anglais (États Unis)","en-zw":"Anglais (Zimbabwe)",eo:"espéranto",et:"Estonien",fo:"Féroïen",fa:"Farsi (Persan)",fj:"Fidjien",fi:"Finlandais",fr:"Français (standard)","fr-be":"Français (Belgique)","fr-ca":"Français (Canada)","fr-fr":"Français (France)","fr-lu":"Français (Luxembourg)","fr-mc":"Français (Monaco)","fr-ch":"Français (Suisse)",fy:"Frison",fur:"Frioulan",gd:"Gaélique (écossais)","gd-ie":"Gaélique (irlandais)",gl:"Galicien",ka:"Géorgien",de:"Allemand (Standard)","de-at":"Allemand (Autriche)","de-de":"Allemand (Allemagne)","de-li":"Allemand (Liechtenstein)","de-lu":"Allemand (Luxembourg)","de-ch":"Allemand (Suisse)",el:"Grec",gu:"Gujarati",ht:"Haïtien",he:"Hébreu",hi:"hindi",hu:"Hongrois",is:"Islandais",id:"Indonésien",iu:"Inuktitut",ga:"Irlandais",it:"Italien (standard)","it-ch":"Italien (Suisse)",ja:"Japonais",kn:"Kannada",ks:"Cachemire",kk:"Kazakh",km:"Khmer",ky:"kirghiz",tlh:"Klingon",ko:"Coréen","ko-kp":"Coréen (Corée du Nord)","ko-kr":"Coréen (Corée du Sud)",la:"Latin",lv:"letton",lt:"Lituanien",lb:"Luxembourgeois",mk:"ARY Macédonien",ms:"malais",ml:"Malayalam",mt:"Maltais",mi:"Maori",mr:"Marathi",mo:"Moldave",nv:"Navajo",ng:"Ndonga",ne:"Népalais",no:"Norvégien",nb:"Norvégien (Bokmal)",nn:"Norvégien (Nynorsk)",oc:"Occitan",or:"Oriya",om:"Oromo","fa-ir":"Perse/Iranien",pl:"Polonais",pt:"Portugais","pt-br":"Portugais (Brésil)",pa:"Punjabi","pa-in":"Punjabi (Inde)","pa-pk":"Punjabi (Pakistan)",qu:"Quechua",rm:"Rhéto-romane",ro:"Roumain","ro-mo":"Roumain (Moldavie)",ru:"Russe","ru-mo":"Russe (Moldavie)",sz:"Sami (lapon)",sg:"Sango",sa:"sanskrit",sc:"Sarde",sd:"Sindhi",si:"Cingalais",sr:"Serbe",sk:"Slovaque",sl:"Slovène",so:"Somani",sb:"Sorabe",es:"Espagnol","es-ar":"Espagnol (Argentine)","es-bo":"Espagnol (Bolivie)","es-cl":"Espagnol (Chili)","es-co":"Espagnol (Colombie)","es-cr":"Espagnol (Costa Rica)","es-do":"Espagnol (République dominicaine)","es-ec":"Espagnol (Equateur)","es-sv":"Espagnol (Salvador)","es-gt":"Espagnol (Guatemala)","es-hn":"Espagnol (Honduras)","es-mx":"Espagnol (Mexique)","es-ni":"Espagnol (Nicaragua)","es-pa":"Espagnol (Panama)","es-py":"Espagnol (Paraguay)","es-pe":"Espagnol (Perou)","es-pr":"Espagnol (Porto Rico)","es-es":"Espagnol (Espagne)","es-uy":"Espagnol (Uruguay)","es-ve":"Espagnol (Vénézuela)",sx:"Sutu",sw:"Swahili",sv:"suédois","sv-fi":"Suédois (Finlande)","sv-sv":"Suédois (Suède)",ta:"Tamil",tt:"tatar",te:"Teluga",th:"thaïlandais",tig:"Tigre",ts:"Tsonga",tn:"Tswana",tr:"turc",tk:"Turkmène",uk:"ukrainien",hsb:"Haut-sorabe",ur:"Ourdou",ve:"Venda",vi:"Vietnamien",vo:"Volapuk",wa:"Wallon",cy:"Gallois",xh:"Xhosa",ji:"yiddish",zu:"zoulou"},loclistex={"zh-chs":"Chinois simplifié)","zh-cht":"Chinois (Traditionnel)"},showLanguageSelect="{{{showLanguageSelect}}}";function startup(){"true"==decodeURIComponent("{{{loginpicture}}}")&&(Q("loginPicture").src="loginlogo.png"),QV("welcomeTextRow",""!=welcomeText),QH("welcomeText",welcomeText),welcomePictureFullScreen&&(QS("backgroundImage").height="100%",QS("backgroundImage").opacity="1",QS("backgroundImage")["background-position"]="center center",QS("backgroundImage")["background-size"]="cover");var e=parseInt("{{{messageid}}}"),a=["","Si valide le mail de réinitialisation a été envoyé.","Email envoyé.","Vérification par e-mail requise, vérifiez votre boîte aux lettres et cliquez sur le lien de confirmation.","SMS envoyé.","Envoi de la notification ...","Message envoyé."],n=["Impossible de créer le compte","Limite du compte atteinte.","Un compte existe déjà avec cet email.","Jeton de création de compte invalide.","Ce nom d'utilisateur existe déjà.","Mot de passe rejeté, utilisez-en un autre.","Email invalide.","Compte introuvable","Jeton invalide, réessayer.","Impossible d'envoyer le mail.","Compte bloqué","Accès refusé.","Erreur de connexion, vérifiez vos identifiants.","Changement de mot de passe demandé.","Adresse IP bloquée, réessayez plus tard.","Serveur en maintenance.","Impossible d'envoyer la notification.","Vérification de la sécurité non valide."];if(0<e){var t="";if(e<100&&e<a.length?t=a[e]:100<=e&&e-100<n.length&&(t=n[e-100]),""!=t)for(t=100<=e?'<span class="msg error"><b style=color:#8C001A>'+t+"<b></span><br /><br />":'<span class="msg success"><b>'+t+"</b></span><br /><br />",r=1;r<9;r++)QH("message"+r,t)}var o=JSON.parse("{{{flashErrors}}}");if(o&&0<o.length){t="";for(r=0;r<o.length;r++)o[r]&&(t+='<span class="msg error"><b style=color:#8C001A>'+o[r]+"<b></span><br /><br />");QH("message1",t),QV("message1",!0)}var s=parseUriArgs();if("top"===showLanguageSelect||"bottom"===showLanguageSelect){var r,i='<select id=d2langselect style="box-sizing:border-box;width:280px;border:0;border-radius:4px;padding:8px" onChange="changeLanguage()">';for(r in i+='<option value="*">Use Browser Language</option>',serverLangs){var l=serverLangs[r];i+='<option value="'+l+'"'+(s.lang==l?" selected":"")+">"+l+" - "+(loclist[l]||loclistex[l])+"</option>"}QH(showLanguageSelect+"LanguageSelect",i),"top"===showLanguageSelect&&(QS(showLanguageSelect+"LanguageSelect")["padding-top"]="5px"),QV(showLanguageSelect+"LanguageSelectRow",!0)}if(passlogin="true"==passlogin,1===s.passlogin&&(passlogin=!0),0===s.passlogin&&(passlogin=!1),QV("loginuserpassdiv",passlogin),QV("loginuserpasshr",passlogin),0<twoFactorCookieDays?(QV("tokenInputRememberLabel",!0),QH("tokenInputRememberSpan",format("Se souvenir de cet appareil pendant {0} jours.",twoFactorCookieDays)),QV("tokenInputRememberLabel2",!0),QH("tokenInputRememberSpan2",format("Se souvenir de cet appareil pendant {0} jours.",twoFactorCookieDays))):(QV("tokenInputRememberLabel",!1),QV("tokenInputRememberLabel2",!1)),0<window.location.href.indexOf("?")&&(a=window.location.href.substring(window.location.href.indexOf("?")),Q("loginformargs").value=a,Q("createformargs").value=a,Q("resetformargs").value=a,Q("tokenformargs").value=a,Q("pushtokenformargs").value=a,Q("resettokenformargs").value=a,Q("resetpasswordformargs").value=a,Q("checkemailformargs").value=a),0==(32&features)){n=null;try{n=top.location.toString().toLowerCase()}catch(e){}if(top!=self&&(null==n||0==top.active))return void(top.location=self.location)}if(2097152&features&&(Q("username").placeholder="Email",QH("resetAccountSpan","Mot de passe oublié?"),QV("nuUserRow",!1)),QV("createPanelHint",!0===passRequirements.hint),QV("resetpasswordpanelHint",!0===passRequirements.hint),""!=authStrategies&&(QV("authStrategies",!0),0<=authStrategies.indexOf("twitter")&&QV("auth-twitter",!0),0<=authStrategies.indexOf("google")&&QV("auth-google",!0),0<=authStrategies.indexOf("github")&&QV("auth-github",!0),0<=authStrategies.indexOf("azure")&&QV("auth-azure",!0),0<=authStrategies.indexOf("oidc")&&QV("auth-oidc",!0),0<=authStrategies.indexOf("oidc-azure")&&QV("auth-oidc-azure",!0),0<=authStrategies.indexOf("oidc-google")&&QV("auth-oidc-google",!0),0<=authStrategies.indexOf("jumpcloud")&&QV("auth-jumpcloud",!0),0<=authStrategies.indexOf("intel")&&QV("auth-intel",!0),0<=authStrategies.indexOf("saml"))&&QV("auth-saml",!0),validateCreate(),0!=loginMode.length?go(parseInt(loginMode)):go(1),QV("newAccountDiv","1"===newAccount||"true"===newAccount),null!=passhint&&0<passhint.length&&QV("showPassHintLink",!0),QV("newAccountPass",1==newAccountPass),QV("newAccountCaptcha",""!=newAccountCaptcha),QV("newAccountCaptchaImg",""!=newAccountCaptcha),QV("resetAccountDiv","true"==emailCheck),QV("hrAccountDiv","true"==emailCheck||1==newAccountPass),"4"==loginMode){0<tokenTimeout&&setTimeout(function(){Q("hwtokenInput").value="**timeout**",QE("tokenOkButton",!0),Q("tokenOkButton").click()},tokenTimeout);try{hardwareKeyChallenge=0<hardwareKeyChallenge.length?JSON.parse(hardwareKeyChallenge):null}catch(e){hardwareKeyChallenge=null}var u=null!=hardwareKeyChallenge&&"webAuthn"==hardwareKeyChallenge.type,c=otpemail&&2!=e&&4!=e&&6!=e,d=otpsms&&2!=e&&4!=e&&6!=e,p=otpmsg&&2!=e&&4!=e&&6!=e,g=otppush&&2!=e&&4!=e&&6!=e,m=otpduo&&2!=e&&4!=e&&6!=e;QV("securityKeyButton",u),QV("emailKeyButton",c),QV("smsKeyButton",d),QV("msgKeyButton",p),QV("pushKeyButton",g),QV("duoKeyButton",m),QV("2farow",u||c||d||p||g||m),autofido&&u&&setTimeout(function(){useSecurityKey(1)},300)}if("5"==loginMode){0<tokenTimeout&&setTimeout(function(){Q("hwtokenInput").value="**timeout**",QE("tokenOkButton",!0),Q("tokenOkButton").click()},tokenTimeout);try{hardwareKeyChallenge=0<hardwareKeyChallenge.length?JSON.parse(hardwareKeyChallenge):null}catch(e){hardwareKeyChallenge=null}u=null!=hardwareKeyChallenge&&"webAuthn"==hardwareKeyChallenge.type,c=otpemail&&2!=e&&4!=e&&6!=e,d=otpsms&&2!=e&&4!=e&&6!=e,p=otpmsg&&2!=e&&4!=e&&6!=e,g=otppush&&2!=e&&4!=e&&6!=e,m=otpduo&&2!=e&&4!=e&&6!=e;QV("securityKeyButton2",u),QV("emailKeyButton2",c),QV("smsKeyButton2",d),QV("msgKeyButton2",p),QV("pushKeyButton2",g),QV("duoKeyButton2",m),QV("2farow2",u||c||d||p||g||m),autofido&&u&&setTimeout(function(){useSecurityKey(2)},300)}"8"==loginMode&&((websocket=new WebSocket(passhint)).onopen=function(e){QS("waitpushpanelimage").opacity="1"},websocket.onmessage=function(e){"string"!=typeof e.data&&this.close();var a=null;try{a=JSON.parse(e.data)}catch(e){}!0===a.sent?QH("message8",'<span class="msg success"><b>'+format("Requête envoyée, {0}.",a.code)+"</b></span><br /><br />"):!1===a.sent?(QH("message8",'<span class="msg error"><b style=color:#8C001A>Echec de la requête<b></span><br /><br />'),QV("tokenInputRememberLabel2",!1),this.close()):!0===a.approved?(this.close(),QV("tokenInputRememberLabel2",!1),QH("message8",'<span class="msg success"><b>Requête acceptée.</b></span><br /><br />'),Q("pushtokenInput").value=a.token,Q("pushOkButton").click()):(QH("message8",'<span class="msg error"><b style=color:#8C001A>Accès refusé.<b></span><br /><br />'),QV("tokenInputRememberLabel2",!1),this.close())},websocket.onclose=function(e){QS("waitpushpanelimage").opacity="0.3"},websocket.onerror=function(e){QH("message8",'<span class="msg error"><b style=color:#8C001A>Erreur de connexion<b></span><br /><br />'),QS("waitpushpanelimage").opacity="0.5"})}function changeLanguage(){var e=Q("d2langselect").value,a=new URLSearchParams(window.location.search),e=("*"==e?a.delete("lang"):a.set("lang",e),window.location.pathname+"?"+a.toString());window.location.href=e}function useSecurityKey(a){if(null!=hardwareKeyChallenge&&"webAuthn"==hardwareKeyChallenge.type){"string"==typeof hardwareKeyChallenge.challenge&&(hardwareKeyChallenge.challenge=Uint8Array.from(atob(hardwareKeyChallenge.challenge),function(e){return e.charCodeAt(0)}).buffer),publicKeyCredentialRequestOptions={challenge:hardwareKeyChallenge.challenge,allowCredentials:[],timeout:hardwareKeyChallenge.timeout};for(var e=0;e<hardwareKeyChallenge.keyIds.length;e++)publicKeyCredentialRequestOptions.allowCredentials.push({id:Uint8Array.from(atob(hardwareKeyChallenge.keyIds[e]),function(e){return e.charCodeAt(0)}),type:"public-key",transports:["usb","ble","nfc","internal"]});navigator.credentials.get({publicKey:publicKeyCredentialRequestOptions}).then(function(e){e={id:btoa(String.fromCharCode.apply(null,new Uint8Array(e.rawId))),clientDataJSON:btoa(String.fromCharCode.apply(null,new Uint8Array(e.response.clientDataJSON))),userHandle:btoa(String.fromCharCode.apply(null,new Uint8Array(e.response.userHandle))),signature:btoa(String.fromCharCode.apply(null,new Uint8Array(e.response.signature))),authenticatorData:btoa(String.fromCharCode.apply(null,new Uint8Array(e.response.authenticatorData)))};1==a?(Q("hwtokenInput").value=JSON.stringify(e),QE("tokenOkButton",!0),Q("tokenOkButton").click()):2==a&&(Q("resetHwtokenInput").value=JSON.stringify(e),QE("resetTokenOkButton",!0),Q("resetTokenOkButton").click())},function(e){console.log("credentials-get error",e)})}}function useEmailToken(e){1==otpemail&&setDialogMode(1,"Connexion sécurisée",3,useEmailKeyEx,"Envoyer un jeton à une adresse e-mail enregistrée?",e)}function useEmailKeyEx(e,a){1==a?(Q("hwtokenInput").value="**email**",QE("tokenOkButton",!0),Q("tokenOkButton").click()):2==a&&(Q("resetHwtokenInput").value="**email**",QE("resetTokenOkButton",!0),Q("resetTokenOkButton").click())}function useSMSToken(e){1==otpsms&&setDialogMode(1,"Connexion sécurisée",3,useSMSTokenEx,"Envoyer un jeton au numéro de téléphone enregistré?",e)}function useSMSTokenEx(e,a){1==a?(Q("hwtokenInput").value="**sms**",QE("tokenOkButton",!0),Q("tokenOkButton").click()):2==a&&(Q("resetHwtokenInput").value="**sms**",QE("resetTokenOkButton",!0),Q("resetTokenOkButton").click())}function useMsgToken(e){1==otpmsg&&setDialogMode(1,"Connexion sécurisée",3,useMsgTokenEx,"Envoyer le jeton à l'application de messagerie ?",e)}function useMsgTokenEx(e,a){1==a?(Q("hwtokenInput").value="**msg**",QE("tokenOkButton",!0),Q("tokenOkButton").click()):2==a&&(Q("resetHwtokenInput").value="**msg**",QE("resetTokenOkButton",!0),Q("resetTokenOkButton").click())}function usePushToken(e){1==e?(Q("hwtokenInput").value="**push**",QE("tokenOkButton",!0),Q("tokenOkButton").click()):2==e&&(Q("resetHwtokenInput").value="**push**",QE("resetTokenOkButton",!0),Q("resetTokenOkButton").click())}function useDuoToken(e){1==e?(Q("hwtokenInput").value="**duo**",QE("tokenOkButton",!0),Q("tokenOkButton").click()):2==e&&(Q("resetHwtokenInput").value="**duo**",QE("resetTokenOkButton",!0),Q("resetTokenOkButton").click())}function showPassHint(e){return messagebox("Indice pour le mot de passe",passhint),haltEvent(e),!1}function xgo(e,a){return QV("message1",!1),QV("message2",!1),QV("message3",!1),QV("message4",!1),QV("message5",!1),QV("message6",!1),QV("message7",!1),go(e),haltEvent(a),!1}function go(e){currentpanel=e,setDialogMode(0),QV("showPassHintLink",!1),QV("loginpanel",1==e),QV("createpanel",2==e),QV("resetpanel",3==e),QV("tokenpanel",4==e),QV("resettokenpanel",5==e),QV("resetpasswordpanel",6==e),QV("checkemailpanel",7==e),QV("waitpushpanel",8==e),1==e&&Q("username").focus(),2==e&&(2097152&features?Q("aemail"):Q("ausername")).focus(),3==e&&Q("remail").focus(),4==e&&Q("tokenInput").focus(),5==e&&Q("resetTokenInput").focus(),6==e&&Q("rapassword1").focus(),7==e&&(QH("unconfirmedEmail",passhint),QV("checkCheckOperations",""!=Q("unconfirmedEmail").innerHTML),QH("checkEmailVal",passhint))}function submitButtonClicked(e){formSubmitted||(formSubmitted=!0,document.getElementById(e).submit())}function validateLogin(e,a){setTimeout(function(){setDialogMode(0),null!=a&&13==a.keyCode&&(1==e&&""!=Q("username").value?Q("password").focus():2==e&&""!=Q("password").value&&Q("loginButton").click()),null!=a&&haltEvent(a)},100)}function validateCreate(e,a){setDialogMode(0);var n=!1,n=!!(2097152&features)||0<Q("ausername").value.length&&-1==Q("ausername").value.indexOf(" ")&&-1==Q("ausername").value.indexOf('"')&&-1==Q("ausername").value.indexOf(","),t=1==validateEmail(Q("aemail").value),o=0<Q("apassword1").value.length,s=0<Q("apassword2").value.length&&Q("apassword2").value==Q("apassword1").value,r=0==newAccountPass||0<Q("anewaccountpass").value.length,i=""==newAccountCaptcha||0<Q("anewaccountcaptcha").value.length,l=n&&t&&o&&s&&r;QS("nuUser").color=n?"black":"#7b241c",QS("nuEmail").color=t?"black":"#7b241c",QS("nuPass1").color=o?"black":"#7b241c",QS("nuPass2").color=s?"black":"#7b241c",QS("nuToken").color=r?"black":"#7b241c",QS("nuCaptcha").color=i?"black":"#7b241c",""==Q("apassword1").value?(QH("passWarning",""),QV("passwordPolicyCallout",!1)):passRequirementsEx?0==checkPasswordRequirements(Q("apassword1").value,passRequirements)?(l=!1,QS("nuPass1").color="#7b241c",QS("nuPass2").color="#7b241c",QH("passWarning","<div style=color:red;cursor:pointer onclick=showPasswordPolicy()><b>Politique de mots de passe</b><div>"),QV("passwordPolicyCallout",!0),QH("passwordPolicyCallout",passwordPolicyText(Q("apassword1").value))):(QH("passWarning",""),QV("passwordPolicyCallout",!1)):80<=(r=checkPasswordStrength(Q("apassword1").value))?QH("passWarning","<span style=color:green><b>Mot de passe fort</b><span>"):60<=r?QH("passWarning","<span style=color:blue><b>Bon mot de passe</b><span>"):QH("passWarning","<span style=color:red><b>Mot de passe faible</b><span>"),null!=a&&13==a.keyCode&&(1==e&&n&&Q("aemail").focus(),2==e&&t&&Q("apassword1").focus(),3==e&&o&&Q("apassword2").focus(),4==e&&s&&(!0===passRequirements.hint?Q("apasswordhint").focus():e=5),5==e&&(1==newAccountPass?Q("anewaccountpass").focus():e=6),6==e&&(""!=newAccountCaptcha?Q("anewaccountcaptcha").focus():e=7),7==e)&&Q("createButton").click(),null!=a&&haltEvent(a),QE("createButton",l)}function validatePassReset(e,a){setDialogMode(0);var n=0<Q("rapassword1").value.length,t=0<Q("rapassword2").value.length&&Q("rapassword2").value==Q("rapassword1").value,o=n&&t;QS("rnuPass1").color=n?"black":"#7b241c",QS("rnuPass2").color=t?"black":"#7b241c",""==Q("rapassword1").value?(QH("rpassWarning",""),QV("rpasswordPolicyCallout",!1)):passRequirementsEx?0==checkPasswordRequirements(Q("rapassword1").value,passRequirements)?(o=!1,QS("rnuPass1").color="#7b241c",QS("rnuPass2").color="#7b241c",QH("rpassWarning","<div style=color:red;cursor:pointer onclick=showPasswordPolicy()><b>Politique de mots de passe</b><div>"),QV("rpasswordPolicyCallout",!0),QH("rpasswordPolicyCallout",passwordPolicyText(Q("rapassword1").value))):(QH("rpassWarning",""),QV("rpasswordPolicyCallout",!1)):80<=(n=checkPasswordStrength(Q("rapassword1").value))?QH("rpassWarning","<span style=color:green><b>Mot de passe fort</b><span>"):60<=n?QH("rpassWarning","<span style=color:blue><b>Bon mot de passe</b><span>"):QH("rpassWarning","<span style=color:red><b>Mot de passe faible</b><span>"),null!=a&&13==a.keyCode&&(2==e&&Q("rapassword1").focus(),3==e&&Q("rapassword2").focus(),4==e&&Q("rapasswordhint").focus(),6==e)&&Q("resetPassButton").click(),null!=a&&haltEvent(a),QE("resetPassButton",o)}function passwordPolicyText(e){var a="<div style=text-align:left>",n=strCount(e);return passRequirements.min&&(null==e||e.length<passRequirements.min)&&(a+=format("Longueur minimale de {0}",passRequirements.min)+"<br />"),passRequirements.max&&(null==e||e.length>passRequirements.max)&&(a+=format("Longueur maximale de {0}",passRequirements.max)+"<br />"),passRequirements.upper&&(null==e||n.upper<passRequirements.upper)&&(a+=format("{0} majuscule(s)",passRequirements.upper)+"<br />"),passRequirements.lower&&(null==e||n.lower<passRequirements.lower)&&(a+=format("{0} minuscule",passRequirements.lower)+"<br />"),passRequirements.numeric&&(null==e||n.numeric<passRequirements.numeric)&&(a+=format("{0} numérique",passRequirements.numeric)+"<br />"),passRequirements.nonalpha&&(null==e||n.nonalpha<passRequirements.nonalpha)&&(a+=format("{0} non alphanumérique",passRequirements.nonalpha)+"<br />"),a+="</div>"}function showPasswordPolicy(){messagebox("Politique de mots de passe",passwordPolicyText())}function validateReset(e){setDialogMode(0);var a=validateEmail(Q("remail").value);QE("eresetButton",a),null!=e&&13==e.keyCode&&1==a&&Q("eresetButton").click(),null!=e&&haltEvent(e)}function checkPasswordStrength(e){var a=0,n={},t=0,o={digits:/\d/.test(e),lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),nonWords:/\W/.test(e)};if(!e)return 0;for(var s,r=0;r<e.length;r++)n[e[r]]=(n[e[r]]||0)+1,a+=5/n[e[r]];for(s in o)t+=1==o[s]?1:0;return parseInt(a+10*(t-1))}function checkPasswordRequirements(e,a){return null==a||""==a||"object"!=typeof a||!(a.min&&e.length<a.min||a.max&&e.length>a.max||(e=strCount(e),a.numeric&&e.numeric<a.numeric)||a.lower&&e.lower<a.lower||a.upper&&e.upper<a.upper||a.nonalpha&&e.nonalpha<a.nonalpha)}function strCount(e){var a={numeric:0,lower:0,upper:0,nonalpha:0};if("string"==typeof e)for(var n=0;n<e.length;n++)/\d/.test(e[n])&&a.numeric++,/[a-z]/.test(e[n])&&a.lower++,/[A-Z]/.test(e[n])&&a.upper++,/\W/.test(e[n])&&a.nonalpha++;return a}function checkToken(e){var a=Q("tokenInput").value,n=a.split(" ").join(""),a=(a!=n&&(Q("tokenInput").value=n),6==Q("tokenInput").value.length||8==Q("tokenInput").value.length||44==Q("tokenInput").value.length);QE("tokenOkButton",a),a&&null!=e&&13==e.keyCode&&submitButtonClicked("tokenpanelform")}function resetCheckToken(e){var a=Q("resetTokenInput").value,n=a.split(" ").join(""),a=(a!=n&&(Q("resetTokenInput").value=n),6==Q("resetTokenInput").value.length||8==Q("resetTokenInput").value.length||44==Q("resetTokenInput").value.length);QE("resetTokenOkButton",a),a&&null!=e&&13==e.keyCode&&submitButtonClicked("resettokenpanelform")}function changeEmailAddress(){setDialogMode(1,"confirmation de l'émail",3,changeEmailAddressEx,addHtmlValue("Email",'<input id=dp1email style=width:230px maxlength=256 value="'+Q("unconfirmedEmail").innerHTML+'" {{{autocomplete}}}=off onchange=validateEmailAddress() onkeyup=validateEmailAddress() />')),validateEmailAddress()}function validateEmailAddress(){QE("idx_dlgOkButton",1==validateEmail(Q("dp1email").value))}function changeEmailAddressEx(){Q("checkEmailVal").value=Q("dp1email").value,QH("unconfirmedEmail",Q("dp1email").value),Q("checkEmailButton").click()}function resentEmailConfirmation(){Q("checkEmailVal").value=Q("unconfirmedEmail").innerHTML,Q("checkEmailButton").click()}var xxcurrentView=0;function setDialogMode(e,a,n,t,o,s){xxdialogMode=e,xxdialogFunc=t,xxdialogButtons=n,xxdialogTag=s,QE("idx_dlgOkButton",!0),QV("idx_dlgOkButton",1&n),QV("idx_dlgCancelButton",2&n),QV("id_dialogclose",2&n||8&n),QV("idx_dlgButtonBar",7&n),a&&QH("id_dialogtitle",a);for(var r=1;r<24;r++)QV("dialog"+r,r==e);QV("dialog",e),o&&(2==e?QH("id_dialogOptions",o):QH("id_dialogMessage",o))}function dialogclose(e){var a=xxdialogFunc,n=xxdialogButtons,t=xxdialogTag;setDialogMode(),(8&n||e)&&a&&a(e,t)}function messagebox(e,a){QH("id_dialogMessage",a),setDialogMode(1,e,1)}function statusbox(e,a){QH("id_dialogMessage",a),setDialogMode(1,e)}function getDocWidth(){return window.innerWidth||(document.documentElement&&document.documentElement.clientWidth&&0!=document.documentElement.clientWidth?document.documentElement:document.getElementsByTagName("body")[0]).clientWidth}function haltEvent(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1}function haltReturn(e){13==e.keyCode&&haltEvent(e)}function validateEmail(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function putstore(e,a){try{"undefined"!=typeof localStorage&&localStorage.setItem(e,a)}catch(e){}}function getstore(e,a){try{var n;return"undefined"==typeof localStorage?a:null==(n=localStorage.getItem(e))?a:n}catch(e){return a}}function format(e){var n=Array.prototype.slice.call(arguments,1);return e.replace(/{(\d+)}/g,function(e,a){return void 0!==n[a]?n[a]:e})}function addTextLink(e,a,n){var t=a.toLowerCase().indexOf(e.toLowerCase());return-1==t?a:a.substring(0,t)+'<a href="'+n+'">'+e+"</a>"+a.substring(t+e.length)}function addHtmlValue(e,a){return"<table><td style=width:120px;text-align:left>"+e+"<td><b>"+a+"</b></table>"}</script>