|
|
<!DOCTYPE html>
|
|
|
<html lang="pt-br">
|
|
|
|
|
|
<head>
|
|
|
<meta charset="UTF-8">
|
|
|
<title>KEXEL GALLERY</title>
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
|
<meta name="description" content="KEXEL GALLERY COM A BASE EM NAVEGADOR PARA PLATAFORMAS MODERNAS..." />
|
|
|
<meta name="mobile-web-app-capable" content="yes" />
|
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
|
<meta name="application-name" content="KEXEL GALLERY" />
|
|
|
<meta name="apple-mobile-web-app-title" content="KEXEL GALLERY" />
|
|
|
<meta name="msapplication-starturl" content="/?Installed=kexel" />
|
|
|
<meta name="theme-color" content="#602ab6" />
|
|
|
<meta name="msapplication-navbutton-color" content="#602ab6" />
|
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
|
|
<meta name="apple-touch-fullscreen" content="yes" />
|
|
|
<meta name="robots" content="index, follow" />
|
|
|
<meta name="googlebot" content="index, follow" />
|
|
|
<meta property="og:image" content="./d-framework/icon/icon/512/favicon.png" />
|
|
|
<link rel="icon" type="image/png" sizes="512x512" href="./d-framework/icon/512/favicon.png" />
|
|
|
<link rel="apple-touch-icon" type="image/png" sizes="512x512" href="./d-framework/icon/512/favicon.png" />
|
|
|
<link rel="icon" type="image/png" sizes="192x192" href="./d-framework/icon/192/favicon.png" />
|
|
|
<link rel="apple-touch-icon" type="image/png" sizes="192x192" href="./d-framework/icon/192/favicon.png" />
|
|
|
<link rel="icon" type="image/png" sizes="144x144" href="./d-framework/icon/144/favicon.png" />
|
|
|
<link rel="apple-touch-icon" type="image/png" sizes="144x144" href="./d-framework/icon/144/favicon.png" />
|
|
|
<link rel="icon" type="image/png" sizes="96x96" href="./d-framework/icon/96/favicon.png" />
|
|
|
<link rel="apple-touch-icon" type="image/png" sizes="96x96" href="./d-framework/icon/96/favicon.png" />
|
|
|
<link rel="icon" type="image/png" sizes="72x72" href="./d-framework/icon/72/favicon.png" />
|
|
|
<link rel="apple-touch-icon" type="image/png" sizes="72x72" href="./d-framework/icon/72/favicon.png" />
|
|
|
<link rel="icon" type="image/png" sizes="48x48" href="./d-framework/icon/48/favicon.png" />
|
|
|
<link rel="apple-touch-icon" type="image/png" sizes="48x48" href="./d-framework/icon/48/favicon.png" />
|
|
|
<link rel="icon" type="image/png" sizes="36x36" href="./d-framework/icon/36/favicon.png" />
|
|
|
<link rel="apple-touch-icon" type="image/png" sizes="36x36" href="./d-framework/icon/36/favicon.png" />
|
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/css/all.min.css" />
|
|
|
<script src="https://cdn.jsdelivr.net/gh/davserv/d-framework@refs/heads/cdn.tailwindcss/tailwindcss.js"></script>
|
|
|
|
|
|
<script src="data:application/javascript;charset=utf-8;base64,dmFyIGNvbG9iZD0iIzJiMzAzNWM3Iixjb2xvbGlzPSIjNzI2ZDNiIixjb2xvdHh0PSIjZmZmOSIKZG9jdW1lbnQud3JpdGUoIjxzdHlsZT4ucGFjZXtwb2ludGVyLWV2ZW50czpub25lO3VzZXItc2VsZWN0Om5vbmU7ei1pbmRleDo5OTk5OTk5O3Bvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7YmFja2dyb3VuZDoiK2NvbG9iZCsnO292ZXJmbG93OmhpZGRlbn0ucGFjZTo6YmVmb3Jle2NvbnRlbnQ6IkNBUlJFR0FORE8uLi4iO2NvbG9yOicrY29sb3R4dCsiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo0NyU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpfS5wYWNlIC5wYWNlLXByb2dyZXNze2JveC1zaXppbmc6Ym9yZGVyLWJveDt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApO21heC13aWR0aDoxMDAlO3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MjAwMDtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTo1MCU7cmlnaHQ6MTAwJTtoZWlnaHQ6NXB4O3dpZHRoOjEwMCU7YmFja2dyb3VuZDoiK2NvbG9saXMrIn0ucGFjZS5wYWNlLWluYWN0aXZle2Rpc3BsYXk6bm9uZX08L3N0eWxlPiIpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19ZnVuY3Rpb24gZSgpe31mdW5jdGlvbiBuKCl7cmV0dXJuIG4uX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiByKCl7dGhpcy5wcm9ncmVzcz0wfWZ1bmN0aW9uIHMoKXt0aGlzLmJpbmRpbmdzPXt9fWZ1bmN0aW9uIG8oKXt2YXIgdCxlPXRoaXMKby5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpLHQ9ZnVuY3Rpb24odCl7dmFyIG49dC5vcGVuCnJldHVybiB0Lm9wZW49ZnVuY3Rpb24ocixzLG8pe3JldHVybiBEKHIpJiZlLnRyaWdnZXIoInJlcXVlc3QiLHt0eXBlOnIsdXJsOnMscmVxdWVzdDp0fSksbi5hcHBseSh0LGFyZ3VtZW50cyl9fSx3aW5kb3cuWE1MSHR0cFJlcXVlc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9bmV3IEsoZSksdChlKSxlfQp0cnl7Tyh3aW5kb3cuWE1MSHR0cFJlcXVlc3QsSyl9Y2F0Y2gobil7fWlmKG51bGwhPUope3dpbmRvdy5YRG9tYWluUmVxdWVzdD1mdW5jdGlvbigpe3ZhciBlPW5ldyBKCnJldHVybiB0KGUpLGV9CnRyeXtPKHdpbmRvdy5YRG9tYWluUmVxdWVzdCxKKX1jYXRjaChuKXt9fWlmKG51bGwhPUImJl8uYWpheC50cmFja1dlYlNvY2tldHMpe3dpbmRvdy5XZWJTb2NrZXQ9ZnVuY3Rpb24odCxuKXt2YXIgcj1udWxsIT1uP25ldyBCKHQsbik6bmV3IEIodCkKcmV0dXJuIEQoInNvY2tldCIpJiZlLnRyaWdnZXIoInJlcXVlc3QiLHt0eXBlOiJzb2NrZXQiLHVybDp0LHByb3RvY29sczpuLHJlcXVlc3Q6cn0pLHJ9CnRyeXtPKHdpbmRvdy5XZWJTb2NrZXQsQil9Y2F0Y2gobil7fX19ZnVuY3Rpb24gaSgpe3RoaXMuY29tcGxldGU9dCh0aGlzLmNvbXBsZXRlLHRoaXMpCnZhciBlPXRoaXMKdGhpcy5lbGVtZW50cz1bXSxBKCkub24oInJlcXVlc3QiLGZ1bmN0aW9uKCl7cmV0dXJuIGUud2F0Y2guYXBwbHkoZSxhcmd1bWVudHMpfSl9ZnVuY3Rpb24gYShlKXt2YXIgbixyLHMsbwpmb3IobnVsbD09ZSYmKGU9e30pLHRoaXMuY29tcGxldGU9dCh0aGlzLmNvbXBsZXRlLHRoaXMpLHRoaXMuZWxlbWVudHM9W10sbnVsbD09ZS5zZWxlY3RvcnMmJihlLnNlbGVjdG9ycz1bXSkscj0wLHM9KG89ZS5zZWxlY3RvcnMpLmxlbmd0aDtzPnI7cisrKW49b1tyXSx0aGlzLmVsZW1lbnRzLnB1c2gobmV3IGcobix0aGlzLmNvbXBsZXRlKSl9ZnVuY3Rpb24gdSh0LGUpe3RoaXMuc2VsZWN0b3I9dCx0aGlzLmNvbXBsZXRlQ2FsbGJhY2s9ZSx0aGlzLnByb2dyZXNzPTAsdGhpcy5jaGVjaygpfWZ1bmN0aW9uIGMoKXt2YXIgdCxlLG49dGhpcwp0aGlzLnByb2dyZXNzPW51bGwhPShlPXRoaXMuc3RhdGVzW2RvY3VtZW50LnJlYWR5U3RhdGVdKT9lOjEwMCx0PWRvY3VtZW50Lm9ucmVhZHlzdGF0ZWNoYW5nZSxkb2N1bWVudC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9bi5zdGF0ZXNbZG9jdW1lbnQucmVhZHlTdGF0ZV0mJihuLnByb2dyZXNzPW4uc3RhdGVzW2RvY3VtZW50LnJlYWR5U3RhdGVdKSwiZnVuY3Rpb24iPT10eXBlb2YgdD90LmFwcGx5KG51bGwsYXJndW1lbnRzKTp2b2lkIDB9fWZ1bmN0aW9uIGwodCl7dGhpcy5zb3VyY2U9dCx0aGlzLmxhc3Q9dGhpcy5zaW5jZUxhc3RVcGRhdGU9MCx0aGlzLnJhdGU9Xy5pbml0aWFsUmF0ZSx0aGlzLmNhdGNodXA9MCx0aGlzLnByb2dyZXNzPXRoaXMubGFzdFByb2dyZXNzPTAsbnVsbCE9dGhpcy5zb3VyY2UmJih0aGlzLnByb2dyZXNzPVUodGhpcy5zb3VyY2UsInByb2dyZXNzIikpfXZhciBwLGgsZyxmLGQsbSx5LHYsdyxiLGsseCxTLHEsTCxSLFAsVCxPLGosQSxFLEMsTSxOLF8sRixVLFcsWCx6LEQsSCxJLEcsQixKLEssUSxWLFksWiwkLHR0LGV0LG50PVtdLnNsaWNlLHJ0PXt9Lmhhc093blByb3BlcnR5LHN0PWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIHIgaW4gZSlydC5jYWxsKGUscikmJih0W3JdPWVbcl0pCnJldHVybiBuLnByb3RvdHlwZT1lLnByb3RvdHlwZSx0LnByb3RvdHlwZT1uZXcgbix0Ll9fc3VwZXJfXz1lLnByb3RvdHlwZSx0fSxvdD1bXS5pbmRleE9mfHxmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPXRoaXMubGVuZ3RoO24+ZTtlKyspaWYoZSBpbiB0aGlzJiZ0aGlzW2VdPT09dClyZXR1cm4gZQpyZXR1cm4tMX0KZm9yKFA9e2NsYXNzTmFtZToiIixjYXRjaHVwVGltZToxMDAsaW5pdGlhbFJhdGU6LjAzLG1pblRpbWU6MjUwLGdob3N0VGltZToxMDAsbWF4UHJvZ3Jlc3NQZXJGcmFtZToyMCxlYXNlRmFjdG9yOjEuMjUsc3RhcnRPblBhZ2VMb2FkOiEwLHJlc3RhcnRPblB1c2hTdGF0ZTohMCxyZXN0YXJ0T25SZXF1ZXN0QWZ0ZXI6NTAwLHRhcmdldDoiYm9keSIsZWxlbWVudHM6e2NoZWNrSW50ZXJ2YWw6MTAwLHNlbGVjdG9yczpbImJvZHkiXX0sZXZlbnRMYWc6e21pblNhbXBsZXM6MTAsc2FtcGxlQ291bnQ6MyxsYWdUaHJlc2hvbGQ6M30sYWpheDp7dHJhY2tNZXRob2RzOlsiR0VUIl0sdHJhY2tXZWJTb2NrZXRzOiEwLGlnbm9yZVVSTHM6W119fSxOPWZ1bmN0aW9uKCl7dmFyIHQKcmV0dXJuIG51bGwhPSh0PSJ1bmRlZmluZWQiIT10eXBlb2YgcGVyZm9ybWFuY2UmJm51bGwhPT1wZXJmb3JtYW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIHBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZS5ub3coKTp2b2lkIDApP3Q6K25ldyBEYXRlfSxGPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZSxSPXdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZXx8d2luZG93Lm1vekNhbmNlbEFuaW1hdGlvbkZyYW1lLGs9ZnVuY3Rpb24odCxlLG4pe3JldHVybigiZnVuY3Rpb24iPT10eXBlb2YgdC5hZGRFdmVudExpc3RlbmVyP3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4sITEpOnZvaWQgMCl8fCh0WyJvbiIrZV09bil9LG51bGw9PUYmJihGPWZ1bmN0aW9uKHQpe3JldHVybiBzZXRUaW1lb3V0KHQsNTApfSxSPWZ1bmN0aW9uKHQpe3JldHVybiBjbGVhclRpbWVvdXQodCl9KSxXPWZ1bmN0aW9uKHQpe3ZhciBlPU4oKSxuPWZ1bmN0aW9uKCl7dmFyIHI9TigpLWUKcmV0dXJuIDMzPnI/c2V0VGltZW91dChuLDMzLXIpOihlPU4oKSx0KHIsZnVuY3Rpb24oKXtyZXR1cm4gRihuKX0pKX0KcmV0dXJuIG4oKX0sVT1mdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50c1swXSxlPWFyZ3VtZW50c1sxXSxuPTM+YXJndW1lbnRzLmxlbmd0aD9bXTpudC5jYWxsKGFyZ3VtZW50cywyKQpyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdFtlXT90W2VdLmFwcGx5KHQsbik6dFtlXX0sVD1mdW5jdGlvbigpe2Zvcih2YXIgdCxlLG4scj1hcmd1bWVudHNbMF0scz0yPmFyZ3VtZW50cy5sZW5ndGg/W106bnQuY2FsbChhcmd1bWVudHMsMSksbz0wLGk9cy5sZW5ndGg7aT5vO28rKylpZihlPXNbb10pZm9yKHQgaW4gZSlydC5jYWxsKGUsdCkmJihuPWVbdF0sbnVsbCE9clt0XSYmIm9iamVjdCI9PXR5cGVvZiByW3RdJiZudWxsIT1uJiYib2JqZWN0Ij09dHlwZW9mIG4/VChyW3RdLG4pOnJbdF09bikKcmV0dXJuIHJ9LFM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG4scj1lPTAscz0wLG89dC5sZW5ndGg7bz5zO3MrKyluPXRbc10scis9TWF0aC5hYnMobiksZSsrCnJldHVybiByL2V9LGo9ZnVuY3Rpb24odCxlKXt2YXIgbixyCmlmKG51bGw9PXQmJih0PSJvcHRpb25zIiksbnVsbD09ZSYmKGU9ITApLHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiW2RhdGEtcGFjZS0iK3QrIl0iKSl7aWYobj1yLmdldEF0dHJpYnV0ZSgiZGF0YS1wYWNlLSIrdCksIWUpcmV0dXJuIG4KdHJ5e3JldHVybiBKU09OLnBhcnNlKG4pfWNhdGNoKHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmbnVsbCE9PWNvbnNvbGU/Y29uc29sZS5lcnJvcigiRXJyb3IgcGFyc2luZyBpbmxpbmUgcGFjZSBvcHRpb25zIix0KTp2b2lkIDB9fX0sZS5wcm90b3R5cGUub249ZnVuY3Rpb24odCxlLG4scil7dmFyIHMKcmV0dXJuIG51bGw9PXImJihyPSExKSxudWxsPT10aGlzLmJpbmRpbmdzJiYodGhpcy5iaW5kaW5ncz17fSksbnVsbD09KHM9dGhpcy5iaW5kaW5ncylbdF0mJihzW3RdPVtdKSx0aGlzLmJpbmRpbmdzW3RdLnB1c2goe2hhbmRsZXI6ZSxjdHg6bixvbmNlOnJ9KX0sZS5wcm90b3R5cGUub25jZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMub24odCxlLG4sITApfSxlLnByb3RvdHlwZS5vZmY9ZnVuY3Rpb24odCxlKXt2YXIgbixyLHMKaWYobnVsbCE9KG51bGwhPShyPXRoaXMuYmluZGluZ3MpP3JbdF06dm9pZCAwKSl7aWYobnVsbD09ZSlyZXR1cm4gZGVsZXRlIHRoaXMuYmluZGluZ3NbdF0KZm9yKG49MCxzPVtdO248dGhpcy5iaW5kaW5nc1t0XS5sZW5ndGg7KXRoaXMuYmluZGluZ3NbdF1bbl0uaGFuZGxlcj09PWU/cy5wdXNoKHRoaXMuYmluZGluZ3NbdF0uc3BsaWNlKG4sMSkpOnMucHVzaChuKyspCnJldHVybiBzfX0sZS5wcm90b3R5cGUudHJpZ2dlcj1mdW5jdGlvbigpe3ZhciB0LGUsbixyLHMsbyxpPWFyZ3VtZW50c1swXSxhPTI+YXJndW1lbnRzLmxlbmd0aD9bXTpudC5jYWxsKGFyZ3VtZW50cywxKQppZihudWxsIT0ocj10aGlzLmJpbmRpbmdzKSYmcltpXSl7Zm9yKG49MCxvPVtdO248dGhpcy5iaW5kaW5nc1tpXS5sZW5ndGg7KWU9KHM9dGhpcy5iaW5kaW5nc1tpXVtuXSkuaGFuZGxlcix0PXMuY3R4LHM9cy5vbmNlLGUuYXBwbHkobnVsbCE9dD90OnRoaXMsYSkscz9vLnB1c2godGhpcy5iaW5kaW5nc1tpXS5zcGxpY2UobiwxKSk6by5wdXNoKG4rKykKcmV0dXJuIG99fSxldD1lLGQ9d2luZG93LlBhY2V8fHt9LHdpbmRvdy5QYWNlPWQsVChkLGV0LnByb3RvdHlwZSksXz1kLm9wdGlvbnM9VCh7fSxQLHdpbmRvdy5wYWNlT3B0aW9ucyxqKCkpLFE9MCxZPSgkPVsiYWpheCIsImRvY3VtZW50IiwiZXZlbnRMYWciLCJlbGVtZW50cyJdKS5sZW5ndGg7WT5RO1ErKykhMD09PV9bSD0kW1FdXSYmKF9bSF09UFtIXSkKZXQ9RXJyb3Isc3QobixldCksZj1uLHIucHJvdG90eXBlLmdldEVsZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgdCxlCmlmKG51bGw9PXRoaXMuZWwpe2lmKCEodD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKF8udGFyZ2V0KSkpdGhyb3cgbmV3IGYKdGhpcy5lbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmVsLmNsYXNzTmFtZT0icGFjZSBwYWNlLWFjdGl2ZSIsZG9jdW1lbnQuYm9keS5jbGFzc05hbWU9ZG9jdW1lbnQuYm9keS5jbGFzc05hbWUucmVwbGFjZSgvKHBhY2UtZG9uZSApfC8sInBhY2UtcnVubmluZyAiKSxlPSIiIT09Xy5jbGFzc05hbWU/IiAiK18uY2xhc3NOYW1lOiIiLHRoaXMuZWwuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJwYWNlLXByb2dyZXNzJytlKyciPjxkaXYgY2xhc3M9InBhY2UtcHJvZ3Jlc3MtaW5uZXIiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InBhY2UtYWN0aXZpdHkiPjwvZGl2PicsbnVsbCE9dC5maXJzdENoaWxkP3QuaW5zZXJ0QmVmb3JlKHRoaXMuZWwsdC5maXJzdENoaWxkKTp0LmFwcGVuZENoaWxkKHRoaXMuZWwpfXJldHVybiB0aGlzLmVsfSxyLnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldEVsZW1lbnQoKQpyZXR1cm4gdC5jbGFzc05hbWU9dC5jbGFzc05hbWUucmVwbGFjZSgicGFjZS1hY3RpdmUiLCJwYWNlLWluYWN0aXZlIiksZG9jdW1lbnQuYm9keS5jbGFzc05hbWU9ZG9jdW1lbnQuYm9keS5jbGFzc05hbWUucmVwbGFjZSgicGFjZS1ydW5uaW5nICIsInBhY2UtZG9uZSAiKX0sci5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnByb2dyZXNzPXQsZC50cmlnZ2VyKCJwcm9ncmVzcyIsdCksdGhpcy5yZW5kZXIoKX0sci5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RyeXt0aGlzLmdldEVsZW1lbnQoKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZ2V0RWxlbWVudCgpKX1jYXRjaCh0KXtmPXR9cmV0dXJuIHRoaXMuZWw9dm9pZCAwfSxyLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgdCxlLG4scixzLG8saQppZihudWxsPT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKF8udGFyZ2V0KSlyZXR1cm4hMQpmb3IodD10aGlzLmdldEVsZW1lbnQoKSxyPSJ0cmFuc2xhdGUzZCgiK3RoaXMucHJvZ3Jlc3MrIiUsIDAsIDApIixzPTAsbz0oaT1bIndlYmtpdFRyYW5zZm9ybSIsIm1zVHJhbnNmb3JtIiwidHJhbnNmb3JtIl0pLmxlbmd0aDtvPnM7cysrKWU9aVtzXSx0LmNoaWxkcmVuWzBdLnN0eWxlW2VdPXIKcmV0dXJuKCF0aGlzLmxhc3RSZW5kZXJlZFByb2dyZXNzfHx0aGlzLmxhc3RSZW5kZXJlZFByb2dyZXNzfDAhPT10aGlzLnByb2dyZXNzfDApJiYodC5jaGlsZHJlblswXS5zZXRBdHRyaWJ1dGUoImRhdGEtcHJvZ3Jlc3MtdGV4dCIsKDB8dGhpcy5wcm9ncmVzcykrIiUiKSwxMDA+dGhpcy5wcm9ncmVzcz8obj10aGlzLnByb2dyZXNzPDEwPyIwIjoiIixuKz0wfHRoaXMucHJvZ3Jlc3MpOm49Ijk5Iix0LmNoaWxkcmVuWzBdLnNldEF0dHJpYnV0ZSgiZGF0YS1wcm9ncmVzcyIsIiIrbikpLGQudHJpZ2dlcigiY2hhbmdlIix0aGlzLnByb2dyZXNzKSx0aGlzLmxhc3RSZW5kZXJlZFByb2dyZXNzPXRoaXMucHJvZ3Jlc3N9LHIucHJvdG90eXBlLmRvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gMTAwPD10aGlzLnByb2dyZXNzfSxoPXIscy5wcm90b3R5cGUudHJpZ2dlcj1mdW5jdGlvbih0LGUpe3ZhciBuLHIscyxvLGkKaWYobnVsbCE9dGhpcy5iaW5kaW5nc1t0XSl7Zm9yKGk9W10scj0wLHM9KG89dGhpcy5iaW5kaW5nc1t0XSkubGVuZ3RoO3M+cjtyKyspbj1vW3JdLGkucHVzaChuLmNhbGwodGhpcyxlKSkKcmV0dXJuIGl9fSxzLnByb3RvdHlwZS5vbj1mdW5jdGlvbih0LGUpe3ZhciBuCnJldHVybiBudWxsPT0obj10aGlzLmJpbmRpbmdzKVt0XSYmKG5bdF09W10pLHRoaXMuYmluZGluZ3NbdF0ucHVzaChlKX0saj1zLEs9d2luZG93LlhNTEh0dHBSZXF1ZXN0LEo9d2luZG93LlhEb21haW5SZXF1ZXN0LEI9d2luZG93LldlYlNvY2tldCxPPWZ1bmN0aW9uKHQsZSl7dmFyIG4scj1bXQpmb3IobiBpbiBlLnByb3RvdHlwZSl0cnl7bnVsbD09dFtuXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGVbbl0/ImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0eT9yLnB1c2goT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7Z2V0OmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlLnByb3RvdHlwZVt0XX19KG4pLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSkpOnIucHVzaCh0W25dPWUucHJvdG90eXBlW25dKTpyLnB1c2godm9pZCAwKX1jYXRjaCh0KXt9cmV0dXJuIHJ9LEM9W10sZC5pZ25vcmU9ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHNbMF0sZT0yPmFyZ3VtZW50cy5sZW5ndGg/W106bnQuY2FsbChhcmd1bWVudHMsMSkKcmV0dXJuIEMudW5zaGlmdCgiaWdub3JlIiksZT10LmFwcGx5KG51bGwsZSksQy5zaGlmdCgpLGV9LGQudHJhY2s9ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHNbMF0sZT0yPmFyZ3VtZW50cy5sZW5ndGg/W106bnQuY2FsbChhcmd1bWVudHMsMSkKcmV0dXJuIEMudW5zaGlmdCgidHJhY2siKSxlPXQuYXBwbHkobnVsbCxlKSxDLnNoaWZ0KCksZX0sRD1mdW5jdGlvbih0KXtpZihudWxsPT10JiYodD0iR0VUIiksInRyYWNrIj09PUNbMF0pcmV0dXJuImZvcmNlIgppZighQy5sZW5ndGgmJl8uYWpheCl7aWYoInNvY2tldCI9PT10JiZfLmFqYXgudHJhY2tXZWJTb2NrZXRzKXJldHVybiEwCmlmKHQ9dC50b1VwcGVyQ2FzZSgpLDA8PW90LmNhbGwoXy5hamF4LnRyYWNrTWV0aG9kcyx0KSlyZXR1cm4hMH1yZXR1cm4hMX0sc3QobyxqKSxtPW8sVj1udWxsLHo9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49Xy5hamF4Lmlnbm9yZVVSTHMscj0wLHM9bi5sZW5ndGg7cz5yO3IrKylpZigic3RyaW5nIj09dHlwZW9mKGU9bltyXSkpe2lmKC0xIT09dC5pbmRleE9mKGUpKXJldHVybiEwfWVsc2UgaWYoZS50ZXN0KHQpKXJldHVybiEwCnJldHVybiExfSwoQT1mdW5jdGlvbigpe3JldHVybiBudWxsPT1WJiYoVj1uZXcgbSksVn0pKCkub24oInJlcXVlc3QiLGZ1bmN0aW9uKHQpe3ZhciBlLG49dC50eXBlLHI9dC5yZXF1ZXN0LHM9dC51cmwKcmV0dXJuIHoocyk/dm9pZCAwOmQucnVubmluZ3x8ITE9PT1fLnJlc3RhcnRPblJlcXVlc3RBZnRlciYmImZvcmNlIiE9PUQobik/dm9pZCAwOihlPWFyZ3VtZW50cywiYm9vbGVhbiI9PXR5cGVvZihzPV8ucmVzdGFydE9uUmVxdWVzdEFmdGVyfHwwKSYmKHM9MCksc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB0LHMsbyxpLGE9InNvY2tldCI9PT1uP3IucmVhZHlTdGF0ZTwxOjA8KGE9ci5yZWFkeVN0YXRlKSYmND5hCmlmKGEpe2ZvcihkLnJlc3RhcnQoKSxpPVtdLHQ9MCxzPShvPWQuc291cmNlcykubGVuZ3RoO3M+dDt0Kyspe2lmKChIPW9bdF0paW5zdGFuY2VvZiBwKXtILndhdGNoLmFwcGx5KEgsZSkKYnJlYWt9aS5wdXNoKHZvaWQgMCl9cmV0dXJuIGl9fSxzKSl9KSxpLnByb3RvdHlwZS53YXRjaD1mdW5jdGlvbih0KXt2YXIgZT10LnR5cGUsbj10LnJlcXVlc3QsdD10LnVybApyZXR1cm4geih0KT92b2lkIDA6KG49bmV3KCJzb2NrZXQiPT09ZT93OmIpKG4sdGhpcy5jb21wbGV0ZSksdGhpcy5lbGVtZW50cy5wdXNoKG4pKX0saS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWxlbWVudHM9dGhpcy5lbGVtZW50cy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT10fSl9LHA9aSxiPWZ1bmN0aW9uKHQsZSl7dmFyIG4scixzLG8saT10aGlzCmlmKHRoaXMucHJvZ3Jlc3M9MCxudWxsIT13aW5kb3cuUHJvZ3Jlc3NFdmVudClmb3Ioayh0LCJwcm9ncmVzcyIsZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RoQ29tcHV0YWJsZT9pLnByb2dyZXNzPTEwMCp0LmxvYWRlZC90LnRvdGFsOmkucHJvZ3Jlc3M9aS5wcm9ncmVzcysoMTAwLWkucHJvZ3Jlc3MpLzJ9KSxuPTAscj0obz1bImxvYWQiLCJhYm9ydCIsInRpbWVvdXQiLCJlcnJvciJdKS5sZW5ndGg7cj5uO24rKylrKHQsb1tuXSxmdW5jdGlvbigpe3JldHVybiBlKGkpLGkucHJvZ3Jlc3M9MTAwfSkKZWxzZSBzPXQub25yZWFkeXN0YXRlY2hhbmdlLHQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7dmFyIG4KcmV0dXJuIDA9PT0obj10LnJlYWR5U3RhdGUpfHw0PT09bj8oZShpKSxpLnByb2dyZXNzPTEwMCk6Mz09PXQucmVhZHlTdGF0ZSYmKGkucHJvZ3Jlc3M9NTApLCJmdW5jdGlvbiI9PXR5cGVvZiBzP3MuYXBwbHkobnVsbCxhcmd1bWVudHMpOnZvaWQgMH19LHc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4scj10aGlzLHM9dGhpcy5wcm9ncmVzcz0wLG89KG49WyJlcnJvciIsIm9wZW4iXSkubGVuZ3RoO28+cztzKyspayh0LG5bc10sZnVuY3Rpb24oKXtyZXR1cm4gZShyKSxyLnByb2dyZXNzPTEwMH0pfSxhLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbGVtZW50cz10aGlzLmVsZW1lbnRzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSE9PXR9KX0sZXQ9YSx1LnByb3RvdHlwZS5jaGVjaz1mdW5jdGlvbigpe3ZhciB0PXRoaXMKcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5zZWxlY3Rvcik/dGhpcy5kb25lKCk6c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB0LmNoZWNrKCl9LF8uZWxlbWVudHMuY2hlY2tJbnRlcnZhbCl9LHUucHJvdG90eXBlLmRvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb21wbGV0ZUNhbGxiYWNrKHRoaXMpLHRoaXMuY29tcGxldGVDYWxsYmFjaz1udWxsLHRoaXMucHJvZ3Jlc3M9MTAwfSxnPXUsYy5wcm90b3R5cGUuc3RhdGVzPXtsb2FkaW5nOjAsaW50ZXJhY3RpdmU6NTAsY29tcGxldGU6MTAwfSxzdD1jLGo9ZnVuY3Rpb24oKXt2YXIgdCxlLG4scixzLG89dGhpcwp0aGlzLnByb2dyZXNzPTAscz1bXSxyPTAsbj1OKCksZT1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3ZhciBpPU4oKS1uLTUwCnJldHVybiBuPU4oKSxzLnB1c2goaSkscy5sZW5ndGg+Xy5ldmVudExhZy5zYW1wbGVDb3VudCYmcy5zaGlmdCgpLHQ9UyhzKSwrK3I+PV8uZXZlbnRMYWcubWluU2FtcGxlcyYmdDxfLmV2ZW50TGFnLmxhZ1RocmVzaG9sZD8oby5wcm9ncmVzcz0xMDAsY2xlYXJJbnRlcnZhbChlKSk6by5wcm9ncmVzcz0zLyh0KzMpKjEwMH0sNTApfSxsLnByb3RvdHlwZS50aWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWUmJihlPVUodGhpcy5zb3VyY2UsInByb2dyZXNzIikpLGU+PTEwMCYmKHRoaXMuZG9uZT0hMCksZT09PXRoaXMubGFzdD90aGlzLnNpbmNlTGFzdFVwZGF0ZSs9dDoodGhpcy5zaW5jZUxhc3RVcGRhdGUmJih0aGlzLnJhdGU9KGUtdGhpcy5sYXN0KS90aGlzLnNpbmNlTGFzdFVwZGF0ZSksdGhpcy5jYXRjaHVwPShlLXRoaXMucHJvZ3Jlc3MpL18uY2F0Y2h1cFRpbWUsdGhpcy5zaW5jZUxhc3RVcGRhdGU9MCx0aGlzLmxhc3Q9ZSksZT50aGlzLnByb2dyZXNzJiYodGhpcy5wcm9ncmVzcys9dGhpcy5jYXRjaHVwKnQpLGU9MS1NYXRoLnBvdyh0aGlzLnByb2dyZXNzLzEwMCxfLmVhc2VGYWN0b3IpLHRoaXMucHJvZ3Jlc3MrPWUqdGhpcy5yYXRlKnQsdGhpcy5wcm9ncmVzcz1NYXRoLm1pbih0aGlzLmxhc3RQcm9ncmVzcytfLm1heFByb2dyZXNzUGVyRnJhbWUsdGhpcy5wcm9ncmVzcyksdGhpcy5wcm9ncmVzcz1NYXRoLm1heCgwLHRoaXMucHJvZ3Jlc3MpLHRoaXMucHJvZ3Jlc3M9TWF0aC5taW4oMTAwLHRoaXMucHJvZ3Jlc3MpLHRoaXMubGFzdFByb2dyZXNzPXRoaXMucHJvZ3Jlc3MsdGhpcy5wcm9ncmVzc30sdj1sLEw9eD1HPXE9WD1JPW51bGwsZC5ydW5uaW5nPSExLEU9ZnVuY3Rpb24oKXtyZXR1cm4gXy5yZXN0YXJ0T25QdXNoU3RhdGU/ZC5yZXN0YXJ0KCk6dm9pZCAwfSxudWxsIT13aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUmJihaPXdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSx3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gRSgpLFouYXBwbHkod2luZG93Lmhpc3RvcnksYXJndW1lbnRzKX0pLG51bGwhPXdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSYmKHR0PXdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSx3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gRSgpLHR0LmFwcGx5KHdpbmRvdy5oaXN0b3J5LGFyZ3VtZW50cyl9KSx5PXthamF4OnAsZWxlbWVudHM6ZXQsZG9jdW1lbnQ6c3QsZXZlbnRMYWc6an0sKE09ZnVuY3Rpb24oKXt2YXIgdCxlLG4scixzLG8saSxhCmZvcihkLnNvdXJjZXM9ST1bXSxlPTAscj0obz1bImFqYXgiLCJlbGVtZW50cyIsImRvY3VtZW50IiwiZXZlbnRMYWciXSkubGVuZ3RoO3I+ZTtlKyspITEhPT1fW3Q9b1tlXV0mJkkucHVzaChuZXcgeVt0XShfW3RdKSkKZm9yKG49MCxzPShhPW51bGwhPShpPV8uZXh0cmFTb3VyY2VzKT9pOltdKS5sZW5ndGg7cz5uO24rKylIPWFbbl0sSS5wdXNoKG5ldyBIKF8pKQpyZXR1cm4gZC5iYXI9cT1uZXcgaCxYPVtdLEc9bmV3IHZ9KSgpLGQuc3RvcD1mdW5jdGlvbigpe3JldHVybiBkLnRyaWdnZXIoInN0b3AiKSxkLnJ1bm5pbmc9ITEscS5kZXN0cm95KCksTD0hMCxudWxsIT14JiYoImZ1bmN0aW9uIj09dHlwZW9mIFImJlIoeCkseD1udWxsKSxNKCl9LGQucmVzdGFydD1mdW5jdGlvbigpe3JldHVybiBkLnRyaWdnZXIoInJlc3RhcnQiKSxkLnN0b3AoKSxkLnN0YXJ0KCl9LGQuZ289ZnVuY3Rpb24oKXt2YXIgdApyZXR1cm4gZC5ydW5uaW5nPSEwLHEucmVuZGVyKCksdD1OKCksTD0hMSx4PVcoZnVuY3Rpb24oZSxuKXtxLnByb2dyZXNzCmZvcih2YXIgcixzLG8saSxhLHUsYyxsLHAsaCxnPXU9MCxmPSEwLG09Yz0wLHk9SS5sZW5ndGg7eT5jO209KytjKWZvcihIPUlbbV0sYT1udWxsIT1YW21dP1hbbV06WFttXT1bXSxvPWw9MCxwPShzPW51bGwhPShoPUguZWxlbWVudHMpP2g6W0hdKS5sZW5ndGg7cD5sO289KytsKWk9c1tvXSxmJj0oaT1udWxsIT1hW29dP2Fbb106YVtvXT1uZXcgdihpKSkuZG9uZSxpLmRvbmV8fChnKyssdSs9aS50aWNrKGUpKQpyZXR1cm4gcj11L2cscS51cGRhdGUoRy50aWNrKGUscikpLHEuZG9uZSgpfHxmfHxMPyhxLnVwZGF0ZSgxMDApLGQudHJpZ2dlcigiZG9uZSIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gcS5maW5pc2goKSxkLnJ1bm5pbmc9ITEsZC50cmlnZ2VyKCJoaWRlIil9LE1hdGgubWF4KF8uZ2hvc3RUaW1lLE1hdGgubWF4KF8ubWluVGltZS0oTigpLXQpLDApKSkpOm4oKX0pfSxkLnN0YXJ0PWZ1bmN0aW9uKHQpe1QoXyx0KSxkLnJ1bm5pbmc9ITAKdHJ5e3EucmVuZGVyKCl9Y2F0Y2godCl7Zj10fXJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIucGFjZSIpPyhkLnRyaWdnZXIoInN0YXJ0IiksZC5nbygpKTpzZXRUaW1lb3V0KGQuc3RhcnQsNTApfSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShmdW5jdGlvbigpe3JldHVybiBkfSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWQ6Xy5zdGFydE9uUGFnZUxvYWQmJmQuc3RhcnQoKX0uY2FsbCh0aGlzKQ"></script>
|
|
|
|
|
|
<script> if (navigator.serviceWorker) { navigator.serviceWorker.register } </script>
|
|
|
<link rel="manifest" href="./manifest.json" />
|
|
|
|
|
|
<style>
|
|
|
.boxdbshadow {
|
|
|
box-shadow: 0 0 4px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.28) !important;
|
|
|
}
|
|
|
|
|
|
.bg-hover:hover,
|
|
|
.bg-hover:focus,
|
|
|
.bg-hover:active,
|
|
|
.bg-hover:target {
|
|
|
opacity: 0.45 !important;
|
|
|
}
|
|
|
|
|
|
html,
|
|
|
body {
|
|
|
height: 100%;
|
|
|
margin: 0;
|
|
|
padding: 0;
|
|
|
background-color: #1a202c;
|
|
|
}
|
|
|
|
|
|
.grid-item {
|
|
|
border-radius: 12px;
|
|
|
}
|
|
|
|
|
|
.grid-item:hover {
|
|
|
filter: brightness(1.2);
|
|
|
}
|
|
|
</style>
|
|
|
</head>
|
|
|
|
|
|
<body class="bg-gray-900 text-gray-100">
|
|
|
|
|
|
|
|
|
<div class="fixed top-0 left-0 z-50 w-72 h-screen bg-gray-800 text-white transform -translate-x-full transition-transform duration-300 ease-in-out"
|
|
|
id="offcanvasmenu" aria-labelledby="offcanvasmenuLabel">
|
|
|
<div class="flex justify-between items-center p-4 shadow-xl bg-gray-800">
|
|
|
<h5 class="text-lg font-bold flex items-center" id="offcanvasmenuLabel">
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 mr-3" fill="none" viewBox="0 0 24 24"
|
|
|
stroke="currentColor">
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16m-7 6h7">
|
|
|
</path>
|
|
|
</svg>
|
|
|
MENU
|
|
|
</h5>
|
|
|
<button type="button" class="text-white hover:text-gray-400"
|
|
|
onclick="document.getElementById('offcanvasmenu').classList.add('-translate-x-full')">
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24"
|
|
|
stroke="currentColor">
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12">
|
|
|
</path>
|
|
|
</svg>
|
|
|
</button>
|
|
|
</div>
|
|
|
<div class="p-4 overflow-y-auto">
|
|
|
<div class="text-sm font-light uppercase">
|
|
|
❝ Aplicativos para várias plataformas by Developer Davidsonbpe.❞
|
|
|
</div>
|
|
|
<hr class="my-4 border-gray-700">
|
|
|
<div class="space-y-2">
|
|
|
|
|
|
<button onclick="window.open('https://huggingface.co/KEXEL')"
|
|
|
class="w-full py-2 px-4 bg-gray-700 hover:bg-gray-600 text-left text-sm uppercase text-gray-400 rounded-none opacity-75 shadow">
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 inline-block mr-3" fill="none"
|
|
|
viewBox="0 0 24 24" stroke="currentColor">
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
|
d="M4 6h16M4 12h16m-7 6h7"></path>
|
|
|
</svg>
|
|
|
HuggingFace
|
|
|
</button>
|
|
|
|
|
|
<button onclick="window.open('https://github.com/davidsonbpe')"
|
|
|
class="w-full py-2 px-4 bg-gray-700 hover:bg-gray-600 text-left text-sm uppercase text-gray-400 rounded-none opacity-75 shadow">
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 inline-block mr-3" fill="none"
|
|
|
viewBox="0 0 24 24" stroke="currentColor">
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
|
d="M4 6h16M4 12h16m-7 6h7"></path>
|
|
|
</svg>
|
|
|
GitHub
|
|
|
</button>
|
|
|
<button onclick="window.open('https://codepen.io/davidsonbpe')"
|
|
|
class="w-full py-2 px-4 bg-gray-700 hover:bg-gray-600 text-left text-sm uppercase text-gray-400 rounded-none opacity-75 shadow">
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 inline-block mr-3" fill="none"
|
|
|
viewBox="0 0 24 24" stroke="currentColor">
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
|
d="M4 6h16M4 12h16m-7 6h7"></path>
|
|
|
</svg>
|
|
|
CodePen
|
|
|
</button>
|
|
|
<button onclick="window.open('https://pag.ae/7Y3uUnhg8')"
|
|
|
class="w-full py-2 px-4 bg-gray-700 hover:bg-gray-600 text-left text-sm uppercase text-gray-400 rounded-none opacity-75 shadow">
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 inline-block mr-3" fill="none"
|
|
|
viewBox="0 0 24 24" stroke="currentColor">
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
|
d="M4 6h16M4 12h16m-7 6h7"></path>
|
|
|
</svg>
|
|
|
Doar com
|
|
|
</button>
|
|
|
<button
|
|
|
onclick="alert(document.title + ' | ' + document.querySelector('meta[name=description]').getAttribute('content'))"
|
|
|
class="w-full py-2 px-4 bg-gray-700 hover:bg-gray-600 text-left text-sm uppercase text-gray-400 rounded-none opacity-75 shadow">
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 inline-block mr-3" fill="none"
|
|
|
viewBox="0 0 24 24" stroke="currentColor">
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
|
d="M4 6h16M4 12h16m-7 6h7"></path>
|
|
|
</svg>
|
|
|
Informar
|
|
|
</button>
|
|
|
<button onclick="window.open('https://davidsonbpe.blogspot.com/')"
|
|
|
class="w-full py-2 px-4 bg-gray-700 hover:bg-gray-600 text-left text-sm uppercase text-gray-400 rounded-none opacity-75 shadow">
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 inline-block mr-3" fill="none"
|
|
|
viewBox="0 0 24 24" stroke="currentColor">
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
|
d="M4 6h16M4 12h16m-7 6h7"></path>
|
|
|
</svg>
|
|
|
Developer
|
|
|
</button>
|
|
|
<button onclick="sharesbutton()"
|
|
|
class="w-full py-2 px-4 bg-gray-700 hover:bg-gray-600 text-left text-sm uppercase text-gray-400 rounded-none opacity-75 shadow">
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 inline-block mr-3" fill="none"
|
|
|
viewBox="0 0 24 24" stroke="currentColor">
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
|
d="M4 6h16M4 12h16m-7 6h7"></path>
|
|
|
</svg>
|
|
|
Compartilhar
|
|
|
</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="p-4 border-t border-gray-700 absolute bottom-0 w-full inset-shadow-sm">
|
|
|
<button onclick="document.getElementById('offcanvasmenu').classList.add('-translate-x-full')"
|
|
|
class="float-right py-2 px-4 bg-gray-700 hover:bg-gray-600 text-sm uppercase text-gray-400 rounded-none opacity-75 shadow">
|
|
|
Sair
|
|
|
</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div class="fixed top-0 left-0 z-40 w-full flex items-center bg-gray-800 text-white boxdbshadow">
|
|
|
<img src="./d-framework/icon/192/favicon.png"
|
|
|
alt="Menu" class="w-14 h-14 cursor-pointer hover:bg-gray-700 bg-gray-600"
|
|
|
onclick="document.getElementById('offcanvasmenu').classList.remove('-translate-x-full')" />
|
|
|
<div class="flex-grow">
|
|
|
<select id="mySelects"
|
|
|
class="w-full py-2 px-4 bg-gray-800 text-white text-xl uppercase border-none focus:outline-none font-sans truncate bg-hover">
|
|
|
<option value="javascript:location.reload();">KEXEL GALLERY</option>
|
|
|
<option value="javascript:sharesbutton();">COMPARTILHAR</option>
|
|
|
<option value="javascript:window.open('https://dpripol.pages.dev/?='+document.title+'');">PRIVACY POLICY
|
|
|
</option>
|
|
|
<option value="javascript:window.open('https://pag.ae/7Y3uUnhg8');">DOAR COM</option>
|
|
|
</select>
|
|
|
</div>
|
|
|
<button onclick="sharesbutton()"
|
|
|
class="py-2 px-4 bg-gray-800 hover:bg-gray-700 text-yellow-500 text-xl border-l border-gray-700">
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" height="24px" viewBox="0 0 24 24" width="24px"
|
|
|
fill="#31c214">
|
|
|
<path d="M0 0h24v24H0z" fill="none" />
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
|
d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z" />
|
|
|
</svg>
|
|
|
</button>
|
|
|
</div>
|
|
|
|
|
|
<div class="container mt-14"></div>
|
|
|
|
|
|
<div id="screenshot-grid" class="grid grid-cols-2 sm:grid-cols-3 2xl:grid-cols-4 gap-2 p-4">
|
|
|
</div>
|
|
|
|
|
|
<div class="flex-grow container mx-auto px-4 py-8">
|
|
|
|
|
|
<div class="max-w-3xl mx-auto bg-white rounded-xl shadow-md overflow-hidden p-6 mt-8">
|
|
|
<div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4">
|
|
|
<p class="text-lg md:text-xl font-medium text-gray-800">
|
|
|
<i class="fas fa-shield-alt text-emerald-500 mr-2"></i>
|
|
|
Política de privacidade para usar nosso Serviço e as escolhas que você tem associado!
|
|
|
</p>
|
|
|
<button onclick="javascript:window.open('https://dpripol.pages.dev/?='+document.title+'')"
|
|
|
title="PRIVACY POLICY"
|
|
|
class="btn-hover-effect btn-active-effect transition-all duration-300 bg-emerald-500 hover:bg-emerald-600 text-white font-semibold px-8 py-3 rounded-full shadow-md focus:outline-none focus:ring-2 focus:ring-emerald-500 focus:ring-opacity-50">
|
|
|
<i class="fas fa-lock-open mr-2"></i>
|
|
|
PRIVACY POLICY
|
|
|
</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<footer class="bg-white shadow-sm py-4 mt-2">
|
|
|
<div class="container mx-auto px-4 text-center text-gray-500 text-sm uppercase">
|
|
|
<p>© <span id="datacedencer">2009</span> KEXEL GALLERY | Todos os direitos reservados</p>
|
|
|
</div>
|
|
|
</footer>
|
|
|
|
|
|
<script>
|
|
|
async function loadScreenshots() {
|
|
|
try {
|
|
|
const response = await fetch('d-framework/api.json');
|
|
|
if (!response.ok) {
|
|
|
throw new Error(`HTTP error! status: ${response.status}`);
|
|
|
}
|
|
|
|
|
|
const screenshotsData = await response.json();
|
|
|
|
|
|
const grid = document.getElementById('screenshot-grid');
|
|
|
grid.innerHTML = '';
|
|
|
const fragment = document.createDocumentFragment();
|
|
|
|
|
|
|
|
|
if (!Array.isArray(screenshotsData)) {
|
|
|
throw new Error("screenshots.json is not a valid array.");
|
|
|
}
|
|
|
|
|
|
|
|
|
screenshotsData.forEach(item => {
|
|
|
if (!item || typeof item.filename !== 'string' || !item.imgshot) {
|
|
|
console.warn("Skipping invalid item in screenshots.json:", item);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
|
|
|
if (typeof item.rating !== 'number' || item.rating < 50) {
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
|
|
|
const filename = item.filename;
|
|
|
const imgshot = item.imgshot;
|
|
|
|
|
|
|
|
|
const gridItem = document.createElement('div');
|
|
|
gridItem.className = 'grid-item relative';
|
|
|
|
|
|
const img = document.createElement('img');
|
|
|
img.src = `d-framework/screenshot/${imgshot}`;
|
|
|
|
|
|
|
|
|
img.loading = 'lazy';
|
|
|
img.decoding = 'async';
|
|
|
img.className = 'w-full h-auto object-cover rounded-lg shadow-md';
|
|
|
|
|
|
|
|
|
const link = document.createElement('a');
|
|
|
|
|
|
link.href = `https://${filename}`;
|
|
|
|
|
|
link.target = '_blank';
|
|
|
link.rel = 'noopener noreferrer';
|
|
|
link.appendChild(img);
|
|
|
gridItem.appendChild(link);
|
|
|
fragment.appendChild(gridItem);
|
|
|
});
|
|
|
|
|
|
|
|
|
grid.appendChild(fragment);
|
|
|
|
|
|
} catch (error) {
|
|
|
console.error('Failed to load screenshots:', error);
|
|
|
const grid = document.getElementById('screenshot-grid');
|
|
|
grid.innerHTML = '<p class="text-red-500 text-center col-span-3">Failed to load screenshots. Check console for details.</p>';
|
|
|
}
|
|
|
}
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', loadScreenshots);
|
|
|
|
|
|
|
|
|
fetch("https://dav7.pages.dev/api/serve.json")
|
|
|
.then((response) => response.json())
|
|
|
.then((data) => {
|
|
|
const sites = data.sites;
|
|
|
const mySelects = document.getElementById("mySelects");
|
|
|
sites.forEach((sites) => {
|
|
|
const preElement = document.createElement("option");
|
|
|
preElement.value = `${sites.properties.links}`;
|
|
|
preElement.textContent = `${sites.properties.title}`;
|
|
|
mySelects.appendChild(preElement);
|
|
|
});
|
|
|
})
|
|
|
.catch((error) => {
|
|
|
console.log("ERROR", error);
|
|
|
});
|
|
|
const select = document.getElementById("mySelects");
|
|
|
select.addEventListener("change", function () {
|
|
|
const url = this.value;
|
|
|
if (url) {
|
|
|
window.location = url;
|
|
|
}
|
|
|
});
|
|
|
|
|
|
function sharesbutton() {
|
|
|
navigator.share({
|
|
|
title: document.title,
|
|
|
text: "Compartilhar" + document.title,
|
|
|
url: window.location.href
|
|
|
});
|
|
|
}
|
|
|
var creditsyear = new Date();
|
|
|
document.getElementById("datacedencer").innerHTML = creditsyear.getFullYear();
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<script src="https://redek-dp.github.io/servdevanalytics/v1/app.id.js"></script>
|
|
|
|
|
|
</body>
|
|
|
|
|
|
</html> |