<!DOCTYPE html><html style="font-family: Microsoft YaHei, PingFangSC-Regular, PingFang SC, sans-serif;" >
<head>
    <title>Login - 西安交通大学统一身份认证网关</title>
    <meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><link rel="icon" href="/cas/file/ico/webFavicon.ico" type="image/x-icon"/><script type="text/javascript" >
    // var hmSiteId = "d605d8df6bf5ca8a54fe078683196518";
    var hmSiteId = "d605d8df6bf5ca8a54fe078683196518";
    if (hmSiteId) {
      var _hmt = _hmt || [];
      (function() {
        var hm = document.createElement("script");
        hm.src = "https://hm.baidu.com/hm.js?"+hmSiteId;
        var s = document.getElementsByTagName("script")[0]; 
        s.parentNode.insertBefore(hm, s);
      })();
    }
    </script>

    <script type="text/javascript" src="/cas/webjars/jquery/3.6.0/jquery.min.js"></script>

  <script src="/cas/deps/js/babel.min.js"></script>
  <script src="/cas/deps/js/babel.polyfill.js"></script>
  <script src="/cas/deps/js/vue/dist/vue.min.js"></script>

  <script src="/cas/deps/js/vant/vant.min.js"></script>

  <script src="/cas/deps/js/sw-ui/lib/index.js"></script>

    <link rel="stylesheet" type="text/css" href="/cas/deps/js/sw-ui/lib/theme-chalk/index.css"><link rel="stylesheet" type="text/css" href="/cas/schemes/0e6ccb/index.css"><style>
    [v-cloak] {
      display: none;
    }
  </style>

<script src="https://login.xjtu.edu.cn/mf/newCenter/remoteEntry.js?v=1792945962412"></script>

<script src='/cas/deps/js/jsencrypt/3.0.0-rc.1/jsencrypt.min.js' type="text/javascript"></script>

<script type="text/javascript">
  var encryptEnabled = true;

  var encrypt = new JSEncrypt();
  
  var url = "\/cas\/jwt\/publicKey";
  $.get(url, function(publicKey){
    // console.log(publicKey);
    encrypt.setPublicKey(publicKey);
  });
  </script>

<script type="text/javascript">
  var loginError = {};
  </script>

<link rel="stylesheet" type="text/css" href="https://login.xjtu.edu.cn/mf/newCenter/style.css?v=1792945962412"><link rel="stylesheet" type="text/css" href="/cas/themes/mf/css/mfa.css"><style>
    [v-cloak] {
      display: none;
    }
  </style>

</head>

<body>


<main role="main">
    <div id="content">

