CoolFace
Apppublic

fmatituy/selectospromanager

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
layout.cpython-313.pyc362 linesDownload Raw Back to __pycache__
1�

2��i������SSKrSSKrSSKJr SSKJrJr SSKJrJ	r	 SSK3Jr SSKJ
r
 SSKJr SS	KJr S4rSSjr"SS
5rg!\ar\"S\35 SrSrCN2SrCff=f!\a SrN=f=f)�N)�ui)�get_current_user�logout)�get_navigation_schema�5is_manager)�get_help_for_route)�STATIC_PATH)�render_floating_chatz/DEBUG CHAT: ImportError loading floating_chat: )�init_sos_systemc�0�[R"S5 g)Nu�6        <meta name="apple-mobile-web-app-capable" content="yes">7        <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">8        <meta name="theme-color" content="#1e40af">9        <link rel="manifest" href="/manifest.json">10        <script>11            if ('serviceWorker' in navigator) {12                window.addEventListener('load', function() {13                    navigator.serviceWorker.register('/static/service-worker.js', { scope: '/' }).then(function(registration) {14                        console.log('ServiceWorker registration successful with scope: ', registration.scope);15                    }, function(err) {16                        console.log('ServiceWorker registration failed: ', err);17                    });18                });19            }20 21            // Interceptor Nativo PWA (Google Chrome / Edge)22            let deferredPrompt;23            window.addEventListener('beforeinstallprompt', (e) => {24                // Previene que aparezca la mini-barra de instalación por defecto del navegador en la parte inferior25                e.preventDefault();26                deferredPrompt = e;27                28                // Mostrar solo en móviles, si no es standalone y si no se ha mostrado en esta sesión29                const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);30                const isStandalone = window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone;31                32                if (isMobile && !isStandalone && !sessionStorage.getItem('pwaPromptShown')) {33                    sessionStorage.setItem('pwaPromptShown', '1');34                    35                    const style = document.createElement('style');36                    style.textContent = `37                        #apk-prompt-overlay { display: none; position: fixed; inset: 0; z-index: 999999; background: rgba(15,23,42,0.85); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); align-items: center; justify-content: center; padding: 1.5rem; opacity: 0; transition: opacity 0.3s ease; }38                        #apk-prompt-overlay.show { opacity: 1; display: flex; }39                        .apk-card { background: white; border-radius: 2rem; padding: 2.5rem 2rem; text-align: center; width: 100%; max-width: 340px; box-shadow: 0 25px 50px -12px rgba(0,0,0,0.5); transform: translateY(20px); transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); }40                        #apk-prompt-overlay.show .apk-card { transform: translateY(0); }41                        .apk-card h2 { margin: 0 0 0.5rem; font-size: 1.5rem; font-weight: 900; color: #1e293b; letter-spacing: -0.5px; font-family: 'Inter', sans-serif; }42                        .apk-card p { margin: 0 0 1.5rem; font-size: 0.875rem; color: #64748b; line-height: 1.5; font-family: 'Inter', sans-serif; }43                        .apk-btn { display: block; width: 100%; background: #1e40af; color: white; padding: 1rem; border-radius: 1rem; text-decoration: none; font-weight: 800; font-size: 0.875rem; box-shadow: 0 10px 15px -3px rgba(30,64,175,0.4); margin-bottom: 0.75rem; font-family: 'Inter', sans-serif; cursor: pointer; border: none; transition: background 0.2s; }44                        .apk-btn:active { background: #1e3a8a; }45                        .apk-btn-flat { display: block; width: 100%; background: transparent; border: none; color: #94a3b8; padding: 0.75rem; border-radius: 1rem; font-weight: 800; font-size: 0.875rem; cursor: pointer; font-family: 'Inter', sans-serif; transition: color 0.2s; }46                        .apk-btn-flat:active { color: #475569; }47                    `;48                    document.head.appendChild(style);49                    50                    const overlay = document.createElement('div');51                    overlay.id = 'apk-prompt-overlay';52                    overlay.innerHTML = `53                        <div class="apk-card">54                            <div style="background:#eff6ff; width:72px; height:72px; border-radius:1.5rem; display:flex; align-items:center; justify-content:center; margin: 0 auto 1.5rem; color:#1e40af;">55                                <svg viewBox="0 0 24 24" width="36" height="36" stroke="currentColor" stroke-width="2.5" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>56                            </div>57                            <h2>App Móvil Nativa</h2>58                            <p>Instala la versión nativa (PWA) de Selectos ProManager. Más rápida, segura y adaptada a tu dispositivo.</p>59                            <button id="pwa-install-btn" class="apk-btn">INSTALAR AHORA</button>60                            <button class="apk-btn-flat" onclick="document.getElementById('apk-prompt-overlay').classList.remove('show'); setTimeout(() => document.getElementById('apk-prompt-overlay').style.display='none', 300)">Continuar en la Web</button>61                        </div>62                    `;63                    document.body.appendChild(overlay);64                    65                    setTimeout(() => {66                        overlay.style.display = 'flex';67                        overlay.offsetHeight; 68                        overlay.classList.add('show');69                    }, 500); 70 71                    document.getElementById('pwa-install-btn').addEventListener('click', async () => {72                        // Ocultar modal primero73                        overlay.classList.remove('show');74                        setTimeout(() => overlay.style.display='none', 300);75                        76                        // Disparar instalador real de Google / SO77                        if (deferredPrompt) {78                            deferredPrompt.prompt();79                            const { outcome } = await deferredPrompt.userChoice;80                            console.log('Resultado de instalación:', outcome);81                            deferredPrompt = null;82                        }83                    });84                }85            });86        </script>87    )r�
add_head_html���TC:\Users\faust\.gemini\antigravity\scratch\selectos_promanager\src\modules\layout.py�init_pwa_headersrs�����R�R	rc��[U5$�N)�SelectosLayout)�titles r�layout_mainrls
���%� � rc�0�\rSrSrSSjrSrSrSrSrg)	r�pc�H�XlSUlSUlSUlSUlgr)r�left_drawer�offline_indicator�btn_apk�content)�selfrs  r�__init__�SelectosLayout.__init__qs%���88����!%��������rc89�d�[R"SSSSSSSS9 [R"S	5 g)90Nz#0f172az#334155z#3b82f6z#10b981z#ef4444z#0ea5e9z#f59e0b)�primary�	secondary�accent�positive�negative�info�warninguV
91            <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">92            <style>93                /* Bloqueo de Zoom en Navegadores y Móviles */94                html, body {95                    touch-action: manipulation;96                    -webkit-text-size-adjust: 100%;97                    -moz-text-size-adjust: 100%;98                    -ms-text-size-adjust: 100%;99                }100                .hide-scrollbar::-webkit-scrollbar {101                    display: none;102                }103                .hide-scrollbar {104                    -ms-overflow-style: none;  /* IE and Edge */105                    scrollbar-width: none;  /* Firefox */106                }107                /* Scrollbar Minimalista y Transparente */108                ::-webkit-scrollbar {109                    width: 6px;110                    height: 6px;111                }112                ::-webkit-scrollbar-track {113                    background: transparent;114                }115                ::-webkit-scrollbar-thumb {116                    background: rgba(148, 163, 184, 0.1); /* Slate-400 con máxima transparencia */117                    border-radius: 10px;118                }119                ::-webkit-scrollbar-thumb:hover {120                    background: rgba(30, 64, 175, 0.15); /* Primary con un toque muy sutil al pasar el mouse */121                }122                /* Para Firefox */123                * {124                    scrollbar-width: thin;125                    scrollbar-color: rgba(148, 163, 184, 0.1) transparent;126                }127                /* Soporte para modo MINI del Drawer en elementos personalizados */128                .q-drawer--mini .q-mini-drawer-hide { display: none !important; }129                .q-mini-drawer-only { display: none !important; }130                .q-drawer--mini .q-mini-drawer-only { 131                    display: block !important; 132                }133                /* Reset de padding para el contenedor de navegación en modo MINI */134                .q-drawer--mini .drawer-nav-container { 135                    padding-left: 0 !important; 136                    padding-right: 0 !important; 137                }138                .q-drawer--mini .q-mini-drawer-justify-center { 139                    justify-content: center !important; 140                    padding-left: 0 !important;141                    padding-right: 0 !important;142                    gap: 0 !important;143                }144                /* Eliminar rastro de "frame" en modo MINI */145                .q-drawer--mini { 146                    background: transparent !important; 147                    border-right: none !important; 148                    box-shadow: none !important;149                }150                .q-drawer--mini .q-scrollarea {151                    background: transparent !important;152                }153 154                /* ESTILOS DE TABLAS MODERNAS (NAVY SLATE) */155                .modern-table thead tr { height: 72px !important; background-color: #f8fafc; }156                .modern-table th { 157                    font-size: 11px !important; 158                    font-weight: 900 !important; 159                    letter-spacing: 0.15em !important; 160                    color: #1e3a8a !important;161                    text-transform: uppercase;162                }163                .modern-table td { padding: 16px 24px !important; }164            </style>165        )r�colorsr
�rs r�166pwa_colors�SelectosLayout.pwa_colorsxs>��167�	�	�)�y��U^�ir�zC�MV�	W�168���K�K	
rc�H'^^3^4^5^6^7^8^9^:^;^<^=^>^?^@^A�TR5 [RRn[	USS5nU(d6[5 [R"S5 [R"S5 [5nURS5mAURSS5m?URS	S5nT?S169;m<[T?5m;TA(a2UA4Sjn[R"SU5 U(d[S
U35 SUl
[R"[R R#[$SS5SS9 [RRR&R m8T8(aT8S:Xa8[RRR(R*R m8[-T85S:�aT8R/S5(aT8SSm8[RRR(R0RSS5R35m@[5U@4SjS55n[R6"5R9S5 [R:"5R9S5 T<(aT;(a*U4Sjn[R<"USS9R?S5n	[R@"5R9S5RCS S!5 [R:"5R9S"5 [RD"S#5R9S$5 [RF"S%S&S'S(9R?S)5 [RD"S*5R9S+5 SSS5 [RD"S,5R9S-5 SSS5 SSS5 T8RIS.5(Ga
T<(GdS/S0S1S2.S3S4S5S2.S6S7S8S2.S9S:S;S2.S<S=S>S2./n170[R:"5R9S?5 U171H�nT8US@:H=(d T8RIUS@SA-5n[R:"5R9SBU(aSCOSD35RCS U4SEj5 [RF"USFSGS'S(9 [RD"USH5R9SI5 SSS5 M� SSS5 T8RIS.5=(a T<(+(+n
[R:"5R9U
(aSJOSK5 T8RKS5RMS5n[R:"5R9SL5 [RF"SMSNS'S(9R9SO5 [OU5HwunnU(dM[RF"SPSGS'S(9R9SQ5 [RD"URQSRSS5RS55R9SI5 My SSS5 [R:"5R9ST5RUSU5Tl+[RF"SVSWSNSX9 [RD"SY5R9SZ5 SSS5 [RX"S[TRVRZS\35 SSS5 [R:"5R9S]5 []T85m:T:(a�U:4S^jn[R<"S_US`9R?S5R9Sa5 [R^"5R9Sb5 [RD"ScT:Sd35 SSS5 [R<"SeSf[`S`9R?Sg5R9Sh5 SSS5 SSS5 SinT<(aT;(dUSj-
nT<(+=(d T;n[Rb"USk9R9SlT<(a	T;(dSmOS-5R?U5Tl1[Rd"5R9Sn5R?So5 [R@"5R9Sp5 Sq/4U8U?4SrjjnSsStK3J4n /m=U=4Sujm>USq/S/4U8U;U<U=U>U?4Svjj5nS�U84Swjjn[kT?5nSnUGH�nURSx5nU(a�UU:wa�[R:"5R9Sy5 [RD"URm55R9Sz5 [Rn"5R9S{5 SSS5 UnUS|S}:Xa8US~nUS:waUR/S5(aUSSnU"USUSFUS�/S�9 M�US|S�:XdM�US�Vs/sHnUSPM172 nnUVs/sH&nUS:waUR/S5(aUSSOUPM( nnU"USUSFUSS�/URS�5US�9n US�Hun!n"n#U"U!U"U 5 M SSS5 GM� SSS5 SSS5 [R@"5R9S�5 URSURQSSS�5R355n$U$S�3n%[R R#[$SU%5m4S�U%3m5[R RqT45m9U4U5U8U94S�jn&[R:"5R9S�5RCS U&5 S�n'U'"T?5n(T9(a[Rr"U(S'S�9R9S�5 [Rt"ST5S�[w[R RyT45535R9S�5 SSS5 OrU(aDSR#URM5SS�V)s/sHn)U)SsRm5PM sn)5OS�n*[Rr"U*U(S'S�9R9S�5 [R@"5R9S�5 [RD"U5R9S�5 [{U5R35[{T?5R35:wa)[RD"T?5R9S�U(S�35 SSS5 SSS5 [R:"5R9S�5 [R<"S�S�[`S`9R?S�5R9S�5 SSS5 [Rn"5R9S�5 U4S�jn+[R<"S�S�U+S`9R?S�5R9S�5Tl>SSS5 SSS5 [~(a[5 [R�"5m3[R�"5R9S�5 [R@"5R9S�5 [RF"S�S�S�S(9 SSS5 [RD"S�5R9S�5 [RD"S�5R9S�5 [R:"5R9S�5 U3U4S�jn-[R<"S�T3R�S�9R?S�5R9S�5 [R<"S�U-S�9R?S�5R9S�5 SSS5 SSS5 SSS5 U3U?U4S�jm6U64S�jn.[R"S�U.SS�9 [R:"5R9S�5 U84S�jn/[5U?4S�jS�55n0U0(arSsS�KEJFn1 [{T?5RK5m7[5U74S�jU155m;T;(aS�OS�n2U/"SMS�S5 U/"S�S�U25 U/"S�S�S05 U/"S�S�S�5 U/"S�S�S�5 O(U/"SMS�S5 U/"S%S�S�5 U/"S�S�S05 U/"S�S�S�5 SSS5 [�(a[�UT?T<T;5 [R@"5R9S�5TlHTR�R�5$![an[SU35 SnAGN�SnAff=f![anSm8Sn[SU35 SnAGNSnAff=f!,(df   G
N�=f!,(df   G
N�=f!,(df   G
N�=f!,(df   G
Mo=f!,(df   GN�=f!,(df   GN�=f!,(df   GN=f!,(df   G173N�=f!,(df   G174NQ=f!,(df   G175N#=f!,(df   G176N-=f!,(df   GN�=fs snfs snf!,(df   G	MM=f!,(df   GN�=f!,(df   GN�=f!,(df   GN=fs sn)f!,(df   GNl=f!,(df   GNv=f!,(df   GN#=f!,(df   GN�=f!,(df   GN�=f![a-nSsSK@n,[S�U35 U,R�5 SnAGN�SnAff=f!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f![an[S�U35 SnAGN�SnAff=f)�N�selectos_initializedFz2<script src="/static/offline_manager.js"></script>al177                    <script>178                        if ("Notification" in window && Notification.permission !== "granted" && Notification.permission !== "denied") {179                            Notification.requestPermission();180                        }181                        function showPushNotification(title, body) {182                            const isStandalone = window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone || localStorage.getItem("SelectosAPK_Downloaded") === "yes";183                            if (isStandalone && "Notification" in window && Notification.permission === "granted") {184                                navigator.serviceWorker.ready.then(function(registration) {185                                    registration.showNotification(title, {186                                        body: body,187                                        icon: '/static/icon.png',188                                        badge: '/static/icon.png',189                                        vibrate: [200, 100, 200]190                                    });191                                }).catch(function() {192                                    new Notification(title, {body: body, icon: '/static/icon.png'});193                                });194                            }195                        }196                    </script>197                z*Error initializing PWA headers in layout: �id�rol��nombre)�	OperativouTécnicozAsistente de Mantenimientoc�b>�[RR(a)[RRR(dgSSKJn SSKJn [USS5(agURRRS5(dgU"ST3SS	9nU(a�USnURRRS198S5nUSU:�a�USURRS199'US:�a~SSKnUSRS
S5RSS5nURU5n[RRR(a[R"SUS3SS9 gggUS:XaUSURRS200'ggg![ a gf=f)Nr)�app)�get_mensajes_chat�is_stoppingF�
authenticatedzSara IA_�)�area�limite�
last_notif_idr/�mensajez**r1u📋z'showPushNotification('Alerta Central', �)�@��timeout)r�context�client�	connected�niceguir5�*modules.comunicacion.services_comunicacionr6�getattr�storage�user�get�json�replace�dumps�run_javascript�	Exception)	r5r6�msgs�201latest_msg�stored_lastrK�202clean_text�js_msg�user_ids	        �r�check_push_notifications�:SelectosLayout.__enter__.<locals>.check_push_notifications�s���� ��:�:�,�,�B�J�J�4E�4E�4O�4O��+�\��s�M�5�9�9���;�;�+�+�/�/��@�@��,�H�W�I�2F�q�Q�D��%)�!�W�203�&)�k�k�&6�&6�&:�&:�?�A�&N��%�d�+�k�9�@J�4�@P�C�K�K�,�,�_�=�*�Q�� +�-7�	�-B�-J�-J�4�QS�-T�-\�-\�]c�eg�-h�204�)-���J�)?��#%�:�:�#4�#4�#>�#>�$&�$5�$5�8_�`f�_g�gh�6i�sv�$w�$?� /�)�A�-�@J�4�@P�C�K�K�,�,�_�=�.���!����s+�AF!�F!�+*F!�C#F!�<"F!�!205F.�-F.g.@z7DEBUG NAV: Push Notifications Engine Inicializado para T�avatars�presets��exist_okr9�/�����z206user-agentc3�,># �UH	oT;v� M g7frr)�.0�k�207user_agents  �r�	<genexpr>�+SelectosLayout.__enter__.<locals>.<genexpr>4s����"T�<S�a�z�/�<S���)�mobile�android�iphone�ipad�ipod�208blackberry�iemobilez209opera minizDEBUG NAV ERROR: zjbg-slate-900 text-white justify-between items-center shadow-2xl py-2 px-2 flex-row border-b border-white/5zitems-center gap-4 shrink-0c�2>�[TS5(aTR(dgSTRR;a&TRRRS5 OSTRRS'TRR	5 g)Nr�miniT)�hasattrr�_props�pop�updater*s�r�toggle_mini�-SelectosLayout.__enter__.<locals>.toggle_mini>sq���&�t�]�;�;�4�CS�CS�U[�!�T�%5�%5�%<�%<�<� �,�,�3�3�7�7��?�>B�D�,�,�3�3�F�;��(�(�/�/�1r�menu)�on_click�iconzflat round color=whitezgap-0 cursor-pointer ml-1�clickc�@�[RRS5$)Nr\�r�navigate�torrr�<lambda>�*SelectosLayout.__enter__.<locals>.<lambda>Js��Z\�Ze�Ze�Zh�Zh�il�Zmrz!items-center gap-1.5 leading-none�PROz5text-[28px] font-[900] tracking-tighter text-blue-400�engineering�32px�white��size�colorzcolor=white�MANAGERz2text-[28px] font-[900] tracking-tighter text-whiteu-INGENIERÍA • OPERACIONES • SEGURIDAD SSTzNtext-[10px] font-black tracking-[0.25em] text-slate-400 uppercase -mt-0.5 ml-1z/sst�MANDOz/sst/industrial/hub�	dashboard)�label�pathrv�IPVRz/sst/industrial/gtc45-pror(�SALUDz/sst/industrial/medicina�medical_services�ESTUDIOz/sst/sara-estudio�auto_awesome�CONSTRUCTORz/sst/constructor�210psychologyz;items-center gap-1 flex-1 justify-start ml-8 hidden md:flexr��?z\items-center gap-1.5 px-3 py-1.5 rounded-lg cursor-pointer transition-all hover:bg-white/10 z,bg-white/20 border border-white/20 shadow-smzopacity-70 hover:opacity-100c�F�[RRUS5$)Nr�ry)�items rr|r}^s��r�{�{�~�~�d�SY�l�?[rrv�14pxr�z:text-[11px] font-bold tracking-widest text-white uppercasez5items-center grow justify-center gap-4 hidden md:flex�hiddenzMitems-center gap-2 bg-white/10 px-4 py-1.5 rounded-full border border-white/5�home�xsz211opacity-60�
chevron_rightz212opacity-40�-� zgitems-center gap-2 bg-amber-500/20 px-3 py-1 rounded-full border border-amber-500/30 ml-4 animate-pulsez
display: none�	cloud_offz	amber-500)r�r�uTRABAJANDO SIN CONEXIÓNz?text-[9px] font-black text-amber-500 tracking-tighter uppercasez�213                    <script>214                        setInterval(() => {215                            const indicator = document.getElementById('cz�');216                            if (indicator) {217                                indicator.style.display = navigator.onLine ? 'none' : 'flex';218                            }219                        }, 2000);220                    </script>221                zitems-center gap-2c��># �[R"5n[R"5RS5 [R"5RS5 [R222"5RS5 [R223"5RS5 [R"SSSS9 [R"5RS	5 [R"S2245RS5 [R"TS5RS
5 SSS5 SSS5 [R"SURS9RS5RS5 SSS5 [R"5RS5 [R"5RS5 [R"S5RS5 [R"TS5RS5 SSS5 [R"5RS5 [R"5RS5 [R"S5RS5 [TSS5H�up[R225"5RS5 [R"[U55RS5 [R"U5RS5 SSS5 M� SSS5 [R"S URS!9RS"5RS#5 SSS5 SSS5 SSS5 SSS5 WR5 g!,(df   GNw=f!,(df   GN�=f!,(df   GNN=f!,(df   GN�=f!,(df   GMW=f!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   N�=f7f)$Nz2w-full max-w-lg p-0 rounded-[2rem] overflow-hiddenzw-fullz?w-full bg-slate-900 text-white p-6 items-center justify-betweenzitems-center gap-3r'�24pxzblue-400r�zgap-0uGUÍA DE USUARIOz5text-[10px] font-black tracking-[0.2em] text-blue-400�moduloz!text-lg font-black tracking-tight�close�rvruzflat round color=white size=smz226opacity-50z	p-8 gap-6zgap-1uOBJETIVO DEL MÓDULOz>text-[9px] font-black text-slate-400 tracking-widest uppercase�objetivoz2text-sm text-slate-700 font-medium leading-relaxedzbg-slate-100zgap-4u¿CÓMO UTILIZARLO?�pasosr9zitems-start gap-4 flex-nowrapzsbg-blue-600 text-white w-6 h-6 rounded-full flex items-center justify-center text-[10px] font-black shrink-0 mt-0.5z%text-xs text-slate-600 leading-normaluENTENDIDO, VOLVER AL MÓDULO�ruz%unelevated color=slate-900 rounded-xlzw-full font-black py-3 mt-4)r�dialog�card�classes�column�rowrvr��buttonr��props�	separator�	enumerate�str�open)�help_dialog�i�paso�	help_infos   �r�	show_help�+SelectosLayout.__enter__.<locals>.show_help�s�����Y�Y�[�K�����9J�9J�K�:A�!#����!4�!4�X�!>�%'�V�V�X�%5�%5�6w�%x�)+����)9�)9�:N�)O�(*����V�:�(V�-/�Y�Y�[�-@�-@��-I�,.�H�H�5G�,H�,P�,P�RI�-J�,.�H�H�Y�x�5H�,I�,Q�,Q�Ru�,v�.J�*P�227%'�I�I�7�[�EV�EV�$W�$]�$]�^~�$�%H�%H�IU�%V�
&y�&(�Y�Y�[�%8�%8��%E�)+����)<�)<�W�)E�(*���1G�(H�(P�(P�RR�)S�(*����:�1F�(G�(O�(O�QE�)F�*F�%'�L�L�N�$:�$:�>�$J�)+����)<�)<�W�)E�(*���1F�(G�(O�(O�QQ�)R�7@��7�AS�UV�7W�G�A�13����1A�1A�Ba�1b�02����Q��0@�0H�0H�J�1@�02�����0F�0F�Gn�0o�2c�1b�8X�*F�%'�I�I�.L�Wb�Wh�Wh�$i�$o�$o�qX�%Y�%a�%a�b�%@�&F�"?�:A�[�6$�(�(�*�+.J�-I��*P�)O��&y�%x��*F�)E��2c�1b��*F�)E��&F�%E��"?�!>��:A�:A��[�[�s��Q�%Q�%P4�#%P#�%O228	�-;N8�(AN&
�6N8�>AO229	�,P#�/%P	�AO�"AP	�2AP�AO.�$P�0AP	�5P#�=P4�Q�
Q�&230N5�0N8�8231O�O232	�233 234O
�P#�235O+�&P	�.236O>�8	P�237P�P	�238P 
�P#�#239P1�-P4�4240Q	�>Q�241Q�Qr'r�z/opacity-80 hover:opacity-100 transition-opacityztext-xs font-bold bg-slate-900u	Guía de r��SALIR�power_settings_newz/flat no-caps color=white rounded-xl bg-white/10z+px-3 text-[10px] font-black tracking-widestzEbordered width=300 mini-width=80 mini behavior=desktop breakpoint=700z no-swipe-open no-swipe-close)�valuezNbg-white/70 backdrop-blur-xl border-r border-slate-200/50 h-full relative z-40z hiddenz.w-full h-full relative z-50 overscroll-containz�:thumb-style="{ width: \"2px\", background: \"transparent\", opacity: 0 }" :bar-style="{ width: \"2px\", background: \"transparent\", opacity: 0 }"z6pl-0 pr-1 pt-2 pb-32 w-full gap-0 drawer-nav-container�
Administradorc�>�TU;dSU;a�TU:HnU(aSOSn[R"US9RSUS35 [R"5RS5 [R"USS	9RS242U(aSOS35 [R243"U5RS
U(aSOS35 SSS5 SSS5 gg!,(df   N=f!,(df   g=f)N�Todosz%bg-blue-50/50 text-blue-600 shadow-smz"text-slate-600 hover:text-blue-600��targetz)w-full no-underline transition-all group z; rounded-xl hover:shadow-[0_4px_15px_rgba(59,130,246,0.25)]zwitems-center gap-2 py-3 pl-0 pr-3 rounded-xl group-hover:bg-blue-100/30 w-full flex-nowrap q-mini-drawer-justify-center�sm�r�� flex-shrink-0 transition-colors �
text-blue-600�(text-slate-400 group-hover:text-blue-600z�font-bold text-[12px] tracking-wide whitespace-nowrap overflow-hidden truncate leading-tight text-left flex-1 q-mini-drawer-hide �(text-slate-700 group-hover:text-blue-600)r�linkr�r�rvr�)rrv�url�
allowed_roles�	is_active�active_classes�current_pathr0s      ��r�nav_link�*SelectosLayout.__enter__.<locals>.nav_link�s!����-�/�7�m�3K�(4��(;�I�Xa�-T�hL�N�!#����!4�!<�!<�?h�iw�hx�yt�>u�"v�%'�V�V�X�%5�%5�7p�&q�$&�G�G�D�t�$<�$D�$D�Gg�|E�hw�Ku�hv�Fw�%x�$&�H�H�U�O�$;�$;�?@�T]�AP�cM�@N�=O�%P�&q�"v�"v�	4L�244&q�&q��"v�"v�s%�%C/�*A"C�C/�245C,	�(C/�/246C=r)�contextmanagerc�>�THnX:wdM247UR5 M UR5 g! M4=f! g=fr)r�r�)�target_menu�m�menu_instancess  �r�open_exclusive�0SelectosLayout.__enter__.<locals>.open_exclusive�s9���!/�A� �/�%&�W�W�Y�"0�)�-�-�/��!-���$��s�3�;�8�?c	3��># �[U4SjU55nTU;dSU;Ga�T=(a T(+nUS:Xa	T(dSOSn[U4SjU55nU(aSOSn	U(aS	OS248n249U(aSOSnUS
:Xa!U(aSOSn	U(aSOSn250U(aSOSnU(Ga*[R"5RSUS35 [R"5RS5 [R"5RS5 [R251"USS9RS5 [R"U5RS5 SSS5 [R252"SSS9RS5 SSS5 [R"5RS5nUv� SSS5 SSS5 g[R"5RS U	S!U253S!US"35n
U
 [R254"US#S9RS$U35 [R"U5RS%U25535 [R256"S&S'S9RS(U35 [R"5RS)5RS*5nUv� SSS5 SSS5 TRW5 U
RS+U4U4S,jj5 URS-UR5 gSv� g!,(df   GN�=f!,(df   GN�=f!,(df   GNw=f!,(df   g=f!,(df   N�=f!,(df   N�=f7f).Nc3�,># �UH	oT:Hv� M g7frr�r_r�r�s  �rrb�BSelectosLayout.__enter__.<locals>.nav_expansion.<locals>.<genexpr>�s����%P�Z�c�\�&9�Z�rdr��personalzhidden md:flexr1c3�,># �UH	oT:Hv� M g7frrr�s  �rrbr��s����)T��#��*=��rdzbg-blue-50/50 shadow-smzhover:bg-slate-100ztext-blue-600 font-blackz(text-slate-600 group-hover:text-blue-600r�r��violetz%bg-violet-50 border border-violet-100zhover:bg-violet-50/50ztext-violet-700 font-blackz+text-violet-600 group-hover:text-violet-800ztext-violet-500ztext-violet-400zIw-full gap-1 p-2 bg-slate-50/50 border border-slate-100 rounded-2xl mb-3 z shadow-sm group/headerzFw-full items-center gap-2 mb-1 pl-0.5 pr-1 justify-between flex-nowrapz.items-center gap-2 overflow-hidden flex-nowrapr�r�ztext-slate-400 flex-shrink-0zItext-[10px] font-black tracking-[0.1em] uppercase text-slate-500 truncate�expand_morer�zTtext-slate-300 flex-shrink-0 transition-transform group-hover/header:translate-y-0.5zw-full gap-0.5zdw-full flex-nowrap items-center gap-2 py-3 pl-0 pr-3 transition-all rounded-xl cursor-pointer group r�zM hover:shadow-[0_4px_15px_rgba(59,130,246,0.25)] q-mini-drawer-justify-centerr�zflex-shrink-0 transition-all z�font-bold text-[12px] tracking-wide flex-1 whitespace-nowrap overflow-hidden truncate leading-tight text-left q-mini-drawer-hide r��16pxz=transition-all duration-300 flex-shrink-0 q-mini-drawer-hide znanchor="top right" self="top left" :offset="[10, 0]" auto-close transition-show="scale" transition-hide="fade"zpp-1 bg-white/95 backdrop-blur-xl border border-slate-200/60 rounded-xl shadow-xl min-w-[220px] overflow-x-hiddenrwc�>�T"U5$rr)�_r�r�s  �rr|�ASelectosLayout.__enter__.<locals>.nav_expansion.<locals>.<lambda>�s���^�\]�M^r�257mouseleave)�anyrr�r�r�rvr�rtr��append�onr�)rrv�	module_idr�r��258items_urls�is_open�
is_tecnico_ui�mobile_hide�	active_bg�active_text�259icon_color�flat_container�btn_row�flyout_menur��is_manager_role�260is_tecnicor�r�r0s               ������r�
nav_expansion�/SelectosLayout.__enter__.<locals>.nav_expansion�sT����"%�%P�Z�%P�"P���-�/�7�m�3K�,6�,N��;N�M�>G�:�>U�^m�*:�su�K�&)�)T��)T�&T�G�EL�(A�Rf�I�HO�*D�U�K�<C��Is�J�$��0�W^�,S�d{�	�NU�.J�\I��BI�->�O`�261�,�&(�i�i�k�&9�&9�=F�GR�FS�Sj�;k�'l�)+����)9�)9�;C�*D�-/�V�V�X�-=�-=�>n�-o�,.�G�G�D�t�,D�,L�,L�Mk�,l�,.�H�H�U�O�,C�,C�EP�-Q�.p�)+���
�F�(K�(S�(S�Uk�)l�	*D�262*,����)<�)<�=M�)N�R`�.<�(<�*O�
'l�'l�+-�&�&�(�*:�*:�>b�cl�bm�mn�oz�n{�{|�}H�|I�IV�<W�+X��%,�$&�G�G�D�t�$<�$D�$D�Gd�eo�dp�Eq�$r�$&�H�H�U�O�$;�$;�?@�AL�@M�=N�%O�$&�G�G�O�&�$I�$Q�$Q�UR�S]�R^�S_�%`�*,������:j�*k�*s�*s�)[�*&�)4�.9�(9�*&�
&-�!/� 5� 5�k� B� '�263�264�7��4^� _� +���|�[�=N�=N� O�"&�J�1.p�-o��*D�*D��265*O�)N��
'l�'l��"*&�*&��
&-�W�s��CM:�%M�9%L#�A266L�(,L#�,M�L5�M�
9M:�B*M)�0M�5M)�=AM:�267L �L#�#268L2	�-M�5269M	�?M�270M�M:�271M&	�"M)�)272M7�3M:c�>�Ub�TU:HnU(aSOSn[R"US9RSUS35 [R"U(aSOSSS	9RS273U(aSOS35 [R"U5RS
U(aSOS35 SSS5 gg!,(df   g=f)NzFtext-blue-600 bg-blue-50/80 font-black shadow-inner shadow-blue-500/10z4text-slate-600 hover:text-blue-600 hover:bg-slate-50r�z�no-underline w-full group flex flex-nowrap items-center justify-start gap-3 py-2.5 px-3 rounded-xl transition-all duration-300 hover:scale-[1.02] hover:shadow-[0_4px_12px_rgba(59,130,246,0.3)] origin-left overflow-hidden z q-mini-drawer-justify-center�274play_arrowr��12pxr�r�r�z(text-slate-300 group-hover:text-blue-600zYtext-[12px] font-bold whitespace-nowrap truncate flex-1 block min-w-0 q-mini-drawer-hide r�)rr�r�rvr�)rr��expansion_contextr�r�r�s     �r�sub_nav_item�.SelectosLayout.__enter__.<locals>.sub_nav_item�s���,�8�(4��(>�I�zC�-u�I�N�!#����!7�!?�!?�C`�ao�`p�pM�AN�"O� "���	���]c� d� l� l�pP�dm�Q`�s]�P^�n_�!`� "����� 7� 7�;T�hq�Ud�wa�Tb�9c�!d�"O�"O�	9�"O�"O�s�A+B1�1275B?�categoryzw-full items-centerz�text-[10px] font-black tracking-[0.25em] text-slate-300 mt-6 mb-2 pl-0 pr-3 w-full border-b border-slate-50 pb-1 q-mini-drawer-hide uppercasezGq-mini-drawer-only w-8 mx-auto bg-slate-200 mt-8 mb-4 h-[1px] shadow-sm�typer�r�rr�)r��	expansion�itemsr�)r�r�r�z�py-3 absolute bottom-0 left-0 w-full border-t border-slate-200/50 bg-white z-[60] shadow-[0_-10px_20px_-5px_rgba(0,0,0,0.05)] items-center justify-centerr�z.pngzstatic/avatars/c��>^276^�[R"5m277[R"5RS5 T(aR[R"ST
S[[RRT5535RS5 OC[R"5RS5 [R"SSSS	9 SSS5 [R"S2785RS5 [R"S5RS
5 UU4Sjm[R"S5RS5 [R"5RS5 SSK
n[RR[SSS5nURU5Vs/sH"n[RR!U5PM$ nnUH�nSU3n[RR[SSU5nT=(ae [RR#T5=(a? [RR%U5[RR%T5:HnSnU(aUS-
nOUS-
n[R"U5RU5R'SU4U4Sjj5 M� SSS5 UUU2794Sjn	[R"S5RS5 [R("U	SS S!S"9R+S#5RS$5 [R,"S%T280R.S&9R+S'5RS(5 SSS5 SSS5 T281R15 g!,(df   GN�=fs snf!,(df   N�=f!,(df   NO=f!,(df   NX=f))NzTp-8 rounded-[2rem] shadow-2xl text-center flex flex-col items-center max-w-sm w-fullr\�?v=zTw-32 h-32 rounded-full border-[6px] border-white shadow-xl object-cover mb-4 mx-autozHbg-blue-50 p-4 rounded-full mx-auto mb-2 border-4 border-white shadow-sm�face�4xlr"r�uActualizar FotografíazKtext-xl font-black text-slate-800 tracking-tighter text-center w-full blockz1Sube una imagen o elige un avatar predeterminado.zNtext-sm text-slate-500 mb-4 font-medium leading-tight text-center w-full blockc�>�SSKn[RR[SSU5n[R282"[RR
T5SS9 URUT5 [R"SSSS	9 [R"S283U4Sj5 g![a"n[R"SU3S
S9 SnAgSnAff=f)NrrXrYTrZu¡Avatar animado seleccionado!r%�check_circle�r�rv��?c�B>�[RRT5$rry�r�s�rr|�]SelectosLayout.__enter__.<locals>.show_avatar_dialog.<locals>.handle_preset.<locals>.<lambda>6s���b�k�k�n�n�\�6RrzError al aplicar el avatar: r&�r�)�shutil�osr��joinr	�makedirs�dirname�copyr�notify�timerrO)�preset_filenamer�src�e�avatar_fs_pathr�s    ��r�
handle_preset�KSelectosLayout.__enter__.<locals>.show_avatar_dialog.<locals>.handle_preset/s����)�_�&(�g�g�l�l�;�	�9�Ve�&f�� "���B�G�G�O�O�N�,K�VZ� [� &���C�� @� "�	�	�*J�Q[�bp� q� "����.R� S��#,�_� "�	�	�,H���*L�S]� ^��_�s�BB#�#284C�-C285�286Cu%AVATARES SUGERIDOS (ESTILO PELÍCULA)zYtext-[10px] font-black tracking-[0.2em] text-slate-400 mb-2 mt-2 text-center w-full blockz7justify-center gap-3 mb-6 w-full flex-wrap items-centerrrXrYzpreset_*.pngz/static/avatars/presets/zOrounded-full cursor-pointer transition-all bg-white flex-shrink-0 object-cover zXw-16 h-16 border-4 border-blue-500 shadow-[0_0_20px_rgba(59,130,246,0.6)] scale-110 z-10zYw-14 h-14 border-2 border-slate-100 hover:scale-110 hover:shadow-xl hover:border-blue-200rwc�>�T"U5$rr)r��frs  �rr|�FSelectosLayout.__enter__.<locals>.show_avatar_dialog.<locals>.<lambda>Is���q~�@A�rBrc�>�[R"[RRT5SS9 [	TS5nURURR55 SSS5 TR5 [R"SSSS9 [R"SU4S	j5 g!,(df   NP=f)287NTrZ�wbu ¡Fotografía local actualizada!r%rrrc�B>�[RRT5$rryrs�rr|�]SelectosLayout.__enter__.<locals>.show_avatar_dialog.<locals>.handle_upload.<locals>.<lambda>Qs���"�+�+�.�.��2Nr)rr288r�rr��writer�readr�rr
r)rrrr��ds  ���r�
handle_upload�KSelectosLayout.__enter__.<locals>.show_avatar_dialog.<locals>.handle_uploadKsz����K�K�������(G�RV�W�!%�n�d�!;�q� !����	�	���(8� 9�"<��G�G�I��I�I�&H�z�`n�o��H�H�S�*N�O�	"<�!;�s�*B4�4289CzO SUBE UNA FOTO LOCALzYtext-[10px] text-center w-full font-black tracking-[0.2em] text-slate-400 mt-4 mb-2 blockTr9zSeleccionar foto de disco)�	on_upload�auto_upload�	max_filesr�z3accept="image/*" color="primary" flat no-thumbnailsz�w-full border-2 border-slate-100 bg-slate-50 hover:bg-slate-100 transition-colors shadow-none rounded-2xl mx-auto overflow-hidden text-center�CERRARr��flat text-color=slate-400zfont-bold px-4 w-full mt-2)rr�r�r��image�intrr��getmtimer�rvr�r��globr	r	�basename�exists�getsizer��uploadr�r�r�r�)r)�preset_patternr�preset_filesr�img_url�preset_fs_path�is_selected�base_classesrrrr�avatar_url_pathr��290has_avatars          @@����r�show_avatar_dialog�4SelectosLayout.__enter__.<locals>.show_avatar_dialog$sI��������2�7�7�9�+<�+<�>T�,U�%��H�H�q��(9��S����AQ�AQ�R`�Aa�=b�<c�%d�e�m�m�oE�F�!#����!4�!4�5�"A� "����U�)� L�"A����!9�:�B�B�DQ�R����!T�U�]�]�_o�p�	_����!H�I�Q�Q�Sn�o��V�V�X�-�-�.g�h�'�-/�W�W�\�\�+�y�R[�]k�-l�N�IM���Sa�Ib�+c�Ib�A�B�G�G�,<�,<�Q�,?�Ib�L�+c�3?��,D�_�DU�*V��13�����k�9�V_�ap�1q��.8�/c�R�W�W�^�^�N�=[�/c�`b�`g�`g�`o�`o�p~�`�DF�DK�DK�DS�DS�Tb�Dc�ac��0A��#.�$0�5O�%O�L�$0�5P�%P�L� "���� 1� 9� 9�,� G� J� J�7�`o�UB�!C�4@�	i� P����!8�9�A�A�C^�_��	�	�M�t�WX�`{�|�C�C�Dy�z�B�B�CR�S��	�	�(�Q�W�W�=�C�C�D_�`�h�h�jF�G�a,U��b�F�F�H�Y"A�"A��(,d�i�h��-,U�,U����sh�%O�A>O�<N�B"O�5>N/�3)N*291�C4N/�B'O�7O�292N'�"O�*N/�/293N=�9O�294O	�295O�296Oz�w-full items-center justify-center gap-3 mb-1 cursor-pointer hover:bg-slate-50/50 p-1.5 rounded-[1.25rem] transition-all group/profile q-mini-drawer-justify-centerc�j�[U5R5nSU;dSU;agSU;dSU;agg)N�admin�gerentzblue-600�sst�	seguridad�emerald-500zblue-500�r��lower)�r_str�rs  r�get_role_color�0SelectosLayout.__enter__.<locals>.get_role_colorZs6����J�,�,�.��"�a�<�8�q�=�� �A�:���)9�-�)r)r��297text_colorzZw-10 h-10 shadow-lg flex-shrink-0 overflow-hidden p-0 ring-2 ring-white shadow-blue-500/10r�z1w-full h-full object-cover scale-110 shadow-inner��UzCw-10 h-10 shadow-md flex-shrink-0 text-[11px] font-black text-whitez4gap-0 flex-1 overflow-hidden ml-1 q-mini-drawer-hidezitext-sm font-black text-slate-800 leading-tight mb-0.5 group-hover/profile:text-primary transition-colorsz7text-[10px] uppercase font-black tracking-[0.1em] text-z opacity-70z)w-full px-2 mt-2 gap-2 q-mini-drawer-hideuCERRAR SESIÓNrz-flat color=rose-500 size=xs rounded-xl w-fullzDfont-black text-slate-400 hover:text-rose-600 transition-colors py-2z'mb-2 bg-slate-100/50 q-mini-drawer-hidec��>�[R"S5 TR(aTRRS5 [R"SSS9 [R298R
S5 g)N�6localStorage.setItem("SelectosAPK_Downloaded", "yes");r�zIniciando descarga...r%r�/descargar/apk)rrNrr�r
rzr{r*s�r�on_download_apk�1SelectosLayout.__enter__.<locals>.on_download_apkssK����%�%�&^�_��|�|����,�,�X�6��I�I�5�J�G��K�K�N�N�#3�4rz
Descargar APKrfz.unelevated color=emerald-600 rounded-xl w-fullzTfont-black mb-1 shadow-lg shadow-emerald-500/30 text-white hidden q-mini-drawer-hidez+DEBUG CHAT: Error rendering floating chat: z?p-8 items-center text-center rounded-[2rem] shadow-2xl max-w-smz?p-4 bg-emerald-50 rounded-full mb-2 border-4 border-emerald-100�5xlr=u¡Descubre la App Móvil!z3text-2xl font-black text-slate-800 tracking-tighteruyInstala Selectos ProManager en tu celular para acceder a reportes rápidos, código QR, y notificaciones PUSH operativas.z'text-sm text-slate-500 my-2 font-mediumz,w-full justify-center gap-2 mt-4 flex-nowrapc�>�[R"S5 TR(aTRRS5 TR	5 [R299"SSSSS9 [RRS5 g)	NrHr�z9Iniciando descarga de Selectos ProManager APK (v1.0.3)...r%�download�top)r�rv�positionrI)rrNrr�r�r
rzr{)�300apk_dialogrs��r�on_dialog_download�4SelectosLayout.__enter__.<locals>.on_dialog_download�se����%�%�&^�_��|�|����,�,�X�6��$�$�&��I�I�Y�`j�q{�GL�M��K�K�N�N�#3�4ru301MÁS TARDEr�r%zfont-bold px-4z
DESCARGAR APKz'unelevated color=emerald-600 rounded-xlzMfont-black px-4 shadow-lg shadow-emerald-500/30 text-[11px] whitespace-nowrapc���># �[T5(ag[R"SSS9IShv�NnU(a�[R"SSS9IShv�NnU(agTR(aTRR	S5 [R"SSS9IShv�NnU(d.[R"SSS9IShv�N TR5 gggN�N�N?N![a gf=f7f)	Nzbreturn /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);r?r@z@return localStorage.getItem("SelectosAPK_Downloaded") === "yes";r�zCreturn localStorage.getItem("SelectosAPK_Prompt_Viewed") === "yes";z9localStorage.setItem("SelectosAPK_Prompt_Viewed", "yes");r)rrrNr�remove_classesr�rO)�	is_mobile�has_downloaded�302has_viewedrQr0rs   ���r�check_mobile�.SelectosLayout.__enter__.<locals>.check_mobile�s�����
��c�?�?��"$�"3�"3�5Y�cf�#g�g�	��+-�+<�+<�=�JM�,N�&N�N�%���|�|����3�3�H�=�(*�'8�'8�9~�IL�(M�"M�J�%� �/�/�0k�ux�y�y�y�"���)�&��g�&N�"M�y���
��
�s��C7�C'�C7�C'�C�#C'�C!�C'�C7�AC'�#C#�$#C'�C%�C'�C7�C'�!C'�#C'�%C'�'303C4�1C7�3C4�4C7c�^>�[R"T"55 g![a gf=fr)�asyncio�create_taskrO)rYs�r�safe_check_mobile�3SelectosLayout.__enter__.<locals>.safe_check_mobile�s*���
��#�#�L�N�3���
��
�s��304,�,g�?)�oncez�fixed bottom-0 left-0 w-full bg-white z-[80] md:hidden shadow-[0_-5px_20px_-5px_rgba(0,0,0,0.1)] border-t border-slate-100 pt-2 pb-safe justify-around items-center px-1 touch-nonec�^>^�TT:HnU(aSOSn[R"5RSU35RSU4Sj5 [R"USS9 [R305"U5RSU(aS	OS30635 SSS5 g!,(df   g=f)Nz$bg-blue-50/80 text-primary scale-105ztext-slate-400 opacity-80zQitems-center justify-center p-2 rounded-2xl transition-all cursor-pointer flex-1 rwc�B>�[RRT5$rryr�s�rr|�BSelectosLayout.__enter__.<locals>.mobile_nav_btn.<locals>.<lambda>�s4���\^�\g�\g�\j�\j�kq�\rrr�r�zNtext-[9px] font-black uppercase mt-1 tracking-widest text-center leading-none ztext-primaryztext-slate-500)rr�r�r�rvr�)rvr�r��active�base_cr�s  `  �r�mobile_nav_btn�0SelectosLayout.__enter__.<locals>.mobile_nav_btn�s����%��/��CI�?�Oj���Y�Y�[�(�(�+|�~D�}E�*F�G�J�J�KR�Tr�s��G�G�D�v�.��H�H�U�O�+�+�.|�PV�~L�\l�}m�-n�o�s�s�s�s
�AB�307B,c3�Z># �UH o[T5R5;v� M" g7frr>)r_rAr0s  �rrbrc�s,����$P�DO�a��S����)9�$9�DO�s�(+)�	operativoutécnico�tecnico�auxiliar�	asistente�308supervisor)�
MANAGER_ROLESc3�d># �UH%oR5TR5:Hv� M' g7fr)r?)r_r��cleaned_rols  �rrbrc�s%����%^�P]�1�g�g�i�;�3D�3D�3F�&F�P]�s�-0z309/proyectosz/proyectos/avance-operativo�Inicio�architecture�Avance�security�SST�inventory_2�Pedidosz/proyectos/materiales/solicitudr�Ficharz/personal/asistencia�Obras�
folder_shared�Docsz/documentos/consultarz%Error al inicializar el Sistema SOS: zWw-full xl:max-w-[1800px] 2xl:max-w-[98%] mx-auto p-3 sm:px-8 sm:py-4 mb-24 pb-8 md:pb-0r)Jr+rrBrCrGrr
rO�printrrJrrr.rr310r�r	r	�page�requestr��len�endswith�headersr?r��headerr�r�r�r�r�r�r�rv�311startswith�strip�splitr�rLr�styler�
add_body_htmlr/r�tooltiprr�scroll_area�312contextlibr�r�upperr�r+�avatarr&r'r(r�rr313�	traceback�	print_excr�r�r��services.navigationrnrr�	__enter__)BrrC�is_already_initrrIr2rV�is_mobile_agentrr�menu_btn�
sst_nav_itemsr�r��breadcrumbs_visible�partsr��partr��drawer_props�drawer_init_stater�r�r�r��314nav_schema�current_category�
item_category�item_url�it�urls�u�	norm_urls�expr�r�r��uid�avatar_filenamer6rB�315role_color�w�	inicialesrJr�rRr^rf�is_tecnico_mobilern�
target_avancerQrr4rYrpr�r5r�r�r�r�r�r0rarUsB`                                                  @@@@@@@@@@@@@@@rr��SelectosLayout.__enter__�s������������"�"��!�&�*@�%�H��	D�"� �"�� � �!U�V�� � �"��2 �!���(�(�4�.���h�h�u�b�!�����(�B�'���S�S�316�$�S�/���!
�J
�H�H�T�3�4�"��O�PV�x�X�Y�'+��#�	���B�G�G�L�L��i��C�d�S�	+��:�:�,�,�1�1�6�6�L��<�2�#5� "�317�318� 1� 1� 9� 9� =� =� B� B���<� �1�$��)>�)>�s�)C�)C�+�C�R�0�����*�*�2�2�:�:�>�>�|�R�P�V�V�X�J�!�"T�<S�"T�T�O��Y�Y�[�
 �
 �"N�O�����!�!�"?�@�!�_�2� "�y�y�+�F�K�Q�Q�Rj�k�H��Y�Y�[�(�(�)D�E�H�H��Rm�n�����)�)�*M�N������/�/�0g�h����
�F�'�J�P�P�Q^�_�����+�3�3�4h�i�O��H�H�L�M�U�U�Wg�h�o�A�,�&�&�v�.�.�z�%�/D�k�Z�$�.I�S\�]�%�/I�Se�f�'�1D�n�]�+�5G�Q]�^�!�
��V�V�X�%�%�&c�d� -��$0�D��L�$@�$o�L�D[�D[�\`�ag�\h�kn�\n�Do�	��V�V�X�-�-�1M�@I�N|�Om�Mn�/o�p�!#��G��-[�!\�]��G�G�D��L�v�W�M��H�H�T�'�]�3�;�;�<x�y�]�]�!.�e�(4�'>�'>�v�'F�'Y�z�>�"Z������!�!�]p�"Y�v~��$�*�*�3�/�5�5�c�:���V�V�X�%�%�&u�v��G�G�F��W�=�E�E�l�S�#,�U�#3���4��4��G�G�O�&��P�X�X�Ye�f��H�H�T�\�\�#�s�%;�%A�%A�%C�D�L�L�NJ�K�$4�w��V�V�X�%�%�'P�Q�W�W�Xg�h�lp�lB��G�G�K�{��F��H�H�7�8�@�@�BC�D�h�� � �&I�JN�I_�I_�Ib�Ib�Hc�d�	"�	�@�4����!�!�"6�7�.�|�<�	��+�<�I�I�6�I�>�D�D�E]�^�f�f�hY�Z�����-�-�.N�O����9�Y�x�-@�,A�!B�C�P��	�	�'�(<�v�N�T�T�VG�H�P�P�Q~��M8�GO�Z_���o�|�?^�/^�|�",�^�>���
�^�^�"3�
4�
<�
<�>N�_i�rA�R[�GI�>J�K�Q�Q�R^�_�cg�cs����!�)�)�*Z�[�a�a�c@�A��Y�Y�[�(�(�)a�b�BQ�AR�P�P�:�%'�N�%�$�M\�L]�ei�vx�-'�-'�$�-'�bd�"7�s�!;�J�'+�$� *��(,����(<�
�(�]�>N�-N�!#����!1�!1�2G�!H� "����)<�)<�)>� ?� G� G�IX�!Y� "���� 6� 6�8A�!B�"I�0=�,���<�6�1�'+�E�{�H�'�3��8�3D�3D�S�3I�3I�V^�_b�`b�Vc�8�$�T�'�]�D��L�(�[b�Zc�d�!�&�\�[�8�48��M�#B�M�b�B�q�E�M�D�#B�`d�(e�`d�[\�1��8��319�320�3����3�B��UV�)V�`d�I�(e�!.�t�G�}�d�6�l�D�QU�J�gn�fo�w{�w�w�AH�xI�V_�"`�dg�59�'�]�M�E�3��$0���S�$A�6C�"`�"`�'!+�kc�A�Z����$�$�&A�B��h�h�t�V�^�^�C��%=�%C�%C�%E�F��%(�E��,��!#�����k�9�o�!V��$3�O�3D�"E���W�W�^�^�N�;�321�2�2�j�V�V�X�%�%�'L�M�P�P�QX�Zl�m�*�"0��!4�J�!��Y�Y�Z�G�L�T�T�Vr�s��H�H�q��(9��S����AQ�AQ�R`�Aa�=b�<c�%d�e�m�m�ob�c�s�s�\b�B�G�G�6�<�<�>�RT�ST�CU�,V�CU�a�Q�q�T�Z�Z�\�CU�,V�$W�gj�	��	�	�)�:�'�R�Z�Z�\a�b�����,�,�-c�d�����(�0�0�2]�^��v�;�,�,�.�#�c�(�.�.�2B�B��H�H�S�M�1�1�4k�lv�kw�xC�3D�E�e�!m�*�V�V�X�%�%�&Q�R��I�I�.�X��O�U�U�WF�G�O�O�PV�W�S�����&�&�'P�Q�5� "�y�y��y�Sb�c�i�i�k[� \� d� d�e{� |���}B�]_�^ ��
&�$�&�322�Y�Y�[�J����	�(9�(9�:{�(|�����$�$�%f�g����	��]�C�h��H�H�0�1�9�9�:o�p��H�H�Q�
R�
Z�
Z�[D�
E�����!�!�"P�Q�5��	�	�,��1A�1A�B�H�H�Id�e�m�m�n~���	�	�/�4F�G�M�M�Nw�x�A�A�BQ�R�R�
)}�[�&	�2	�323	����'�d�3�
�V�V�X�
�
�T�U�
o�!$�$P�DO�$P�!P�� �=�!�#�h�n�n�.��"%�%^�P]�%^�"^��1@��Eb�
��v�x��5��~�x��G��z�5�2G�H��}�i�9Z�[��w��2H�I��v�x��5��}�g�|�D��z�5�2G�H����8O�P�9U�>�?�
C����Z��I��y�y�{�*�*�,E�F����|�|�%�%�'�'��e�	D��>�q�c�B�C�C��	D��V�	+��L�#�O��%�a�S�)�*�*��	+��*O�N��o�n��A�@��B]�]��e�d��w�v��h�h��@���zP�O��G8�7��GO�O��\"I�!H��$C��(e�"`�"`��Qc�b��A�A��hs�s��-W�e�d��!m�m��*S�R��eB�B��]_�_��d�
&� ��C�A�3�G�H��#�#�%�%��
&��324h�g��325R�Q��
)}�(|��[�[��fU�U��D�
C��=�a�S�A�B�B��
C�s��	=AD�C>AD5�0%AH�A.AF�%AE1�(A0AE	�-AE1�AF�
A&AH�3A0AF(�#AAF	�%AF(�1AAH�326AAG�<AF:�A,AF:�;;AG�6AAG�76AG�-,AH�A0AH�	AG0�&AAH�&AH� 9AK�%AI'�>B
AI�AAH&�#AAI�9AI�AH8�AI�-AH=�&AI�(AI�
AI�AI'�,AK�B<AK�7AJ"�7AAI9	�	0AJ"�9AJ�AAJ"�(BAJ	�+AJ"�3,AK�9AJ4�A+AK�AK�327AK*�>%AM�#%AM�AL$�A6AM�A8AL6�
AM�AM�-B=AM,�B>AM>�D328AD2�DAD-�D-AD2�D5329AE�D?AE�EAE�E330AE.
�E)AE1�E1331AF�E;AF�F332AF	�F
AH�F333AF%
�F	AF(�F(334AF7	�F2AH�F:335AG	�GAG�G336AG�GAG�G337AG-	�G(AH�G0338AG?�G:AH�H339AH	�HAH�H340AH#�H&341AH5�H0AI�I342AI�I	AI�I343AI$�IAI'�I'344AI6	�I1AK�I9345AJ
�J
AJ"�J346AJ
�JAJ"�J"347AJ1�J,AK�J4348AK�J>AK�K349AK	�KAK�K350AK'�K*351AL!�K4"AL�LAL!�L$352AL3�L.AM�L6353AM�MAM�M354AM	�MAM�M355AM)�M,356AM;�M>357AN!�NAN�NAN!c�Z�UR(aURR"U6 ggr)r�__exit__)rr�s  rr��SelectosLayout.__exit__�s ���<�<��L�L�!�!�1�%�r)rrrrrN�zSelectos ProManager)	�__name__�358__module__�__qualname__�__firstlineno__rr+r�r��__static_attributes__rrrrrps���N
�`U(�n&rrr�)rr\rEr�
services.authrrr�rr�core.help_systemr�core.configr	�"modules.comunicacion.floating_chatr359�ImportErrorrr|�modules.sst.sos_servicerrrrrrr�<module>r�s���	���2�A�/�#� �G�360�7�361S	�n!�q	&�q	&��K� �	�;�A�3�362?�@���� �����O��s(�A�A,�A)�
A$�$A)�,A7�6A7