Annonce

Réduire
Aucune annonce.

YPUX S'authentifier avec un pattern

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • YPUX S'authentifier avec un pattern

    Bonjour à tous !
    Mon projet WEB va réjouir un grand nombre d'internautes.
    L'idée d'YPUX est d'offrir une plateforme d'authentification comparable à Android (simple) et portable sur n'importe quel site internet.

    Description

    Au lieu de retenir un mot de passe. On retient une forme géométrique. En posant le curseur sur les jetons de couleurs, il génère un mot de passe de 8 caractères. Si on pose de nouveau le curseur sur un jeton bleue, le mot de passe mute - le jeton devient vert et une ligne relie les deux points. Le jeton rouge indique seulement la sélection en cours (configuré à 150 millisecondes). Pour afficher le panneau YPUX, il suffit de cliquer dans une zone de saisie (type 'password'). Pour fermer le panneau, cliquez dessus.

    Ypux.png



    BUGS

    Actuellement je rencontre des conflits avec des sites internet. Comme hackademics. Si des gens pouvaient m'aider à debugger, ce serait très sympas.

    Il faudrait m'indiquer les sites testés et éventuellement me donner des pistes pour résoudre le problème. Pour le moment, sur le site du zéro l'authentification fonctionne mais le slide de la page d'accueil plante au chargement. Sur Gmail, ça fonctionne nickel. Sur Mega, la zone est sécurisé. Et sur hackademics, une erreur survient au chargement.

    TÉLÉCHARGEMENT

    COMPATIBLE AVEC HTML5

    Pack à télécharger sur Mega

    UTILISER AVEC GREASE MONKEY
    Code:
    // ==UserScript==
    // @name        YPUX v1.0
    // @namespace   YPUX auth
    // @include     *
    // @version     1
    // ==/UserScript==
    var ypuxjs=document.createElement('script');
    ypuxjs.type='text/javascript';
    ypuxjs.src='data:text/javascript;base64,eXB1eCA9IG5ldyBmdW5jdGlvbiAoKSB7DQogIC8qIFlQVVggdjEuMCBieSBZYXJmbGFtICovDQogIC8qKi  ogQ09NUE9ORU5UUyAqKiovDQogIHRoaXMuc3ByaXRlPW5ldyBBcnJheSgpOw0KICB0aGlzLndvb21zPW5ldyBBcnJheSgpOw0KIC  B0aGlzLnBvb2s9bmV3IEFycmF5KCk7DQogIHRoaXMuY2ZnID0gew0KICAgICdwdCc6MywNCiAgICAnc3Bfc2l6ZSc6NjQsDQogIC  AgJ3NwX21hcmdpbic6MjAsDQogICAgJ2xvYyc6MTEsDQogICAgJ3RpbWVyJzoxNTAsDQogICAgJ2pvaW5fc2l6ZSc6MiwNCiAgIC  Anc2VlZCc6MzcsDQogICAgJ2RlZmF1bHRfcGFzc3dkJzonNkRmbVE3ZGsnLA0KICAgICdhc2NpaSc6J2FiY2RlZmdoaWprbG1ub3  BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5Jw0KICB9Ow0KICB0aGlzLmNmZ1snc3F1YXJlJ1  09dGhpcy5jZmdbJ3B0J10qdGhpcy5jZmdbJ3NwX3NpemUnXSsodGhpcy5jZmdbJ3B0J10tMSkqdGhpcy5jZmdbJ3NwX21hcmdpbi  ddOw0KICB0aGlzLm1vdGlvbiA9IHsgJ2ZvY3VYJzowLCdmb2N1WSc6MCwnYWN0aWYnOjAsJ2ZvY3VzJzowLCdjaGVjayc6WzAsLT  FdLCdvbGQnOlswLDBdIH0NCg0KICAvKioqIExJQlJBUlkgKioqLw0KICB0aGlzLnRvY2hhaW4gPSBmdW5jdGlvbiAoZSkgeyB2YX  Igcj0nJztmb3IodmFyIGk9MDsgaSA8IGUubGVuZ3RoOyBpKyspIHsgcis9ZVtpXTsgfSByZXR1cm4gcjsgfQ0KICB0aGlzLmFkZH  Nwcml0ZSA9IGZ1bmN0aW9uIChlKSB7IGVbJ3NlbGYnXT1uZXcgSW1hZ2UoKTtlWydzZWxmJ10uc3JjPWVbJ3NyYyddOyB9DQogIH  RoaXMuYWRkY3NzID0gZnVuY3Rpb24gKGUpIHsNCiAgICB2YXIgbmNzcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7DQ  ogICAgbmNzcy50eXBlPSd0ZXh0L2Nzcyc7bmNzcy5yZWw9J3N0eWxlc2hlZXQnO25jc3MuaHJlZj0iZGF0YTp0ZXh0L2NzcztVVE  YtOCwiK2UucmVwbGFjZSgvIy9nLCclMjMnKTsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLm  FwcGVuZENoaWxkKG5jc3MpOw0KICB9DQoNCiAgLyoqKiBGVU5DVElPTiAqKiovDQogIHRoaXMuaW5pdCA9IGZ1bmN0aW9uICgpIH  sNCiAgIC8vIEZSQU1FDQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXS5pbm5lckhUTUwgKz0gIj  xkaXYgaWQ9J3lwdXhsb2dpbicgT25DbGljaz0neXB1eC5zaG93KCk7Jz48L2Rpdj4iOw0KICAgIHRoaXMuY2FudmFzPWRvY3VtZW  50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOw0KICAgIHRoaXMuY3R4PXRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJyk7DQogIC  AgdGhpcy5jYW52YXMuaWQ9J3lwdXhib3gnO3RoaXMuY2FudmFzLndpZHRoPXRoaXMuY2ZnWydzcXVhcmUnXTt0aGlzLmNhbnZhcy  5oZWlnaHQ9dGhpcy5jZmdbJ3NxdWFyZSddOw0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd5cHV4bG9naW4nKS5hcHBlbm  RDaGlsZCh0aGlzLmNhbnZhcyk7DQogICAvLyBMT0FESU5HIFBJQ1RVUkUNCiAgICB0aGlzLmFkZHNwcml0ZSh0aGlzLnNwcml0ZV  swXSk7DQogICAvLyBQQUQgQ1VSU09SDQogICAgZXZhbCgiZG9jdW1lbnQub25tb3VzZW1vdmUgPSBmdW5jdGlvbiAoZSkgeyB5cH  V4LmN1cnNvcihlKTsgfSIpOw0KICAgLy8gSU5QVVQNCiAgICB0aGlzLmlucHM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbW  UoJ2lucHV0Jyk7DQogICAgZm9yKHZhciBpPTA7IGkgPCB0aGlzLmlucHMubGVuZ3RoOyBpKyspIHsNCiAgICAgIGlmKHRoaXMuaW  5wc1tpXS50eXBlID09ICdwYXNzd29yZCcpIHsNCiAgICAgICAgZXZhbCgieXB1eC5pbnBzW2ldLm9uY2xpY2sgPSBmdW5jdGlvbi  AoKSB7IHlwdXguc2hvdygxLCIraSsiKTsgfSIpOyB9DQogICAgfQ0KICAgLy8gSElERQ0KICAgIHRoaXMuc2hvdygpOw0KICB9DQ  oNCiAgdGhpcy5zaG93ID0gZnVuY3Rpb24gKGUsaWQpIHsNCiAgIC8vIFNIT1cgT1IgSElERQ0KICAgIHRoaXMuV1BzZXQoKTsNCi  AgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneXB1eGxvZ2luJykuc3R5bGUuZGlzcGxheT0oZSA/ICdibG9jaycgOiAnbm9uZScpOw0KICAgIGlmKGlkKSB7DQogICAgICBpZih0aGlzLmNmZ1snaW5wdXQnXSkgew0KICAgICAgICBk  b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVt0aGlzLmNmZ1snaW5wdXQnXV0uc3R5bGUuYm9yZGVyPScnOw0K  ICAgICAgfQ0KICAgICAgdGhpcy5jZmdbJ2lucHV0J109aWQ7DQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn  aW5wdXQnKVtpZF0uc3R5bGUuYm9yZGVyPSc1cHggc29saWQgYmxhY2snOw0KICAgIH0NCiAgfQ0KDQogIHRoaXMuV1BzZXQgPSBm  dW5jdGlvbiAoKSB7DQogICAvLyBSRVNFVCBZUFVYDQogICAgdGhpcy5wb29rPW5ldyBBcnJheSgpO3RoaXMubW90aW9uWydvbGQn  XVswXT0wOw0KICAgIGZvcih2YXIgaT0wOyBpIDwgTWF0aC5wb3codGhpcy5jZmdbJ3B0J10sMik7IGkrKykgeyB0aGlzLndvb21z  W2ldPTE7IH0NCiAgICB0aGlzLnBhc3N3ZD10aGlzLmNmZ1snZGVmYXVsdF9wYXNzd2QnXTsNCiAgICB0aGlzLmRyYXcoKTsNCiAg  fQ0KDQogIHRoaXMuY2xlYXIgPSBmdW5jdGlvbiAoKSB7IHRoaXMuY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5jZmdbJ3NxdWFyZSdd  LHRoaXMuY2ZnWydzcXVhcmUnXSk7IH0NCiAgdGhpcy5kcmF3ID0gZnVuY3Rpb24gKCkgew0KICAgLy8gQ0xFQVIgQ0FOVkFTDQog  ICAgdGhpcy5jbGVhcigpOw0KICAgLy8gRFJBVyBTUFJJVEVTDQogICAgZm9yKHZhciBpPTA7IGkgPCBNYXRoLnBvdyh0aGlzLmNm  Z1sncHQnXSwyKTsgaSsrKSB7DQogICAgICB2YXIgZGltPXsneCc6KGkldGhpcy5jZmdbJ3B0J10pLCd5JzooTWF0aC5mbG9vcihp  L3RoaXMuY2ZnWydwdCddKSV0aGlzLmNmZ1sncHQnXSl9Ow0KICAgICAgdmFyIGxvY2FsPXsNCiAgICAgICAgJ3gnOmRpbVsneCdd  KnRoaXMuY2ZnWydzcF9zaXplJ10rZGltWyd4J10qdGhpcy5jZmdbJ3NwX21hcmdpbiddLA0KICAgICAgICAneSc6ZGltWyd5J10q  dGhpcy5jZmdbJ3NwX3NpemUnXStkaW1bJ3knXSp0aGlzLmNmZ1snc3BfbWFyZ2luJ10sDQogICAgICAgICdzeic6dGhpcy5jZmdb  J3NwX3NpemUnXQ0KICAgICAgfTsNCiAgICAgIHRoaXMuY3R4LmRyYXdJbWFnZSh0aGlzLnNwcml0ZVswXVsnc2VsZiddLChsb2Nh  bFsnc3onXSp0aGlzLndvb21zW2ldKSwwLGxvY2FsWydzeiddLGxvY2FsWydzeiddLA0KICAgICAgICAgICAgICAgICAgICAgICAg  IGxvY2FsWyd4J10sbG9jYWxbJ3knXSxsb2NhbFsnc3onXSxsb2NhbFsnc3onXSk7DQogICAgfQ0KICAgLy8gRFJBVyBKT0lODQog  ICAgZm9yKHZhciBpPTA7IGkgPCB0aGlzLnBvb2subGVuZ3RoOyBpKyspIHsNCiAgICAgIHZhciBkaW09ew0KICAgICAgICAnQXgn  Oih0aGlzLnBvb2tbaV1bMF0ldGhpcy5jZmdbJ3B0J10pLA0KICAgICAgICAnQXknOihNYXRoLmZsb29yKHRoaXMucG9va1tpXVsw  XS90aGlzLmNmZ1sncHQnXSkldGhpcy5jZmdbJ3B0J10pLA0KICAgICAgICAnQngnOih0aGlzLnBvb2tbaV1bMV0ldGhpcy5jZmdb  J3B0J10pLA0KICAgICAgICAnQnknOihNYXRoLmZsb29yKHRoaXMucG9va1tpXVsxXS90aGlzLmNmZ1sncHQnXSkldGhpcy5jZmdb  J3B0J10pDQogICAgICB9DQogICAgICB2YXIgbG9jYWw9ew0KICAgICAgICAnQXgnOmRpbVsnQXgnXSp0aGlzLmNmZ1snc3Bfc2l6  ZSddK2RpbVsnQXgnXSp0aGlzLmNmZ1snc3BfbWFyZ2luJ10rKHRoaXMuY2ZnWydzcF9zaXplJ10vMiksDQogICAgICAgICdBeSc6  ZGltWydBeSddKnRoaXMuY2ZnWydzcF9zaXplJ10rZGltWydBeSddKnRoaXMuY2ZnWydzcF9tYXJnaW4nXSsodGhpcy5jZmdbJ3Nw  X3NpemUnXS8yKSwNCiAgICAgICAgJ0J4JzpkaW1bJ0J4J10qdGhpcy5jZmdbJ3NwX3NpemUnXStkaW1bJ0J4J10qdGhpcy5jZmdb  J3NwX21hcmdpbiddKyh0aGlzLmNmZ1snc3Bfc2l6ZSddLzIpLA0KICAgICAgICAnQnknOmRpbVsnQnknXSp0aGlzLmNmZ1snc3Bf  c2l6ZSddK2RpbVsnQnknXSp0aGlzLmNmZ1snc3BfbWFyZ2luJ10rKHRoaXMuY2ZnWydzcF9zaXplJ10vMikNCiAgICAgIH0NCiAg  ICAgIHRoaXMuY3R4LmJlZ2luUGF0aCgpOw0KICAgICAgdGhpcy5jdHgubGluZVdpZHRoPXRoaXMuY2ZnWydqb2luX3NpemUnXTsN  CiAgICAgIHRoaXMuY3R4Lm1vdmVUbyhsb2NhbFsnQXgnXSxsb2NhbFsnQXknXSk7DQogICAgICB0aGlzLmN0eC5saW5lVG8obG9j  YWxbJ0J4J10sbG9jYWxbJ0J5J10pOw0KICAgICAgdGhpcy5jdHguc3Ryb2tlKCk7DQogICAgfQ0KICB9DQoNCiAgdGhpcy5hZGRw  b2ludCA9IGZ1bmN0aW9uICgpIHsNCiAgIC8vIFNFTEVDVCBXT09NUw0KICAgIGlmKHRoaXMubW90aW9uWydjaGVjayddWzBdID09  IDEpIHsNCiAgICAgIHRoaXMud29vbXNbdGhpcy5tb3Rpb25bJ2NoZWNrJ11bMV1dPTI7DQogICAgICB0aGlzLmVuY29kaW5nKHRo  aXMubW90aW9uWydjaGVjayddWzFdKTsNCiAgICAgIGlmKHRoaXMubW90aW9uWydvbGQnXVswXSA9PSAxKSB7DQogICAgICAgIHRo  aXMucG9va1t0aGlzLnBvb2subGVuZ3RoXT1bdGhpcy5tb3Rpb25bJ29sZCddWzFdLHRoaXMubW90aW9uWydjaGVjayddWzFdXTsg  fQ0KICAgICAgdGhpcy5tb3Rpb25bJ29sZCddPVsxLHRoaXMubW90aW9uWydjaGVjayddWzFdXTsNCiAgICB9DQogICAgdGhpcy5t  b3Rpb25bJ2NoZWNrJ109WzAsLTFdOw0KICAgIHRoaXMuZHJhdygpOw0KICB9DQoNCiAgdGhpcy5jdXJzb3IgPSBmdW5jdGlvbiAo  ZSkgew0KICAgIGlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd5cHV4bG9naW4nKS5zdHlsZS5kaXNwbGF5ICE9ICdub25lJykg  ew0KICAgICAvLyBNT1VTRSBUUkFDS0lORw0KICAgICAgdGhpcy5tb3Rpb25bJ2ZvY3VYJ109KGUucGFnZVggPyBlLnBhZ2VYIDog  ZXZlbnQueCtkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQpOw0KICAgICAgdGhpcy5tb3Rpb25bJ2ZvY3VZJ109KGUucGFnZVkgPyBl  LnBhZ2VZIDogZXZlbnQueStkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCk7DQogICAgIC8vIFRFU1QgRk9DVVMNCiAgICAgIGlmKCh0  aGlzLmZvY3VzKCkgPT0gMSkmJih0aGlzLm1vdGlvblsnYWN0aWYnXSA9PSAxKSkgew0KICAgICAgICBpZih0aGlzLndvb21zW3Ro  aXMubW90aW9uWydmb2N1cyddXSAhPSAyKSB7DQogICAgICAgICAgaWYoKHRoaXMubW90aW9uWydjaGVjayddWzBdID09IDEpJiYo  dGhpcy5tb3Rpb25bJ2NoZWNrJ11bMV0gIT0gdGhpcy5tb3Rpb25bJ2ZvY3VzJ10pKSB7DQogICAgICAgICAgICBjbGVhclRpbWVv  dXQodGhpcy50aW1lcik7dGhpcy53b29tc1t0aGlzLm1vdGlvblsnY2hlY2snXVsxXV09MTsgfQ0KICAgICAgICAgIGRvY3VtZW50  LmJvZHkuc3R5bGUuY3Vyc29yPSdwb2ludGVyJzsNCiAgICAgICAgICB0aGlzLndvb21zW3RoaXMubW90aW9uWydmb2N1cyddXT0z  Ow0KICAgICAgICAgIHRoaXMubW90aW9uWydjaGVjayddPVsxLHRoaXMubW90aW9uWydmb2N1cyddXTsNCiAgICAgICAgICB0aGlz  LnRpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KCd5cHV4LmFkZHBvaW50KCknLHRoaXMuY2ZnWyd0aW1lciddKTsNCiAgICAgICAgfQ0K  ICAgICAgfSBlbHNlIHsNCiAgICAgICAgaWYodGhpcy5tb3Rpb25bJ2NoZWNrJ11bMF0gPT0gMSkgew0KICAgICAgICAgIGNsZWFy  VGltZW91dCh0aGlzLnRpbWVyKTt0aGlzLm1vdGlvblsnY2hlY2snXVswXT0wOw0KICAgICAgICAgIHRoaXMud29vbXNbdGhpcy5t  b3Rpb25bJ2NoZWNrJ11bMV1dPTE7IH0NCiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3I9J2RlZmF1bHQnOw0KICAg  ICAgfQ0KICAgICAgdGhpcy5kcmF3KCk7DQogICAgfQ0KICB9DQoNCiAgdGhpcy5mb2N1cyA9IGZ1bmN0aW9uICgpIHsNCiAgIC8v  IFJFQ09WRVIgRk9DVVMNCiAgICBpZigodGhpcy5tb3Rpb25bJ2ZvY3VYJ10gPiAxMSkmJih0aGlzLm1vdGlvblsnZm9jdVknXSA+  IDExKSkgew0KICAgICAgaWYoKHRoaXMubW90aW9uWydmb2N1WCddIDw9ICh0aGlzLmNmZ1snc3F1YXJlJ10rdGhpcy5jZmdbJ2xv  YyddKSkmJih0aGlzLm1vdGlvblsnZm9jdVknXSA8PSAodGhpcy5jZmdbJ3NxdWFyZSddK3RoaXMuY2ZnWydsb2MnXSkpKSB7DQog  ICAgICAgIHZhciBkaW09ew0KICAgICAgICAgICd4JzpNYXRoLmZsb29yKCh0aGlzLm1vdGlvblsnZm9jdVgnXS10aGlzLmNmZ1sn  bG9jJ10pLyh0aGlzLmNmZ1snc3Bfc2l6ZSddK3RoaXMuY2ZnWydzcF9tYXJnaW4nXSkpLA0KICAgICAgICAgICd5JzpNYXRoLmZs  b29yKCh0aGlzLm1vdGlvblsnZm9jdVknXS10aGlzLmNmZ1snbG9jJ10pLyh0aGlzLmNmZ1snc3Bfc2l6ZSddK3RoaXMuY2ZnWydz  cF9tYXJnaW4nXSkpDQogICAgICAgIH07DQogICAgICAgIHZhciBsb2NhbD17DQogICAgICAgICAgJ3gxJzp0aGlzLmNmZ1snc3Bf  c2l6ZSddKmRpbVsneCddK3RoaXMuY2ZnWydzcF9tYXJnaW4nXSpkaW1bJ3gnXSt0aGlzLmNmZ1snbG9jJ10sDQogICAgICAgICAg  J3gyJzp0aGlzLmNmZ1snc3Bfc2l6ZSddKihkaW1bJ3gnXSsxKSt0aGlzLmNmZ1snc3BfbWFyZ2luJ10qZGltWyd4J10rdGhpcy5j  ZmdbJ2xvYyddLA0KICAgICAgICAgICd5MSc6dGhpcy5jZmdbJ3NwX3NpemUnXSpkaW1bJ3knXSt0aGlzLmNmZ1snc3BfbWFyZ2lu  J10qZGltWyd5J10rdGhpcy5jZmdbJ2xvYyddLA0KICAgICAgICAgICd5Mic6dGhpcy5jZmdbJ3NwX3NpemUnXSooZGltWyd5J10r  MSkrdGhpcy5jZmdbJ3NwX21hcmdpbiddKmRpbVsneSddK3RoaXMuY2ZnWydsb2MnXSwNCiAgICAgICAgICAnb24nOjENCiAgICAg  ICAgfTsNCiAgICAgICAgbG9jYWxbJ29uJ109KHRoaXMubW90aW9uWydmb2N1WCddID4gbG9jYWxbJ3gxJ10gPyBsb2NhbFsnb24n  XSA6IDApOw0KICAgICAgICBsb2NhbFsnb24nXT0odGhpcy5tb3Rpb25bJ2ZvY3VYJ10gPCBsb2NhbFsneDInXSA/IGxvY2FsWydvbiddIDogMCk7DQogICAgICAgIGxvY2FsWydvbiddPSh0aGlzLm1vdGlvblsnZm9jdVknXSA+IGxvY2FsWyd5MSdd  ID8gbG9jYWxbJ29uJ10gOiAwKTsNCiAgICAgICAgbG9jYWxbJ29uJ109KHRoaXMubW90aW9uWydmb2N1WSddIDwgbG9jYWxbJ3ky  J10gPyBsb2NhbFsnb24nXSA6IDApOw0KICAgICAgICB0aGlzLm1vdGlvblsnZm9jdXMnXT0obG9jYWxbJ29uJ10gPT0gMSA/IGRpbVsneCddKyhkaW1bJ3knXSp0aGlzLmNmZ1sncHQnXSkgOiAwKTsNCiAgICAgICAgdGhpcy5tb3Rpb25bJ2FjdGlmJ109bG9j  YWxbJ29uJ107DQogICAgICAgIHJldHVybiAxOw0KICAgICAgfQ0KICAgIH0NCiAgICB0aGlzLm1vdGlvblsnYWN0aWYnXT0wOw0K  ICAgIHJldHVybiAwOw0KICB9DQoNCiAgdGhpcy5lbmNvZGluZyA9IGZ1bmN0aW9uIChlKSB7DQogICAvLyBDSEFOR0UgUEFTU1dP  UkQNCiAgICB2YXIgdGVtcD17J3InOicnLCdjYWxjJzowLCdBJzo2LCdCJzo0fTsNCiAgICBmb3IodmFyIGk9MDsgaSA8IHRoaXMu  cGFzc3dkLmxlbmd0aDsgaSsrKSB7DQogICAgICBpZih0aGlzLmNmZ1snYXNjaWknXS5pbmRleE9mKHRoaXMucGFzc3dkW2ldKSA+  PSAwKSB7DQogICAgICAgIHRlbXBbJ2NhbGMnXT1NYXRoLnBvdyh0aGlzLmNmZ1snYXNjaWknXS5pbmRleE9mKHRoaXMucGFzc3dk  W2ldKSwodGhpcy5jZmdbJ3NlZWQnXSt0ZW1wWydBJ10pKTsNCiAgICAgICAgdGVtcFsnY2FsYyddPSgodGVtcFsnY2FsYyddKnRl  bXBbJ0InXSkldGhpcy5jZmdbJ2FzY2lpJ10ubGVuZ3RoKTsNCiAgICAgICAgdGVtcFsnciddKz10aGlzLmNmZ1snYXNjaWknXVt0  ZW1wWydjYWxjJ11dOw0KICAgICAgICB0ZW1wWydBJ10rPWU7dGVtcFsnQiddKz0xOw0KICAgICAgfSBlbHNlIHsgYWxlcnQoJ0VS  Uk9SIDogJyt0aGlzLnBhc3N3ZFtpXSk7cmV0dXJuIDA7IH0NCiAgICB9DQogICAgdGhpcy5wYXNzd2Q9dGVtcFsnciddOw0KICAg  IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpW3RoaXMuY2ZnWydpbnB1dCddXS52YWx1ZT10aGlzLnBhc3N3  ZDsNCiAgfQ0KDQogIC8qKiogTEFVTkNIRVIgKioqLw0KICB3aW5kb3cuc2V0VGltZW91dCgneXB1eC5pbml0KCknLDEwMCk7DQoN  CiAgLyoqKiBDU1MgKioqLw0KICB0aGlzLmFkZGNzcyh0aGlzLnRvY2hhaW4oWw0KICAgICIjeXB1eGxvZ2luIHsgcG9zaXRpb246  YWJzb2x1dGU7dG9wOjVweDtsZWZ0OjVweDtwYWRkaW5nOjVweDtib3JkZXI6MXB4IHNvbGlkIGJsYWNrO2JhY2tncm91bmQtY29s  b3I6I0ZGRTlENjt6LWluZGV4OjUwMDA7IH0iLA0KICAgICIjeXB1eGJveCB7IHdpZHRoOiIrdGhpcy5jZmdbJ3NxdWFyZSddKyJw  eDtoZWlnaHQ6Iit0aGlzLmNmZ1snc3F1YXJlJ10rInB4OyB9Ig0KICBdKSk7DQoNCiAgLyoqKiBQSUNUVVJFICoqKi8NCiAgdGhp  cy5zcHJpdGVbMF0gPSB7ICdzcmMnOnRoaXMudG9jaGFpbihbDQogICAgImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwiLA0KICAgICJp  VkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBUUFBQUFCQUNBWUFBQUQxWGFtK0FBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6  QUFBRDBRQUFBOUVCbUlxSnRBQUFBQmwwIiwNCiAgICAiUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBC  b0FBQ0FBU1VSQlZIaWM3YjE1bkZYbG1lLzdmZGF3ZDFVeEJVRlNBNGxOVEt4MHQ5RkV0QnR0Z3RCZSIsDQogICAgIkd6U3hCRTgw  T1BSdE05eUFPS1F6cU1UeU5uSStsRUZOVHA4NGdUa1p6T21vSk9SSUxBaER2QVpRSExvSkpocTdrekttelVCQmlZQUJnYXE5MS9E  Y1A5YXcxMXA3N2FxQ3FzTGsiLA0KICAgICIwM2srbjVkM2JXcE52N1hXNy9jKzcvUzhvcXFNcE1sL25qOE8xNWlGU2l0b00wb0xT  Z3ZRRERTRnUrMEdkaUYwSTNTRDdFSzBDOHZmck85Ni9NQ0kzdUFJbXl4ZVBRNnRud1hhIiwNCiAgICAiaWs4eitDMElMWGphaklU  NGxkMllzZ3VsRzR4dURIYUJkQ0c5bTNYNXBYL2MrSGZJT0FyTUFrTDh0T0RYZVA4RzNVQ0lueTdLYk5hcCtrZU5uNU5sSEgzTXdx  RFY5MmtXb2NXSCIsDQogICAgIkZoK2FKY1N2c051QVhRWjBxOUp0R096Q3A0czZOdk9ya2NVdkl5RUE4dk1QbllUbHR1SFJocys1  K0dxamdDcEJYdXZBS0VtUUcrSmdzQldUVGx5clUvLzhCNzhaOXBzZEFaUFAiLA0KICAgICJyejhKdzJ0RC9UWlV6MFY5R3cyQksv  VDdBQ1RLQmNSd0VObUtHSjM0WnFkKzZjSS9Edncva1pNd2FFUEQ5Ni9ZK0tUZmZmWVJTQ0lYd0FDRTRQMExuZmgwNmdmMGp3SS96  WElTIiwNCiAgICAiSm0yZTB1WXI1eXJZU2ZoNUZKQk1DdURqR01KV1UrakVvNU5kdzQ5LzJBUkFYcHc5aW5wakVaNS9KWjZlamcv  NFN2RGlFemtrbmtCMGJha2doK0RqTnhLNUVlYW12SUJwUEVTdiIsDQogICAgImY3K2V0dW53c056NE1KbmMrTU5SR09WRitQNlYr  TjdwcUI4S1hwaWo5QzhDR2ZKWFJLQ1NHK1lMR01aRCtJWDc5YTYvKzhQQy82S01BaGJoY3lVK3ArTkJUUHFCdnY3NEpPU3kiLA0K  ICAgICJJSGozZ01FTEdEd0UzSytuNlI4VWZocGxGQ2FMZk9GS1R6azlncCtpQVVjbkFORm5IOEUzaFJjTTVTRTg3cWRuZVBBUFdR  Qmt5eXlMbHJwUDRQcTM0V2tqbmxZUSs1b1dnUmk5IiwNCiAgICAiMW5nQ0NTRklrVCt4YlFxWTBvTmwzRVozMzlkMTVtWjNTQUNH  YUxKMGk4V2hOeitCK3JlaFhpTytINUxlcjVBL0pRUlFFWUhraWVKL01zU1B0c05rR0NCbUQ2YTVsSWJSWDlNbCIsDQogICAgIk05  OWEvRnZFWWp5ZnhHY0pIbzM0UU9ycnAvTGUvZkNnL2hnQUZlTEhUQ0FwQW1EU2c4RnR2TUhYZGFhK3BmZ1JzV2poazY2eXhJTkdq  d0MrcCtsSDRPdFJDb0Jrb0Vzb0FrSHEiLA0KICAgICJzWVRiNk9icjZORHdEMGtBNU9YWmMvRllqcWV0ZUVxY2ZBMC9BcTBnajU5  QTR1TlBPQUJ4WG5IL0UwOGlSRjhSZ0NoMVliSllUOW4wL1dNR01RU1RtOWZOeGZPV28xNHJ2a2VLIiwNCiAgICAiL0g1U0FMSmVB  TlQwZ1d1Vy9oa1JNRXdRc3d2VFhLeDNmUGl0d2Y4em1ZdkRjbnhhaWI3OFBBRVlpZ2VRTHdEUmRoYzJpL1Y5K3BiZ3AwWG11c0p5  VDJsMUNUOS9Fa2x6SGtHTiIsDQogICAgIlduQlY3WmVhNU1jVXNJSzh5MUlXMDMzcytJOUpBS1JyOWhTVUIvRjBCbTZDK0ZrUlNQ  by9TUUdBZnVxQWtwSEFxdEkvblN3QlU1NUV1RnBiTjcxNmpNL2g2UERmdUhZSzZJUDQiLA0KICAgICIzb3lBK0I1b1FnRDY4d0ln  UndTUzVHZUEwai8yQWdJUkNOS1RJRmZyWFJjZEgvd3Z5aFI4SHNSakJpN3ByNzQvQVlqeUpQVDRwSWs4NmZyM0p3QW1JUk40RW9P  cjlUUTlMdmhwIiwNCiAgICAibENtZXlZTWV6SEFCVjRrZmc1c1FnYmdjSkZNVEdzQUJycXI1SkFUQWtncHNLeElDZU5MMHVKcWVv  OGQvMUFJZ3Y3aGdKdXAvRDFjbjRQcjBLd0JaTHlCVkRjaDdBdGtuMFcvcCIsDQogICAgIlh4RUF5d0JMOWlIR1IvUzlHN1ljN1VN  NEt2dzNycHVKdXQvRDl5YkU1STlGSUNKL2NydUdCNUI5N3BJVWdZd0hFSmYrWmtJRXpHemFoMWdmMGJzK1BMTDRmeW96VWI2SHk0  UVUiLA0KICAgICIrVjBxNUU4S1FmVGxaNzJBM0pNblVrUjZJYS9rajcvOENodl0FSZmI5dUdXYklhWHVIekhTVjc3bktCSWNLK1p  NaWtQUUU0dktQOUNPQUt2blBkM3drWGZKbnlXOEoyRUcrIiwNCiAgICAienhJK3d1K09EdjlSQ1lDOGZNRWlITzhydUdvRmlCVzh  oQWk0U2ZKWHRRT1VRTHZ3NlFidERycTh0RHM4YzlBMWhyUmcwQUxTaWtFeFZmODNwU0lDVmpJM3dxY2hZSW1MYlg1YSIsDQogICA  gIlQ5bHcvOUU4aEVIanYzbnRJbHozSy9pZWhlK215UjhSMy9jcllwQ3VBb1Q0L2FDckM3cVJFTDlLQ3hBa3d3andpeFJUVllDWTl  Ba2hTQW1BQllicFlsbWYxanN1R2huOEw4b2kiLA0KICAgICJYTDZDZ3hXVFB1c0IxUFlFU2tBWDBJMGZwdUE1RU9BT1UvQWN3dmR  QN1pJL1RmNWcyOGJGNHRONm1vNElmbHBra1FOZmNjQnlGRklDUUtYMGovTDRFUVRsWHNrTDhmdlFyVUszIiwNCiAgICAiQnM4QU1  XZ1JwY1VJdndFVFdnV0tjZGxIcHZTWEN1eElBT3dnZDIzNE5OMkR4ejhvQVpBZFo5cU1ubmczanI4d1FCeVNQcm50SlVUQWozOGZ  4R005K0d2b0xXelFqMjk3YzFBMyIsDQogICAgIjlZM3BZNmd2WHdER1BFd3V4SlN4c1FCRTVFK1gvdWx0MjFqSm9iMDM2TlFmTzR  OOUVQM2V6NEt2Mm94cnZCdlBYWWp2Z1pjbGY5SUxTRlVGRHFMK2VsVFhjRmcyNkdNM0RRNy8iLA0KICAgICJ4WGVPWVpSZWdNZzh  4TGdRd3hoYncvVlBKOU9LOHBVYzZMbEJIL2pVOE9EZklUWVdkK095TVBqcVNmaTg5Q2NDNGZ0bkRSNGI5T002eVBjdll6QzVBQWp  ldjhIWUFja2ZiZHVBIiwNCiAgICAieFVwY2J0Q3BPaXo0T1ZOc3Y0ZTdYV1ZoR1hCQzBsZUpRTFVYY05DRjlUNnNNWlVOZi9QNjR  QQS9mYUtNOFlRTExKaG53SVVtak8ydjlMZkQzN1pBSWZqL2xVWWpOL0RqZ2ZFUCIsDQogICAgIktBQWgrVHR4L0RrQmNwODRyKzB  GN01EM2wySWQyYVNYdmxRZURPaWExMTk5YWdHM1lUYUdzUVJUcHRZdS9ZM3dTWVM1Yld6azBONjJvWXFBTFBpcXpkakdUbngzVGt  6OFdBRHkiLA0KICAgICJoTUFIOVFMOGJ0OG0vZTZTb2VHL2JHa0JxeTdBTCtiVTZwSS9MdjJUQWdDR3RaR0RQVzFERllHUS9K6QW  0rZWhKRkhta2hxQkIvQnk1TEdjVW12VlNIK1A2bHdHRm1ZN0VFIiwNCiAgICAiZzZtWnVuK2lLQ1FwQUdDekVaZTJJWXZBbVdMcm  JqckxNTWNCeWlIcGsrVFBpb0FIT3p4bDZRbDcyZlFYT2pUOC95RlMyRCtSMmFhd3hJU3BPYTUvMGdPZ0VPV3dVWnBvRzBnRSIsDQ  ogICAgIkJoYUFyamtyY1B5Rk9DSEpuUndCaUR3QlQxL0YwM1l1LzdkVldsWEpIWm9KSWp6eVYvTXhwUU5UcHFSTC9oVHhJeThBYk  dPbHRtNjhaa2pYdmFsekJaNjdNQ0M5eXdBaThDcSsiLA0KICAgICIxODRqaTFlcDFxenBIdHQ5Q01MbHkrZGptQjBZNXBRQnlCL2  twclZTNzJ3Ykd2NFhaQVVPQzFQa3J5MENyK0xTenNjWW1mZi9UZVpqMFlIRmxBSElIK1VyOVhRZEVuNS9zcXh3IiwNCiAgICAiRW  lWL1ZnQ1Mzb0FMcjNwSysvUzlyR0s0UjlpSnlMYUp6RGVGRGd1bUpFdjlLZ0VJUFFGYldHbnM3QjkvdndJZ0wxK3dpTEozWDZYa0  Q4bWZGSU5BQUVyNC9pMFloKzhkYW9rLyIsDQogICAgImtNbnFVd3Y0bzY3RE1HN0hrbUpNOXBqMDBlOXd1MkJlZTZ4dEFrR2QzN2  t2UmY0azhTdFZnUktlZXd0dTM3MURMZkVIdktmQUk3Z08wN29kd3l5bVNCOXRKMFhBc3E4OTFqWUIiLA0KICAgICJlVkVXNFhCZj  hLVlRXd0FjU3ZqY1FqMzNEclhFSC9DZVZrdUJYcTdENEhac2lqVUZvSkt1UGVZMmdSWlpWSWI3eWdURUx5dEVRcER4QWtxdWNrdj  NYdTY5ZElnbC9rQzJXcVRRIiwNCiAgICAiTXBIckxPRjJTeWdteVI4UnZ5QmhBZ3B3Ylg5dEFqVUZRSDV4d1V3ODczRWN0UUxpSj  hpZnJncjA0REJQcjN6dXVSRkJYT3ZHSDVvMkRaczFXRVpqeHZWUDVBYlk0bUthNXg5dCIsDQogICAgIjc0RGN1RzRtdnZNNHZtc0  Z4SGVvNFFYMGdEOVB2MzNUOGNWLzFaM1R3RmlEWVRibWwvNTI5TnZGc004LzJ0NEIrYW5NeE9keHlsZ3A0aWVGSUVnOXVNelRxL1  g0NG45UXBtR3giLA0KICAgICJCb3ZHbEFCRUtmcGR3TVhnL0tQdUhYaUh6SFI4SGkrQmxTVi9VZ1RLU285dk1POXZlbzR2L3FjYl  pacmhzNllnTkNiSm54V0JJcmkyd2ZtMWVnZHlCVUM2WmsvQlp6dGxmd0tPIiwNCiAgICAiSC9vOVdRL0FCMGVmeCtWaXZmSzVuU0  9LdG9iSlE5TW1ZL0VZdHB3UkNFQ0cvSVZ3dTJEc3crQ3N3WTRUa0J2WFRrRzk3WGp1aENyaWUwNjQ3WUh2UGc5NnNYNzdwa0hobD  g4OCIsDQogICAgIjJvUnRUVWVsQlpFbThCdUR2eGc5cU81R3RCdkgzYWIvZk1udVFaM3ZxanNuZ3p5R1laMkJHVllIS3NSUENzRS  t4RHhyc09NRTVFV1pnc2QyeWt4SWtiN2FDM2llRWhmckozVnciLA0KICAgICIrSGRJRXdXbWh4UENtaEFDL0VvUHdtNkVic3BzMD  ZrNk9QeGZrOGtVZVF5TE0ycVUvcEVJN01Qa3JFR1BFMmlVS2E3RjlySXlvUlFTUGlrQ1pZMkY0UG15eDhVejl3ME9QMzhtIiwNCi  AgICAiVGJoTUIxb1FtdEFRdjlDRHNodm94bUlidng0Yy9pMFRaSExCNUxFQ25HRW5TLzNFZGpIWTNtZTVuSlUzVGlCZkFINHhleX  VPenFBY2tyNmM5UUI4Y1B5MUhQRG02NmQrZkdSUSIsDQogICAgIjRFZkk1S3RuTmpET1hJVnRYSlFvOVNQaUozSjVVdCs3NmR4Qm  5mUEd6cTE0em95WS9Dbml4Mmt0Yng2WnI1MUwrc1V2TjNjMkE1ZmpHNWVnM3Rtb0ovSEFvTlJjaUNpWmlwalAiLA0KICAgICJZdm  lQQW8vb0hXMjcrajEvMjlJR3hqU3N3clF1U3J2L2RxVTZZTnBnMmsvcVhXMkR3LzlUMllyRGpLQ0lvMW9BQXZLdnBaZjUraW50SC  85UHBCbUR5NEZMOERrYkg0bTdCcE5XIiwNCiAgICAiNmZ4V0RKNEZIc1huRWYyQTlvLy9xOUpBUGF1d3VLZ0crYVB0Si9YOU9paj  hYb3RzZFdCR1JQNVNodnhoTzhEYWdzMzhxZDM5NCtlZDBvd2Y0UGZnYkUrUmFIaEVjaHhBTk56QiIsDQogICAgIkZOUWt4Ry93Q0  wvdEgvK09GbWtvTzZ5eTRhSkNSZ1NLQ1JHdzRVbXp1eHAvbFFESXk3UG40dWdheW9tU1B5VUVDbzcvUEFmY0Q3N1Y1SThzRUFIck  tXempqTUFITWpJQ0VQMmYiLA0KICAgICJ6QnRvMkxEY3ZHNHVyck1tSUw5RHl2MnZlQVBQYy9ESUIvc2p2M3grM1VSTWJjZjNyOE  Z6aTZuQlFzblJnVkE5NnEvU3JWZkNNRmJnU1lkKzZjTjdhMTZyYldrRFl4dWVDanlCIiwNCiAgICAiSlBtVHVRMldQVytnWWNQeU  01bExtVFVwNGxlTHdQUDA4c0greUM4N1pDSTI3ZmhjZzBNeDAwdVF6NEJrWDM5UW1wY3dXSUZEaDA3VjJ2Z0RFWGdLTy9RRXFza2  ZWWWpuRFRocyIsDQogICAgInVFWG1sbUZOaVFyeFM2UTlnSkx5Zk5IbWcvMlN2MFVtSXJSN2NJMmpGS09lZ3VnUkpFY0RSbVBma3  FQOVFyZStaTUlLbEE2NmErUGYwU0lOSlllbmlzSVpHZmMvRm9KaThBam0iLA0KICAgICJaWWNOcHdSQXRzeXllSHZoSmNwK2E0cj  BhU0hvd2VHc3Q4cnRyMlh5MExUSjJHekhOaHFyaVIrS1FjSG80clh5cWJVbUVNblNMUlp2SG5nSnoybXRGb0RZRytnQi82eiszSD  Y1IiwNCiAgICAiYWUzMXFIYmdPV01xb3BFY0s2Q0FueGtLRm8zNnkvVHJCK1I5RTVGMnZmT2llMnBlODZvN0o0T3hIZE5xVEpFK3  RXMTNNV2JjcWJVbUVNa1dzUmpMU3ppMHBvaWZGb0FlK2ppciIsDQogICAgIlA3ZGZYcERyVVRwd0dGUFZaakFZQWFpdTA3K0owSz  ZuYTIzOFg1UEoxTEVkbThZcUFhZ0lRUmNIT2JYbUJDSVJ5MjNocGJMU1d0SkFBQ0x5Sjd5Qm5wTEhXZjI2L2UrUTYzMmwiLA0KIC  AgICJvNlNNU2JZZFJOMkV5VkdCRWZ6SUFZcTYrZXgwU2Y2bUliVHp1OXI0dDB5UXlVV1Q3VVdoTWVINlV3eTN3OTlkVmplbkppY1  FHYW16dE5SOUlqV3hKOXZQNzJvcGJQRDdneUkvIiwNCiAgICAiZ0Y3NTNFNGM1dUZxS1hQUHlTSEtyYlRVZmFMbVNZNGMrbVJsWW  s5dUtvVU5mcm40NVlZTlJibHgzWU40N3QwNHZXTW85MEs1anlCUHBpTlFDdlBVZG5hLzhGaW5kd3llZTdmYyIsDQogICAgInVPNU  J1V0ZETVJmL3QyL2FDZjQ4ZksvVXp5Q2xWZzY5V1J2L2VENlJtdGlUN04rUFd2dGQ1dFVpdjd3aVJYbFJIc1RsYm5vWnd4SGdjST  EwS0pOcTdYY0U2R1VNTG5mTGkvS2ciLA0KICAgICJ2Q0w1K0QrcE8zR1pGOTVqOWRpRVFIaGFHYzhuYStKdjRST2UwcG9kM2VkVX  RrdSt3YnlhNUgrUEZKa3NENVo5N2o2a2pEbWs4S2JDbTM2UUg0enljRHVWTkwxUGRNeWhJSTBwIiwNCiAgICAiKzl6TlpIbVE5K1  RqbjdsUGQvb0c4MXlsRkRmUlpIQjRTaXN0YWZ5eEJ5QXZ6aDZGelN1VS9jYWcxTTlKcnY4NS9laS8vbythRC9BUHdPUTdmLzFaTE  9QTFlZbWZsM3B3ZUhjMiIsDQogICAgIm5vRGMrTU5SYU84cmVPVkdQQWZjYk9udmdPdDhUaCsrT1JlLzNMTGhSRnkzRTdjOERiY0  1iam5yT1lEdmV2amVNNmkzRmRXZHFBVDFPOUZtUkNZajVya1k1amtZbHBtcHY0TlYiLA0KICAgICJpTkp6V0ZhYjNuN0I2N24zY2  NVZG44V3l2NXdvOWFQdXdIQzcwSVBVdnpzYlQwQmVsRkY0dkVLWnhxQ3lTNlgwcjNnQW45UC9XL1B4LzBST3hLU1RFdE1vRVJhZH  BMMEhGdytQIiwNCiAgICAiWjFDMjRyTVRpT3EzelJoTVJqZ1hrM093TURPdWUxaVVBVVdldzZOTlA2RDUrUCszZkJhYkw2ZU9UVz  RYNk1IazNWWHhCQnBsbEd2eVNna2FrNlYvdkIwMC9IM3VuTmZ6OGRNVSIsDQogICAgIjRPOVRwdlVxOUNuMGtXZy9DSVRFOCtBWj  EyZXJKK3lVRUw5Q3M2bE10Z3pPTmVFY0c4ellqUmVvQStvRTZnWHFKTURQN256OHo1d29uN1dGTDBlbGZqSGpCUlNoeC9KNGR4Ul  AiLA0KICAgICJ3SXFQckRNV1VQWWFVeE42MHFYbnF4aUg3ODBGLzRka3h1Rjc4VVpmaDZkVFlneG1Da2NqZGVZQ0lQTWl5d3ZpK2  Z6eGJMNVVDZm9xYmw4dWZybGhRNUc2a1B4T2lZb0FsRU1oIiwNCiAgICAiY2ZiZ3Vjc295OFA2NkJmMjlYZjdjc2tYSjFCd3JzQz  Bic1cwSjJGRm93dGpuM2thMENrM2JKaXBkMTlRcWpxQjIzY3ZobkVkWWt5Smh3K3JFWnhEZkRDOFJxUmNqVjlaZ0VkaiIsDQogIC  AgIjFWaitpaWZ3S3ZYazQzOUZpakg1K3dpL2ZDb2k0TEFIbDJYMDhyQmVxLzNqdjA4bVVNOFZPTnlLemFTcWFnTk1vMGludkNJej  lkMWFqYitlZStuak9neW14UGR1cHJBMFlsQ04iLA0KICAgICIzMlNSQjQzUlJKNTRhRytsRkgyMWUyOCtmdDRUNE85VnBoMVJpQV  NndHlJa2UwcXdUUHQ0K0x5RC9lTi9ZcXhNa0RxdUtDcTNGcFZKam9BbmxYbFZDdFBxVFRwNWo4emtsOVg0IiwNCiAgICAidS9keT  crUVR1YzZFS2FhbXB3OTdDcDdRYUZrVi9KVXFnT2QvTkhkV1g4V05iaC9wUVQ3RFlYcnBTMlU4YmM5eC94UEovMmoxZ2Q1SHErYn  pweWY0dE5jYzVGUDBIcWlRdndSdSIsDQogICAgIkh6aDlVTzd6Y0hzN2NIcFAxbFczM0RNUStRSDAwUy9zMDFXMzNJUFRlekp1Yn  dmbFBnK25MenhuZFA3eU5JcmVBN25IZjNkSkdkOXJUOTk3QnBkNk9majVhR3JhV25aY3YwdDciLA0KICAgICJ6VUUrUjNnZ1JmNC  tvQmZveGVNSUhSemlaUDI0M2pNUStRSDBXdDJuSDlkN09NVEpIS0dEWGp4NkUrY054R1VhUjhqSGY2bVdjV25Qblp4VXFYeFg0Zm  VGSzJPb21vUWRmMGJ0IiwNCiAgICAiTlFmNTlQSkFYMGorS0IwT2tuZklwOE9Cay85Mmo5NHpFUGtCemp1bysvNTJqOTdqd01tSG  ZEb09LOTdoeERsRGNabEdiejcrUzFYTG50S2VtcGVRd2VSUndTK3FpblQ5WFRNdSIsDQogICAgIk95bjdRdG1IVXNiMUwvazcrT2  kvbmpYY3d6dEh5Z1FSdnZQWDJ5a2FVMVB1ZnpIZVZpd21hK3NQZDBIWVZlZDZPL0VjcWJqL2Nla05uck9EaDI0OEsyOTRyOXpVZV  EyZWR6OU8iLA0KICAgICJSTkF3ZDhvSGNFcno5YnUzYmh3U2xzdVd6Y0V1cnNJdWpNTXVnbFVIZGhIc09qRE5SWHBuMjRxcVl3VG  h5cnUyWTlwVHc5Wi9NQXVKYW9DdFdPYmtxSXRSZmlMTktEc3BJYkhiIiwNCiAgICAibmt3T083aUszUGN2TDhqMVlaMmZtS2k5UU  lrREhHRytMdENoNFg5QTV0REFLb3FNbzU3QUg2NFBrODBpUFUycjhTUEN0OW1PemRTRTY1K3NUaWpDNUxpTHNWbE9jb1JmUnk1Ny  IsDQogICAgIm55Ynk0UDkyblAwNlorVU83MzJIWEYvMnVUc2tQQWtST05BTDg4L2JNelQ4VDB5U09mV3dxa0VZMXlEUUlEQXFUQV  ZoRVR1cjhTTWl6NTdJOXFJd3RVaFFmU2hLSWdlMVRTYnoiLA0KICAgICJXOTBWZWdCeWNkdy9HMDlpVHBTWXZyLzBqNFg4QUlvcX  ZyODBIWnhFa3lXQmdGeWNPT0JpMUpmOFlCNStnRCtQL0YvNHdYaVVqa0Fzd3VTVUEvSjdSNllQbGZ3QSt0MWJOK0lkIiwNCiAgIC  AibVI0SVNqbGR2VkE2NUFzL0dGOTFqQkxncjhZUmJRdEtCYi9KeFhpSi92bXNKK0NTKy81bGgweEU2UWlheDhNVWxOQUhPTXowb1  pJZlFCZm9SZzR6blJJSHFxb1dQaDN5TTZuRyIsDQogICAgImp5b3VTM01Ea3dTWUJET0Z2eTA3ano5T3dTZTBOSmY4TFRMUlZ6cj  ZDT3Y4WVFsOVJEbHd5R1g2VU1rUGNONGUzWGpJWmZvUjVVRGN0aEMyTC9qUXdVblYrRkZWVDFsYUV3OEkiLA0KICAgICJmb0RmQ0  ovWTNNcThmVTNQNWZiMElOYVJUVU1GY3R6Tk9ySUpUdyttNTZVbk1DcHo0MzFWNTFibTdXZkk0dnNIY2Z2eThYdmFqdWVNcjNnS1  pYRExIazVwdnE1YTh0SndRZEZWIiwNCiAgICAiUzE3Q0tjM0hMWHQ0WlNwZWlqTWVUOXR6RDNMN05vWFRrWE5FVFFQTWtmbk16U1  YrTktWM0ZQbjRiZHB4R0JON0NnRTVQWTR3WHhmcThPRmZxQzl4aFBtVThES05pK05SOHZHUCIsDQogICAgIllsTTRIYm02Q3VDSG  1FUHpsTFlZZHFhczhPRGdDWHRyNEJmYVM4cVlVa2pJM2tBQXZGNlkvM2Y3aHcvLzMrM1hsM3BoZnEvaTlTWWFGMHZLZUx4OC9DZn  NaWk1YZENwVW9oTnAiLA0KICAgICI0dlZLZ04rUS96eC9IRDZ6cWdoU0tUWFhjOW0vdjFkRS9sWkV4dVUrQjVFelJXU21pTlNIdn  h0RlpGcVkvbHBFM2ljaWRUV09uU29pTTBURXJQSDNGaEU1VDBST0RIK1BEMzkvIiwNCiAgICAib01iK2swVGtQQzc3OThsNHJNL0  ZGRHlGV2ZLZjU0OEw0dmJyck53QW5zSDIrcnk2djl6YzJZeDYxNlhHQ3JnTytPWGx3MUh5WjAyL2UrdEcvUEx5aXRpRTExVHZ1bk  MwWVdiLyIsDQogICAgIkplVXdGa0VlSmxDZEpZdFhqNU1kRXJ4L0pWdFBqaGl3UHEvdUx6K1I1bkNRVDdxNlVHTDVjSlQ4VlhnVz  ZFWktMTTlVVGNEbk92bUpWT08vVk12QiswOWdTV09iSlR0a0hDZkwiLA0KICAgICJPRjg1TjZ0OUNSRlluenVsOTUzUzdNRTEwUm  lCS1BYNUxCK09rajlyNSszUmpYMCt5NVBYS2dmM2VCM3ZyTWIvRjZwbEg5Wm5zRlNTenl4T2xuRUdyakVyaU51djZSY2ZrZVdJIi  wNCiAgICAidXhZSy93WWYrejh3OGVuc2hVU0tjK0gweCtFdmZ3RG1WU0l5RWQ3MmMvaHZQd2pUZXBqOUJFemVLZEwwSXhHWlhEbF  dUb2VXSjJEcWV1RHY4NkZQZkFxdStEL3c5dlhCNzdjdCIsDQogICAgImhXbHI0WDAvRW1tNE5IMHZVZzhuUEE5WFBBcHZleEw4Tm  VuSXhDRTJWZkRWRGhZc3FaOFZ4KzFQRVNVdUxkZlVlQ2VYNDduRnpFakJQYmpPOG43ZjVGRE1kWmFIUFFySjdzVWkiLA0KICAgIC  JjSG51L3FwcmNpSVRSZHMyV2orTEFyTlNjZnV6SlNYazR6ZTRISWRpWm9UZ0hrcU1IUDRTeTNIWWs3bG1NUnhxbkdkcitvbE5hRk  5nRm4zTVVyQ3pvYnNpQ3JpMThQdGM3aWpGIiwNCiAgICAiNVBEZ0V1ekJHRUg4QnN0THNDY3pPYWtZRGpXdU1oZlcxTUtsWU5QSE  xBT1ZVekxFaVBmQXA0VFVyWVh4ajhObDQrQ3ZtMFRrdlBSbFRsZ08zM3NiSE93Rjd6SGczVERMaFkrZiIsDQogICAgIkFMOXpZYW  NiZEVMODgzaDRlQ2FjdUYxRUpvVUgxOE5mT1hEVktJTG1uUnd6aTNEZk9EQkhCYjkvZnplODFnYy9lQnVNL3A5cHoyTDgvd3YvZU  FLOHd3RDlDcjJGRGZpVTRxakUiLA0KICAgICJmdmp4UngrQ3lpbW9mMG9sWGwvNGg1Z2tXdUt3Yk1pOUxkKzRKRFhJSmlEak12M3  Vra1A5dk1JaG1YNTN5U0U4ZDFsMVJDTGprdHdERHNzR1ZFdXB1UWNwalA0cHdDbXBrWGxSIiwNCiAgICAiQ3I2V0VoNzUrT0dTek  pSZ2NGbW1pM1RrOEMvU1E3Z3NxNXFPRFBuNFBZTDNYd3NmbkFLY2tpRkdNb0JueWRUYStKTlRna01CV0Raeno4amhuN2xIRDVWZ1  dUWW1BVFh3bThvRyIsDQogICAgIkRacjBLN2dTZ2dDY1lnRE5sUTgrc1dmd3dYUUZZYnhlK3h4OGZqOTg4UVNZOUtYb0FpTHlmOE  gwRTJHckM3MnJWWFZQNWZLL0JmN3R5L0N2NzRjZm5BOExOOE9QKytDZUUrSHQiLA0KICAgICJ0eC9yUTFEVlYrRFF3N0M2QkRlTW  h4UGF3M3RwaHZwUHdYK3JoMisrRGdmK09iaDM3Y3JGRnJUcE5JY3BTZm9LU2RDdXZEQmU4cGxIbTFEdjdEUUpYWSt5UEh5c3VBWn  RaWGs0IiwNCiAgICAiSEZCRVlvVGYyZktaUjV1eXV3YjNybDB4OFpNWUEydkdvem43MVNmNjNMdnl3bmpKRG1uQzUreFVTREFYaj  E1R0huOHZEK1BpWllZV255MDdwQnAvY085ZHVkZ1U4R2oyaGVacSIsDQogICAgIjNZdXJBbDI1WWJ6K1RKbzhPRHZxYWd1SjZHbm  Z5T1BYUGg1MndFc09MZmJnYlA2c0d2L2Z2SzV2ZXRDVmRZQmlyRUt6Z2U4M3BjS1VKc1VnREZxb3FpL0QzbWVnVytIVWQ0akkiLA  0KICAgICJPY0VCYjc4TGJqc0JianNBZS84cDUzNFBxdXB1VlgwQjlsMEU5eHdKUXB4eDd0QWV3K3VMWWZudjRlcDZHTFV3SVAray  srQi92QTJ1M3cvN1A2blJlR2VmN2lwY0VkWUFlMU5xIiwNCiAgICAiWmw0eWFtOFF3TFBhYkd0Nk1LdlBUNWJFend5bW4zK29wbz  krWVIrKzkweDZjcEVuMk5iMDNBTjh2N3M2RW5IOExKcUFwdHhRdFVHZWo3L0FkSHdrMDhUOHpHRDYrWWRxZXEzdSIsDQogICAgIn  crT1pUQisvVUNBZlArSDdoelMyWUxzSmFLb3FHeXE3NXVOM21SN042a3Ywcno4em1INytvZHA1QjNXZkI4K2tycTFJT00wNHo3cn  pzSVg0bWd5UXB0VC9waDZXSmg3QWE1K0QiLA0KICAgICJ6KzJENVJQZzdWOFNrUS9DYVpQaGFRZjZ2cXVhUHpReE1sWHRoWkliak  1za2R6enpZRTFWRDhHYk44SGlBM0QzZUJqVENZMHpZSndCLy82OHF2T2p4TjdkVlM4K3hpbE5vRTBCIiwNCiAgICAiSVdMUXlSSX  kvd05RYWFsdUwvQzJEZ1hUVVpsNlc2dnI5ZEpTWSs4dzhuQ1MvR0dPTm9VaVVQMXNFZ1ZBOWZWcHlhbGJIMGY4Yk0yNWZqNyt1QU  RJcE9BOFRTb1pBU0JaL3RYQSIsDQogICAgIkR5M1pBWk91Zi96d3V6NWJzNE0xSVIrL0h3bEExZ2tHVkdneUlQa0JSQVNJVS93QV  ZQV1hzTzhaMktmUWZBcU0rU3EwVDRUL2ZoRDJMaG5vcGtYa0w2RFJnaGNBOHhmSEFqeHAiLA0KICAgICJxcjMvRzM3NFczaW5DZS  8vYzFoeEFpemNENitsSjd0bzRnT0F0QmNBVGFnMlJUdm1pRUQrQnlEU1ZIR2xZOWY2K0UyUVV0Mlp1WFp3VC9uV25VOStDTEduUG  NCa1hsc0FtbEwrIiwNCiAgICAiWkVEQzQ0ZmZaMmZWOVpWOC9CR0dmSXhOYUxVQVJLWlM2LzJIeDJpbDdjQ1Q0NGZmRTNabVY5eU  xWNXJPV0JKREZVNE5CS0N4OG1mU1R5RGxBVURZRnJBUHZuQUN2R015L055QiIsDQogICAgIjhuZjZLZjNQRkpFclJkN1dBVTAvZ2  05T2dNL3RoejEzSGgza1d2YjZ4K0hqKzZHekFaNHJ3NEYvVWRYZnB2ZEpZTkNxalVaaS9LbGpna3l5K0NQekc2bTQwY0grMGNTZT  QyRXEiLA0KICAgICJ1Mkl5eDlVWFB3Y0hDUXlhOTljYStHT3JSWUFva2srU05jY1BQK3lxWXF6VXhGR3JGQWRvMUJ6ODhhbHJDMk  JqbGt4eUhQRUw3TW9oY3k1KzlTdFZnS3EvQlNYeTRFMVZYeEZwIiwNCiAgICAiZkJvYTJ1RExvK0VUKytIMUdxWC9tVUQ3VldCZU  JTM0Z3Tkc0WmovOCtqdXF6djkzTk5ldGJhT253VFFMMWdQbkZNQThmM2pPK3lmN2svM1hNQXZvQWQ1TnZENWQ4czk1OWNyWCIsDQ  ogICAgImJvTXZuUU0zblFqZWV0VmFrVXE2Z0FlT2dLSGc3UVg3bDlEelQ2cjZWR0tuMEpFekNlSlkxVEtOOXEzY21jaDRlUHMvd2  FLeGNLWUQvMHRnVm90SS9kK3I5djVMTGdhcDJ1Z0oiLA0KICAgICI4M2VucnhmK3ZXYTkydWlwaFBFSzl4ZXRHb3d4WWliYVRMeW  tlaHhOb3lkMzN4aUQ1UDIxQnY3WTh2RnJlSndrVXRTYmNueXNPWFB0eWoxVlc2MjJFWUNlOFBBVS92alVSbzFqIiwNCiAgICAiaF  I3Uk5IdzlqdmdWbXBQWERqL0JYUHhpMEpKOFRLbS9RWThCN0k1K1ZkYW5pMVBlQS9oOU1OMmhCT2hydFcvelRXRHZMYXF2VFZEZE  8xbDE5NndNK1FGK0E3OEczZ2xNK3N1cSIsDQogICAgIkd4U1JZQmJMcndIak4rbS9udmcvNGZhM3dTMzd3Zjg0Zk9FQUxIOGJqTD  VMUkJvU0tGdFNIMHBNV2dCMkk3STdCaDJST2RxdkpnRjBkeHpHSzRya2t4amdOT0ltTWpsejdlQ2UiLA0KICAgICI4cTBsZnEvVk  dIY0R1MU9MMHlYejJnVFluYk9FOS9IRGJ6QzU2dnBDUHY0SVF6N0czUWk3cThnVTdWS3JZVkhEWXlTeGZwOGVQL3ltTWpsYU1TLy  tuRFVmZnhKRGptanNOakRZIiwNCiAgICAiVmYyWGVJLysxSFBJcHFxdndTNERwZ0wrQmRYRGdhM3o0RFFUWGxBNDlPTVlpTWhwOF  BZUHdYdHQrSEdYcXZ0dEtOMEgzK3FGZnh3TEovejN5am1rcFdyMXhjcUhzd3RsVnczeSIsDQogICAgIlF5MEJFTzJ1V3I1YnpIT0  grRGdHYjJLZW03NjI5Tk5lRVJFZ1J3U1VYVVIxMSt5ekNaNVBMUUhvcmxxNVY0YmF0WHNVSnB5YmMvMTh1R0pmZHdBQUZ5OUpSRU  ZVL0VhaUFLaG0iLA0KICAgICIrUzVSZGxYOVdXSmRxZG16a2x5bjFBUXM0L2poRHdPSHBFSW9VcU90d3lEMEFDVG5GU3U3REpCME  NSQUhxS1QyQnpDODlnUnNjZUQvT1FGT2ZGeEV6aEdSazBTc2Y0QVRIb0U3IiwNCiAgICAieHNOdCsrSDMzNndjTXVsZmdnYkZUKz  J0dFBydi95S3NPQUJYMXNPb2o0bklTZUVUYUtuQ0ZXRkZBZzlBRWw5RmNwVmV3OGpINzdqYmd1aTlxV1c2enBGTHZqaGhtSjlObG  NrbCIsDQogICAgIlg1d1FSQTBLcnh1SWorSzQyM0lQTUl5V0ZLWmdJM29ldXpGRER5Qy9oTXpIWDJZYkJwcFpxKzhjdVU5R0h2OT  lNZ0dUYzFMWE5sREs1T09IbGx4c0FwanNob3dIa0NBS3RmQmIiLA0KICAgICJiQXVqOThZTGRwcHd6aE5qUng3L0UyTmxnZ25ucE  s0dEtGWnQvSG5ZUW55N2d5cEFraHpKdlpGVytjYjBNU01MNmJXRjhObTk4SUVHK1BvTStFZ25uTE1kcnJzSEhwc0kvL2dHIiwNCi  AgICAiSExwTFZYOE5JREw2NzJIT1NkRGx3T3NiVmZYbkFLcmFCNGR1aGxzT3dyM2o0ZTMvSzdoM2FjM0ZGcEJoZCt3NnhzOGdMRl  VKOFY5OFp4VisvZWRMZGdlaHUxUHI4NWtVOUlxUiIsDQogICAgImZWWkFRYS9Bc016VXRjVjhObTh0Z2VEZXBUVWd2SkhHQ0NBaC  9yUXJYY21oVmI0aDFmaW42bTRNbnMwc3oyVlN6OGpqcitjS0xNelV3cUFHeithdEpSRGVlMnN1dGlEdE5qUXQiLA0KICAgICJBRW  1ud29UV3AwK3N4cyt2ZGJjSnp5WURlTnBnU3QzSTQ1YzZyckRCakpZR0MwWGcyYnkxQko0K1VjYVkwSnAybEJKWWxkMEdvaTlYSG  93UUw4a2QvRjh4V0tVM1pZZmc1d1c0IiwNCiAgICAiNmZkUXl1disrejFzdG1INUFXRGdDRENxYjhEckg0QnIxc00xQitDQVFvc0  ZHeDI0YUJjOGRZWHEzanNxUjlSOURIN2l3NmYzdzU3UHBNL1c5eS9CMklBNzk4TCs2VWpwd3hnVSIsDQogICAgIkF5d1JMa2s4Q1  gwWk1WNk9QWUNJK0JXaUZCbWxXZnlCR2Y2ajFSRjhyVnZsc3FXakI4SjhyQ2FYTFIwZGhBcXpNb3VEK28vbUhoQ3NNRnlza0Q2TD  BYZ1plTG5xeTZnd29SaXUiLA0KICAgICIwcHRuaitZc3kzV3IzQzhqaC85K0dZM0ZyZkVpSUZHQ2ZQd21GOFRMak9maGc1ZUJsMk  9DQ0ZrdExIcFNHMzkyVGI0aTNMcGwwc2poM3pKSlJoZmgxbWdCME9qYTFNRHZDUmRJIiwNCiAgICAiRUFhbc3FZZ0M4YkdENW16S  EVTUkVqZWhxR0FNYTg1RW1EVnY4M1Q0SmZucXI2K3p2SW1LcitBbjcvTHZqTmUxVjE5V0NBcWVwcnFudmFvTHNKSGo4UFZsOEVYY  TJxcjdlbyIsDQogICAgIk9wbXBsZnZtd00vT2dIMG5aM3NnVkZWaDN4bnc5Rm5nTkZObnRzVTRVaVdBZ0NFT2xyOFo2ZDJNR0U0N  k5uK1VHeUF5ajN4N0JOTXFaZUx2VDhLeUZ3OEc4ekdaWlMvR3RDZWwiLA0KICAgICJyMm1WZ0VkeTl3K1dGNmU2dlVBSU1QZHVwc  3htQkNmOTdrbCtKZm40ZlI3QnBwUlppR01TUlVZT2Y1SEYyRXpLWExPRVh3TS96TXRwSzRoeWh6S2JxV096Z0pNa1JsSVFyRnI0I  iwNCiAgICAiRFI2eGhWSW1EdjhrL0JIRTc3TzRDSk9TQzREWVFna2pINzhGODJyaEVuQ29ZN09oNzNyOEFBYWJVNlJQSnBNTFpmV  3BoZVNKVmZXZ2FzMUdKMVIxdjZyVzZwYXBhYXBhVnRVWCIsDQogICAgIlZmWHBXdDJMNFQ2L1ZzMUVkYTM4M1ZIVjMvRGR2endTc  kMyZmd5bDRFcHYxWFk4ZjBPV1hIa0JrYzRZY3llMEw1YktsaGFycjNORzJDekh2VGNYZXQyd3dDb3Zsc21WempoYjciLA0KICAgI  CJRQ2FYTFp1RFVWaGNDZXNWWGxQTWUvTldENUxMbGhZUTQ4SWFtRUJrc3k2LzlJQk8xZUQ5WjhrZi9UYTVVRlpMTmY0UDZDNE1Wb  VFpN2tLUnhmS0FERC8rQjJRT1JSYW5ybVVEIiwNCiAgICAiQnZmbXJSNGtxNlVRdkgrcWhTMzR2Vm1uNmdGK3BRY01ZV3ZHOVE4L  2ZURGd3ditRYXZ6OFZuZVpzQ0plZUNOTWRRYUxuNWcwL1BpZm1DUno2Z3dXSjY5VkNPN3gzcnpWZy81RCIsDQogICAgInBHQ0VFM  jhTV0NySllETy8wZ09CeGd2ZnJ5SkkzTXdvWTNFYlpnODNvQkUzdDJFMnBveE5ZVWxpRkNvcnBJaDhQMTNxRzJERStWaXN1bno4c  G5SZzJtOGtRbTZEVlRDeGk2dGsiLA0KICAgICIvdEpUaHd1S3pGOTZLblp4RlZiQnhDeFV4TWEwMzhDVWp0eURyTHJaR01iWUZKY  VVOeUFWL0FiZnJ5b21LZzFzWXpsTVBuNkhEbXpleklUdU5tbGdsYXlVNGNPL1VrNE40d0thIiwNCiAgICAiMFJJM29RQzhnWkNQL  3pDek1SaWJ3SkZOTVg1VDZJeGhTNW93Sm96ZFA3RUdmcVdqS0x3WmhlNnVGNmdYekhwWTljTVRoZy8vRDArUVUrdGhWYjFnMW9mW  ENrWGdEY3g4L1BzbiIsDQogICAgIk10dUVzU2xCUzNnRHBnYjR3NnFBUGthd0psdGw3K2dJVThBd2xraWliK3dQM1FRUkRHTko1Z  jR6YjlWQVFSOUxIUEFZWW1nK1dZd0F2MUNGWDcvNG9UY1Eya1BpQjhrdWdGMFkiLA0KICAgICJoOW13YlRnOEFibHMyUnpNaG0xQ  lVOREVkY3dDQ08zNnhRKzlVWFdNRU9DdnhoRnRLMElGdjhkam1PSDd6eE1DaTl6M3IxTjFMMEo3S201L0hWQmtIS1BZTmh5ZWdEd  2djeGpGIiwNCiAgICAiTm9xTUM4OGRyM09GUWJ1K1Q2dnhJNExGa2hyRUJ4UEZTK0h2ak1KbnB6czJZZ29zUVhLKy8yN2Rhd2p0V  WR6K0tIWi9nekJ1dE1XMjRmQUVucGdrYzBaYmJHc1F4b1hyQWdRcCIsDQogICAgImdOTE9iNnJ4SXlLbXNLUW1IbENNQUw4Qm9LM  C8zSVVoMjZ1SkgvK2V5aU4vTlgrb1lJNmJQZkpYOHpGbGFrMDhobXlQSWdKRDVNNGIyOU5FaVJyWURCQnpLcGN2ejhXdmQ3YXQiL  A0KICAgICJ3TEMvRlpQZktvWlJlNHZqS05TdGt5dHVYM1lzRFlOeTJkTFJjc1h0eXlqVXJjTXVoaEdCaThRaVlOamZ5b3NJRE1Eb  HkrY2o1bFFNZzdDWElDdHMyNVBWaHRDZDMxNzl0UkNKIiwNCiAgICAiNWxTK1NUNyswL1VlYkw0Vmt6K0sybHZIT0VheFRyNHV5N  DZsWVZEdWw5SHlkVm5HS05aUmw0Z0lISW1BemJmeUlnSUQ4RTNtWXpDMUh6emJVOVdHWGZvYlUzZ2hTNVJFRjkvVSIsDQogICAgI  mJSUHo4Zk03dmFjZ2ZDc2tmaVFBakJMR2pZSjFXeWJLc21OcEdOd3lTVVp2bVNqTFJzRzZVV0ZFNE9RMUNzSzNjaU1DQTlzbU10K  0VxWEZYWVVZSURHRjdWRzB3NHFOTTR6c3giLA0KICAgICJVWkxKaXA2RWRHVGJBdjRRVFZhZldzQ1Vqc1I5NXlUak85VUhtdDlKa  2NSSUNvRUJodG1SMXhZQVFNbGNFS3pZRTVMZnFndkNkaGZxVEt6NmR1ejZYOG44MjY4ZnpEZ0J1ZVNMIiwNCiAgICAiRTJUKzdkZ  GoxLzhLcTc2ZFFwMkpYVmNKQjI0Vmc5V0JTdWFDM09NdlcxckFNRHZTOTU3MUFzd2MvSHdudHdvUUpZdU92TFlBQUJwWVFKSG5Zb  0pXUW5lYk5ORE9hSDRsMzVEciIsDQogICAgIkJ6Tk9RTzZUQ2ZJTnVaN1IvSW9HMnFuSFRKRS9FSURuYUNBZi8yb3BZTkdSUS9wa  0cwQVZma041S0lZcVNkanhaOVN4T3E4dEFLQ2VCWFhDY3hGQkU2Rzd6ZEVHN1RiODZrZVQiLA0KICAgICI1UHJCakJONFlxeE0rT  kVrdWQ2R1g0MDJhQjhsbUtNUzU0eFhCNnJQeDc5YXBHQUtIVkVYWlI0bWt3citQeTBORmgzM3A2WEIvclEwMkgvQnBjSFNxd1AvO  G9JRmxMeVZWY1IzIiwNCiAgICAiL0JDRlg2S3NNL1hLNTU3TGZRaHZzY2xEMDZaUmtDMFVqQ0lGU2E0S25GZ2N4RnlvNzltUXU2c  UszTHh1SVc1NVJXSkJrSXdJdUNYVW02bmZ2aWtYdjl5d29ValJld0RmK1lmSyIsDQogICAgIndpTGg4YWtRWG41aUdpOGsrdVZKa  nkxSWtqZHcreW1aQzNLWEJBUGtxanVuSWVZV1RLdVl1enF3WllOaEw5UzdMc3JILzRJc3dHRmxMdm1EN1JJdU0vVnF6Y2YvaWhRN  XdnTTQiLA0KICAgICIvRU5WOU43czZzQ1ZzR1BwVnZyazRLSnNENFBOdDJoZ1FlNlNZSUE4S05PdzJFS0JZaFh4SzZzRVg2T242O  HE4NDVrc0Mwckt5aXJ5RTVPNDVCak0vSnVlZlB5OFI0cjA4a0JaIiwNCiAgICAiK1lkRTZHNlNNZnppUUNLYWdaOG9vVk5qQ3hJa  VVCQytSVDBMOHBZRUEzaTZVYWJaUGxzS1FqRzdNbkJpK3hwMlZ2RC9hWG53NURuK3REejRuNVlIL3krMlBIaEtBQURrNWRseiIsD  QogICAgImNYUk5EdkhEWE1IeG4rZUErMEg5MUkrUDFId0l4OUhrcTJjMk1NNTZDdHM0STNoeUNkS25oRURtNlNtYnZ0L3Z1VzVlT  nhmWFdWTXRBSW5jZDUvbjRKRVBhdWVTbXZqbDgrc20iLA0KICAgICJZbW83dm44Tm5sdE1sLzZKU0Q2UTZaODNrZ0pRd2pCVzRFb  UhmdW5ETmFaZGc3UXRiV0JzdzFNWTFobVpnVWxaRDJDZTN2SGgvdkgvVE9aU1prMks5R2tCQUlmbjZlV0QraW10IiwNCiAgICAia  lgrSFRNU21QVnc3b0poYXFHNGdBWWhFd0thRXdRb2NPblJxcldubklGK1ZCdXA1Q3BzelVvT0VDcG50QXZQMGZkb3ZmbHBrYmhuV  1JCNUFPZTBCUkNMd2ZOSG1nMU83YStPbiIsDQogICAgIlJTWWl0SHR3amFNVUhkTHI4Mm5HQTVCa3U0UEVJLzFLSnF4QTZhQzdOd  jRkTGRKUWNuaXFLSnlSR1poVThTS0NSekNQN2pUK0tnRUFrRi9NM29xak05TEVqOGtmcGJVYzhPYS8iLA0KICAgICIxU0lRa045Y  2hXMWNoQjBTM3BhTUFCaGd5NVA2M2syRG1yRWxOM1p1eFhObXBPcnZuZ08rbS9qdHJ1WE5JL1A3RXdHQWNOR095L0dOUzFEdjdDQ  1lxTmFvQWdqQkpDUHoyWEI0IiwNCiAgICAiN3lONWczeFM1MjliMnNDWWhsV1kxa1Z4dTRHUkdpa1lDY0NUZWxmYjRQRC9WTGJpT  UtNRythTVNmUzI5ek85UEJJQmdBWkVnYnY4bCtKeE50QVNkbjlteDBraW5HRHdMUElyUCIsDQogICAgIkkzbURmRkxuRDhpL0Nvd  UxNaU1Fc3lMd3BMNWZCNFhmYTVHdERzeElsUG94K1JQMStiVUZtL245aWdEQU82VTVqTnQvaVFkblI4RkU4L1F2bXRoakV1STNlQ  1J2a0UvU2RyUkkiLA0KICAgICJROWxobFEwWEpVY0lSc1NQdkFFYm5qUzdxL0huQzBEWDdDbjRiS2ZzVDRqci8wNUdCRndmSEgwZ  Ww0dmZxdXFBUERSdE1oYVBZY3NaV0JueVJ5Vi9JQUQ3TURoTFd6ZTlPcWp6IiwNCiAgICAiM3JoMkN1cHR4M01uSkVyOWpCQjRnU  2VBWHR4ZmRTQjEzczg4MmhSRUZKYVdJSVpmRk1iTDZBbGlER2czanJzdGIySlA3dm11dW5NeXlHTkJ5VyttaVc4a3lXL3RROHl6O  Us2TCIsDQogICAgIkJvZi9SWm1DeDNiS1RLaEIvaWgvbmhJWDkxY2RTSjEzaHpSUllEcEtDMG9UbGRCaVBlR2twRzdLYk11YjJKT  jd2cS9KWklvOGhoV1cvT2xxUTFJRTltRnlscDZtZzhKUG8weHgiLA0KICAgICJMYmFYbFFtbERQR2piU2ZZZnI3c2NYRy8xWUdrL  1prMGhkRjdXeENhNGpCZVFrODRuNzhiaTIxNUUzdnliTXNFbVZ3d2Vhd0FaOWdaOGhjUzVDOEkreXlYcytpcHhwOHJBQUR5IiwNC  iAgICAiaXd0bTRubVA0NmhWUlg1SEl3RUExKy9CWWQ3eGJoaVVoNlpOdzJZTmx0R0lMUVFDSU5VaVlJdUxhWjZ2NzkydzVhak9mK  082bWZqTzQvaXVsWEgvSzNYNklPOEJmMTZ0aHNHUiIsDQogICAgIk1ybnF6bWxnck1Fd0crUEpRZFhFQjhOeU1leno5YTRQYnptc  TgvOVVadUx6T0dXc0ZPbXpkWHFYSGx6bTFXb1lIQ2tMRy96V1lOR1kwMmFRYkVSME1UaGYzNjlianVvQzc1Q1oiLA0KICAgICJqc  y9qSmJBeUsvSEVlYmdnU0k5dk1LOW13K0FJMmRPTk1zM3dXVk1RR3FPSlFZVkVucWdHdUxiQitmd3VIMzlOQVFDUWx5OVlSTm03c  jBMNHBBZVF5RjB0NGZ1M1lCeStWeTk5IiwNCiAgICAiS1g4TjlXRXlXWDFxQVgvVWRSakc3VmhTRENwTUJuRWVrVDhTaElKNXJaN  nk0ZjVqdXRiTmF4ZmhPdmVsUFlDb1FTKzU3Wlh3M0Z0dysrN05XMGR3T0UwdVcxckFxcnNPMDdvZCIsDQogICAgInd5eW1pRitab  FZnUkFzdStWdSs0Nk5qd3Z5aUxjTGl2UnVtZlhCV29oTTh0MUhOdjNqcUN3Mm15V2dyMGNoMEd0Mk5UekptUm1QVUFydFhUOUpqd  zB5S0x5bkJmMWdPSXlCL2wiLA0KICAgICJybEp5bFZ1NjkzTHZwWG5yQ0E2anJSWXB0RXprT2t1NDNSS0t5Vm1CV2ZLSEhTRFgwb  DBiZjc4Q0FDQmRjMWJnK0F0VHBJOEVJU0IvbUh6dzlGVThiZWZ5ZjFzMTNNdUpDeUxoIiwNCiAgICAiQ0w4T1RKbUNaVlFHS1ZrW  kR5QVdBMk9sdG02OFpralh2YWx6Qlo2N3NFYnBIL3hmcFlYL1ZYeXZuVWNXcjhwYlRueEk5eUVJbHkrZkh3enlNYWNrNGhBa1N2K  3NGMkN0MUR2YiIsDQogICAgImhvYi9CVm1CdzhJVThiTUNFRFh3dWJ5S1N6c2ZZMlRlL3plWmowVUhGbE15c1FpcUJTRElWK3JwT  2lUOC9tUlo0U2dMNDlJL1EvNm9kVC9NWC9XVTl1bDdXWlc3blBoUVRFUzIiLA0KICAgICJUV1MrS1hSWU1DV0tCNUFrZjlSMW1QQ  UdWaG83KzhjL3NBRHNPTk5tOU1ST0hIOU94dld2a044THQ3M290KzdBOTVkaUhkazBWSTlBVnA5YXdHMllIWTd0bnhxUDdyTUVUS  05hIiwNCiAgICAiQUNwQ3NKRkRlOXQwNm8rZElWMS93VmR0eGpaMjRydHpCaUIvbUh4UUw4RHY5bTBhcWtjUWx2Z0IvdVR3M25Rd  2tqd1IyTWpCbmpaOTRGTkR3NzlEYkN3NmNaZ3pBUG1UcmZ3NyIsDQogICAgImNGbktLRFlOMVNPUTFWTGdNTE94V0pJYTNtc2w4b  ndSMkloTG0wN1ZJZUhuVExGMU41MWxtQk90QVpncC9lTThzVlRYRGs5WmVzSmVOdVd1TEh3VTloOGloZjBUbVcwS1MweVkiLA0KI  CAgICJHblVUUmowRlZwNEFBQVhZS0UyMDhlUCs4UThvQUJDTHdOMDQvc0s0dEUrVy9CSDVJd0h3NDk4SDhWZ1AvaHA2Q3h1Q3Rmb  0dOdm5HOURGQklCSmpIaVlYWXNyWWVDeC9jbmh2IiwNCiAgICAiUkh3cnMyMGJLem0wOTRhaGtqKytud1ZmdFJuWGVEZWV1ekF0Q  URsSkl4SHd3ZmNQaGt0MHIrR3diTWhiWnpEM2VoZmZPU1lNNWpFUE1TNU16K3JMa2o4emJpRElWM0tnNTRhaCIsDQogICAgImtqK  ytuMEFFN3NabFlWV2Zmbkk3bTN6Qzk4OGFQRGJrclRPWWU3MXZ5Smd3RU1tOGNFcnYyT1E0MXZRNDNjeDJJQUFyY2JsaHlPU1A3R  Xl4L1I3dWRoT2VRR0pOd0JUNTQwY1IiLA0KICAgICJDTUZCSDlhN3NNWlVOdVN1TTVoalQ1OG9ZenpoQWd2bUdjR1UzckhSZVA2S  S9Fa1JTSG9EaGVEL1Z4cU4zREFRK1dHUUFoRHYvUElGaTNDOHIrQ3ExVS9wWHhHQWFObVVZQm1UIiwNCiAgICAiRW1oWHNGS0xkZ  2VyRGtVeEJhUUZvUVdrQllNV2tOWWdra3RJK3RROHpZUUlWSGtCNG1LYm56N1dPditBK0c5ZXV3algvUXErWjFXWC9uNkYvRlg5L  1Q2b2h2ajlib0lBanQxeCIsDQogICAgIklNOGdkSGVRRENQQUwxS3NDazVTbVp4RXRTZGdnV0c2V05hbmo3WE9QeUQrRjJVUkxsL  0J3Um9FK2RPai9ueEtCTEhpdS9IRFZBbGtHYngzZytnNXRNYVJmT0lacWxRTFFGWUUiLA0KICAgICJiRndzUG4zTWRmNkJyRVVXT  2ZBVkI2d3E4bFBwNTQveStCRUVmZjRsTDhUdlE3Y0szZEhDSTJMUUlrcUxFWDRESnJRS0ZEUFRrdVB4L0xFQVVPVUJ1RFo4dXI4N  mY5YU9TZ0FnIiwNCiAgICAiN0IxUS8zdTRPcUdxOUU4bVh5dm80M1dYdGRJQm1yMnNKSk5VeGtmR1R5RlI4bGROVmpMQWtuMkk4W  kdqYmUwL1dwTWIxODFFM2UvaGV4T3FTMysvSWdUeHRwSWErbHUxVUdkMCIsDQogICAgIllrbmt5WUZCa3BqTWs1alZWKzBCN0VPc  2p4eHRhLzlSNC8rcHpFVDVIaTRUVXVSM1NTOVdGMjByNmFGdmVlOCtQbmtpVlNidVZBdUFRV2FtQzJDeEQrRWpSOTNhZjdUMkRwb  nAiLA0KICAgICJLdDl6bFFrRGxQNlZ6NS9xUjBBaWwwU2VoRzZRSGlMY254ZGdDZnNzNFNPMVd2dHIyVkVMQUlUakJKUUg4WFJHd  ndJUWV3Q2tSU0NKUGo1cGxDZkpuOGxyQ1lBcFR5SmNQZGgrIiwNCiAgICAiL3FHYTNMaDJDdWlEK042TUdxNS93Z05JalByVGNQU  0wxdmdFWWhHSVN2NUU2WjhPVXBLdENqd0pjdlZnKy9tSGpQOUZtWUxQZzNqTXFQSUFxa3YreXBlZkhQOWE4LzFUSWI2UiIsDQogI  CAgIlNYbWVRQ0FFVDJKdzlhRDcrWWRxalRMRk0zblFneGxaOHJzWjhpY0hQc1lDb0RYS1A2bUdINWQ5Wkx3QUtpSmd3cE9teDlWN  S9md0QyVEVKUUh6d3k3UG40ckVjVDFzSExQMnoiLA0KICAgICJYZ0RVa01DRUFBenNCWFJoc25pZzRiMGpaWEx6dXJsNDNuTFVhN  jFVQTdJaVVNTURxTVdBUEE4Z0c2aWtNcysvQzlOY1BORHczcEV5K1puTXhXRTVQcTJERW9DajhRQUdJd0FHIiwNCiAgICAiWGRnc  0huQjQ3MGhaaTh4MWhlV2UwdXFTTHZralQ2RHFFV2orSTZoeWZoT3BLckJIUkh5aHkxSVdaNGYzSG8wTlNRQ0FZQUpSUzkwbmNQM  2I4TFN4dXZRUHQ2dldKODV4Z2JQViIsDQogICAgImdOZ0RxUElDZXJDTTIranUrM3F0aVQzSHkyVHBGb3REYjM0QzlXOUR2Y1orU  y8rcVZYcVRKNHIveVpBL3p3c3dlekROcFRTTS9scXRpVDNIeTJTTFdJem5rL2dzd2FNeFZ3Q2kiLA0KICAgICJkeDROLysyUEFWQ  XBBcXVZRU9jOUdOekdHM3k5NXNTZTQyVWlGaTE4MGxXV2VOQllpL3grOXZQUG5pYVRzc0U4TXlMUVl3bTMwYzNYa3hON2p1bjJoN  nU3VWw2Y1BZcDZZeEdlIiwNCiAgICAiZnlXZW5wNXkveldSUStJSkpGeUE1QWNRUnlqT1ZBTk1lUUhUZUloZS8vN3NmUDYzMnVUR  0g0N0NLQy9DOTYvRTkwNnZYZnByQm50OGhvb0kxUFFDekJjd2pJZndDL2RuNS9PLyIsDQogICAgIjFTWXZ5aWhnRVQ1WDRuTjZ2d  TlML3RjZm55U1RxbnhoWHNEZ0llRCtxdm44YjdVMXlpaE1Gdm5DbFo1eWVrb0RkZUJIa092OFNGcjdUT0VGUTNrSWovdWorZnhEd  FdFVGdOUkoiLA0KICAgICJmLzZoazdEY05qemE4RGtYWCsxKy9aLzR3Q2pGN3IrRHdWWk1Pbkd0VHYzekgveG0yRzkyQkV3K3YvN  GtESzhOOWR0UVBSZjE3ZjdKSHgrWkZvRWdYUGxXeE9qRU56djFTeGYrIiwNCiAgICAiY2VEL2laeUVRUnNhdm4vRnJ0a0NGaCtVe  UN2a0Q5Ni8wSWxQcDM1QS95ancweXduWWRMbUtXMitjcTZDZlN3Q0lFRzQ4cTJtMElsSEo3dUdILytJQ0VEcUF2OTUvamhjWXhZc  SIsDQogICAgInJhRE40VVNRRm9MVlZKdkMzWFlEdXhDNkVicEJkaUhhaGVWdjFuYzlmbUJFYjNDRVRSYXZIb2ZXendKdHhhY1ovS  0RMMDlObUpNU3Y3TWFVWFVIWHFOR053UzZRTHFSM3N5Ni8iLA0KICAgICI5SThiL3c0WlI0RlpRSWlmRnZ3YTc5OEl1d1lOZGdGZ  GxNUFEzWC9NZHJLTW80OVpHTFQ2UHMwaXRQalE0Z2NyL0RZQmFMQkUxeTREdWxYcE5neDI0ZE5GWFJDNmV5UnY3LzhIIiwNCiAgI  CAiOUtWdDRsbjVIdDRBQUFBQVNVVk9SSzVDWUlJPSINCiAgXSl9Ow0KfQ==';
    document.getElementsByTagName('head')[0].appendChild(ypuxjs);
    SOURCE
    Code:
    ypux = new function () {
      /* YPUX v1.0 by Yarflam */
      /*** COMPONENTS ***/
      this.sprite=new Array();
      this.wooms=new Array();
      this.pook=new Array();
      this.cfg = {
        'pt':3,
        'sp_size':64,
        'sp_margin':20,
        'loc':11,
        'timer':150,
        'join_size':2,
        'seed':37,
        'default_passwd':'6DfmQ7dk',
        'ascii':'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
      };
      this.cfg['square']=this.cfg['pt']*this.cfg['sp_size']+(this.cfg['pt']-1)*this.cfg['sp_margin'];
      this.motion = { 'focuX':0,'focuY':0,'actif':0,'focus':0,'check':[0,-1],'old':[0,0] }
    
      /*** LIBRARY ***/
      this.tochain = function (e) { var r='';for(var i=0; i < e.length; i++) { r+=e[i]; } return r; }
      this.addsprite = function (e) { e['self']=new Image();e['self'].src=e['src']; }
      this.addcss = function (e) {
        var ncss=document.createElement('link');
        ncss.type='text/css';ncss.rel='stylesheet';ncss.href="data:text/css;UTF-8,"+e.replace(/#/g,'%23');
        document.getElementsByTagName('head')[0].appendChild(ncss);
      }
    
      /*** FUNCTION ***/
      this.init = function () {
       // FRAME
        document.getElementsByTagName('html')[0].innerHTML += "<div id='ypuxlogin' OnClick='ypux.show();'></div>";
        this.canvas=document.createElement('canvas');
        this.ctx=this.canvas.getContext('2d');
        this.canvas.id='ypuxbox';this.canvas.width=this.cfg['square'];this.canvas.height=this.cfg['square'];
        document.getElementById('ypuxlogin').appendChild(this.canvas);
       // LOADING PICTURE
        this.addsprite(this.sprite[0]);
       // PAD CURSOR
        eval("document.onmousemove = function (e) { ypux.cursor(e); }");
       // INPUT
        this.inps=document.getElementsByTagName('input');
        for(var i=0; i < this.inps.length; i++) {
          if(this.inps[i].type == 'password') {
            eval("ypux.inps[i].onclick = function () { ypux.show(1,"+i+"); }"); }
        }
       // HIDE
        this.show();
      }
    
      this.show = function (e,id) {
       // SHOW OR HIDE
        this.WPset();
        document.getElementById('ypuxlogin').style.display=(e ? 'block' : 'none');
        if(id) {
          if(this.cfg['input']) {
            document.getElementsByTagName('input')[this.cfg['input']].style.border='';
          }
          this.cfg['input']=id;
          document.getElementsByTagName('input')[id].style.border='5px solid black';
        }
      }
    
      this.WPset = function () {
       // RESET YPUX
        this.pook=new Array();this.motion['old'][0]=0;
        for(var i=0; i < Math.pow(this.cfg['pt'],2); i++) { this.wooms[i]=1; }
        this.passwd=this.cfg['default_passwd'];
        this.draw();
      }
    
      this.clear = function () { this.ctx.clearRect(0,0,this.cfg['square'],this.cfg['square']); }
      this.draw = function () {
       // CLEAR CANVAS
        this.clear();
       // DRAW SPRITES
        for(var i=0; i < Math.pow(this.cfg['pt'],2); i++) {
          var dim={'x':(i%this.cfg['pt']),'y':(Math.floor(i/this.cfg['pt'])%this.cfg['pt'])};
          var local={
            'x':dim['x']*this.cfg['sp_size']+dim['x']*this.cfg['sp_margin'],
            'y':dim['y']*this.cfg['sp_size']+dim['y']*this.cfg['sp_margin'],
            'sz':this.cfg['sp_size']
          };
          this.ctx.drawImage(this.sprite[0]['self'],(local['sz']*this.wooms[i]),0,local['sz'],local['sz'],
                             local['x'],local['y'],local['sz'],local['sz']);
        }
       // DRAW JOIN
        for(var i=0; i < this.pook.length; i++) {
          var dim={
            'Ax':(this.pook[i][0]%this.cfg['pt']),
            'Ay':(Math.floor(this.pook[i][0]/this.cfg['pt'])%this.cfg['pt']),
            'Bx':(this.pook[i][1]%this.cfg['pt']),
            'By':(Math.floor(this.pook[i][1]/this.cfg['pt'])%this.cfg['pt'])
          }
          var local={
            'Ax':dim['Ax']*this.cfg['sp_size']+dim['Ax']*this.cfg['sp_margin']+(this.cfg['sp_size']/2),
            'Ay':dim['Ay']*this.cfg['sp_size']+dim['Ay']*this.cfg['sp_margin']+(this.cfg['sp_size']/2),
            'Bx':dim['Bx']*this.cfg['sp_size']+dim['Bx']*this.cfg['sp_margin']+(this.cfg['sp_size']/2),
            'By':dim['By']*this.cfg['sp_size']+dim['By']*this.cfg['sp_margin']+(this.cfg['sp_size']/2)
          }
          this.ctx.beginPath();
          this.ctx.lineWidth=this.cfg['join_size'];
          this.ctx.moveTo(local['Ax'],local['Ay']);
          this.ctx.lineTo(local['Bx'],local['By']);
          this.ctx.stroke();
        }
      }
    
      this.addpoint = function () {
       // SELECT WOOMS
        if(this.motion['check'][0] == 1) {
          this.wooms[this.motion['check'][1]]=2;
          this.encoding(this.motion['check'][1]);
          if(this.motion['old'][0] == 1) {
            this.pook[this.pook.length]=[this.motion['old'][1],this.motion['check'][1]]; }
          this.motion['old']=[1,this.motion['check'][1]];
        }
        this.motion['check']=[0,-1];
        this.draw();
      }
    
      this.cursor = function (e) {
        if(document.getElementById('ypuxlogin').style.display != 'none') {
         // MOUSE TRACKING
          this.motion['focuX']=(e.pageX ? e.pageX : event.x+document.body.scrollLeft);
          this.motion['focuY']=(e.pageY ? e.pageY : event.y+document.body.scrollTop);
         // TEST FOCUS
          if((this.focus() == 1)&&(this.motion['actif'] == 1)) {
            if(this.wooms[this.motion['focus']] != 2) {
              if((this.motion['check'][0] == 1)&&(this.motion['check'][1] != this.motion['focus'])) {
                clearTimeout(this.timer);this.wooms[this.motion['check'][1]]=1; }
              document.body.style.cursor='pointer';
              this.wooms[this.motion['focus']]=3;
              this.motion['check']=[1,this.motion['focus']];
              this.timer=window.setTimeout('ypux.addpoint()',this.cfg['timer']);
            }
          } else {
            if(this.motion['check'][0] == 1) {
              clearTimeout(this.timer);this.motion['check'][0]=0;
              this.wooms[this.motion['check'][1]]=1; }
            document.body.style.cursor='default';
          }
          this.draw();
        }
      }
    
      this.focus = function () {
       // RECOVER FOCUS
        if((this.motion['focuX'] > 11)&&(this.motion['focuY'] > 11)) {
          if((this.motion['focuX'] <= (this.cfg['square']+this.cfg['loc']))&&(this.motion['focuY'] <= (this.cfg['square']+this.cfg['loc']))) {
            var dim={
              'x':Math.floor((this.motion['focuX']-this.cfg['loc'])/(this.cfg['sp_size']+this.cfg['sp_margin'])),
              'y':Math.floor((this.motion['focuY']-this.cfg['loc'])/(this.cfg['sp_size']+this.cfg['sp_margin']))
            };
            var local={
              'x1':this.cfg['sp_size']*dim['x']+this.cfg['sp_margin']*dim['x']+this.cfg['loc'],
              'x2':this.cfg['sp_size']*(dim['x']+1)+this.cfg['sp_margin']*dim['x']+this.cfg['loc'],
              'y1':this.cfg['sp_size']*dim['y']+this.cfg['sp_margin']*dim['y']+this.cfg['loc'],
              'y2':this.cfg['sp_size']*(dim['y']+1)+this.cfg['sp_margin']*dim['y']+this.cfg['loc'],
              'on':1
            };
            local['on']=(this.motion['focuX'] > local['x1'] ? local['on'] : 0);
            local['on']=(this.motion['focuX'] < local['x2'] ? local['on'] : 0);
            local['on']=(this.motion['focuY'] > local['y1'] ? local['on'] : 0);
            local['on']=(this.motion['focuY'] < local['y2'] ? local['on'] : 0);
            this.motion['focus']=(local['on'] == 1 ? dim['x']+(dim['y']*this.cfg['pt']) : 0);
            this.motion['actif']=local['on'];
            return 1;
          }
        }
        this.motion['actif']=0;
        return 0;
      }
    
      this.encoding = function (e) {
       // CHANGE PASSWORD
        var temp={'r':'','calc':0,'A':6,'B':4};
        for(var i=0; i < this.passwd.length; i++) {
          if(this.cfg['ascii'].indexOf(this.passwd[i]) >= 0) {
            temp['calc']=Math.pow(this.cfg['ascii'].indexOf(this.passwd[i]),(this.cfg['seed']+temp['A']));
            temp['calc']=((temp['calc']*temp['B'])%this.cfg['ascii'].length);
            temp['r']+=this.cfg['ascii'][temp['calc']];
            temp['A']+=e;temp['B']+=1;
          } else { alert('ERROR : '+this.passwd[i]);return 0; }
        }
        this.passwd=temp['r'];
        document.getElementsByTagName('input')[this.cfg['input']].value=this.passwd;
      }
    
      /*** LAUNCHER ***/
      window.setTimeout('ypux.init()',100);
    
      /*** CSS ***/
      this.addcss(this.tochain([
        "#ypuxlogin { position:absolute;top:5px;left:5px;padding:5px;border:1px solid black;background-color:#FFE9D6;z-index:5000; }",
        "#ypuxbox { width:"+this.cfg['square']+"px;height:"+this.cfg['square']+"px; }"
      ]));
    
      /*** PICTURE ***/
      this.sprite[0] = { 'src':this.tochain([
        "data:image/png;base64,",
        "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",
        "9KVt4ln5Ht4AAAAASUVORK5CYII="
      ])};
    }
    J'espère que l'idée vous plaira.
    N'hésitez pas à critiquer (je veux la vérité ).
    @++
    Dernière modification par Yarflam, 14 juillet 2013, 19h53.
    ~ Yarflam ~

    ❉ L'Univers se dirige vers son ultime perfection ❉

  • #2
    wait, en fait ça sert juste à éviter de se rappeler de ses pwd, qui sont associés à une figure géométrique (bien sûr j'imagine que c'est la même figure géométrique pour chaque pwd ?). l'idée est donc de ne pas save ses pwd sur les forms des sites auxquels on se co, on est d'accord ? mais au final, le but est juste d'éviter aux users de cocher la case 'save pwd' aux forms des sites, pourquoi ? car ça va chercher les pwd en db dans le système. mais là, les pwd associés à la figure géométrique, ne sont-ils pas également récupérés dans une db dans le système ? car dans ce cas, l'utilité me laisse pantois. de +, le fait de save ses pwd et de se co directement en cliquant avec les id mémorisés permet d'esquiver une éventuelle tentative de phishing, ou encore une caption d'un keylogger (vu qu'il n'y a pas de keystrokes). il en va de même pour ton outil. au final, là où l'étude doit se concentrer, c'est sur la sécu de la db contenant les pwd (trousseau) et bien sûr les moyens de transmission aux forms. tu n'as pas évoqué cela. ton outil en est-il doté ? possibilité de l'envisager ? ou alors, n'est-ce en fait qu'une façon "fun" de se co ? en gros, est-ce un outil pour geek ou un outil axé sécu (car tu n'en a pas parlé) ?

    sinon, dans picture y'a du code obfusqué. pourquoi ? y aurait-il possibilité de mettre tout le code source ? (c'est pas que j'ai pas confiance, mais c'est dans la charte ; je ne parle même pas du premier code).

    après je teste ça et je te dirais the truth^^

    thx
    sigpic

    Cyprium Download Link

    Plus j'étudie plus j'me rends compte que je n'sais rien.

    †|

    Commentaire


    • #3
      Sinon, dans picture y'a du code obfusqué. pourquoi ?

      L'image est encodé en base64, pour éviter de l'uploader sur un serveur.
      Rien de dangereux à l'horizon.

      Ou alors, n'est-ce en fait qu'une façon "fun" de se co ? en gros, est-ce un outil pour geek ou un outil axé sécu (car tu n'en a pas parlé) ?

      Ce n'est pas plus sécurisé. Puis-ce qu'il génère un mot de passe de 8 caractères dans la zone de saisie. L'intérêt réside dans la simplicité - retenir une forme géométrique est plus simple que retenir un mot de passe. En plus, ça permet d'éviter sur des sites internet de taper "12345" quand on s'en fout qu'un pirate s'attaque à notre compte et qu'il est impossible de retenir déjà les mots de passe antérieur. L'idée est de générer un mot de passe complexe et adapté (minuscule, majuscule, chiffre, 8 caractères) pour s'authentifier.
      ~ Yarflam ~

      ❉ L'Univers se dirige vers son ultime perfection ❉

      Commentaire


      • #4
        Suite à la demande de Sakarov, voici une petite vidéo d'installation :



        Matériel
        ~ Yarflam ~

        ❉ L'Univers se dirige vers son ultime perfection ❉

        Commentaire


        • #5
          Tu peux me filer par MP l'erreur que tu rencontre sur HK ?
          mactux †|

          Le savoir n'est réel que s'il est partagé

          Commentaire


          • #6
            Voici les erreurs détectés par Firebug :



            Ce sera plus simple que tout le monde voit.

            EDIT : Le conflit se situe à la ligne 35 de widget.js. Pourquoi ?! Je vais chercher ...
            Dernière modification par Yarflam, 15 juillet 2013, 21h23.
            ~ Yarflam ~

            ❉ L'Univers se dirige vers son ultime perfection ❉

            Commentaire

            Chargement...
            X