<div id="vue_main" v-cloak>

  <div style="display:none;">
    <el-button id="showErrorMessageUsername" :plain="true" @click="showErrorMessageUsername">打开消息提示</el-button>
    <el-button id="showErrorMessagePassword" :plain="true" @click="showErrorMessagePassword">打开消息提示</el-button>

    <el-button id="showErrorMessageCaptcha" :plain="true" @click="showErrorMessageCaptcha">打开消息提示</el-button>

    <el-button id="showErrorMessageMobile" :plain="true" @click="showErrorMessageMobile">打开消息提示</el-button>
    <el-button id="showErrorMessageDynamicCode" :plain="true" @click="showErrorMessageDynamicCode">打开消息提示</el-button>

    <el-button id="showErrorMessageQrCode" :plain="true" @click="showErrorMessageQrCode">打开消息提示</el-button>

    <el-button id="showSuccessMessageSendCode" :plain="true" @click="showSuccessMessageSendCode">打开消息提示</el-button>
    <el-button id="showFailureMessageSendCode" :plain="true" @click="showFailureMessageSendCode">打开消息提示</el-button>

    <el-button id="showGuardDialog" :plain="true" @click="showGuardDialog">打开消息提示</el-button>
  </div>

  <div>

    <div class="card">

    <el-dialog v-if="drcomIPLoginEnabled"
      class="dialog-wrap"
      title="城市热点快速登录"
      :visible.sync="drcomIPDialogVisible"
      :close-on-click-modal="false"
      width="506px"
      height="420px">

      <div class="check-tips" style="font-size: 14px;">
        <img src="/cas/themes/mf/images/tip.svg"></img>
        <div>您正在使用<span>城市热点</span>接入上网，可直接使用<span>城市热点</span>上网账号快速登录。</div>
      </div>

      <div class="app-style" style="height: 102px; padding: 20px 0 20px;">
        <div style="font-size: 16px;">请确认是否使用该账号进行登录。</div>
        <div class="code-wrap">
          <div style="position: relative; text-align: center; font-size: 20px; margin-top: 15px;">上网IP：<span></span></div>
          <div style="position: relative; text-align: center; font-size: 20px; margin-top: 15px;">上网账号：<span></span></div>
        </div>
      </div>

      <span slot="footer" class="dialog-footer" style="height: 50px; display: block;">
        <div id="drcomIPClose" style="display: inline-block; width: 20%;"><el-button @click="drcomIPDialogVisible = false">关闭</el-button></div>
        <div id="drcomIPLogin" style="display: inline-block; width: 75%;"><el-button type="primary" @click="drcomIPLogin">上网账号快速登录</el-button></div>
        <el-checkbox v-model="drcomIPLoginAutoEnabled">下次自动登录</el-checkbox>
      </span>

              <form style="display: none; width:0; height:0; border:0; margin: 0; padding: 0;" method="post" id="fm9" action="login">
                        <input type="hidden" name="drcomUsername" value="" autocomplete="new-username"/><input type="hidden" name="execution" value="19ebfddc-d5ec-4659-ab8b-0ac7a812cc85_ZXlKaGJHY2lPaUpJVXpVeE1pSjkuZC9UVnBuVlQyaWhzY1E1MHNJM2gxSWV5MnMvMmJrZisyeTFqQVdrUmpOc0xySGM4RDl5TWQzSWIzczlVOTlpSVpaRGpKZURMQXJCclFMODZnYkQzYURDR216VVhDYWh3R0doU1NpNUplU0YyWDhGWEEvN2NKR1VWSUR0ZmQ0dUh0R241OG9HUFl2VXM5ZHc2RHFoSjlFQXVhcGtKQTNzZ1pVSXlBL0JLbW1qTVczejlxZ3R5UkFBbUxJSitaQWtBVW9Ra3l4SVlJTllhT0h6bXI0NERhMG1KVnNMZGNhdDNNT0RSMFZsdmhhMVZpWktEMVNYdlp4R1pYdmNRa29hY3Y1ZmFUQW9YU29NYlU1MUZhT3lWNjY3aWFpdXhQM1VrMVg4RTB1Unl5UGY1amp2akF6ZU53NG8zckdKN0txc3pGeEhQTXhQZW9oSExKWGdGcnc4UEdzNXR0UXozNFk4MlNOS2dEbnkzNUZxMUFtaUxseFN5RTEwbUUxOXB5eDJBdktkVTJDdXV1ZkdTUFltOTJncTdIN0w5MUN4aUx2dE82TW1WSDE5Y2w0M3NSU1dDbUpLNnZkMVhybFJDcGFLZ0M2djVVejFRcGM4d2FoUU5uNG9CY0QvbGhEYlo1LzBzYWlhMmNwQy9EQjQwSVV2OFdFWitKUUN0OEJVYnp3dDA2cFZGbGZKcHlKemJqTktzeWRZaG5TcDQyYVZoM0JaNm15QnBEN2VUYjBUckxEMGVCaS9vaHZKUnhReFFGbFdWd3k3SGJtdFdJQjJOdjJvczdxWG9RSG1NN0M5MGwrVGRLS1dNSTBNZDA3NW5YejlVUUxSOVd6R1ErQTBvYXFVUjJsU01zaTlGaEs0V3JKTTVBUjQrbGhpNUswMUc3YnJoN0VjWHM5MkoxT0s3SWZDVU1FRmhvYmNvckRubDBjQTJsSTk0NzZKQTUxT3B2YWc5Zkl0Ylk0Q3ZjVXBYTk14Y1J4amg0SHpRQXFoaS9ZR08yamxsNS9rOHZEdzlVZndZYzFSVk5JendnQ0tFZ29XOXdLZjV1SUpMbU5xSXB0dzArUmkwdGRnSzBxaTE2aHVjWWRKbk16VW96b01zY294UW52REF5ajhqYVVzZFVqVTM5M3VncVNNNTE2WlVHYjlJaUtNMnN3UzEwMnpoOTVBK00vNkN5WTRNU0h4ek1wNUQwNEpvTFhVK1AvTVVVUWIvejJQZTRzVzVBWEZrZDg1MVhnOUNhWm5rWEJDQ2hlQ1FhWkViM2lMUks4RG5FcXd0MStrVmtvNjdDRHJOZmgrSytnYkNmTVd1b2J2LzNPUWdYQk0wVHNNZFh4Tm1ER3RaZno1a2ZwQ0c5Q2QzdWs3YWJ6N3RubHEzUmxsSjdBSUdWaUpTWm9TaTFyRGpmbU02N2RhQW9EWVF0MzVidDN0YjUzMXJHRjhEQXpRNXpFSU9TT2poODBUVDBoZDF1YUhTbHp5QlRIamFQZUJPNS95alB4Z2w5WE1YbElxWVQ1YkJPMnZ2b3FmdUJxUU92UkV5M1hXYjdURVZIYTQ4bmhSZjQ0d29ZcU8rMjhnS0Q3UURORzIzNW5XNVRBL3NuREU5dmNHYm1pbG9QOEJVZEFLSW5OUmZ3RzRKTFNIdEpPOEMxQUlxYTJVS2ZiR2xQTGI3bVg4YXpSUzdiRE4yQnFqNDVJTG5CSFV0dnhFZTdQSGU3UDYwV3ZtWDBkMlpjTjlyenhUT2F6ZkxyM0hkUGx1bzJwNEk2RTN5UUx2L0hhQU9oVllwVGUzNGZLU1JHQXpNOE1jeFlTNWh5a3Zva21iNndnSkdmbWpONGkvS2tBdHplRnBFQjl6SGRuQmJLcnFGQTcyVXR0VHgxU2c5WUVIRU1HSTZ5Y0JXeEhVQkh0MmMxNDdBWTFmbloyZldNRTUyc2krS0g4c2txeVRDQWlJanJuWU82eFI1dFNJVzhMeStPYTlIWVNLblp5d2FLb1IvMmZzYVJ0NkZEZ0lQZnRKK05hYnB3VHorbXRaUGFxRlhWTlNVbmd2NU50Y0tPUmp2eTdjb2ExNzVjQVJJVi9xZStJWGs2Y0ZzY0dVWml0RnRHOVdrejBuSGsyWjBiZUZOSUxGazNqZUVrUnRRMG1HUE0rQTNydFUzUlU1dDZyZ09TK3BvVjkxcEVhWmwySFhMdjZmRnJ4RWNjZGxkaGFNMU9wNDArMGpDSFRiZG5KWThoRngvclZCVlVac0Q1aWx5SEE2YVU5aGNoem1QOUpLdzRmZ09WRXZYek91dUVvSW8vOEdnaUZOSk9CQ2F2WGprTmV0WFQrUW04MUl3blhGVXlXS2FBRXBMV3Zmc2ZyYXFSRWd6ZGZiY25YRVlvbEQvckptWE1zeEl4UWpCcTBFZ1RZRXFLZVFnRk1IeEdiR3NSWHVlMjR4aUFSdS9qVElQaUZoRzVzVVpyNGJzUjlDL3NuMy9oNHI1Yy9qZzNoWkxieWlFNlNiaHFpbGQyV3p6bTQycHB1RlM1NWFNalRiZ1FPZWhiSTBudTBNZy9GNmFVK0g1NjhUcDdnbnppNW9TVFdwR0IwRko4NmQwcnFKNjJVeDJmVHd1ZkFhZlRReG9NWVNWWldlSWtkd3hoU2FIZTR4YjlSd1RlcjZwVDl3UXorNVNjYVprOEhhYjVHZlgvbmM0NjFKb0k3a3ZuZ2lORzJhalZjNE9aUHlrajdra3VHMW9vdnFUR0p1YWxpVHpORGJyYWRzRjlINExQV1NwZ0JDV0hDTGFVMWdwclhpdzFrMHlTNzRBVjJHUnFjeXREdFEwaVZmT2crak90MU4xNkN1N1l2dkR2Q2ZtODE5OFVuRG9HK0hMR2NpVjNjYzhiVkkrSTJkOWJsemkwUGdkOVpZdEp1ZnJqUlJBV0pLa2FEdTl4SEFMUjNlcHcwSVBiYTR4bGx0UUYvODVhT0JnZ1BkRDRqMGNxa0FzWFlKWUxMdWtrWmNPM1YrSm1iSk9taFBlZ2tVRkhTZU5XVVpEeFhuTVZ1VnlPL0ZYaDRGb21xWTYyTXl4bzhTdzJRZ3J4M3V5aGpaUWtMZmFIVTVqTHZ1Z1A4L2JUZGNBK01OTHE5QlhxZXpMZ3RHQ0sycHJZOTI4dnNVaGZOeStsLzNwV2N4bnFFcXJGUEJEUmpNaU90NFRCUmNQYXlTNnlhVUZJaTgwRk4zQ1NydWlCSGNiV2hjQ2c4MFpjWkI2VlRkNDhKbDV2R3hFR0RaWEJ6Mi92WnlzS2VPeG9kbUFKWkRnSGNDVWs1WlFWQkxHSFFoU3l3eEZHOExPMFFucFlLTUg3R3YwUFRWQ2ZGRFkrbXd5aFFkNk9KeUxJQWFTZUhCRGFXYXpZZlFjZFJ0WTdpMGwvb1hRUzhmamFibGFSYmI5aDdZSk0xRDBTbCtST2dGQjNDM3hZalNLTWNmZ2RScU9sU0piVE8zVEJFVlF2RjExcnFWWTdmMUE4ZnVSc3BrMVZwelRtdkl0bm5SNjE1aUcxdkpqMjJNa2owSVl6enFzb051Y0dONVYwUGxKNUxEZE1lLzZRVThaNmZYK2pXeisxZkhBNnNoenhQN0o1bnhCelBTTDlSSGtlckh1bkMwVFlIN3ZCR0IyNDBPWmp3S3IvNFlsR1NwVlZIMS8rbG1vN3BSd3pFVmhleUQ4WU1wNEJIdm1TRkVvdkJPWlJCeWpQbndzS0F0QURYRjlSZ3VkRThFOEpSUDFGQ0lVRWVIc2NtdTdrcElqS2wxQ29BdzcraDhPNllQeHFsenJ5YkY4Q2tmd2JNb2dieWNENzhyRGFMTnhzbnNpL3diK2I5Y3JBZHhEcW15UTBTbFcyV3p0UE1UL1JTekpleTZOT1BQUzFVSFp2ZWI2QUJuWDZ1T1ZyM3QzTmRjQjNScEl3eVQ1czFUV0NVR1NFQ0p3enV4cStBeXVPRDZpMnhtTzh0a0xRV0xhaHdZUWd2VU4vanVxR0tPK21KNm1VTWxmak0veWVvMHpOR1ZxUFhleVV1ODE2c3FnUmsxR2FJTmZmalpIb1RMSTVRekpFV1ErdE1BbzJXOXpqRmh6V2tBSzBjY3NPZTVqQWU2TGtUWjJmOWRmUHZXempmenZMZ2QzSFd3U01iTGhVQ0JBMVdVeDlVak5DRDdMS01tRUJ6a2Q3b0lFSnZIdG1GVlN0WjJsS2NBM045T2ZMdWRVTURjTmdxNU8ycGN2VUtwK2NrZFBGQ2tRWVdDTHVsUTBVWjBJalJJTnlJeUY2a2xWa0tTc1ltTlBnUEtzWnBpVE4wbVUybThjQjY5ZVB2b2l0dlhiMWEzc01DTmF0dndreFFRMk1GZUVLUzd0cUxZd0FxdVNQVHEyZmJEVEVqK0lZMUlTTHAxYWNtK0pJcmNUb3dQTnBBOHp2OW9VSWxzREtONGJBVVFwRzZGUmZuQkEyTEFGZGlEVTdFWUN0RzFKMW1PVXhmN1RPdERzc0ovTERmZlRWaGxkTXZxYStiengxOTdJTjVaYzdhY09xL1ptTUkycW1Jek00WVdDYTl2V0FwRHpYcGJFdnAwRDdQLzF3N1c1VExZRmJGNklGelVnMldhalkxTnB2MlhzODJKVzdISElrdnVxWU9UTDBSZjlMYXVNWnZtM05TdGxYU25BRGJGdHRPcXdyZWdnZ0hIQkZyaHc4RmhnRnNmcmdSS0I2K0pnQWZhWVJFNGNETmtlTkxCRXJ6ZlYrNlppd2g0TUYxMzBrOHNPOTlmRmpxeFBUWUY5V3VKWWRFUWZHVXZwYzJqZmEweUJqU2NPNFFGeXM5RHJ1ckUyVE1UNzZWSDc0ajErSytTVEVtM1lkY2FIWEIzM05NVDVBYzVPMTUrTFQ5VDZlODQ2OVhhb3B6VWkyRGhxd290UjkzVm81SGpPcDg5a0h4WUlKQWRJaVFSZVRxOW93dWVaZWUzb2dOUGsxdXk0eEFWK3BORlhIR250NVFHQjhYVUUrTzVGVmlPNEo2U3BxQXdRc2ZDbXZCMTVhYUFXQk1yUytUOFpVdTRuNVRXdUhVdFN6ZWZMRjlUbXBpRmtmWVUyM2xOQzNRMTdlRExFTU5wZm96VDlkaEcwZjFySWlZd3I5aE1wbHRGaWU2NXVpSlZEZ2hnV0FRUXhnQytFWXZiaEZ0VjFPMXFpZTQ0eDVQcWRLS3pxdlViV1VNRUxneWFVcVNSSFAzNzNiakRzQ1pMUVJBNW1veVNpN2ZraEVISGlBZnhJajdaS3JHMzdTWnZ2bEtBSWlyblJKb3UrWXhmd1pTRWh3bkp6VGY2U2VLU1BkWVg1WGdDd0dVOUMydHVpUStldUVadmdGSkVDVGNhMnk2Y3JmT21JQ0Z2MHJ6QThWU2J0dEkxbTZENVNJYkswVjNYRU1iWGovNDZKTlRLbWRvVW9aaVZnNjRnNFhKNnc2dmgwZkpvRHhBUTRraUthZ2ZOZUNVeXpUM1N1R1dqN01OZlIvVkZNU1VxbmpNQUFDaUxOQ2dESGlRbDRUcXMwTVdGSGFnN1dVMGtKMzZnYnpMYjhKUkRMV1J2Ny8wVC9sSkgrMlpOZ3FPQWlYbzU2OFpCdVc2SWdEYS9DTDN4Wkg4WHBOKzdDVllzV3RPelBuUGJDeERjL1FEY2RscXNVaHNXTFo2QjdhaFdMV2Y1QnRaYWp2OVJ6aXZ1MmNZdjI4cTBiOUN6RkdIQ3FvUWZaWDVQZ2tuSGkzbjdXbXdRcjhaSGJpMjIyckk3amFYNmRGMVdINkVvVi9XSTBrd0pDSnVDck5vcWlXdTcxSVUrTnllaXpPQ3RJOTZ6TG55Q2JWdkV1QlJNZkEwQlVYVzIyM2RzUWp5OUVuczJtOUd6YWVPbTZJaE81TzNHelZ5a2lTVmdhZ0tXYmkxTGFiNSs2bysyUkljSlJvSTBrYllRY3lJRzIxeEk5d3ZkUFcyT0xOMEtyRHo3VmdMVFVYYXJZT3RDdEdhaVhMS2JjbW45bDlXQURnTGdWMDhjVlEzYWI4MmJBT3ZGbWF1NkxVbmpIVWpodVhCd2hnek1PbENXWU9iSXBZcmdKUnAzNzhaNStsaUJ2S01VZEJuTmlpREp4YmVVQkM5R1ZFTURTTTkwQ2lOU203djNoY0FMVHdiSS9jWnl5NDFFNTc2dTR3aGQxS2trZkt4Q05EUWROWVk4QUt0amdBZ3hKUURYS1BiSTJYeFJObGlNWHM0VDhFcjBkV1QxVUQ5a0hsUWZNTGo3Y1pUVG9BUFNSUWFuUmJjTkNPc1VEUE9wZEIvLzRmeGFkWUJqTzVGVGlZcHEya0Y0NDM1NFI5ZkhVK3JTVEpJSGg3cVp3eWVPQ24vNjJOSlh0YXBOUlFYMEtwK3RjRm5WZ2hUd0FoSEdONExjYUJZYmt4R1ZOYXdMbDlQNTRPeURSb2lYQWthbFRMRU1MaGRKMlVFWXlaQjQ5a0NNMUo4SkdoYXllM2xzWHc4Zm51NmpuYWMrQUltV292TVB2YlMyS3RHZWxHUmxKN096UmU3d2lnamZVcktQRmZKRzJnK1NnRE1TUFlrdHFhZnNrVWJ2d2E4WXNoSXdLUlplYWF0QlpscFpUT013clk2THhYbzNZYXRpV05tYXExeTMyTFY5L25KRFFEMjJVQWcyNGZ1VE5URkJFc2FxVDVDQ3dLK0RpS3ZCUDJZTEV5eEV6UlU2bGdsQXY2blV5ZFpyc2pqUnh3elFwa1E1RFhDUjc4WURuNWtWSG05dURrNDdBalJ4TVgwcnp6ajJPZUhLS3R3V1hqK3l2VjNiQ09yVGJYWURYb3R5blZDSTR1SVF4bkxBbHlOeWF6N0FjcDg5a05Ta3FxMDgzOG9uSk1USVdqWm8rZ28wcURkcTRjWTdaejl0N0szWTczd3VScTRXK3lZQjVDeGxraFdGcjc4MWQvN0ZyMThlcTRnNGxXQitOMUIwYmpIV1ljN0hHVlNSblJ0cHVQcXVVaGVCcjQ3NUFUNyszMTFEUHVIQytpSGFXVyszMm5OR3ZzYWFrT0lyUS8vd0s4dDlYZ1NBWFppU1Axb25BbEU2L1JmNG1ZZXFlZE1WNFNTU25ZS01sWkdwcUdtdjNCdDlEQmR4MFV2bjZDTE0xKzE2YzB4SUp0RjQrUWlvdFo5VURKemtLK0pGdkhQajg4Z2d4MlgrS1BMdFRXdUdJSm12UE5INDMvOUYzQVdjSVZJQ2cwNVY2V1N3dTJ6cE5Lc1ZzZ3RneTNOandZbXgvbWthV0RsUmJ1d2RqUUZBdFFQeXg1NmNJcDBqTmpCRDR2N1dXTHB4ZUlPak9XMmpMVnBjNUNVQ0JDbVBPMXI4M1ZNNW9Qb2ZJd2h3RG44SUFUbDZJaHNhazJEc3A5bW96R1dDajk2U1ZaRDhvSHcvSHJrbFpKZWY1cjl5WkR5ZFc1U09ObTVnYW92eFBEaWMzYmhyQXFlaHhUQnBXa0daTEk2UlBzLzdYZGs0WjM1QlRIWC9TNjlPUkRUQXJoYlNiWUFGOVBtYi9kL0ZHZ3I5dG0xdFVRVE4yZTBITkQ4WDJ6bmkxWXVoaThHUjgwMkJaTUpURHozaHdBVWw1ZFFIMDVLVW5XTk5VdFA0eEl0OFlWcHBpS3pFRFdVcHZCc0pVaEp1aU9yTEZPR2VzTTZlcVdxdjZYdndTN2pZRUtjRnFja3lBR1NwNjNmZTY4ODFHUmh1UGpNYlVjNlZ4MXV6VFZpWmd3YjJocEl3dngvaTl6N1ZJTGhNYzFPaldMWWdWV0R4UXhpSkt6VjM1VUd6Vi9CZVZPWjNWSHhKY3R0UjdQb2szVk01cE1uZEFUQmdzY0NlTWV2d1pWMThCR1hPQ1lPaWxWMkxpTmtJNkcvMW1raW16OFhuTGFNYlJFL1FwdWJhYmYyVzliY3ZKU3N3RlNPQ0dRUm9KV1J1SHB5TW5zNklLeVYwT3lLTEhHZ1NUNVhCWlR3VGVHV0syOWZ1WG1LSlZ6TkFqaUdRN2FGa25EMzdGcVNIOWRwVTIxbDFEN0REZ0szVnhVL2MxMDNJV0tpdVpVZUlXeTI4bEhVTnRZNlpuY3dmQnRyWDdPNDVITlh0Y2tpWGk4TFJ1clFnVThXc3lOdXdQUkYvZDIwWW91U3k4MDc3dE5tRjRvYUwyckRlYVVhc002dGR4TjJuVTlYc2Nxdlljd3V2Q3pmSzlXdzQ4eDFaeTlWVjRhUmJWMThHTjk5QUJzZlhwVWxIU2RqZ3VBUFF3UUczWHkyZHcyNXhkUU9GNVpnSTRKU3EvVVRtY1h2ODNraXU1c0xDMGliTVl4eDNRQzJRRE9URjkyOEsxcmdMOGFLdWI5YjY0NENsZFcveU5tUThvTjQ2VXk0NWJ4aVpKNVdjL3NEemFjN1RrOUxWTys3Rll4Vks5VnUwTVg1MTRlSG9ISHA5b3JTWWYwUlNEMlhQb2d3ajZmZFFMNWprQlZaREdQNExVMlV2Y2VvNnhtQy9oZzM3UUhzUXE3RTBiSU44eitOYkFpWTBoNC92NkRTb01GRGI1RzdaUDQyTk13bzFuTjJnWDQvck9ETjlUbWxuMW9IVTh5RzZOemlxQ2tFM1NvUFpCOXFGcXR2Ui94RHUwM082QklrQ3JQckVFZWJXNXV3L3RCdVRvU0NMaHpVcGdEL3BXTDhCdG1CamZab1RUSDE4elJub0JEcEk5S3M1NUxLQlRWcFFKc3lZN0huUituMTVzb3JHWXU2NEFaSWpXOFh6K0IrUlpqNWpSYXA1ZlRIVWlSNXB1WFo4eWdDYnY5N3RKYVpaUFdNNERMMUF0aWhaY0J0MGp4M205S3lVQURWSng2dHNjdHlpZU92OXh1NU92ak9FQnNQenNVU0pqMU03dy95RWZuaXh0RExmbUJWeUw0a2JoTXJjZ20wOW8ydVBidnVwMWZsWlhGN0VuY2JaNUt4UnZza1hQdE8wR29SUnYxUjRIUE5uWEY0akxobERONnQzY0pMTThSUDJwS1ZYTHgxY0JoeVJEUVAzUDdSNHRrQXFqRGt0akk0T2tFTWg4TXducHUvd25YVnU5VXVPNVcxcjROZE90VHVzN01oMUdxQVBLRVVmenl1Z3Z5ZkRhSHFpY0RHT1FGVFlPcmQ2ZVdDRHZhU0IyMFdsRVBCMDVSa01MWi9pZytRN3NsYkxoVTYxeWpGMy9jWFFoQVVHUzB3VmpmOWJFVTYwUWhxQ1FldWMvQ3pXUDl2YS9SMEh0a3FieTdKa2pDYVMxTXQ0Mi9QeU91amFtY0JSSmt6U2MxVWlkMk5SdmllMzFzcVpnK0k5RjRrWENvdnpheC9CSnF4WW5LQjJZamM4RkE1MUpKRUN6czlCT3VtK3JOTVpXbGNvNGlCaXI1cWpLTDhWSUZvdmx1TXBxUUgwV3pSRXRJWWVCQ0tFdHRwNDVmU0ZXcEFxRVpKWWtCYmxBUGFRK2ZTQURZSVhNckUyZlFmV2RmbFljRDB1Z2ZNeGIyVkdjUFJ5eFFSS2poZGFQVXFxdGZQUFdnWlY0aXBkV2paQllDZFBGT1BpSHkzQWZ1WWRtcEYzWWt3NTdVS3pZTE5zQUpLMk42bkxTM3dIaEMzcWlLeTlaVVJjOStyZGRkaytTdWxMb2JQNiswR1ZjWWdKUmpUUVNLcWI2ajdEa3lSamhYZ0VnWmVlNFo2V1UxUTRxbmpQblFpSlRFbkRYYU82b0tkT3JWTkVSbVFIY0RzVU1MRjEzd3d6eXh3Z2wwSHo3VjZmYzc2bk05M3Z5VFAzYmtaMldzVWJ0MS91UGVxNWc5R1RFVjdrWVZQekgyanNReVRDVG1jUGFGV1k0MGpJdGpmRkxiamFpblhQRWlQaXJidTdZeUF2MVg1Z21DY3hOd1dpSHFMdHM5T3Nma3pxM1RycU5kNXVZaW9hc3lpWTdPcHZHRXNQalZaSXVLUEcyMDk2d1B0UE5RNjEvejh2dHpXSE9sT3UzRlNVYVNFa0xzdkdKbk5NbDZYaDR2TndLSkhSVDduTzhOZ0xHa0YvMkxjMGZ0a2ZPQW9NNFFWMkttV1JmTWdHQTBuYmYyb2NVU3RFWThuelh2VE53OHhqZmlFL0RXUE9ZOWg0SXJicThOM0VUbHVSUzV2SHNQTk9IUEVCanRrdmJXeTdabnNaLytUelZObndWbTlrS092RnJLN0E1TE1rdVVBU1NLejRUem9BSTRwWmg0ZTdjMVh3VE1JVHR3Umk1dXJ0K1h4dVQzL0xveWcyaElRL1JkTWtlY2grSVdURkduL05rY2podmJTYmdxZFRjcStWV01VR1hZSDZmQW9yaHJFL1dVQ2VMYm43ZHJ6N0xFTGZ3T3ROd3NnUHUzQ01kZERVSURyR0dYd2Vaa1lsTm1CemY4ZUhvMjlxR2U0UHkyYkYwWHJGWFRvV25vT0c5bkdvT1BnRmJFTXlRUEpoWnk3RGxlTHlVanlGK1dpTE1nLzBFMXdkdkRqYncvUFZyVDNtcDVadzJMR0RkdEd6N1VvZ0U0VjRKWWFrS094Tk5FVU9Va1ljWnRJd0xVKzhjWnFWNTJRVnFZMk1rVlFoaXAydFVIcHBaZDhURThUS1YzUjJnWWQ0SURPbEpqcGl4Z25pdHpiTThqU2dBN3RoM0xjQWExWkU2Q0lPS1FOZnVmNU1MdUtlWUVwZ1B6UEtic0UzTFZwMzhkMGhWWDQrSmsxcVlleFU2c202Wk53emhabXdUd0ZJald1Qk53NWtINERvMDFjd0V5VGNuRDd0YmJDRVl3NENQZzhVcjZ2dmVrK1hNUEs4a3Y5bTlYcFpuSWxuZnptUVpPaXFWV2cwd2VVMGo4MU9ISG9rRHJoenVES0VMdnFWNHNSek1WSytNT0gramc4U3JzdkpubCt2TmVqemVjRkRVRks5bm80TUQvcy8zdFZJaGZ0MTNaWXkvNEFOS2N2NjAvK3FSK05yUGt4V0NKUEtDdlYwU01ZOG96NTFVZU5sajBRQVhZZkc0enhoaUlLS3hmK1Vicm5VYmw4YldRUHd5emY1eUNWNDZPdUNBV3h2R3A5TVZjZENmSC91M00wZ2xwYk9tcFlQOHpoa2hRdVlWRzBPZjhrcVp6UmRSMitjVjN4NGV5VERraTlaT1Y1OXlJRU85VHFPTDVHYXJDcStrVVpDU0lGQVg0NFpOVGE4WlNkYmN2N09YL1VWNC9iNmFROWROZy9OZGFyS25xQUdoMUtRNVJPV1ZDVnBjSmk3YVVPL0JXN2x6NlNOVmN3bEhRRmp1M2tPMVJ3RXoxUFNvaTBRT1dEVXYyOWNPdzdhV05FQ2lZblU4akUreitwTncvU3JNeWJmbU01MFR4ZGZJWGdMV09JRzhVMnJjUkViQ2xPNTRyRFU4dzFXbHRBRHpQUGhOQUcrS2RYKzE0MDJyRUwvL3VGVmsyNDNhMW9XUWlpWFJwTVQ5VjNtSWRzbWRxRENUKzJnU1ArUHZyM0Q0aU9qbFBHYUViNTlkdEcrR3gxT0E5NDRFTytZT0RlVHJ0M3VDOHY0UWEzNWJHUFk0bzgxRUdnMGxzY1hIeXhldytRR2llQjRLVUR5Wm1iSHVqSlpkYnRLakRiYi9zek9IbVdDRnZKZjlyVXdHVk54YXYrbHZDSTQrVGZPWmJ6YzkwdTV3aGJMSzRKaDh6czF0T0NvKzVsNEl4aHk1K0U4TmZURFNwaFlvWU5EOGVUT0dSdmZ6NEprWENndEl2a21zNUZVWkI3Zm9hZElsaUNoMzBlV1JycHRQY21oc1VtTjhmSUQ4NmtwTWJrVGtISndIUkNMM2NNb0NFNm1hUmZ1ME9hRjZDMkN4Z3dXVHJLc01LWnpFSmkySWQ4UWFsUXkyRVoybnpZY0dLS0dXdmtkZHVIdWFwZmVSM0pDYkh3NUpQemZIWllxTzJiRk5JemlFNTcyRmlnSVdyU0gzMHpBSVRpSHBiTDlxZ1IvNTU4clBZZ1FBMnAzb1VLVTFiUnV4L0diV2Fra0g1RDFlbyt0cVpZNmJkU256cmtIYk1sWWdwcFV4UHlWaFI1ME8zQU5YQW1UaFBZUEV1UnJ0T0lrN0hIemZ0SUJiZC9IbnZRT1FiOU15NExkT0RpbTNZTkxiSFR5OEwzaHF6bUJ6SC8raDRXSDF1RjUycEcrajRKbzcvRFFTSVpEbEwxTFlTbDJHZkNZV0V2MTFzZk1zTEQ5MDdqRjBSSG8zUGJvOURRZ0ZQa0p5bTVpZUkyRnplUGx0Q1dqRmVyMWkwYTRYdnVZQzZGV2hnRWcwVUx0OWg0Q3A0VHQzL0tZQ0h0ZGo1YjR0TTFDVkNLYjRuMWt2T2F4OFdHd1Q4Q0F0SVJCV2FHcjc5aE1VRUtkTG1WQSt5eEswWHQwUjRuaUZVUWZHSTIvbEFtWGJPU0U5b2h6eGNnTnhxeW5pVzRRcEUzYk9CalBINkZWclg5dDB6M05CTDNWOGtTUWpGVnNSbTRGNVVsQkpKM3FvVnBCNUpDcTg1MjBmVUJNWGNzdS9pVmJOSVZmN3Z5K2d6RmZyNU0yZFVNS3JWZmVHTnN2ZTNUSHdIbG5iLkg2bWF0TTNCcXNzd2d0M29Uc1pOOXNNdm1zNEg1eFRibFBaVnUxZ2dtZzVzVXRXVGgya1Z6TVAtU3JrNkE3eFdJTnFRcm40VWIzZ1JrN2QxaW5DXzhn"/><input type="hidden" name="_eventId" value="submitDrcomIPLogin"/><input type="hidden" name="geolocation"/><input type="hidden" name="fpVisitorId"/><input 
                               name="submit"
                               type="submit"
                               value="Login9"
                               style="display:none; width: 100%"
                        /></form>

    </el-dialog>

            </div>

    <!-- /* <sw-dialog
      title="公告"
      width="500px"
      :visible.sync="dialogVisible"
      :before-close="handleClose" 
      th:utext="${noticeContent}">
    </sw-dialog> */ --><!-- 通知公告弹框 --><!-- /* <el-dialog
      class="notice-dialog-wrap"
      :visible.sync="noticeDialogVisible"
      width="450px"
      :before-close="closeNotice">
      <div>
        <div class="notice-title">通知公告</div>
        <el-scrollbar>
          <div class="content" th:utext="${loginNoticeContent}"></div>
        </el-scrollbar>
        <div class="notice-btn">
          <sw-button size="small" type="primary" simple round @click="noticeDialogVisible=false">我知道了</sw-button>
        </div>
      </div>
    </el-dialog> */ --><div id="layout"></div>

            <form method="post" id="fm1" action="login" style="display: none;">
                <input type="hidden" id="username" name="username" v-model="passwordLoginUsername" autocomplete="off"/><input type="hidden" id="password" name="password" v-model="passwordLoginPassword" autocomplete="off"/><input type="hidden" id="captcha" name="captcha" v-model="passwordLoginCaptcha" autocomplete="new-captcha" /><input type="checkbox" id="rememberMe" name="rememberMe" v-model="passwordLoginRememberMe" /><input type="hidden" name="currentMenu" value="1"/><input type="hidden" name="failN" value="-1"/><input type="hidden" name="mfaState" value=""/><input type="hidden" name="execution" value="19ebfddc-d5ec-4659-ab8b-0ac7a812cc85_ZXlKaGJHY2lPaUpJVXpVeE1pSjkuZC9UVnBuVlQyaWhzY1E1MHNJM2gxSWV5MnMvMmJrZisyeTFqQVdrUmpOc0xySGM4RDl5TWQzSWIzczlVOTlpSVpaRGpKZURMQXJCclFMODZnYkQzYURDR216VVhDYWh3R0doU1NpNUplU0YyWDhGWEEvN2NKR1VWSUR0ZmQ0dUh0R241OG9HUFl2VXM5ZHc2RHFoSjlFQXVhcGtKQTNzZ1pVSXlBL0JLbW1qTVczejlxZ3R5UkFBbUxJSitaQWtBVW9Ra3l4SVlJTllhT0h6bXI0NERhMG1KVnNMZGNhdDNNT0RSMFZsdmhhMVZpWktEMVNYdlp4R1pYdmNRa29hY3Y1ZmFUQW9YU29NYlU1MUZhT3lWNjY3aWFpdXhQM1VrMVg4RTB1Unl5UGY1amp2akF6ZU53NG8zckdKN0txc3pGeEhQTXhQZW9oSExKWGdGcnc4UEdzNXR0UXozNFk4MlNOS2dEbnkzNUZxMUFtaUxseFN5RTEwbUUxOXB5eDJBdktkVTJDdXV1ZkdTUFltOTJncTdIN0w5MUN4aUx2dE82TW1WSDE5Y2w0M3NSU1dDbUpLNnZkMVhybFJDcGFLZ0M2djVVejFRcGM4d2FoUU5uNG9CY0QvbGhEYlo1LzBzYWlhMmNwQy9EQjQwSVV2OFdFWitKUUN0OEJVYnp3dDA2cFZGbGZKcHlKemJqTktzeWRZaG5TcDQyYVZoM0JaNm15QnBEN2VUYjBUckxEMGVCaS9vaHZKUnhReFFGbFdWd3k3SGJtdFdJQjJOdjJvczdxWG9RSG1NN0M5MGwrVGRLS1dNSTBNZDA3NW5YejlVUUxSOVd6R1ErQTBvYXFVUjJsU01zaTlGaEs0V3JKTTVBUjQrbGhpNUswMUc3YnJoN0VjWHM5MkoxT0s3SWZDVU1FRmhvYmNvckRubDBjQTJsSTk0NzZKQTUxT3B2YWc5Zkl0Ylk0Q3ZjVXBYTk14Y1J4amg0SHpRQXFoaS9ZR08yamxsNS9rOHZEdzlVZndZYzFSVk5JendnQ0tFZ29XOXdLZjV1SUpMbU5xSXB0dzArUmkwdGRnSzBxaTE2aHVjWWRKbk16VW96b01zY294UW52REF5ajhqYVVzZFVqVTM5M3VncVNNNTE2WlVHYjlJaUtNMnN3UzEwMnpoOTVBK00vNkN5WTRNU0h4ek1wNUQwNEpvTFhVK1AvTVVVUWIvejJQZTRzVzVBWEZrZDg1MVhnOUNhWm5rWEJDQ2hlQ1FhWkViM2lMUks4RG5FcXd0MStrVmtvNjdDRHJOZmgrSytnYkNmTVd1b2J2LzNPUWdYQk0wVHNNZFh4Tm1ER3RaZno1a2ZwQ0c5Q2QzdWs3YWJ6N3RubHEzUmxsSjdBSUdWaUpTWm9TaTFyRGpmbU02N2RhQW9EWVF0MzVidDN0YjUzMXJHRjhEQXpRNXpFSU9TT2poODBUVDBoZDF1YUhTbHp5QlRIamFQZUJPNS95alB4Z2w5WE1YbElxWVQ1YkJPMnZ2b3FmdUJxUU92UkV5M1hXYjdURVZIYTQ4bmhSZjQ0d29ZcU8rMjhnS0Q3UURORzIzNW5XNVRBL3NuREU5dmNHYm1pbG9QOEJVZEFLSW5OUmZ3RzRKTFNIdEpPOEMxQUlxYTJVS2ZiR2xQTGI3bVg4YXpSUzdiRE4yQnFqNDVJTG5CSFV0dnhFZTdQSGU3UDYwV3ZtWDBkMlpjTjlyenhUT2F6ZkxyM0hkUGx1bzJwNEk2RTN5UUx2L0hhQU9oVllwVGUzNGZLU1JHQXpNOE1jeFlTNWh5a3Zva21iNndnSkdmbWpONGkvS2tBdHplRnBFQjl6SGRuQmJLcnFGQTcyVXR0VHgxU2c5WUVIRU1HSTZ5Y0JXeEhVQkh0MmMxNDdBWTFmbloyZldNRTUyc2krS0g4c2txeVRDQWlJanJuWU82eFI1dFNJVzhMeStPYTlIWVNLblp5d2FLb1IvMmZzYVJ0NkZEZ0lQZnRKK05hYnB3VHorbXRaUGFxRlhWTlNVbmd2NU50Y0tPUmp2eTdjb2ExNzVjQVJJVi9xZStJWGs2Y0ZzY0dVWml0RnRHOVdrejBuSGsyWjBiZUZOSUxGazNqZUVrUnRRMG1HUE0rQTNydFUzUlU1dDZyZ09TK3BvVjkxcEVhWmwySFhMdjZmRnJ4RWNjZGxkaGFNMU9wNDArMGpDSFRiZG5KWThoRngvclZCVlVac0Q1aWx5SEE2YVU5aGNoem1QOUpLdzRmZ09WRXZYek91dUVvSW8vOEdnaUZOSk9CQ2F2WGprTmV0WFQrUW04MUl3blhGVXlXS2FBRXBMV3Zmc2ZyYXFSRWd6ZGZiY25YRVlvbEQvckptWE1zeEl4UWpCcTBFZ1RZRXFLZVFnRk1IeEdiR3NSWHVlMjR4aUFSdS9qVElQaUZoRzVzVVpyNGJzUjlDL3NuMy9oNHI1Yy9qZzNoWkxieWlFNlNiaHFpbGQyV3p6bTQycHB1RlM1NWFNalRiZ1FPZWhiSTBudTBNZy9GNmFVK0g1NjhUcDdnbnppNW9TVFdwR0IwRko4NmQwcnFKNjJVeDJmVHd1ZkFhZlRReG9NWVNWWldlSWtkd3hoU2FIZTR4YjlSd1RlcjZwVDl3UXorNVNjYVprOEhhYjVHZlgvbmM0NjFKb0k3a3ZuZ2lORzJhalZjNE9aUHlrajdra3VHMW9vdnFUR0p1YWxpVHpORGJyYWRzRjlINExQV1NwZ0JDV0hDTGFVMWdwclhpdzFrMHlTNzRBVjJHUnFjeXREdFEwaVZmT2crak90MU4xNkN1N1l2dkR2Q2ZtODE5OFVuRG9HK0hMR2NpVjNjYzhiVkkrSTJkOWJsemkwUGdkOVpZdEp1ZnJqUlJBV0pLa2FEdTl4SEFMUjNlcHcwSVBiYTR4bGx0UUYvODVhT0JnZ1BkRDRqMGNxa0FzWFlKWUxMdWtrWmNPM1YrSm1iSk9taFBlZ2tVRkhTZU5XVVpEeFhuTVZ1VnlPL0ZYaDRGb21xWTYyTXl4bzhTdzJRZ3J4M3V5aGpaUWtMZmFIVTVqTHZ1Z1A4L2JUZGNBK01OTHE5QlhxZXpMZ3RHQ0sycHJZOTI4dnNVaGZOeStsLzNwV2N4bnFFcXJGUEJEUmpNaU90NFRCUmNQYXlTNnlhVUZJaTgwRk4zQ1NydWlCSGNiV2hjQ2c4MFpjWkI2VlRkNDhKbDV2R3hFR0RaWEJ6Mi92WnlzS2VPeG9kbUFKWkRnSGNDVWs1WlFWQkxHSFFoU3l3eEZHOExPMFFucFlLTUg3R3YwUFRWQ2ZGRFkrbXd5aFFkNk9KeUxJQWFTZUhCRGFXYXpZZlFjZFJ0WTdpMGwvb1hRUzhmamFibGFSYmI5aDdZSk0xRDBTbCtST2dGQjNDM3hZalNLTWNmZ2RScU9sU0piVE8zVEJFVlF2RjExcnFWWTdmMUE4ZnVSc3BrMVZwelRtdkl0bm5SNjE1aUcxdkpqMjJNa2owSVl6enFzb051Y0dONVYwUGxKNUxEZE1lLzZRVThaNmZYK2pXeisxZkhBNnNoenhQN0o1bnhCelBTTDlSSGtlckh1bkMwVFlIN3ZCR0IyNDBPWmp3S3IvNFlsR1NwVlZIMS8rbG1vN3BSd3pFVmhleUQ4WU1wNEJIdm1TRkVvdkJPWlJCeWpQbndzS0F0QURYRjlSZ3VkRThFOEpSUDFGQ0lVRWVIc2NtdTdrcElqS2wxQ29BdzcraDhPNllQeHFsenJ5YkY4Q2tmd2JNb2dieWNENzhyRGFMTnhzbnNpL3diK2I5Y3JBZHhEcW15UTBTbFcyV3p0UE1UL1JTekpleTZOT1BQUzFVSFp2ZWI2QUJuWDZ1T1ZyM3QzTmRjQjNScEl3eVQ1czFUV0NVR1NFQ0p3enV4cStBeXVPRDZpMnhtTzh0a0xRV0xhaHdZUWd2VU4vanVxR0tPK21KNm1VTWxmak0veWVvMHpOR1ZxUFhleVV1ODE2c3FnUmsxR2FJTmZmalpIb1RMSTVRekpFV1ErdE1BbzJXOXpqRmh6V2tBSzBjY3NPZTVqQWU2TGtUWjJmOWRmUHZXempmenZMZ2QzSFd3U01iTGhVQ0JBMVdVeDlVak5DRDdMS01tRUJ6a2Q3b0lFSnZIdG1GVlN0WjJsS2NBM045T2ZMdWRVTURjTmdxNU8ycGN2VUtwK2NrZFBGQ2tRWVdDTHVsUTBVWjBJalJJTnlJeUY2a2xWa0tTc1ltTlBnUEtzWnBpVE4wbVUybThjQjY5ZVB2b2l0dlhiMWEzc01DTmF0dndreFFRMk1GZUVLUzd0cUxZd0FxdVNQVHEyZmJEVEVqK0lZMUlTTHAxYWNtK0pJcmNUb3dQTnBBOHp2OW9VSWxzREtONGJBVVFwRzZGUmZuQkEyTEFGZGlEVTdFWUN0RzFKMW1PVXhmN1RPdERzc0ovTERmZlRWaGxkTXZxYStiengxOTdJTjVaYzdhY09xL1ptTUkycW1Jek00WVdDYTl2V0FwRHpYcGJFdnAwRDdQLzF3N1c1VExZRmJGNklGelVnMldhalkxTnB2MlhzODJKVzdISElrdnVxWU9UTDBSZjlMYXVNWnZtM05TdGxYU25BRGJGdHRPcXdyZWdnZ0hIQkZyaHc4RmhnRnNmcmdSS0I2K0pnQWZhWVJFNGNETmtlTkxCRXJ6ZlYrNlppd2g0TUYxMzBrOHNPOTlmRmpxeFBUWUY5V3VKWWRFUWZHVXZwYzJqZmEweUJqU2NPNFFGeXM5RHJ1ckUyVE1UNzZWSDc0ajErSytTVEVtM1lkY2FIWEIzM05NVDVBYzVPMTUrTFQ5VDZlODQ2OVhhb3B6VWkyRGhxd290UjkzVm81SGpPcDg5a0h4WUlKQWRJaVFSZVRxOW93dWVaZWUzb2dOUGsxdXk0eEFWK3BORlhIR250NVFHQjhYVUUrTzVGVmlPNEo2U3BxQXdRc2ZDbXZCMTVhYUFXQk1yUytUOFpVdTRuNVRXdUhVdFN6ZWZMRjlUbXBpRmtmWVUyM2xOQzNRMTdlRExFTU5wZm96VDlkaEcwZjFySWlZd3I5aE1wbHRGaWU2NXVpSlZEZ2hnV0FRUXhnQytFWXZiaEZ0VjFPMXFpZTQ0eDVQcWRLS3pxdlViV1VNRUxneWFVcVNSSFAzNzNiakRzQ1pMUVJBNW1veVNpN2ZraEVISGlBZnhJajdaS3JHMzdTWnZ2bEtBSWlyblJKb3UrWXhmd1pTRWh3bkp6VGY2U2VLU1BkWVg1WGdDd0dVOUMydHVpUStldUVadmdGSkVDVGNhMnk2Y3JmT21JQ0Z2MHJ6QThWU2J0dEkxbTZENVNJYkswVjNYRU1iWGovNDZKTlRLbWRvVW9aaVZnNjRnNFhKNnc2dmgwZkpvRHhBUTRraUthZ2ZOZUNVeXpUM1N1R1dqN01OZlIvVkZNU1VxbmpNQUFDaUxOQ2dESGlRbDRUcXMwTVdGSGFnN1dVMGtKMzZnYnpMYjhKUkRMV1J2Ny8wVC9sSkgrMlpOZ3FPQWlYbzU2OFpCdVc2SWdEYS9DTDN4Wkg4WHBOKzdDVllzV3RPelBuUGJDeERjL1FEY2RscXNVaHNXTFo2QjdhaFdMV2Y1QnRaYWp2OVJ6aXZ1MmNZdjI4cTBiOUN6RkdIQ3FvUWZaWDVQZ2tuSGkzbjdXbXdRcjhaSGJpMjIyckk3amFYNmRGMVdINkVvVi9XSTBrd0pDSnVDck5vcWlXdTcxSVUrTnllaXpPQ3RJOTZ6TG55Q2JWdkV1QlJNZkEwQlVYVzIyM2RzUWp5OUVuczJtOUd6YWVPbTZJaE81TzNHelZ5a2lTVmdhZ0tXYmkxTGFiNSs2bysyUkljSlJvSTBrYllRY3lJRzIxeEk5d3ZkUFcyT0xOMEtyRHo3VmdMVFVYYXJZT3RDdEdhaVhMS2JjbW45bDlXQURnTGdWMDhjVlEzYWI4MmJBT3ZGbWF1NkxVbmpIVWpodVhCd2hnek1PbENXWU9iSXBZcmdKUnAzNzhaNStsaUJ2S01VZEJuTmlpREp4YmVVQkM5R1ZFTURTTTkwQ2lOU203djNoY0FMVHdiSS9jWnl5NDFFNTc2dTR3aGQxS2trZkt4Q05EUWROWVk4QUt0amdBZ3hKUURYS1BiSTJYeFJObGlNWHM0VDhFcjBkV1QxVUQ5a0hsUWZNTGo3Y1pUVG9BUFNSUWFuUmJjTkNPc1VEUE9wZEIvLzRmeGFkWUJqTzVGVGlZcHEya0Y0NDM1NFI5ZkhVK3JTVEpJSGg3cVp3eWVPQ24vNjJOSlh0YXBOUlFYMEtwK3RjRm5WZ2hUd0FoSEdONExjYUJZYmt4R1ZOYXdMbDlQNTRPeURSb2lYQWthbFRMRU1MaGRKMlVFWXlaQjQ5a0NNMUo4SkdoYXllM2xzWHc4Zm51NmpuYWMrQUltV292TVB2YlMyS3RHZWxHUmxKN096UmU3d2lnamZVcktQRmZKRzJnK1NnRE1TUFlrdHFhZnNrVWJ2d2E4WXNoSXdLUlplYWF0QlpscFpUT013clk2THhYbzNZYXRpV05tYXExeTMyTFY5L25KRFFEMjJVQWcyNGZ1VE5URkJFc2FxVDVDQ3dLK0RpS3ZCUDJZTEV5eEV6UlU2bGdsQXY2blV5ZFpyc2pqUnh3elFwa1E1RFhDUjc4WURuNWtWSG05dURrNDdBalJ4TVgwcnp6ajJPZUhLS3R3V1hqK3l2VjNiQ09yVGJYWURYb3R5blZDSTR1SVF4bkxBbHlOeWF6N0FjcDg5a05Ta3FxMDgzOG9uSk1USVdqWm8rZ28wcURkcTRjWTdaejl0N0szWTczd3VScTRXK3lZQjVDeGxraFdGcjc4MWQvN0ZyMThlcTRnNGxXQitOMUIwYmpIV1ljN0hHVlNSblJ0cHVQcXVVaGVCcjQ3NUFUNyszMTFEUHVIQytpSGFXVyszMm5OR3ZzYWFrT0lyUS8vd0s4dDlYZ1NBWFppU1Axb25BbEU2L1JmNG1ZZXFlZE1WNFNTU25ZS01sWkdwcUdtdjNCdDlEQmR4MFV2bjZDTE0xKzE2YzB4SUp0RjQrUWlvdFo5VURKemtLK0pGdkhQajg4Z2d4MlgrS1BMdFRXdUdJSm12UE5INDMvOUYzQVdjSVZJQ2cwNVY2V1N3dTJ6cE5Lc1ZzZ3RneTNOandZbXgvbWthV0RsUmJ1d2RqUUZBdFFQeXg1NmNJcDBqTmpCRDR2N1dXTHB4ZUlPak9XMmpMVnBjNUNVQ0JDbVBPMXI4M1ZNNW9Qb2ZJd2h3RG44SUFUbDZJaHNhazJEc3A5bW96R1dDajk2U1ZaRDhvSHcvSHJrbFpKZWY1cjl5WkR5ZFc1U09ObTVnYW92eFBEaWMzYmhyQXFlaHhUQnBXa0daTEk2UlBzLzdYZGs0WjM1QlRIWC9TNjlPUkRUQXJoYlNiWUFGOVBtYi9kL0ZHZ3I5dG0xdFVRVE4yZTBITkQ4WDJ6bmkxWXVoaThHUjgwMkJaTUpURHozaHdBVWw1ZFFIMDVLVW5XTk5VdFA0eEl0OFlWcHBpS3pFRFdVcHZCc0pVaEp1aU9yTEZPR2VzTTZlcVdxdjZYdndTN2pZRUtjRnFja3lBR1NwNjNmZTY4ODFHUmh1UGpNYlVjNlZ4MXV6VFZpWmd3YjJocEl3dngvaTl6N1ZJTGhNYzFPaldMWWdWV0R4UXhpSkt6VjM1VUd6Vi9CZVZPWjNWSHhKY3R0UjdQb2szVk01cE1uZEFUQmdzY0NlTWV2d1pWMThCR1hPQ1lPaWxWMkxpTmtJNkcvMW1raW16OFhuTGFNYlJFL1FwdWJhYmYyVzliY3ZKU3N3RlNPQ0dRUm9KV1J1SHB5TW5zNklLeVYwT3lLTEhHZ1NUNVhCWlR3VGVHV0syOWZ1WG1LSlZ6TkFqaUdRN2FGa25EMzdGcVNIOWRwVTIxbDFEN0REZ0szVnhVL2MxMDNJV0tpdVpVZUlXeTI4bEhVTnRZNlpuY3dmQnRyWDdPNDVITlh0Y2tpWGk4TFJ1clFnVThXc3lOdXdQUkYvZDIwWW91U3k4MDc3dE5tRjRvYUwyckRlYVVhc002dGR4TjJuVTlYc2Nxdlljd3V2Q3pmSzlXdzQ4eDFaeTlWVjRhUmJWMThHTjk5QUJzZlhwVWxIU2RqZ3VBUFF3UUczWHkyZHcyNXhkUU9GNVpnSTRKU3EvVVRtY1h2ODNraXU1c0xDMGliTVl4eDNRQzJRRE9URjkyOEsxcmdMOGFLdWI5YjY0NENsZFcveU5tUThvTjQ2VXk0NWJ4aVpKNVdjL3NEemFjN1RrOUxWTys3Rll4Vks5VnUwTVg1MTRlSG9ISHA5b3JTWWYwUlNEMlhQb2d3ajZmZFFMNWprQlZaREdQNExVMlV2Y2VvNnhtQy9oZzM3UUhzUXE3RTBiSU44eitOYkFpWTBoNC92NkRTb01GRGI1RzdaUDQyTk13bzFuTjJnWDQvck9ETjlUbWxuMW9IVTh5RzZOemlxQ2tFM1NvUFpCOXFGcXR2Ui94RHUwM082QklrQ3JQckVFZWJXNXV3L3RCdVRvU0NMaHpVcGdEL3BXTDhCdG1CamZab1RUSDE4elJub0JEcEk5S3M1NUxLQlRWcFFKc3lZN0huUituMTVzb3JHWXU2NEFaSWpXOFh6K0IrUlpqNWpSYXA1ZlRIVWlSNXB1WFo4eWdDYnY5N3RKYVpaUFdNNERMMUF0aWhaY0J0MGp4M205S3lVQURWSng2dHNjdHlpZU92OXh1NU92ak9FQnNQenNVU0pqMU03dy95RWZuaXh0RExmbUJWeUw0a2JoTXJjZ20wOW8ydVBidnVwMWZsWlhGN0VuY2JaNUt4UnZza1hQdE8wR29SUnYxUjRIUE5uWEY0akxobERONnQzY0pMTThSUDJwS1ZYTHgxY0JoeVJEUVAzUDdSNHRrQXFqRGt0akk0T2tFTWg4TXducHUvd25YVnU5VXVPNVcxcjROZE90VHVzN01oMUdxQVBLRVVmenl1Z3Z5ZkRhSHFpY0RHT1FGVFlPcmQ2ZVdDRHZhU0IyMFdsRVBCMDVSa01MWi9pZytRN3NsYkxoVTYxeWpGMy9jWFFoQVVHUzB3VmpmOWJFVTYwUWhxQ1FldWMvQ3pXUDl2YS9SMEh0a3FieTdKa2pDYVMxTXQ0Mi9QeU91amFtY0JSSmt6U2MxVWlkMk5SdmllMzFzcVpnK0k5RjRrWENvdnpheC9CSnF4WW5LQjJZamM4RkE1MUpKRUN6czlCT3VtK3JOTVpXbGNvNGlCaXI1cWpLTDhWSUZvdmx1TXBxUUgwV3pSRXRJWWVCQ0tFdHRwNDVmU0ZXcEFxRVpKWWtCYmxBUGFRK2ZTQURZSVhNckUyZlFmV2RmbFljRDB1Z2ZNeGIyVkdjUFJ5eFFSS2poZGFQVXFxdGZQUFdnWlY0aXBkV2paQllDZFBGT1BpSHkzQWZ1WWRtcEYzWWt3NTdVS3pZTE5zQUpLMk42bkxTM3dIaEMzcWlLeTlaVVJjOStyZGRkaytTdWxMb2JQNiswR1ZjWWdKUmpUUVNLcWI2ajdEa3lSamhYZ0VnWmVlNFo2V1UxUTRxbmpQblFpSlRFbkRYYU82b0tkT3JWTkVSbVFIY0RzVU1MRjEzd3d6eXh3Z2wwSHo3VjZmYzc2bk05M3Z5VFAzYmtaMldzVWJ0MS91UGVxNWc5R1RFVjdrWVZQekgyanNReVRDVG1jUGFGV1k0MGpJdGpmRkxiamFpblhQRWlQaXJidTdZeUF2MVg1Z21DY3hOd1dpSHFMdHM5T3Nma3pxM1RycU5kNXVZaW9hc3lpWTdPcHZHRXNQalZaSXVLUEcyMDk2d1B0UE5RNjEvejh2dHpXSE9sT3UzRlNVYVNFa0xzdkdKbk5NbDZYaDR2TndLSkhSVDduTzhOZ0xHa0YvMkxjMGZ0a2ZPQW9NNFFWMkttV1JmTWdHQTBuYmYyb2NVU3RFWThuelh2VE53OHhqZmlFL0RXUE9ZOWg0SXJicThOM0VUbHVSUzV2SHNQTk9IUEVCanRrdmJXeTdabnNaLytUelZObndWbTlrS092RnJLN0E1TE1rdVVBU1NLejRUem9BSTRwWmg0ZTdjMVh3VE1JVHR3Umk1dXJ0K1h4dVQzL0xveWcyaElRL1JkTWtlY2grSVdURkduL05rY2podmJTYmdxZFRjcStWV01VR1hZSDZmQW9yaHJFL1dVQ2VMYm43ZHJ6N0xFTGZ3T3ROd3NnUHUzQ01kZERVSURyR0dYd2Vaa1lsTm1CemY4ZUhvMjlxR2U0UHkyYkYwWHJGWFRvV25vT0c5bkdvT1BnRmJFTXlRUEpoWnk3RGxlTHlVanlGK1dpTE1nLzBFMXdkdkRqYncvUFZyVDNtcDVadzJMR0RkdEd6N1VvZ0U0VjRKWWFrS094Tk5FVU9Va1ljWnRJd0xVKzhjWnFWNTJRVnFZMk1rVlFoaXAydFVIcHBaZDhURThUS1YzUjJnWWQ0SURPbEpqcGl4Z25pdHpiTThqU2dBN3RoM0xjQWExWkU2Q0lPS1FOZnVmNU1MdUtlWUVwZ1B6UEtic0UzTFZwMzhkMGhWWDQrSmsxcVlleFU2c202Wk53emhabXdUd0ZJald1Qk53NWtINERvMDFjd0V5VGNuRDd0YmJDRVl3NENQZzhVcjZ2dmVrK1hNUEs4a3Y5bTlYcFpuSWxuZnptUVpPaXFWV2cwd2VVMGo4MU9ISG9rRHJoenVES0VMdnFWNHNSek1WSytNT0gramc4U3JzdkpubCt2TmVqemVjRkRVRks5bm80TUQvcy8zdFZJaGZ0MTNaWXkvNEFOS2N2NjAvK3FSK05yUGt4V0NKUEtDdlYwU01ZOG96NTFVZU5sajBRQVhZZkc0enhoaUlLS3hmK1Vicm5VYmw4YldRUHd5emY1eUNWNDZPdUNBV3h2R3A5TVZjZENmSC91M00wZ2xwYk9tcFlQOHpoa2hRdVlWRzBPZjhrcVp6UmRSMitjVjN4NGV5VERraTlaT1Y1OXlJRU85VHFPTDVHYXJDcStrVVpDU0lGQVg0NFpOVGE4WlNkYmN2N09YL1VWNC9iNmFROWROZy9OZGFyS25xQUdoMUtRNVJPV1ZDVnBjSmk3YVVPL0JXN2x6NlNOVmN3bEhRRmp1M2tPMVJ3RXoxUFNvaTBRT1dEVXYyOWNPdzdhV05FQ2lZblU4akUreitwTncvU3JNeWJmbU01MFR4ZGZJWGdMV09JRzhVMnJjUkViQ2xPNTRyRFU4dzFXbHRBRHpQUGhOQUcrS2RYKzE0MDJyRUwvL3VGVmsyNDNhMW9XUWlpWFJwTVQ5VjNtSWRzbWRxRENUKzJnU1ArUHZyM0Q0aU9qbFBHYUViNTlkdEcrR3gxT0E5NDRFTytZT0RlVHJ0M3VDOHY0UWEzNWJHUFk0bzgxRUdnMGxzY1hIeXhldytRR2llQjRLVUR5Wm1iSHVqSlpkYnRLakRiYi9zek9IbVdDRnZKZjlyVXdHVk54YXYrbHZDSTQrVGZPWmJ6YzkwdTV3aGJMSzRKaDh6czF0T0NvKzVsNEl4aHk1K0U4TmZURFNwaFlvWU5EOGVUT0dSdmZ6NEprWENndEl2a21zNUZVWkI3Zm9hZElsaUNoMzBlV1JycHRQY21oc1VtTjhmSUQ4NmtwTWJrVGtISndIUkNMM2NNb0NFNm1hUmZ1ME9hRjZDMkN4Z3dXVHJLc01LWnpFSmkySWQ4UWFsUXkyRVoybnpZY0dLS0dXdmtkZHVIdWFwZmVSM0pDYkh3NUpQemZIWllxTzJiRk5JemlFNTcyRmlnSVdyU0gzMHpBSVRpSHBiTDlxZ1IvNTU4clBZZ1FBMnAzb1VLVTFiUnV4L0diV2Fra0g1RDFlbyt0cVpZNmJkU256cmtIYk1sWWdwcFV4UHlWaFI1ME8zQU5YQW1UaFBZUEV1UnJ0T0lrN0hIemZ0SUJiZC9IbnZRT1FiOU15NExkT0RpbTNZTkxiSFR5OEwzaHF6bUJ6SC8raDRXSDF1RjUycEcrajRKbzcvRFFTSVpEbEwxTFlTbDJHZkNZV0V2MTFzZk1zTEQ5MDdqRjBSSG8zUGJvOURRZ0ZQa0p5bTVpZUkyRnplUGx0Q1dqRmVyMWkwYTRYdnVZQzZGV2hnRWcwVUx0OWg0Q3A0VHQzL0tZQ0h0ZGo1YjR0TTFDVkNLYjRuMWt2T2F4OFdHd1Q4Q0F0SVJCV2FHcjc5aE1VRUtkTG1WQSt5eEswWHQwUjRuaUZVUWZHSTIvbEFtWGJPU0U5b2h6eGNnTnhxeW5pVzRRcEUzYk9CalBINkZWclg5dDB6M05CTDNWOGtTUWpGVnNSbTRGNVVsQkpKM3FvVnBCNUpDcTg1MjBmVUJNWGNzdS9pVmJOSVZmN3Z5K2d6RmZyNU0yZFVNS3JWZmVHTnN2ZTNUSHdIbG5iLkg2bWF0TTNCcXNzd2d0M29Uc1pOOXNNdm1zNEg1eFRibFBaVnUxZ2dtZzVzVXRXVGgya1Z6TVAtU3JrNkE3eFdJTnFRcm40VWIzZ1JrN2QxaW5DXzhn"/><input type="hidden" name="_eventId" value="submit"/><input type="hidden" name="geolocation"/><input type="hidden" name="fpVisitorId"/><input type="hidden" name="trustAgent" value="" /><input 
                       name="submit1"
                       type="submit"
                       value="Login1"
                       style="display:none; width: 100%"
                /><div id="loginError1">
                        </div>

  <script type="text/javascript">
    var currentMenu = null;
    if (currentMenu == "1") {
      var containerFormInput = $("#fm1Input");
      var containerForm = $("#fm1");
      var originalUsername = null;
      if (originalUsername == null) {
        originalUsername = null;
      }
      var hasErrors = false;
      var errors = [];

      // console.log("trigger processLoginError, passwordLogin");
      // processLoginError(containerFormInput, containerForm, originalUsername, hasErrors, errors, "passwordLogin");
      console.log("init processLoginError", "passwordLogin");
      loginError = {
          containerFormInput: containerFormInput,
          containerForm: containerForm,
          originalUsername: originalUsername,
          hasErrors: hasErrors,
          errors: errors,
          loginType: "passwordLogin",
      };
    }
  </script>

            </form>

            <form method="post" id="fm2" action="login" style="display: none;">
                <input type="hidden" id="username" name="username" v-model="smsCodeLoginUsername" autocomplete="new-username"/><input type="hidden" id="password" name="password" v-model="smsCodeLoginPassword" autocomplete="new-password"/><input type="hidden" id="captcha" name="captcha" v-model="smsCodeLoginCaptcha" autocomplete="new-captcha" /><input type="hidden" name="currentMenu" value="2"/><input type="hidden" name="failN" value="-1"/><input type="hidden" name="mfaState" value=""/><input type="hidden" name="execution" value="19ebfddc-d5ec-4659-ab8b-0ac7a812cc85_ZXlKaGJHY2lPaUpJVXpVeE1pSjkuZC9UVnBuVlQyaWhzY1E1MHNJM2gxSWV5MnMvMmJrZisyeTFqQVdrUmpOc0xySGM4RDl5TWQzSWIzczlVOTlpSVpaRGpKZURMQXJCclFMODZnYkQzYURDR216VVhDYWh3R0doU1NpNUplU0YyWDhGWEEvN2NKR1VWSUR0ZmQ0dUh0R241OG9HUFl2VXM5ZHc2RHFoSjlFQXVhcGtKQTNzZ1pVSXlBL0JLbW1qTVczejlxZ3R5UkFBbUxJSitaQWtBVW9Ra3l4SVlJTllhT0h6bXI0NERhMG1KVnNMZGNhdDNNT0RSMFZsdmhhMVZpWktEMVNYdlp4R1pYdmNRa29hY3Y1ZmFUQW9YU29NYlU1MUZhT3lWNjY3aWFpdXhQM1VrMVg4RTB1Unl5UGY1amp2akF6ZU53NG8zckdKN0txc3pGeEhQTXhQZW9oSExKWGdGcnc4UEdzNXR0UXozNFk4MlNOS2dEbnkzNUZxMUFtaUxseFN5RTEwbUUxOXB5eDJBdktkVTJDdXV1ZkdTUFltOTJncTdIN0w5MUN4aUx2dE82TW1WSDE5Y2w0M3NSU1dDbUpLNnZkMVhybFJDcGFLZ0M2djVVejFRcGM4d2FoUU5uNG9CY0QvbGhEYlo1LzBzYWlhMmNwQy9EQjQwSVV2OFdFWitKUUN0OEJVYnp3dDA2cFZGbGZKcHlKemJqTktzeWRZaG5TcDQyYVZoM0JaNm15QnBEN2VUYjBUckxEMGVCaS9vaHZKUnhReFFGbFdWd3k3SGJtdFdJQjJOdjJvczdxWG9RSG1NN0M5MGwrVGRLS1dNSTBNZDA3NW5YejlVUUxSOVd6R1ErQTBvYXFVUjJsU01zaTlGaEs0V3JKTTVBUjQrbGhpNUswMUc3YnJoN0VjWHM5MkoxT0s3SWZDVU1FRmhvYmNvckRubDBjQTJsSTk0NzZKQTUxT3B2YWc5Zkl0Ylk0Q3ZjVXBYTk14Y1J4amg0SHpRQXFoaS9ZR08yamxsNS9rOHZEdzlVZndZYzFSVk5JendnQ0tFZ29XOXdLZjV1SUpMbU5xSXB0dzArUmkwdGRnSzBxaTE2aHVjWWRKbk16VW96b01zY294UW52REF5ajhqYVVzZFVqVTM5M3VncVNNNTE2WlVHYjlJaUtNMnN3UzEwMnpoOTVBK00vNkN5WTRNU0h4ek1wNUQwNEpvTFhVK1AvTVVVUWIvejJQZTRzVzVBWEZrZDg1MVhnOUNhWm5rWEJDQ2hlQ1FhWkViM2lMUks4RG5FcXd0MStrVmtvNjdDRHJOZmgrSytnYkNmTVd1b2J2LzNPUWdYQk0wVHNNZFh4Tm1ER3RaZno1a2ZwQ0c5Q2QzdWs3YWJ6N3RubHEzUmxsSjdBSUdWaUpTWm9TaTFyRGpmbU02N2RhQW9EWVF0MzVidDN0YjUzMXJHRjhEQXpRNXpFSU9TT2poODBUVDBoZDF1YUhTbHp5QlRIamFQZUJPNS95alB4Z2w5WE1YbElxWVQ1YkJPMnZ2b3FmdUJxUU92UkV5M1hXYjdURVZIYTQ4bmhSZjQ0d29ZcU8rMjhnS0Q3UURORzIzNW5XNVRBL3NuREU5dmNHYm1pbG9QOEJVZEFLSW5OUmZ3RzRKTFNIdEpPOEMxQUlxYTJVS2ZiR2xQTGI3bVg4YXpSUzdiRE4yQnFqNDVJTG5CSFV0dnhFZTdQSGU3UDYwV3ZtWDBkMlpjTjlyenhUT2F6ZkxyM0hkUGx1bzJwNEk2RTN5UUx2L0hhQU9oVllwVGUzNGZLU1JHQXpNOE1jeFlTNWh5a3Zva21iNndnSkdmbWpONGkvS2tBdHplRnBFQjl6SGRuQmJLcnFGQTcyVXR0VHgxU2c5WUVIRU1HSTZ5Y0JXeEhVQkh0MmMxNDdBWTFmbloyZldNRTUyc2krS0g4c2txeVRDQWlJanJuWU82eFI1dFNJVzhMeStPYTlIWVNLblp5d2FLb1IvMmZzYVJ0NkZEZ0lQZnRKK05hYnB3VHorbXRaUGFxRlhWTlNVbmd2NU50Y0tPUmp2eTdjb2ExNzVjQVJJVi9xZStJWGs2Y0ZzY0dVWml0RnRHOVdrejBuSGsyWjBiZUZOSUxGazNqZUVrUnRRMG1HUE0rQTNydFUzUlU1dDZyZ09TK3BvVjkxcEVhWmwySFhMdjZmRnJ4RWNjZGxkaGFNMU9wNDArMGpDSFRiZG5KWThoRngvclZCVlVac0Q1aWx5SEE2YVU5aGNoem1QOUpLdzRmZ09WRXZYek91dUVvSW8vOEdnaUZOSk9CQ2F2WGprTmV0WFQrUW04MUl3blhGVXlXS2FBRXBMV3Zmc2ZyYXFSRWd6ZGZiY25YRVlvbEQvckptWE1zeEl4UWpCcTBFZ1RZRXFLZVFnRk1IeEdiR3NSWHVlMjR4aUFSdS9qVElQaUZoRzVzVVpyNGJzUjlDL3NuMy9oNHI1Yy9qZzNoWkxieWlFNlNiaHFpbGQyV3p6bTQycHB1RlM1NWFNalRiZ1FPZWhiSTBudTBNZy9GNmFVK0g1NjhUcDdnbnppNW9TVFdwR0IwRko4NmQwcnFKNjJVeDJmVHd1ZkFhZlRReG9NWVNWWldlSWtkd3hoU2FIZTR4YjlSd1RlcjZwVDl3UXorNVNjYVprOEhhYjVHZlgvbmM0NjFKb0k3a3ZuZ2lORzJhalZjNE9aUHlrajdra3VHMW9vdnFUR0p1YWxpVHpORGJyYWRzRjlINExQV1NwZ0JDV0hDTGFVMWdwclhpdzFrMHlTNzRBVjJHUnFjeXREdFEwaVZmT2crak90MU4xNkN1N1l2dkR2Q2ZtODE5OFVuRG9HK0hMR2NpVjNjYzhiVkkrSTJkOWJsemkwUGdkOVpZdEp1ZnJqUlJBV0pLa2FEdTl4SEFMUjNlcHcwSVBiYTR4bGx0UUYvODVhT0JnZ1BkRDRqMGNxa0FzWFlKWUxMdWtrWmNPM1YrSm1iSk9taFBlZ2tVRkhTZU5XVVpEeFhuTVZ1VnlPL0ZYaDRGb21xWTYyTXl4bzhTdzJRZ3J4M3V5aGpaUWtMZmFIVTVqTHZ1Z1A4L2JUZGNBK01OTHE5QlhxZXpMZ3RHQ0sycHJZOTI4dnNVaGZOeStsLzNwV2N4bnFFcXJGUEJEUmpNaU90NFRCUmNQYXlTNnlhVUZJaTgwRk4zQ1NydWlCSGNiV2hjQ2c4MFpjWkI2VlRkNDhKbDV2R3hFR0RaWEJ6Mi92WnlzS2VPeG9kbUFKWkRnSGNDVWs1WlFWQkxHSFFoU3l3eEZHOExPMFFucFlLTUg3R3YwUFRWQ2ZGRFkrbXd5aFFkNk9KeUxJQWFTZUhCRGFXYXpZZlFjZFJ0WTdpMGwvb1hRUzhmamFibGFSYmI5aDdZSk0xRDBTbCtST2dGQjNDM3hZalNLTWNmZ2RScU9sU0piVE8zVEJFVlF2RjExcnFWWTdmMUE4ZnVSc3BrMVZwelRtdkl0bm5SNjE1aUcxdkpqMjJNa2owSVl6enFzb051Y0dONVYwUGxKNUxEZE1lLzZRVThaNmZYK2pXeisxZkhBNnNoenhQN0o1bnhCelBTTDlSSGtlckh1bkMwVFlIN3ZCR0IyNDBPWmp3S3IvNFlsR1NwVlZIMS8rbG1vN3BSd3pFVmhleUQ4WU1wNEJIdm1TRkVvdkJPWlJCeWpQbndzS0F0QURYRjlSZ3VkRThFOEpSUDFGQ0lVRWVIc2NtdTdrcElqS2wxQ29BdzcraDhPNllQeHFsenJ5YkY4Q2tmd2JNb2dieWNENzhyRGFMTnhzbnNpL3diK2I5Y3JBZHhEcW15UTBTbFcyV3p0UE1UL1JTekpleTZOT1BQUzFVSFp2ZWI2QUJuWDZ1T1ZyM3QzTmRjQjNScEl3eVQ1czFUV0NVR1NFQ0p3enV4cStBeXVPRDZpMnhtTzh0a0xRV0xhaHdZUWd2VU4vanVxR0tPK21KNm1VTWxmak0veWVvMHpOR1ZxUFhleVV1ODE2c3FnUmsxR2FJTmZmalpIb1RMSTVRekpFV1ErdE1BbzJXOXpqRmh6V2tBSzBjY3NPZTVqQWU2TGtUWjJmOWRmUHZXempmenZMZ2QzSFd3U01iTGhVQ0JBMVdVeDlVak5DRDdMS01tRUJ6a2Q3b0lFSnZIdG1GVlN0WjJsS2NBM045T2ZMdWRVTURjTmdxNU8ycGN2VUtwK2NrZFBGQ2tRWVdDTHVsUTBVWjBJalJJTnlJeUY2a2xWa0tTc1ltTlBnUEtzWnBpVE4wbVUybThjQjY5ZVB2b2l0dlhiMWEzc01DTmF0dndreFFRMk1GZUVLUzd0cUxZd0FxdVNQVHEyZmJEVEVqK0lZMUlTTHAxYWNtK0pJcmNUb3dQTnBBOHp2OW9VSWxzREtONGJBVVFwRzZGUmZuQkEyTEFGZGlEVTdFWUN0RzFKMW1PVXhmN1RPdERzc0ovTERmZlRWaGxkTXZxYStiengxOTdJTjVaYzdhY09xL1ptTUkycW1Jek00WVdDYTl2V0FwRHpYcGJFdnAwRDdQLzF3N1c1VExZRmJGNklGelVnMldhalkxTnB2MlhzODJKVzdISElrdnVxWU9UTDBSZjlMYXVNWnZtM05TdGxYU25BRGJGdHRPcXdyZWdnZ0hIQkZyaHc4RmhnRnNmcmdSS0I2K0pnQWZhWVJFNGNETmtlTkxCRXJ6ZlYrNlppd2g0TUYxMzBrOHNPOTlmRmpxeFBUWUY5V3VKWWRFUWZHVXZwYzJqZmEweUJqU2NPNFFGeXM5RHJ1ckUyVE1UNzZWSDc0ajErSytTVEVtM1lkY2FIWEIzM05NVDVBYzVPMTUrTFQ5VDZlODQ2OVhhb3B6VWkyRGhxd290UjkzVm81SGpPcDg5a0h4WUlKQWRJaVFSZVRxOW93dWVaZWUzb2dOUGsxdXk0eEFWK3BORlhIR250NVFHQjhYVUUrTzVGVmlPNEo2U3BxQXdRc2ZDbXZCMTVhYUFXQk1yUytUOFpVdTRuNVRXdUhVdFN6ZWZMRjlUbXBpRmtmWVUyM2xOQzNRMTdlRExFTU5wZm96VDlkaEcwZjFySWlZd3I5aE1wbHRGaWU2NXVpSlZEZ2hnV0FRUXhnQytFWXZiaEZ0VjFPMXFpZTQ0eDVQcWRLS3pxdlViV1VNRUxneWFVcVNSSFAzNzNiakRzQ1pMUVJBNW1veVNpN2ZraEVISGlBZnhJajdaS3JHMzdTWnZ2bEtBSWlyblJKb3UrWXhmd1pTRWh3bkp6VGY2U2VLU1BkWVg1WGdDd0dVOUMydHVpUStldUVadmdGSkVDVGNhMnk2Y3JmT21JQ0Z2MHJ6QThWU2J0dEkxbTZENVNJYkswVjNYRU1iWGovNDZKTlRLbWRvVW9aaVZnNjRnNFhKNnc2dmgwZkpvRHhBUTRraUthZ2ZOZUNVeXpUM1N1R1dqN01OZlIvVkZNU1VxbmpNQUFDaUxOQ2dESGlRbDRUcXMwTVdGSGFnN1dVMGtKMzZnYnpMYjhKUkRMV1J2Ny8wVC9sSkgrMlpOZ3FPQWlYbzU2OFpCdVc2SWdEYS9DTDN4Wkg4WHBOKzdDVllzV3RPelBuUGJDeERjL1FEY2RscXNVaHNXTFo2QjdhaFdMV2Y1QnRaYWp2OVJ6aXZ1MmNZdjI4cTBiOUN6RkdIQ3FvUWZaWDVQZ2tuSGkzbjdXbXdRcjhaSGJpMjIyckk3amFYNmRGMVdINkVvVi9XSTBrd0pDSnVDck5vcWlXdTcxSVUrTnllaXpPQ3RJOTZ6TG55Q2JWdkV1QlJNZkEwQlVYVzIyM2RzUWp5OUVuczJtOUd6YWVPbTZJaE81TzNHelZ5a2lTVmdhZ0tXYmkxTGFiNSs2bysyUkljSlJvSTBrYllRY3lJRzIxeEk5d3ZkUFcyT0xOMEtyRHo3VmdMVFVYYXJZT3RDdEdhaVhMS2JjbW45bDlXQURnTGdWMDhjVlEzYWI4MmJBT3ZGbWF1NkxVbmpIVWpodVhCd2hnek1PbENXWU9iSXBZcmdKUnAzNzhaNStsaUJ2S01VZEJuTmlpREp4YmVVQkM5R1ZFTURTTTkwQ2lOU203djNoY0FMVHdiSS9jWnl5NDFFNTc2dTR3aGQxS2trZkt4Q05EUWROWVk4QUt0amdBZ3hKUURYS1BiSTJYeFJObGlNWHM0VDhFcjBkV1QxVUQ5a0hsUWZNTGo3Y1pUVG9BUFNSUWFuUmJjTkNPc1VEUE9wZEIvLzRmeGFkWUJqTzVGVGlZcHEya0Y0NDM1NFI5ZkhVK3JTVEpJSGg3cVp3eWVPQ24vNjJOSlh0YXBOUlFYMEtwK3RjRm5WZ2hUd0FoSEdONExjYUJZYmt4R1ZOYXdMbDlQNTRPeURSb2lYQWthbFRMRU1MaGRKMlVFWXlaQjQ5a0NNMUo4SkdoYXllM2xzWHc4Zm51NmpuYWMrQUltV292TVB2YlMyS3RHZWxHUmxKN096UmU3d2lnamZVcktQRmZKRzJnK1NnRE1TUFlrdHFhZnNrVWJ2d2E4WXNoSXdLUlplYWF0QlpscFpUT013clk2THhYbzNZYXRpV05tYXExeTMyTFY5L25KRFFEMjJVQWcyNGZ1VE5URkJFc2FxVDVDQ3dLK0RpS3ZCUDJZTEV5eEV6UlU2bGdsQXY2blV5ZFpyc2pqUnh3elFwa1E1RFhDUjc4WURuNWtWSG05dURrNDdBalJ4TVgwcnp6ajJPZUhLS3R3V1hqK3l2VjNiQ09yVGJYWURYb3R5blZDSTR1SVF4bkxBbHlOeWF6N0FjcDg5a05Ta3FxMDgzOG9uSk1USVdqWm8rZ28wcURkcTRjWTdaejl0N0szWTczd3VScTRXK3lZQjVDeGxraFdGcjc4MWQvN0ZyMThlcTRnNGxXQitOMUIwYmpIV1ljN0hHVlNSblJ0cHVQcXVVaGVCcjQ3NUFUNyszMTFEUHVIQytpSGFXVyszMm5OR3ZzYWFrT0lyUS8vd0s4dDlYZ1NBWFppU1Axb25BbEU2L1JmNG1ZZXFlZE1WNFNTU25ZS01sWkdwcUdtdjNCdDlEQmR4MFV2bjZDTE0xKzE2YzB4SUp0RjQrUWlvdFo5VURKemtLK0pGdkhQajg4Z2d4MlgrS1BMdFRXdUdJSm12UE5INDMvOUYzQVdjSVZJQ2cwNVY2V1N3dTJ6cE5Lc1ZzZ3RneTNOandZbXgvbWthV0RsUmJ1d2RqUUZBdFFQeXg1NmNJcDBqTmpCRDR2N1dXTHB4ZUlPak9XMmpMVnBjNUNVQ0JDbVBPMXI4M1ZNNW9Qb2ZJd2h3RG44SUFUbDZJaHNhazJEc3A5bW96R1dDajk2U1ZaRDhvSHcvSHJrbFpKZWY1cjl5WkR5ZFc1U09ObTVnYW92eFBEaWMzYmhyQXFlaHhUQnBXa0daTEk2UlBzLzdYZGs0WjM1QlRIWC9TNjlPUkRUQXJoYlNiWUFGOVBtYi9kL0ZHZ3I5dG0xdFVRVE4yZTBITkQ4WDJ6bmkxWXVoaThHUjgwMkJaTUpURHozaHdBVWw1ZFFIMDVLVW5XTk5VdFA0eEl0OFlWcHBpS3pFRFdVcHZCc0pVaEp1aU9yTEZPR2VzTTZlcVdxdjZYdndTN2pZRUtjRnFja3lBR1NwNjNmZTY4ODFHUmh1UGpNYlVjNlZ4MXV6VFZpWmd3YjJocEl3dngvaTl6N1ZJTGhNYzFPaldMWWdWV0R4UXhpSkt6VjM1VUd6Vi9CZVZPWjNWSHhKY3R0UjdQb2szVk01cE1uZEFUQmdzY0NlTWV2d1pWMThCR1hPQ1lPaWxWMkxpTmtJNkcvMW1raW16OFhuTGFNYlJFL1FwdWJhYmYyVzliY3ZKU3N3RlNPQ0dRUm9KV1J1SHB5TW5zNklLeVYwT3lLTEhHZ1NUNVhCWlR3VGVHV0syOWZ1WG1LSlZ6TkFqaUdRN2FGa25EMzdGcVNIOWRwVTIxbDFEN0REZ0szVnhVL2MxMDNJV0tpdVpVZUlXeTI4bEhVTnRZNlpuY3dmQnRyWDdPNDVITlh0Y2tpWGk4TFJ1clFnVThXc3lOdXdQUkYvZDIwWW91U3k4MDc3dE5tRjRvYUwyckRlYVVhc002dGR4TjJuVTlYc2Nxdlljd3V2Q3pmSzlXdzQ4eDFaeTlWVjRhUmJWMThHTjk5QUJzZlhwVWxIU2RqZ3VBUFF3UUczWHkyZHcyNXhkUU9GNVpnSTRKU3EvVVRtY1h2ODNraXU1c0xDMGliTVl4eDNRQzJRRE9URjkyOEsxcmdMOGFLdWI5YjY0NENsZFcveU5tUThvTjQ2VXk0NWJ4aVpKNVdjL3NEemFjN1RrOUxWTys3Rll4Vks5VnUwTVg1MTRlSG9ISHA5b3JTWWYwUlNEMlhQb2d3ajZmZFFMNWprQlZaREdQNExVMlV2Y2VvNnhtQy9oZzM3UUhzUXE3RTBiSU44eitOYkFpWTBoNC92NkRTb01GRGI1RzdaUDQyTk13bzFuTjJnWDQvck9ETjlUbWxuMW9IVTh5RzZOemlxQ2tFM1NvUFpCOXFGcXR2Ui94RHUwM082QklrQ3JQckVFZWJXNXV3L3RCdVRvU0NMaHpVcGdEL3BXTDhCdG1CamZab1RUSDE4elJub0JEcEk5S3M1NUxLQlRWcFFKc3lZN0huUituMTVzb3JHWXU2NEFaSWpXOFh6K0IrUlpqNWpSYXA1ZlRIVWlSNXB1WFo4eWdDYnY5N3RKYVpaUFdNNERMMUF0aWhaY0J0MGp4M205S3lVQURWSng2dHNjdHlpZU92OXh1NU92ak9FQnNQenNVU0pqMU03dy95RWZuaXh0RExmbUJWeUw0a2JoTXJjZ20wOW8ydVBidnVwMWZsWlhGN0VuY2JaNUt4UnZza1hQdE8wR29SUnYxUjRIUE5uWEY0akxobERONnQzY0pMTThSUDJwS1ZYTHgxY0JoeVJEUVAzUDdSNHRrQXFqRGt0akk0T2tFTWg4TXducHUvd25YVnU5VXVPNVcxcjROZE90VHVzN01oMUdxQVBLRVVmenl1Z3Z5ZkRhSHFpY0RHT1FGVFlPcmQ2ZVdDRHZhU0IyMFdsRVBCMDVSa01MWi9pZytRN3NsYkxoVTYxeWpGMy9jWFFoQVVHUzB3VmpmOWJFVTYwUWhxQ1FldWMvQ3pXUDl2YS9SMEh0a3FieTdKa2pDYVMxTXQ0Mi9QeU91amFtY0JSSmt6U2MxVWlkMk5SdmllMzFzcVpnK0k5RjRrWENvdnpheC9CSnF4WW5LQjJZamM4RkE1MUpKRUN6czlCT3VtK3JOTVpXbGNvNGlCaXI1cWpLTDhWSUZvdmx1TXBxUUgwV3pSRXRJWWVCQ0tFdHRwNDVmU0ZXcEFxRVpKWWtCYmxBUGFRK2ZTQURZSVhNckUyZlFmV2RmbFljRDB1Z2ZNeGIyVkdjUFJ5eFFSS2poZGFQVXFxdGZQUFdnWlY0aXBkV2paQllDZFBGT1BpSHkzQWZ1WWRtcEYzWWt3NTdVS3pZTE5zQUpLMk42bkxTM3dIaEMzcWlLeTlaVVJjOStyZGRkaytTdWxMb2JQNiswR1ZjWWdKUmpUUVNLcWI2ajdEa3lSamhYZ0VnWmVlNFo2V1UxUTRxbmpQblFpSlRFbkRYYU82b0tkT3JWTkVSbVFIY0RzVU1MRjEzd3d6eXh3Z2wwSHo3VjZmYzc2bk05M3Z5VFAzYmtaMldzVWJ0MS91UGVxNWc5R1RFVjdrWVZQekgyanNReVRDVG1jUGFGV1k0MGpJdGpmRkxiamFpblhQRWlQaXJidTdZeUF2MVg1Z21DY3hOd1dpSHFMdHM5T3Nma3pxM1RycU5kNXVZaW9hc3lpWTdPcHZHRXNQalZaSXVLUEcyMDk2d1B0UE5RNjEvejh2dHpXSE9sT3UzRlNVYVNFa0xzdkdKbk5NbDZYaDR2TndLSkhSVDduTzhOZ0xHa0YvMkxjMGZ0a2ZPQW9NNFFWMkttV1JmTWdHQTBuYmYyb2NVU3RFWThuelh2VE53OHhqZmlFL0RXUE9ZOWg0SXJicThOM0VUbHVSUzV2SHNQTk9IUEVCanRrdmJXeTdabnNaLytUelZObndWbTlrS092RnJLN0E1TE1rdVVBU1NLejRUem9BSTRwWmg0ZTdjMVh3VE1JVHR3Umk1dXJ0K1h4dVQzL0xveWcyaElRL1JkTWtlY2grSVdURkduL05rY2podmJTYmdxZFRjcStWV01VR1hZSDZmQW9yaHJFL1dVQ2VMYm43ZHJ6N0xFTGZ3T3ROd3NnUHUzQ01kZERVSURyR0dYd2Vaa1lsTm1CemY4ZUhvMjlxR2U0UHkyYkYwWHJGWFRvV25vT0c5bkdvT1BnRmJFTXlRUEpoWnk3RGxlTHlVanlGK1dpTE1nLzBFMXdkdkRqYncvUFZyVDNtcDVadzJMR0RkdEd6N1VvZ0U0VjRKWWFrS094Tk5FVU9Va1ljWnRJd0xVKzhjWnFWNTJRVnFZMk1rVlFoaXAydFVIcHBaZDhURThUS1YzUjJnWWQ0SURPbEpqcGl4Z25pdHpiTThqU2dBN3RoM0xjQWExWkU2Q0lPS1FOZnVmNU1MdUtlWUVwZ1B6UEtic0UzTFZwMzhkMGhWWDQrSmsxcVlleFU2c202Wk53emhabXdUd0ZJald1Qk53NWtINERvMDFjd0V5VGNuRDd0YmJDRVl3NENQZzhVcjZ2dmVrK1hNUEs4a3Y5bTlYcFpuSWxuZnptUVpPaXFWV2cwd2VVMGo4MU9ISG9rRHJoenVES0VMdnFWNHNSek1WSytNT0gramc4U3JzdkpubCt2TmVqemVjRkRVRks5bm80TUQvcy8zdFZJaGZ0MTNaWXkvNEFOS2N2NjAvK3FSK05yUGt4V0NKUEtDdlYwU01ZOG96NTFVZU5sajBRQVhZZkc0enhoaUlLS3hmK1Vicm5VYmw4YldRUHd5emY1eUNWNDZPdUNBV3h2R3A5TVZjZENmSC91M00wZ2xwYk9tcFlQOHpoa2hRdVlWRzBPZjhrcVp6UmRSMitjVjN4NGV5VERraTlaT1Y1OXlJRU85VHFPTDVHYXJDcStrVVpDU0lGQVg0NFpOVGE4WlNkYmN2N09YL1VWNC9iNmFROWROZy9OZGFyS25xQUdoMUtRNVJPV1ZDVnBjSmk3YVVPL0JXN2x6NlNOVmN3bEhRRmp1M2tPMVJ3RXoxUFNvaTBRT1dEVXYyOWNPdzdhV05FQ2lZblU4akUreitwTncvU3JNeWJmbU01MFR4ZGZJWGdMV09JRzhVMnJjUkViQ2xPNTRyRFU4dzFXbHRBRHpQUGhOQUcrS2RYKzE0MDJyRUwvL3VGVmsyNDNhMW9XUWlpWFJwTVQ5VjNtSWRzbWRxRENUKzJnU1ArUHZyM0Q0aU9qbFBHYUViNTlkdEcrR3gxT0E5NDRFTytZT0RlVHJ0M3VDOHY0UWEzNWJHUFk0bzgxRUdnMGxzY1hIeXhldytRR2llQjRLVUR5Wm1iSHVqSlpkYnRLakRiYi9zek9IbVdDRnZKZjlyVXdHVk54YXYrbHZDSTQrVGZPWmJ6YzkwdTV3aGJMSzRKaDh6czF0T0NvKzVsNEl4aHk1K0U4TmZURFNwaFlvWU5EOGVUT0dSdmZ6NEprWENndEl2a21zNUZVWkI3Zm9hZElsaUNoMzBlV1JycHRQY21oc1VtTjhmSUQ4NmtwTWJrVGtISndIUkNMM2NNb0NFNm1hUmZ1ME9hRjZDMkN4Z3dXVHJLc01LWnpFSmkySWQ4UWFsUXkyRVoybnpZY0dLS0dXdmtkZHVIdWFwZmVSM0pDYkh3NUpQemZIWllxTzJiRk5JemlFNTcyRmlnSVdyU0gzMHpBSVRpSHBiTDlxZ1IvNTU4clBZZ1FBMnAzb1VLVTFiUnV4L0diV2Fra0g1RDFlbyt0cVpZNmJkU256cmtIYk1sWWdwcFV4UHlWaFI1ME8zQU5YQW1UaFBZUEV1UnJ0T0lrN0hIemZ0SUJiZC9IbnZRT1FiOU15NExkT0RpbTNZTkxiSFR5OEwzaHF6bUJ6SC8raDRXSDF1RjUycEcrajRKbzcvRFFTSVpEbEwxTFlTbDJHZkNZV0V2MTFzZk1zTEQ5MDdqRjBSSG8zUGJvOURRZ0ZQa0p5bTVpZUkyRnplUGx0Q1dqRmVyMWkwYTRYdnVZQzZGV2hnRWcwVUx0OWg0Q3A0VHQzL0tZQ0h0ZGo1YjR0TTFDVkNLYjRuMWt2T2F4OFdHd1Q4Q0F0SVJCV2FHcjc5aE1VRUtkTG1WQSt5eEswWHQwUjRuaUZVUWZHSTIvbEFtWGJPU0U5b2h6eGNnTnhxeW5pVzRRcEUzYk9CalBINkZWclg5dDB6M05CTDNWOGtTUWpGVnNSbTRGNVVsQkpKM3FvVnBCNUpDcTg1MjBmVUJNWGNzdS9pVmJOSVZmN3Z5K2d6RmZyNU0yZFVNS3JWZmVHTnN2ZTNUSHdIbG5iLkg2bWF0TTNCcXNzd2d0M29Uc1pOOXNNdm1zNEg1eFRibFBaVnUxZ2dtZzVzVXRXVGgya1Z6TVAtU3JrNkE3eFdJTnFRcm40VWIzZ1JrN2QxaW5DXzhn"/><input type="hidden" name="_eventId" value="submitPasswordlessToken"/><input type="hidden" name="geolocation"/><input type="hidden" name="fpVisitorId"/><input type="hidden" name="trustAgent" value="" /><input 
                       name="submit2"
                       type="submit"
                       value="Login2"
                       style="display:none; width: 100%"
                /><div id="loginError2">
                        </div>

  <script type="text/javascript">
    var currentMenu = null;
    if (currentMenu == "2") {
      var containerFormInput = $("#fm2Input");
      var containerForm = $("#fm2");
      var originalUsername = null;
      if (originalUsername == null) {
        originalUsername = null;
      }
      var hasErrors = false;
      var errors = [];

      // console.log("trigger processLoginError, smsCodeLogin");
      // processLoginError(containerFormInput, containerForm, originalUsername, hasErrors, errors, "smsCodeLogin");
      
      console.log("init processLoginError", "smsCodeLogin");
      loginError = {
          containerFormInput: containerFormInput,
          containerForm: containerForm,
          originalUsername: originalUsername,
          hasErrors: hasErrors,
          errors: errors,
          loginType: "smsCodeLogin",
      };
    }
  </script>

            </form>


            <form method="post" id="fm3" action="login" style="display: none;">
                <input type="hidden" name="username" v-model="qrCodeLoginUserId" autocomplete="new-userId" id="username" /><input type="hidden" name="password" v-model="qrCodeStateKey" autocomplete="new-qrCodeKey" id="password" /><input type="hidden" name="currentMenu" value="3"/><input type="hidden" name="mfaState" value=""/><input type="hidden" name="execution" value="19ebfddc-d5ec-4659-ab8b-0ac7a812cc85_ZXlKaGJHY2lPaUpJVXpVeE1pSjkuZC9UVnBuVlQyaWhzY1E1MHNJM2gxSWV5MnMvMmJrZisyeTFqQVdrUmpOc0xySGM4RDl5TWQzSWIzczlVOTlpSVpaRGpKZURMQXJCclFMODZnYkQzYURDR216VVhDYWh3R0doU1NpNUplU0YyWDhGWEEvN2NKR1VWSUR0ZmQ0dUh0R241OG9HUFl2VXM5ZHc2RHFoSjlFQXVhcGtKQTNzZ1pVSXlBL0JLbW1qTVczejlxZ3R5UkFBbUxJSitaQWtBVW9Ra3l4SVlJTllhT0h6bXI0NERhMG1KVnNMZGNhdDNNT0RSMFZsdmhhMVZpWktEMVNYdlp4R1pYdmNRa29hY3Y1ZmFUQW9YU29NYlU1MUZhT3lWNjY3aWFpdXhQM1VrMVg4RTB1Unl5UGY1amp2akF6ZU53NG8zckdKN0txc3pGeEhQTXhQZW9oSExKWGdGcnc4UEdzNXR0UXozNFk4MlNOS2dEbnkzNUZxMUFtaUxseFN5RTEwbUUxOXB5eDJBdktkVTJDdXV1ZkdTUFltOTJncTdIN0w5MUN4aUx2dE82TW1WSDE5Y2w0M3NSU1dDbUpLNnZkMVhybFJDcGFLZ0M2djVVejFRcGM4d2FoUU5uNG9CY0QvbGhEYlo1LzBzYWlhMmNwQy9EQjQwSVV2OFdFWitKUUN0OEJVYnp3dDA2cFZGbGZKcHlKemJqTktzeWRZaG5TcDQyYVZoM0JaNm15QnBEN2VUYjBUckxEMGVCaS9vaHZKUnhReFFGbFdWd3k3SGJtdFdJQjJOdjJvczdxWG9RSG1NN0M5MGwrVGRLS1dNSTBNZDA3NW5YejlVUUxSOVd6R1ErQTBvYXFVUjJsU01zaTlGaEs0V3JKTTVBUjQrbGhpNUswMUc3YnJoN0VjWHM5MkoxT0s3SWZDVU1FRmhvYmNvckRubDBjQTJsSTk0NzZKQTUxT3B2YWc5Zkl0Ylk0Q3ZjVXBYTk14Y1J4amg0SHpRQXFoaS9ZR08yamxsNS9rOHZEdzlVZndZYzFSVk5JendnQ0tFZ29XOXdLZjV1SUpMbU5xSXB0dzArUmkwdGRnSzBxaTE2aHVjWWRKbk16VW96b01zY294UW52REF5ajhqYVVzZFVqVTM5M3VncVNNNTE2WlVHYjlJaUtNMnN3UzEwMnpoOTVBK00vNkN5WTRNU0h4ek1wNUQwNEpvTFhVK1AvTVVVUWIvejJQZTRzVzVBWEZrZDg1MVhnOUNhWm5rWEJDQ2hlQ1FhWkViM2lMUks4RG5FcXd0MStrVmtvNjdDRHJOZmgrSytnYkNmTVd1b2J2LzNPUWdYQk0wVHNNZFh4Tm1ER3RaZno1a2ZwQ0c5Q2QzdWs3YWJ6N3RubHEzUmxsSjdBSUdWaUpTWm9TaTFyRGpmbU02N2RhQW9EWVF0MzVidDN0YjUzMXJHRjhEQXpRNXpFSU9TT2poODBUVDBoZDF1YUhTbHp5QlRIamFQZUJPNS95alB4Z2w5WE1YbElxWVQ1YkJPMnZ2b3FmdUJxUU92UkV5M1hXYjdURVZIYTQ4bmhSZjQ0d29ZcU8rMjhnS0Q3UURORzIzNW5XNVRBL3NuREU5dmNHYm1pbG9QOEJVZEFLSW5OUmZ3RzRKTFNIdEpPOEMxQUlxYTJVS2ZiR2xQTGI3bVg4YXpSUzdiRE4yQnFqNDVJTG5CSFV0dnhFZTdQSGU3UDYwV3ZtWDBkMlpjTjlyenhUT2F6ZkxyM0hkUGx1bzJwNEk2RTN5UUx2L0hhQU9oVllwVGUzNGZLU1JHQXpNOE1jeFlTNWh5a3Zva21iNndnSkdmbWpONGkvS2tBdHplRnBFQjl6SGRuQmJLcnFGQTcyVXR0VHgxU2c5WUVIRU1HSTZ5Y0JXeEhVQkh0MmMxNDdBWTFmbloyZldNRTUyc2krS0g4c2txeVRDQWlJanJuWU82eFI1dFNJVzhMeStPYTlIWVNLblp5d2FLb1IvMmZzYVJ0NkZEZ0lQZnRKK05hYnB3VHorbXRaUGFxRlhWTlNVbmd2NU50Y0tPUmp2eTdjb2ExNzVjQVJJVi9xZStJWGs2Y0ZzY0dVWml0RnRHOVdrejBuSGsyWjBiZUZOSUxGazNqZUVrUnRRMG1HUE0rQTNydFUzUlU1dDZyZ09TK3BvVjkxcEVhWmwySFhMdjZmRnJ4RWNjZGxkaGFNMU9wNDArMGpDSFRiZG5KWThoRngvclZCVlVac0Q1aWx5SEE2YVU5aGNoem1QOUpLdzRmZ09WRXZYek91dUVvSW8vOEdnaUZOSk9CQ2F2WGprTmV0WFQrUW04MUl3blhGVXlXS2FBRXBMV3Zmc2ZyYXFSRWd6ZGZiY25YRVlvbEQvckptWE1zeEl4UWpCcTBFZ1RZRXFLZVFnRk1IeEdiR3NSWHVlMjR4aUFSdS9qVElQaUZoRzVzVVpyNGJzUjlDL3NuMy9oNHI1Yy9qZzNoWkxieWlFNlNiaHFpbGQyV3p6bTQycHB1RlM1NWFNalRiZ1FPZWhiSTBudTBNZy9GNmFVK0g1NjhUcDdnbnppNW9TVFdwR0IwRko4NmQwcnFKNjJVeDJmVHd1ZkFhZlRReG9NWVNWWldlSWtkd3hoU2FIZTR4YjlSd1RlcjZwVDl3UXorNVNjYVprOEhhYjVHZlgvbmM0NjFKb0k3a3ZuZ2lORzJhalZjNE9aUHlrajdra3VHMW9vdnFUR0p1YWxpVHpORGJyYWRzRjlINExQV1NwZ0JDV0hDTGFVMWdwclhpdzFrMHlTNzRBVjJHUnFjeXREdFEwaVZmT2crak90MU4xNkN1N1l2dkR2Q2ZtODE5OFVuRG9HK0hMR2NpVjNjYzhiVkkrSTJkOWJsemkwUGdkOVpZdEp1ZnJqUlJBV0pLa2FEdTl4SEFMUjNlcHcwSVBiYTR4bGx0UUYvODVhT0JnZ1BkRDRqMGNxa0FzWFlKWUxMdWtrWmNPM1YrSm1iSk9taFBlZ2tVRkhTZU5XVVpEeFhuTVZ1VnlPL0ZYaDRGb21xWTYyTXl4bzhTdzJRZ3J4M3V5aGpaUWtMZmFIVTVqTHZ1Z1A4L2JUZGNBK01OTHE5QlhxZXpMZ3RHQ0sycHJZOTI4dnNVaGZOeStsLzNwV2N4bnFFcXJGUEJEUmpNaU90NFRCUmNQYXlTNnlhVUZJaTgwRk4zQ1NydWlCSGNiV2hjQ2c4MFpjWkI2VlRkNDhKbDV2R3hFR0RaWEJ6Mi92WnlzS2VPeG9kbUFKWkRnSGNDVWs1WlFWQkxHSFFoU3l3eEZHOExPMFFucFlLTUg3R3YwUFRWQ2ZGRFkrbXd5aFFkNk9KeUxJQWFTZUhCRGFXYXpZZlFjZFJ0WTdpMGwvb1hRUzhmamFibGFSYmI5aDdZSk0xRDBTbCtST2dGQjNDM3hZalNLTWNmZ2RScU9sU0piVE8zVEJFVlF2RjExcnFWWTdmMUE4ZnVSc3BrMVZwelRtdkl0bm5SNjE1aUcxdkpqMjJNa2owSVl6enFzb051Y0dONVYwUGxKNUxEZE1lLzZRVThaNmZYK2pXeisxZkhBNnNoenhQN0o1bnhCelBTTDlSSGtlckh1bkMwVFlIN3ZCR0IyNDBPWmp3S3IvNFlsR1NwVlZIMS8rbG1vN3BSd3pFVmhleUQ4WU1wNEJIdm1TRkVvdkJPWlJCeWpQbndzS0F0QURYRjlSZ3VkRThFOEpSUDFGQ0lVRWVIc2NtdTdrcElqS2wxQ29BdzcraDhPNllQeHFsenJ5YkY4Q2tmd2JNb2dieWNENzhyRGFMTnhzbnNpL3diK2I5Y3JBZHhEcW15UTBTbFcyV3p0UE1UL1JTekpleTZOT1BQUzFVSFp2ZWI2QUJuWDZ1T1ZyM3QzTmRjQjNScEl3eVQ1czFUV0NVR1NFQ0p3enV4cStBeXVPRDZpMnhtTzh0a0xRV0xhaHdZUWd2VU4vanVxR0tPK21KNm1VTWxmak0veWVvMHpOR1ZxUFhleVV1ODE2c3FnUmsxR2FJTmZmalpIb1RMSTVRekpFV1ErdE1BbzJXOXpqRmh6V2tBSzBjY3NPZTVqQWU2TGtUWjJmOWRmUHZXempmenZMZ2QzSFd3U01iTGhVQ0JBMVdVeDlVak5DRDdMS01tRUJ6a2Q3b0lFSnZIdG1GVlN0WjJsS2NBM045T2ZMdWRVTURjTmdxNU8ycGN2VUtwK2NrZFBGQ2tRWVdDTHVsUTBVWjBJalJJTnlJeUY2a2xWa0tTc1ltTlBnUEtzWnBpVE4wbVUybThjQjY5ZVB2b2l0dlhiMWEzc01DTmF0dndreFFRMk1GZUVLUzd0cUxZd0FxdVNQVHEyZmJEVEVqK0lZMUlTTHAxYWNtK0pJcmNUb3dQTnBBOHp2OW9VSWxzREtONGJBVVFwRzZGUmZuQkEyTEFGZGlEVTdFWUN0RzFKMW1PVXhmN1RPdERzc0ovTERmZlRWaGxkTXZxYStiengxOTdJTjVaYzdhY09xL1ptTUkycW1Jek00WVdDYTl2V0FwRHpYcGJFdnAwRDdQLzF3N1c1VExZRmJGNklGelVnMldhalkxTnB2MlhzODJKVzdISElrdnVxWU9UTDBSZjlMYXVNWnZtM05TdGxYU25BRGJGdHRPcXdyZWdnZ0hIQkZyaHc4RmhnRnNmcmdSS0I2K0pnQWZhWVJFNGNETmtlTkxCRXJ6ZlYrNlppd2g0TUYxMzBrOHNPOTlmRmpxeFBUWUY5V3VKWWRFUWZHVXZwYzJqZmEweUJqU2NPNFFGeXM5RHJ1ckUyVE1UNzZWSDc0ajErSytTVEVtM1lkY2FIWEIzM05NVDVBYzVPMTUrTFQ5VDZlODQ2OVhhb3B6VWkyRGhxd290UjkzVm81SGpPcDg5a0h4WUlKQWRJaVFSZVRxOW93dWVaZWUzb2dOUGsxdXk0eEFWK3BORlhIR250NVFHQjhYVUUrTzVGVmlPNEo2U3BxQXdRc2ZDbXZCMTVhYUFXQk1yUytUOFpVdTRuNVRXdUhVdFN6ZWZMRjlUbXBpRmtmWVUyM2xOQzNRMTdlRExFTU5wZm96VDlkaEcwZjFySWlZd3I5aE1wbHRGaWU2NXVpSlZEZ2hnV0FRUXhnQytFWXZiaEZ0VjFPMXFpZTQ0eDVQcWRLS3pxdlViV1VNRUxneWFVcVNSSFAzNzNiakRzQ1pMUVJBNW1veVNpN2ZraEVISGlBZnhJajdaS3JHMzdTWnZ2bEtBSWlyblJKb3UrWXhmd1pTRWh3bkp6VGY2U2VLU1BkWVg1WGdDd0dVOUMydHVpUStldUVadmdGSkVDVGNhMnk2Y3JmT21JQ0Z2MHJ6QThWU2J0dEkxbTZENVNJYkswVjNYRU1iWGovNDZKTlRLbWRvVW9aaVZnNjRnNFhKNnc2dmgwZkpvRHhBUTRraUthZ2ZOZUNVeXpUM1N1R1dqN01OZlIvVkZNU1VxbmpNQUFDaUxOQ2dESGlRbDRUcXMwTVdGSGFnN1dVMGtKMzZnYnpMYjhKUkRMV1J2Ny8wVC9sSkgrMlpOZ3FPQWlYbzU2OFpCdVc2SWdEYS9DTDN4Wkg4WHBOKzdDVllzV3RPelBuUGJDeERjL1FEY2RscXNVaHNXTFo2QjdhaFdMV2Y1QnRaYWp2OVJ6aXZ1MmNZdjI4cTBiOUN6RkdIQ3FvUWZaWDVQZ2tuSGkzbjdXbXdRcjhaSGJpMjIyckk3amFYNmRGMVdINkVvVi9XSTBrd0pDSnVDck5vcWlXdTcxSVUrTnllaXpPQ3RJOTZ6TG55Q2JWdkV1QlJNZkEwQlVYVzIyM2RzUWp5OUVuczJtOUd6YWVPbTZJaE81TzNHelZ5a2lTVmdhZ0tXYmkxTGFiNSs2bysyUkljSlJvSTBrYllRY3lJRzIxeEk5d3ZkUFcyT0xOMEtyRHo3VmdMVFVYYXJZT3RDdEdhaVhMS2JjbW45bDlXQURnTGdWMDhjVlEzYWI4MmJBT3ZGbWF1NkxVbmpIVWpodVhCd2hnek1PbENXWU9iSXBZcmdKUnAzNzhaNStsaUJ2S01VZEJuTmlpREp4YmVVQkM5R1ZFTURTTTkwQ2lOU203djNoY0FMVHdiSS9jWnl5NDFFNTc2dTR3aGQxS2trZkt4Q05EUWROWVk4QUt0amdBZ3hKUURYS1BiSTJYeFJObGlNWHM0VDhFcjBkV1QxVUQ5a0hsUWZNTGo3Y1pUVG9BUFNSUWFuUmJjTkNPc1VEUE9wZEIvLzRmeGFkWUJqTzVGVGlZcHEya0Y0NDM1NFI5ZkhVK3JTVEpJSGg3cVp3eWVPQ24vNjJOSlh0YXBOUlFYMEtwK3RjRm5WZ2hUd0FoSEdONExjYUJZYmt4R1ZOYXdMbDlQNTRPeURSb2lYQWthbFRMRU1MaGRKMlVFWXlaQjQ5a0NNMUo4SkdoYXllM2xzWHc4Zm51NmpuYWMrQUltV292TVB2YlMyS3RHZWxHUmxKN096UmU3d2lnamZVcktQRmZKRzJnK1NnRE1TUFlrdHFhZnNrVWJ2d2E4WXNoSXdLUlplYWF0QlpscFpUT013clk2THhYbzNZYXRpV05tYXExeTMyTFY5L25KRFFEMjJVQWcyNGZ1VE5URkJFc2FxVDVDQ3dLK0RpS3ZCUDJZTEV5eEV6UlU2bGdsQXY2blV5ZFpyc2pqUnh3elFwa1E1RFhDUjc4WURuNWtWSG05dURrNDdBalJ4TVgwcnp6ajJPZUhLS3R3V1hqK3l2VjNiQ09yVGJYWURYb3R5blZDSTR1SVF4bkxBbHlOeWF6N0FjcDg5a05Ta3FxMDgzOG9uSk1USVdqWm8rZ28wcURkcTRjWTdaejl0N0szWTczd3VScTRXK3lZQjVDeGxraFdGcjc4MWQvN0ZyMThlcTRnNGxXQitOMUIwYmpIV1ljN0hHVlNSblJ0cHVQcXVVaGVCcjQ3NUFUNyszMTFEUHVIQytpSGFXVyszMm5OR3ZzYWFrT0lyUS8vd0s4dDlYZ1NBWFppU1Axb25BbEU2L1JmNG1ZZXFlZE1WNFNTU25ZS01sWkdwcUdtdjNCdDlEQmR4MFV2bjZDTE0xKzE2YzB4SUp0RjQrUWlvdFo5VURKemtLK0pGdkhQajg4Z2d4MlgrS1BMdFRXdUdJSm12UE5INDMvOUYzQVdjSVZJQ2cwNVY2V1N3dTJ6cE5Lc1ZzZ3RneTNOandZbXgvbWthV0RsUmJ1d2RqUUZBdFFQeXg1NmNJcDBqTmpCRDR2N1dXTHB4ZUlPak9XMmpMVnBjNUNVQ0JDbVBPMXI4M1ZNNW9Qb2ZJd2h3RG44SUFUbDZJaHNhazJEc3A5bW96R1dDajk2U1ZaRDhvSHcvSHJrbFpKZWY1cjl5WkR5ZFc1U09ObTVnYW92eFBEaWMzYmhyQXFlaHhUQnBXa0daTEk2UlBzLzdYZGs0WjM1QlRIWC9TNjlPUkRUQXJoYlNiWUFGOVBtYi9kL0ZHZ3I5dG0xdFVRVE4yZTBITkQ4WDJ6bmkxWXVoaThHUjgwMkJaTUpURHozaHdBVWw1ZFFIMDVLVW5XTk5VdFA0eEl0OFlWcHBpS3pFRFdVcHZCc0pVaEp1aU9yTEZPR2VzTTZlcVdxdjZYdndTN2pZRUtjRnFja3lBR1NwNjNmZTY4ODFHUmh1UGpNYlVjNlZ4MXV6VFZpWmd3YjJocEl3dngvaTl6N1ZJTGhNYzFPaldMWWdWV0R4UXhpSkt6VjM1VUd6Vi9CZVZPWjNWSHhKY3R0UjdQb2szVk01cE1uZEFUQmdzY0NlTWV2d1pWMThCR1hPQ1lPaWxWMkxpTmtJNkcvMW1raW16OFhuTGFNYlJFL1FwdWJhYmYyVzliY3ZKU3N3RlNPQ0dRUm9KV1J1SHB5TW5zNklLeVYwT3lLTEhHZ1NUNVhCWlR3VGVHV0syOWZ1WG1LSlZ6TkFqaUdRN2FGa25EMzdGcVNIOWRwVTIxbDFEN0REZ0szVnhVL2MxMDNJV0tpdVpVZUlXeTI4bEhVTnRZNlpuY3dmQnRyWDdPNDVITlh0Y2tpWGk4TFJ1clFnVThXc3lOdXdQUkYvZDIwWW91U3k4MDc3dE5tRjRvYUwyckRlYVVhc002dGR4TjJuVTlYc2Nxdlljd3V2Q3pmSzlXdzQ4eDFaeTlWVjRhUmJWMThHTjk5QUJzZlhwVWxIU2RqZ3VBUFF3UUczWHkyZHcyNXhkUU9GNVpnSTRKU3EvVVRtY1h2ODNraXU1c0xDMGliTVl4eDNRQzJRRE9URjkyOEsxcmdMOGFLdWI5YjY0NENsZFcveU5tUThvTjQ2VXk0NWJ4aVpKNVdjL3NEemFjN1RrOUxWTys3Rll4Vks5VnUwTVg1MTRlSG9ISHA5b3JTWWYwUlNEMlhQb2d3ajZmZFFMNWprQlZaREdQNExVMlV2Y2VvNnhtQy9oZzM3UUhzUXE3RTBiSU44eitOYkFpWTBoNC92NkRTb01GRGI1RzdaUDQyTk13bzFuTjJnWDQvck9ETjlUbWxuMW9IVTh5RzZOemlxQ2tFM1NvUFpCOXFGcXR2Ui94RHUwM082QklrQ3JQckVFZWJXNXV3L3RCdVRvU0NMaHpVcGdEL3BXTDhCdG1CamZab1RUSDE4elJub0JEcEk5S3M1NUxLQlRWcFFKc3lZN0huUituMTVzb3JHWXU2NEFaSWpXOFh6K0IrUlpqNWpSYXA1ZlRIVWlSNXB1WFo4eWdDYnY5N3RKYVpaUFdNNERMMUF0aWhaY0J0MGp4M205S3lVQURWSng2dHNjdHlpZU92OXh1NU92ak9FQnNQenNVU0pqMU03dy95RWZuaXh0RExmbUJWeUw0a2JoTXJjZ20wOW8ydVBidnVwMWZsWlhGN0VuY2JaNUt4UnZza1hQdE8wR29SUnYxUjRIUE5uWEY0akxobERONnQzY0pMTThSUDJwS1ZYTHgxY0JoeVJEUVAzUDdSNHRrQXFqRGt0akk0T2tFTWg4TXducHUvd25YVnU5VXVPNVcxcjROZE90VHVzN01oMUdxQVBLRVVmenl1Z3Z5ZkRhSHFpY0RHT1FGVFlPcmQ2ZVdDRHZhU0IyMFdsRVBCMDVSa01MWi9pZytRN3NsYkxoVTYxeWpGMy9jWFFoQVVHUzB3VmpmOWJFVTYwUWhxQ1FldWMvQ3pXUDl2YS9SMEh0a3FieTdKa2pDYVMxTXQ0Mi9QeU91amFtY0JSSmt6U2MxVWlkMk5SdmllMzFzcVpnK0k5RjRrWENvdnpheC9CSnF4WW5LQjJZamM4RkE1MUpKRUN6czlCT3VtK3JOTVpXbGNvNGlCaXI1cWpLTDhWSUZvdmx1TXBxUUgwV3pSRXRJWWVCQ0tFdHRwNDVmU0ZXcEFxRVpKWWtCYmxBUGFRK2ZTQURZSVhNckUyZlFmV2RmbFljRDB1Z2ZNeGIyVkdjUFJ5eFFSS2poZGFQVXFxdGZQUFdnWlY0aXBkV2paQllDZFBGT1BpSHkzQWZ1WWRtcEYzWWt3NTdVS3pZTE5zQUpLMk42bkxTM3dIaEMzcWlLeTlaVVJjOStyZGRkaytTdWxMb2JQNiswR1ZjWWdKUmpUUVNLcWI2ajdEa3lSamhYZ0VnWmVlNFo2V1UxUTRxbmpQblFpSlRFbkRYYU82b0tkT3JWTkVSbVFIY0RzVU1MRjEzd3d6eXh3Z2wwSHo3VjZmYzc2bk05M3Z5VFAzYmtaMldzVWJ0MS91UGVxNWc5R1RFVjdrWVZQekgyanNReVRDVG1jUGFGV1k0MGpJdGpmRkxiamFpblhQRWlQaXJidTdZeUF2MVg1Z21DY3hOd1dpSHFMdHM5T3Nma3pxM1RycU5kNXVZaW9hc3lpWTdPcHZHRXNQalZaSXVLUEcyMDk2d1B0UE5RNjEvejh2dHpXSE9sT3UzRlNVYVNFa0xzdkdKbk5NbDZYaDR2TndLSkhSVDduTzhOZ0xHa0YvMkxjMGZ0a2ZPQW9NNFFWMkttV1JmTWdHQTBuYmYyb2NVU3RFWThuelh2VE53OHhqZmlFL0RXUE9ZOWg0SXJicThOM0VUbHVSUzV2SHNQTk9IUEVCanRrdmJXeTdabnNaLytUelZObndWbTlrS092RnJLN0E1TE1rdVVBU1NLejRUem9BSTRwWmg0ZTdjMVh3VE1JVHR3Umk1dXJ0K1h4dVQzL0xveWcyaElRL1JkTWtlY2grSVdURkduL05rY2podmJTYmdxZFRjcStWV01VR1hZSDZmQW9yaHJFL1dVQ2VMYm43ZHJ6N0xFTGZ3T3ROd3NnUHUzQ01kZERVSURyR0dYd2Vaa1lsTm1CemY4ZUhvMjlxR2U0UHkyYkYwWHJGWFRvV25vT0c5bkdvT1BnRmJFTXlRUEpoWnk3RGxlTHlVanlGK1dpTE1nLzBFMXdkdkRqYncvUFZyVDNtcDVadzJMR0RkdEd6N1VvZ0U0VjRKWWFrS094Tk5FVU9Va1ljWnRJd0xVKzhjWnFWNTJRVnFZMk1rVlFoaXAydFVIcHBaZDhURThUS1YzUjJnWWQ0SURPbEpqcGl4Z25pdHpiTThqU2dBN3RoM0xjQWExWkU2Q0lPS1FOZnVmNU1MdUtlWUVwZ1B6UEtic0UzTFZwMzhkMGhWWDQrSmsxcVlleFU2c202Wk53emhabXdUd0ZJald1Qk53NWtINERvMDFjd0V5VGNuRDd0YmJDRVl3NENQZzhVcjZ2dmVrK1hNUEs4a3Y5bTlYcFpuSWxuZnptUVpPaXFWV2cwd2VVMGo4MU9ISG9rRHJoenVES0VMdnFWNHNSek1WSytNT0gramc4U3JzdkpubCt2TmVqemVjRkRVRks5bm80TUQvcy8zdFZJaGZ0MTNaWXkvNEFOS2N2NjAvK3FSK05yUGt4V0NKUEtDdlYwU01ZOG96NTFVZU5sajBRQVhZZkc0enhoaUlLS3hmK1Vicm5VYmw4YldRUHd5emY1eUNWNDZPdUNBV3h2R3A5TVZjZENmSC91M00wZ2xwYk9tcFlQOHpoa2hRdVlWRzBPZjhrcVp6UmRSMitjVjN4NGV5VERraTlaT1Y1OXlJRU85VHFPTDVHYXJDcStrVVpDU0lGQVg0NFpOVGE4WlNkYmN2N09YL1VWNC9iNmFROWROZy9OZGFyS25xQUdoMUtRNVJPV1ZDVnBjSmk3YVVPL0JXN2x6NlNOVmN3bEhRRmp1M2tPMVJ3RXoxUFNvaTBRT1dEVXYyOWNPdzdhV05FQ2lZblU4akUreitwTncvU3JNeWJmbU01MFR4ZGZJWGdMV09JRzhVMnJjUkViQ2xPNTRyRFU4dzFXbHRBRHpQUGhOQUcrS2RYKzE0MDJyRUwvL3VGVmsyNDNhMW9XUWlpWFJwTVQ5VjNtSWRzbWRxRENUKzJnU1ArUHZyM0Q0aU9qbFBHYUViNTlkdEcrR3gxT0E5NDRFTytZT0RlVHJ0M3VDOHY0UWEzNWJHUFk0bzgxRUdnMGxzY1hIeXhldytRR2llQjRLVUR5Wm1iSHVqSlpkYnRLakRiYi9zek9IbVdDRnZKZjlyVXdHVk54YXYrbHZDSTQrVGZPWmJ6YzkwdTV3aGJMSzRKaDh6czF0T0NvKzVsNEl4aHk1K0U4TmZURFNwaFlvWU5EOGVUT0dSdmZ6NEprWENndEl2a21zNUZVWkI3Zm9hZElsaUNoMzBlV1JycHRQY21oc1VtTjhmSUQ4NmtwTWJrVGtISndIUkNMM2NNb0NFNm1hUmZ1ME9hRjZDMkN4Z3dXVHJLc01LWnpFSmkySWQ4UWFsUXkyRVoybnpZY0dLS0dXdmtkZHVIdWFwZmVSM0pDYkh3NUpQemZIWllxTzJiRk5JemlFNTcyRmlnSVdyU0gzMHpBSVRpSHBiTDlxZ1IvNTU4clBZZ1FBMnAzb1VLVTFiUnV4L0diV2Fra0g1RDFlbyt0cVpZNmJkU256cmtIYk1sWWdwcFV4UHlWaFI1ME8zQU5YQW1UaFBZUEV1UnJ0T0lrN0hIemZ0SUJiZC9IbnZRT1FiOU15NExkT0RpbTNZTkxiSFR5OEwzaHF6bUJ6SC8raDRXSDF1RjUycEcrajRKbzcvRFFTSVpEbEwxTFlTbDJHZkNZV0V2MTFzZk1zTEQ5MDdqRjBSSG8zUGJvOURRZ0ZQa0p5bTVpZUkyRnplUGx0Q1dqRmVyMWkwYTRYdnVZQzZGV2hnRWcwVUx0OWg0Q3A0VHQzL0tZQ0h0ZGo1YjR0TTFDVkNLYjRuMWt2T2F4OFdHd1Q4Q0F0SVJCV2FHcjc5aE1VRUtkTG1WQSt5eEswWHQwUjRuaUZVUWZHSTIvbEFtWGJPU0U5b2h6eGNnTnhxeW5pVzRRcEUzYk9CalBINkZWclg5dDB6M05CTDNWOGtTUWpGVnNSbTRGNVVsQkpKM3FvVnBCNUpDcTg1MjBmVUJNWGNzdS9pVmJOSVZmN3Z5K2d6RmZyNU0yZFVNS3JWZmVHTnN2ZTNUSHdIbG5iLkg2bWF0TTNCcXNzd2d0M29Uc1pOOXNNdm1zNEg1eFRibFBaVnUxZ2dtZzVzVXRXVGgya1Z6TVAtU3JrNkE3eFdJTnFRcm40VWIzZ1JrN2QxaW5DXzhn"/><input type="hidden" name="_eventId" value="submitQrCodeKey"/><input type="hidden" name="geolocation"/><input type="hidden" name="fpVisitorId"/><input type="hidden" name="trustAgent" value="" /><input class="btn btn-submit" name="_eventId_success" type="submit" value="Submit"/></form>

    <div class="card mfa">

    <el-dialog v-if="mfaEnabled && typeIndex!=-1"
      class="dialog-wrap"
      title="安全验证"
      :visible.sync="guardDialogVisible"
      width="506px"
      height="420px"
      :before-close="hideGuardDialog">

      <div class="check-tips"><img src="/cas/themes/mf/images/tip.svg"></img>当前登录环境异常，需通过安全验证确认是本人操作后才可继续登录。请选择安全验证方式！</div>
      
      <div class="check-tips"><el-checkbox label="true" v-model="trustAgent">登录成功后，设为可信客户端</el-checkbox></div>
      
      <div class="type-wrap">
        <el-row type="flex" align="center" justify="space-between">
          <el-col :span="12" class="safe-flex">
            <img class="safe-title-icon" :src="typeInfo[typeIndex].icon" :alt="typeInfo[typeIndex].title" :title="typeInfo[typeIndex].title"><span class="type-title">{{typeInfo[typeIndex].info}}</span>
          </el-col>
          <el-col :span="12" class="safe-flex safe-flex2">
            <span class="other-title">其他方式</span>
            <span v-for="(type,index) in typeInfo" :key="index">
              <img :class='index==typeIndex?"safe-icon":"safe-title-icon"' style="cursor: pointer; margin-right: 6px;" v-if="typeInfo[index].enabled" :src="index==typeIndex?type.icon2:type.icon" :disabled="index==typeIndex" :alt="type.title" :title="type.title" @click="changeGuard(index)" ></span>
          </el-col>
        </el-row>
      </div>

      <div v-if="typeIndex==0" class="app-style" style="height: 110px;">
        <div>点击发送验证请求后，请在 <span>超级APP</span> 上进行确认，完成安全验证</div>
        <div class="code-wrap">
          <div v-show="appPushCallbackCode" style="position: relative; text-align: center; font-size: 19px; margin-top: 15px;">确认码：{{appPushCallbackCode}}</div>
          <div class="error-text" v-show="appPushStatusShowAlert" style="position: relative; text-align: center; font-size: 12px;">{{appPushStatusAlertMessage}}</div>
        </div>
      </div>
      
      <div v-if="typeIndex==1" class="phone-style-wrap" style="height: 170px; padding-bottom: 3px;">
        <div class="phone-style" v-show="securePhone"><span>+86</span> {{securePhone}}</div>
        <div class="code-wrap">
          <el-input class="input-style" v-show="securePhone" v-model="securePhoneCode" placeholder="请输入验证码" maxlength="6"></el-input>
          <el-button type='text' class="code-text" v-show="securePhone" @click="securePhoneSend" :disabled="securePhoneSendDisabled">{{securePhoneSendText}}</el-button>
          <div class="error-text" v-show="securePhoneValidShowAlert" style="position: relative; text-align: center; font-size: 12px;">{{securePhoneValidAlertMessage}}</div>
          <div class="error-text" v-show="!securePhone" style="position: relative; text-align: center; font-size: 12px;">安全手机未绑定，无法使用安全手机验证</div>
        </div>
      </div>
      
      <div v-if="typeIndex==2" class="phone-style-wrap" style="height: 170px; padding-bottom: 3px;">
        <div class="phone-style" v-show="secureEmail">{{secureEmail}}</div>
        <div class="code-wrap">
          <el-input class="input-style" v-show="secureEmail" v-model="secureEmailCode" placeholder="请输入验证码" maxlength="6"></el-input>
          <el-button type='text' class="code-text" v-show="secureEmail" @click="secureEmailSend" :disabled="secureEmailSendDisabled">{{secureEmailSendText}}</el-button>
          <div class="error-text" v-show="secureEmailValidShowAlert" style="position: relative; text-align: center; font-size: 12px;">{{secureEmailValidAlertMessage}}</div>
          <div class="error-text" v-show="!secureEmail" style="position: relative; text-align: center; font-size: 12px;">安全邮箱未绑定，无法使用安全邮箱验证</div>
        </div>
      </div>
      
      <div v-if="typeIndex==3" class="face-style-wrap" style="height: 170px; padding-bottom: 3px;">

        <div class="qrcode" v-if='!qrCodeScanSuccess'>
          <div class="error-text" v-show="!qrCodeScanQrcode" style="position: relative; text-align: center; font-size: 12px;">无法使用客户端扫码验证</div>
          <img v-if="qrCodeScanQrcode" :src="qrCodeScanQrcode"><div class="qrcode-reset-opacity" v-if='qrCodeStatusShowAlert'></div>
          <div class="qrcode-reset-wrap" v-if='qrCodeStatusShowAlert' @click="qrCodeRefresh">
            <i class="el-icon-refresh-right"></i>
            <div>点击刷新二维码</div>
          </div>
        </div>
        <div v-if='!qrCodeScanSuccess && qrCodeScanQrcode'>支持 {{qrCodeScanTypeNames}} 的扫一扫功能，完成安全验证</div>

        <div class="face-sucess" v-if='qrCodeScanSuccess && qrCodeStatusShowAlert'>
          <img src="/cas/themes/mf/images/safe/dui.png"><div>{{qrCodeStatusAlertMessage}}</div>
        </div>
        <div v-if='qrCodeScanSuccess && qrCodeStatusShowAlert' v-show="qrCodeCallbackCode" style="position: relative; text-align: center; font-size: 19px; margin-bottom: 15px;">确认码：{{qrCodeCallbackCode}}</div>
        <div v-if='qrCodeScanSuccess && qrCodeStatusShowAlert'>请在手机上点击同意以完成安全验证</div>
      </div>
      
      <div v-if="typeIndex==4" class="face-style-wrap" style="height: 170px; padding-bottom: 3px;">
        <div class="qrcode" v-if='!faceVerifyScanSuccess'>
          <div class="error-text" v-show="!faceVerifyScanFaceverify" style="position: relative; text-align: center; font-size: 12px;">无法使用人脸识别验证</div>
          <img v-if="faceVerifyScanFaceverify" :src="faceVerifyScanFaceverify"><div class="qrcode-reset-opacity" v-if='faceVerifyStatusShowAlert'></div>
          <div class="qrcode-reset-wrap" v-if='faceVerifyStatusShowAlert' @click="faceVerifyRefresh">
            <i class="el-icon-refresh-right"></i>
            <div>点击刷新二维码</div>
          </div>
        </div>
        <div v-if="!faceVerifyScanSuccess">打开 <span>超级APP</span> 扫一扫功能，扫描二维码进行人脸识别，完成安全验证</div>
        
        <div class="face-sucess" v-if='faceVerifyScanSuccess && faceVerifyStatusShowAlert'>
          <img src="/cas/themes/mf/images/safe/dui.png"><div>{{faceVerifyStatusAlertMessage}}</div>
        </div>
      </div>
      
      <div v-if="typeIndex==5" class="app-style" style="height: 110px;">
        <div v-show="otpSecret">打开OTP验证器获取OTP动态口令，完成安全验证</div>

        <div class="code-wrap" style="padding: 15px 30px;">
          <el-input class="input-style" v-show="otpSecret" v-model="otpCode" placeholder="请输入OTP动态口令"></el-input>
          <div class="error-text" v-show="otpValidShowAlert" style="position: relative; text-align: center; font-size: 12px;">{{otpValidAlertMessage}}</div>
          <div class="error-text" v-show="!otpSecret" style="position: relative; text-align: center; font-size: 12px;">OTP令牌未绑定，无法使用OTP令牌验证</div>
        </div>
        <div class="check-tips" v-show="otpSecret" style="padding: 5px 30px; text-align: left;"><img src="/cas/themes/mf/images/tip.svg"></img>支持 小程序类（数盾OTP）、APP类（Google Authenticator、Microsoft Authenticator）等OTP验证器</div>
      </div>
      
      <div v-if="typeIndex==6" class="app-style" style="height: 110px;">
        <div v-show="basicInfoLabel">{{basicInfoLabel}}，完成安全验证</div>

        <div class="code-wrap" style="padding: 15px 30px;">
          <el-input class="input-style" v-show="basicInfoLabel" v-model="basicInfoName" placeholder="请输入您的姓名" style="margin-bottom: 10px;"></el-input>
          <el-input class="input-style" v-show="basicInfoLabel" v-model="basicInfoIdentityNo" placeholder="请输入您的证件号后六位" style="margin-bottom: 10px;"></el-input>

          <div class="error-text" v-show="basicInfoValidShowAlert" style="position: relative; text-align: center; font-size: 12px; bottom: 0;">{{basicInfoValidAlertMessage}}</div>
          <div class="error-text" v-show="!basicInfoLabel" style="position: relative; text-align: center; font-size: 12px;">基础信息不完善，无法使用基础信息验证</div>
        </div>
      </div>
      
      <span slot="footer" class="dialog-footer" style="height: 40px; display: block;">
        <el-button type="primary" v-if="typeIndex==0" @click="appPushSend" :disabled="appPushSendDisabled">{{appPushSendText}}</el-button>

        <el-button type="primary" v-if="typeIndex==1" v-show="securePhone" @click='securePhoneValid' :disabled="!securePhoneCode">确 定</el-button>
        <el-button type="primary" v-if="typeIndex==2" v-show="secureEmail" @click='secureEmailValid' :disabled="!secureEmailCode">确 定</el-button>

        <el-button type="primary" v-if="typeIndex==5" v-show="otpSecret" @click='otpValid' :disabled="!otpCode">确 定</el-button>

        <el-button type="primary" v-if="typeIndex==6" v-show="basicInfoLabel" @click='basicInfoValid' :disabled="!basicInfoName || !basicInfoIdentityNo">确 定</el-button>
      </span>

    </el-dialog>

            </div>
  
  </div>
  
  </div>

