SPB Git forge

spb/api-ka

Public

API-KA — plateforme centrale : collecte quotidienne des 8 services KA, historisation append-only et API publique sur www.api-ka.com

48commits 1branches 0releases
5.9 MBsize
maindefault branch
19 days agolast push
Python 60.9% HTML 21% TypeScript 7.3% JavaScript 5.2% CSS 4.8% Shell 0.8%

Nav mobile v2 : hamburger + panneau plein écran fixed sur les pages web

Standard KA 2026-08-25 : la .topnav wrappait en pleine largeur sous 1023px ;
elle est remplacée par un hamburger 44px + panneau position:fixed inset:0
(z-modal) — menu visible peu importe la position de scroll, verrou de scroll,
fermeture lien/✕/Escape. Liens du panneau générés depuis la topnav de chaque
page (aria-current conservé).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simon-Pierre Boucher committed 1 mo ago (Aug 25, 2026) parent 0e01f13

3 changed files +229 −3

modified src/api/web/contact.html +76 −1
@@ -52,7 +52,7 @@ Page /contact — courriels officiels Groupe KA (ecosystem.json) + compte KA ID.
52 52 .ka-user{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2)}
53 53 .ka-user b{font-family:var(--font-display);font-size:13px;text-transform:none;letter-spacing:-.01em;color:var(--ink)}
54 54 .ka-avatar{width:28px;height:28px;border-radius:50%;border:1.5px solid var(--ink);object-fit:cover}
55 −@media(max-width:1023px){.topnav{order:5;flex-basis:100%;margin-left:0}}
55 +@media(max-width:1023px){.topnav{display:none}.ka-mnav-btn{display:flex}}
56 56
57 57 /* ---- page contact ---- */
58 58 .hero-c{padding:64px 0 56px;border-bottom:1.5px solid var(--ink);background:linear-gradient(rgba(59,91,219,.05),transparent 60%),var(--paper)}
@@ -66,6 +66,42 @@ section{padding:64px 0}
66 66 .account{margin-top:56px;background:var(--surface);border:1.5px solid var(--ink);border-radius:var(--r-card);box-shadow:var(--shadow-off-soft);padding:28px;display:flex;flex-wrap:wrap;align-items:center;gap:20px;justify-content:space-between}
67 67 .account p{margin:0;max-width:56ch;color:var(--ink-2);font-size:14.5px}
68 68 .account b{color:var(--ink)}
69 +
70 +/* ===== KA Nav v2 - menu mobile plein ecran (standard 2026-08-25) ===== */
71 +.ka-mnav-btn{display:none;width:44px;height:44px;margin-left:auto;flex:none;
72 + flex-direction:column;align-items:center;justify-content:center;gap:5px;
73 + background:var(--paper);border:1.5px solid var(--ink);border-radius:999px;
74 + cursor:pointer;padding:0}
75 +.ka-mnav-btn span{display:block;width:18px;height:2px;background:var(--ink);
76 + border-radius:2px;transition:transform .18s ease,opacity .14s ease}
77 +.ka-mnav-btn[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
78 +.ka-mnav-btn[aria-expanded="true"] span:nth-child(2){opacity:0}
79 +.ka-mnav-btn[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
80 +.ka-mnav{position:fixed;inset:0;z-index:var(--z-modal,900);background:var(--paper);
81 + display:none;flex-direction:column;overflow-y:auto;overscroll-behavior:contain}
82 +.ka-mnav.open{display:flex;animation:ka-mnav-in .16s ease}
83 +@keyframes ka-mnav-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
84 +.ka-mnav-top{display:flex;align-items:center;justify-content:space-between;flex:none;
85 + min-height:64px;padding:0 18px;border-bottom:2px solid var(--ink);background:var(--paper)}
86 +.ka-mnav-close{width:44px;height:44px;flex:none;display:flex;align-items:center;
87 + justify-content:center;border:1.5px solid var(--ink);border-radius:999px;
88 + background:var(--ink);color:var(--paper);font-size:17px;font-weight:700;
89 + cursor:pointer;padding:0;line-height:1}
90 +.ka-mnav-links{display:flex;flex-direction:column;justify-content:center;flex:1;
91 + padding:28px 24px;counter-reset:mnav}
92 +.ka-mnav-links a{display:flex;align-items:baseline;gap:14px;padding:16px 0;
93 + border-bottom:1.5px dashed rgba(20,24,20,.18);color:var(--ink);text-decoration:none}
94 +.ka-mnav-links a:last-child{border-bottom:0}
95 +.ka-mnav-links a::before{counter-increment:mnav;content:"0" counter(mnav);
96 + font-family:var(--font-mono,ui-monospace,monospace);font-size:12px;font-weight:700;
97 + color:var(--accent-deep,var(--ink-3))}
98 +.ka-mnav-links a b{font-family:var(--font-display,system-ui);font-weight:700;
99 + font-size:25px;line-height:1;letter-spacing:-.03em;text-transform:uppercase}
100 +.ka-mnav-links a[aria-current] b{background:var(--ink);color:var(--paper);
101 + border-radius:6px;padding:4px 10px 6px}
102 +.ka-mnav-foot{flex:none;border-top:2px solid var(--ink);padding:16px 24px;
103 + padding-bottom:max(20px,env(safe-area-inset-bottom))}
104 +html.ka-menu-locked,html.ka-menu-locked body{overflow:hidden}
69 105 </style>
70 106 <link rel="canonical" href="https://www.api-ka.com/contact">
71 107 <link rel="alternate" hreflang="fr-ca" href="https://www.api-ka.com/contact">
@@ -88,9 +124,34 @@ section{padding:64px 0}
88 124 <li><a href="/docs">Swagger</a></li>
89 125 <li><a href="/contact">Contact</a></li>
90 126 </ul>
127 + <button id="ka-mnav-btn" class="ka-mnav-btn" aria-label="Ouvrir le menu"
128 + aria-expanded="false" aria-controls="ka-mnav">
129 + <span></span><span></span><span></span>
130 + </button>
91 131 <div id="ka-auth"></div>
92 132 </div></div>
93 133
134 +<!-- KA Nav v2 : panneau mobile plein ecran (fixed inset:0) -->
135 +<div id="ka-mnav" class="ka-mnav" role="dialog" aria-modal="true" aria-label="Menu">
136 + <div class="ka-mnav-top">
137 + <a class="brand" href="/" aria-label="API-Ka — accueil">API<span class="ka">·Ka</span></a>
138 + <button class="ka-mnav-close" data-ka-mnav-close aria-label="Fermer le menu">✕</button>
139 + </div>
140 + <nav class="ka-mnav-links">
141 + <a href="/#services"><b>Services</b></a>
142 + <a href="/#endpoints"><b>Endpoints</b></a>
143 + <a href="/#playground"><b>Playground</b></a>
144 + <a href="/stats"><b>Stats</b></a>
145 + <a href="/docs"><b>Swagger</b></a>
146 + <a href="/contact"><b>Contact</b></a>
147 + </nav>
148 + <div class="ka-mnav-foot">
149 + <a class="gk-badge" href="https://www.groupe-ka.com" target="_blank" rel="noopener noreferrer"
150 + aria-label="Un service Groupe KA — visiter le portail de l'écosystème">
151 + Un service <b>Groupe<span class="ka">KA</span></b></a>
152 + </div>
153 +</div>
154 +
94 155 <header class="hero-c"><div class="container">
95 156 <span class="kicker">Contact · Groupe KA</span>
96 157 <h1>Nous <span class="hl">joindre</span></h1>
@@ -117,5 +178,19 @@ section{padding:64px 0}
117 178 <script src="/ka/ka-shell.js" defer></script>
118 179 <script>window.KA_AGENT={site:"api-ka"}</script>
119 180 <script src="/ka-agent.js" defer></script>
181 +<script>
182 +/* KA Nav v2 : ouverture/fermeture du panneau mobile plein ecran (2026-08-25) */
183 +(function(){
184 + var btn=document.getElementById("ka-mnav-btn"),panel=document.getElementById("ka-mnav");
185 + if(!btn||!panel)return;
186 + function set(o){panel.classList.toggle("open",o);
187 + btn.setAttribute("aria-expanded",o?"true":"false");
188 + document.documentElement.classList.toggle("ka-menu-locked",o);}
189 + btn.addEventListener("click",function(){set(!panel.classList.contains("open"))});
190 + panel.addEventListener("click",function(e){
191 + if(e.target.closest("a")||e.target.closest("[data-ka-mnav-close]"))set(false)});
192 + document.addEventListener("keydown",function(e){if(e.key==="Escape")set(false)});
193 +})();
194 +</script>
120 195 </body>
121 196 </html>
modified src/api/web/index.html +77 −1
@@ -60,7 +60,7 @@ html{scroll-padding-top:80px}
60 60 .pulse.ok{background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);animation:pulse 2.4s ease infinite}
61 61 .pulse.err{background:var(--danger);box-shadow:0 0 0 4px var(--danger-soft)}
62 62 @keyframes pulse{0%,100%{box-shadow:0 0 0 4px var(--accent-soft)}50%{box-shadow:0 0 0 7px rgba(59,91,219,.22)}}
63 −@media(max-width:1023px){.topnav{order:5;flex-basis:100%;margin-left:0}}
63 +@media(max-width:1023px){.topnav{display:none}.ka-mnav-btn{display:flex}}
64 64 @media(max-width:767px){.live-chip{display:none}}
65 65
66 66 /* ================= hero ================= */
@@ -164,6 +164,42 @@ pre{margin:0;background:var(--ink);color:var(--paper);padding:16px 18px;overflow
164 164 .reveal{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}
165 165 .reveal.in{opacity:1;transform:none}
166 166 @media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}.hero-tile{transform:none}.pulse.ok{animation:none}}
167 +
168 +/* ===== KA Nav v2 - menu mobile plein ecran (standard 2026-08-25) ===== */
169 +.ka-mnav-btn{display:none;width:44px;height:44px;margin-left:auto;flex:none;
170 + flex-direction:column;align-items:center;justify-content:center;gap:5px;
171 + background:var(--paper);border:1.5px solid var(--ink);border-radius:999px;
172 + cursor:pointer;padding:0}
173 +.ka-mnav-btn span{display:block;width:18px;height:2px;background:var(--ink);
174 + border-radius:2px;transition:transform .18s ease,opacity .14s ease}
175 +.ka-mnav-btn[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
176 +.ka-mnav-btn[aria-expanded="true"] span:nth-child(2){opacity:0}
177 +.ka-mnav-btn[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
178 +.ka-mnav{position:fixed;inset:0;z-index:var(--z-modal,900);background:var(--paper);
179 + display:none;flex-direction:column;overflow-y:auto;overscroll-behavior:contain}
180 +.ka-mnav.open{display:flex;animation:ka-mnav-in .16s ease}
181 +@keyframes ka-mnav-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
182 +.ka-mnav-top{display:flex;align-items:center;justify-content:space-between;flex:none;
183 + min-height:64px;padding:0 18px;border-bottom:2px solid var(--ink);background:var(--paper)}
184 +.ka-mnav-close{width:44px;height:44px;flex:none;display:flex;align-items:center;
185 + justify-content:center;border:1.5px solid var(--ink);border-radius:999px;
186 + background:var(--ink);color:var(--paper);font-size:17px;font-weight:700;
187 + cursor:pointer;padding:0;line-height:1}
188 +.ka-mnav-links{display:flex;flex-direction:column;justify-content:center;flex:1;
189 + padding:28px 24px;counter-reset:mnav}
190 +.ka-mnav-links a{display:flex;align-items:baseline;gap:14px;padding:16px 0;
191 + border-bottom:1.5px dashed rgba(20,24,20,.18);color:var(--ink);text-decoration:none}
192 +.ka-mnav-links a:last-child{border-bottom:0}
193 +.ka-mnav-links a::before{counter-increment:mnav;content:"0" counter(mnav);
194 + font-family:var(--font-mono,ui-monospace,monospace);font-size:12px;font-weight:700;
195 + color:var(--accent-deep,var(--ink-3))}
196 +.ka-mnav-links a b{font-family:var(--font-display,system-ui);font-weight:700;
197 + font-size:25px;line-height:1;letter-spacing:-.03em;text-transform:uppercase}
198 +.ka-mnav-links a[aria-current] b{background:var(--ink);color:var(--paper);
199 + border-radius:6px;padding:4px 10px 6px}
200 +.ka-mnav-foot{flex:none;border-top:2px solid var(--ink);padding:16px 24px;
201 + padding-bottom:max(20px,env(safe-area-inset-bottom))}
202 +html.ka-menu-locked,html.ka-menu-locked body{overflow:hidden}
167 203 </style>
168 204 <link rel="canonical" href="https://www.api-ka.com/">
169 205 <link rel="alternate" hreflang="fr-ca" href="https://www.api-ka.com/">
@@ -189,12 +225,38 @@ pre{margin:0;background:var(--ink);color:var(--paper);padding:16px 18px;overflow
189 225 <li><a href="/docs">Swagger</a></li>
190 226 <li><a href="/contact">Contact</a></li>
191 227 </ul>
228 + <button id="ka-mnav-btn" class="ka-mnav-btn" aria-label="Ouvrir le menu"
229 + aria-expanded="false" aria-controls="ka-mnav">
230 + <span></span><span></span><span></span>
231 + </button>
192 232 <div class="topbar-tools">
193 233 <span class="live-chip"><span class="pulse" id="live-dot"></span><span id="live-txt">vérification…</span></span>
194 234 <div id="ka-auth"></div>
195 235 </div>
196 236 </div></div>
197 237
238 +<!-- KA Nav v2 : panneau mobile plein ecran (fixed inset:0) -->
239 +<div id="ka-mnav" class="ka-mnav" role="dialog" aria-modal="true" aria-label="Menu">
240 + <div class="ka-mnav-top">
241 + <a class="brand" href="/" aria-label="API-Ka — accueil">API<span class="ka">·Ka</span></a>
242 + <button class="ka-mnav-close" data-ka-mnav-close aria-label="Fermer le menu">✕</button>
243 + </div>
244 + <nav class="ka-mnav-links">
245 + <a href="#services"><b>Services</b></a>
246 + <a href="#endpoints"><b>Endpoints</b></a>
247 + <a href="#playground"><b>Playground</b></a>
248 + <a href="#conventions"><b>Conventions</b></a>
249 + <a href="/stats"><b>Stats</b></a>
250 + <a href="/docs"><b>Swagger</b></a>
251 + <a href="/contact"><b>Contact</b></a>
252 + </nav>
253 + <div class="ka-mnav-foot">
254 + <a class="gk-badge" href="https://www.groupe-ka.com" target="_blank" rel="noopener noreferrer"
255 + aria-label="Un service Groupe KA — visiter le portail de l'écosystème">
256 + Un service <b>Groupe<span class="ka">KA</span></b></a>
257 + </div>
258 +</div>
259 +
198 260 <header class="hero"><div class="container"><div class="hero-grid">
199 261 <div>
200 262 <span class="kicker">Plateforme centrale · Node m3u96b</span>
@@ -601,5 +663,19 @@ observeReveals();
601 663 </script>
602 664 <script>window.KA_AGENT={site:"api-ka"}</script>
603 665 <script src="/ka-agent.js" defer></script>
666 +<script>
667 +/* KA Nav v2 : ouverture/fermeture du panneau mobile plein ecran (2026-08-25) */
668 +(function(){
669 + var btn=document.getElementById("ka-mnav-btn"),panel=document.getElementById("ka-mnav");
670 + if(!btn||!panel)return;
671 + function set(o){panel.classList.toggle("open",o);
672 + btn.setAttribute("aria-expanded",o?"true":"false");
673 + document.documentElement.classList.toggle("ka-menu-locked",o);}
674 + btn.addEventListener("click",function(){set(!panel.classList.contains("open"))});
675 + panel.addEventListener("click",function(e){
676 + if(e.target.closest("a")||e.target.closest("[data-ka-mnav-close]"))set(false)});
677 + document.addEventListener("keydown",function(e){if(e.key==="Escape")set(false)});
678 +})();
679 +</script>
604 680 </body>
605 681 </html>
modified src/api/web/stats.html +76 −1
@@ -58,7 +58,7 @@ Données : GET /api/stats/dashboard — rien d'inventé.
58 58 .ka-user{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2)}
59 59 .ka-user b{font-family:var(--font-display);font-size:13px;text-transform:none;letter-spacing:-.01em;color:var(--ink)}
60 60 .ka-avatar{width:28px;height:28px;border-radius:50%;border:1.5px solid var(--ink);object-fit:cover}
61 −@media(max-width:1023px){.topnav{order:5;flex-basis:100%;margin-left:0}}
61 +@media(max-width:1023px){.topnav{display:none}.ka-mnav-btn{display:flex}}
62 62
63 63 /* ---- entête de page ---- */
64 64 .hero-s{padding:52px 0 40px;border-bottom:1.5px solid var(--ink);background:linear-gradient(rgba(59,91,219,.05),transparent 60%),var(--paper)}
@@ -211,6 +211,42 @@ table.dt tbody tr:nth-child(even){background:var(--surface-2)}
211 211 .stb-empty{border:1px dashed var(--line);border-radius:8px;padding:16px;color:var(--ink-3);
212 212 font-size:13px;text-align:center}
213 213 .hidden{display:none!important}
214 +
215 +/* ===== KA Nav v2 - menu mobile plein ecran (standard 2026-08-25) ===== */
216 +.ka-mnav-btn{display:none;width:44px;height:44px;margin-left:auto;flex:none;
217 + flex-direction:column;align-items:center;justify-content:center;gap:5px;
218 + background:var(--paper);border:1.5px solid var(--ink);border-radius:999px;
219 + cursor:pointer;padding:0}
220 +.ka-mnav-btn span{display:block;width:18px;height:2px;background:var(--ink);
221 + border-radius:2px;transition:transform .18s ease,opacity .14s ease}
222 +.ka-mnav-btn[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
223 +.ka-mnav-btn[aria-expanded="true"] span:nth-child(2){opacity:0}
224 +.ka-mnav-btn[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
225 +.ka-mnav{position:fixed;inset:0;z-index:var(--z-modal,900);background:var(--paper);
226 + display:none;flex-direction:column;overflow-y:auto;overscroll-behavior:contain}
227 +.ka-mnav.open{display:flex;animation:ka-mnav-in .16s ease}
228 +@keyframes ka-mnav-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
229 +.ka-mnav-top{display:flex;align-items:center;justify-content:space-between;flex:none;
230 + min-height:64px;padding:0 18px;border-bottom:2px solid var(--ink);background:var(--paper)}
231 +.ka-mnav-close{width:44px;height:44px;flex:none;display:flex;align-items:center;
232 + justify-content:center;border:1.5px solid var(--ink);border-radius:999px;
233 + background:var(--ink);color:var(--paper);font-size:17px;font-weight:700;
234 + cursor:pointer;padding:0;line-height:1}
235 +.ka-mnav-links{display:flex;flex-direction:column;justify-content:center;flex:1;
236 + padding:28px 24px;counter-reset:mnav}
237 +.ka-mnav-links a{display:flex;align-items:baseline;gap:14px;padding:16px 0;
238 + border-bottom:1.5px dashed rgba(20,24,20,.18);color:var(--ink);text-decoration:none}
239 +.ka-mnav-links a:last-child{border-bottom:0}
240 +.ka-mnav-links a::before{counter-increment:mnav;content:"0" counter(mnav);
241 + font-family:var(--font-mono,ui-monospace,monospace);font-size:12px;font-weight:700;
242 + color:var(--accent-deep,var(--ink-3))}
243 +.ka-mnav-links a b{font-family:var(--font-display,system-ui);font-weight:700;
244 + font-size:25px;line-height:1;letter-spacing:-.03em;text-transform:uppercase}
245 +.ka-mnav-links a[aria-current] b{background:var(--ink);color:var(--paper);
246 + border-radius:6px;padding:4px 10px 6px}
247 +.ka-mnav-foot{flex:none;border-top:2px solid var(--ink);padding:16px 24px;
248 + padding-bottom:max(20px,env(safe-area-inset-bottom))}
249 +html.ka-menu-locked,html.ka-menu-locked body{overflow:hidden}
214 250 </style>
215 251 <link rel="canonical" href="https://www.api-ka.com/stats">
216 252 <link rel="alternate" hreflang="fr-ca" href="https://www.api-ka.com/stats">
@@ -233,9 +269,34 @@ table.dt tbody tr:nth-child(even){background:var(--surface-2)}
233 269 <li><a href="/docs">Swagger</a></li>
234 270 <li><a href="/contact">Contact</a></li>
235 271 </ul>
272 + <button id="ka-mnav-btn" class="ka-mnav-btn" aria-label="Ouvrir le menu"
273 + aria-expanded="false" aria-controls="ka-mnav">
274 + <span></span><span></span><span></span>
275 + </button>
236 276 <div id="ka-auth"></div>
237 277 </div></div>
238 278
279 +<!-- KA Nav v2 : panneau mobile plein ecran (fixed inset:0) -->
280 +<div id="ka-mnav" class="ka-mnav" role="dialog" aria-modal="true" aria-label="Menu">
281 + <div class="ka-mnav-top">
282 + <a class="brand" href="/" aria-label="API-Ka — accueil">API<span class="ka">·Ka</span></a>
283 + <button class="ka-mnav-close" data-ka-mnav-close aria-label="Fermer le menu">✕</button>
284 + </div>
285 + <nav class="ka-mnav-links">
286 + <a href="/#services"><b>Services</b></a>
287 + <a href="/#endpoints"><b>Endpoints</b></a>
288 + <a href="/#playground"><b>Playground</b></a>
289 + <a href="/stats" aria-current="page"><b>Stats</b></a>
290 + <a href="/docs"><b>Swagger</b></a>
291 + <a href="/contact"><b>Contact</b></a>
292 + </nav>
293 + <div class="ka-mnav-foot">
294 + <a class="gk-badge" href="https://www.groupe-ka.com" target="_blank" rel="noopener noreferrer"
295 + aria-label="Un service Groupe KA — visiter le portail de l'écosystème">
296 + Un service <b>Groupe<span class="ka">KA</span></b></a>
297 + </div>
298 +</div>
299 +
239 300 <header class="hero-s"><div class="container">
240 301 <span class="kicker">Statistiques · Plateforme</span>
241 302 <h1>Les <span class="hl">stats</span> de la plateforme</h1>
@@ -1148,5 +1209,19 @@ $("st-custom-btn").onclick = () => { SB.cat = null; SB.err = ""; sbOpen(); };
1148 1209 </script>
1149 1210 <script>window.KA_AGENT={site:"api-ka"}</script>
1150 1211 <script src="/ka-agent.js" defer></script>
1212 +<script>
1213 +/* KA Nav v2 : ouverture/fermeture du panneau mobile plein ecran (2026-08-25) */
1214 +(function(){
1215 + var btn=document.getElementById("ka-mnav-btn"),panel=document.getElementById("ka-mnav");
1216 + if(!btn||!panel)return;
1217 + function set(o){panel.classList.toggle("open",o);
1218 + btn.setAttribute("aria-expanded",o?"true":"false");
1219 + document.documentElement.classList.toggle("ka-menu-locked",o);}
1220 + btn.addEventListener("click",function(){set(!panel.classList.contains("open"))});
1221 + panel.addEventListener("click",function(e){
1222 + if(e.target.closest("a")||e.target.closest("[data-ka-mnav-close]"))set(false)});
1223 + document.addEventListener("keydown",function(e){if(e.key==="Escape")set(false)});
1224 +})();
1225 +</script>
1151 1226 </body>
1152 1227 </html>
1153 1228