From 59acaf46cb58ebcd7b0daadaae07f8156b763d7d Mon Sep 17 00:00:00 2001 From: syoul Date: Tue, 9 Dec 2025 16:10:10 +0100 Subject: [PATCH] fix: utiliser iframe avec data URL au lieu de document.write MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit document.write() après chargement cause un rechargement de page. Solution: créer un iframe plein écran avec data:text/html;base64 L'iframe est un contexte isolé, pas de boucle possible. --- public/team-block-script.js | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/public/team-block-script.js b/public/team-block-script.js index e5e4838..f990397 100644 --- a/public/team-block-script.js +++ b/public/team-block-script.js @@ -1,4 +1,4 @@ -// SCRIPT ÉQUIPE - HTML INTÉGRÉ (pas de requête HTTP) +// SCRIPT ÉQUIPE - IFRAME AVEC DATA URL (function() { 'use strict'; @@ -9,19 +9,30 @@ return; } - console.log('🔄 ÉQUIPE: Injection du contenu intégré'); + console.log('🔄 ÉQUIPE: Création iframe avec contenu intégré'); - // HTML encodé en base64 (évite toute requête HTTP) + // HTML encodé en base64 var htmlBase64 = 'PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImZyIj4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KICA8dGl0bGU+w4lxdWlwZSAmIFRlY2hub2xvZ2llcyAtIExhcGxhbms8L3RpdGxlPgogIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2N5dG9zY2FwZUAzLjI2LjAvZGlzdC9jeXRvc2NhcGUubWluLmpzIj48L3NjcmlwdD4KICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9jeXRvc2NhcGUtY29zZS1iaWxrZW50QDQuMS4wL2N5dG9zY2FwZS1jb3NlLWJpbGtlbnQubWluLmpzIj48L3NjcmlwdD4KICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9lY2hhcnRzQDUuNC4zL2Rpc3QvZWNoYXJ0cy5taW4uanMiPjwvc2NyaXB0PgogIDxzY3JpcHQ+CiAgICBjb25zb2xlLmxvZygn8J+UpyBURUFNLkhUTUw6IFNjcmlwdHMgZXh0ZXJuZXMgY2hhcmfDqXMnKTsKICAgIGNvbnNvbGUubG9nKCfwn5SnIEN5dG9zY2FwZSBkaXNwb25pYmxlOicsIHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnKTsKICAgIGNvbnNvbGUubG9nKCfwn5SnIEVDaGFydHMgZGlzcG9uaWJsZTonLCB0eXBlb2YgZWNoYXJ0cyAhPT0gJ3VuZGVmaW5lZCcpOwogIDwvc2NyaXB0PgogIDxzdHlsZT4KICAgICogewogICAgICBtYXJnaW46IDA7CiAgICAgIHBhZGRpbmc6IDA7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB9CiAgICAKICAgIGJvZHkgewogICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsIHNhbnMtc2VyaWY7CiAgICAgIGJhY2tncm91bmQ6ICMxYTRkM2E7CiAgICAgIGNvbG9yOiAjZTBlMGUwOwogICAgICBwYWRkaW5nOiAyMHB4OwogICAgfQogICAgCiAgICAuY29udGFpbmVyIHsKICAgICAgbWF4LXdpZHRoOiAxNDAwcHg7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQogICAgCiAgICBoZWFkZXIgewogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjYsIDc3LCA1OCwgMC41KTsKICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgfQogICAgCiAgICBoMSB7CiAgICAgIGNvbG9yOiAjNGFkZTgwOwogICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgCiAgICAudGFicyB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGdhcDogMTBweDsKICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgfQogICAgCiAgICAudGFiLWJ1dHRvbiB7CiAgICAgIHBhZGRpbmc6IDEycHggMjRweDsKICAgICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMjIyLCAxMjgsIDAuMik7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkICM0YWRlODA7CiAgICAgIGNvbG9yOiAjNGFkZTgwOwogICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKICAgIH0KICAgIAogICAgLnRhYi1idXR0b246aG92ZXIgewogICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAyMjIsIDEyOCwgMC4zKTsKICAgIH0KICAgIAogICAgLnRhYi1idXR0b24uYWN0aXZlIHsKICAgICAgYmFja2dyb3VuZDogIzRhZGU4MDsKICAgICAgY29sb3I6ICMxYTRkM2E7CiAgICB9CiAgICAKICAgIC50YWItY29udGVudCB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjYsIDc3LCA1OCwgMC4zKTsKICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICBwYWRkaW5nOiAyMHB4OwogICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgfQogICAgCiAgICAudGFiLWNvbnRlbnQuYWN0aXZlIHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CiAgICAKICAgICNuZXR3b3JrLWdyYXBoIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogNzAwcHg7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDc0LCAyMjIsIDEyOCwgMC4zKTsKICAgIH0KICAgIAogICAgI2Nvbmdlc3Rpb24tbWF0cml4IHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogNjAwcHg7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgfQogICAgCiAgICAjZ2VuZXNpcy10ZWFtIHsKICAgICAgcGFkZGluZzogMjBweDsKICAgIH0KICAgIAogICAgLmdlbmVzaXMtc3RhdHMgewogICAgICBkaXNwbGF5OiBncmlkOwogICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDIwMHB4LCAxZnIpKTsKICAgICAgZ2FwOiAxNXB4OwogICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgfQogICAgCiAgICAuc3RhdC1jYXJkIHsKICAgICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMjIyLCAxMjgsIDAuMSk7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzQsIDIyMiwgMTI4LCAwLjMpOwogICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgIHBhZGRpbmc6IDE1cHg7CiAgICB9CiAgICAKICAgIC5zdGF0LXZhbHVlIHsKICAgICAgZm9udC1zaXplOiAzMnB4OwogICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgY29sb3I6ICM0YWRlODA7CiAgICB9CiAgICAKICAgIC5zdGF0LWxhYmVsIHsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBjb2xvcjogI2EwYTBhMDsKICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgfQogICAgCiAgICAubWVtYmVyLWNhcmQgewogICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI2LCA3NywgNTgsIDAuNSk7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzQsIDIyMiwgMTI4LCAwLjMpOwogICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgIHBhZGRpbmc6IDE1cHg7CiAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICB9CiAgICAKICAgIC5tZW1iZXItaGVhZGVyIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgfQogICAgCiAgICAubWVtYmVyLW5hbWUgewogICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICBjb2xvcjogIzRhZGU4MDsKICAgIH0KICAgIAogICAgLm1lbWJlci1hdmFpbGFiaWxpdHkgewogICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAyMjIsIDEyOCwgMC4yKTsKICAgICAgcGFkZGluZzogNXB4IDEycHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgfQogICAgCiAgICAudGVjaC1saXN0IHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICBnYXA6IDhweDsKICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgIH0KICAgIAogICAgLnRlY2gtdGFnIHsKICAgICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMjIyLCAxMjgsIDAuMik7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzQsIDIyMiwgMTI4LCAwLjQpOwogICAgICBwYWRkaW5nOiA0cHggMTBweDsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICBmb250LXNpemU6IDEycHg7CiAgICB9CiAgICAKICAgIC53YXJuaW5nLWJveCB7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCA2OCwgNjgsIDAuMik7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCA2OCwgNjgsIDAuNSk7CiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgcGFkZGluZzogMTVweDsKICAgICAgbWFyZ2luLXRvcDogMjBweDsKICAgIH0KICAgIAogICAgLndhcm5pbmctdGl0bGUgewogICAgICBjb2xvcjogI2ZmNmI2YjsKICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICB9CiAgICAKICAgIC51bmNvdmVyZWQtdGVjaCB7CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCA2OCwgNjgsIDAuMSk7CiAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgI2ZmNmI2YjsKICAgICAgcGFkZGluZzogMTBweDsKICAgICAgbWFyZ2luOiA4cHggMDsKICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgfQogICAgCiAgICAubGVnZW5kIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZ2FwOiAyMHB4OwogICAgICBtYXJnaW46IDIwcHggMDsKICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgfQogICAgCiAgICAubGVnZW5kLWl0ZW0gewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBnYXA6IDhweDsKICAgIH0KICAgIAogICAgLmxlZ2VuZC1jb2xvciB7CiAgICAgIHdpZHRoOiAyMHB4OwogICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIH0KICAgIAogICAgLmxvYWRpbmcgewogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgIGNvbG9yOiAjNGFkZTgwOwogICAgfQogIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CiAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgIDxoZWFkZXI+CiAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgbWFyZ2luLWJvdHRvbTogMTBweDsiPgogICAgICAgIDxhIGhyZWY9Ii8iIHN0eWxlPSJjb2xvcjogIzRhZGU4MDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXNpemU6IDE4cHg7IGZvbnQtd2VpZ2h0OiBib2xkOyI+4oaQIFJldG91ciBhdSBSYWRhcjwvYT4KICAgICAgICA8ZGl2PjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGgxPvCfkaUgw4lxdWlwZSAmIFRlY2hub2xvZ2llczwvaDE+CiAgICAgIDxwPlZpc3VhbGlzYXRpb24gZGVzIGNvbXDDqXRlbmNlcyBldCBpZGVudGlmaWNhdGlvbiBkZSBsJ8OpcXVpcGUgZGUgZ2Vuw6hzZSBNVlA8L3A+CiAgICA8L2hlYWRlcj4KICAgIAogICAgPGRpdiBjbGFzcz0idGFicyI+CiAgICAgIDxidXR0b24gY2xhc3M9InRhYi1idXR0b24gYWN0aXZlIiBvbmNsaWNrPSJzaG93VGFiKCduZXR3b3JrJykiPkdyYXBoZSBSw6lzZWF1PC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9InRhYi1idXR0b24iIG9uY2xpY2s9InNob3dUYWIoJ2Nvbmdlc3Rpb24nKSI+TWF0cmljZSBDb25nZXN0aW9uPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9InRhYi1idXR0b24iIG9uY2xpY2s9InNob3dUYWIoJ2dlbmVzaXMnKSI+w4lxdWlwZSBHZW7DqHNlIE1WUDwvYnV0dG9uPgogICAgPC9kaXY+CiAgICAKICAgIDxkaXYgaWQ9Im5ldHdvcmstdGFiIiBjbGFzcz0idGFiLWNvbnRlbnQgYWN0aXZlIj4KICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kIj4KICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtaXRlbSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY29sb3IiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmY0NDQ0OyI+PC9kaXY+CiAgICAgICAgICA8c3Bhbj5Db3JlIChDcml0aXF1ZSk8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWl0ZW0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNvbG9yIiBzdHlsZT0iYmFja2dyb3VuZDogI2ZmODgwMDsiPjwvZGl2PgogICAgICAgICAgPHNwYW4+U3RyYXRlZ2ljPC9zcGFuPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1pdGVtIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jb2xvciIgc3R5bGU9ImJhY2tncm91bmQ6ICM0NDg4ZmY7Ij48L2Rpdj4KICAgICAgICAgIDxzcGFuPlN1cHBvcnQ8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWl0ZW0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNvbG9yIiBzdHlsZT0iYmFja2dyb3VuZDogIzg4ZmY4ODsiPjwvZGl2PgogICAgICAgICAgPHNwYW4+TWVtYnJlczwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9Im5ldHdvcmstZ3JhcGgiPjwvZGl2PgogICAgPC9kaXY+CiAgICAKICAgIDxkaXYgaWQ9ImNvbmdlc3Rpb24tdGFiIiBjbGFzcz0idGFiLWNvbnRlbnQiPgogICAgICA8aDIgc3R5bGU9Im1hcmdpbi1ib3R0b206IDIwcHg7Ij5NYXRyaWNlIGRlIENvbmdlc3Rpb24gLSBUZWNobm9sb2dpZXMgQ29yZTwvaDI+CiAgICAgIDxkaXYgaWQ9ImNvbmdlc3Rpb24tbWF0cml4Ij48L2Rpdj4KICAgIDwvZGl2PgogICAgCiAgICA8ZGl2IGlkPSJnZW5lc2lzLXRhYiIgY2xhc3M9InRhYi1jb250ZW50Ij4KICAgICAgPGRpdiBpZD0iZ2VuZXNpcy10ZWFtIj4KICAgICAgICA8ZGl2IGNsYXNzPSJsb2FkaW5nIj5DaGFyZ2VtZW50IGRlcyBkb25uw6llcy4uLjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgogIAogIDxzY3JpcHQ+CiAgICBjb25zb2xlLmxvZygn8J+agCBURUFNLkhUTUw6IFNjcmlwdCBjaGFyZ8OpLCBpbml0aWFsaXNhdGlvbi4uLicpOwoKICAgIGxldCBkYXRhID0gbnVsbDsKICAgIGxldCBuZXR3b3JrQ3kgPSBudWxsOwogICAgbGV0IGNvbmdlc3Rpb25DaGFydCA9IG51bGw7CiAgICAKICAgIGNvbnNvbGUubG9nKCfwn5OLIFRFQU0uSFRNTDogRm9uY3Rpb24gbG9hZERhdGEoKSBhcHBlbMOpZScpOwoKICAgIC8vIENoYXJnZXIgbGVzIGRvbm7DqWVzCiAgICBhc3luYyBmdW5jdGlvbiBsb2FkRGF0YSgpIHsKICAgICAgdHJ5IHsKICAgICAgICBjb25zb2xlLmxvZygn8J+UhCBDaGFyZ2VtZW50IGRlcyBkb25uw6llcyDDqXF1aXBlIGRlcHVpcyAvdGVhbS12aXN1YWxpemF0aW9uLWRhdGEuanNvbicpOwogICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJy90ZWFtLXZpc3VhbGl6YXRpb24tZGF0YS5qc29uJyk7CiAgICAgICAgY29uc29sZS5sb2coJ/Cfk6EgUsOpcG9uc2UgcmXDp3VlOicsIHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7CgogICAgICAgIGlmICghcmVzcG9uc2Uub2spIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUCAke3Jlc3BvbnNlLnN0YXR1c306ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTsKICAgICAgICB9CgogICAgICAgIGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7CiAgICAgICAgY29uc29sZS5sb2coJ+KchSBEb25uw6llcyBjaGFyZ8OpZXM6JywgT2JqZWN0LmtleXMoZGF0YSkpOwogICAgICAgIGNvbnNvbGUubG9nKCfwn5OKIE5vbWJyZSBkZSBuxZN1ZHMgcsOpc2VhdTonLCBkYXRhLm5ldHdvcms/Lm5vZGVzPy5sZW5ndGggfHwgMCk7CiAgICAgICAgY29uc29sZS5sb2coJ/Cfk4ogRG9ubsOpZXMgbWF0cmljZSBjb25nZXN0aW9uOicsIGRhdGEuY29uZ2VzdGlvbk1hdHJpeD8ubGVuZ3RoIHx8IDApOwogICAgICAgIGNvbnNvbGUubG9nKCfwn5OKIERvbm7DqWVzIMOpcXVpcGUgZ2Vuw6hzZTonLCBkYXRhLmdlbmVzaXNUZWFtID8gJ3Byw6lzZW50ZXMnIDogJ2Fic2VudGVzJyk7CgogICAgICAgIGluaXRWaXN1YWxpemF0aW9ucygpOwogICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ+KdjCBFcnJldXIgbG9ycyBkdSBjaGFyZ2VtZW50IGRlcyBkb25uw6llczonLCBlcnJvcik7CgogICAgICAgIC8vIEZhbGxiYWNrIDogYWZmaWNoZXIgdW4gbWVzc2FnZSBkJ2luZm9ybWF0aW9uIHNpIGxlcyBkb25uw6llcyBuZSBzZSBjaGFyZ2VudCBwYXMKICAgICAgICBjb25zdCBmYWxsYmFja01lc3NhZ2UgPSBgCiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiAyMHB4OyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMTUyLCAwLCAwLjEpOyBib3JkZXI6IDFweCBzb2xpZCAjZmY5ODAwOyBib3JkZXItcmFkaXVzOiA4cHg7IG1hcmdpbjogMjBweCAwOyI+CiAgICAgICAgICAgIDxoMyBzdHlsZT0iY29sb3I6ICNmZjk4MDA7IG1hcmdpbi10b3A6IDA7Ij7wn5SEIENoYXJnZW1lbnQgZGVzIGRvbm7DqWVzLi4uPC9oMz4KICAgICAgICAgICAgPHA+TGVzIHZpc3VhbGlzYXRpb25zIMOpcXVpcGUgc2UgY2hhcmdlbnQuIFNpIGVsbGVzIG4nYXBwYXJhaXNzZW50IHBhcyA6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPlbDqXJpZmlleiBsYSBjb25zb2xlIGR1IG5hdmlnYXRldXIgKEYxMikgcG91ciBsZXMgZXJyZXVyczwvbGk+CiAgICAgICAgICAgICAgPGxpPkFzc3VyZXotdm91cyBxdWUgPGNvZGU+dGVhbS12aXN1YWxpemF0aW9uLWRhdGEuanNvbjwvY29kZT4gZXN0IGFjY2Vzc2libGU8L2xpPgogICAgICAgICAgICAgIDxsaT5MZSBzY3JpcHQgPGNvZGU+Z2VuZXJhdGUtdGVhbS12aXN1YWxpemF0aW9uLWRhdGEuanM8L2NvZGU+IGRvaXQgYXZvaXIgw6l0w6kgZXjDqWN1dMOpPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPHA+PHN0cm9uZz5FcnJldXIgZMOpdGVjdMOpZSA6PC9zdHJvbmc+ICR7ZXJyb3IubWVzc2FnZX08L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOwoKICAgICAgICAvLyBBZmZpY2hlciBsZSBtZXNzYWdlIGRlIGZhbGxiYWNrIGRhbnMgdG91dGVzIGxlcyBzZWN0aW9ucwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZXR3b3JrLWdyYXBoJykuaW5uZXJIVE1MID0gZmFsbGJhY2tNZXNzYWdlOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25nZXN0aW9uLW1hdHJpeCcpLmlubmVySFRNTCA9IGZhbGxiYWNrTWVzc2FnZTsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2VuZXNpcy10ZWFtJykuaW5uZXJIVE1MID0gZmFsbGJhY2tNZXNzYWdlOwogICAgICB9CiAgICB9CiAgICAKICAgIC8vIEluaXRpYWxpc2VyIGxlcyB2aXN1YWxpc2F0aW9ucwogICAgZnVuY3Rpb24gaW5pdFZpc3VhbGl6YXRpb25zKCkgewogICAgICBjb25zb2xlLmxvZygn8J+OqCBURUFNLkhUTUw6IGluaXRWaXN1YWxpemF0aW9ucygpIGFwcGVsw6llJyk7CiAgICAgIGluaXROZXR3b3JrR3JhcGgoKTsKICAgICAgaW5pdENvbmdlc3Rpb25NYXRyaXgoKTsKICAgICAgaW5pdEdlbmVzaXNUZWFtKCk7CiAgICB9CiAgICAKICAgIC8vIEdyYXBoZSByw6lzZWF1CiAgICBmdW5jdGlvbiBpbml0TmV0d29ya0dyYXBoKCkgewogICAgICBjb25zb2xlLmxvZygn8J+TiiBURUFNLkhUTUw6IGluaXROZXR3b3JrR3JhcGgoKSBhcHBlbMOpZScpOwogICAgICBpZiAoIWRhdGEgfHwgIWRhdGEubmV0d29yaykgewogICAgICAgIGNvbnNvbGUubG9nKCfimqDvuI8gVEVBTS5IVE1MOiBQYXMgZGUgZG9ubsOpZXMgcsOpc2VhdScpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICAKICAgICAgbmV0d29ya0N5ID0gY3l0b3NjYXBlKHsKICAgICAgICBjb250YWluZXI6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZXR3b3JrLWdyYXBoJyksCiAgICAgICAgZWxlbWVudHM6IGRhdGEubmV0d29yaywKICAgICAgICBzdHlsZTogWwogICAgICAgICAgewogICAgICAgICAgICBzZWxlY3RvcjogJ25vZGVbdHlwZT0idGVjaG5vbG9neSJdJywKICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6ICdkYXRhKGNvbG9yKScsCiAgICAgICAgICAgICAgJ2xhYmVsJzogJ2RhdGEobGFiZWwpJywKICAgICAgICAgICAgICAnd2lkdGgnOiBmdW5jdGlvbihlbGUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGNvdmVyYWdlID0gZWxlLmRhdGEoJ2NvdmVyYWdlJykgfHwgMDsKICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heCgzMCwgMzAgKyAoY292ZXJhZ2UgKiA4KSk7CiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAnaGVpZ2h0JzogZnVuY3Rpb24oZWxlKSB7CiAgICAgICAgICAgICAgICBjb25zdCBjb3ZlcmFnZSA9IGVsZS5kYXRhKCdjb3ZlcmFnZScpIHx8IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMzAsIDMwICsgKGNvdmVyYWdlICogOCkpOwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgJ2NvbG9yJzogJyNmZmYnLAogICAgICAgICAgICAgICdmb250LXNpemUnOiAnMTJweCcsCiAgICAgICAgICAgICAgJ3RleHQtb3V0bGluZS13aWR0aCc6IDIsCiAgICAgICAgICAgICAgJ3RleHQtb3V0bGluZS1jb2xvcic6ICcjMDAwJywKICAgICAgICAgICAgICAndGV4dC13cmFwJzogJ3dyYXAnLAogICAgICAgICAgICAgICd0ZXh0LW1heC13aWR0aCc6IDEwMAogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICBzZWxlY3RvcjogJ25vZGVbdHlwZT0ibWVtYmVyIl0nLAogICAgICAgICAgICBzdHlsZTogewogICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyM4OGZmODgnLAogICAgICAgICAgICAgICdsYWJlbCc6ICdkYXRhKGxhYmVsKScsCiAgICAgICAgICAgICAgJ3dpZHRoJzogZnVuY3Rpb24oZWxlKSB7CiAgICAgICAgICAgICAgICBjb25zdCBhdmFpbGFiaWxpdHkgPSBlbGUuZGF0YSgnYXZhaWxhYmlsaXR5JykgfHwgMDsKICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLm1heCgyNSwgMjUgKyAoYXZhaWxhYmlsaXR5IC8gMykpOwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgJ2hlaWdodCc6IGZ1bmN0aW9uKGVsZSkgewogICAgICAgICAgICAgICAgY29uc3QgYXZhaWxhYmlsaXR5ID0gZWxlLmRhdGEoJ2F2YWlsYWJpbGl0eScpIHx8IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMjUsIDI1ICsgKGF2YWlsYWJpbGl0eSAvIDMpKTsKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICdjb2xvcic6ICcjMWE0ZDNhJywKICAgICAgICAgICAgICAnZm9udC1zaXplJzogJzExcHgnLAogICAgICAgICAgICAgICdmb250LXdlaWdodCc6ICdib2xkJywKICAgICAgICAgICAgICAnc2hhcGUnOiAnZWxsaXBzZScKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgc2VsZWN0b3I6ICdlZGdlJywKICAgICAgICAgICAgc3R5bGU6IHsKICAgICAgICAgICAgICAnd2lkdGgnOiBmdW5jdGlvbihlbGUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAxICsgKGVsZS5kYXRhKCd3ZWlnaHQnKSB8fCAwLjUpOwogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgJ2xpbmUtY29sb3InOiAnIzk5OScsCiAgICAgICAgICAgICAgJ29wYWNpdHknOiAwLjYsCiAgICAgICAgICAgICAgJ2N1cnZlLXN0eWxlJzogJ2JlemllcicKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgbGF5b3V0OiB7CiAgICAgICAgICBuYW1lOiAnY29zZS1iaWxrZW50JywKICAgICAgICAgIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogdHJ1ZSwKICAgICAgICAgIGlkZWFsRWRnZUxlbmd0aDogMTAwLAogICAgICAgICAgbm9kZVJlcHVsc2lvbjogNDUwMCwKICAgICAgICAgIG5lc3RpbmdGYWN0b3I6IDAuMSwKICAgICAgICAgIGdyYXZpdHk6IDAuMjUsCiAgICAgICAgICBudW1JdGVyOiAyNTAwLAogICAgICAgICAgdGlsZTogdHJ1ZSwKICAgICAgICAgIGFuaW1hdGU6IHRydWUsCiAgICAgICAgICBhbmltYXRpb25EdXJhdGlvbjogMTAwMAogICAgICAgIH0KICAgICAgfSk7CiAgICAgIAogICAgICAvLyBUb29sdGlwIHN1ciBzdXJ2b2wKICAgICAgbmV0d29ya0N5Lm9uKCdtb3VzZW92ZXInLCAnbm9kZScsIGZ1bmN0aW9uKGV2dCkgewogICAgICAgIGNvbnN0IG5vZGUgPSBldnQudGFyZ2V0OwogICAgICAgIGNvbnN0IGRhdGEgPSBub2RlLmRhdGEoKTsKICAgICAgICBsZXQgdG9vbHRpcCA9ICcnOwogICAgICAgIAogICAgICAgIGlmIChkYXRhLnR5cGUgPT09ICd0ZWNobm9sb2d5JykgewogICAgICAgICAgdG9vbHRpcCA9IGAke2RhdGEubGFiZWx9XG5gICsKICAgICAgICAgICAgICAgICAgICBgUmluZzogJHtkYXRhLnJpbmd9XG5gICsKICAgICAgICAgICAgICAgICAgICBgQ291dmVydHVyZTogJHtkYXRhLmNvdmVyYWdlfSBwZXJzb25uZShzKVxuYCArCiAgICAgICAgICAgICAgICAgICAgYEltcGFjdDogJHtkYXRhLmJ1c2luZXNzSW1wYWN0fVxuYCArCiAgICAgICAgICAgICAgICAgICAgYEdhcDogJHtkYXRhLnNraWxsR2FwfWA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRvb2x0aXAgPSBgJHtkYXRhLmxhYmVsfVxuYCArCiAgICAgICAgICAgICAgICAgICAgYERpc3BvbmliaWxpdMOpOiAke2RhdGEuYXZhaWxhYmlsaXR5fSVcbmAgKwogICAgICAgICAgICAgICAgICAgIGBOaXZlYXU6ICR7ZGF0YS5zZW5pb3JpdHl9XG5gICsKICAgICAgICAgICAgICAgICAgICAoZGF0YS5yb2xlID8gYFLDtGxlOiAke2RhdGEucm9sZX1gIDogJycpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBub2RlLnRvb2x0aXAgPSB0b29sdGlwOwogICAgICB9KTsKICAgIH0KICAgIAogICAgLy8gTWF0cmljZSBkZSBjb25nZXN0aW9uCiAgICBmdW5jdGlvbiBpbml0Q29uZ2VzdGlvbk1hdHJpeCgpIHsKICAgICAgY29uc29sZS5sb2coJ/Cfk4ggVEVBTS5IVE1MOiBpbml0Q29uZ2VzdGlvbk1hdHJpeCgpIGFwcGVsw6llJyk7CiAgICAgIGlmICghZGF0YSB8fCAhZGF0YS5jb25nZXN0aW9uTWF0cml4KSB7CiAgICAgICAgY29uc29sZS5sb2coJ+KaoO+4jyBURUFNLkhUTUw6IFBhcyBkZSBkb25uw6llcyBtYXRyaWNlIGNvbmdlc3Rpb24nKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgCiAgICAgIGNvbnN0IGNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25nZXN0aW9uLW1hdHJpeCcpKTsKICAgICAgY29uZ2VzdGlvbkNoYXJ0ID0gY2hhcnQ7CiAgICAgIAogICAgICBjb25zdCB0ZWNocyA9IGRhdGEuY29uZ2VzdGlvbk1hdHJpeC5tYXAociA9PiByLnRlY2hub2xvZ3kpOwogICAgICBjb25zdCBtZW1iZXJzID0gZGF0YS5jb25nZXN0aW9uTWF0cml4WzBdPy5tZW1iZXJzLm1hcChtID0+IG0uZnVsbE5hbWUgfHwgbS5tZW1iZXIpIHx8IFtdOwogICAgICAKICAgICAgY29uc3QgaGVhdG1hcERhdGEgPSBbXTsKICAgICAgY29uc3Qgc2NhdHRlckRhdGEgPSBbXTsKICAgICAgCiAgICAgIGRhdGEuY29uZ2VzdGlvbk1hdHJpeC5mb3JFYWNoKChyb3csIGkpID0+IHsKICAgICAgICByb3cubWVtYmVycy5mb3JFYWNoKChtZW1iZXIsIGopID0+IHsKICAgICAgICAgIGlmIChtZW1iZXIuaGFzU2tpbGwpIHsKICAgICAgICAgICAgaGVhdG1hcERhdGEucHVzaChbaiwgaSwgbWVtYmVyLmF2YWlsYWJpbGl0eV0pOwogICAgICAgICAgICBzY2F0dGVyRGF0YS5wdXNoKHsKICAgICAgICAgICAgICB2YWx1ZTogW2osIGldLAogICAgICAgICAgICAgIG1lbWJlcjogbWVtYmVyLmZ1bGxOYW1lIHx8IG1lbWJlci5tZW1iZXIsCiAgICAgICAgICAgICAgdGVjaDogcm93LnRlY2hub2xvZ3ksCiAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5OiBtZW1iZXIuYXZhaWxhYmlsaXR5CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9KTsKICAgICAgCiAgICAgIGNvbnN0IG9wdGlvbiA9IHsKICAgICAgICB0aXRsZTogewogICAgICAgICAgdGV4dDogJ0Rpc3BvbmliaWxpdMOpIGRlcyBtZW1icmVzIHN1ciBsZXMgdGVjaG5vbG9naWVzIENvcmUnLAogICAgICAgICAgbGVmdDogJ2NlbnRlcicsCiAgICAgICAgICB0ZXh0U3R5bGU6IHsgY29sb3I6ICcjZTBlMGUwJyB9CiAgICAgICAgfSwKICAgICAgICB0b29sdGlwOiB7CiAgICAgICAgICBmb3JtYXR0ZXI6IGZ1bmN0aW9uKHBhcmFtcykgewogICAgICAgICAgICBpZiAocGFyYW1zLmRhdGEgJiYgcGFyYW1zLmRhdGEubWVtYmVyKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGAke3BhcmFtcy5kYXRhLm1lbWJlcn08YnIvPmAgKwogICAgICAgICAgICAgICAgICAgICBgVGVjaG5vbG9naWU6ICR7cGFyYW1zLmRhdGEudGVjaH08YnIvPmAgKwogICAgICAgICAgICAgICAgICAgICBgRGlzcG9uaWJpbGl0w6k6ICR7cGFyYW1zLmRhdGEuYXZhaWxhYmlsaXR5fSVgOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGdyaWQ6IHsKICAgICAgICAgIGhlaWdodDogJzYwJScsCiAgICAgICAgICB0b3A6ICcxNSUnCiAgICAgICAgfSwKICAgICAgICB4QXhpczogewogICAgICAgICAgdHlwZTogJ2NhdGVnb3J5JywKICAgICAgICAgIGRhdGE6IG1lbWJlcnMsCiAgICAgICAgICBheGlzTGFiZWw6IHsgCiAgICAgICAgICAgIHJvdGF0ZTogNDUsCiAgICAgICAgICAgIGNvbG9yOiAnI2UwZTBlMCcsCiAgICAgICAgICAgIGZvbnRTaXplOiAxMQogICAgICAgICAgfSwKICAgICAgICAgIGF4aXNMaW5lOiB7IGxpbmVTdHlsZTogeyBjb2xvcjogJyM0YWRlODAnIH0gfQogICAgICAgIH0sCiAgICAgICAgeUF4aXM6IHsKICAgICAgICAgIHR5cGU6ICdjYXRlZ29yeScsCiAgICAgICAgICBkYXRhOiB0ZWNocywKICAgICAgICAgIGF4aXNMYWJlbDogeyBjb2xvcjogJyNlMGUwZTAnIH0sCiAgICAgICAgICBheGlzTGluZTogeyBsaW5lU3R5bGU6IHsgY29sb3I6ICcjNGFkZTgwJyB9IH0KICAgICAgICB9LAogICAgICAgIHZpc3VhbE1hcDogewogICAgICAgICAgbWluOiAwLAogICAgICAgICAgbWF4OiAxMDAsCiAgICAgICAgICBjYWxjdWxhYmxlOiB0cnVlLAogICAgICAgICAgb3JpZW50OiAnaG9yaXpvbnRhbCcsCiAgICAgICAgICBsZWZ0OiAnY2VudGVyJywKICAgICAgICAgIGJvdHRvbTogJzUlJywKICAgICAgICAgIGluUmFuZ2U6IHsKICAgICAgICAgICAgY29sb3I6IFsnIzFhNGQzYScsICcjNGFkZTgwJywgJyM4NmVmYWMnXQogICAgICAgICAgfSwKICAgICAgICAgIHRleHRTdHlsZTogeyBjb2xvcjogJyNlMGUwZTAnIH0KICAgICAgICB9LAogICAgICAgIHNlcmllczogW3sKICAgICAgICAgIG5hbWU6ICdEaXNwb25pYmlsaXTDqScsCiAgICAgICAgICB0eXBlOiAnc2NhdHRlcicsCiAgICAgICAgICBkYXRhOiBzY2F0dGVyRGF0YSwKICAgICAgICAgIHN5bWJvbFNpemU6IGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgcmV0dXJuIDE1ICsgKGRhdGFbMl0gfHwgMCkgLyAyOwogICAgICAgICAgfSwKICAgICAgICAgIGl0ZW1TdHlsZTogewogICAgICAgICAgICBjb2xvcjogJyM0YWRlODAnLAogICAgICAgICAgICBib3JkZXJDb2xvcjogJyMxYTRkM2EnLAogICAgICAgICAgICBib3JkZXJXaWR0aDogMgogICAgICAgICAgfSwKICAgICAgICAgIGxhYmVsOiB7CiAgICAgICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgICAgIGZvcm1hdHRlcjogZnVuY3Rpb24ocGFyYW1zKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtcy5kYXRhLmF2YWlsYWJpbGl0eSArICclJzsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY29sb3I6ICcjMWE0ZDNhJywKICAgICAgICAgICAgZm9udFNpemU6IDEwCiAgICAgICAgICB9CiAgICAgICAgfV0KICAgICAgfTsKICAgICAgCiAgICAgIGNoYXJ0LnNldE9wdGlvbihvcHRpb24pOwogICAgICAKICAgICAgLy8gUmVkaW1lbnNpb25uZXIgYXUgcmVzaXplCiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiBjaGFydC5yZXNpemUoKSk7CiAgICB9CiAgICAKICAgIC8vIMOJcXVpcGUgZGUgZ2Vuw6hzZQogICAgZnVuY3Rpb24gaW5pdEdlbmVzaXNUZWFtKCkgewogICAgICBjb25zb2xlLmxvZygn8J+RpSBURUFNLkhUTUw6IGluaXRHZW5lc2lzVGVhbSgpIGFwcGVsw6llJyk7CiAgICAgIGlmICghZGF0YSB8fCAhZGF0YS5nZW5lc2lzVGVhbSkgewogICAgICAgIGNvbnNvbGUubG9nKCfimqDvuI8gVEVBTS5IVE1MOiBQYXMgZGUgZG9ubsOpZXMgw6lxdWlwZSBnZW7DqHNlJyk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIAogICAgICBjb25zdCBnZW5lc2lzID0gZGF0YS5nZW5lc2lzVGVhbTsKICAgICAgY29uc3QgaHRtbCA9IGAKICAgICAgICA8ZGl2IGNsYXNzPSJnZW5lc2lzLXN0YXRzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtY2FyZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtdmFsdWUiPiR7Z2VuZXNpcy50b3RhbE1lbWJlcnN9PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPk1lbWJyZXMgc8OpbGVjdGlvbm7DqXM8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1jYXJkIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC12YWx1ZSI+JHtnZW5lc2lzLnRvdGFsQ2FwYWNpdHl9JTwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWxhYmVsIj5DYXBhY2l0w6kgdG90YWxlPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtY2FyZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtdmFsdWUiPiR7Z2VuZXNpcy5hdmVyYWdlQXZhaWxhYmlsaXR5fSU8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+RGlzcG9uaWJpbGl0w6kgbW95ZW5uZTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWNhcmQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LXZhbHVlIj4ke2dlbmVzaXMuY292ZXJlZFRlY2hub2xvZ2llc30vJHtnZW5lc2lzLnRvdGFsQ29yZVRlY2hub2xvZ2llc308L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3RhdC1sYWJlbCI+VGVjaG5vbG9naWVzIGNvdXZlcnRlczwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPGgyIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAyMHB4OyBjb2xvcjogIzRhZGU4MDsiPk1lbWJyZXMgZGUgbCfDqXF1aXBlIGRlIGdlbsOoc2U8L2gyPgogICAgICAgIAogICAgICAgICR7Z2VuZXNpcy50ZWFtLmxlbmd0aCA+IDAgPyBnZW5lc2lzLnRlYW0ubWFwKG1lbWJlciA9PiBgCiAgICAgICAgICA8ZGl2IGNsYXNzPSJtZW1iZXItY2FyZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lbWJlci1oZWFkZXIiPgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZW1iZXItbmFtZSI+JHttZW1iZXIuZnVsbE5hbWUgfHwgbWVtYmVyLm1lbWJlcn08L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICNhMGEwYTA7IG1hcmdpbi10b3A6IDRweDsiPgogICAgICAgICAgICAgICAgICAke21lbWJlci5yb2xlIHx8ICcnfSDigKIgJHttZW1iZXIuc2VuaW9yaXR5fSDigKIgJHttZW1iZXIuY292ZXJhZ2V9IHRlY2hub2xvZ2llKHMpCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZW1iZXItYXZhaWxhYmlsaXR5Ij4ke21lbWJlci5hdmFpbGFiaWxpdHl9JSBkaXNwbzwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVjaC1saXN0Ij4KICAgICAgICAgICAgICAke21lbWJlci50ZWNobm9sb2dpZXMubWFwKHRlY2ggPT4gYAogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlY2gtdGFnIj4ke3RlY2gudGl0bGV9PC9zcGFuPgogICAgICAgICAgICAgIGApLmpvaW4oJycpfQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIGApLmpvaW4oJycpIDogJzxwIHN0eWxlPSJjb2xvcjogI2EwYTBhMDsiPkF1Y3VuIG1lbWJyZSBuZSByw6lwb25kIGF1eCBjcml0w6hyZXMgKGRpc3BvbmliaWxpdMOpID49IDUwJSkuPC9wPid9CiAgICAgICAgCiAgICAgICAgJHtnZW5lc2lzLnVuY292ZXJlZFRlY2hub2xvZ2llcy5sZW5ndGggPiAwID8gYAogICAgICAgICAgPGRpdiBjbGFzcz0id2FybmluZy1ib3giPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3YXJuaW5nLXRpdGxlIj7imqDvuI8gVGVjaG5vbG9naWVzIENvcmUgbm9uIGNvdXZlcnRlczwvZGl2PgogICAgICAgICAgICA8cCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMTBweDsiPkNlcyB0ZWNobm9sb2dpZXMgY3JpdGlxdWVzIG5lIHNvbnQgcGFzIG1hw650cmlzw6llcyBwYXIgbCfDqXF1aXBlIGRlIGdlbsOoc2UgOjwvcD4KICAgICAgICAgICAgJHtnZW5lc2lzLnVuY292ZXJlZFRlY2hub2xvZ2llcy5tYXAodGVjaCA9PiBgCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idW5jb3ZlcmVkLXRlY2giPgogICAgICAgICAgICAgICAgPHN0cm9uZz4ke3RlY2gudGl0bGV9PC9zdHJvbmc+CiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDEycHg7IGNvbG9yOiAjYTBhMGEwOyBtYXJnaW4tdG9wOiA0cHg7Ij4KICAgICAgICAgICAgICAgICAgSW1wYWN0OiAke3RlY2guYnVzaW5lc3NJbXBhY3R9IOKAoiBHYXA6ICR7dGVjaC5za2lsbEdhcH0g4oCiIENvdXZlcnR1cmUgYWN0dWVsbGU6ICR7dGVjaC50ZWFtQ292ZXJhZ2V9IHBlcnNvbm5lKHMpCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgYCkuam9pbignJyl9CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgIDogJyd9CiAgICAgIGA7CiAgICAgIAogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2VuZXNpcy10ZWFtJykuaW5uZXJIVE1MID0gaHRtbDsKICAgIH0KICAgIAogICAgLy8gTmF2aWdhdGlvbiBwYXIgb25nbGV0cwogICAgZnVuY3Rpb24gc2hvd1RhYih0YWJOYW1lKSB7CiAgICAgIC8vIETDqXNhY3RpdmVyIHRvdXMgbGVzIG9uZ2xldHMKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRhYi1jb250ZW50JykuZm9yRWFjaCh0YWIgPT4gewogICAgICAgIHRhYi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgfSk7CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50YWItYnV0dG9uJykuZm9yRWFjaChidG4gPT4gewogICAgICAgIGJ0bi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgfSk7CiAgICAgIAogICAgICAvLyBBY3RpdmVyIGwnb25nbGV0IHPDqWxlY3Rpb25uw6kKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYCR7dGFiTmFtZX0tdGFiYCkuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICAgIGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgCiAgICAgIC8vIFJlZGltZW5zaW9ubmVyIGxlcyBncmFwaGlxdWVzIHNpIG7DqWNlc3NhaXJlCiAgICAgIGlmICh0YWJOYW1lID09PSAnY29uZ2VzdGlvbicgJiYgY29uZ2VzdGlvbkNoYXJ0KSB7CiAgICAgICAgc2V0VGltZW91dCgoKSA9PiBjb25nZXN0aW9uQ2hhcnQucmVzaXplKCksIDEwMCk7CiAgICAgIH0KICAgICAgaWYgKHRhYk5hbWUgPT09ICduZXR3b3JrJyAmJiBuZXR3b3JrQ3kpIHsKICAgICAgICBzZXRUaW1lb3V0KCgpID0+IG5ldHdvcmtDeS5yZXNpemUoKSwgMTAwKTsKICAgICAgfQogICAgfQogICAgCiAgICAvLyBDaGFyZ2VyIGF1IGTDqW1hcnJhZ2UKICAgIGNvbnNvbGUubG9nKCfwn5qAIFRFQU0uSFRNTDogRMOpbWFycmFnZSAtIGFwcGVsIGxvYWREYXRhKCknKTsKICAgIGxvYWREYXRhKCk7CiAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgoK'; - // Décoder et injecter - try { - var html = atob(htmlBase64); - document.open(); - document.write(html); - document.close(); - console.log('✅ ÉQUIPE: Contenu injecté'); - } catch (e) { - console.error('❌ ÉQUIPE: Erreur injection:', e); + // Créer un iframe plein écran avec data URL + function createTeamIframe() { + // Cacher le contenu Next.js + document.body.style.overflow = 'hidden'; + document.body.innerHTML = ''; + + // Créer l'iframe + var iframe = document.createElement('iframe'); + iframe.style.cssText = 'position:fixed;top:0;left:0;width:100%;height:100%;border:none;z-index:999999;'; + iframe.src = 'data:text/html;base64,' + htmlBase64; + + document.body.appendChild(iframe); + console.log('✅ ÉQUIPE: Iframe créé'); + } + + // Attendre que le DOM soit prêt + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', createTeamIframe); + } else { + createTeamIframe(); } })();