<script type="text/javascript">

function getQueryString(paramName) {
  var reg = new RegExp("(^|&)" + paramName + "=([^&]*)(&|$)");
  var r = window.location.search.substr(1).match(reg);
  if (r != null) return unescape(r[2]);
  return "";
}

var isDebug = getQueryString("debug") != null && getQueryString("debug") != "";

var isMobile = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i) != null;

var mobilePattern = new RegExp("^1[0-9]{10}$", 'i');

var registeredServiceName = "\u601D\u6E90\u5B66\u58021.0";
console.log("registeredServiceName", registeredServiceName);

var globalI18n = eval('(' +"{\"screen.pm.button.forgotpwd\":\"Forgot your password?\",\"screen.rememberme.checkbox.title\":\"Remember Me\",\"screen.pm.button.submit\":\"SUBMIT\",\"kimxz\":\"Kim XZ\",\"screen.welcome.label.browsersupport\":\"Supported Browser\",\"screen.captcha.warning\":\"Error! Please Enter the CAPTCHA.\",\"screen.welcome.label.password\":\"Password:\",\"workweixin\":\"WeChat Work\",\"screen.scan.message.cancel\":\"Cancel Login\",\"screen.scan.message.scaned\":\"Scaned\",\"screen.loginnotice.button.close\":\"Close\",\"qq\":\"QQ\",\"screen.sms.captcha.warning\":\"Please Enter the CAPTCHA.\",\"screen.welcome.label.captcha\":\"Captcha:\",\"screen.welcome.label.netid\":\"Username:\",\"screen.captcha.title\":\"Security Verification\",\"screen.welcome.button.send.token\":\"Send Dynamic Code\",\"screen.welcome.label.dynamiccode\":\"Dynamic Code:\",\"screen.welcome.label.netid.placeholder\":\"Enter Username\",\"screen.welcome.label.loginwith\":\"Or login with\",\"screen.notice.button.close\":\"Close\",\"screen.welcome.button.loginwip\":\"Please wait a moment.\",\"screen.pm.button.downloadapp\":\"Download the APP\",\"screen.pm.button.cancel\":\"CANCEL\",\"cas.login.by.password\":\"Password Login\",\"screen.scan.message.submit\":\"Go to Submit Login\",\"screen.welcome.label.mobile.placeholder\":\"Enter Mobile Phone Number\",\"dingtalk\":\"DingTalk\",\"screen.rememberpass.checkbox.title\":\"Remember Password\",\"cas.login.by.scan\":\"Login via QR Code\",\"screen.welcome.label.captcha.placeholder\":\"Enter Captcha\",\"screen.welcome.label.dynamiccode.placeholder\":\"Enter Dynamic Code\",\"alipay\":\"Alipay\",\"screen.loginnotice.button.view\":\"View\",\"screen.notice.title\":\"Operations and Maintenance Notice\",\"cas.login.by.sms\":\"Mobile Code Login\",\"screen.welcome.label.captcha.refresh\":\"Refresh Captcha!\",\"screen.welcome.label.password.placeholder\":\"Enter Password\",\"screen.scan.message.expired\":\"Expired, Click to Refresh\",\"screen.scan.button.refresh\":\"Refresh QR Code!\",\"openweixin\":\"WeChat\",\"screen.scan.message.error\":\"Error, Click to Refresh\",\"screen.welcome.label.mobile\":\"Mobile:\",\"screen.pm.button.activeaccount\":\"New user authentication\",\"screen.sms.captcha.title\":\"Security Verification\",\"screen.welcome.button.sendwip\":\"Sent\",\"screen.welcome.button.sending\":\"Sending...\",\"screen.welcome.button.login\":\"LOGIN\",\"screen.loginnotice.title\":\"Login Announcement\"}"+ ')');
console.log("globalI18n", globalI18n);
var globalConfig = eval('(' +"{\"requestPerIPRateLimiter_enabled\":\"true\",\"mfaStrategyDynamic_usedAgentDetectorEnabled\":\"true\",\"casServerPrefix\":\"https:\/\/login.xjtu.edu.cn\/cas\",\"userLogin.kickoutEnabled\":\"false\",\"hmSiteId\":\"d605d8df6bf5ca8a54fe078683196518\",\"requestPerIPRateLimiter.requestsPerRateTime\":\"600\",\"isSuperApp\":false,\"lockTimeIntervalInfo\":\"1 minute(s)\",\"isWechat\":false,\"secStrategyDynamic\":\"true\",\"mfaStrategyDynamic_externalNetworkLogin\":\"false\",\"mfaStrategyDynamic.usedAgentDetectorEnabled\":\"true\",\"copyrightContent\":\"Development and maintenance: Xi'an Jiaotong University Network Information Center\u4E28Account password problem\uFF1A029-82667777\u4E28It is recommended to use ie11 or above, or Google (chrome) browser\",\"secTypeFaceVerify\":\"false\",\"scanClientInfo\":\"Please use the Mobile Jiaotong University APP to scan the code for login\",\"accountAbnormal.kickoutEnabled\":\"true\",\"refererLimit\":\"false\",\"superappName\":\"\u8D85\u7EA7APP\",\"localeEnabled\":\"true\",\"activeAccountRedirectUrl\":\"https:\/\/authx-service.xjtu.edu.cn\/active-account-face-recognition\",\"mfaEnabled\":\"true\",\"isMobile\":false,\"secTypeSecurePhone\":\"true\",\"logoM\":\"cas-server-site-ui__268f5906-e8f7-4083-84ac-04a4f485008d__a4-3xbblue.png\",\"netidPlaceholder\":\"Staff ID\/Student ID\/Phone\",\"lockTimeIntervalInSecond\":60,\"rememberMe_timeToKillInSeconds\":\"0\",\"captchaSkipN\":\"3\",\"mfaTypeQrCode\":\"false\",\"superappDownloadUrl\":\"https:\/\/ywtb.xjtu.edu.cn\/dataService\/H5\/pc\/index.html\",\"mfaStrategyDynamic.longTermNoLogin\":\"false\",\"userPasswordChanged_kickoutEnabled\":\"true\",\"secTypeAppPush\":\"false\",\"mfaQrCodeLoginEnabled\":\"false\",\"bg\":\"cas-server-site-ui__20250708__6514cf22-7c1a-4183-a337-563f99066943__222.png\",\"isDingtalk\":false,\"mobileEnabled\":true,\"passwordPlaceholder\":\"Enter Password\",\"mfaStrategyDynamic_userNonCompletedSkip\":\"true\",\"mfaStrategyStatic\":\"false\",\"loginNoticeShowMode\":\"2\",\"rememberMe.timeToKillInSeconds\":\"0\",\"inputMessageType\":\"custom\",\"encryptEnabled\":\"true\",\"mfaStrategyDynamic.userNonCompletedSkip\":\"true\",\"mfaStrategyDynamic_longTermNoLogin\":\"false\",\"mfaTypeAppPush\":\"false\",\"inputMessage\":\"Staff ID\/Student ID\/Phone\",\"mfaTypeSecureEmail\":\"true\",\"customEntryName\":\"\u5FEB\u901F\u5165\u53E3\",\"mfaStrategyDynamic.trustAgentDetectorEnabled\":\"true\",\"secTypeOtp\":\"false\",\"mfaStrategyDynamic.ipDetectorType\":\"false\",\"mfaStrategyDynamic.recentSilenceInDays\":\"10\",\"mfaStrategyDynamic.recentIpSilenceInDays\":\"10\",\"showLogo\":\"true\",\"successRedirectUrl\":\"https:\/\/login.xjtu.edu.cn\/cas\/login?service=https%3A%2F%2Fywtb.xjtu.edu.cn%2F%3Fpath%3Dhttps%253A%252F%252Fywtb.xjtu.edu.cn%252Fmain.html\",\"mfaStrategyDynamic_trustIpDetectorEnabled\":\"true\",\"mfaSmsCodeLoginEnabled\":\"false\",\"userPasswordPrefixRenew\":\"{XJTU_BCRYPT_MD5}\",\"language\":\"en\",\"mfaStrategyDynamic_loginIpDetectorEnabled\":\"true\",\"rememberPasswordEnabled\":\"false\",\"tracePathSuffix\":\"\",\"lockTimeLengthInSecond\":600,\"mfaStrategyDynamic\":\"true\",\"emailAddressEnabled\":false,\"isWxamp\":false,\"mfaStrategyDynamic.externalNetworkLogin\":\"false\",\"logo\":\"cas-server-site-ui__17649b26-3216-47d4-8e0f-ca6226796043__a4-3xbblue.png\",\"mfaStrategyDynamic.loginIpDetectorEnabled\":\"true\",\"hideWrittenoffAccount\":\"writtenoff,freeze\",\"requestPerIPRateLimiter.enabled\":\"true\",\"requestPerIPRateLimiter.rateTime\":\"60\",\"mfaStrategyDynamic_recentSilenceInDays\":\"10\",\"webFavicon\":\"\/themes\/classic\/favicon.ico\",\"useDefaultEnabled\":\"false\",\"secTimeSilenceInMinutes\":\"60\",\"forgotPasswordRedirectUrl\":\"https:\/\/authx-service.xjtu.edu.cn\/find-pwd-face-recognition\",\"bgM\":\"\/themes\/classic\/images\/bg.png\",\"secTypeSecureEmail\":\"true\",\"mfaStrategyDynamic.usedAgentRule\":\"last\",\"mfaStrategyDynamic_usedAgentRule\":\"last\",\"mfaFirstNeed\":\"true\",\"requestUriForRateLimit\":\"POST \/cas\/mfa\/detect,POST \/cas\/login\",\"userLogin_kickoutEnabled\":\"false\",\"mfaStrategyDynamic.trustIpDetectorEnabled\":\"true\",\"mfaTypeOtp\":\"false\",\"schemeColor\":\"0e6ccb\",\"mfaTypeFaceVerify\":\"false\",\"MF_SERVER_URL\":\"https:\/\/login.xjtu.edu.cn\/mf\",\"mfaStrategyDynamic_usedIpRule\":\"last\",\"secSkipIfSecAccountsNull\":\"false\",\"smsCodeEnabled\":true,\"mfaFederatedLoginEnabled\":\"false\",\"mfServerUrl\":\"https:\/\/login.xjtu.edu.cn\/mf\",\"requestPerIPRateLimiter_requestsPerRateTime\":\"600\",\"logoutReturnUrl\":\"https:\/\/ywtb.xjtu.edu.cn\",\"lockErrorTimes\":5,\"qrCodeEnabled\":true,\"agreementAndPrivacy\":\"\u5DF2\u9605\u8BFB\u5E76\u540C\u610F\u4EE5\u4E0B\u534F\u8BAE<a href=\\\"\/cas\/legal\/agreement.html\\\" target=\\\"_blank\\\">\u300A\u7528\u6237\u534F\u8BAE\u300B<\/a>\u3001<a href=\\\"\/cas\/legal\/privacy.html\\\" target=\\\"_blank\\\">\u300A\u9690\u79C1\u653F\u7B56\u300B<\/a>\",\"traceNode\":\"NONE\",\"userPasswordChanged.kickoutEnabled\":\"true\",\"mfaTypeSecurePhone\":\"true\",\"mfaStrategyDynamic.longTermNoLoginDays\":\"180\",\"lockTimeLengthInfo\":\"10 minute(s)\",\"mfaStrategyDynamic_ipDetectorType\":\"false\",\"mfaStrategyDynamic_longTermNoLoginDays\":\"180\",\"mfaStrategyDynamic_usedIpDetectorEnabled\":\"true\",\"webTitle\":\"\u897F\u5B89\u4EA4\u901A\u5927\u5B66\u7EDF\u4E00\u8EAB\u4EFD\u8BA4\u8BC1\u7F51\u5173\",\"mfaStrategyDynamic_recentIpSilenceInDays\":\"10\",\"secEnabled\":\"true\",\"mfaStrategyDynamic.usedIpRule\":\"last\",\"isWorkweixin\":false,\"mfaStrategyDynamic.usedIpDetectorEnabled\":\"true\",\"secStrategyStaticFirst\":\"false\",\"priorityPcWay\":\"smsCode\",\"mfLayout\":\"newCenter\",\"requestPerIPRateLimiter_rateTime\":\"60\",\"identityNoEnabled\":true,\"accountAbnormal_kickoutEnabled\":\"true\",\"mfaStrategyDynamic_trustAgentDetectorEnabled\":\"true\"}"+ ')');
globalConfig.registeredServiceName = registeredServiceName;
console.log("globalConfig", globalConfig);


var dialogVisible = false;

var superappName = "\u8D85\u7EA7APP";

// account 账号密码、smsCode 手机动态密码、qrCode 扫码登录
var priorityPcWay = "smsCode";

// 1 账号密码、2 手机动态密码、3 扫码登录
var defaultMenu = "1";
if (priorityPcWay) {
  if (priorityPcWay == "account") {
    defaultMenu = "1";
  }
  else if (priorityPcWay == "smsCode") {
    defaultMenu = "2";
  }
  else if (priorityPcWay == "qrCode") {
    if (!isMobile) {
      defaultMenu = "3";
    }
  }
}
console.log("defaultMenu", defaultMenu);


var loginType = getQueryString("loginType");

var qrCodeEnabled = true;
var currentMenu = null;
var isQrcode = false;

var currentMenu = localStorage.currentMenu;

if (currentMenu) {
  
} else {
  if (loginType === "") {
    currentMenu = defaultMenu;
  } else {
    currentMenu = loginType;
  }
}

if (currentMenu == 3) {
  if (qrCodeEnabled == true || qrCodeEnabled == 'true') {
    currentMenu = defaultMenu;
    isQrcode = true;
  } else {
    currentMenu = defaultMenu;
    isQrcode = false;
  }
}
console.log("isQrcode", isQrcode);
console.log("currentMenu", currentMenu);

var activeMenu = parseInt( localStorage.activeMenu || "0" );

var rememberPasswordEnabled = "false" == 'true';
var rememberPassword = localStorage.rememberPassword=="true";
console.log("rememberPassword", rememberPasswordEnabled, rememberPassword);

var localeEnabled = "true";
var language = "en";
console.log("language", language);


// var icon = "\/cas\/file\/png\/icon.png";
var logo = "\/cas\/file\/png\/logo.png" +"?"+encodeURIComponent(globalConfig.logo);
var bg = "\/cas\/file\/png\/bg.png" +"?"+encodeURIComponent(globalConfig.bg);

var logoM = "\/cas\/file\/png\/logoM.png" +"?"+encodeURIComponent(globalConfig.logoM);
var bgM = "\/cas\/file\/png\/bgM.png" +"?"+encodeURIComponent(globalConfig.bgM);

var bg1 = "\/cas\/file\/png\/bg1.png" +"?"+encodeURIComponent(globalConfig.bg1);
var bg2 = "\/cas\/file\/png\/bg2.png" +"?"+encodeURIComponent(globalConfig.bg2);
var bg3 = "\/cas\/file\/png\/bg3.png" +"?"+encodeURIComponent(globalConfig.bg3);

var ppts = [];
var backgrounds = [];

if (ppts != null) {
  for (var i = 0; i < ppts.length; i++) {
    backgrounds[i] = ppts[i].fileurl;
  }
}

if (backgrounds == null || backgrounds.length == 0) {
  backgrounds = [ bg ];
  if (globalConfig.bg1) {
    backgrounds.push(bg1);
  }
  if (globalConfig.bg2) {
    backgrounds.push(bg2);
  }
  if (globalConfig.bg3) {
    backgrounds.push(bg3);
  }
}


var customEntryLinks = [];

var customEntryLink1Name = null;
var customEntryLink1Url = null;
var customEntryLink2Name = null;
var customEntryLink2Url = null;
var customEntryLink3Name = null;
var customEntryLink3Url = null;
var customEntryLink4Name = null;
var customEntryLink4Url = null;

if ( (customEntryLink1Name!=null && customEntryLink1Name!='') && (customEntryLink1Url!=null && customEntryLink1Url!='') ) {
  customEntryLinks.push({"name":customEntryLink1Name, "url":customEntryLink1Url});
}
if ( (customEntryLink2Name!=null && customEntryLink2Name!='') && (customEntryLink2Url!=null && customEntryLink2Url!='') ) {
  customEntryLinks.push({"name":customEntryLink2Name, "url":customEntryLink2Url});
}
if ( (customEntryLink3Name!=null && customEntryLink3Name!='') && (customEntryLink3Url!=null && customEntryLink3Url!='') ) {
  customEntryLinks.push({"name":customEntryLink3Name, "url":customEntryLink3Url});
}
if ( (customEntryLink4Name!=null && customEntryLink4Name!='') && (customEntryLink4Url!=null && customEntryLink4Url!='') ) {
  customEntryLinks.push({"name":customEntryLink4Name, "url":customEntryLink4Url});
}

var showLink = customEntryLinks.length>0;
var showLessLink = customEntryLinks.length<4;


var loadComponent = null;

var showQrCode = false;

//
var layoutCom = null;
var backgroudCom = null;
var logoCom = null;
var languageCom = null;
var announcementCom = null;
var noticeCom = null;
var customLinkCom = null;
var copyrightCom = null;
var browserSupportCom = null;

var passwordLoginCom = null;
var smsCodeLoginCom = null;
var scanLoginCom = null;
var federatedLoginCom = null;
var quickLinkCom = null;
var noticeBoardCom = null;


var _superappDownloadQrCodeImgUrl="\/cas\/qr\/generator.png";

var _federatedUrls = [{"name":"\u5FAE\u4FE1","redirectUrl":"\/federatedRedirect\/openweixin?service=https:\/\/cas.xjtu.edu.cn\/loginsw?TARGET%3Dhttps:\/\/m.dentalbeanchina.com/bb\/webapps\/bb-SSOIntegrationDemo-BBLEARN\/index.jsp","type":"openweixin","cssClass":"","autoRedirect":false}];

var _backgrounds = backgrounds;
var _logo = logo;
var _language = language;


var _i18n = globalI18n;
var _config = globalConfig;

</script>

<!-- 登录表单 提交 --><script type="text/javascript">

function submitFm1() {
  // $("#fm1").submit();
  $("#fm1").find(":submit").click();
}
function submitFm2() {
  // $("#fm2").submit();
  $("#fm2").find(":submit").click();
}
function submitFm3() {
  // $("#fm3").submit();
  $("#fm3").find(":submit").click();
}

<!-- 城市热点 -->
function submitFm9() {
  // $("#fm9").submit();
  $("#fm9").find(":submit").click();
}

</script>

<!-- 城市热点 --><script type="text/javascript">

var drcomIPLoginEnabled = false == true;
var drcomIPSuccess = null == true;
var isDrcomIPLoginAuto = drcomIPLoginEnabled && drcomIPSuccess && ((localStorage.isDrcomIPLoginAuto || "false") == "true");

</script>


<!-- 双因子 --><script type="text/javascript">

//双因子
var mfaEnabled = "true" == "true";
var mfaSmsCodeLoginEnabled = "false" == "true"; // mfaSmsCodeLoginEnabled = true;
var mfaQrCodeLoginEnabled = "false" == "true"; // mfaQrCodeLoginEnabled = true;

var mfaTypeAppPush = "false" == "true";
var mfaTypeSecurePhone = "true" == "true";
var mfaTypeSecureEmail = "true" == "true";
var mfaTypeQrCode = "false" == "true";
var mfaTypeFaceVerify = "false" == "true";
var mfaTypeOtp = "false" == "true";

if (isMobile) {
  mfaTypeQrCode = false;
  mfaTypeFaceVerify = false;
}

var mfaTypeBasicInfo = false;

var typeList = ['使用App推送验证','使用安全手机验证','使用安全邮箱验证','使用客户端验证','使用人脸识别验证','使用基础信息验证'];

var safeIcon2 = [
  "\/cas\/themes\/mf\/images\/safe\/app2.png",
  "\/cas\/themes\/mf\/images\/safe\/phone2.png",
  "\/cas\/themes\/mf\/images\/safe\/email2.png",
  "\/cas\/themes\/mf\/images\/safe\/qrcode2.png",
  "\/cas\/themes\/mf\/images\/safe\/face2.png",
  "\/cas\/themes\/mf\/images\/safe\/otp2.png",
  "\/cas\/themes\/mf\/images\/safe\/info2.png"
 ];
var safeIcon = [
  "\/cas\/themes\/mf\/images\/safe\/app.png",
  "\/cas\/themes\/mf\/images\/safe\/phone.png",
  "\/cas\/themes\/mf\/images\/safe\/email.png",
  "\/cas\/themes\/mf\/images\/safe\/qrcode.png",
  "\/cas\/themes\/mf\/images\/safe\/face.png",
  "\/cas\/themes\/mf\/images\/safe\/otp.png",
  "\/cas\/themes\/mf\/images\/safe\/info.png"
 ];
var typeInfo = [
  {'type':'apppush', 'enabled': mfaTypeAppPush, 'title':'APP推送', 'info':'使用APP推送验证', 'icon':"\/cas\/themes\/mf\/images\/safe\/app.png", 'icon2':"\/cas\/themes\/mf\/images\/safe\/app2.png"},
  {'type':'securephone', 'enabled': mfaTypeSecurePhone, 'title':'安全手机', 'info':'使用安全手机验证', 'icon':"\/cas\/themes\/mf\/images\/safe\/phone.png", 'icon2':"\/cas\/themes\/mf\/images\/safe\/phone2.png"},
  {'type':'secureemail', 'enabled': mfaTypeSecureEmail, 'title':'安全邮箱', 'info':'使用安全邮箱验证', 'icon':"\/cas\/themes\/mf\/images\/safe\/email.png", 'icon2':"\/cas\/themes\/mf\/images\/safe\/email2.png"},
  {'type':'qrcode', 'enabled': mfaTypeQrCode, 'title':'客户端扫码', 'info':'使用客户端扫码', 'icon':"\/cas\/themes\/mf\/images\/safe\/qrcode.png", 'icon2':"\/cas\/themes\/mf\/images\/safe\/qrcode2.png"},
  {'type':'faceverify', 'enabled': mfaTypeFaceVerify, 'title':'人脸识别', 'info':'使用人脸识别验证', 'icon':"\/cas\/themes\/mf\/images\/safe\/face.png", 'icon2':"\/cas\/themes\/mf\/images\/safe\/face2.png"},
  {'type':'otp', 'enabled': mfaTypeOtp, 'title':'OTP令牌', 'info':'使用OTP令牌验证', 'icon':"\/cas\/themes\/mf\/images\/safe\/otp.png", 'icon2':"\/cas\/themes\/mf\/images\/safe\/otp2.png"},
  {'type':'basicinfo', 'enabled': mfaTypeAppPush, 'title':'基础信息', 'info':'使用基础信息验证', 'icon':"\/cas\/themes\/mf\/images\/safe\/info.png", 'icon2':"\/cas\/themes\/mf\/images\/safe\/info2.png"},
 ];

var defaultTypeIndex = -1;
if (mfaTypeAppPush) {
  defaultTypeIndex = 0;
} else if (mfaTypeSecurePhone) {
  defaultTypeIndex = 1;
} else if (mfaTypeSecureEmail) {
  defaultTypeIndex = 2;
} else if (mfaTypeQrCode) {
  defaultTypeIndex = 3;
} else if (mfaTypeFaceVerify) {
  defaultTypeIndex = 4;
} else if (mfaTypeOtp) {
  defaultTypeIndex = 5;
} else if (mfaTypeBasicInfo) {
  defaultTypeIndex = 6;
}

var currentLoginType = "passwordLogin";

function mfaDetect(loginType) {
  currentLoginType = loginType;

  var fm = $("#fm1");
  var submitFm = submitFm1;
  if ("smsCodeLogin" == currentLoginType) {
    fm = $("#fm2");
    submitFm = submitFm2;
  }
  if ("qrCodeLogin" == currentLoginType) {
    fm = $("#fm3");
    submitFm = submitFm3;
  }
  
  if (!mfaEnabled) {
    submitFm();
    return;
  }
  
  var username = fm.find("#username").val();
  var password = fm.find("#password").val();
  var fpVisitorId = fm.find('[name="fpVisitorId"]').val();

  if (encryptEnabled && password.indexOf('__RSA__') < 0) {
    var encodedPassword = "__RSA__"+encrypt.encrypt(password);
    password = encodedPassword;
  }

  var url = "\/cas\/mfa\/detect";
//  url += "?username=" + username;
  $.ajax({
    url: url,
    type: "POST",
    dataType: "json",
    data: "loginType="+loginType +"&username=" + encodeURIComponent(username)+"&password=" + encodeURIComponent(password)+"&fpVisitorId="+encodeURIComponent(fpVisitorId),
    success: function success(r) {
      console.log(url, r);
      if (r && r.code == 0) {
        var state = r.data.state;
        fm.find('[name="mfaState"]').val(state);

        var need = r.data.need;
        if (need == true) {
          $("#showGuardDialog").click();
        } else {
          submitFm();
        }
      } else {
        console.log(r);
        // submitFm();
      }
    },
    error: function error(err) {
      console.log(err);
      // submitFm();
    }
  });

}
</script>

<!-- 账号激活、忘记密码 链接地址 --><script type="text/javascript">
function __newForgotYourPassword() {
  return "\/cas\/personal\/forgotYourPassword?service=https:\/\/cas.xjtu.edu.cn\/loginsw?TARGET%3Dhttps:\/\/m.dentalbeanchina.com/bb\/webapps\/bb-SSOIntegrationDemo-BBLEARN\/index.jsp";
}

function __newActiveYourAccount() {
  return "\/cas\/personal\/activeYourAccount?service=https:\/\/cas.xjtu.edu.cn\/loginsw?TARGET%3Dhttps:\/\/m.dentalbeanchina.com/bb\/webapps\/bb-SSOIntegrationDemo-BBLEARN\/index.jsp";
}
</script>

<!-- 扫码登录 --><script type="text/javascript">

// 扫码成功
// 确认登录
// 取消登录
// 二维码已失效，点击刷新
// 出现异常，点击刷新
var scanMessageScaned = "Scaned"
var scanMessageSubmit = "Go to Submit Login"
var scanMessageCancel = "Cancel Login"
var scanMessageExpired = "Expired, Click to Refresh"
var scanMessageError = "Error, Click to Refresh"

var __qrcodeImgUrl = "\/cas\/qr\/qrcode";
var __qrCometUrl = "\/cas\/qr\/comet";

var __qrcodeCometTimeout = 0;

function __newQrCodeImgUrl() {
  var qrcodeImgUrl = __qrcodeImgUrl+"?r=" +(new Date()).getTime()+ Math.floor(Math.random()*24) + (isDebug?"&debug=debug":"");
  return qrcodeImgUrl;
}

function __renewQrCodeStatus(isQrcodeAlert, qrcodeAlertMessage, userId, stateKey, clearTimeout) {
  scanLoginCom.isQrcodeAlert = isQrcodeAlert;
  scanLoginCom.qrcodeAlertMessage = qrcodeAlertMessage;

  vm.qrCodeLoginUserId = userId;
  vm.qrCodeStateKey = stateKey; // console.log(vm.qrCodeStateKey, stateKey);
  
  if (clearTimeout) {
    window.clearTimeout(__qrcodeCometTimeout);
  }
}

function __refreshQrCode() {
  scanLoginCom.qrcodeImgUrl = __newQrCodeImgUrl();
  
  __renewQrCodeStatus(false, '', '', '', true);
  
  __startQrComet();
}

function __startQrComet() {
  window.clearTimeout(__qrcodeCometTimeout); // 开启定时

  function qrComet() {
    var url = __qrCometUrl;
    $.ajax({
      url: url,
      type: "POST",
      dataType: "json",
      timeout: 1000,
      success: function success(r) {
        // console.log(r);
        if (r && r.code == 0) {
          var stateKey = r.data.stateKey;
          var qrCode = r.data.qrCode;

          if (qrCode.status == "1") {
            // 1 创建、未扫码
            __renewQrCodeStatus(false, '', '', '');
          } else if (qrCode.status == "2") {
            // 2 已扫码
            __renewQrCodeStatus(true, scanMessageScaned, '', '');
          } else if (qrCode.status == "3") {
            // 3 已授权
            __renewQrCodeStatus(true, scanMessageSubmit, qrCode.userId, stateKey, true);
            window.setTimeout(function () {
          	  if (mfaEnabled && mfaQrCodeLoginEnabled) {
                mfaDetect("qrCodeLogin");
                return;
              }
              $("#fm3").submit();
            }, 500);
          } else if (qrCode.status == "4") {
            // 4 已取消
            __renewQrCodeStatus(true, scanMessageCancel, '', '', true);
          }
        } else if (r && r.code == 1) {
          __renewQrCodeStatus(true, scanMessageExpired, '', '', true);
        } else {
          __renewQrCodeStatus(true, scanMessageError, '', '', true);
        }
      }
    });
    __qrcodeCometTimeout = window.setTimeout(qrComet, 2000);
  }

  __qrcodeCometTimeout = window.setTimeout(qrComet, 2000);
}

var _qrcodeImage = {
  qrcode : "\/cas\/themes\/mf\/images\/qrcode.svg",
  normal : "\/cas\/themes\/mf\/images\/pc-login.svg"
};

function _changeMenu(index) {
  this.currentMenu = index;
  // TODO: refreshCaptchaInMenu(this.currentMenu);

  currentMenu = this.currentMenu;
  localStorage.currentMenu = this.currentMenu;
  
  // 隐藏
  if (index != '1') {
    if (passwordLoginCom) {
      passwordLoginCom.agreeAgreementAndPrivacyShow = false;
    }
  } else if (index != '2') {
    if (smsCodeLoginCom) {
      smsCodeLoginCom.agreeAgreementAndPrivacyShow = false;
    }
  }
}

function _openOrCloseQrCode() {
  this.isQrcode = !this.isQrcode;

  __renewQrCodeStatus(false, '', '', true);

  if (this.isQrcode) {
    __refreshQrCode();
    localStorage.currentMenu = 3;

    // 隐藏
    if (passwordLoginCom) {
      passwordLoginCom.agreeAgreementAndPrivacyShow = false;
    }
    if (smsCodeLoginCom) {
      smsCodeLoginCom.agreeAgreementAndPrivacyShow = false;
    }
  } else {
	window.clearTimeout(__qrcodeCometTimeout);

    if (currentMenu == 3) {
      this.currentMenu = 1;
    } else {
      this.currentMenu = currentMenu;
    }
    localStorage.currentMenu = this.currentMenu;
  }

  currentMenu = this.currentMenu;
}

function _showQrCode() {
  showQrCode = true;
}

</script>

<!-- 密码登录、手机动态码登录 --><script type="text/javascript">
function _passwordLogin() {
  console.log("submit button click");
  var username = $("#fm1").find("#username").val();
  var password = $("#fm1").find("#password").val();
  if (username == null || username == '') {
    $("#showErrorMessageUsername").click();
    return false;
  }

  if (password == null || password == '') {
    $("#showErrorMessagePassword").click();
    return false;
  }

  window.setTimeout(function () {
    if (mfaEnabled) {
      mfaDetect("passwordLogin");
      return;
  	}
    submitFm1();
  }, 500);

  return false;
}


var i_sendToken = "Send"
var i_sending = "Sending..."
var i_send = "Sended"

function _smsCodeSend() {
  var self = this;

  var mobile = $("#fm2").find("#username").val();
  var captcha = $("#fm2").find("#captcha").val();

  if (mobile == null || mobile == '') {
    self.disableSendToken = false;
    $("#showErrorMessageMobile").click();
    return;
  }
  if (!mobilePattern.test(mobile)) {
    self.disableSendToken = false;
    $("#showErrorMessageMobile").click();
    return;
  }

  var time = 60;
  var setSended = function() {
    self.sendButtonText = (i_send + '('+time+')');
    
    time --;
    if (time > 0) {
      setTimeout(setSended, 1000);
    } else {
      self.disableSendToken = false;

      self.sendButtonDisable = false;
      self.sendButtonText = i_sendToken;
    }
  }

  $.ajax({
    url: "\/cas\/passwordlessTokenSend",
    type: "POST",
    data: {"username": mobile, "captcha": captcha},
  	dataType: "json",
  	success: function(r) {
  	  console.log(r);
  	  
  	  if (r.data.success) {
    	  // 提示信息
          $("#showSuccessMessageSendCode").click();
    	  // 倒计时 60s
    	  time = 60;
    	  setSended();
  	  }
  	  
  	  if (r.data.error) {
  	    $("#showFailureMessageSendCode").click();
  	    time = 0;
  	    setSended();
  	  }
  	}
  });
}

function _smsCodeLogin() {
  var mobile = $("#fm2").find("#username").val();
  var dynamiccode = $("#fm2").find("#password").val();
  var captcha = $("#fm2").find("#captcha").val();

  if (mobile == null || mobile == '') {
    $("#showErrorMessageMobile").click();
    return false;
  }
  if (!mobilePattern.test(mobile)) {
    $("#showErrorMessageMobile").click();
    return false;
  }

  if (dynamiccode == null || dynamiccode == '') {
    $("#showErrorMessageDynamicCode").click();
    return false;
  }
  
  window.setTimeout(function () {
	if (mfaEnabled && mfaSmsCodeLoginEnabled) {
      mfaDetect("smsCodeLogin");
      return;
	}
    submitFm2();
  }, 500);
  
  return false;
}
</script>

<!-- 公告 --><script type="text/javascript">

function _openNotice() {
  vm.noticeDialogVisible = true;
}

</script>


<!-- 图片验证码 --><script type="text/javascript">

var __captchaImgUrl = "\/cas\/captcha.jpg";
function __newCaptchaImgUrl() {
  var captchaImgUrl = __captchaImgUrl+"?r=" +(new Date()).getTime()+ Math.floor(Math.random()*24);
  return captchaImgUrl;
}

function __refreshCaptcha(loginType) {
  if ("passwordLogin" == loginType) {
    passwordLoginCom.captcha = ""
    passwordLoginCom.captchaImgUrl = __newCaptchaImgUrl();
  } else if ("smsCodeLogin" == loginType) {
    smsCodeLoginCom.captcha = ""
    smsCodeLoginCom.captchaImgUrl = __newCaptchaImgUrl();
  }
}

</script>


<!-- 记住密码，仅 移动浏览器 --><script type="text/javascript">
function doRememberPassword(username, password) {
  var containerFormInput = $("#fm1Input");
  var rememberPasswordObj = containerFormInput.find('[name="rememberPassword"]');
  if (rememberPasswordObj && rememberPasswordObj.length > 0) {
    var rememberPassword = rememberPasswordObj.prop('checked');
    if (rememberPassword) {
      var savedUsername = username;
      var savedPassword = password.indexOf('__RSA__') < 0 ? "__RSA__"+encrypt.encrypt(password) : password;
      
      localStorage.rememberPassword = true;
      localStorage.savedUsername = savedUsername;
      localStorage.savedPassword = savedPassword;
    } else {
      localStorage.rememberPassword = false;
      localStorage.savedUsername = "";
      localStorage.savedPassword = "";
    }
  }
}

function initRememberPassword() {
  var containerFormInput = $("#fm1Input");
  var rememberPasswordObj = containerFormInput.find('[name="rememberPassword"]');
  if (rememberPasswordObj && rememberPasswordObj.length > 0) {
    var rememberPassword = localStorage.rememberPassword == "true";
    if (rememberPassword) {
      var savedUsername = localStorage.savedUsername || "";
      var savedPassword = localStorage.savedPassword || "";

      containerFormInput.find('[name="username"]').val(savedUsername);
      containerFormInput.find('[name="password"]').val(savedPassword);
      
      containerFormInput.find('[name="username"]').focus(function() {this.select();});
      containerFormInput.find('[name="password"]').focus(function() {this.select();});
      
      containerFormInput.find('[name="username"]').keyup(function() {
        var thisUsername = containerFormInput.find('[name="username"]').val();
        if (thisUsername == savedUsername) {
          containerFormInput.find('[name="password"]').val(savedPassword);
        } else {
          containerFormInput.find('[name="password"]').val("");
        }
      });
    }
  }
}
</script>

<!-- 登录失败，处理失败 --><!-- 图片验证码 --><script type="text/javascript">
// 登录失败，处理失败
function processLoginError(containerFormInput, containerForm, originalUsername, hasErrors, errors, loginType) {
  console.log(containerForm);
  console.log(originalUsername);
  console.log(hasErrors);
  console.log(errors);
  
  doLoginFailN(containerFormInput, containerForm, originalUsername, hasErrors, errors, loginType);
}

var casServerPasswordlessCaptchaEnabled = true;

var casServerCaptchaEnabled = true;
var casServerCaptchaSkipN = true;
var captchaSkipN = "3";

var casServerCaptchaShow = false;

// 提交登录时，记录登录次数、登录时间
function doLogin() {
  var loginN = (localStorage.loginN || "0");
  if (loginN == null) {
    loginN = "0";
  }
  
  loginN = parseInt(loginN) +1;
  localStorage.loginN = loginN;

  var nowTimestamp = new Date().getTime();
  localStorage.loginNTimestamp = nowTimestamp;
}

//登录失败时，记录失败次数、失败时间，并显示 图片验证码
function doLoginFailN(containerFormInput, containerForm, originalUsername, hasErrors, errors, loginType) {

  var failN = (localStorage.failN || "0");
  if (failN == null) {
    failN = "0";
  }

  if (hasErrors) {
    failN = parseInt(failN) +1;
    localStorage.failN = failN;
    
    var nowTimestamp = new Date().getTime();
    localStorage.failNTimestamp = nowTimestamp;
  }
  
  doErrorShow(containerForm, hasErrors, errors, loginType);
  doCaptchaShow(containerFormInput, containerForm, failN, loginType);
}

function doErrorShow(containerForm, hasErrors, errors, loginType) {
  if (!hasErrors) {
    return;
  }

  // 显示错误信息
  var error = errors[0];

  if ("passwordLogin" == loginType) {
    if (passwordLoginCom) {
      passwordLoginCom.loginError = error;
    }
  } else if ("smsCodeLogin" == loginType) {
    if (smsCodeLoginCom) {
      smsCodeLoginCom.loginError = error;
    }
  }

}

// 显示 图片验证码
function doCaptchaShow(containerFormInput, containerForm, failN, loginType) {
  console.log('show captcha, failN='+failN+", captchaSkipN="+captchaSkipN);

  var fialNInput = containerForm.find('[name="failN"]');
  fialNInput.val(failN);

  /* var captchaInput = containerFormInput.find('[name="captcha"]');  // console.log(captchaInput.parents("div.el-form-item"));
  if (captchaInput.length <= 0) {
    return;
  }
  
  captchaInput.parents("div.captcha-input-container").hide();

  if (failN < 0) {
    captchaInput.parents("div.captcha-input-container").show();
  } else if (failN >= captchaSkipN) {
    captchaInput.parents("div.captcha-input-container").show();
  } */

  var isCaptchaShow = false;
  if (failN < 0) {
    isCaptchaShow = true;
  } else if (failN >= captchaSkipN) {
    isCaptchaShow = true;
  }
  
  if ("passwordLogin" == loginType) {
    if (passwordLoginCom) {
      passwordLoginCom.isCaptchaShow = isCaptchaShow;
    }
  } else if ("smsCodeLogin" == loginType) {
    if (smsCodeLoginCom) {
      smsCodeLoginCom.isCaptchaShow = isCaptchaShow;
    }
  }
  
  var captchaInput = containerFormInput.find('[name="captcha"]');
  if (captchaInput.length <= 0) {
    return;
  }
  
  captchaInput.parents("div.captcha-input-container").hide();
  casServerCaptchaShow = false;
  if (isCaptchaShow) {
    captchaInput.parents("div.captcha-input-container").show();
    casServerCaptchaShow = true;
  }
}

// 判断是否显示 图片验证码
function initCaptchaShow(containerFormInput, containerForm, loginType) {
  if (casServerCaptchaEnabled) {
    if (casServerCaptchaSkipN) {
      var loginN = (localStorage.loginN || "0");
      if (loginN == null) {
        loginN = "0";
      }
      loginN = parseInt(loginN);
      
      var failN = (localStorage.failN || "0");
      if (failN == null) {
        failN = "0";
      }
      failN = parseInt(failN);
      
      var failNTimestamp = (localStorage.failNTimestamp || "0");
      if (failNTimestamp == null) {
        failNTimestamp = "0";
      }
      
      var nowTimestamp = new Date().getTime();
      console.log('init captcha, failNTimestamp='+failNTimestamp+", nowTimestamp="+nowTimestamp);
      if (failNTimestamp < (nowTimestamp - (1000 * 60 * 60 * 1))) { // FIXME: 如果 1小时后，再登录，则清空 failN
        loginN = 0; 
        localStorage.loginN = loginN;
        failN = 0;
        localStorage.failN = failN;
      }
      
      if (failN < loginN) {
        loginN = 0; 
        localStorage.loginN = loginN;
        failN = 0; 
        localStorage.failN = failN;
      }
      
      doCaptchaShow(containerFormInput, containerForm, failN, loginType); // 显示
    } else {
      doCaptchaShow(containerFormInput, containerForm, -1, loginType); // 始终显示
    }
  }
}
</script>


<!-- PC登录页面 加载 --><script>

loadComponent = function() {

  console.log(window["casServerSiteUi"]);

  window["casServerSiteUi"].get('./Layout').then(function layout(factory){
    
    // 先加载 layout
    var module = factory()
    var newDemo = Vue.component('Layout',module.default)
    layoutCom = new newDemo({
      el:"#layout",
      propsData: {
        i18n: _i18n,
        config: _config,

        qrcodeImage: _qrcodeImage,

        isQrcode: isQrcode,
        currentMenu: currentMenu,
      },
      
      methods: {
        changeMenu: function changeMenu(index) {
          _changeMenu.call(this, index);
        },
        // 扫码登录
        openOrCloseQrCode: function openOrCloseQrCode() {
          _openOrCloseQrCode.call(this);
        },
        // 设置扫码登录 默认是否打开
        showQrCode: function showQrCode() {
          _showQrCode();
        },
      }
    })

    // 再依次加载 其他组件
    window["casServerSiteUi"].get('./Background').then(function background(factory){
      var module = factory()
      var newDemo = Vue.component('Background', module.default)
      backgroudCom = new newDemo({
        el:"#background",
        propsData: {
          i18n: _i18n,
          config: _config,
          bg: _backgrounds,
        }
      })
    })

    window["casServerSiteUi"].get('./Logo').then(function logo(factory){
      var module = factory()
      var newDemo = Vue.component('Logo',module.default)
      logoCom = new newDemo({
        el:"#logo",
        propsData: {
          i18n: _i18n,
          config: _config,
          logo: _logo,
        }
      })
    })

    if (localeEnabled == "true") {
    window["casServerSiteUi"].get('./Language').then(function language(factory){
      var module = factory()
      var newDemo = Vue.component('Language',module.default)
      languageCom = new newDemo({
        el:"#language",
        propsData: {
          i18n: _i18n,
          config: _config,
          language: _language,
        },
        methods:{
          changeLanage: function changeLanage() {
            var lang = this.language == 'zh' ? 'en' : 'zh';
            
            var url = window.location.href;
            if (url.indexOf('&locale=') > 0) {
              url = url.substring(0, url.indexOf('&locale='));
            }
            if (url.indexOf('?')<0) {
              url = url + '?_x=0';
            }
            url = url + '&locale=' + lang;
            
            this.language = lang;
            console.log(this.language);

            window.location.href = url;
          }
        }
      })
    })
    }

    //  公告栏
    window["casServerSiteUi"].get('./NoticeBoard').then(function noticeBoard(factory){
      var module = factory()
      var newDemo = Vue.component('NoticeBoard',module.default)
      noticeBoardCom = new newDemo({
        el:"#noticeBoard", 
        propsData: {
          config: _config,
          i18n: _i18n,
          dialogVisible: dialogVisible,
        }
      })
    })

    window["casServerSiteUi"].get('./Announcement').then(function announcement(factory){
      var module = factory()
      var newDemo = Vue.component('Announcement',module.default)
      announcementCom = new newDemo({
        el:"#announcement", 
        propsData: {
          i18n: _i18n,
          config: _config,
        }
      })
    })
    
    window["casServerSiteUi"].get('./Notice').then(function notice(factory){
      var module = factory()
      var newDemo = Vue.component('Notice',module.default)
      noticeCom = new newDemo({
        el:"#notice", 
        propsData: {
          i18n: _i18n,
          config: _config,
        }
      })
    })
    
    window["casServerSiteUi"].get('./CustomLink').then(function customLink(factory){
      var module = factory()
      var newDemo = Vue.component('CustomLink',module.default)
      customLinkCom = new newDemo({
        el:"#customLink",
        propsData: {
          i18n: _i18n,
          config: _config,
        }
      })
    })

    window["casServerSiteUi"].get('./Copyright').then(function copyright(factory){
      var module = factory()
      var newDemo = Vue.component('Copyright',module.default)
      copyrightCom = new newDemo({
        el:"#copyright",
        propsData: {
          i18n: _i18n,
          config: _config,
        }
      })
    })

    window["casServerSiteUi"].get('./BrowserSupport').then(function browserSupport(factory){
      var module = factory()
      var newDemo = Vue.component('BrowserSupport',module.default)
      browserSupportCom = new newDemo({
        el:"#browserSupport",
        propsData: {
          i18n: _i18n,
          config: _config,
        }
      })
    })

    window["casServerSiteUi"].get('./PasswordLogin').then(function passwordLogin(factory){
      var module = factory()
      var newDemo = Vue.component('PasswordLogin',module.default)
      passwordLoginCom = new newDemo({
        el:"#passwordLogin",
        propsData: {
          i18n: _i18n,
          config: _config,
          captchaEnabled: casServerCaptchaEnabled,
          captchaImgUrl: __newCaptchaImgUrl(),
          
          isCaptchaShow: false,
          
          rememberPasswordEnabled: rememberPasswordEnabled,
          rememberPassword: rememberPassword,
        },
        /* mounted() {
          initCaptchaShow($("#fm1Input"), $("#fm1"), "passwordLogin");
        }, */
        methods: {
          refreshCaptcha: function refreshCaptcha() {
            __refreshCaptcha('passwordLogin');
          },
          passwordLogin: function passwordLogin(username, password, captcha, rememberMe) {
            var self = this;
            
            vm.passwordLoginUsername = username;
            vm.passwordLoginPassword = password;
            vm.passwordLoginCaptcha = captcha;
            vm.passwordLoginRememberMe = rememberMe;

            window.setTimeout(function () {
              _passwordLogin.call(self);
            }, 500);
            
            return false;
          }
        }
      })
      
      initCaptchaShow($("#fm1Input"), $("#fm1"), "passwordLogin");

      if (loginError && loginError.loginType == "passwordLogin") {
        console.log("trigger processLoginError", loginError.loginType);
        processLoginError(loginError.containerFormInput, loginError.containerForm, loginError.originalUsername, loginError.hasErrors, loginError.errors, loginError.loginType);
      }

    })

    window["casServerSiteUi"].get('./SmsCodeLogin').then(function smsCodeLogin(factory){
      var module = factory()
      var newDemo = Vue.component('SmsCodeLogin',module.default)
      smsCodeLoginCom = new newDemo({
        el:"#smsCodeLogin",
        data: function data() {
          return {
            disableSendToken: false,
          }
        },
        propsData: {
          i18n: _i18n,
          config: _config,
          captchaEnabled: casServerPasswordlessCaptchaEnabled,
          captchaImgUrl: __newCaptchaImgUrl(),
          
          /* isCaptchaShow: false, */

          sendButtonDisable: false,
          sendButtonText: i_sendToken,
        },
        methods: {
          refreshCaptcha: function refreshCaptcha() {
            __refreshCaptcha('smsCodeLogin');
          },
          smsCodeSend: function smsCodeSend(mobile, captcha) {
            var self = this;

            vm.smsCodeLoginUsername = mobile;
            vm.smsCodeLoginCaptcha = captcha;

            if (this.disableSendToken) {
              return;
            }
            this.disableSendToken = true;

            window.setTimeout(function () {
              _smsCodeSend.call(self);
            }, 500);
          },
          smsCodeLogin: function smsCodeLogin(mobile, dynamiccode, captcha) {
            var self = this;

            vm.smsCodeLoginUsername = mobile;
            vm.smsCodeLoginPassword = dynamiccode;
            vm.smsCodeLoginCaptcha = captcha;

            window.setTimeout(function () {
              _smsCodeLogin.call(self);
            }, 500);
            
            return false;
          },
        }
      })
      
      if (loginError && loginError.loginType == "smsCodeLogin") {
        console.log("trigger processLoginError", loginError.loginType);
        processLoginError(loginError.containerFormInput, loginError.containerForm, loginError.originalUsername, loginError.hasErrors, loginError.errors, loginError.loginType);
      }
    })

    window["casServerSiteUi"].get('./ScanLogin').then(function scanLogin(factory){
      var module = factory()
      var newDemo = Vue.component('ScanLogin',module.default)
      scanLoginCom = new newDemo({
        el:"#scanLogin",
        propsData: {
          i18n: _i18n,
          config: _config,
          qrcodeImgUrl: __newQrCodeImgUrl(),

          isQrcodeAlert: false,
          qrcodeAlertMessage: "",
        },
        methods: {
          refreshQrCode: function refreshQrCode() {
            __refreshQrCode();
          }
        }
      })
      
      if (isQrcode || showQrCode) {
        __refreshQrCode();
      }
    })

    window["casServerSiteUi"].get('./FederatedLogin').then(function federatedLogin(factory){
      var module = factory()
      var newDemo = Vue.component('FederatedLogin',module.default)
      federatedLoginCom = new newDemo({
        el:"#federatedLogin",
        propsData: {
          i18n: _i18n,
          config: _config,
          
          federatedUrls: _federatedUrls,
        }
      })
    })

    window["casServerSiteUi"].get('./QuickLink').then(function quickLink(factory){
      var module = factory()
      var newDemo = Vue.component('QuickLink',module.default)
      quickLinkCom = new newDemo({
        el:"#quickLink",
        propsData: {
          i18n: _i18n,
          config: _config,
          superappDownloadQrCodeImgUrl: _superappDownloadQrCodeImgUrl,
          forgotPasswordRedirectUrl: __newForgotYourPassword(),
          activeAccountRedirectUrl: __newActiveYourAccount(),
        },
      })
    })

  })

};
</script>


<script type="text/javascript">
var SwUI = SWUI;
Vue.use(SwUI)

var vm = new Vue({
  el: '#vue_main',
  data: function data() {
    return {
      isMobile: isMobile,

      customEntryLinks: customEntryLinks,
      showLink: showLink,
      showLessLink: showLessLink,

      dialogVisible: dialogVisible,
      
      noticeDialogVisible: false,
      
      passwordLoginUsername: "",
      passwordLoginPassword: "",
      passwordLoginCaptcha: "",
      passwordLoginRememberMe: false,
      
      smsCodeLoginUsername: "",
      smsCodeLoginPassword: "",
      smsCodeLoginCaptcha: "",
      
      qrCodeLoginUserId: "",
      qrCodeStateKey: "",
      
      
      active: activeMenu,

      logoM: logoM, 
      bgM: bgM, 
      
      jointActive: -1,
      loading: false,

      rememberPassword: localStorage.rememberPassword=="true",

      // 城市热点
      drcomIPLoginEnabled: drcomIPLoginEnabled,
      drcomIPDialogVisible: drcomIPSuccess,
      isDrcomIPLoginAuto: isDrcomIPLoginAuto,
      drcomIPLoginAutoEnabled: isDrcomIPLoginAuto,
      drcomIPLoginAutoTimeout: 0,
      drcomIPLoginButtonText: "上网账号快速登录",
      
      // 双因子认证
      mfaEnabled: mfaEnabled,
      guardDialogVisible: false,
      
      typeList: typeList,
      iconIndex:0,  //安全验证方式   0：app 推送；1：安全手机； 2：安全邮箱  3：人脸识别
      safeIcon2: safeIcon2,
      safeIcon: safeIcon,
      typeInfo: typeInfo,
      typeIndex: defaultTypeIndex,  //安全验证方式   0：app 推送；1：安全手机； 2：安全邮箱  3：客户端扫码  4：人脸识别
      
      loginType: currentLoginType,

      showError:false,  //是否显示验证码错误
      faceType:1,  // 人脸识别认证状态  1  扫描二维码  2 刷新二维码  3 扫描成功
      

      mfaState: null,

      attestServerUrl: null,
      gid: null,
      
      trustAgent: false,

      basicInfoLabel:'填写姓名和证件号码后六位',
      basicInfoName:'',
      basicInfoIdentityNo: '',
      basicInfoValidShowAlert: false,
      basicInfoValidAlertMessage: null,

      appPushSendTimeout: 0,
      appPushSendDisabled: false,
      appPushSendText: "点击发送验证请求",
      appPushSendSeconds: 30,
      appPushStatusTimeout: 0,
      appPushStatusShowAlert: false,
      appPushStatusAlertMessage: null,
      appPushCallbackCode: null,

      otpSecret:'',
      otpSendTimeout: 0,
      otpSendDisabled: false,
      otpSendText: "获取验证码",
      otpSendSeconds: 60,
      otpCode:'',
      otpValidShowAlert: false,
      otpValidAlertMessage: null,

      securePhone:'',
      securePhoneSendTimeout: 0,
      securePhoneSendDisabled: false,
      securePhoneSendText: "获取验证码",
      securePhoneSendSeconds: 60,
      securePhoneCode:'',
      securePhoneValidShowAlert: false,
      securePhoneValidAlertMessage: null,

      secureEmail:'',
      secureEmailSendTimeout: 0,
      secureEmailSendDisabled: false,
      secureEmailSendText: "获取验证码",
      secureEmailSendSeconds: 60,
      secureEmailCode:'',
      secureEmailValidShowAlert: false,
      secureEmailValidAlertMessage: null,
      
      qrCode:null,
      qrCodeScanTypeNames: "",
      qrCodeScanQrcode: null,
      qrCodeScanSuccess: false,
      qrCodeStatusTimeout: 0,
      qrCodeStatusShowAlert: false,
      qrCodeStatusAlertMessage: null,
      qrCodeCallbackCode: null,
      

      faceVerify:null,
      faceVerifyScanFaceverify: null,
      faceVerifyScanSuccess: false,
      faceVerifyStatusTimeout: 0,
      faceVerifyStatusShowAlert: false,
      faceVerifyStatusAlertMessage: null,
      faceVerifyCallbackCode: null,
      
    };
  },
  mounted: function mounted() {
    if (!isMobile) {
      if (loadComponent) {
        loadComponent();
      }
      
      /* if (this.isQrcode) {
        // 显示二维码
        var self = this;
        self.isQrcodeAlert = false;
        self.qrcodeAlertMessage = "";
        self.stateKey = "";
        this.qrcodeImgUrl = "\/cas\/qr\/qrcode"+"?r=" +(new Date()).getTime()+ Math.floor(Math.random()*24) + (isDebug?"&debug=debug":"");
        this.startQrComet();
      } */
      
      // 城市热点
      if (this.isDrcomIPLoginAuto) {
        var drcomIPCloseButton = $("#drcomIPClose");
        var drcomIPLoginButton = $("#drcomIPLogin");
        
        drcomIPCloseButton.css("display", "none")
        drcomIPLoginButton.css("display", "inline")
        
        this.drcomIPLoginAutoSubmit();
      } else {
        var drcomIPCloseButton = $("#drcomIPClose");
        var drcomIPLoginButton = $("#drcomIPLogin");
        
        drcomIPCloseButton.css("display", "inline-block")
        drcomIPLoginButton.css("display", "inline-block")
      }
      
    }
  },
  methods: {
    changeActive: function changeActive(index) {
      localStorage.activeMenu = index
    },
    // 城市热点
    drcomIPLogin: function drcomIPLogin() {
      if (this.isDrcomIPLoginAuto) {
        this.drcomIPLoginAutoCancel();
      } else {
        if (this.drcomIPLoginAutoEnabled) {
          localStorage.isDrcomIPLoginAuto = "true";
        } else {
          localStorage.isDrcomIPLoginAuto = "false";
        }
        submitFm9();
      }
    },
    drcomIPLoginAutoSubmit: function drcomIPLoginAutoSubmit() {
      var self = this;
      var isDrcomIPLoginAuto = localStorage.isDrcomIPLoginAuto || "false";
      if (isDrcomIPLoginAuto == "true") {
        var drcomIPLoginButton = $("#drcomIPLogin");
        
        var time = 5;
        var autoSubmit = function() {
          drcomIPLoginButton.find('span').text(self.drcomIPLoginButtonText + '('+time+' 秒后自动登录，点击可取消)');
          
          time --;
          if (time >= 0) {
            self.drcomIPLoginAutoTimeout = window.setTimeout(autoSubmit, 1000);
          } else {
            submitFm9();
          }
        }
        
        self.drcomIPLoginAutoTimeout = window.setTimeout(autoSubmit, 1);
      }
    },
    drcomIPLoginAutoCancel: function drcomIPLoginAutoCancel() {
      var self = this;
      
      window.clearTimeout(self.drcomIPLoginAutoTimeout);
      self.isDrcomIPLoginAuto = false;
      self.drcomIPLoginAutoEnabled = false;
      
      var drcomIPLoginButton = $("#drcomIPLogin");
      drcomIPLoginButton.find('span').text(self.drcomIPLoginButtonText);
      
      var drcomIPCloseButton = $("#drcomIPClose");
      var drcomIPLoginButton = $("#drcomIPLogin");
      
      drcomIPCloseButton.css("display", "inline-block")
      drcomIPLoginButton.css("display", "inline-block")
      
      localStorage.isDrcomIPLoginAuto = "false";
    },
    
    /* closeNotice: function closeNotice() {
      this.noticeDialogVisible = false;
    }, */

    /* handleClose: function handleClose() {
      this.dialogVisible = false;
    }, */

    showErrorMessageUsername: function showErrorMessageUsername() {
      // var message = "Enter Username" + "Staff ID\/Student ID\/Phone";
      var message = "Staff ID\/Student ID\/Phone";
      this.$message.error(message);
    },
    showErrorMessagePassword: function showErrorMessagePassword() {
      // var message = "Enter Password";
      var message = "Enter Password";
      this.$message.error(message);
    },
    showErrorMessageCaptcha: function showErrorMessageCaptcha() {
      var message = "Enter Captcha";
      this.$message.error(message);
    },
    showErrorMessageMobile: function showErrorMessageMobile() {
      var message = "Enter Mobile Phone Number";
      this.$message.error(message);
    },
    showErrorMessageDynamicCode: function showErrorMessageDynamicCode() {
      var message = "Enter Dynamic Code";
      this.$message.error(message);
    },
    showSuccessMessageSendCode: function showSuccessMessageSendCode() {
      var message = "Send success!";
      this.$message.info(message);
    },
    showFailureMessageSendCode: function showFailureMessageSendCode() {
      var message = "Send fail!";
      this.$message.error(message);
    },

    showErrorMessageQrCode: function showErrorMessageQrCode() {
      var message = config.scanClientInfo;
      this.$message.error(message);
    },

    resetTypeIndex: function resetTypeIndex() {
      this.mfaState = $("#fm1").find('[name="mfaState"]').val();
      this.typeInfo = typeInfo;

      if ("passwordLogin" == this.loginType) {
        for (var i=0; i<this.typeInfo.length; i++) {
          if (this.typeInfo[i].type == 'basicinfo') {
            this.typeInfo[i].enabled = false;
          }
        }
      }
      if ("smsCodeLogin" == this.loginType) {
        for (var i=0; i<this.typeInfo.length; i++) {
          if (this.typeInfo[i].type == 'securephone') {
            this.typeInfo[i].enabled = false;
          }
          if (this.typeInfo[i].type == 'basicinfo') {
            this.typeInfo[i].enabled = true;
          }
        }
        this.mfaState = $("#fm2").find('[name="mfaState"]').val();
      }

      if ("qrCodeLogin" == this.loginType) {
        for (var i=0; i<this.typeInfo.length; i++) {
          if (this.typeInfo[i].type == 'qrcode') {
            this.typeInfo[i].enabled = false;
          }
          if (this.typeInfo[i].type == 'basicinfo') {
            this.typeInfo[i].enabled = true;
          }
        }
        this.mfaState = $("#fm3").find('[name="mfaState"]').val();
      }

   	  for (var i=0; i<this.typeInfo.length; i++) {
        if (this.typeInfo[i].enabled) {
          this.typeIndex = i;
          break;
        }
      }
    },

    // 双因子
    showGuardDialog: function showGuardDialog() {
      var self = this;
      this.clearBasicInfo();
      this.clearAppPushStatus();
      this.clearSecurePhone();
      this.clearSecureEmail();
      this.clearQrCode();
      this.clearFaceVerify();
      this.clearOtp();
      
      this.loginType = currentLoginType;
      this.typeIndex = defaultTypeIndex;
      this.guardDialogVisible = true;

      this.trustAgent = false;
      
      this.resetTypeIndex();
      
      this.changeGuard(this.typeIndex);
    },
    hideGuardDialog: function hideGuardDialog() {
      var self = this;
      this.clearBasicInfo();
      this.clearAppPushStatus();
      this.clearSecurePhone();
      this.clearSecureEmail();
      this.clearQrCode();
      this.clearFaceVerify();
      this.clearOtp();
      
      this.loginType = currentLoginType;
      this.typeIndex = defaultTypeIndex;
      this.guardDialogVisible = false;

      this.trustAgent = false;
      
      this.resetTypeIndex();
      
      $("#fm1").find('[name="mfaState"]').val('');
      $("#fm2").find('[name="mfaState"]').val('');
      $("#fm3").find('[name="mfaState"]').val('');

      $("#fm1").find('[name="trustAgent"]').val('');
      $("#fm2").find('[name="trustAgent"]').val('');
      $("#fm3").find('[name="trustAgent"]').val('');
    },
    
    submitForm: function submitForm() {
      $("#fm1").find('[name="trustAgent"]').val(this.trustAgent);
      $("#fm2").find('[name="trustAgent"]').val(this.trustAgent);
      $("#fm3").find('[name="trustAgent"]').val(this.trustAgent);
      if ("passwordLogin" == this.loginType) {
        submitFm1();
      } else if ("smsCodeLogin" == this.loginType) {
        submitFm2();
      } else if ("qrCodeLogin" == this.loginType) {
        submitFm3();
      }
    },
    
    changeGuard: function changeGuard(index) {
      var self = this;
      this.clearBasicInfo();
      this.clearAppPushStatus();
      this.clearSecurePhone();
      this.clearSecureEmail();
      this.clearQrCode();
      this.clearFaceVerify();
      this.clearOtp();

      this.typeIndex = index;
      
      this.initGuard();
    },

    initGuard: function initGuard() {
      var self = this;
      
      var type = this.typeInfo[this.typeIndex].type;
      var state = this.mfaState;
      
      var url = "\/cas\/mfa\/initByType"+"/"+type;
      url += "?state=" + state;
      $.ajax({
        type: "GET",
        url: url,
        dataType: "json",
        success: function success(r) {
          console.log(url, r);
          if (r && r.code == 0) {
            self.attestServerUrl = r.data.attestServerUrl;
            self.gid = r.data.gid;

            if (type == "basicinfo") {
              self.basicInfoLabel = r.data.basicInfoLabel;
              if (self.basicInfoLabel) {
                self.basicInfoSend();
              }
            } else 
            if (type == "apppush") {
              
            } else if (type == "securephone") {
              self.securePhone = r.data.securePhone;
            } else if (type == "secureemail") {
              self.secureEmail = r.data.secureEmail;
            } else if (type == "qrcode") {
              self.qrCode = r.data.qrCode;
              self.qrCodeInit();
            } else if (type == "faceverify") {
              self.faceVerifyInit();
            } else if (type == "otp") {
              self.otpSecret = r.data.otpSecret;
              if (self.otpSecret) {
                self.otpSend();
              }
            }
          } else if (r && r.code == 1) {
            // state error
            self.hideGuardDialog();
          } else {
            self.attestServerUrl = null;
            self.gid = null;

            self.securePhone = null;
            self.secureEmail = null;
            
            self.qrCode = null;
            
            self.otpSecret = null;
            
            self.basicInfoLabel = null;
          }
        },
        error: function error(err) {
          self.attestServerUrl = null;
          self.gid = null;

          self.securePhone = null;
          self.secureEmail = null;
          
          self.qrCode = null;
          
          self.otpSecret = null;
          
          self.basicInfoLabel = null;
        }
      });
    },

    basicInfoSend: function basicInfoSend() {
      var self = this;
      
      var url = self.attestServerUrl + '/api/guard/basicinfo/send';
      var postdata = { "gid": self.gid };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);
        },
        error: function error(err) {
          console.log(err);

          self.basicInfoValidShowAlert = true;
          self.basicInfoValidAlertMessage = "发送失败";
        }
      });
    },
    basicInfoValid: function basicInfoValid() {
      var self = this;
      
      var url = self.attestServerUrl + '/api/guard/basicinfo/valid';
      var postdata = { "gid": self.gid, "basicInfoName": self.basicInfoName, "basicInfoIdentityNo": self.basicInfoIdentityNo };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);
          
          if (r && r.code == 0) {
            var status = r.data.status;
            
            if (status == 2) {
              // self.clearBasicInfo();

              window.setTimeout(function () {
                self.submitForm();
              }, 500);
            } else {
              self.basicInfoValidShowAlert = true;
              self.basicInfoValidAlertMessage = "验证失败";
            }
          }

        },
        error: function error(err) {
          console.log(err);
        }
      });
    },

    clearBasicInfo: function clearBasicInfo() {
      var self = this;
      
      self.basicInfoName = '';
      self.basicInfoIdentityNo = '';
      self.basicInfoValidShowAlert = false;
      self.basicInfoValidAlertMessage = "";
    },

    appPushSend: function appPushSend() {
      var self = this;

      function appPushSendCountDown() {
        self.appPushSendSeconds --;
        
        self.appPushSendDisabled = true;
        self.appPushSendText = "点击发送验证请求" + "("+self.appPushSendSeconds+")";
        
        self.appPushSendTimeout = window.setTimeout(appPushSendCountDown, 1000);
        
        if (self.appPushSendSeconds <= 0) {
          window.clearTimeout(self.appPushSendTimeout);
          
          self.appPushSendDisabled = false;
          self.appPushSendText = "点击发送验证请求";
          self.appPushSendSeconds = 30;
        }
      }

      self.appPushSendDisabled = true;

      var url = self.attestServerUrl + '/api/guard/apppush/send';
      var postdata = { "gid": self.gid };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          self.appPushSendDisabled = false;

          if (r && r.code == 0 && r.data.callbackCode) {
            self.appPushStatusShowAlert = false;
            self.appPushStatusAlertMessage = "";

            self.appPushCallbackCode = r.data.callbackCode;

            self.startAppPushStatus();
            
            appPushSendCountDown();
          } else {
            
            self.startAppPushStatus();
          }
        },
        error: function error(err) {
          console.log(err);

          self.appPushSendDisabled = false;
        }
      });
    },
    startAppPushStatus: function startAppPushStatus() {
      var self = this;

      window.clearTimeout(self.appPushStatusTimeout); // 定时
      
      /*
       * status 
       * 0 init 新建、初始化, 
       * 1 sent 已发送、已扫码等, 
       * 2 valid 验证通过, 
       * 3 fail 验证失败, 
       * 5 cancel 取消, 
       * 9 expired 已过期、不存在
       */
      function appPushStatus() {
        var url = self.attestServerUrl + '/api/guard/apppush/status';
        var postdata = { "gid": self.gid };
        
        $.ajax({
          type: "POST",
          url: url,
          contentType: 'application/json; charset=UTF-8',
          data: JSON.stringify(postdata),
          dataType: "json",
          timeout: 1000,
          success: function success(r) {
            // console.log(url, r);
            if (r && r.code == 0) {
              var status = r.data.status;
              
              if (status == 0) {
                
                self.appPushStatusShowAlert = false;
                self.appPushStatusAlertMessage = "";
              } else if (status == 1) {
                
                self.appPushStatusShowAlert = true;
                self.appPushStatusAlertMessage = "等待确认";
              } else if (status == 2) {
                
                self.appPushStatusShowAlert = true;
                self.appPushStatusAlertMessage = "已确认";

                window.clearTimeout(self.appPushStatusTimeout);
                window.setTimeout(function () {
                  self.submitForm();
                }, 500);
              } else if (status == 3) {
                
                self.appPushStatusShowAlert = true;
                self.appPushStatusAlertMessage = "确认失败";
                
                window.clearTimeout(self.appPushStatusTimeout);
              } else if (status == 5) {
                
                self.appPushStatusShowAlert = true;
                self.appPushStatusAlertMessage = "已取消";
                
                window.clearTimeout(self.appPushStatusTimeout);
              } else if (status == 9) {
                
                self.appPushStatusShowAlert = true;
                self.appPushStatusAlertMessage = "已失效，请重新发送";
                
                self.appPushCallbackCode = null;
                
                window.clearTimeout(self.appPushStatusTimeout);
                
                window.setTimeout(function () {
                  self.initGuard();
                }, 500);
                
              }
              
            } else {
              window.clearTimeout(self.appPushStatusTimeout);
            }
          },
          error: function error(err) {
            console.log(err);
            window.clearTimeout(self.appPushStatusTimeout);
          }
        });
        
        self.appPushStatusTimeout = window.setTimeout(appPushStatus, 2000);
      }
      
      self.appPushStatusTimeout = window.setTimeout(appPushStatus, 100);
    },
    
    clearAppPushStatus: function clearAppPushStatus() {
      var self = this;

      window.clearTimeout(self.appPushSendTimeout);
      
      self.appPushSendDisabled = false;
      self.appPushSendText = "点击发送验证请求";
      self.appPushSendSeconds = 30;

      window.clearTimeout(self.appPushStatusTimeout);
      self.appPushStatusShowAlert = false;
      self.appPushStatusAlertMessage = "";
      
      self.appPushCallbackCode = null;
    },
    

    otpSend: function otpSend() {
      var self = this;
      
      var url = self.attestServerUrl + '/api/guard/otp/send';
      var postdata = { "gid": self.gid };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          /* if (r && r.code == 0) {
            self.otpValidShowAlert = true;
            self.otpValidAlertMessage = "已发送";
          } else if (r && r.code != 0 && r.data.result == 'expired') {
            self.otpValidShowAlert = true;
            self.otpValidAlertMessage = "发送失败，已过期，请重新获取验证码";
            
            window.setTimeout(function () {
              self.initGuard();
            }, 500);
          } else {
            self.otpValidShowAlert = true;
            self.otpValidAlertMessage = "发送失败";
          } */
        },
        error: function error(err) {
          console.log(err);

          self.otpValidShowAlert = true;
          self.otpValidAlertMessage = "发送失败";
        }
      });
    },
    otpValid: function otpValid() {
      var self = this;
      
      var url = self.attestServerUrl + '/api/guard/otp/valid';
      var postdata = { "gid": self.gid, "code": self.otpCode };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);
          
          if (r && r.code == 0) {
            var status = r.data.status;
            
            if (status == 2) {
              // self.clearOtp();

              window.setTimeout(function () {
                self.submitForm();
              }, 500);
            } else {
              self.otpValidShowAlert = true;
              self.otpValidAlertMessage = "验证失败";
            }
          }

        },
        error: function error(err) {
          console.log(err);
        }
      });
    },

    clearOtp: function clearOtp() {
      var self = this;
      
      self.otpSendDisabled = false;
      self.otpSendText = "获取验证码";
      self.otpSendSeconds = 60;

      self.otpCode = '';
      self.otpValidShowAlert = false;
      self.otpValidAlertMessage = "";
    },

    
    securePhoneSend: function securePhoneSend() {
      var self = this;
      
      function securePhoneSendCountDown() {
        self.securePhoneSendSeconds --;
        
        self.securePhoneSendDisabled = true;
        self.securePhoneSendText = "获取验证码" + "("+self.securePhoneSendSeconds+")";
        
        self.securePhoneSendTimeout = window.setTimeout(securePhoneSendCountDown, 1000);
        
        if (self.securePhoneSendSeconds <= 0) {
          window.clearTimeout(self.securePhoneSendTimeout);
          
          self.securePhoneSendDisabled = false;
          self.securePhoneSendText = "获取验证码";
          self.securePhoneSendSeconds = 60;
        }
      }

      self.securePhoneSendDisabled = true;

      var url = self.attestServerUrl + '/api/guard/securephone/send';
      var postdata = { "gid": self.gid };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          self.securePhoneSendDisabled = false;

          if (r && r.code == 0) {
            self.securePhoneValidShowAlert = true;
            self.securePhoneValidAlertMessage = "已发送";
            
            securePhoneSendCountDown();
          } else if (r && r.code != 0 && r.data.result == 'expired') {
            self.securePhoneValidShowAlert = true;
            self.securePhoneValidAlertMessage = "发送失败，已过期，请重新获取验证码";
            
            window.setTimeout(function () {
              self.initGuard();
            }, 500);
          } else {
            self.securePhoneValidShowAlert = true;
            self.securePhoneValidAlertMessage = "发送失败";
          }
        },
        error: function error(err) {
          console.log(err);

          self.securePhoneSendDisabled = false;

          self.securePhoneValidShowAlert = true;
          self.securePhoneValidAlertMessage = "发送失败";
        }
      });
    },
    securePhoneValid: function securePhoneValid() {
      var self = this;
      
      var url = self.attestServerUrl + '/api/guard/securephone/valid';
      var postdata = { "gid": self.gid, "code": self.securePhoneCode };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);
          
          if (r && r.code == 0) {
            var status = r.data.status;
            
            if (status == 2) {
              // self.clearSecurePhone();

              window.setTimeout(function () {
                self.submitForm();
              }, 500);
            } else {
              self.securePhoneValidShowAlert = true;
              self.securePhoneValidAlertMessage = "验证失败";
            }
          }

        },
        error: function error(err) {
          console.log(err);
        }
      });
    },

    clearSecurePhone: function clearSecurePhone() {
      var self = this;
      
      window.clearTimeout(self.securePhoneSendTimeout);
      
      self.securePhoneSendDisabled = false;
      self.securePhoneSendText = "获取验证码";
      self.securePhoneSendSeconds = 60;

      self.securePhoneCode = '';
      self.securePhoneValidShowAlert = false;
      self.securePhoneValidAlertMessage = "";
    },


    secureEmailSend: function secureEmailSend() {
      var self = this;
      
      function secureEmailSendCountDown() {
        self.secureEmailSendSeconds --;
        
        self.secureEmailSendDisabled = true;
        self.secureEmailSendText = "获取验证码" + "("+self.secureEmailSendSeconds+")";
        
        self.secureEmailSendTimeout = window.setTimeout(secureEmailSendCountDown, 1000);
        
        if (self.secureEmailSendSeconds <= 0) {
          window.clearTimeout(self.secureEmailSendTimeout);
          
          self.secureEmailSendDisabled = false;
          self.secureEmailSendText = "获取验证码";
          self.secureEmailSendSeconds = 60;
        }
      }
      
      self.secureEmailSendDisabled = true;

      var url = self.attestServerUrl + '/api/guard/secureemail/send';
      var postdata = { "gid": self.gid };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          self.secureEmailSendDisabled = false;

          if (r && r.code == 0) {
            self.secureEmailValidShowAlert = true;
            self.secureEmailValidAlertMessage = "已发送";
            
            secureEmailSendCountDown();
          } else if (r && r.code != 0 && r.data.result == 'expired') {
            self.securePhoneValidShowAlert = true;
            self.securePhoneValidAlertMessage = "发送失败，已过期，请重新获取验证码";
            
            window.setTimeout(function () {
              self.initGuard();
            }, 500);
          } else {
            self.secureEmailValidShowAlert = true;
            self.secureEmailValidAlertMessage = "发送失败";
          }
        },
        error: function error(err) {
          console.log(err);

          self.secureEmailSendDisabled = false;
          
          self.secureEmailValidShowAlert = true;
          self.secureEmailValidAlertMessage = "发送失败";
        }
      });
    },
    secureEmailValid: function secureEmailValid() {
      var self = this;
      
      var url = self.attestServerUrl + '/api/guard/secureemail/valid';
      var postdata = { "gid": self.gid, "code": self.secureEmailCode };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          if (r && r.code == 0) {
            var status = r.data.status;
            
            if (status == 2) {
              // self.clearSecureEmail();

              window.setTimeout(function () {
                self.submitForm();
              }, 500);
            } else {
              self.secureEmailValidShowAlert = true;
              self.secureEmailValidAlertMessage = "验证失败";
            }
          }
        },
        error: function error(err) {
          console.log(err);
        }
      });
    },

    clearSecureEmail: function clearSecureEmail() {
      var self = this;

      window.clearTimeout(self.secureEmailSendTimeout);
      
      self.secureEmailSendDisabled = false;
      self.secureEmailSendText = "获取验证码";
      self.secureEmailSendSeconds = 60;

      self.secureEmailCode = '';
      self.secureEmailValidShowAlert = false;
      self.secureEmailValidAlertMessage = "";
    },
    

    qrCodeInit: function qrCodeInit() {
      var self = this;
      
      if (self.qrCode == null || self.qrCode.scanTypes == null || self.qrCode.scanTypes.length == 0) {
        return;
      }
      
      var scanTypeNames = "";
      for (var i=0; i<self.qrCode.scanTypes.length; i++) {
        var scanType = self.qrCode.scanTypes[i];
        if (scanType == "superapp") {
          scanTypeNames += "、"+superappName;
        } else if (scanType == "qq") {
          scanTypeNames += "、QQ";
        } else if (scanType == "weixinmp") {
          scanTypeNames += "、微信";
        } else if (scanType == "workweixinh5") {
          scanTypeNames += "、企业微信";
        } else if (scanType == "dingtalkh5") {
          scanTypeNames += "、钉钉";
        }
      }
      if (scanTypeNames!="") {
        scanTypeNames = scanTypeNames.substring(1);
      }
      
      self.qrCodeScanTypeNames = scanTypeNames;
      
      self.qrCodeSend();
    },
    
    qrCodeSend: function qrCodeSend() {
      var self = this;

      var url = self.attestServerUrl + '/api/guard/qrcode/send';
      var postdata = { "gid": self.gid };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          if (r && r.code == 0 && r.data.scanQrcode) {
            self.qrCodeStatusShowAlert = false;
            self.qrCodeStatusAlertMessage = "";

            self.qrCodeScanQrcode = r.data.scanQrcode;
            self.qrCodeCallbackCode = r.data.callbackCode;

            self.startQrCodeStatus();
          } else {
            
            self.startQrCodeStatus();
          }
        },
        error: function error(err) {
          console.log(err);
        }
      });
    },
    
    qrCodeRefresh: function qrCodeRefresh() {
      var self = this;
      
      self.clearQrCode();
      self.initGuard();
    },

    startQrCodeStatus: function startQrCodeStatus() {
      var self = this;

      window.clearTimeout(self.appPushStatusTimeout); // 定时
      
      /*
       * status 
       * 0 init 新建、初始化, 
       * 1 sent 已发送、已扫码等, 
       * 2 valid 验证通过, 
       * 3 fail 验证失败, 
       * 5 cancel 取消, 
       * 8 scaned 已扫码
       * 9 expired 已过期、不存在
       */
      function qrCodeStatus() {
        var url = self.attestServerUrl + '/api/guard/qrcode/status';
        var postdata = { "gid": self.gid };
        
        $.ajax({
          type: "POST",
          url: url,
          contentType: 'application/json; charset=UTF-8',
          data: JSON.stringify(postdata),
          dataType: "json",
          timeout: 1000,
          success: function success(r) {
            // console.log(url, r);
            if (r && r.code == 0) {
              var status = r.data.status;
              
              if (status == 0) {
                
                self.qrCodeScanSuccess = false;
                self.qrCodeStatusShowAlert = false;
                self.qrCodeStatusAlertMessage = "";
              } else if (status == 1) {
                
                self.qrCodeScanSuccess = false;
                self.qrCodeStatusShowAlert = false;
                self.qrCodeStatusAlertMessage = "";
              } else if (status == 2) {
                
                self.qrCodeScanSuccess = true;
                self.qrCodeStatusShowAlert = true;
                self.qrCodeStatusAlertMessage = "已确认";

                window.clearTimeout(self.qrCodeStatusTimeout);
                window.setTimeout(function () {
                  self.submitForm();
                }, 500);
              } else if (status == 3) {
                
                self.qrCodeScanSuccess = false;
                self.qrCodeStatusShowAlert = true;
                self.qrCodeStatusAlertMessage = "确认失败";
                
                window.clearTimeout(self.qrCodeStatusTimeout);
              } else if (status == 5) {
                
                self.qrCodeScanSuccess = false;
                self.qrCodeStatusShowAlert = true;
                self.qrCodeStatusAlertMessage = "已拒绝";
                
                window.clearTimeout(self.qrCodeStatusTimeout);
              } else if (status == 8) {
                
                self.qrCodeScanSuccess = true;
                self.qrCodeStatusShowAlert = true;
                self.qrCodeStatusAlertMessage = "已扫码，等待确认";
              } else if (status == 9) {
                
                self.qrCodeScanSuccess = false;
                self.qrCodeStatusShowAlert = true;
                self.qrCodeStatusAlertMessage = "已失效，请重新发送";
                
                self.qrCodeCallbackCode = null;
                
                window.clearTimeout(self.qrCodeStatusTimeout);
                
                /* window.setTimeout(function () {
                  self.initGuard();
                }, 500); */
                
              }
              
            } else {
              window.clearTimeout(self.qrCodeStatusTimeout);
            }
          },
          error: function error(err) {
            console.log(err);
            window.clearTimeout(self.qrCodeStatusTimeout);
          }
        });
        
        self.qrCodeStatusTimeout = window.setTimeout(qrCodeStatus, 2000);
      }
      
      self.qrCodeStatusTimeout = window.setTimeout(qrCodeStatus, 100);
    },
    
    clearQrCode: function clearQrCode() {
      var self = this;
      
      window.clearTimeout(self.qrCodeStatusTimeout);
      
      self.qrCodeScanQrcode = null;
      self.qrCodeScanSuccess = false;
      self.qrCodeStatusShowAlert = false;
      self.qrCodeStatusAlertMessage = "";

      self.qrCodeCallbackCode = null;
    },
    

    faceVerifyInit: function faceVerifyInit() {
      var self = this;
      
      self.faceVerifySend();
    },
    
    faceVerifySend: function faceVerifySend() {
      var self = this;

      var url = self.attestServerUrl + '/api/guard/faceverify/send';
      var postdata = { "gid": self.gid };
      
      $.ajax({
        type: "POST",
        url: url,
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify(postdata),
        dataType: "json",
        success: function success(r) {
          console.log(url, r);

          if (r && r.code == 0 && r.data.scanFaceverify) {
            self.faceVerifyStatusShowAlert = false;
            self.faceVerifyStatusAlertMessage = "";

            self.faceVerifyScanFaceverify = r.data.scanFaceverify;
            self.faceVerifyCallbackCode = r.data.callbackCode;

            self.startFaceVerifyStatus();
          } else {
            
            self.startFaceVerifyStatus();
          }
        },
        error: function error(err) {
          console.log(err);
        }
      });
    },
    
    faceVerifyRefresh: function faceVerifyRefresh() {
      var self = this;
      
      self.clearFaceVerify();
      self.initGuard();
    },

    startFaceVerifyStatus: function startFaceVerifyStatus() {
      var self = this;

      window.clearTimeout(self.appPushStatusTimeout); // 定时
      
      /*
       * status 
       * 0 init 新建、初始化, 
       * 1 sent 已发送、已扫码等, 
       * 2 valid 验证通过, 
       * 3 fail 验证失败, 
       * 5 cancel 取消, 
       * 8 scaned 已扫码
       * 9 expired 已过期、不存在
       */
      function faceVerifyStatus() {
        var url = self.attestServerUrl + '/api/guard/faceverify/status';
        var postdata = { "gid": self.gid };
        
        $.ajax({
          type: "POST",
          url: url,
          contentType: 'application/json; charset=UTF-8',
          data: JSON.stringify(postdata),
          dataType: "json",
          timeout: 1000,
          success: function success(r) {
            // console.log(url, r);
            if (r && r.code == 0) {
              var status = r.data.status;
              
              if (status == 0) {
                
                self.faceVerifyScanSuccess = false;
                self.faceVerifyStatusShowAlert = false;
                self.faceVerifyStatusAlertMessage = "";
              } else if (status == 1) {
                
                self.faceVerifyScanSuccess = false;
                self.faceVerifyStatusShowAlert = false;
                self.faceVerifyStatusAlertMessage = "";
              } else if (status == 2) {
                
                self.faceVerifyScanSuccess = true;
                self.faceVerifyStatusShowAlert = true;
                self.faceVerifyStatusAlertMessage = "人脸识别成功";

                window.clearTimeout(self.faceVerifyStatusTimeout);
                window.setTimeout(function () {
                  self.submitForm();
                }, 500);
              } else if (status == 3) {
                
                self.faceVerifyScanSuccess = false;
                self.faceVerifyStatusShowAlert = true;
                self.faceVerifyStatusAlertMessage = "人脸识别失败";
                
                window.clearTimeout(self.faceVerifyStatusTimeout);
              
              } else if (status == 11) {
                
                self.faceVerifyScanSuccess = true;
                self.faceVerifyStatusShowAlert = true;
                self.faceVerifyStatusAlertMessage = "人脸识别中…";
              } else if (status == 9) {
                
                self.faceVerifyScanSuccess = false;
                self.faceVerifyStatusShowAlert = true;
                self.faceVerifyStatusAlertMessage = "已失效，请刷新二维码";
                
                self.faceVerifyCallbackCode = null;
                
                window.clearTimeout(self.faceVerifyStatusTimeout);
                
                /* window.setTimeout(function () {
                  self.initGuard();
                }, 500); */
                
              }
              
            } else {
              window.clearTimeout(self.faceVerifyStatusTimeout);
            }
          },
          error: function error(err) {
            console.log(err);
            window.clearTimeout(self.faceVerifyStatusTimeout);
          }
        });
        
        self.faceVerifyStatusTimeout = window.setTimeout(faceVerifyStatus, 2000);
      }
      
      self.faceVerifyStatusTimeout = window.setTimeout(faceVerifyStatus, 100);
    },
    
    clearFaceVerify: function clearFaceVerify() {
      var self = this;
      
      window.clearTimeout(self.faceVerifyStatusTimeout);
      
      self.faceVerifyScanQrcode = null;
      self.faceVerifyScanSuccess = false;
      self.faceVerifyStatusShowAlert = false;
      self.faceVerifyStatusAlertMessage = "";

      self.faceVerifyCallbackCode = null;
    },
    
    
  }
});
</script>


<script type="text/javascript">

                        var i_login = "One moment please...";
                        $( document ).ready(function() {
                          
                            $("#fm1").submit(function () {
                              var username = $("#fm1").find("#username").val();
                              var password = $("#fm1").find("#password").val();
                              if (username == null || username == '') {
                                $("#showErrorMessageUsername").click();
                                return false;
                              }

                              if (password == null || password == '') {
                                $("#showErrorMessagePassword").click();
                                return false;
                              }

                              if (mfaEnabled) {
                                var mfaState = $("#fm1").find('[name="mfaState"]').val();
                                if (mfaState == null || mfaState == '') {
                                  mfaDetect("passwordLogin");
                                  return false;
                                }
                              }
                              
                              // 前端密码加密
                              if (encryptEnabled && password.indexOf('__RSA__') < 0) {
                                var encodedPassword = "__RSA__"+encrypt.encrypt(password);
                                $("#fm1").find("#password").val(encodedPassword);
                              }
                              
                                //$("#fm1").find(":submit").attr("disabled", true);
                                //$("#fm1").find(":submit").attr("value", i_login);
                                //console.log(i_login);
                                
                                // 处理记住密码
                                doRememberPassword(username, password);
                                
                                doLogin();
                                return true;
                            });

                            $("#fm2").submit(function () {
                              var mobile = $("#fm2").find("#username").val();
                              var dynamiccode = $("#fm2").find("#password").val();
                              if (mobile == null || mobile == '') {
                                $("#showErrorMessageMobile").click();
                                return false;
                              }
                              if (!mobilePattern.test(mobile)) {
                                $("#showErrorMessageMobile").click();
                                return false;
                              }

                              if (dynamiccode == null || dynamiccode == '') {
                                $("#showErrorMessageDynamicCode").click();
                                return false;
                              }
                              
                              if (mfaEnabled && mfaSmsCodeLoginEnabled) {
                                var mfaState = $("#fm2").find('[name="mfaState"]').val();
                                if (mfaState == null || mfaState == '') {
                                  mfaDetect("smsCodeLogin");
                                  return false;
                                }
                              }

                                //$("#fm2").find(":submit").attr("disabled", true);
                                //$("#fm2").find(":submit").attr("value", i_login);
                                //console.log(i_login);
                                
                                doLogin();
                                return true;
                            });

                            $("#fm3").submit(function () {
                              var userId = $("#fm3").find("#username").val();
                              var qrCodeKey = $("#fm3").find("#password").val();
                              if (userId == null || userId == '') {
                                $("#showErrorMessageQrCode").click();
                                return false;
                              }

                              if (qrCodeKey == null || qrCodeKey == '') {
                                $("#showErrorMessageQrCode").click();
                                return false;
                              }
                              
                              if (mfaEnabled && mfaQrCodeLoginEnabled) {
                                var mfaState = $("#fm3").find('[name="mfaState"]').val();
                                if (mfaState == null || mfaState == '') {
                                  mfaDetect("qrCodeLogin");
                                  return false;
                                }
                              }

                                return true;
                            });
                        });
                    </script>

                    <script type="text/javascript">
                        function refreshCaptchaInMenu(currentMenu) {
                          refreshCaptcha($("#fm"+currentMenu+"Input").find("#captcha_img"));
                        }
                        function refreshCaptcha(obj) { // console.log(obj);
                          var captcha_img = $(obj);
                          var captcha_input = captcha_img.parents("div.captcha-input");
                          captcha_input.find("#captcha_img").attr("src", "\/cas\/captcha.jpg"+"?r=" + (new Date()).getTime() + Math.floor(Math.random()*24));
                          captcha_input.find("#captcha").val("");
                          captcha_input.find("#captcha").focus();
                        }
                        function togglePassword(obj) {
                          var $obj = $(obj);
                          
                          var $password = $(obj).parents('.sw-input').find("#password");
                          
                          if ($password.attr('type') == 'password') {
                            $password.attr('type', 'text');
                            $obj.removeClass('su-icon-hide').addClass('su-icon-display');
                          } else {
                            $password.attr('type', 'password');
                            $obj.removeClass('su-icon-display').addClass('su-icon-hide');
                          }
                        }
                    </script>


  
  <script type="text/javascript">
  $( document ).ready(function() {
    var location = self.document.location;
    var hash = decodeURIComponent(location.hash);
    
    if (hash != undefined && hash != '' && hash.indexOf('#') === -1) {
        hash = '#' + hash;
    }
    
    var action = location.href;
  
    /* var action = $('#fm1').attr('action');
    if (action == undefined) {
        action = location.href;
    } else {
        var qidx = location.href.indexOf('?');
        if (qidx != -1) {
            var queryParams = location.href.substring(qidx);
            action += queryParams;
        }
    } */
    action += hash;
    
    $('#fm1').attr('action', action);
    $('#fm2').attr('action', action);
    $('#fm3').attr('action', action);

    $('#fm9').attr('action', action);

    initRememberPassword();
  });
  </script>

  <script type="text/javascript">
  function submitByEnter(event, fmId) {
    if(event.which === 13 || event.keyCode === 13) {
      $(fmId).find('[name="button"]').click();
    }
  }
  $( document ).ready(function() {
    $("#fm1Input").find("#username").keyup(function(event){
      submitByEnter(event, "#fm1Input");
    });
    $("#fm1Input").find("#password").keyup(function(event){
      submitByEnter(event, "#fm1Input");
    });
    $("#fm1Input").find("#captcha").keyup(function(event){
      submitByEnter(event, "#fm1Input");
    });
    $("#fm2Input").find("#mobile").keyup(function(event){
      submitByEnter(event, "#fm2Input");
    });
    $("#fm2Input").find("#dynamiccode").keyup(function(event){
      submitByEnter(event, "#fm2Input");
    });
  });
  </script>

  <script type="text/javascript">
  /* $( document ).ready(function() {
    $(".el-carousel__container").css({"max-height":"1080px", "min-height":"660px"});
  }); */
  </script>

    </div>
</main>





<script type="text/javascript">
function back() {
  window.location.href = "\/cas\/login?service=https:\/\/cas.xjtu.edu.cn\/loginsw?TARGET%3Dhttps:\/\/m.dentalbeanchina.com/bb\/webapps\/bb-SSOIntegrationDemo-BBLEARN\/index.jsp"; 
}
</script>

<script src="/cas/deps/js/fingerprintjs/v3/iife.min.js"></script>
<script>
$( document ).ready(function() {
  var fpVisitorId = (localStorage.fpVisitorId || "");
  if (fpVisitorId == "") {
    var fpPromise = FingerprintJS.load();
    fpPromise
      .then(function (fp) { return fp.get() })
      .then(function (result) {
        // Handle the result
        //console.log(result)
        localStorage.fpVisitorId = result.visitorId;
        $('[name="fpVisitorId"]').val(result.visitorId);
      });
  } else {
    $('[name="fpVisitorId"]').val(fpVisitorId);
  }
});
</script>

</body>
</html>
