CINXE.COM
SQLite & Rails in Production · The Ruby Dispatch
<!doctype html> <html lang="en-US" class="h-full" data-menu-state="off" data-motion="off"> <head> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="keywords" content="fly, fly.io, blog, rails, ruby, docker, cdn, hosting, servers, networking, deploy app servers, close to users, postgresql clusters, heroku competitor, heroku alternative"> <meta name="description" content="Documentation and guides from the team at Fly.io."> <title>SQLite & Rails in Production · The Ruby Dispatch</title> <meta name="referrer" content="origin"> <meta name="HandheldFriendly" content="True"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="msapplication-TileColor" content="#4d7cfe"> <meta name="theme-color" content="#ffffff"> <meta property="og:locale" content="en_US"> <meta property="og:url" content="https://fly.io/ruby-dispatch/sqlite-and-rails-in-production/"> <meta property="og:type" content="article"> <meta property="og:title" content="SQLite & Rails in Production"> <meta property="og:image" content="https://fly.io/ruby-dispatch/sqlite-and-rails-in-production/assets/sqlite.jpg"> <meta property="og:description" content="Documentation and guides from the team at Fly.io."> <meta property="og:site_name" content="Fly"> <meta name="twitter:site" content="@flydotio"> <meta name="twitter:creator" content="@flydotio"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="SQLite & Rails in Production"> <meta name="twitter:image" content="https://fly.io/ruby-dispatch/sqlite-and-rails-in-production/assets/sqlite.jpg"> <meta name="twitter:description" content="Documentation and guides from the team at Fly.io."> <link rel="shortcut icon" type="image/x-icon" href="/static/images/favicon/favicon.ico"> <link rel="apple-touch-icon" sizes="180x180" href="/static/images/favicon/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="/static/images/favicon/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/static/images/favicon/favicon-16x16.png"> <link rel="mask-icon" href="/static/images/favicon/safari-pinned-tab.svg" color="#4d7cfe"> <link rel="canonical" href="https://fly.io/ruby-dispatch/sqlite-and-rails-in-production/"> <style> html:not([data-motion=on]) * { transition: none !important; animation: none !important; } </style> <script> let resizeTimer window.addEventListener('resize', () => { document.documentElement.dataset.motion = 'off' clearTimeout(resizeTimer) resizeTimer = setTimeout(() => { document.documentElement.dataset.motion = 'on' }, 500) }) document.addEventListener('DOMContentLoaded', () => { document.documentElement.dataset.motion = 'on' }) </script> <style>@font-face{font-family:'Fricolage Grotesque';font-weight:100 900;font-display:block;font-style:normal;font-named-instance:'Regular';src:url(/static/fonts/fricolage-grotesque.var.woff2) format('woff2');}@font-face{font-family:'Mackinac';src:url(/static/fonts/mackinac-medium.woff2) format('woff2');font-weight:500;font-style:normal;font-display:block;}@font-face{font-family:'Mackinac';src:url(/static/fonts/mackinac-medium-italic.woff2) format('woff2');font-weight:500;font-style:italic;font-display:block;}@font-face{font-family:'Mackinac';src: url(/static/fonts/mackinac-bold.woff2) format('woff2');font-weight:700;font-style:normal;font-display:block;}@font-face{font-family:'Fragment Mono';src:url(/static/fonts/fragment-mono-regular.woff2) format('woff2');font-weight:400;font-style:normal;font-display:block;}@font-face{font-family:'Fragment Mono';src:url(/static/fonts/fragment-mono-italic.woff2) format('woff2');font-weight:400;font-style:italic;font-display:block;}</style><script>var fontsInServiceWorker=sessionStorage.foutFontsStage1Loaded&&sessionStorage.foutFontsStage2Loaded||"serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state;if(!fontsInServiceWorker&&"fonts"in document){function fetchFonts(o){return Promise.all(o.map((function(o){return document.fonts.load(o)})))}sessionStorage.foutFontsStage2Loaded?document.documentElement.className+=" wf-loaded-stage2":sessionStorage.foutFontsStage1Loaded=!0}if("fonts"in document){let o=new FontFace("Fricolage Grotesque","url('/static/fonts/fricolage-grotesque.var.woff2') format('woff2')",{weight:"100 900",style:"normal"}),t=new FontFace("Mackinac","url('/static/fonts/mackinac-medium.woff2') format('woff2')",{weight:"500"}),e=new FontFace("Mackinac","url('/static/fonts/mackinac-medium-italic.woff2') format('woff2')",{weight:"500",style:"italic"}),a=new FontFace("Mackinac","url('/static/fonts/mackinac-bold.woff2') format('woff2')",{weight:"700"}),n=new FontFace("Fragment Mono","url('/static/fonts/fragment-mono-regular.woff2') format('woff2')",{weight:"400"}),r=new FontFace("Fragment Mono","url('/static/fonts/fragment-mono-italic.woff2') format('woff2')",{weight:"400",style:"italic"});Promise.all([o.load(),t.load(),e.load(),a.load(),n.load(),r.load()]).then((o=>{o.forEach((o=>document.fonts.add(o))),document.documentElement.classList.add("wf-loaded-stage2"),sessionStorage.foutFontsStage2Loaded=!0})).catch((o=>{throw new Error(`Error caught: ${o}`)}))}(sessionStorage.foutFontsStage1Loaded&&sessionStorage.foutFontsStage2Loaded||"serviceWorker"in navigator&&null!==navigator.serviceWorker.controller&&"activated"===navigator.serviceWorker.controller.state)&&document.documentElement.classList.add("wf-loaded-stage2");</script><link rel="preload" href="/static/fonts/fricolage-grotesque.var.woff2" as="font" type="font/woff2" crossorigin/><link rel="preload" href="/static/fonts/mackinac-medium.woff2" as="font" type="font/woff2" crossorigin/><link rel="preload" href="/static/fonts/mackinac-medium-italic.woff2" as="font" type="font/woff2" crossorigin/><link rel="preload" href="/static/fonts/mackinac-bold.woff2" as="font" type="font/woff2" crossorigin/><link rel="preload" href="/static/fonts/mackinac-bold-italic.woff2" as="font" type="font/woff2" crossorigin/><link rel="preload" href="/static/fonts/fragment-mono-regular.woff2" as="font" type="font/woff2" crossorigin/><link rel="preload" href="/static/fonts/fragment-mono-italic.woff2" as="font" type="font/woff2" crossorigin/> <link rel="stylesheet" href="/stylesheets/tailwind.css" media="screen" /> <script defer data-domain="fly.io" src="/js/events.js"></script> <link rel="preconnect" href="https://4ET05XOQRG-dsn.algolia.net" crossorigin> </head> <body class="post relative w-full h-full antialiased text-gray-600"> <header class="navbar relative z-[500] container mx-auto px-4 sm:px-6 lg:px-8 flex items-center h-24 text-navy-900 font-medium text-sm" data-menu-container > <nav id="logo" aria-label="Logo menu" class="relative z-[60] flex" > <a href="/" > <svg role="img" class="" fill-rule="evenodd" viewBox="0 0 92 84" style="pointer-events: none; width: auto; height: 36px;" aria-labelledby="logo-title-5896 logo-description-5896" > <title id="logo-title-5896">Fly</title> <desc id="logo-description-5896">App performance optimization</desc> <g buffered-rendering="static"> <path d="M57.413 10.134h9.454c8.409 0 15.236 6.827 15.236 15.236v33.243c0 8.409-6.827 15.236-15.236 15.236h-.745c-4.328-.677-6.205-1.975-7.655-3.072l-12.02-9.883a1.692 1.692 0 0 0-2.128 0l-3.905 3.211-10.998-9.043a1.688 1.688 0 0 0-2.127 0L12.01 68.503c-3.075 2.501-5.109 2.039-6.428 1.894C2.175 67.601 0 63.359 0 58.613V25.37c0-8.409 6.827-15.236 15.237-15.236h9.433l-.017.038-.318.927-.099.318-.428 1.899-.059.333-.188 1.902-.025.522-.004.183.018.872.043.511.106.8.135.72.16.663.208.718.54 1.52.178.456.94 1.986.332.61 1.087 1.866.416.673 1.517 2.234.219.296 1.974 2.569.638.791 2.254 2.635.463.507 1.858 1.999.736.762 1.216 1.208-.244.204-.152.137c-.413.385-.805.794-1.172 1.224a10.42 10.42 0 0 0-.504.644 8.319 8.319 0 0 0-.651 1.064 6.234 6.234 0 0 0-.261.591 5.47 5.47 0 0 0-.353 1.606l-.007.475a5.64 5.64 0 0 0 .403 1.953 5.44 5.44 0 0 0 1.086 1.703c.338.36.723.674 1.145.932.359.22.742.401 1.14.539a6.39 6.39 0 0 0 2.692.306h.005a6.072 6.072 0 0 0 2.22-.659c.298-.158.582-.341.848-.549a5.438 5.438 0 0 0 1.71-2.274c.28-.699.417-1.446.405-2.198l-.022-.393a5.535 5.535 0 0 0-.368-1.513 6.284 6.284 0 0 0-.285-.618 8.49 8.49 0 0 0-.67-1.061 11.022 11.022 0 0 0-.354-.453 14.594 14.594 0 0 0-1.308-1.37l-.329-.28.557-.55 2.394-2.5.828-.909 1.287-1.448.837-.979 1.194-1.454.808-1.016 1.187-1.587.599-.821.85-1.271.708-1.083 1.334-2.323.763-1.524.022-.047.584-1.414a.531.531 0 0 0 .02-.056l.629-1.962.066-.286.273-1.562.053-.423.016-.259.019-.978-.005-.182-.05-.876-.062-.68-.31-1.961c-.005-.026-.01-.052-.018-.078l-.398-1.45-.137-.403-.179-.446Zm4.494 41.455a3.662 3.662 0 0 0-3.61 3.61 3.663 3.663 0 0 0 3.61 3.609 3.665 3.665 0 0 0 3.611-3.609 3.663 3.663 0 0 0-3.611-3.61Z" fill='url(#default-radial-5896)' /> <path d="M35.639 72.544l-.637.535a3.332 3.332 0 01-2.09.762H15.235a15.176 15.176 0 01-9.654-3.451c1.319.145 3.353.607 6.428-1.894l15.277-13.44a1.693 1.693 0 012.127 0l10.997 9.042 3.904-3.21c.619-.5 1.51-.5 2.128 0l12.019 9.882c1.45 1.097 3.327 2.394 7.654 3.071H58.12a3.394 3.394 0 01-1.963-.654l-.14-.108-.593-.493a1.247 1.247 0 00-.158-.159c-.672-.563-9.187-7.617-9.187-7.617a1 1 0 00-1.281.002s.021.026-9.038 7.615a1.12 1.12 0 00-.121.117zm26.262-20.96a3.678 3.678 0 00-3.61 3.609 3.68 3.68 0 003.61 3.609 3.68 3.68 0 003.61-3.609 3.678 3.678 0 00-3.61-3.609zM38.566 40.648L37.35 39.44l-.736-.762-1.858-1.999-.463-.507-2.253-2.634-.638-.791-1.974-2.569-.219-.296-1.517-2.234-.416-.673-1.087-1.866-.332-.61-.94-1.985-.178-.456-.539-1.52-.208-.718-.16-.663-.135-.72-.106-.8-.043-.511-.018-.872.004-.183.025-.522.188-1.901.059-.333.428-1.899.098-.318.318-.927.102-.24.506-1.112.351-.662.489-.806.487-.718.347-.456.4-.482.44-.484.377-.378.918-.808.671-.549c.016-.014.033-.026.05-.038l.794-.537.631-.402 1.198-.631c.018-.011.039-.02.058-.029l1.698-.705.157-.059 1.51-.442.638-.143.862-.173.572-.087.877-.109.598-.053 1.187-.063.465-.005.881.018.229.013 1.276.106 1.687.238.195.041 1.668.415.49.146.544.188.663.251.524.222.77.363.485.249.872.512.325.2 1.189.868.341.296.828.754.041.041.703.754.242.273.825 1.096.168.262.655 1.106.197.379.369.825.386.963.137.403.398 1.45a.89.89 0 01.018.078l.31 1.961.062.679.05.876.005.182-.019.978-.016.259-.053.423-.273 1.562-.066.286-.629 1.962a.626.626 0 01-.02.056l-.584 1.414-.022.047-.763 1.523-1.334 2.323-.708 1.083-.849 1.271-.599.821-1.187 1.587-.808 1.016-1.194 1.453-.837.979-1.287 1.448-.828.909-2.394 2.5-.556.55.328.28c.465.428.902.885 1.308 1.37.122.148.24.299.354.453.249.336.473.691.67 1.06.106.2.201.407.285.618.191.484.32.996.368 1.513l.022.393c.012.752-.125 1.5-.405 2.198a5.438 5.438 0 01-1.71 2.274c-.266.208-.55.391-.848.549a6.08 6.08 0 01-2.219.659h-.005a6.403 6.403 0 01-2.692-.306 5.882 5.882 0 01-1.14-.539 5.523 5.523 0 01-1.145-.932 5.458 5.458 0 01-1.086-1.703 5.662 5.662 0 01-.403-1.953l.007-.475a5.47 5.47 0 01.353-1.606c.077-.202.164-.399.261-.591.19-.37.408-.725.651-1.063.159-.221.328-.436.504-.644.367-.43.759-.839 1.172-1.224l.152-.137.244-.204z" class="fill-navy-950 transition-colors" /> <path d="M35.002 73.079l9.796-8.267a1 1 0 011.281-.002l9.938 8.269c.604.492 1.36.761 2.139.762h-25.28c.776 0 1.527-.269 2.126-.762zM41.1 43.568l.096.028c.031.015.057.036.085.055l.08.071c.198.182.39.373.575.569.13.139.257.282.379.43.155.187.3.383.432.587.057.09.11.181.16.276.043.082.082.167.116.253.06.15.105.308.119.469l-.003.302a1.726 1.726 0 01-.817 1.343 2.333 2.333 0 01-.994.327l-.373.011-.315-.028a2.398 2.398 0 01-.433-.105 2.07 2.07 0 01-.41-.192l-.246-.18a1.685 1.685 0 01-.56-.96 2.418 2.418 0 01-.029-.19l-.009-.288c.005-.078.017-.155.034-.232.043-.168.105-.331.183-.486.101-.194.216-.381.344-.559.213-.288.444-.562.691-.821.159-.168.322-.331.492-.488l.121-.109c.084-.055.085-.055.181-.083h.101zM40.481 3.42l.039-.003v33.665l-.084-.155a94.101 94.101 0 01-3.093-6.267 67.257 67.257 0 01-2.099-5.255 41.665 41.665 0 01-1.265-4.326c-.265-1.163-.469-2.343-.553-3.535a16.923 16.923 0 01-.029-1.528c.008-.444.026-.887.054-1.33.044-.696.115-1.391.217-2.081.081-.543.181-1.084.304-1.619.098-.425.212-.847.342-1.262.188-.6.413-1.186.675-1.758.096-.206.199-.411.307-.612.65-1.204 1.532-2.313 2.687-3.054a5.609 5.609 0 012.498-.88zm4.365.085l2.265.646c1.049.387 2.059.891 2.987 1.521a11.984 11.984 0 013.212 3.204c.502.748.918 1.555 1.243 2.398.471 1.247.763 2.554.866 3.882.03.348.047.697.054 1.046.008.324.006.649-.02.973-.064.725-.2 1.442-.407 2.14a17.03 17.03 0 01-.587 1.684c-.28.685-.591 1.357-.932 2.013-.754 1.457-1.623 2.852-2.553 4.201a65.451 65.451 0 01-3.683 4.806 91.02 91.02 0 01-4.417 4.896 93.66 93.66 0 002.907-5.949c.5-1.124.971-2.26 1.414-3.407.487-1.26.927-2.537 1.317-3.83.29-.969.546-1.948.757-2.938.181-.849.323-1.707.411-2.57.074-.72.101-1.444.083-2.166a30.867 30.867 0 00-.049-1.325c-.106-1.775-.376-3.545-.894-5.248a15.341 15.341 0 00-.714-1.892c-.663-1.444-1.588-2.793-2.84-3.778l-.42-.307z" class="fill-white transition-colors" /> </g> <defs> <radialGradient id="default-radial-5896" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(43.593 41.714) scale(59.4764)"> <stop offset="0" stop-color="#ba7bf0" /> <stop offset=".45" stop-color="#996bec" /> <stop offset="1" stop-color="#5046e4" /> </radialGradient> <radialGradient id="laravel-bytes-radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(43.593 41.714) scale(59.4764)"> <stop offset="0" stop-color="#97f6e4" /> <stop offset=".45" stop-color="#5cead4" /> <stop offset="1" stop-color="#0d9488" /> </radialGradient> </defs> </svg> </a> <a href="/ruby-dispatch/" class="text-violet-600"> <svg role="img" class="" fill="currentColor" fill-rule="evenodd" viewBox="0 0 303 84" style="pointer-events: none; width: auto; height: 36px;" aria-labelledby="logo-title" > <title id="logo-title">Ruby Dispatch</title> <g buffered-rendering="static"> <path class="fill-violet-500" d="M106.769 53.692c.213-.254.478-.504.636-.808a.4.4 0 01.154-.162c.021-.024.102-.113.146-.149a.53.53 0 01.368-.128.335.335 0 01.049-.057c.14-.135.178-.276.271-.456a.378.378 0 01.078-.104c.1-.097.255-.187.355-.332.009-.012.018-.025.028-.036l.617-.701c.296-.455.593-.855.945-1.251.395-.488.85-.812 1.189-1.356a.375.375 0 01.062-.076l.406-.392a.4.4 0 00-.01.565l.148-.142-.016-.021a.405.405 0 01-.043-.371l.006-.014-.019-.068.07-.046c.106-.213.261-.409.426-.603.147-.173.304-.343.407-.54a.39.39 0 01.026-.044c.121-.175.287-.307.463-.425.096-.212.26-.393.437-.565.463-.614.927-1.227 1.448-1.841l-.012.088-.014.025.007.031-.039.283a.399.399 0 00.107.139l.051-.062a.41.41 0 01-.05-.052l-.069-.308.007-.056.41-.687c.186-.201.427-.383.513-.661a.402.402 0 01.166-.218c.1-.064.2-.189.325-.277a.905.905 0 01.53-.178h.183c.075 0 .128.021.162.056l.178.002v-.002c.015 0 .032.002.05.005a.43.43 0 01.409-.168l.03-.044-.021.046c.046.009.099.026.14.04-.018-.149.025-.271.218-.271h.102c.232 0 .257.16.213.336h.021v.086a.682.682 0 01.056-.067.099.099 0 00-.055-.019h.074c.041-.037.074-.043.087.006.288.035.484.221.718.517a.618.618 0 00.227.111c.111.032.23.106.333.206.04.038.071.084.092.134.066.158.193.314.282.483.094.179.155.367.155.567 0 .184-.006.276-.1.461-.148.349-.086.651-.138.951-.054.311-.168.569-.168.828a.451.451 0 01-.007.073l-.291 1.568a.399.399 0 01-.224.289l-.134.064c-.168.653-.175 1.387-.274 2.115-.004.409-.118.929-.237 1.442-.115.883-.288 1.767-.345 2.651a.47.47 0 01-.009.064c-.113.49-.228.925-.284 1.361l.002-.033a1.89 1.89 0 01-.057.243v.519l.053-.033-.053.049c.022.05.097.222.141.391.026-.025.051-.048.075-.068-.036-.217-.037-.455.127-.455h.013c.072 0 .134.01.191.024.014.004.027.01.04.016a.487.487 0 01.053-.021.507.507 0 01.239-.075.85.85 0 01.226.056h.006c.131-.091.261-.211.392-.314.125-.098.251-.184.373-.241.224-.198.389-.225.607-.228.05-.019.095-.034.095-.034s-.059.042-.079.081a.4.4 0 00-.007.352h.072c.082-.04.165-.052.226-.095a.392.392 0 01-.039-.256l-.034-.193.242-.093c.404-.264.801-.327 1.09-.494l.607-.294a.4.4 0 00-.226.376.757.757 0 00.18-.135.394.394 0 00-.117.225l.055-.037c.025-.259.267-.297.32-.3h.01c.029-.085.074-.136.142-.114.08-.071.21-.166.333-.166.097 0 .187.035.256.093l.035.032c.102-.091.207-.164.312-.207.048-.02.1-.03.152-.03.153 0 .299.02.452.168a.4.4 0 01.123.288.56.56 0 01-.127.37 2.707 2.707 0 01-.348.649c-.152.2-.339.351-.545.421l-.026.01-.666.481-.036.035c-.14.135-.279.114-.279.114a.285.285 0 01-.09-.016 1.98 1.98 0 01-.418.249c-.139.085-.321.168-.455.34a.397.397 0 01-.193.135 1.222 1.222 0 01-.383.293c-.119.062-.253.097-.334.175-.089.086-.235.133-.358.154l-.119.069a.518.518 0 01-.026.065c-.08.153-.286.27-.345.301a.397.397 0 01-.149.072c-.157.037-.28.065-.397.179a1.963 1.963 0 01-.657.4 3.17 3.17 0 01-.756.413l-.016.006c-.021.02-.055.05-.082.077a.4.4 0 01-.278.112c-.053 0-.083.029-.114.056-.039.035-.076.073-.116.111a1.217 1.217 0 01-.535.322l-.004.001a.756.756 0 00-.046.098c-.035.101-.055.207-.076.288a.05.05 0 01-.004.013c-.11.373-.223.692-.278 1.065a.4.4 0 01-.122.233l-.106.103v.215a.374.374 0 01-.063.219l.002-.001c-.063.101-.075.215-.102.332-.043.192-.099.39-.224.585a2.725 2.725 0 01-.461.807c-.009.012-.019.022-.03.033-.015.014-.018.039-.025.063a.744.744 0 00-.027.209c0 .136-.046.302-.125.477-.076.168-.186.352-.254.516l-.412.908a.282.282 0 01-.023.042v.125a.393.393 0 01-.055.209c-.222.433-.39.92-.614 1.46a.41.41 0 01-.041.074c-.054.078-.079.157-.12.222a.685.685 0 01-.226.235 1.233 1.233 0 01-.146.29c-.18.572-.377 1.086-.783 1.55l-.064.124c-.088.46-.422.882-.723 1.341-.081.191-.26.437-.448.678-.449.595-.9 1.191-1.292 1.888-.243.571-.711 1.035-1.068 1.608a.368.368 0 01-.045.059l-1.749 1.91a11.69 11.69 0 01-2.53 1.974l-.007.004c-.426.235-.732.466-1.219.642l-1.301.402a.537.537 0 01-.27.123l-.018.003-.027-.001a.48.48 0 01-.134-.019.974.974 0 01-.559.186c-.419.05-.836.057-1.174.058h-.139a.4.4 0 00.4-.4l-.001-.003-.249.003c-.035.15-.102.3-.133.365l-.017.035-.307-.001a2.844 2.844 0 01-.981-.187c-.328-.106-.553-.261-.869-.373a1.928 1.928 0 01-.481-.053.8.8 0 01-.152-.058h-.116c-.171 0-.31-.024-.424-.093-.12-.072-.243-.195-.308-.47a.391.391 0 01-.083-.068l-.547-.588c-.14-.18-.283-.267-.423-.357-.299-.192-.474-.4-.474-.784v-.109l.4.397-.4-.4-.001-.013-.015-.014a.515.515 0 01-.159-.365.44.44 0 01.018-.102l-.008-.009c-.111-.15-.184-.444-.184-.785 0-.566.165-1.293.233-1.563.01-.289.105-.55.214-.802.079-.182.171-.355.195-.543a.408.408 0 01.042-.132.79.79 0 01.41-.399.415.415 0 01.074-.097c.154-.148.299-.492.404-.653l.007-.012c.251-.428.397-.845.779-1.151a.425.425 0 01.034-.025c.072-.046.105-.061.129-.13a.388.388 0 01.1-.157c.131-.126.38-.168.51-.168h.091c.033 0 .061.004.085.011l.011-.011c.08-.077.137-.151.197-.2a.648.648 0 01.151-.093c.118-.309.28-.613.485-.879l.098-.518a.4.4 0 00.319.467l.007-.04-.005-.013a.328.328 0 01-.03-.093l-.049-.071.043.022-.002-.073-.165-.416.11-.106.081.197c-.022-.112-.016-.215.052-.27a.523.523 0 01.497-.378l.058.003v-.003a.42.42 0 01.106.018l.017-.03a.386.386 0 01.045-.164c.045-.087.069-.171.109-.226a.465.465 0 01.362-.212l.01-.013c.037-.048.083-.095.129-.168.014-.07.036-.133.049-.166l.006-.028a.889.889 0 01.238-.403c.093-.094.207-.163.278-.232.124-.119.257-.194.386-.261.054-.028.118-.037.151-.088a.461.461 0 01.066-.131c.043-.061.148-.132.211-.192a.403.403 0 01.077-.059c.092-.052.178-.095.258-.138a.61.61 0 00.256-.209.396.396 0 01.267-.286.663.663 0 01.11-.172c.069-.081.242-.213.242-.213s-.025.037-.032.058a.402.402 0 00.095.413c.019-.022.042-.042.065-.062a.403.403 0 01-.012-.421c.003-.114.062-.199.231-.199h.024l.546-.263c.185-.275.419-.464.749-.637a.924.924 0 01.093-.132c.043-.051.12-.127.163-.169v-.02l.01.01.021-.02-.011.03.275.273a.462.462 0 00.084-.107l-.055-.582c.213-.041.297-.132.461-.253a.569.569 0 01.298-.141c.069-.095.193-.211.322-.28a.512.512 0 01.233-.083.449.449 0 01.075-.06.64.64 0 01.212-.075.452.452 0 01.056-.067c.087-.083.145-.194.213-.254a.525.525 0 01.356-.138c.029 0 .059.004.088.012.071-.046.138-.081.138-.081l.038.159a.62.62 0 01.071.05s-.028-.021-.069-.042l.056.236.04-.023-.049-.412c.134-.032.278-.078.346-.175a.415.415 0 01.112-.109c.205-.131.412-.258.617-.324l.029-.008c.142-.035.209-.111.281-.179.358-.346.772-.526 1.187-.808.145-.131.318-.221.486-.297.087-.04.173-.067.234-.118a1.31 1.31 0 01.436-.317c.134-.063.28-.093.388-.196a.398.398 0 00-.067.492c.093-.04.183-.081.264-.138-.032-.196-.039-.413.078-.458.025-.027.069-.073.099-.1a.725.725 0 01.213-.138l.226-.218.162.4.081-.079-.041-.426a.187.187 0 00.069-.022c.009-.005.003-.018.005-.031a.659.659 0 00.009-.114c0-.046.008-.092.023-.135l.581-1.624a.271.271 0 01.022-.049c.102-.198.149-.447.2-.645l.009-.03c.045-.129.036-.301.036-.429 0-.017.001-.035.004-.052.059-.46.12-.977.239-1.494a.379.379 0 01.035-.094c.01-.021.013-.03.013-.04 0-.112-.058-.28-.058-.392 0-.466.117-.874.177-1.34l.103-.567a.378.378 0 01-.209-.108c-.053-.051-.129-.133-.129-.337v-.001c-.311.349-.631.706-.974 1.039a5.212 5.212 0 01-1.008 1.143c-.461.607-.977 1.161-1.436 1.714l-.03.033c-.392.377-.728.755-1.064 1.187-.576.775-1.318 1.443-1.954 2.159a.912.912 0 01-.214.264c-.086.075-.196.146-.293.236-.073.099-.123.209-.187.3a.86.86 0 01-.429.348l-.01.01c-.394.601-1.081 1.037-1.777 1.342l-.039.015c-.373.12-.752.34-1.184.354h-.445c-.255-.005-.448-.029-.584-.095l-1.504-.836a.436.436 0 01-.143-.11l-.283-.329.302.139-.365-.238c-.106-.236-.239-.347-.447-.382a.877.877 0 01-.262-.078.764.764 0 01-.255-.196c-.417-.308-.814-.975-.814-1.578 0-.074.011-.137.027-.195.008-.03.025-.08.031-.098v-.096l.18.178a.43.43 0 01-.006-.069l.183.182c.005-.019.012-.037.018-.055-.029-.228-.053-.618.124-.618a.91.91 0 01-.034-.237c0-.109.025-.219.061-.328.02-.06.055-.117.055-.176 0-.52.113-1.041.232-1.507v-.565c0-.171.054-.256.103-.309.026-.159.035-.323.072-.514v-.07l.359.356.001-.01-.347-.45.174-.672a.348.348 0 01.032-.083c.101-.196.092-.393.142-.589a.417.417 0 01.085-.161c.248-.287.289-.673.428-1.1a.399.399 0 01.09-.294c.095-.115.105-.249.134-.383a1.99 1.99 0 01.153-.469c.112-.325.229-.648.388-.926a.865.865 0 01.226-.438c.054-.052.053-.11.072-.145l.026-.042.322-.878c.114-.383.284-.66.4-1.042.112-.528.318-1.011.58-1.53a.401.401 0 01-.231-.615c.051-.073.066-.149.093-.214a.872.872 0 01.15-.251c.326-.521.703-1.042.978-1.608a.896.896 0 01.11-.266c.089-.148.25-.323.328-.473a.398.398 0 00.129.513l.046-.061a.403.403 0 01.047-.581c.026-.047.071-.078.142-.086a.644.644 0 01.079-.282c.09-.16.245-.238.487-.316a.395.395 0 01.123-.019c.201 0 .372.048.485.15.105-.089.225-.153.354-.202.173-.065.369-.095.549-.153a.395.395 0 01.123-.019c.21 0 .492.063.703.131a.399.399 0 01.233.197l.276.534c.16.237.234.477.234.714 0 .208-.064.476-.189.696-.058.437-.124.874-.287 1.309-.065.406-.186.703-.308.999l-.756 1.961c-.404 1.002-.809 1.948-1.155 2.949a.049.049 0 00-.004.011c-.235.622-.298 1.3-.592 1.931-.236.574-.372 1.197-.773 1.72-.006.021-.005.041-.005.056l.001.184c0 .333-.125.604-.263.937a.334.334 0 01-.033.062l-.002.027-.114.606c-.059.391-.231.727-.29 1.062l-.051.37.017-.019c.125-.135.265-.255.377-.389a.489.489 0 01.045-.046l1.194-1.041.384-.476a.407.407 0 01.111-.096c.097-.055.158-.145.226-.238.11-.153.223-.318.378-.471zm4.866 11.859l-.02.039-.008-.006-.173-.428a.809.809 0 00-.141.189l-.025-.019.011.043-.018.035c-.044.087-.084.2-.146.308-.173.089-.268.291-.268.628 0 .021.002.036 0 .053l-.343.331.276.684v.001l-.28-.278.024-.035-.029.03-.113-.113v.057c0 .058.011.108.029.15l.005.022-.003.008a1 1 0 01-.118.226.409.409 0 00-.301.285 1.23 1.23 0 00-.193.644.425.425 0 00-.109.098c-.043.055-.052.238-.052.352l-.007.011.007.007v.002l-.013-.015v.001l.005.006-.005.008v-.014.015a.39.39 0 00-.043.098c-.006.007-.042.052-.063.074-.058.061-.116.121-.162.185a.692.692 0 00-.139.398l-.288.417c-.182.292-.301.435-.374.691a.78.78 0 00-.108.176c-.196.295-.343.691-.65.937l.168.476-.021.035-.174-.431a1.165 1.165 0 00-.194.27c-.041.074-.081.163-.154.234a.33.33 0 00-.046.053l-.388.534a1.423 1.423 0 00-.234.32 1.325 1.325 0 00-.335.367c-.055.085-.093.174-.16.238l-.755.728a.35.35 0 00-.044.05c-.271.366-.915.776-1.312 1.145-.419.23-.663.358-.91.597a.398.398 0 00-.06.502l-.044.021a.4.4 0 01.015-.491.615.615 0 01-.278.167c-.17.061-.354.101-.524.156a.395.395 0 00-.112.057c-.191.138-.286.235-.616.327-.197.048-.293.101-.486.101-.183 0-.365.004-.547.048-.035-.031-.086-.048-.155-.048h-.2a2.108 2.108 0 01-.246-.045c-.077-.02-.13-.05-.159-.134a.499.499 0 00-.023-.053 1.125 1.125 0 01-.13-.544c0-.194.054-.435.104-.628l.004-.019c.106-.512.208-.974.524-1.486.511-.766.902-1.586 1.467-2.185a.399.399 0 00.109-.257c.009-.016.055-.104.089-.154.082-.118.173-.237.239-.346l.654-.629a.4.4 0 00.078-.104c.123-.238.28-.404.486-.483a.388.388 0 00.133-.085c.059-.056.105-.107.147-.151.036-.039.055-.076.105-.092a.41.41 0 00.155-.093l.95-.915c.233-.136.559-.437.832-.595a.401.401 0 00.116-.101c.158-.203.373-.351.689-.604l1.44-1.055-.001.001.296-.281c.677-.384 1.191-.767 1.76-1.096a.439.439 0 00.078-.058c.376-.363.7-.571 1.126-.828l.009-.005a1.13 1.13 0 00.249-.177l.07-.065c.02-.018.033-.045.07-.045h.087a1.447 1.447 0 00-.015.095l-.001.001a.399.399 0 00-.117.22c-.022.128-.035.257-.061.375-.016.073-.025.147-.094.186l.182.678zm-67.002-46.96l-.077.031a.404.404 0 00-.104.024c-.577.223-1.097.502-1.732.724a.503.503 0 00-.041.017c-.361.174-.72.238-1.081.467-.37.202-.695.249-1.018.353a.398.398 0 00-.128.069c-.173.139-.365.206-.542.271a3.415 3.415 0 00-.421.18l-1.07.38a.403.403 0 00-.067.03c-.302.175-.595.258-.845.512.001-.002-1.537.581-1.537.581l-.019.007c-.656.288-1.308.584-1.745.978a5.476 5.476 0 00-.944.483c-.309.111-.538.308-.899.468-.304.024-.478.165-.643.322l-.749.619c-.52.191-.896.364-1.111.729-.021.017-.045.036-.069.058-.186.058-.406.126-.578.237l-.018.013c-.242.174-.481.296-.665.468-.534.396-1.064.64-1.486 1.15-.067.061-.195.164-.284.27l-.829.639a.337.337 0 00-.052.048l-.358.394c-.363.195-.733.543-1.097.953a.57.57 0 00-.031.038 6.63 6.63 0 01-1.093 1.212.416.416 0 00-.042.042l-.872 1.008a.386.386 0 00-.044.062c-.278.481-.723 1.015-1.056 1.39a.393.393 0 00-.093.184.952.952 0 01-.293.522 1.44 1.44 0 00-.265.39c-.069.138-.125.29-.182.382-.252.306-.385.561-.458.809l-.063.1-.033-.001c-.342 0-.519.256-.636.478-.319.499-.451.996-.516 1.494a.453.453 0 00-.003.052c0 .114-.027.228-.044.325-.181.371-.188.633-.188 1.019v2.8c0 .594.009 1.244.243 1.841.073.516.225.908.634 1.303l.621.544c.126.165.294.286.484.382.205.104.444.171.642.298a.393.393 0 00.216.064l.149-.001c.318-.012.551-.194.672-.491l.176-.255c.401-.364.449-.963.449-1.445v-.84l-.058-.527c.002-.707.116-1.361.173-2.015v-.01c.005-.024.044-.229.056-.356.12-.489.456-1.081.625-1.621.151-.486.292-.977.728-1.417a.986.986 0 00.43-.532l.004-.011c.151-.486.412-.771.866-1.159a.39.39 0 00.079-.093l.479-.768c.162-.117.327-.275.491-.476.193-.114.312-.261.476-.367a.39.39 0 00.041-.03l.5-.425c.497-.533.936-1.016 1.544-1.388l.02-.014c.611-.428 1.167-.962 1.723-1.296a.708.708 0 00.052-.021c.032-.014.076-.066.146-.066a.397.397 0 00.307-.145 4.18 4.18 0 01.862-.738c.25-.121.539-.246.739-.412.173-.089.356-.276.494-.454.464-.18.966-.456 1.316-.733-.006.005 1.567-.915 1.567-.915.462-.174.979-.502 1.496-.724.014-.005.026-.012.039-.019.677-.38 1.57-.606 2.264-1.025.016-.002.036-.007.056-.012.033-.008.057-.031.099-.031a.4.4 0 00.16-.034c.628-.275 1.369-.661 2.054-.881a.389.389 0 00.051-.021c.146-.07.297-.202.443-.343l.029-.014c.711-.115 1.304-.453 1.955-.624a.444.444 0 00.072-.027c.449-.216.955-.377 1.46-.539l.013-.005c.478-.173 1.067-.247 1.553-.573.05-.004.224-.019.287-.019.205 0 .343-.058.617-.123l.028-.008c.688-.221 1.376-.331 2.064-.496l.028-.008c.674-.217 1.404-.272 2.08-.43.633-.005 1.269-.113 1.85-.224-.005.001.945.001.945.001.254 0 .549-.001.852-.035l.009.004a.692.692 0 00.127.031H58.6c.452 0 .903.166 1.466.221.431.052.812.155 1.335.258.232.173.422.328.604.392.562.226 1.009.468 1.149.966l.007.021c.101.291.211.531.211.822v.616c0 .274.004.419-.038.598-.11.286-.168.714-.28.984-.006.015-.012.03-.016.045-.166.587-.446 1.066-.667 1.493a.356.356 0 00-.029.07 2.166 2.166 0 01-.131.365.355.355 0 01-.231.203l.06.445-.075.097-.199-.396-.165.213.203.425-.102.166a.4.4 0 01-.129-.552c-.33.53-.6 1.009-.984 1.38l.214.532-.216-.531-.015.015c-.025.027-.164.171-.164.44 0 .084-.047.157-.098.227-.088.121-.202.228-.302.325a.375.375 0 00-.062.076l-.323.519a6.616 6.616 0 00-.649.726 1.264 1.264 0 00-.438.476c-.057.101-.089.207-.15.269l-.019.01a.4.4 0 00-.134.045c-.437.241-.702.533-.953.885-.23.133-.451.341-.589.519-.112.071-.249.136-.365.223-.19.142-.336.324-.379.578-.156.177-.317.322-.549.397a.386.386 0 00-.051.02c-.503.243-.939.495-1.205.794a1673.636 1673.636 0 00-1.539 1.098c-.124.096-.263.153-.394.219a1.607 1.607 0 00-.549.412c-.305.391-.773.517-1.281.712a.403.403 0 00-.093.052l-.988.728a.435.435 0 00-.041.034c-.096.093-.244.169-.394.256-.19.11-.385.229-.545.371l-.409.196a.389.389 0 00-.142.115c-.053.068-.133.096-.216.121-.095.029-.198.048-.3.068a.345.345 0 00-.046.012c-.453.145-.82.376-1.047.813l-.001.002a.309.309 0 01-.05.006.399.399 0 00-.174.039c-.233.112-.581.168-.814.28a.564.564 0 00-.053.031c-.375.258-.801.416-1.181.617a.868.868 0 00-.283.118.949.949 0 00-.213.189c-.1.051-.244.104-.376.174a1.477 1.477 0 00-.342.245c-.51.22-1.045.392-1.569.567l.074-.256c.236-.27.369-.629.435-.882.285-.93.847-1.758 1.09-2.635.282-.456.412-.966.531-1.479l.196-.378c.368-.532.606-.906.683-1.426.433-.804.606-1.559 1.054-2.261a.192.192 0 00.018-.031c.073-.14.198-.285.217-.604l.426-1.025c.073-.127.125-.283.183-.454.059-.175.129-.376.317-.557a.38.38 0 00.062-.077c.392-.629.642-1.199.642-1.891l-.059-.691c-.004-.413-.154-.953-.436-1.296a5.427 5.427 0 00-.956-.985c-.185-.236-.45-.34-.809-.34v.003l-.229-.003c-.294 0-.257.254-.169.476a.375.375 0 01-.125.036.252.252 0 01-.098-.018l-.001-.005a.4.4 0 01.111-.376c.027.004.059.02.059.02l-.041-.037a.436.436 0 01.087-.057 5.098 5.098 0 01-.099.046l-.031-.029a.397.397 0 00-.155-.093c-.215-.069-.431-.131-.645-.131-.117 0-.233.056-.407.056-.126 0-.385.103-.51.224a.39.39 0 00-.101.157l-.151.437c-.164.202-.25.335-.384.421-.405.26-.741.585-1.011 1.105l-.282.702c-.332.403-.472.9-.645 1.355-.341.459-.473.915-.65 1.373-.075.153-.132.334-.199.531-.077.23-.17.49-.373.714a.398.398 0 00-.099.21c-.023.15-.095.288-.167.422-.106.195-.216.383-.281.57a.359.359 0 00-.017.072c-.051.345-.205.595-.313.886a2.83 2.83 0 00-.441 1.121.382.382 0 00-.006.068.703.703 0 01-.038.183c-.218.163-.35.348-.367.644-.098.293-.199.673-.446 1.007a.373.373 0 00-.058.112 1.486 1.486 0 00-.102.174.556.556 0 00-.023.073c-.112.306-.186.64-.274.955-.072.261-.148.508-.293.694l.252.516-.019.048-.149-.148-.14-.207-.019.049-.009-.009v.032c-.288.719-.625 1.538-.853 2.251a.547.547 0 00-.016.07c-.049.383-.258.665-.407.904a.386.386 0 00-.052.13c-.168.809-.391 1.563-.782 2.371a.394.394 0 00-.032.093c-.027.132-.117.203-.249.258-.193.048-.379.096-.521.096h-.117c-.259 0-.412.088-.51.182a.6.6 0 00-.18.442c0 .333-.103.617-.202.854l-.213.615a.382.382 0 00-.085.154.493.493 0 00-.023.169c0 .1.008.197.058.294v.311c0 .103.031.18.075.238l.005.015c.046.135.115.26.115.26s-.021-.076-.021-.11c0-.014.004-.034.01-.054a.467.467 0 01-.068-.056.144.144 0 01-.017-.027.442.442 0 00.088.071l-.003.012.031.02.185.458.002.072-.333-.422-.055.212.386.506a.4.4 0 01-.4-.4c0 .174.013.346.103.52a.378.378 0 00.026.043.495.495 0 01.103.277c0 .152-.047.258-.056.443-.104.344-.213.65-.422 1.053a.401.401 0 00-.029.075c-.171.601-.338 1.366-.622 2.022a.361.361 0 00-.024.077c-.166.799-.272 1.387-.603 2.026l.275.453-.005.017-.299-.4-.113.383.328.451-.021.065a.4.4 0 01-.326-.393c0 .119-.048.317-.172.516a.43.43 0 00-.039.081l-.174.504a.446.446 0 00-.018.072c-.115.777-.397 1.446-.464 2.113l-.278.909-.01.04a.888.888 0 00-.066.245c0 .171.048.377.102.573.033.122.073.238.073.323l.348.348-.348-.345v.064c-.118.517-.175.925-.175 1.333 0 .117.018.149-.013.208a.396.396 0 00-.044.154c-.056.767-.287 1.369-.4 1.972l.393.474-.4-.394v.218c0 .488.191 1.403.254 1.586a.325.325 0 00.023.054c.026.05.013.102.013.152 0 .093-.027.164-.059.258l-.118.086.063.203a.412.412 0 00.047.149l.068.217-.008.039.001.05-.336-.404-.055.266.281.351v.014l.058.059.004.005c.003.02.007.039.013.057a.4.4 0 01-.366-.398c0 .134.02.262.059.37.002.172.019.268.161.542l.016.028a.732.732 0 00-.119.348c0 .135.015.265.127.399.07.141.15.322.163.353V73l.4.404-.4-.4c0 .257.03.393.061.479a.681.681 0 00.038.088c.018.036.05.08.069.107a.973.973 0 01.006.11c0 .114.048.217.125.289l.055.053c.14.135.279.114.279.114h.058a.4.4 0 00.398-.359c.021-.043.179-.36.252-.519.036-.08.062-.156.078-.221l.057-.022a.4.4 0 00.357-.299c.035-.133.112-.194.181-.26a.43.43 0 00.052-.061c.138-.199.396-.477.465-.743a.358.358 0 00.011-.073l.004-.007c.445-.141.579-.529.579-1.028 0-.244.019-.491.103-.613a.396.396 0 00.068-.181c.039-.335.148-.451.302-.562a.373.373 0 00.043-.036c.05-.048.154-.215.257-.45.154-.348.361-.887.482-1.104a.75.75 0 00.191-.347c.062-.343.234-.624.292-1.017a.379.379 0 00.005-.058c0-.386.046-.725.143-1.017a1.62 1.62 0 00.204-.762c.143-.067.269-.207.289-.448.035-.08.121-.187.203-.307.144-.212.291-.444.359-.64a.198.198 0 00.008-.026c.342-1.263.625-2.526 1.135-3.735l.005-.01a1.87 1.87 0 00.151-.579c.045-.316.194-.597.356-.875.251.322.595.623.944.959a.398.398 0 00.133.085c.238.092.341.187.478.279.342.319.791.539 1.074.812a.424.424 0 00.084.062c.18.099.319.239.473.369.19.16.397.31.667.413l.279.268c.043.042.087.07.127.088.102.054.201.153.295.238.103.094.201.18.286.234a.42.42 0 00.123.053c.182.044.409.128.595.257l.011.008c.42.345.955.689 1.604.928.23.198.504.315.729.478l.234.076-.227-.071.398.274a.487.487 0 00.088.048l-.01-.004c.504.216.84.378 1.288.647l-.014-.01c.106.069.295.148.492.212.623.273 1.308.493 1.879.768a.549.549 0 00.051.021c.203.065.345.121.538.13.392.096.694.192.996.385.02.013.041.024.063.033.42.174 1.021.405 1.441.52l1.05.267c.375.236.643.354 1.094.416l.007.001c.442.053.885.216 1.272.323.205.066.35.124.556.128.472.052.902.149 1.461.208.1.089.201.142.235.158a.397.397 0 00.242.082c.378 0 .703.105 1.078.16.189.056.382.075.576.09.144.012.288.02.432.067.04.012.081.019.123.019.186 0 .334-.057.423-.166.285.051.57.054.855.054h.581c.208 0 .405-.045.528-.135.182-.128.368-.109.594-.153a.397.397 0 00.279-.208c.043-.083.085-.137.107-.182a.515.515 0 00.054-.226l-.001-.09a.412.412 0 00-.023-.104l.033-.034c.001-.002.404-.196.404-.196.08-.039.208-.149.272-.207.353-.08.661-.288.917-.56a.48.48 0 00.374-.489.435.435 0 00-.147-.327c-.078-.072-.246-.138-.372-.168a.467.467 0 00-.04-.011.405.405 0 00-.037-.243.857.857 0 00-.193-.235c-.398-.32-.929-.574-1.46-.643-.901-.216-1.863-.381-2.77-.651-.261-.117-.63-.183-.942-.243a.384.384 0 00-.076-.007c-.141 0-.413-.092-.614-.145-.52-.268-1.044-.339-1.679-.502-.513-.266-1.122-.437-1.689-.599a1.321 1.321 0 00-.544-.303.393.393 0 00-.122-.019c-.451 0-.747-.208-1.047-.353a.505.505 0 00-.074-.027c-.864-.222-1.67-.612-2.534-.889-.672-.216-1.398-.539-2.071-.862-.207-.135-.42-.312-.753-.38a5.268 5.268 0 01-1.44-.674.362.362 0 00-.043-.024c-.039-.018-.09-.038-.145-.062-.045-.019-.107-.037-.138-.097a.4.4 0 00-.078-.104 1.962 1.962 0 00-.436-.298c-.181-.097-.39-.191-.579-.342a.31.31 0 00-.053-.036l-.988-.56a.371.371 0 00-.061-.028c-.233-.084-.392-.224-.548-.348a2.483 2.483 0 00-.458-.308l-1.178-.619c-.271-.377-.722-.62-1.02-.85l-.001.001a.359.359 0 00-.078-.048l-.253-.122c-.567-.745-1.281-1.389-1.954-1.888a.301.301 0 01.037-.16.204.204 0 01.064-.059c.693-.172 1.273-.398 1.746-.674.733-.173 1.51-.324 2.068-.84.077-.039.15-.085.192-.113.522-.171.877-.395 1.404-.621a.332.332 0 00.059-.031c.12-.077.322-.104.481-.104.06 0 .12-.014.174-.04.15-.073.362-.095.587-.37.252-.232.599-.325.857-.464a2.88 2.88 0 00.945-.493c.388-.265.886-.432 1.337-.743.104-.037.222-.101.339-.178.131-.087.264-.195.382-.258.209-.069.613-.203.835-.377l.828-.426a.379.379 0 00.125-.1c.197-.236.6-.36.796-.455a.406.406 0 00.142-.115c.067-.085.198-.113.307-.16.163-.07.311-.149.41-.245.373-.36.644-.404.911-.558l.016-.01c.354-.227.764-.347 1.12-.626l.904-.544a.383.383 0 00.122-.115 1.068 1.068 0 00.131-.066c.831-.572 1.602-1.145 2.314-1.831l.488-.417c.39-.252.645-.462.789-.711.052-.018.219-.074.303-.112a.747.747 0 00.296-.223c-.001.002.577-.404.577-.404a.372.372 0 00.086-.082c.154-.196.412-.389.616-.537a.385.385 0 00.084-.082l.607-.798.248-.191a.409.409 0 00.072-.072 5.919 5.919 0 011.008-1.021c.477-.46.781-.863 1.079-1.32l.238-.235c.187-.24.491-.544.618-.785l1.153-1.944a.394.394 0 00.048-.123.828.828 0 01.235-.409c.208-.201.359-.528.498-.863a.353.353 0 00.022-.072c.049-.236.208-.418.355-.654a.402.402 0 00.05-.121c.124-.537.359-.957.359-1.434 0-.08.013-.146.027-.206.144-.19.264-.472.264-.69 0-.33-.003-.526.085-.843a.619.619 0 00.044-.113c.038-.133.045-.385.045-.5v-.672c0-.369-.004-.799-.131-1.229a1.437 1.437 0 01-.043-.375v-.466a.402.402 0 00-.031-.156c-.217-.523-.437-.993-.55-1.565a.99.99 0 00-.153-.462c-.042-.071-.092-.13-.12-.179-.259-.622-.536-1.173-1.055-1.548a.472.472 0 00-.061-.037 1.544 1.544 0 01-.169-.113l-.271-.679c-.077-.208-.345-.496-.56-.703a.192.192 0 00-.015-.014c-.606-.525-1.27-.934-1.936-1.284a.371.371 0 00-.11-.039c-.232-.045-.412-.189-.597-.323a.472.472 0 00-.061-.037c-.482-.232-1.144-.297-1.748-.472l-.017-.004c-.257-.062-.515-.067-.965-.067h-.872c-.266 0-.53-.11-.796-.161v.001a.413.413 0 00-.084-.008h-.275c-.278 0-.259.23-.182.444a3.884 3.884 0 01-.213.051.4.4 0 01.294-.484c-.157.038-.281.082-.374.096a.928.928 0 00-.114-.068.398.398 0 00-.173-.039c-.291 0-.523-.056-.756-.056-.232 0-.523.056-.813.056a.42.42 0 00-.1.012l-.85.219a1.246 1.246 0 00-.445-.063c-.339 0-.555.11-.82.239.003-.002-1.04.157-1.04.157-.387.054-.719.22-1.162.22-.04 0-.079-.017-.119-.026a1 1 0 00-.229-.03.544.544 0 00-.164.028 3.097 3.097 0 00-.21.093.402.402 0 00-.233.145c-.035.046-.091.052-.142.059-.081.012-.164.011-.239.011a2.841 2.841 0 00-.746.07c-.418.115-.953.177-1.49.404-.128.041-.261.086-.437.086a.384.384 0 00-.076.007 2.309 2.309 0 00-.988.475c-.134.026-.255.024-.376.029l-.673.132zm158.941 28.885c.101-.38.205-.726.348-1.106a.723.723 0 01-.043-.246c0-.045.008-.089.022-.131.064-.183.129-.426.256-.669.019-.038.013-.058.013-.096 0-.248.068-.479.159-.709.068-.17.152-.341.206-.525a.4.4 0 01.055-.114c.094-.137.194-.27.241-.407a.39.39 0 01.101-.157.47.47 0 00.111-.176c.017-.554.228-1.061.405-1.564v-.041l.011.01.001-.002-.012-.011a.495.495 0 01.181-.4c.048-.047.052-.146.052-.216 0-.241.055-.343.204-.56.239-.908.543-1.815 1.129-2.722l.077-.14c.017-.034.043-.068.043-.106 0-.094.032-.184.092-.256.232-.28.29-.56.523-.84l.011-.012c.015-.044.037-.1.058-.14.279-.54.487-.748 1.108-1.016a.968.968 0 01.387-.096h.174a.261.261 0 01.09.018l.001-.012 1.245.218a.96.96 0 01.278.047.588.588 0 01.287.208c.234.226.464.457.641.731.232.243.321.554.321.87 0 .03-.004.06-.01.089l-.055.266-.183.65a.346.346 0 01-.03.075c-.281.542-.506 1.138-.731 1.682l-.233.84c-.117.336-.178.672-.29.949-.12.405-.299.864-.478 1.267a.407.407 0 01-.05.083l.022-.019c-.062.414-.234.717-.36 1.009a4.906 4.906 0 01-.22.807 1.595 1.595 0 01-.049.277c.033-.05.062-.101.086-.154.078-.288.169-.447.369-.596l.479-.819a.375.375 0 01.067-.086c.323-.311.591-.674.806-1.036.007-.014.016-.026.025-.039l.64-.84a.428.428 0 01.04-.045c.209-.202.363-.456.519-.708l.019-.026c.282-.381.681-.65.907-1.03a.158.158 0 01.015-.024c.144-.208.353-.356.569-.495l1.288-.917c.218-.242.544-.338.885-.47l.021-.007c.3-.097.502-.191.702-.335a.394.394 0 01.234-.076c.19 0 .355-.05.521-.101.207-.064.414-.133.642-.167.382-.17.709-.18 1.161-.18.042 0 .083.006.123.019 0 0 1.542.495 1.538.495.428.075.783.286 1.01.557.02.008.042-.007.06-.007.157 0 .373.081.53.384a.499.499 0 01.023.053c.076.219.219.411.352.606.177.26.338.523.409.811.069.205.132.472.132.674 0 .231-.01.511.086.742l.131.491a.377.377 0 01.012.15l.002-.002-.057.611c-.003.04-.006.08.014.12a.401.401 0 01.045.178v.17a.397.397 0 01-.034.167c-.038.096-.082.16-.082.229 0 .245-.034.468-.071.689l-.033.189a4.09 4.09 0 00-.071.69.42.42 0 01-.012.1c-.066.251-.077.561-.207.812a.393.393 0 01-.07.097l-.001.055c0 .311-.01.678-.177 1.048-.016.293-.104.587-.21.88-.096.262-.206.523-.261.785a.3.3 0 01-.008.032c-.12.405-.19.861-.414 1.265-.072.27-.231.499-.348.774l-.115.378-.047.102.027-.048.028-.07a.406.406 0 01-.025.064l-.003.006-.198.53c-.112.21-.257.41-.286.633l.002-.029a1.106 1.106 0 01-.064.221.404.404 0 01-.116.213c-.02.019-.044.053-.052.063a.403.403 0 01-.021.115c-.133.384-.275.701-.528.96l-.316.508.005-.011c-.538 1.037-1.196 2.072-2.033 2.994l-.018.019c-.226.218-.402.484-.671.709l-.135.216a.406.406 0 01-.161.153c-.19.125-.329.24-.525.303-.121.039-.246.07-.368.187a1.99 1.99 0 01-.371.244.405.405 0 01-.198.088l-.016.013c-.191.379-.641.618-1.127.703-.126.069-.254.119-.38.24-.073.07-.172.131-.28.185-.065.032-.14.052-.184.095a.412.412 0 01-.184.101c-.18.043-.45.173-.63.347a.41.41 0 01-.155.093c-.194.062-.335.114-.467.128-.102.031-.19.09-.283.13a1.072 1.072 0 01-.368.096c-.127.029-.23.049-.296.113a.395.395 0 01-.104.072c-.113.055-.248.091-.384.128-.083.022-.177.027-.229.093a.395.395 0 01-.193.135.511.511 0 01-.239.076h-.174c-.291 0-.523.056-.814.056h-.581a.415.415 0 01-.122-.019c-.134-.044-.267-.093-.401-.093-.042 0-.066.023-.099.031a.739.739 0 01-.192.025c-.232 0-.464-.056-.697-.056h-.174c-.269 0-.673-.119-1.009-.249l-.345-.192.192.049-.201-.054a1.66 1.66 0 00-.625-.216l-.208.561a.4.4 0 01-.11.611c-.22.121-.2.282-.2.434v.164a.405.405 0 01-.042.186c-.201.506-.155.966-.248 1.377v.233a1.029 1.029 0 01-.076.414c-.009.038-.04.091-.04.146 0 .017-.002.034-.004.051-.059.46-.12.977-.239 1.495a.39.39 0 01-.046.114l-.002 1.084-.003.046-.055.485c.006.354.114.753.218 1.154.121.408.24.873.301 1.28l.004.171c0 .186-.007.278-.103.464-.139.268-.218.463-.426.664a.412.412 0 01-.104.072c-.182.088-.373.152-.464.152a.402.402 0 01-.193-.05l-.004.002a.387.387 0 01-.095.064c-.172.083-.349.152-.522.152-.058 0-.225-.045-.271-.058a.43.43 0 01-.345-.209c-.073-.061-.167-.134-.234-.237-.197-.223-.445-.306-.687-.446a.399.399 0 01-.077-.058c-.076-.073-.196-.095-.31-.131a.427.427 0 01-.094-.045c-.442-.284-.653-.507-.801-.934a2.371 2.371 0 01-.138-.746c0-.108-.039-.232-.066-.353a1.777 1.777 0 01-.05-.375c0-.094.022-.215.053-.339.025-.099.063-.202.063-.277 0-.017.001-.035.004-.052.055-.431.171-.861.171-1.292 0-.064.015-.128.045-.184.088-.171.071-.387.071-.6v-1.456c0-.294.003-.645.059-.939a.705.705 0 01.324-.556l.032-.043c.121-.584.186-1.108.367-1.575a.733.733 0 01.018-.039c.031-.059.013-.149.013-.208v-.017l-.013-.023c-.096-.186-.103-.278-.103-.464 0-.167.012-.332.095-.506.149-.385.254-.723.254-1.062 0-.278.052-.463.139-.579.46-.704.442-1.411.442-2.165 0-.031.003-.061.01-.09.111-.483.224-.913.281-1.387.004-.161.058-.325.058-.539v-.84c0-.716.123-1.431.368-2.084.126-.421.315-.839.559-1.152.006-.022.002-.04.002-.068 0-.074.02-.145.058-.207v-.048a.965.965 0 01-.047-.207c-.227.184-.453.392-.513.447-.096.401-.37.74-.716.953l-1.34 1.236c-.228.291-.476.556-.93.629h-.008l-.026.028c-.092.089-.618.443-.71.505a.395.395 0 01-.073.068l-.162.118c.189.315.317.689.382 1.123a.381.381 0 01.004.059c0 .548 0 1.151.056 1.754a.388.388 0 01-.045.225l-.049.097c-.156.355-.15.662-.203.917a.392.392 0 01-.013.049 3.597 3.597 0 01-.74 1.278c-.349.336-.581.728-.93 1.064a.31.31 0 01-.033.029c-.565.435-1.187.868-1.695 1.412a.411.411 0 01-.199.116c-.24.057-.388.154-.534.229a1.639 1.639 0 01-.44.161l-1.903.722c-.895.287-1.612.459-2.388.574l-.056.001-.002.004-.407-.001c-.297-.006-.692-.059-1.088-.113a.426.426 0 01-.16-.048.542.542 0 01-.142-.111l-.078-.086a.4.4 0 01-.247-.247c-.078-.227-.244-.336-.467-.479a.746.746 0 01-.369-.237.578.578 0 01-.085-.148c-.025-.031-.063-.051-.09-.081a.763.763 0 01-.128-.177.4.4 0 00.355.216l-.061-.154a.4.4 0 01-.223-.358c0-.042.002-.102.012-.172l-.003-.007.004-.004a.935.935 0 01.059-.214.798.798 0 01-.013-.107l.001.001v-.001l-.001-.002v-.003c-.063-.236-.117-.424-.117-.667 0-.075.026-.267.026-.267s.01.041.019.059a.4.4 0 00.355.216l-.4-.403v-.106l.4.397-.4-.4c0-.199.151-1.06.22-1.192.127-.245.368-.545.62-.751.174-.354.358-.835.589-1.113a.394.394 0 01.05-.05c.439-.37.94-.626 1.215-.996a.398.398 0 01.286-.263c.17-.041.314-.151.452-.274.185-.165.355-.357.526-.521l.017-.016c.296-.254.655-.403 1.025-.546.291-.112.592-.219.851-.419a.4.4 0 00-.094.53c.083-.043.165-.091.245-.146l-.115-.409.324-.208c.267-.213.519-.373.711-.483l-.263-.223c-.621-.49-1.128-.927-1.806-1.308a.408.408 0 01-.044-.028c-.523-.393-1.163-.729-1.745-1.177a10.23 10.23 0 01-.205-.159l-.012.024a2.603 2.603 0 01-.572.769.4.4 0 01.036.171v.108c0 .246-.076.412-.161.576l-.232.448a.4.4 0 01-.078.104c-.107.103-.226.268-.226.44a.406.406 0 01-.031.153c-.135.326-.209.585-.666.97l-.441.532a.442.442 0 01-.053.053c-.344.284-.485.572-.633.998a.396.396 0 01-.204.23c-.105.051-.18.096-.281.124a5.877 5.877 0 00-.45.893c-.2.515-.467.837-.734 1.095a.385.385 0 01-.125.081c-.171.071-.341.114-.493.166-.087.03-.177.043-.206.138a.362.362 0 01-.051.109c-1.279 1.91-2.593 2.418-3.296 2.418-.298 0-.536-.124-.656-.255a.64.64 0 01-.058-.073c-.241.025-.594.098-.88.103h-.23a.402.402 0 01-.151-.039.156.156 0 00-.085-.017h-.198c-.515-.006-.822-.111-1.225-.223h-.061c-.349 0-.636-.211-.897-.547a.428.428 0 01-.04-.061 2.233 2.233 0 00-.445-.568.4.4 0 01-.116-.213l-.031-.153-.081-.078.07.028-.013-.063.144.114.072.029-.378-.27c-.051-.146-.1-.294-.17-.422a.484.484 0 00-.175-.202.38.38 0 01-.121-.108c-.329-.443-.535-1.073-.6-1.769l-.002-1.123-.051-.293.393.323-.4-.4c0-.187.054-.424.116-.588 0-.162-.003-.325-.045-.488a.376.376 0 01-.013-.1c0-.159.01-.39.153-.621a.603.603 0 01-.037-.163c0-.312.117-.565.184-.815l.287-1.608a.42.42 0 01.05-.133c.447-.754.495-1.458.719-2.158a.302.302 0 01.026-.062c.104-.202.101-.405.197-.694.015-.071.048-.173.124-.32.163-.312.586-1.001 1.618-2.552a.394.394 0 01.08-.088c.84-.685 1.622-1.042 2.461-1.042.595 0 1.191.185 1.785.567a.4.4 0 01.184.337v1.008c0 .051-.01.103-.029.151l-1.278 3.135-.405 1.003c-.335.971-.616 1.943-.787 2.909-.004.495-.109.84-.224 1.325a.881.881 0 01.05.269c0 .103-.044.267-.059.319a1.89 1.89 0 01-.118.537c-.012.157-.055.343-.055.488 0 .266.037.534.129.712a.354.354 0 01.023.053c.063.182.113.272.131.378a1.4 1.4 0 00.501.08c.241-.052.441-.141.638-.196l.019-.016c.551-.465 2.66-2.756 2.743-2.847.216-.243.39-.464.545-.616.114-.111.227-.191.333-.239.301-.324.642-.604.789-.982a.4.4 0 01.079-.126c.443-.481.891-.905 1.168-1.385.009-.016.02-.031.031-.046.15-.193.338-.382.484-.48a.74.74 0 01.265-.114c.067-.023.132-.058.176-.187a.379.379 0 01.045-.09c.181-.275.374-.505.563-.721a5.89 5.89 0 01-.12-.218l-.018-.039a3.68 3.68 0 01-.259-1.377c0-.191.007-.44.062-.631.069-.848.337-1.802 1.009-2.475l.381-.629a.383.383 0 01.033-.046.955.955 0 01.241-.29c.697-.621 1.284-1.347 1.984-1.853l.005-.004c.628-.44 1.141-.936 1.654-1.376l.024-.019c1.219-.895 2.613-1.623 3.891-2.574a.401.401 0 00-.085.556l.186-.134c-.081-.227-.12-.501.168-.501h.111c.537-.426 1.269-.504 1.835-.504l.465.003v-.003c.342 0 .549.002.788-.037.228-.124.507-.187.722-.187l.926.234c.066.013.171.03.422.351.05.056.093.133.114.235.006.033.011.073.015.118a.92.92 0 01.203.079.694.694 0 01.239.208c.114.072.195.153.263.235.048.058.082.118.13.164a.395.395 0 01.109.187c.045.171.08.325.124.461a.706.706 0 00.156.294.451.451 0 01.161.144.706.706 0 01.095.307.364.364 0 01-.063.227l.003-.001a1.678 1.678 0 01-.413.433c-.09.07-.183.131-.25.217a.4.4 0 01-.316.155c-.267 0-.495.102-.732.196-.328.129-.666.252-1.069.252-.04 0-.079.016-.119.026a1.475 1.475 0 01-.077.015c-.333.238-.736.408-1.135.562-.36.139-.715.261-.978.431a.541.541 0 01-.314.137c-.364.33-.816.544-1.266.757-.389.184-.778.365-1.058.687a.798.798 0 01-.185.226c-.111.097-.285.182-.402.295a.41.41 0 01-.176.099c-.584.153-.895.526-1.32.833-.009.006-.018.013-.028.018-.886.534-1.545 1.34-2.154 2.14-.043.056-.1.1-.165.127l-.013.044c.247.215.492.539.789.682a.462.462 0 01.048.028c.77.514 1.655.975 2.251 1.545l2.279 1.866c.234-.047.411-.244.545-.33.591-.399 1.184-.849 1.721-1.088.496-.325.724-.651 1.174-.976a.39.39 0 01.14-.065c.206-.05 1.79-.856 2.367-1.104a.515.515 0 01.319-.139h.021l.001.262.001-.003v-.259a.5.5 0 01.124.02l.044-.084.066.109.079-.057c-.019-.148.025-.268.216-.268h.051c.043 0 .079.005.109.016zm-52.266-29.132l.137-.34c-.026-.026-.098-.058-.098-.058l.053.002c.086 0 .145-.055.208-.099.103-.071.204-.144.316-.198a.407.407 0 01.058-.022l.93-.28a.373.373 0 01.115-.017c.136 0 .271-.051.413-.095.218-.067.447-.129.691-.129h.117c.281 0 .51-.15.698-.241a.386.386 0 01.051-.02c.176-.057.451-.071.696-.074a.654.654 0 01.433-.037.613.613 0 01.504-.244h.116c.116 0 .291-.056.465-.056.148 0 .3.05.449.117.525-.263 1.092-.284 1.663-.339l.711-.006.025-.013c.16-.077.398-.095.639-.095h.463a.39.39 0 01.098.011c.127.021.265.02.403.032.175.016.348.048.51.118.107-.014.235-.049.327-.049a5058.599 5058.599 0 001.525.112c.168.001.324.03.45.117a.38.38 0 01.173-.061h.059c.186 0 .238.105.227.239l.052-.127.112.111a.541.541 0 01.249-.055.59.59 0 01.365.097.424.424 0 01.149.118.583.583 0 01.358-.103c.131 0 .38.042.51.168.029.028.073.066.105.093a.4.4 0 01.257-.093c.17 0 .348.127.383.158l-.04-.032c.185.128.357.159.51.186.163.028.313.053.453.106l.029.013c.047.023.071.017.117.017.077 0 .152.022.217.063.479.308.956.571 1.436.674l.01.002c.135.032.258.098.377.172.041.026.082.053.124.076.015.008.028.021.045.021.07 0 .139.018.2.053.566.328 1.074.713 1.584.931a.425.425 0 01.056.029l1.511.952a.393.393 0 01.102.093c.145.187.336.376.482.469a.388.388 0 01.095.086c.402.497.747.718 1.091 1.105l.031.038c.069.1.114.211.15.322.014.044.041.119.048.139a.396.396 0 01.085.147.631.631 0 01.311.572l-.001.019c.178.059.314.211.416.404.363.643.606 1.227.788 1.869.414 1.314.71 2.627.829 3.998.059.572.118 1.145.118 1.718 0 1.364-.176 2.785-.525 3.98a1.379 1.379 0 01-.057.339v.264a.372.372 0 01-.103.27l.011-.006a.683.683 0 00-.125.317c-.035.182-.048.384-.076.599a.414.414 0 01-.019.079c-.119.344-.18.745-.299 1.031a.41.41 0 01-.041.074c-.322.467-.371.937-.526 1.344-.129.484-.311.677-.501.98 0 0-.786 1.515-.785 1.51-.081.296-.167.398-.384.544 0 0-.804 1.137-.803 1.133-.303.686-.719 1.158-1.249 1.726a.55.55 0 01-.122.133c-.422.833-1.057 1.564-1.694 2.29-.406.502-.869.893-1.275 1.396a.405.405 0 01-.095.085c-.135.087-.263.266-.352.395a.43.43 0 01-.052.061l-.987.952a.413.413 0 01-.156.093c-.099.031-.249.003-.348.195a.376.376 0 01-.053.077c-.276.32-.699.597-1.006.821-.038.13-.077.279-.115.365a.605.605 0 01-.124.185.42.42 0 01-.076.057 1.794 1.794 0 01-.146.15.53.53 0 01-.458.116 1.97 1.97 0 01-.488.42c-.157.099-.315.17-.443.257a1.946 1.946 0 01-.553.509c-.103.068-.207.11-.263.19-.093.176-.163.225-.212.254a.453.453 0 01-.253.063h-.058c-.085 0-.133.069-.182.123-.087.096-.163.196-.238.269a.398.398 0 01-.292.111c-.148.092-.271.228-.394.326a1.022 1.022 0 01-.486.229c-.226.105-.365.296-.557.434a.57.57 0 01-.041.026c-.173.095-.33.255-.491.415-.207.207-.415.419-.637.572a.282.282 0 01-.044.026c-.875.45-1.633.9-2.45 1.293-.32.154-.539.31-.798.461-.078.079-.178.185-.296.264a.843.843 0 01-.446.154 1.084 1.084 0 01-.526.337c-.13.043-.273.053-.382.115-.295.38-.765.593-1.31.611a1.8 1.8 0 01-.309.186l-.676.38a.391.391 0 01-.17.051l-.084.001a.97.97 0 01-.225-.03c-.13.041-.263.062-.396.078-.127.014-.256.006-.363.061a.822.822 0 01-.095.149.423.423 0 01-.315.134h-.175c-.08 0-.127.071-.192.125-.11.092-.226.19-.363.269a.403.403 0 01-.2.054l-.017-.001a.392.392 0 01-.173-.047l-.063-.016a.401.401 0 01-.275-.205 2.893 2.893 0 01-.88.156h-.297a.958.958 0 01-.447.168c-.163.023-.352-.009-.522.073a.397.397 0 01-.151.039l-.091.001c-.03.003-.048 0-.048 0l-.013-.022a.392.392 0 01-.192-.141.34.34 0 01-.128-.21c-.376.077-.679.088-1.025.23a.395.395 0 01-.311-.002c-.02-.004-.092-.018-.124-.028a.48.48 0 01-.264-.198l-.016-.026-.652.21a.38.38 0 01-.106.018l-.074.001a.911.911 0 01-.244-.063.397.397 0 01-.301-.244l.091-.429.32-.221c.088-.053.186-.098.287-.144.122-.056.255-.109.353-.227a.404.404 0 01.164-.118c.131-.05.294-.083.459-.122.113-.026.235-.043.321-.11l-.218-.177-.092-.431a.401.401 0 01.124-.165.39.39 0 01.105-.088c.151-.087.289-.13.426-.166.105-.028.211-.044.322-.124.153-.148.323-.343.55-.416.484-.156.923-.439 1.437-.544.151-.202.401-.373.734-.509.384-.157.888-.287 1.384-.462.394-.138.785-.303 1.084-.554a.442.442 0 01.13-.18c.08-.07.208-.122.409-.122h.071l.097-.094a3.71 3.71 0 01.701-.67l.011-.008c.569-.384 1.194-.933 1.707-1.372a.368.368 0 01.051-.037c.621-.381 1.244-.762 1.806-1.194.206-.19.464-.276.674-.343.161-.198.352-.339.55-.459.177-.107.361-.194.519-.318l.334-.321.161.4.034-.033-.111-.429.276-.16.007.028a.168.168 0 01.054-.052l.028-.074a.651.651 0 01.104-.18.456.456 0 01.364-.172c.027 0 .05.001.071.003a.485.485 0 00.155-.179.282.282 0 01.026-.044.905.905 0 01.249-.234c.097-.065.234-.114.321-.254a.4.4 0 01.105-.112l.39-.282c.035-.078.093-.201.13-.236a.417.417 0 01.296-.118c.028 0 .057.001.085.004.036-.045.073-.088.102-.116a.396.396 0 01.178-.1c-.007-.135.014-.252.097-.284.027-.045.123-.205.171-.296a.396.396 0 01.077-.104c.053-.052.166-.116.236-.154a.555.555 0 01.211-.337.617.617 0 01.354-.125h.069a1.205 1.205 0 01-.004-.104c0-.204.076-.286.129-.337.05-.048.131-.119.329-.119.047 0 .095-.001.154.009.035-.038.073-.081.098-.117a.4.4 0 01.144-.127l.25-.26v-.337l.399.399-.354-.583a.579.579 0 01.327-.279c.085-.204.225-.367.381-.511.124-.113.27-.2.338-.33a.395.395 0 00.091.485 2.12 2.12 0 00.152-.146l-.191-.417.29-.336.183.4.059-.068-.082-.444.221-.091a1.03 1.03 0 01.221-.26c.154-.338.383-.6.666-.744a.478.478 0 00.168-.23l.009-.023c.168-.405.379-.69.761-.742l.357-.688a.375.375 0 01.043-.066c.057-.24.176-.433.327-.611.13-.153.288-.292.43-.456.153-.194.36-.382.462-.624.298-.799.827-1.431 1.243-2.174.006-.012.013-.022.02-.033l.438-.632.016-.034-.002-.002c0-.439.134-.779.301-1.091.126-.237.276-.452.356-.708l.174-.56a.342.342 0 01.027-.065c.034-.065.041-.131.06-.18a.567.567 0 01.161-.228c.126-.101.146-.247.172-.377l.022-.12a.503.503 0 01-.227-.423c0-.086.04-.175.079-.241a.398.398 0 01.163-.208c.032-.021.027-.048.035-.075l.029-.092.105-.405a.872.872 0 01.043-.177c.021-.061.069-.13.069-.202 0-.039.005-.077.016-.114.11-.371.164-.743.219-1.22a.445.445 0 01.005-.036c.109-.524.165-.997.166-1.52l-.058-.526v-1.081c-.052-.257-.106-.559-.21-.861l-.002-.004-.517-1.55c-.26-.55-.512-1.103-.868-1.458a1.462 1.462 0 01-.273-.284c-.073-.095-.143-.205-.214-.291-.24-.086-.447-.244-.644-.41-.134-.115-.255-.242-.406-.284a2.715 2.715 0 01-.511-.215l-.141-.073a2.719 2.719 0 00-.511-.216.34.34 0 01-.067-.025c-.106-.051-.214-.122-.32-.189-.063-.04-.118-.093-.179-.105a.395.395 0 01-.356.021l-.518-.221c-.267-.105-.636-.315-1.007-.366-.388-.053-.775-.22-1.107-.22-.654 0-1.193-.11-1.731-.224-.13-.001-.29-.003-.413.037a.425.425 0 01-.122.019c-.619 0-1.238-.002-1.913.107l-.061.001-.002.004h-.174c-.363 0-.672.105-.982.205a.427.427 0 01-.123.019h-.755c-.128 0-.303-.009-.453-.049-.037.01-.074.03-.111.046-.075.031-.149.064-.215.086-.604.286-1.264.409-1.862.469-.142.045-.301.06-.46.067-.073.002-.146.004-.215.011-.039.003-.077.001-.105.018a2.015 2.015 0 01-.589.321c-.13.048-.256.081-.38.153a.402.402 0 01-.146.05l-.768.106a2.43 2.43 0 00-.601.371c-.161.279-.32.737-.481 1.047a.11.11 0 01-.008.015c-.276.479-.493 1.172-.659 1.758a.407.407 0 01-.022.058c-.455.988-.855 1.975-1.139 3.018a.36.36 0 01-.024.065c-.28.594-.455 1.136-.776 1.725v.006c0 .072-.015.13-.038.179-.28.759-.506 1.467-.732 2.282l.006-.039a1.26 1.26 0 01-.057.176.38.38 0 01-.037.109c-.163.314-.269.68-.377 1.046l-2.208 7.949a.28.28 0 01-.016.046c-.121.292-.259.68-.432.901a.196.196 0 00-.002.053v.237a.564.564 0 01-.104.368c-.071.18-.197.337-.303.519v.233c0 .476-.165.899-.348 1.316v.588a.4.4 0 01-.15.312c-.143.115-.126.273-.142.397-.018.14-.048.266-.102.371l-.015.027c-.138.221-.172.444-.172.797a.39.39 0 01-.006.068c-.061.351-.18.644-.301 1.053a.274.274 0 01-.015.04c-.337.814-.506 1.574-.673 2.274a12.47 12.47 0 01-.526 1.978 8.552 8.552 0 01-.239 1.196l-.158.508v.162a.804.804 0 01.058.225c0 .131-.034.264-.083.406-.038.109-.091.227-.091.378l-.001.017a.635.635 0 01-.094.304l-.021.028a.491.491 0 01-.004.296.385.385 0 01-.159.205c-.028.066-.014.141-.012.201v.232a.391.391 0 01-.044.189c-.138.323-.093.521-.13.748a3.246 3.246 0 01-.134.811c-.177.567-.123 1.077-.298 1.532-.048.136-.149.355-.149.533 0 .038-.007.058.013.096.03.057.045.121.045.184v.392c0 .15-.033.3-.078.45-.039.131-.096.259-.096.39 0 .05-.013.101.013.152.029.056.045.12.045.184 0 .044-.022.164-.073.294a1.428 1.428 0 01-.224.386c-.02.019-.043.051-.051.062.005.073.047.173.081.271.086.172.092.264.092.443 0 .169-.011.421-.187.675a.423.423 0 01-.051.061c-.032.03-.052.058-.052.104 0 .055.031.108.04.145.006.022.01.043.012.062.066.25.122.442.122.633 0 .316-.12.572-.186.823a.733.733 0 01-.173.332.6.6 0 01-.047.041l-.001.932a.451.451 0 01-.081.258.757.757 0 01-.068.083c-.018.018-.053.034-.07.067a.399.399 0 01-.251.202l.005.3-.007.061c-.016.097-.062.274-.173.381a.4.4 0 01-.278.112s-.045.004-.114-.017a.409.409 0 01-.075-.031l-.029-.016c-.086-.052-.277-.213-.296-.463l-.045-.302-.005-.009a.215.215 0 00-.023.102.4.4 0 01-.776.136.446.446 0 01-.075-.084l-.208-.301a.43.43 0 01-.069-.128l-.056-.16.051.036c.067.223.326.229.326.229l-.326-.229c-.005-.015-.008-.031-.011-.047a.517.517 0 01-.286-.364l-.044-.129.363.256.001-.003-.388-.388c0-.181-.051-.35-.104-.515-.072-.224-.15-.442-.182-.659-.001-.01-.003-.019-.003-.029a.386.386 0 01-.215-.244 1.721 1.721 0 01-.077-.389c-.059-.649-.229-1.246-.342-1.842a.463.463 0 01-.007-.074s0-.563.001-.562a1.693 1.693 0 01-.233-.894c0-.392.116-.784.116-1.176a.92.92 0 01.033-.231c.008-.036.025-.07.025-.105 0 .003.005.006.007.008a.398.398 0 00.277.112l-.377-.534.035-.119v-.419l.4.4-.4-.4c0-.033.005-.053-.007-.082a.384.384 0 01-.051-.2v-.053l.4.399-.4-.4c0-.077.013-.154.032-.231.009-.036.026-.07.026-.105 0-.028.003-.055.009-.082.051-.246.107-.442.107-.59v-1.176c0-.082.025-.161.071-.228a.487.487 0 00.104-.276c0-.074.02-.146.058-.207v-.289l.396.387-.396-.395c0-.414.177-.946.238-1.3a.399.399 0 00.306.458l.02-.079-.319-.412.091-.349a.35.35 0 00-.039-.046.4.4 0 01-.123-.288c0-.06.006-.311.046-.447a.71.71 0 01.037-.098c.105-.459.208-.965.208-1.471 0-.064.015-.128.045-.184.154-.299.186-.436.403-.584l.018-.071a.659.659 0 01.116-.363.437.437 0 01.04-.141c-.042-.163-.041-.275-.041-.337 0-.127.028-.197.07-.263l.001-.001-.033-.068a.389.389 0 01-.037-.149l-.001-.187.248.246.001-.001-.249-.249c0-.193.024-.308.089-.406l.319-1.38c.018-.309.206-.457.385-.502l-.011-.037a.723.723 0 01-.027-.195v-.392l.4.4-.382-.517c.288-.945.463-1.89.804-2.939.062-.404.18-.915.299-1.314.005-.018.012-.035.019-.052l.371-.817v-.24l.38.371.001-.003-.375-.445c.061-.356.076-.764.242-1.119.12-.645.342-1.087.455-1.626.118-.682.409-1.308.588-1.934l.162-.729v-.174l.368.362-.368-.368c0-.155.006-.308.032-.412a.62.62 0 01.088-.199c.086-.174.17-.416.17-.621 0-.208.076-.605.207-.835.221-.685.496-1.367.55-2a.457.457 0 01.016-.082c.292-.956.584-1.801.876-2.589l.984-3.126c.06-.2.149-.415.238-.622-.319.214-.624.397-.928.58a.091.091 0 01-.013.008c-.391.215-.731.478-1.111.651-.538.606-1.337 1.164-2.137 1.714-.373.356-.748.597-1.246.837a.375.375 0 01-.098.032c-.07.014-.141.027-.205.047a.413.413 0 00-.047.021.28.28 0 00-.005.044.4.4 0 01-.23.362l-.11.053c-.105.05-.176.041-.176.041a.402.402 0 01-.187-.047l-.006.006a.446.446 0 01-.143.077c-.024.02-.128.103-.189.146a.833.833 0 01-.311.138c-.088.04-.275.103-.501.182-.29.103-.669.243-.884.45a2.082 2.082 0 01-.888.519c-.218.204-.473.418-.698.527a.513.513 0 01-.174.132.583.583 0 01-.261.054.4.4 0 01-.36-.226c-.049-.007-.244-.044-.337-.201a.829.829 0 01-.064.114.478.478 0 01-.513.187 1.37 1.37 0 01-.281.203c-.083.047-.167.085-.245.127-.042.022-.088.039-.111.084a.4.4 0 01-.082.109l-.166.159c-.141.136-.281.116-.281.116a.4.4 0 01-.278-.112.597.597 0 01-.128-.173.44.44 0 01-.48-.279.373.373 0 01-.036-.145l-.001-.082.4.399-.4-.4c0-.157.1-.294.173-.374l.003-.006a34 34 0 01.581-.896.916.916 0 01.098-.134.398.398 0 01.358-.222c.066 0 .182.039.239.06v-.212l.242.237.002-.002-.244-.243c0-.066.043-.184.066-.243a.4.4 0 01.338-.322c.047-.006.076-.04.106-.073.05-.055.093-.119.137-.183.111-.163.225-.323.366-.438.076-.076.103-.125.131-.149a.449.449 0 01.155-.091l.183-.111a.675.675 0 01.333-.379c.072-.04.208-.095.243-.108.136-.135.23-.271.323-.406l.221-.425a.397.397 0 01.219-.192c.22-.08.36-.285.517-.454.157-.168.322-.316.505-.406.083-.065.188-.128.298-.195.09-.055.202-.103.24-.212l-.001.005a.781.781 0 01.158-.274l.19.47a.55.55 0 00.031-.07l.002-.022a.371.371 0 01-.053-.18l-.001.002v-.079l.021.021-.015.04.108.107.005-.05-.098-.097a.387.387 0 01.073-.128.625.625 0 01.118-.068l-.044-.002a.725.725 0 00.054-.003l-.01.005.013.002c-.061.038-.091.158-.106.291l.103.103c.087-.004.132-.019.155-.046l-.033-.312a.4.4 0 00-.119-.036c.03-.02.069-.018.116.014l-.025-.233a.823.823 0 00.46-.258c.06-.06.114-.113.167-.153.303-.34.546-.465.792-.642.228-.165.506-.33.789-.45.144-.194.269-.306.461-.342l.138-.1.02.06.002-.005a.173.173 0 01.044-.078.564.564 0 01.232-.195c.071-.035.211-.061.288-.073.151-.189.356-.283.64-.42a.753.753 0 01.545-.375l.227-.109.824-.688a.581.581 0 01.44-.157h.013a.499.499 0 01.057-.046l.93-.616a.432.432 0 01.077-.04c1.516-.584 1.918-.966 2.331-1.338.461-.414.933-.82 2.682-1.411l.835-.231.055.4.052-.014.058-.056c.034.033.089.046.14.052zm132.74 11.397c.201-.377.462-.722.71-1.063l.031-.075a.379.379 0 01-.022-.119c0-.125.072-.275.188-.403l.496-.957a.45.45 0 01.022-.037c.407-.616.701-1.453 1.158-2.066.229-.385.57-.878.854-1.425a.378.378 0 01.078-.104.571.571 0 00.181-.317.4.4 0 01.064-.135c.009-.043.023-.103.039-.159v-.05l.011.011.001-.002-.012-.012c0-.251.152-.597.413-.848a.416.416 0 01.104-.073.875.875 0 00.087-.046c.018-.012.035-.019.035-.041 0 .154.087.288.215.354a.431.431 0 00.141-.152l-.127-.564.111-.053.093.399.015-.007-.075-.407c.065-.025.088-.083.115-.14.044-.097.079-.204.124-.312l.258.387.014.014.055-.14a.377.377 0 01-.067-.219v-.272l.086.084a.264.264 0 00-.086.182v.006l.109.109v-.274l-.023-.023.023-.023v-.133c.015 0 .032.002.05.005l-.088-.169.349-.504a.368.368 0 01.051-.06c.136-.132.388-.167.438-.168h.013v.18l.014-.012-.014.014v.052l-.05.014a.4.4 0 00-.057.17.38.38 0 01.107-.018v-.166a.277.277 0 01.059-.01c.019 0 .038.001.056.004l.072.258c-.026.039-.052.08-.076.12a.65.65 0 00.091-.068l-.015-.052c.028-.041.055-.078.081-.109a.377.377 0 01-.026-.109.393.393 0 00-.127-.04l-.032-.114.075-.048a3.1 3.1 0 01-.067-.143l.139.097.135-.087-.177-.437.465-.448c.012-.011.043-.049.052-.059v-.098l.329.327a.56.56 0 00.025-.041l-.122-.122.001-.014c0-.019.005-.066.019-.124l-.127-.32.078-.075.143-.23.116.204.049-.044-.098-.244c.126-.122.184-.222.35-.284a.838.838 0 01.219-.047l.079-.085a.755.755 0 01.18-.144l.013-.007a.4.4 0 00-.19.231h.033l-.034.005a.387.387 0 00-.017.096l.171-.153c-.006-.129.048-.228.231-.228h.028c.086-.337.421-.672 1.016-.672.146 0 .432-.018.52-.024a.603.603 0 01.352-.088.493.493 0 01.393.168.407.407 0 01.079.106l.025.004c.058-.016.204-.054.258-.054.51 0 .993.063 1.265.468.071-.014.138-.02.188-.02.168 0 .322.069.455.191.076.07.143.166.208.236.44.31.812.737.972 1.271.658.591.74 1.239.74 1.894l.001.3c.003.214.057.378.057.596 0 .292-.056.584-.116.927a9.106 9.106 0 01-.174 1.738c-.008.652-.243 1.193-.492 1.793-.292.847-.53 1.748-.88 2.483l-.591 1.363c-.227.439-.341.879-.565 1.366a.888.888 0 01-.151.261c-.033.041-.075.066-.097.109a.407.407 0 01-.111.133c-.12.092-.149.19-.183.306-.023.075-.045.156-.072.237a1.203 1.203 0 01-.128.395c-.074.148-.181.307-.247.466l-.006.014c-.241.523-.55 1.324-1.024 1.858l-.439.795c-.068.132-.157.359-.326.516-.208.404-.382.764-.673 1.123v.017a.38.38 0 01-.061.215l-1.17 1.878a.845.845 0 01-.172.385c-.049.064-.109.123-.161.192l-.216.469a.401.401 0 01-.147.169 1.755 1.755 0 00-.465.422 1.137 1.137 0 01-.34.659.408.408 0 01-.086.138c-.344.667-.831 1.105-1.161 1.783-.126.357-.243.47-.369.572-.067.053-.147.094-.258.24l-.374.565c-.138.345-.482.7-.779 1.158l-1.229 1.749a.461.461 0 01-.018.023c-.868 1.06-1.567 2.227-2.486 3.128l-.501.911c-.18.304-.235.518-.235.692 0 .13.037.243.063.342.032.122.054.233.054.33a.546.546 0 01-.006.079c.306-.096.638-.268.933-.455l-.033-.083.085-.082.09-.13.211.396.005-.005.003-.005-.199-.414.13-.167.035-.1.236.327.034.033.039-.051a.408.408 0 01-.039-.031.375.375 0 01-.122-.388v-.002l-.043-.109.11-.106.018.044a.458.458 0 01.043-.047l.018.045a.428.428 0 01.04-.045c.055-.053.116-.135.173-.183.466-.701 1.13-1.353 1.695-1.948.136-.235.325-.38.64-.623l.597-.627.447-.647a.368.368 0 01.051-.06c.713-.688 1.253-1.485 2.083-2.057l2.07-1.44c.61-.519 1.229-.759 1.703-.759.674 0 1.26.376 1.75.986.633.79 1.112 1.985 1.476 3.035a.404.404 0 01.009.231c-.138.53-.133 1.099-.14 1.662-.008.636-.029 1.265-.216 1.834l-.002.006c-.11.318-.443 2.013-.443 2.278l-.058.371c-.001.422-.023.945-.242 1.372l-.223 2.364v.205c0 .187-.003.328.045.515l.071.613v.21c.007.019.016.038.023.053a.743.743 0 00.21-.036l.063.398.041-.011-.097-.423c.167-.08.414-.095.581-.095h.366a.787.787 0 00.295-.045c.212-.051.424-.147.677-.207.537-.414 1.069-.827 1.445-1.241a.378.378 0 01.067-.059c.633-.443 1.38-.998 2.071-1.552a.403.403 0 01.077-.049c.174-.084.308-.165.439-.333a.386.386 0 00-.068.132l.219.294a1.53 1.53 0 00.164-.18l-.085.286.085.114.384-.286-.115.385-.033.09a.397.397 0 01.164.005.637.637 0 01.217.116.29.29 0 01.107.207c.016.01.025.039.025.094v.106a.365.365 0 01-.182.329l.026-.009-.261.198-.118.077.033-.016.089-.064-.028.025-.048.032-.013.007-.007.004-.22.104a.375.375 0 01.03.126v.119l-.008.06-.001.004a.486.486 0 01-.117.217.727.727 0 01-.107.092c.13.202-.165.722-.165.722l.4-.4a.447.447 0 01-.165.334c-.145.129-.909.683-1.06.792a.4.4 0 01-.018.074l-.004.011a.475.475 0 01-.066.122c-.043.059-.205.217-.205.217s.027-.066.046-.126l-.026.01c-.067.188-.181.366-.181.366l.303-.139c-.319.369-.646.786-1.207 1.04l-.43.311a.4.4 0 01-.091.049 2.576 2.576 0 00-.209.097.402.402 0 01-.277.359l-.455.145c-.298.23-.385.294-.839.419l-.415.17-.652.154a.396.396 0 01-.144.027h-.581a.881.881 0 01-.375-.056h-.439a.425.425 0 01-.122-.019c-.366-.118-.732-.293-1.097-.469a.376.376 0 01-.061-.036c-.223-.162-.462-.268-.671-.396-.254-.155-.472-.337-.623-.606-.715-.508-1.046-1.335-1.296-2.177l.193.223-.207-.295-.057-.438.397.349-.4-.4c0-.098.021-.199-.013-.264a.431.431 0 01-.033-.084 5.77 5.77 0 01-.187-1.444c0-.357.058-.656.12-.954l.23-2.72a.376.376 0 01.012-.067c.055-.213.324-1.649.461-2.064l.107-.721v-.297l.392.382-.392-.391c0-.174.078-.408.19-.661l-.763.701c-.005.05-.014.118-.024.161a.645.645 0 01-.178.311l-.027.024c-.344.275-.583.547-.864.728a7.798 7.798 0 00-.786 1.124.422.422 0 01-.084.1c-.48.411-.858.766-1.125 1.28a.473.473 0 01-.035.056c-.767 1.023-1.423 2.043-2.306 2.791-.806.947-1.502 1.944-2.307 2.725-.167.227-.286.553-.513.827a.394.394 0 01-.108.091c-.174.101-.286.202-.397.266a.84.84 0 01-.442.124s-.021-.002-.052-.01l-.449.366c-.487.402-1.046.596-1.533.596-.715 0-1.357-.381-1.769-.867-.278-.327-.447-.701-.484-1.025-.169-.656-.29-2.896-.296-4.776-.079-.122-.117-.296-.117-.564 0-.234 0-.526.06-.99l.056-.863c0-.037 0-.074.005-.116a.398.398 0 01-.047-.326l.236-.821c-.543.735-1.674 2.268-1.956 2.679l-.179.268a.478.478 0 01-.067.078c-.031.04-.048.1-.075.157a1.962 1.962 0 01-.152.273l-.013.018c-.074.096-.148.172-.21.245-.022.025-.054.037-.054.07a.413.413 0 01-.022.13c-.073.212-.195.312-.338.445a2.507 2.507 0 00-.049.134.368.368 0 01-.02.093c-.079.23-.174.452-.333.606-.116.111-.284.244-.342.39a.36.36 0 01-.139.29l.013-.005-.11.106a.554.554 0 01-.072.058c-.205.154-.368.347-.524.462-.422.455-.955.804-1.549 1.149l-1.062.861c-.533.512-1.124.857-1.657 1.257a.362.362 0 01-.066.04c-.064.031-.128.082-.193.117a.726.726 0 01-.26.087c-.368.107-.784.308-1.197.506-.15.104-.375.196-.64.264a8.111 8.111 0 01-1.116.18 2.17 2.17 0 01-.603.062c-.21 0-.479-.016-.7-.123a1.143 1.143 0 01-.312-.101l-.327-.001c-.635-.018-1.49-.31-1.986-.606a2.893 2.893 0 01-.21-.124.394.394 0 01-.203-.087l-1.104-.896-.026-.022c-.276-.267-.418-.53-.557-.863a.405.405 0 01-.03-.153c0-.238-.021-.522-.226-.72a.396.396 0 01-.121-.249l-.016-.163-.658.754-.358.57-.732.922c-.087.15-.238.306-.469.454l-.218.143a.4.4 0 01-.131.137c-.099.064-.211.147-.245.242a.394.394 0 01-.187.221h.002l-.202.116c-.126.196-.3.498-.468.661a.417.417 0 01-.123.081l-1.324.554-1.091.553a.376.376 0 01-.058.025c-.209.067-.422.186-.7.187-.371.114-.682.168-.933.168-.175 0-.291-.056-.407-.056h-.291c-.182 0-.548 0-1.035-.059a.39.39 0 01-.126-.037c-.225-.108-.449-.171-.629-.271-.115-.029-.225-.025-.302-.025-.169 0-.373-.061-.528-.152a.868.868 0 01-.192-.151l-.383-.185c-.466-.225-.724-.495-1.007-.775a.388.388 0 01-.136-.088c-.053-.051-.129-.133-.129-.337v-.001c-.112-.407-.117-.763-.117-1.175v-1.003a25.039 25.039 0 01-.383.353c-.598.518-1.255.979-1.913 1.383l-.812.42c-.437.181-.698.246-1.113.254l-.506.001a8.53 8.53 0 01-.997-.056c-.157-.002-.374-.017-.532-.084-.115-.04-.196-.084-.317-.084h-.348a.417.417 0 01-.116-.017l-.929-.28a.409.409 0 01-.115-.056l-.639-.448a.286.286 0 01-.043-.035l-1.86-1.736-.029-.031c-.314-.362-.504-.723-.692-1.085a1.47 1.47 0 01-.161-.576c0-.135-.04-.269-.075-.404a2.749 2.749 0 01-.097-.531l-.08-.232c-.208-.327-.258-.693-.268-1.068l-.338.415-.788.976-.072.138c-.089.392-.351.728-.626.994-.267.257-.536.513-.751.818a1.124 1.124 0 01-.442.423l-1.294.735c-.29.14-.508.208-.871.208-.109 0-.218-.008-.326-.018l-.218-.021a3.978 3.978 0 00-.327-.017c-.257 0-.425-.011-.681-.176a.41.41 0 01-.062-.048c-.063-.061-.156-.086-.247-.113a2.081 2.081 0 01-.585-.113c-.343-.014-.628-.142-.907-.341-.367-.214-.718-.512-.865-1.008a.369.369 0 01-.011-.045c-.059-.339-.117-.622-.176-1.018a.377.377 0 01-.004-.058c0-.046-.021-.074-.052-.104a.404.404 0 01-.099-.153l-.069-.076c-.173-.251-.245-.424-.245-.675 0-.994.122-1.871.423-2.747l.003-.012c.174-.676.298-1.35.584-1.967.068-.244.19-.487.315-.673.286-.651.68-1.248.905-1.9a.368.368 0 01.057-.107.353.353 0 01.056-.109c.395-.544.619-1.143.956-1.742l.343-.716a.402.402 0 00.188.533l.066-.138-.246-.412.114-.218c.295-.569.649-1.139 1.003-1.708l.222.4.002-.002-.22-.404.141-.225c.134-.455.423-.811.664-1.217l.009-.014c.283-.437.625-.873.852-1.31l.015-.028c.209-.334.429-.594.698-.739l.42-.354c.155-.147.383-.291.61-.364a.395.395 0 01.123-.019c.021 0 .036-.018.054-.039l-.012.014c.281-.338.692-.493 1.114-.628a.389.389 0 01.122-.019c.079 0 .153-.048.267-.087l-.016.007a.398.398 0 00-.228.479.826.826 0 00.212-.052c-.082-.218-.108-.459.176-.459h.204c.066 0 .115.014.15.039l.003-.018 1.976.672.045.018c.06.029.115.073.175.073.42 0 .78.243 1.13.445l.016.01c.183.118.296.27.357.435l.274-.241c.137-.22.307-.298.444-.311l.103-.002a.62.62 0 01.411.137l.176.05c.129.041.215.037.343.037.265 0 .527.09.713.252.078.05.133.084.217.084a1.001 1.001 0 01.878.496c.039.076.075.155.155.232.412.397.529.665.529.904a.46.46 0 01-.01.09l-.117.504-.587 1.983-.466 1.516c-.288.942-.518 1.94-.747 2.878-.116.559-.348 1.063-.464 1.622a.275.275 0 01-.014.049c-.109.315-.161.631-.216.946-.06.345-.12.689-.238 1.093-.111.592-.223 1.184-.279 1.824-.004.162-.058.323-.058.431a.376.376 0 01-.013.1c-.05.193-.045.435-.045.628v.245l.168.975.004.081c.012.019.021.038.03.057.114.276.227.602.294.886l.133.193a.171.171 0 00.071.019h.085c.088-.044.158-.078.236-.095a.907.907 0 01.38-.129c.053 0 .139.025.2.046.307-.272.662-.45 1.021-.623a.258.258 0 00.109-.103.403.403 0 01.089-.115l.746-.663c.14-.135.285-.264.429-.34a2.67 2.67 0 00.738-.718.368.368 0 01.051-.06c.067-.064.142-.171.256-.25.488-.531.923-1.163 1.305-1.794.283-.492.567-.984.794-1.476a.12.12 0 00.008-.016c.162-.312.355-.623.512-.955a.958.958 0 01.154-.366l.009-.026a.202.202 0 00-.007.023.807.807 0 01.014-.02l.009-.044.001-.001.204-.981.106-.461c.012-.318.133-.691.263-1.003l.003-.009c.163-.366.275-.83.431-1.207v-.534c0-.045.007-.089.022-.131l.174-.504a.354.354 0 01.023-.053c.141-.273.246-.542.246-.768 0-.171.133-.422.238-.558.084-.165.168-.363.168-.562 0-.112.026-.225.07-.344.031-.084.075-.174.107-.276.01-.16.056-.358.056-.556 0-.037.005-.074.015-.109.176-.622.468-1.187.702-1.865l.329-1.055c.004-.202.031-.352.129-.493.023-.137.072-.269.135-.396.073-.148.18-.281.209-.42a.477.477 0 01.026-.081c.078-.174.113-.361.159-.547a2.67 2.67 0 01.251-.696c.039-.102.079-.183.079-.33 0-.064.015-.128.045-.184a.945.945 0 00.129-.488c0-.034.004-.068.013-.101.12-.463.357-.869.537-1.332a.417.417 0 01.033-.067c.145-.232.13-.469.178-.748.068-.431.118-.663.201-.883a.76.76 0 01-.128-.018 1.606 1.606 0 01-.725.189c-.104 0-.267-.042-.32-.056a1.786 1.786 0 00-.491.101c-.221.068-.442.142-.693.174l-.013.002c-.288.059-.581.167-.985.223l-.053.001-.001.003h-.233a.415.415 0 01-.093-.011c-.192-.047-.286-.101-.43-.101-.041 0-.066.023-.099.031a.913.913 0 01-.085.017c-.263.12-.473.176-.745.176h-.175a.33.33 0 00-.055.006.536.536 0 01-.174.187.601.601 0 01-.313.086l-1.282.223-1.206.105a1.7 1.7 0 01-.626.175c-.195.053-.39.058-.586.058a2.065 2.065 0 01-1.625-.752l-.039-.025.015.006.109.071a.4.4 0 00.146.028l-.255-.099-.042-.032a.39.39 0 01-.096-.194l-.047-.226a.73.73 0 00-.083-.049.384.384 0 00.078.028v-.002a.388.388 0 01-.293-.291l-.054-.21c-.064-.201-.073-.463-.073-.725a.4.4 0 00.4.4l-.4-.404.002-.041c.003-.023.008-.075.042-.146a.509.509 0 01.202-.227.39.39 0 01-.014-.086c0-.117.075-.319.185-.428a.492.492 0 01.207-.123c.041-.028.051-.081.068-.129.029-.085.047-.176.064-.256.007-.181.061-.298.132-.374a.454.454 0 01.286-.148l-.018-.079c.182-.087.282-.151.464-.151.104 0 .213.018.338.079a.435.435 0 01.183-.239.432.432 0 01.195-.063c.22-.113.361-.216.661-.274l.007-.001a.903.903 0 01.243-.062c.087 0 .183.033.278.089.225-.041.431-.098.668-.25a.4.4 0 00-.139.519c.063-.024.128-.053.194-.088-.094-.226-.142-.494.163-.494h.347c.133 0 .325.003.522.056h.027c.262-.123.527-.224.787-.224h.274c.233 0 .253.198.214.398a.592.592 0 00.256-.059.4.4 0 00-.395-.339c.065 0 .178-.011.201-.013a.583.583 0 01.253-.126c.106-.024.262-.029.418-.029.049 0 .098.007.149.022.023.007.074.026.091.033a.57.57 0 00.179-.05c.143-.113.288-.141.504-.21a.4.4 0 00-.252.521.503.503 0 01.199-.092c-.08-.214-.102-.448.18-.448h.223c.023 0 .044.002.063.005v-.005c.405 0 .753.166 1.334.168h.276c.028 0 .053.003.075.008v-.008a.044.044 0 00.022-.009.42.42 0 01.111-.071l.482-.205c.167-.113.316-.154.485-.174.112-.014.238-.013.406-.04a.335.335 0 01.063-.005c.073 0 .134.01.192.024.033.009.057.032.099.032l.066.005c.093.013.255.048.33.103a.453.453 0 01.094.091c.128-.018.269-.026.394-.029a.484.484 0 01.185-.31.436.436 0 01.158-.072v-.003l.002.002a.503.503 0 01.107-.011h.024l-.067-.17.049-.047-.011-.018.012-.023v-.011l.004.004.006-.011-.002-.006.009-.009.026-.05.01.016.005-.005v-.053l.083.082a.389.389 0 01-.025-.143v-.16l.026.025.037-.036.05.123.043.042-.08-.2-.018-.017v-.106l.055.054.008-.008.011.027.118.117-.042-.105-.091-.092v-.16l.025.025.036-.035-.003-.214.081.081a.158.158 0 01.029-.039l-.045-.112.056-.053.051.128.019-.006a.397.397 0 01.016-.274l-.02-.068.132-.085c.083-.093.132-.224.25-.386.165-.419.379-.885.487-1.352l-.003.023c.024-.124.096-.302.118-.355a.427.427 0 01.036-.098l1.001-1.93v-.066l.022.023.002-.003-.024-.024c0-.347.191-.635.335-.912.075-.143.218-.35.425-.501.143-.168.33-.253.528-.38a.4.4 0 00-.126.544c.082-.065.178-.11.275-.167l-.076-.414.397-.164.001.006a.281.281 0 01.153-.036h.344c.071 0 .123.015.159.04l.002-.008.97.416.151.003v-.003c.334 0 .447.058.671.268.141.057.287.164.42.292l.151.204.503.539a.399.399 0 01.107.273l.005.08a.371.371 0 01.045.12l.057.272c.006.031.009.06.01.088l-.001.016-.151.541-1.044 2.292c-.138.381-.235.851-.367 1.308a5.038 5.038 0 01-.363.943l.048.013c.034-.05.097-.081.201-.081h.401c.075 0 .129.016.165.045l.141-.091.047.155v-.109a.76.76 0 01.157.015c.028-.035.073-.059.138-.068l-.011-.004.14.001c.099 0 .156.041.183.106.015-.095.076-.162.218-.162l.164.004a.449.449 0 01.231-.06h.231c.184 0 .239.097.234.223l.045-.111c-.02-.019-.08-.055-.08-.055s.117.045.209.09a.474.474 0 01.225-.13c.158-.064.314-.073.473-.073h.065a.398.398 0 01.122-.28.581.581 0 01.452-.168c.063 0 .123.015.177.041l.03.015c.122 0 .182.054.204.135.083.114.029.263-.055.39l-.003.007-.017.043c.016.026.03.053.04.081l.256-.256c0 .226-.117.34-.232.397a.476.476 0 01-.01.09.466.466 0 01.12.075c.126-.039.26-.066.361-.066h.113c.023 0 .043.002.062.006v-.006l.056.002-.108-.108.001-.024c.005-.072.067-.257.2-.338a.399.399 0 01.253-.059c.091-.022.191-.033.295-.033l.451.002.049.008-.001.001c.038.01.067.026.088.048l.046-.003a.541.541 0 00-.133-.046l.012-.003c.095-.023.155-.006.191.036l-.01.013h.02l-.01-.013a.435.435 0 01.343-.155.84.84 0 01.226.056h.436c.071.004.399.051.432.397l.068-.005c.128 0 .357.011.525.056h.009l-.004-.027v-.019l.021.021a.399.399 0 01-.021-.157.378.378 0 01.145-.258.33.33 0 01.197-.064l.058.003v-.059h.523c.063 0 .121.006.175.019.097-.045.262-.068.4-.112a.389.389 0 01.122-.019c.523 0 1.046.056 1.511.056.071 0 .141.019.202.054l.029.001c.037-.035.094-.055.178-.055h.111c.022 0 .043.002.061.006v-.006c.11 0 .208.022.301.055a.434.434 0 01.222-.055.95.95 0 01.244.062.4.4 0 01.288.214.353.353 0 01.002-.138.41.41 0 00-.07-.043.174.174 0 00.079.017l.007-.016a.402.402 0 00-.086-.057c.046.023.071.017.117.017.036-.035.093-.056.177-.056h.134c.033 0 .061.004.086.011a.653.653 0 01.224-.067h.144a.387.387 0 01.127-.273c.049-.048.131-.119.328-.119.075 0 .145.02.205.056h.185c.112 0 .175.046.206.116a.143.143 0 01.032-.027l.011-.05.048.026a.323.323 0 01.081-.009h.102c.27 0 .259.216.187.424l.068.006.031-.03v.013l.044-.037-.042-.044s.038.004.063.004l.033.001a.591.591 0 01.315-.113c.045 0 .073-.003.104.001a.432.432 0 01.303-.113c.172 0 .352.129.384.159a.336.336 0 01.081.102l.045.084a.437.437 0 01.362-.177c.09 0 .173.029.239.079l.051.037.107-.004.008-.003a.41.41 0 01.317.023c.026.008.05.019.072.03a.395.395 0 01.156-.048l.024-.002a.321.321 0 00-.142.05l-.014.014.031.02.06.1.008.282-.008.038h.058a.396.396 0 00.014-.104l-.064-.202-.008-.014v-.013l.008.027.116.192a.248.248 0 00.071-.046v-.4a.6.6 0 01.128.015c.047.01.12.041.221.041a.8.8 0 01.183.017l.009-.002a.284.284 0 01.108-.015l.052.005a.536.536 0 01.17.054v-.115c.137 0 .277.049.471.112h.017a.5.5 0 01.348.172l.036-.02v-.096c.118 0 .212.025.282.056h.044a.398.398 0 00-.152-.129c.072.035.182.017.291.017.261 0 .38.042.51.168l-.024.059c.028.234-.195.629-.195.629l.4-.4c0 .204-.077.286-.13.337-.05.047-.131.119-.329.119h-.523a.392.392 0 01-.214-.063.577.577 0 01-.108-.032c-.133.114-.259.095-.259.095h-.02a.376.376 0 01.013.09v.006h.065a.4.4 0 01.4.386v.102l.038.016h.434c.135 0 .282-.008.406-.046.038-.011.082-.01.096-.044a.402.402 0 00.065.412.695.695 0 00.137-.066v-.216l-.106-.268.166-.16.164.398.009-.009v-.041l.021.021.003-.003-.017-.017.003.001-.01-.01a.56.56 0 01.109-.288v-.168c.079 0 .143.017.196.042.017-.097.046-.176.094-.206l-.057-.004.057.003a.082.082 0 01.052-.011l-.029-.024a.398.398 0 00-.139-.024c-.105 0-.219.084-.219.084s.143-.116.292-.137a.36.36 0 01-.037-.07l.091-.427.396-.234c.079 0 .38.014.553.083l-.011-.004.51.164a.4.4 0 01-.122.781l-.561-.002.08.049c.059.038.107.09.139.153l.222.428a.54.54 0 01.337.26l.075-.006.001-.17h-.002.161a.397.397 0 00-.278-.112h.756c.057 0 .111.012.159.033zM80.055 48.03l-.129.105c-.007-.008-.015-.016-.021-.025a.402.402 0 01-.079-.337l-.121.543-.091.074a.4.4 0 00-.143.262l-.04-.08-.165.213.154.323.003.036-.056.084-.19-.188v.16l.13.131c-.026.049-.05.1-.073.153a.396.396 0 01-.062-.479l-.636 1.115-.022.015-.004.004-.02-.038-.111.159.083.16c.021.106.064.218.104.307l-.026.013-.09-.221-.037-.162-.024.011-.021-.051-.055.053.012.029-.023.011.04.179-.094-.094v.106c0 .054.008.101.024.142l-.077-.077-.022-.047-.988 1.12.125.275-.003-.001-.124-.271-.291.336.026.055a.359.359 0 00-.002.143h-.017l-.045-.108-.165.16.015.037c-.066.112-.004.307.068.465l-.209-.208.008-.167-.407.616a.402.402 0 00.092.539l-.016.028a.396.396 0 01-.147-.546l-.266.461-.857.883c-.191.23-.312.426-.388.563a.513.513 0 00-.185.222l-.931 1.054c-.01.012-.02.024-.028.037a9.358 9.358 0 01-1.189 1.415s.054-.038.075-.047a.586.586 0 01.115-.028c.066.004.146.05.146.05l-.137.35h-.018c-.058 0-.116-.056-.116-.056s-.058.056-.058.112l-.037.053-.144-.356v-.045c.106-.494.113-1.085.167-1.63l.156-.458a.408.408 0 00.025-.14c0-.361.113-.72.22-1.132l.182-1.099c.051-.298.096-.647.251-.945a.44.44 0 00.039-.116c.029-.167.115-.315.175-.449a1.24 1.24 0 00.119-.41c.116-.531.34-.961.507-1.498l.232-.839c.124-.353.3-.593.361-.948l.003-.021c.006-.019.018-.06.029-.106l.174-.288.407-.952a.549.549 0 00.02-.057l.205-.792a.97.97 0 00.21-.426c.056-.379.218-.654.284-1.124.089-.204.104-.407.154-.569a.41.41 0 00.031-.162v-.138c.05-.139.058-.278.058-.417 0-.34-.09-.594-.355-.848l-.71-.628a.341.341 0 00-.048-.037 2.708 2.708 0 00-.657-.304c-.159-.145-.278-.207-.548-.207h-.116c-.201 0-.505.004-.807-.093l-.005.03c-.034-.031-.084-.049-.155-.049h-.134c-.291 0-.258.25-.171.471a.251.251 0 00-.122.153l-.022.026a.4.4 0 01.139-.611c-.196.094-.36.139-.468.383-.193.247-.3.497-.508.698l.196.485-.034.042-.264-.365-.033.096c-.22.274-.386.553-.47.869a.184.184 0 00-.021.028c-.019.027-.036.07-.065.13-.269.287-.497.75-.77 1.074-.182.184-.258.407-.374.586a.531.531 0 00-.145.355l-.029.098c-.007.026-.003.052-.025.074a.382.382 0 00-.071.093l-.399.713c-.093.14-.139.285-.285.426a.3.3 0 00-.038.042l-.349.448a.391.391 0 00-.076.164c-.048.232-.249.455-.397.685l-.211.255.198.433-.104.17a.4.4 0 01-.133-.55l-.566.928-.209.251.199.434a3.507 3.507 0 00-.095.175.401.401 0 01-.141-.559c-.195.315-.323.57-.391.821-.052.14-.156.231-.205.327l.005-.01-.437.79c-.234.238-.418.526-.599.816a3.807 3.807 0 01-.577.708l.212.526-.036.061-.095-.094-.167-.261-.031.064-.005-.005v.015c-.236.442-.707.789-1.02 1.192l.006.013c-.117.067-.217.14-.305.217.056-.172.136-.322.214-.472a.394.394 0 00.045-.184c0-.168.058-.336.058-.504 0-.203.048-.406.057-.568.032-.124.094-.236.146-.352.055-.121.103-.246.133-.379l.326-1.047c.124-.191.238-.435.263-.727a.4.4 0 00.099-.157c.072-.206.138-.483.138-.69v-.168l.002-.007a.416.416 0 00.128-.145c.017-.033.052-.049.07-.067a.642.642 0 00.067-.083.446.446 0 00.08-.217c.026-.188.09-.353.151-.518a3.24 3.24 0 00.19-.661c.104-.282.294-.602.445-.846.08-.081.154-.16.205-.237a.673.673 0 00.113-.303.389.389 0 00.105-.105c.152-.219.182-.435.187-.654l.12-.31c.076-.09.129-.188.171-.292.044-.111.066-.233.13-.355a.398.398 0 00.043-.15l.06-.706c0-.126-.109-.387-.239-.512a.416.416 0 00-.104-.073c-.186-.089-.319-.231-.505-.455a.404.404 0 00-.134-.105c-.262-.126-.526-.249-.854-.312a.398.398 0 00-.034-.005 1.69 1.69 0 00-.274-.058 1.58 1.58 0 00-.265.056h-.839c-.214 0-.43.062-.645.131l.071.451-.069.092-.201-.4-.291.391.225.447c-.031.048-.065.094-.096.142a.398.398 0 01-.194-.451c-.023.087-.081.143-.126.209-.053.08-.102.165-.137.262l-.115.148c-.109.111-.2.248-.284.393-.087.15-.16.314-.275.425a.368.368 0 00-.051.06c-.13.187-.318.378-.447.69a.389.389 0 00-.031.154c0 .552-.276 1.049-.536 1.552l-.476 1.088a.359.359 0 00-.027.086c-.112.591-.331 1.13-.45 1.668l-.01.016a.404.404 0 00-.107.166l-.64 1.906a.405.405 0 00-.066.137l-.29 1.12-.009.042c-.119.803-.353 1.607-.353 2.411v1.904c0 .021.002.042.005.063l.113.703c.011.261.166.461.354.642l.015.014c.618.536.558.534 1.238.892l.478.23.173.04-.093-.011.558.123c.219 0 .438.037.617.117.242.143.545.163.778.163a.425.425 0 00.122-.019c.561-.181 1.056-.309 1.43-.549a.379.379 0 00.113-.109c.034-.049.097-.066.148-.094.083-.046.161-.093.225-.145.312-.187.57-.433.826-.741a.186.186 0 00.021-.028c.042-.059.061-.091.109-.114a.405.405 0 00.231-.153l.143-.183c.42-.344.776-.587 1.079-.995l.1-.145c.178-.166.41-.335.631-.527.001.122.008.243.045.364l-.092.532a1.554 1.554 0 00-.069.546l.4.4-.4-.4v.448c0 .836.127 1.672.436 2.389l.408.774c.187.237.429.362.615.541.03.029.066.054.104.072l.581.28a.423.423 0 00.08.029c.176.042.268.03.4.115.03.019.061.034.094.045.22.07.441.131.587.131h.117c.297 0 .595.045.844.141a.397.397 0 00.284.001l.976-.365a.367.367 0 00.266-.115l.056-.053-.013.005a.383.383 0 00.063-.064l.346-.166h.025a.4.4 0 00.29-.125l.657-.692.465-.56-.004.002a.353.353 0 00.074-.122l.012-.012a.378.378 0 00.055-.064l.447-.646a.455.455 0 00.161-.101l.36-.288-.025.008a.357.357 0 00.174-.307l.042-.061-.002.001a.37.37 0 00.053-.094.383.383 0 00.244-.264l.213-.264a.39.39 0 00.201-.109l.055-.053-.015.006a.343.343 0 00.068-.069.383.383 0 00.116-.111l.33-.477a.4.4 0 00.143-.247l.08-.505a4.297 4.297 0 00-.003.162c0 .138-.056.275-.104.459-.066.255-.129.51-.129.829l.003.051.113.871c0 .129 0 .261-.045.433l.387.501-.4-.397v.109c0 .154.059.313.135.468l.102.547.056.426c.044.343.398.359.398.359a.403.403 0 01-.174-.04l.686.331a.492.492 0 00.127.165c.095.082.278.16.465.16h1.394c.197 0 .395-.052.773-.172a.585.585 0 00.211-.058.498.498 0 00.262-.308c.034-.104.026-.267.026-.478v-.425l.028-.066.02.038a.912.912 0 00.784.571c.225.051.445.188.626.318.022.016.046.03.071.041l.587.261a.683.683 0 00.209.206c.154.1.399.184.645.184h2.267s.063.006.162-.034l.373-.155c.637-.17 1.275-.447 1.969-.67l.022-.008c.343-.132.615-.269.889-.533.143-.138.229-.284.419-.376a2.245 2.245 0 00.543-.432c.166-.17 1.109-.468 1.128-.54.015-.057.055-.092.095-.131l.223-.208c.342-.383.736-.716 1.03-1.095.173-.128.31-.307.496-.546.391-.484.903-.471 1.169-1.401.493-.421.804-.946 1.171-1.476.012-.017.022-.036.032-.055.321-.672.512-1.705 1.102-2.17a.393.393 0 00.055-.053c.333-.385.589-.777.667-1.223 0 .004.507-1.301.507-1.301l.057-.19c.006-.023-.005-.051.019-.067a.41.41 0 00.062-.048c.155-.15.255-.437.332-.662l.11-.367c.179-.333.261-.691.339-1.051.064-.297.123-.595.277-.867a.407.407 0 00.045-.122l.064-.228-.001.022c.06-.629.118-1.201.118-1.773v-.896c0-.175-.001-.577-.058-.93a3.443 3.443 0 00-.196-1.105c-.005-.013-.009-.025-.015-.037-.227-.492-.402-1.036-.676-1.533-.093-.553-.466-.95-.862-1.331l-.641-.508a2.674 2.674 0 00-1.267-.764 20.676 20.676 0 00-1.986-.563c-.205-.066-.416-.125-.626-.125h-.523c-.63 0-1.199.176-1.829.418l-.739.3c-.682.358-1.356.666-1.852 1.203a.404.404 0 00-.08.129c-.703.458-1.239.972-1.773 1.544-.243.234-.465.449-.708.642l.339-1.449a.404.404 0 00.011-.091c0-.034.018-.066.038-.098a.44.44 0 00.064-.134l.111-.375c.403-1.164.69-2.328 1.15-3.437.172-.389.23-.724.404-1.114a10.005 10.005 0 00.428-1.238c.05-.191.041-.43.133-.625.199-.327.331-.707.397-1.087a.39.39 0 00.006-.068c0-.082.026-.162.047-.248.029-.121.057-.248.066-.385.341-.714.68-1.481.965-2.249l-.004.011c.233-.507.41-1.016.644-1.636.218-.58.434-1.214.812-1.796.1-.117.194-.31.201-.506l.049-.428c.055-.155.067-.352.067-.491a1.84 1.84 0 00-.219-.856.4.4 0 00-.182-.177.62.62 0 00-.254-.148l.041.004c-.187-.036-.288-.157-.4-.301a.397.397 0 00-.142-.115c-.172-.083-.349-.151-.522-.151h-.174a.634.634 0 01-.365-.105.403.403 0 00-.094-.044c-.215-.069-.431-.131-.645-.131-.318 0-.707.094-.954.316-.581.44-1.027 1.007-1.173 1.747a.885.885 0 00-.068.251l-.172.373c-.301.309-.437.619-.566.991-.281.652-.509 1.311-.851 1.97l.26.428-.004.011-.274-.4-.174.448.306.446-.02.089a.399.399 0 01-.303-.48c-.104.451-.148.806-.351 1.156a1.694 1.694 0 00-.229.539c-.041.155-.05.313-.151.435a.347.347 0 00-.048.072c-.181.349-.247.697-.366 1.046l-.163.366c-.247.48-.375 1.017-.44 1.555-.041.16-.077.322-.156.445a1.733 1.733 0 00-.372.986l-.097.468c-.223.444-.342.888-.515 1.333l-.294.849c-.241.636-.478 1.273-.598 1.91l-.001.006c-.05.287-.087.625-.236.864a.254.254 0 00-.016.028c-.13.25-.2.561-.264.811l-.111.479c-.175.405-.24.755-.3 1.105.001-.007-.574 1.931-.574 1.931a.541.541 0 00-.01.043l-.226 1.253-.276.745c-.125.306-.141.611-.143.916l-.035.102.048.068a.401.401 0 00.161.229l.006.008zm203.024-16.18l-.004.002a.425.425 0 01-.122-.019c-.137-.045-.321-.037-.459-.037h-.523c-.249 0-.414-.016-.58-.096-.046-.022-.071-.016-.117-.016-.066 0-.167-.016-.233.016a.403.403 0 01-.174.04c-.213 0-.426-.047-.595-.055-.242.059-.434.111-.683.111-.155 0-.309-.044-.422-.055-.242.059-.433.111-.682.111-.124 0-.29-.006-.47-.071a.36.36 0 01-.054.031c-.182.088-.373.152-.464.152a.642.642 0 01-.32-.112l-.013-.008a.721.721 0 00-.364-.104c-.039 0-.062-.004-.094.006a.624.624 0 01-.181.075 1.704 1.704 0 01-.365.031.399.399 0 01-.173-.04.793.793 0 00-.321-.072.427.427 0 01-.081.037c-.235.075-.314.075-.471.075a.82.82 0 01-.195-.03.554.554 0 01-.293.109.418.418 0 01-.338-.152.37.37 0 01-.103.017c-.144 0-.235-.004-.317-.021l-.13.1c-.136.105-.251.089-.251.089a.524.524 0 01-.149-.023l-.072-.025c-.139.06-.28.104-.418.104-.145 0-.293-.048-.436-.112h-.203a1 1 0 01-.312-.055.757.757 0 00-.212.071.43.43 0 01-.105.034.953.953 0 01-.243.062.443.443 0 01-.234-.064c-.01-.006-.02-.012-.029-.02a.573.573 0 01-.284.083l-.15.001a.407.407 0 01-.174-.04.188.188 0 00-.086-.017.396.396 0 01-.205.057s-.09 0-.085-.001c-.401.053-.904.056-1.307.056a2.227 2.227 0 01-.584.057h-.755a.398.398 0 01-.145-.028.391.391 0 01-.146.028h-.29c-.139 0-.277.055-.416.094a1.723 1.723 0 01-.456.074c-.174 0-.29-.056-.406-.056-.117 0-.291.056-.349.056-.099 0-.241-.041-.389-.054-.156.061-.348.11-.483.11-.065 0-.131-.008-.196-.018l-.327-.038h-.026c-.112.07-.206.056-.206.056s-.106.009-.237-.056c0 0-.009 0-.008-.001-.178.086-.362.108-.586.112h-.583a.4.4 0 01-.164-.044c-.493.108-.889.212-1.338.266l-.047.001-.001.002h-.116c-.138 0-.321.048-.459.093a.38.38 0 01-.107.018h-.502a.392.392 0 01-.113-.023.663.663 0 01-.087.036 1.222 1.222 0 01-.359.044l-.333-.001c-.178-.005-.32-.041-.426-.052a.608.608 0 01-.258.052l-.176.001a.946.946 0 01-.202.112c-.189.458-.371.911-.471 1.327v.226a.374.374 0 01-.23.357l.046-.014c-.194.125-.165.292-.165.448 0 .051-.01.101-.028.148l-.281.702c-.177.622-.412 1.245-.646 1.867l-.002.004c-.173.444-.238.782-.4 1.109-.073.276-.269.596-.444.876-.001.172-.076.42-.232.608-.004.02-.001.037-.001.062v.273c0 .08-.018.144-.049.199-.03.062-.037.125-.056.172a.608.608 0 01-.031.068c-.017.084-.038.172-.038.24a.376.376 0 01-.013.1c-.075.29-.174.642-.4.86a.467.467 0 00-.052.084c-.001.301-.014.499-.12.732a2.228 2.228 0 01-.143.599c-.057.157-.123.314-.148.483a.35.35 0 01-.03.103l-.082.198v.033c0 .169-.012.337-.098.512-.164.373-.233.792-.431 1.168a1.938 1.938 0 01-.147.535c-.052.128-.112.249-.14.36a.644.644 0 01-.064.219c-.039.082-.11.164-.153.246l-.011.02a2.034 2.034 0 00-.002.076c0 .32-.06.58-.187.895l-.116.661-.407 1.568-.009.03c-.126.363-.141.721-.383 1.083l-.002.093-.058 1.271c0 .316-.064.631-.129.883-.05.192-.162.332-.162.572 0 .28-.058.672-.058 1.008a.37.37 0 01-.011.093l-.174.728a.4.4 0 01-.063.139l-.002.002a.457.457 0 01.017.087c.005.015.024.069.032.1a.717.717 0 01.027.195.394.394 0 01-.034.161l-.082.198v.313c0 .199-.053.401-.175.654v.298c0 .05-.012.101.014.152.082.158.103.394.103.632 0 .389.037.741.145 1.118.04-.015.078-.027.113-.037.405-.258.67-.609 1.028-.913l1.207-1.55c.294-.34.473-.568.817-.901.177-.232.264-.405.525-.578.077-.124.166-.224.256-.318.092-.095.196-.171.244-.312a.43.43 0 01.063-.115l.334-.43.57-.933a.38.38 0 01.042-.057c.318-.357.697-.759.856-1.167a.884.884 0 01.393-.408l.391-.659a.399.399 0 00.14.548l.094-.158-.021-.04a.399.399 0 01-.152-.294l-.043-.084.051-.074a.973.973 0 01.156-.407c.052-.081.119-.155.171-.255a.388.388 0 01.047-.072l.413-.496a.99.99 0 01.121-.239c.05-.076.113-.139.174-.257a.254.254 0 01.016-.028c.079-.126.167-.233.246-.332.038-.047.091-.128.101-.143a.396.396 0 01.044-.169c.087-.168.184-.325.399-.429.081-.097.171-.205.204-.365a.443.443 0 01.013-.049c.121-.35.466-.763.717-1.118.139-.379.347-.697.678-.959a.69.69 0 00.083-.109v.001c.017-.037.011-.074.011-.092 0-.075.021-.148.061-.212.162-.261.336-.554.567-.763.182-.415.325-.875.677-1.236l.145-.233a15.683 15.683 0 01.616-1.019c.134-.197.274-.383.431-.559.196-.443.584-.794.883-1.134.144-.267.298-.464.508-.603l.008-.006c.514-.389 1.03-.932 1.541-1.269.184-.172.369-.294.603-.411.11-.096.219-.159.327-.213.285-.318.575-.45.93-.519l.013-.002c.318-.051.584-.1.849-.203l.022-.007c.226-.073.302-.075.529-.075.108 0 .256.021.365-.049a.4.4 0 01.216-.063c.215 0 .43.006.645.075a.42.42 0 01.069.029l1.31.715c.3.119.545.291.847.465.487.27.703.6.912 1.004a.208.208 0 01.019.043c.251.664.317 1.268.317 1.933v.56c0 .567-.171 1.079-.233 1.646l-.005.155c-.014.105-.053.235-.053.327a.387.387 0 01-.003.048c-.116.957-.402 1.858-.694 2.759v.101a.386.386 0 01-.065.223c-.066.109-.096.231-.135.356-.06.189-.131.384-.264.585a3.199 3.199 0 00-.242.713.353.353 0 01-.022.072c-.134.322-.276.639-.534.896-.235.295-.474.44-.788.516l-.03.006c-.306.049-.612.097-.919.188a.603.603 0 01-.365.097c-.247 0-.491-.017-.739-.176a.403.403 0 01-.061-.048c-.246-.237-.488-.362-.673-.597-.292-.352-.496-.711-.496-1.203V49.6l.4.396-.378-.531c.107-.307.215-.614.27-.965a.733.733 0 01.171-.437.511.511 0 01.025-.024c.276-.632.554-1.217.883-1.801.213-.614.431-1.178.431-1.794 0-.277.067-.49.137-.639l.105-.459a.394.394 0 01.025-.073c.142-.32.148-.682.186-1.047a.114.114 0 00-.053-.014c-.06 0-.115.043-.175.072a1.69 1.69 0 00-.477.32l-.016.014c-.533.462-1.077.915-1.343 1.582a.402.402 0 01-.094.14c-.072.069-.087.174-.134.266a1.028 1.028 0 01-.278.357l-.402.441c-.04.039-.052.101-.052.16a.395.395 0 01-.084.245c-.153.197-.251.446-.353.692a.38.38 0 01-.073.116c-.372.41-.539.919-.84 1.383a1.395 1.395 0 01-.216.513c-.172.325-.451.701-.618 1.077a.429.429 0 01-.019.037c-.285.494-.458.988-.738 1.482l-.69 1.883c-.282.708-.566 1.524-.735 2.341a.382.382 0 01-.05.126v.125a.387.387 0 01-.053.204c-.077.164-.063.366-.063.528 0 .168-.058.28-.058.392a.376.376 0 01-.013.1c-.049.191-.103.381-.103.572 0 .191.054.381.103.571a7.512 7.512 0 01.128.941c.028.042.1.148.13.208l.002.002a.309.309 0 00.05.006h.697c.272 0 .445-.152.672-.283l.036-.018c.843-.379 1.517-.868 2.242-1.351.53-.451 1.116-.794 1.761-1.189l.9-.705c.508-.434.904-.704 1.299-1.139a.25.25 0 01.023-.023l2.03-1.901c.05-.048.148-.167.169-.191a.4.4 0 01.083-.214c.197-.253.396-.443.591-.574.315-.287 2.947-2.656 3.536-3.149a1.39 1.39 0 01.191-.141.394.394 0 01.178-.042l.016-.228c.036-.212.181-.41.37-.587.067-.064.139-.126.201-.19a.696.696 0 00.062-.076v-.139l.346.342a.381.381 0 00.029-.057l-.148-.65c-.042.02-.057.05-.072.073-.019.031-.039.104-.039.104v-.04c0-.063-.008-.126-.018-.189l-.04-.315c0-.028.003-.055.009-.082l.162-.781-.055-.593c0-.187.007-.278.104-.464.006-.013.013-.024.02-.036a.96.96 0 01.24-.573c.048-.055.1-.104.153-.154.051-.048.108-.098.133-.207l.003-.011c.12-.464.188-.983.422-1.453.224-.772.345-1.647.626-2.371.019-.113.019-.217.031-.321.02-.175.062-.349.179-.542l.006-.012c.156-.306.261-.613.366-.97 0 0 .219-.739.219-.735a.384.384 0 01.127-.272.354.354 0 01.108-.077l-.04-.057.055-.159.04.055-.002-.033v.002-.065l.01.011-.009.045.159.159h.003l.031-.014-.005-.012-.179-.178.001-.001-.011-.011c0-.387.234-.845.498-1.235.116-.403.254-.982.616-1.443a.648.648 0 01.118-.504c.041-.063.092-.129.143-.197.028-.036.06-.071.079-.107.019-.344.169-.689.344-.988zM194.286 57c-.305.528-.671.918-1.209 1.436a.397.397 0 00-.083.116l-.141.092a1.619 1.619 0 00-.223.167c-1.012.768-1.477.957-2.435 1.484l-.044-.008a.392.392 0 00.072-.063l1.116-1.236c1.082-.581 2.065-1.302 2.947-1.988zM84.49 55.135c.22-.532.44-1.064.769-1.596.309-.421.497-.838.682-1.314l.529-1.359c.07-.202.422-.384.422-.654 0-.118.019-.24.11-.328a.387.387 0 00.067-.084c.249-.421.496-.902.62-1.323a.05.05 0 00.004-.013c.05-.194.131-.389.168-.584l.046-.044c.229-.159.385-.384.468-.611a8.443 8.443 0 011.212-1.85l.01-.014c.079-.1.148-.22.222-.341.059-.097.118-.2.216-.268a.4.4 0 00.185-.185l.111-.213a.43.43 0 00.04-.109c.041-.2.172-.319.263-.438l1.603-1.6.601-.694a.375.375 0 00.038-.051l.023-.018c.418-.131.736-.366 1.107-.664a.697.697 0 00.028-.024.39.39 0 01.303-.112h.174c.19 0 .306.105.401.288l.011.02c.431.727.704 1.454.758 2.286l.057.608v.374c0 .754-.112 1.347-.224 1.992-.119.515-.236.974-.296 1.49l.371.416-.001.003-.373-.37.002.14c.002.04.006.081-.015.121-.009.017-.016.035-.023.053-.072.209-.196.425-.196.635 0 .234-.085.428-.243.623a.568.568 0 00-.164.441l.012.012v.002l-.012-.011v.046c-.17.517-.443.936-.66 1.407l-.219.526a4.032 4.032 0 00-.732 1.596c.001-.005-.244.564-.244.564-.171.184-.298.415-.42.649-.214.359-.483.669-.752.98a.92.92 0 00-.27.465c-.441.604-1.031 1.066-1.618 1.579l-1.086.826a.143.143 0 00-.018.015c-.485.415-1.024.671-1.616.878a.417.417 0 00-.074.035c-.365.22-.779.377-.981.377-.146 0-.834-.032-.965-.071-.112-.068-1.054-.366-1.402-.486-.422-.146-.778-.608-.778-.608.188-.255.171-.351.426-.597a1.68 1.68 0 00.3-.431c.07-.131.842-1.868 1.023-2.382zm134.549-11.524l-.4-.39v.327c0 .707-.173 1.414-.285 2.121l-.002.011c-.055.42-.162.891-.271 1.314a3.985 3.985 0 00-.371 1.59.75.75 0 01-.104.224.413.413 0 00-.036.065c-.172.386-.284.882-.513 1.323a.478.478 0 00-.026.062c-.225.706-.619 1.411-.904 2.064-.175.277-.397.558-.522.836l-.381.578-.389.535c-.414.457-.826.969-1.18 1.481a.282.282 0 00-.026.044.26.26 0 01-.11.103 1.147 1.147 0 00-.418.367l-.924.68-.007.005c-.294.227-.586.456-.828.733l-.222.128c-.264.131-.468.319-.668.512a.568.568 0 01-.42.168.489.489 0 00-.054.003c-.502.07-.864.275-1.156.613h-.01c-.182 0-.282.064-.464.151a.362.362 0 00-.043.024.682.682 0 01-.307.105h-.289a.43.43 0 00-.085.008c-.265.05-.582.048-.846.048-.131 0-.25.023-.361.054-.08.021-.149.058-.22.058a.187.187 0 01-.087-.019.15.15 0 01-.036-.085c0-.065.043-.096.11-.16a.926.926 0 00.172-.224c.241-.239.479-.537.661-.888a.325.325 0 00.023-.054c.092-.265.222-.535.402-.718a.444.444 0 00.102-.132l.153-.296.294-.377a1.02 1.02 0 00.23-.282c.053-.091.093-.202.171-.277a.403.403 0 00.11-.188c.044-.171.086-.3.219-.471a.367.367 0 00.05-.083c.162-.364.435-.675.652-.987a9.003 9.003 0 001.493-2.307 56.609 56.609 0 011.837-3.094.406.406 0 00.04-.084c.06-.173.158-.398.187-.588.106-.228.296-.489.526-.71a.45.45 0 00.064-.08l.579-.95c.178-.285.46-.627.596-.969.32-.425.594-.995.972-1.419l.008-.009c.191-.187.322-.387.451-.581.094-.141.184-.28.324-.392a.404.404 0 00.128-.182c.085-.246.303-.442.556-.609a.406.406 0 00.179-.182l.101-.194c.278-.392.676-.632 1.119-.95l.001.007v-.003l.168 1.403-.109.731.396.458zm9.028 12.563l-.024.034-.21-.4-.104.151c.036-.169.091-.342.124-.498.34-1.029.794-2.011 1.304-2.993.119-.23.235-.461.305-.738a.89.89 0 00.136-.336l.993-1.86c.193-.25.319-.451.392-.755l.645-1.242a1.62 1.62 0 00.26-.389.437.437 0 00.028-.071c.105-.352.376-.648.585-.95l.813-1.231c.264-.359.472-.772.839-1.082a.499.499 0 00.071-.068l.284-.328a.418.418 0 00.069-.113l.198-.147a.551.551 0 01.186-.05c.046 0 .071-.006.117.016a.392.392 0 00.11.035l.697.112a.46.46 0 00.064.005c.036 0 .062.023.092.039l-.056.188-1.152 2.054-.406.84a.407.407 0 00-.018.044 2.664 2.664 0 01-.453.827.46.46 0 00-.04.058l-1.325 2.331-.857 1.157a.403.403 0 00-.043.072c-.396.873-1.076 1.581-1.589 2.397l-.968 1.151-.005.007c-.39.483-.779.913-1.225 1.289l.163.444zm58.949-24.486a.779.779 0 00.177-.115l.157-.001c.15.06.309.093.473.115.214.029.441.032.667.094.034.01.07.015.106.015l.438-.163.135-.267a.392.392 0 00-.005-.306.453.453 0 00-.135-.178l-.178-.071-.049-.029.021.018.028.011.069.088.014.014v.003l.176.223c-.083.041-.234.297-.303.421-.012.003-.024.006-.037.007v.061l-.056-.056.056-.005v-.093c.079-.141.207-.402.164-.558l-.014-.017-.097-.099-.066-.026-.225-.002c-.303 0-.608-.061-.926-.121.157-.3.31-.603.462-.897a1490.85 1490.85 0 01.643-.961c.354-.625.591-1.193.886-1.819a.449.449 0 00.023-.061c.16-.566.599-1.02.972-1.482a.248.248 0 00.019-.026l1.569-2.296a.39.39 0 00.064-.161c.19-.158.338-.357.483-.559.109-.152.215-.308.361-.425a.388.388 0 00.042-.039l1.012-1.084.127-.081a.409.409 0 00.144-.156.36.36 0 01.133-.138 2.028 2.028 0 00-.016.29c0 .044.007.088.022.13.043.125.036.25.036.374 0 .144-.018.371-.02.389a.41.41 0 00-.028.079l-.754 3.187-.103.399c-.055.04-.152.115-.201.167a.611.611 0 00-.173.427v.395a.893.893 0 00-.346.462c-.056.153-.074.32-.106.442a.43.43 0 00-.013.101c0 .21-.079.363-.181.511-.082.121-.178.238-.276.367l-.281.18.155.55-.052.177a.396.396 0 01-.283-.478c-.171.713-.515 1.481-.8 2.25l-.003.008c-.227.655-.684 1.254-1.081 2.019a.416.416 0 00-.037.102c-.019.093-.102.157-.165.25a1.36 1.36 0 00-.229.541c-.328.239-.399.609-.461.923-.246.346-.626.841-.857 1.385l-1.111 1.872c-.356.307-.716.817-1.014 1.277l.23.422-.006.012-.243-.4-.136.262a.911.911 0 00-.164.21 1.317 1.317 0 00-.121.301 1.723 1.723 0 00-.306.441c-.164.125-.285.27-.385.411-.078.11-.133.217-.205.287-.158.151-.369.449-.407.752-.37.288-.656.639-.938 1.178-.112.152-.302.315-.432.548.045-.371.112-.735.267-1.071a.381.381 0 00.024-.067l.398-1.531c.066-.147.08-.302.08-.529V39.41c.153-.252.229-.489.295-.71.049-.16.081-.31.189-.435a.405.405 0 00.096-.229c.025-.313.129-.565.241-.811.14-.308.293-.609.386-.969a.019.019 0 00.002-.007c.08-.335.23-.63.371-.92.161-.333.311-.66.38-1.013.4-.875.905-1.802 1.196-2.573l.036-.055zm-104.721 7.835a.347.347 0 01-.073-.01.619.619 0 01-.195-.06.543.543 0 01-.082-.057l-.306-.127.152.031-.277-.112.011.009s-.015-.009-.024-.009c-.036 0-.106 0-.211.032-.164.066-.39.08-.545.08-.324 0-.57-.125-.622-.399a4.987 4.987 0 01-.178-.161.93.93 0 01-.204-.345.391.391 0 01-.035-.162v-.114l.4.397-.4-.4c0-.139-.055-.275-.103-.46a.376.376 0 01-.013-.1c0-.142.01-.259.059-.378.05-.12.139-.25.339-.394a.386.386 0 01.141-.065c.065-.016.094-.061.136-.098.07-.062.147-.124.244-.176.11-.104.186-.164.266-.205.131-.067.282-.092.668-.092h.136c.107 0 .167.042.196.107l.016-.068c.066.032.133.017.233.017.085 0 .214.004.342-.037a.395.395 0 01.123-.019c.147 0 .293.007.405.041.112.034.203.09.27.164.271.155.492.275.661.426l.006.004a.386.386 0 01.051.02.695.695 0 01.275.249c.056.084.099.185.139.264.03.056.045.12.045.184v.92l-.001.004a.38.38 0 01-.025.113.465.465 0 01-.058.119c-.062.24-.246.468-.63.564-.383.219-.818.239-1.258.3l-.074.003z" /> </g> </svg> </a> </nav> <div id="contextMenu" class="opacity-0 absolute -z-1 -translate-y-2.5 bg-white shadow-lg rounded-2xl p-2 ring-1 ring-navy-950/10 shadow-navy-950/[.075] top-full -mt-3 left-8 transition-all" > <a class="group relative flex flex-col whitespace-nowrap px-3 py-2 text-navy-950 hocus:text-violet-950 transition-colors" href="https://fly.io/docs/about/brand/" target="_blank" > <span class="absolute inset-0 scale-90 rounded-lg group-hover:scale-100 group-focus:scale-100 group-hover:bg-violet-100 group-focus:bg-violet-100 transition-all"></span> <strong class="relative text-sm font-semibold"> Need a Logo? </strong> <span class="relative flex items-center text-[0.8125rem] font-medium text-navy-700/70 group-hover:text-violet-800/70 group-focus:text-violet-800/70 transition-colors"> View Our Brand Assets <svg viewBox="0 0 16 16" fill="currentColor" class="relative size-4 ml-0.5 -mr-1" > <path fill-rule="evenodd" d="M6.22 4.22a.75.75 0 0 1 1.06 0l3.25 3.25a.75.75 0 0 1 0 1.06l-3.25 3.25a.75.75 0 0 1-1.06-1.06L8.94 8 6.22 5.28a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd" /> </svg> </span> </a> </div> <script> const [logo, contextMenu] = ['logo', 'contextMenu'].map(id => document.getElementById(id)) logo.addEventListener('contextmenu', e => { e.preventDefault() contextMenu.classList.remove('-z-1', 'opacity-0', 'pointer-events-none', '-translate-y-2.5') contextMenu.classList.add('z-[60]') }) document.addEventListener('click', e => { if (!contextMenu.contains(e.target) && e.target !== logo) { contextMenu.classList.add('-z-1', 'opacity-0', 'pointer-events-none', '-translate-y-2.5') contextMenu.classList.remove('z-[60]') } }) </script> <button data-menu-toggle class="ml-auto menu-toggle lg:hidden relative z-[60] -scale-x-100 rounded-full bg-white [[data-menu-state=on]_&]:shadow-sm border [[data-menu-state=off]_&]:border-transparent bg-clip-padding transition-colors flex-none flex items-center justify-center w-8 h-8 -mx-2"> <span class="sr-only">Open main menu</span> <svg data-menu-button class="absolute cursor-pointer transition-transform duration-[400ms] select-none [[data-menu-state=on]_&]:rotate-45" viewBox="0 0 100 100" width="30"> <path class="fill-none transition-all duration-[400ms] delay-400 stroke-current stroke-[5.5] [stroke-linecap:round] [stroke-dasharray:40_121] [[data-menu-state=on]_&]:[stroke-dashoffset:-68px]" d="m 70,33 h -40 c 0,0 -8.5,-0.149796 -8.5,8.5 0,8.649796 8.5,8.5 8.5,8.5 h 20 v -20" /> <path class="fill-none transition-all duration-[400ms] delay-400 stroke-current stroke-[5.5] [stroke-linecap:round]" d="m 55,50 h -25" /> <path class="fill-none transition-all duration-[400ms] delay-400 stroke-current stroke-[5.5] [stroke-linecap:round] [stroke-dasharray:40_121] [[data-menu-state=on]_&]:[stroke-dashoffset:-68px]" d="m 30,67 h 40 c 0,0 8.5,0.149796 8.5,-8.5 0,-8.649796 -8.5,-8.5 -8.5,-8.5 h -20 v 20" /> </svg> </button> <nav aria-label="Main menu" class="pointer-events-auto hidden lg:flex w-full items-center justify-end" > <div class="hidden xl:flex items-center absolute left-1/2 -translate-x-1/2 px-3 text-sm font-medium"> <dl class="flex-none bubble-wrap hidden shrink-0 xl:flex group relative px-3 py-2.5 cursor-pointer"> <dt class="flex items-center justify-items-center whitespace-nowrap transition-colors text-violet-600"> Articles </dt> <dd class="bubble-b tail text-sm text-navy flex flex-col w-44 rounded-2xl p-2"> <div class="rounded-tl w-3 h-3 absolute top-0 left-1/2 z-[-1] -ml-2 rotate-45 bg-white -mt-1.5"> </div> <a class="relative whitespace-nowrap px-3 py-2.5 before:absolute before:inset-0 before:z-[-1] before:rounded-lg before:transition-all transition-colors before:scale-90 hocus:before:scale-100 hocus:before:bg-violet-100 hocus:text-violet-600" href="/blog/" > Blog </a> <a class="relative whitespace-nowrap px-3 py-2.5 before:absolute before:inset-0 before:z-[-1] before:rounded-lg before:transition-all transition-colors before:scale-90 hocus:before:scale-100 hocus:before:bg-violet-100 hocus:text-violet-600" href="/phoenix-files/" > Phoenix Files </a> <a class="relative whitespace-nowrap px-3 py-2.5 before:absolute before:inset-0 before:z-[-1] before:rounded-lg before:transition-all transition-colors before:scale-90 hocus:before:scale-100 hocus:before:bg-violet-100 hocus:text-violet-600" href="/laravel-bytes/" > Laravel Bytes </a> <a class="relative whitespace-nowrap px-3 py-2.5 before:absolute before:inset-0 before:z-[-1] before:rounded-lg before:transition-all transition-colors before:bg-violet-100 before:scale-100 text-violet-600" href="/ruby-dispatch/" > Ruby Dispatch </a> <a class="relative whitespace-nowrap px-3 py-2.5 before:absolute before:inset-0 before:z-[-1] before:rounded-lg before:transition-all transition-colors before:scale-90 hocus:before:scale-100 hocus:before:bg-violet-100 hocus:text-violet-600" href="/django-beats/" > Django Beats </a> <a class="relative whitespace-nowrap px-3 py-2.5 before:absolute before:inset-0 before:z-[-1] before:rounded-lg before:transition-all transition-colors before:scale-90 hocus:before:scale-100 hocus:before:bg-violet-100 hocus:text-violet-600" href="/javascript-journal/" > JavaScript Journal </a> </dd> </dl> <a href="/security/" class="text-center mx-3 transition-colors hover:text-violet-600" > Security </a> <a href="/infra-log/" class="text-center mx-3 transition-colors hover:text-violet-600" > Infra Log </a> <a href="/docs/" class="text-center mx-3 transition-colors hover:text-violet-600" > Docs </a> <a href="https://community.fly.io" class="text-center mx-3 transition-colors hover:text-violet-600" > Community </a> <a href="https://status.flyio.net" class="text-center mx-3 transition-colors hover:text-violet-600" > Status </a> <a href="/pricing/" class="text-center mx-3 transition-colors hover:text-violet-600" > Pricing </a> </div> <div class="ml-5 flex-none flex items-center"> <a href="https://fly.io/app/sign-in" class="ml-auto text-sm button-sm border border-gray-300 shadow-sm hover:border-violet-200 hover:bg-violet-200 hover:text-violet-600 hover:text-shadow-none hover:shadow-none transition-all" > Sign In </a> <a href="/docs/hands-on/start/" class="text-sm mx-3 button-sm bg-violet-500 hover:bg-violet-600 text-white transition-all" > Get Started </a> <a href="/ruby-dispatch/feed.xml" target="_blank" class="flex items-center p-2 ml-0 -mr-2 hover:text-violet-600 transition-all" tabindex="" > <svg role="img" class="relative top-px shrink-0" viewBox="0 0 20 20" style="pointer-events: none; width: 18px; height: 18px;" fill="currentColor"> <g buffered-rendering="static"> <path d="M5 3a1 1 0 000 2c5.523 0 10 4.477 10 10a1 1 0 102 0C17 8.373 11.627 3 5 3z" /> <path d="M4 9a1 1 0 011-1 7 7 0 017 7 1 1 0 11-2 0 5 5 0 00-5-5 1 1 0 01-1-1zM3 15a2 2 0 114 0 2 2 0 01-4 0z" /> </g> </svg> <span class="sr-only">RSS Feed</span> </a> </div> </nav> <div class="lg:hidden opacity-0 z-[-1] pointer-events-none [[data-menu-state=on]_&]:pointer-events-auto [[data-menu-state=on]_&]:opacity-100 [[data-menu-state=on]_&]:z-40 transition-all duration-500 fixed inset-0 bg-gray-500/25 backdrop-blur-sm"></div> <nav data-menu aria-label="Main menu" class="lg:hidden [[data-menu-state=on]_&]:translate-x-0 -translate-x-full transition duration-300 ease-in-out text-sm w-full sm:max-w-sm md:max-w-[25rem] fixed left-0 top-0 bottom-0 z-50 border-t border-t-gray-200 bg-clip-padding pl-[calc(50vw-240px)] sm:pl-[calc(50vw-320px+1.5rem)] md:pl-[calc(50vw-384px+1.5rem)] pr-6 pt-24 bg-white shadow-[1px_0_rgba(86,75,128,0.1)]" > <div class="max-h-full overflow-y-auto scrollbar-hidden grid justify-start pb-8 pl-4 sm:pl-0"> <a class="flex items-center mr-auto text-sm py-1.5 transition-colors text-navy-950 hover:text-violet-600" href="/blog/" > Blog </a> <a class="flex items-center mr-auto text-sm py-1.5 transition-colors text-navy-950 hover:text-violet-600" href="/phoenix-files/" > Phoenix Files </a> <a class="flex items-center mr-auto text-sm py-1.5 transition-colors text-navy-950 hover:text-violet-600" href="/laravel-bytes/" > Laravel Bytes </a> <a class="flex items-center mr-auto text-sm py-1.5 transition-colors text-violet-600" href="/ruby-dispatch/" > Ruby Dispatch </a> <a class="flex items-center mr-auto text-sm py-1.5 transition-colors text-navy-950 hover:text-violet-600" href="/django-beats/" > Django Beats </a> <a class="flex items-center mr-auto text-sm py-1.5 transition-colors text-navy-950 hover:text-violet-600" href="/javascript-journal/" > JavaScript Journal </a> <a class="flex items-center mr-auto text-sm py-1.5 transition-colors text-navy-950 hover:text-violet-600" href="/security/" > Security </a> <a class="flex items-center mr-auto text-sm py-1.5 transition-colors text-navy-950 hover:text-violet-600" href="/infra-log/" > Infra Log </a> <a class="flex items-center mr-auto text-sm py-1.5 transition-colors text-navy-950 hover:text-violet-600" href="/docs/" > Docs </a> <a class="flex items-center mr-auto text-sm py-1.5 transition-colors text-navy-950 hover:text-violet-600" href="https://community.fly.io" > Community <span class="sr-only">(opens an external site)</span> <svg role="img" width="14" height="14" class="inline-flex ml-2 self-center pointer-events-none" viewBox="0 0 14 14"><g buffered-rendering="static" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"><path d="M12.625 4.825c0-2.318-1.882-4.2-4.2-4.2h-3.6a4.202 4.202 0 00-4.2 4.2v3.6c0 2.318 1.882 4.2 4.2 4.2h3.6c2.318 0 4.2-1.882 4.2-4.2v-3.6zM4.482 8.625l4-4"/><path d="M8.482 7.297V4.625H5.81"/></g></svg> </a> <a class="flex items-center mr-auto text-sm py-1.5 transition-colors text-navy-950 hover:text-violet-600" href="https://status.flyio.net" > Status <span class="sr-only">(opens an external site)</span> <svg role="img" width="14" height="14" class="inline-flex ml-2 self-center pointer-events-none" viewBox="0 0 14 14"><g buffered-rendering="static" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"><path d="M12.625 4.825c0-2.318-1.882-4.2-4.2-4.2h-3.6a4.202 4.202 0 00-4.2 4.2v3.6c0 2.318 1.882 4.2 4.2 4.2h3.6c2.318 0 4.2-1.882 4.2-4.2v-3.6zM4.482 8.625l4-4"/><path d="M8.482 7.297V4.625H5.81"/></g></svg> </a> <a class="flex items-center mr-auto text-sm py-1.5 transition-colors text-navy-950 hover:text-violet-600" href="/pricing/" > Pricing </a> <a href="https://fly.io/app/sign-in" class="button mt-8 max-w-40 border border-gray-300 shadow-sm text-violet-600 hover:border-violet-500/40 hover:bg-violet-200 hover:text-violet-600 hover:text-shadow-none hover:shadow-none transition-all" > Sign In </a> <a href="/docs/hands-on/start/" class="button mt-3 max-w-40 bg-violet-600 hover:bg-violet-600 text-white transition-all" > Get Started </a> <a href="/ruby-dispatch/feed.xml" target="_blank" class="flex items-center p-2 mt-3 text-navy-950 hover:text-violet-600 transition-all" tabindex="" > <svg role="img" class="relative shrink-0" viewBox="0 0 20 20" style="pointer-events: none; width: 18px; height: 18px;" fill="currentColor"> <g buffered-rendering="static"> <path d="M5 3a1 1 0 000 2c5.523 0 10 4.477 10 10a1 1 0 102 0C17 8.373 11.627 3 5 3z" /> <path d="M4 9a1 1 0 011-1 7 7 0 017 7 1 1 0 11-2 0 5 5 0 00-5-5 1 1 0 01-1-1zM3 15a2 2 0 114 0 2 2 0 01-4 0z" /> </g> </svg> <span class="ml-1.5">RSS Feed</span> </a> </div> </nav> </header> <main role="main" class="container mx-auto px-4 sm:px-6 lg:px-8 py-14 md:py-20"> <header class="max-w-[44rem] mx-auto mb-14 sm:mb-16"> <div class="flex flex-wrap items-center text-xs font-bold text-navy-500 uppercase tracking-wider mb-7"> Reading time <span class="mx-2 text-gray-300">•</span> 10 min <span class="flex-1 bg-gray-100 flex-1 h-px mx-2"></span> <a class="flex items-center justify-center w-7 h-7 hover:text-blue-500 transition-colors" href="https://twitter.com/share?text=SQLite & Rails in Production&url=https://fly.io/ruby-dispatch/sqlite-and-rails-in-production/&via=flydotio" target="_blank" > <svg role="img" class="" viewBox="0 0 24 24" style="pointer-events: none; width: 18px; height: 18px;" fill="currentColor"> <g buffered-rendering="static"> <path d="M22.208 3.871c-.757.252-1.824.496-2.834.748-.757-.883-1.892-1.388-3.154-1.388-2.902 0-4.92 2.649-4.289 5.425-3.659-.126-6.939-1.892-9.083-4.542-1.135 1.892-.505 4.542 1.388 5.803-.757 0-1.388-.126-2.019-.505 0 2.145 1.388 4.037 3.532 4.416-.631.252-1.388.252-2.019.126.505 1.766 2.145 3.028 4.037 3.028-1.892 1.388-4.289 2.019-6.56 1.766 1.892 1.262 4.163 2.019 6.686 2.019 8.2 0 12.742-6.813 12.49-12.994.753-1.089 1.49-2.201 1.824-3.902z" /> </g> </svg> <span class="sr-only">Share this post on Twitter</span> </a> <a class="flex items-center justify-center w-7 h-7 hover:text-orange-500 transition-colors" href="http://news.ycombinator.com/submitlink?u=https://fly.io/ruby-dispatch/sqlite-and-rails-in-production/&t=SQLite & Rails in Production" target="_blank" > <svg role="img" class="" viewBox="0 0 24 24" style="pointer-events: none; width: 14px; height: 14px;" fill="currentColor"> <g buffered-rendering="static"> <path d="M16.063 2h4.75l-6.625 12.5v7.5h-4.126l.001-7.5-6.875-12.5h4.875l4.125 8.75 3.875-8.75z" /> </g> </svg> <span class="sr-only">Share this post on Hacker News</span> </a> <a class="flex items-center justify-center w-7 h-7 hover:text-red-500 transition-colors" href="http://www.reddit.com/submit?url=https://fly.io/ruby-dispatch/sqlite-and-rails-in-production/&title=SQLite & Rails in Production" target="_blank" > <svg role="img" class="" viewBox="0 0 24 24" style="pointer-events: none; width: 20px; height: 20px;" fill="currentColor"> <g buffered-rendering="static"> <path d="M15.029 14.708c-.762 0-1.401-.616-1.401-1.377 0-.762.639-1.4 1.401-1.4s1.378.638 1.378 1.4c0 .761-.616 1.377-1.378 1.377m.194 2.546c-.674.673-1.727 1-3.224 1-1.496 0-2.551-.327-3.223-1-.07-.07-.11-.165-.11-.264 0-.205.169-.374.374-.374.099 0 .194.04.265.11.524.525 1.406.781 2.694.781s2.17-.256 2.696-.781c.07-.07.165-.109.264-.109.205 0 .373.168.373.373 0 .099-.039.194-.109.264m-7.631-3.923c0-.762.639-1.4 1.4-1.4.76 0 1.377.638 1.377 1.4 0 .76-.616 1.377-1.377 1.377-.762 0-1.4-.617-1.4-1.377m14.408-1.515c-.002-1.242-1.023-2.264-2.265-2.265-.569-.002-1.118.213-1.535.6-1.495-.974-3.497-1.602-5.714-1.688l1.223-3.734 3.213.757c.002 1.022.842 1.861 1.864 1.862 1.022-.001 1.863-.842 1.865-1.864-.002-1.023-.843-1.864-1.865-1.865-.746 0-1.423.448-1.716 1.134l-3.52-.828-.008-.002-.33-.078-1.51 4.61c-2.301.043-4.386.669-5.937 1.664-.411-.364-.943-.568-1.501-.568-1.241.001-2.262 1.023-2.264 2.264 0 .786.408 1.517 1.076 1.929-.038.221-.057.445-.057.673 0 3.288 4.01 5.964 8.939 5.964s8.94-2.676 8.94-5.964c0-.212-.016-.422-.049-.629.713-.398 1.155-1.155 1.151-1.972" /> </g> </svg> <span class="sr-only">Share this post on Reddit</span> </a> </div> <h1 class="relative w-full font-heading text-navy-900 leading-tight sm:leading-tight lg:leading-tight 2xl:leading-tight text-3xl sm:text-4xl lg:text-[2.75rem]"> SQLite & Rails in Production </h1> </header> <article class="xl:grid grid-cols-auto-span-auto items-start sm:text-lg leading-relaxed"> <dl class="text-sm w-52 relative top-[-6.5rem] hidden xl:block"> <dt class="sr-only">Author</dt> <dd class="flex items-center space-x-3 mb-7"> <img alt="Brad Gessler" class="w-10 h-10 object-cover rounded-xl" src="https://www.gravatar.com/avatar/0cbe06e04f80388dc83d1a2cbac48aec" /> <dl class="text-sm font-medium leading-5 whitespace-no-wrap"> <dt class="sr-only">Name</dt> <dd class="text-navy-900"> Brad Gessler </dd> <dt class="sr-only">@bradgessler</dt> <dd class="text-violet-500 hover:text-violet-700 transition-colors"> <a href="https://twitter.com/bradgessler" target="_blank"> @bradgessler </a> </dd> </dl> </dd> </dl> <section class="relative max-w-[44rem] mx-auto"> <figure class="relative"> <img class="post-cover" src="/ruby-dispatch/sqlite-and-rails-in-production/assets/sqlite.jpg" alt="SQLite characters operating a handcar on a train track" > <figcaption class="flex items-center absolute right-0 top-full pt-3 text-xs font-medium text-[#73739C]"> <span class="sr-only">Image by</span> <svg role="img" class="mr-1.5" style="pointer-events: none; width: 17px; height: 17px;" viewBox="0 0 20 20" fill="currentColor" fill-rule="evenodd" > <g buffered-rendering="static"> <path fill-rule="evenodd" d="M1 8a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 018.07 3h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0016.07 6H17a2 2 0 012 2v7a2 2 0 01-2 2H3a2 2 0 01-2-2V8zm13.5 3a4.5 4.5 0 11-9 0 4.5 4.5 0 019 0zM10 14a3 3 0 100-6 3 3 0 000 6z" clip-rule="evenodd" /> </g> </svg> <a href="https://annieruygtillustration.com/" target="_blank" class="text-navy-900 underline underline-offset-2 decoration-1 decoration-navy-900/30 hover:decoration-violet-600/30 hover:text-violet-600 transition-colors"> Annie Ruygt </a> </figcaption> </figure> <p><strong class='font-semibold text-navy-950'>When deploying a Rails application to production, its rare to question the idea of running a Postgres or MySQL database to persist data and Redis for caching, background job processing, and WebSockets, but what if it could all be done without running these services?</strong></p> <p>“No part is the best part”, right? Here’s the thing, Redis and Postgres run as separate processes that need to be monitored. Usually these processes are running on a separate server that’s accessed over a network connection, which can also break. You’ll either have to deal with that complexity yourself or pay to have it managed with services like <a href='https://fly.io/docs/reference/redis/' title=''>Upstash Redis</a>.</p> <p>What if we could run <em>everything</em> on one server and not have to worry about “more parts” that can break? You can with SQLite and Litestack.</p> <p><a href='https://github.com/oldmoe/litestack' title=''>Litestack</a> is a gem that has all the adapters needed to get a Rails application using SQLite for the database, ActiveJob, ActionCable, caching, and more.</p> <p><a href='https://www.sqlite.org/index.html' title=''>SQLite</a> is a database that stores data in a single file without the need to run a server. In some cases, writing data to <a href='https://www.sqlite.org/fasterthanfs.html' title=''>SQLite is faster than writing files</a> to disk! The <a href='https://corecursive.com/066-sqlite-with-richard-hipp/' title=''>story about how SQLite was designed to work on a battleship</a> is equally as impressive as its implementation.</p> <p>Combining Litestack and SQLite means you can run an entire Rails application on one box with a multi-process/threaded server, like Puma, and and persist application data, process background jobs, publish WebSocket data, and store cached data.</p> <p>Here’s how you do it on Fly.io.</p> <h2 id='install-litestack' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'><a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#install-litestack' aria-label='Anchor'></a><span class='plain-code'>Install Litestack</span></h2> <p>First, install Litestack in your SQLite Rails application by running:</p> <div class="highlight-wrapper group relative cmd"> <button type="button" class="bubble-wrap z-20 absolute right-9 -mr-0.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-wrap-target="#code-ktl7mc9u" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round"><g buffered-rendering="static"><path d="M9.912 8.037h2.732c1.277 0 2.315-.962 2.315-2.237a2.325 2.325 0 00-2.315-2.31H2.959m10.228 9.01H2.959M6.802 8H2.959" /><path d="M11.081 6.466L9.533 8.037l1.548 1.571" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-9px] tail text-navy-950"> Wrap text </span> </button> <button type="button" class="bubble-wrap z-20 absolute right-1.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-copy-target="sibling" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35"><g buffered-rendering="static"><path d="M10.576 7.239c0-.995-.82-1.815-1.815-1.815H3.315c-.995 0-1.815.82-1.815 1.815v5.446c0 .995.82 1.815 1.815 1.815h5.446c.995 0 1.815-.82 1.815-1.815V7.239z" /><path d="M10.576 10.577h2.109A1.825 1.825 0 0014.5 8.761V3.315A1.826 1.826 0 0012.685 1.5H7.239c-.996 0-1.815.819-1.816 1.815v1.617" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-6px] tail [--tail-x:calc(100%-30px)] text-navy-950"> Copy to clipboard </span> </button> <div class='highlight relative group'> <pre class='highlight cmd'><code id="code-ktl7mc9u">bundle add litestack </code></pre> </div> </div> <p>Then install the adapters and update the configuration files with this Rails generator:</p> <div class="highlight-wrapper group relative cmd"> <button type="button" class="bubble-wrap z-20 absolute right-9 -mr-0.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-wrap-target="#code-7tceqq2w" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round"><g buffered-rendering="static"><path d="M9.912 8.037h2.732c1.277 0 2.315-.962 2.315-2.237a2.325 2.325 0 00-2.315-2.31H2.959m10.228 9.01H2.959M6.802 8H2.959" /><path d="M11.081 6.466L9.533 8.037l1.548 1.571" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-9px] tail text-navy-950"> Wrap text </span> </button> <button type="button" class="bubble-wrap z-20 absolute right-1.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-copy-target="sibling" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35"><g buffered-rendering="static"><path d="M10.576 7.239c0-.995-.82-1.815-1.815-1.815H3.315c-.995 0-1.815.82-1.815 1.815v5.446c0 .995.82 1.815 1.815 1.815h5.446c.995 0 1.815-.82 1.815-1.815V7.239z" /><path d="M10.576 10.577h2.109A1.825 1.825 0 0014.5 8.761V3.315A1.826 1.826 0 0012.685 1.5H7.239c-.996 0-1.815.819-1.816 1.815v1.617" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-6px] tail [--tail-x:calc(100%-30px)] text-navy-950"> Copy to clipboard </span> </button> <div class='highlight relative group'> <pre class='highlight cmd'><code id="code-7tceqq2w">rails g litestack:install </code></pre> </div> </div> <p>This command configures your Rails environments with the settings they need to use Litestack for ActiveJob, ActionCable, ActionCaching, and your database.</p> <p>If you don’t have an existing application, but want to try one out, <a href='https://github.com/rubymonolith/demo' title=''>clone the demo blog project</a>, run bundle, and continue below.</p> <p>Finally let’s deploy it to Fly.io! If you haven’t already, <a href='https://fly.io/docs/hands-on/install-flyctl/' title=''>Install flyctl and create a Fly.io account</a>. Then from the root of your Rails project launch your app.</p> <div class="highlight-wrapper group relative cmd"> <button type="button" class="bubble-wrap z-20 absolute right-9 -mr-0.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-wrap-target="#code-by9q3tot" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round"><g buffered-rendering="static"><path d="M9.912 8.037h2.732c1.277 0 2.315-.962 2.315-2.237a2.325 2.325 0 00-2.315-2.31H2.959m10.228 9.01H2.959M6.802 8H2.959" /><path d="M11.081 6.466L9.533 8.037l1.548 1.571" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-9px] tail text-navy-950"> Wrap text </span> </button> <button type="button" class="bubble-wrap z-20 absolute right-1.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-copy-target="sibling" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35"><g buffered-rendering="static"><path d="M10.576 7.239c0-.995-.82-1.815-1.815-1.815H3.315c-.995 0-1.815.82-1.815 1.815v5.446c0 .995.82 1.815 1.815 1.815h5.446c.995 0 1.815-.82 1.815-1.815V7.239z" /><path d="M10.576 10.577h2.109A1.825 1.825 0 0014.5 8.761V3.315A1.826 1.826 0 0012.685 1.5H7.239c-.996 0-1.815.819-1.816 1.815v1.617" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-6px] tail [--tail-x:calc(100%-30px)] text-navy-950"> Copy to clipboard </span> </button> <div class='highlight relative group'> <pre class='highlight cmd'><code id="code-by9q3tot">fly launch # ... name your app and select the deployment region </code></pre> </div> </div> <p>This will create a <code>fly.toml</code> file in your project working directory environment, and provision resources on Fly.io. A <code>Dockerfile</code> is also generated, which is a description of the server that will be running in production.</p> <p>You should see a <code>LITESTACK_DATA_PATH</code> environment in your <code>Dockerfile</code> that points to <code>/data</code>. Litestack uses this path to know which folder to save SQLite databases for caching, job processing, and ActionCable.</p> <p>Let’s deploy the application and see it run.</p> <div class="highlight-wrapper group relative cmd"> <button type="button" class="bubble-wrap z-20 absolute right-9 -mr-0.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-wrap-target="#code-uqnnezsz" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round"><g buffered-rendering="static"><path d="M9.912 8.037h2.732c1.277 0 2.315-.962 2.315-2.237a2.325 2.325 0 00-2.315-2.31H2.959m10.228 9.01H2.959M6.802 8H2.959" /><path d="M11.081 6.466L9.533 8.037l1.548 1.571" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-9px] tail text-navy-950"> Wrap text </span> </button> <button type="button" class="bubble-wrap z-20 absolute right-1.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-copy-target="sibling" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35"><g buffered-rendering="static"><path d="M10.576 7.239c0-.995-.82-1.815-1.815-1.815H3.315c-.995 0-1.815.82-1.815 1.815v5.446c0 .995.82 1.815 1.815 1.815h5.446c.995 0 1.815-.82 1.815-1.815V7.239z" /><path d="M10.576 10.577h2.109A1.825 1.825 0 0014.5 8.761V3.315A1.826 1.826 0 0012.685 1.5H7.239c-.996 0-1.815.819-1.816 1.815v1.617" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-6px] tail [--tail-x:calc(100%-30px)] text-navy-950"> Copy to clipboard </span> </button> <div class='highlight relative group'> <pre class='highlight cmd'><code id="code-uqnnezsz">fly deploy # ... app deploys fly open </code></pre> </div> </div> <p>Congrats! You now have a Rails application running in production that uses SQLite for the database, background job processing, caching, and WebSockets.</p> <p>Let’s scale up the Fly machine from 256Mb RAM to 512Mb so the Rails app doesn’t run out of memory.</p> <div class="highlight-wrapper group relative cmd"> <button type="button" class="bubble-wrap z-20 absolute right-9 -mr-0.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-wrap-target="#code-pp2v9f7a" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round"><g buffered-rendering="static"><path d="M9.912 8.037h2.732c1.277 0 2.315-.962 2.315-2.237a2.325 2.325 0 00-2.315-2.31H2.959m10.228 9.01H2.959M6.802 8H2.959" /><path d="M11.081 6.466L9.533 8.037l1.548 1.571" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-9px] tail text-navy-950"> Wrap text </span> </button> <button type="button" class="bubble-wrap z-20 absolute right-1.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-copy-target="sibling" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35"><g buffered-rendering="static"><path d="M10.576 7.239c0-.995-.82-1.815-1.815-1.815H3.315c-.995 0-1.815.82-1.815 1.815v5.446c0 .995.82 1.815 1.815 1.815h5.446c.995 0 1.815-.82 1.815-1.815V7.239z" /><path d="M10.576 10.577h2.109A1.825 1.825 0 0014.5 8.761V3.315A1.826 1.826 0 0012.685 1.5H7.239c-.996 0-1.815.819-1.816 1.815v1.617" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-6px] tail [--tail-x:calc(100%-30px)] text-navy-950"> Copy to clipboard </span> </button> <div class='highlight relative group'> <pre class='highlight cmd'><code id="code-pp2v9f7a">fly scale memory 512 </code></pre> </div> </div> <p>If 512 MB of memory is a bit tight for your Rails application, you can always dial it up by running the <code>fly scale memory</code> command with the amount of memory needed to run your app.</p> <p>When you’re ready to backup your database, run the <code>fly sftp</code> command and it will download the SQLite database file your workstation. Here’s what that looks like.</p> <div class="highlight-wrapper group relative cmd"> <button type="button" class="bubble-wrap z-20 absolute right-9 -mr-0.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-wrap-target="#code-9486lgsw" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round"><g buffered-rendering="static"><path d="M9.912 8.037h2.732c1.277 0 2.315-.962 2.315-2.237a2.325 2.325 0 00-2.315-2.31H2.959m10.228 9.01H2.959M6.802 8H2.959" /><path d="M11.081 6.466L9.533 8.037l1.548 1.571" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-9px] tail text-navy-950"> Wrap text </span> </button> <button type="button" class="bubble-wrap z-20 absolute right-1.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-copy-target="sibling" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35"><g buffered-rendering="static"><path d="M10.576 7.239c0-.995-.82-1.815-1.815-1.815H3.315c-.995 0-1.815.82-1.815 1.815v5.446c0 .995.82 1.815 1.815 1.815h5.446c.995 0 1.815-.82 1.815-1.815V7.239z" /><path d="M10.576 10.577h2.109A1.825 1.825 0 0014.5 8.761V3.315A1.826 1.826 0 0012.685 1.5H7.239c-.996 0-1.815.819-1.816 1.815v1.617" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-6px] tail [--tail-x:calc(100%-30px)] text-navy-950"> Copy to clipboard </span> </button> <div class='highlight relative group'> <pre class='highlight cmd'><code id="code-9486lgsw">$ fly sftp get /data/production.sqlite3 28672 bytes written to production.sqlite3 $ sqlite3 production.sqlite3 SQLite version 3.39.5 2022-10-14 20:58:05 Enter ".help" for usage hints. sqlite> .tables ar_internal_metadata schema_migrations ... </code></pre> </div> </div> <p>There’s our backup! It doesn’t get much easier than that for database backups. Fly.io is the fastest way to get a SQLite Rails app running in production.</p> <h2 id='how-does-it-work' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'><a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#how-does-it-work' aria-label='Anchor'></a><span class='plain-code'>How does it work?</span></h2> <p>Most of the pieces that work with Rails, like ActiveJob, ActiveRecord, etc. ship with an adapter layer that allows developers to implement different backends to fulfill the services job.</p> <p>The Litestack gem is a library of adapters between these Rails building blocks and SQLite. <a href='https://github.com/oldmoe/litestack/tree/master/lib' title=''>A quick peek inside the Litestack source code</a> and you’ll see the names of familiar Rails services.</p> <p>When the <code>fly launch</code> command is run, Fly.io runs the <a href='https://github.com/fly-apps/dockerfile-rails' title=''>dockerfile-rails gem</a>, which detects the Litestack gem and configures the <code>Dockerfile</code> with the <code>VOLUME</code> and <code>ENV</code> directives needed to store and access SQLite databases on persistent volume.</p> <p>The <code>fly launch</code> command then detects the <code>VOLUME</code> directives from the <code>Dockerfile</code> and adds them to the <code>fly.toml</code> file, which configures a persistent volume on the Fly Machine deployment target.</p> <div class="highlight-wrapper group relative "> <button type="button" class="bubble-wrap z-20 absolute right-9 -mr-0.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-wrap-target="#code-s5pdqngk" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round"><g buffered-rendering="static"><path d="M9.912 8.037h2.732c1.277 0 2.315-.962 2.315-2.237a2.325 2.325 0 00-2.315-2.31H2.959m10.228 9.01H2.959M6.802 8H2.959" /><path d="M11.081 6.466L9.533 8.037l1.548 1.571" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-9px] tail text-navy-950"> Wrap text </span> </button> <button type="button" class="bubble-wrap z-20 absolute right-1.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-copy-target="sibling" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35"><g buffered-rendering="static"><path d="M10.576 7.239c0-.995-.82-1.815-1.815-1.815H3.315c-.995 0-1.815.82-1.815 1.815v5.446c0 .995.82 1.815 1.815 1.815h5.446c.995 0 1.815-.82 1.815-1.815V7.239z" /><path d="M10.576 10.577h2.109A1.825 1.825 0 0014.5 8.761V3.315A1.826 1.826 0 0012.685 1.5H7.239c-.996 0-1.815.819-1.816 1.815v1.617" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-6px] tail [--tail-x:calc(100%-30px)] text-navy-950"> Copy to clipboard </span> </button> <div class='highlight relative group'> <pre class='highlight '><code id="code-s5pdqngk"># Fly adds this volume configuration to the `fly.toml` file. [[mounts]] source = "data" destination = "/data" </code></pre> </div> </div> <p>Once that’s configured and provisioned, the <code>fly deploy</code> command is run which builds an image from the <code>Dockerfile</code>, configures the volumes, and gets everything running.</p> <p>That seems like a lot of steps, and it is, but Fly.io does all of that for you so you only have to run <code>fly launch</code> and <code>fly deploy</code> to have a SQLite Rails app running in production.</p> <h2 id='is-it-fast' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'><a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#is-it-fast' aria-label='Anchor'></a><span class='plain-code'>Is it fast?</span></h2> <p>Heck yeah it is! Think about it for a moment—your Rails app reads and writes data from a NVMe disk on a physical server. There’s no network connection to traverse; it’s all right there on the same physical machine.</p> <p><a href='https://github.com/oldmoe/litestack/blob/master/BENCHMARKS.md' title=''>Litestack maintains a set of benchmarks</a> that compares the performance of Litestack vs other libraries. Take it with a grain of salt though, these benchmarks are a baseline that helps understand the relative performance of litestack vs other libraries under conditions that don’t represent a production workload.</p> <h2 id='limitations' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'><a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#limitations' aria-label='Anchor'></a><span class='plain-code'>Limitations</span></h2> <p>For small or hobby Rails apps that fit on one server, you really can’t beat using SQLite. It will be faster, easier to maintain, less stuff will break, easier to backup (just download your sqlite file), and easier to upgrade. Like anything though, it comes with trade-offs that are really important to understand before going to production.</p> <h3 id='what-happens-when-the-server-crashes' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'><a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#what-happens-when-the-server-crashes' aria-label='Anchor'></a><span class='plain-code'>What happens when the server crashes?</span></h3> <p>Your service goes down! The good news is that you can quickly bring the service back up on a new machine and bind it to the same volume.</p> <p>As for your data, Fly.io will snapshot it once daily for up to five days of snapshots and of course you can download the SQLite file whenever you want to back it up. You’ll want to understand how Fly.io stores and manages data on volumes, which is <a href='https://fly.io/docs/reference/volumes/' title=''>very well documented</a> including information on how to <a href='https://fly.io/docs/reference/volumes/#restore-from-a-snapshot' title=''>manage snapshots</a>, <a href='https://fly.io/docs/reference/volumes/#access-a-volume' title=''>access a volume</a>, and <a href='https://fly.io/docs/reference/volumes/#extend-a-volume' title=''>make it bigger</a> as your database grows.</p> <h3 id='but-sqlite-isnt-recommended-for-production-rails-deployments' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'><a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#but-sqlite-isnt-recommended-for-production-rails-deployments' aria-label='Anchor'></a><span class='plain-code'>But SQLite isn’t recommended for production Rails deployments!</span></h3> <p>It’s true, there’s even a <a href='https://github.com//rails/rails/blob/bd8aeead92c11dbd82ddb9f114ea63b0daf160b4/activerecord/lib/active_record/railtie.rb#L210-L218' title=''>configuration flag for it</a>. Why would this warning be here if running SQLite in production was safe?</p> <div class="highlight-wrapper group relative ruby"> <button type="button" class="bubble-wrap z-20 absolute right-9 -mr-0.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-wrap-target="#code-garbsa7v" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round"><g buffered-rendering="static"><path d="M9.912 8.037h2.732c1.277 0 2.315-.962 2.315-2.237a2.325 2.325 0 00-2.315-2.31H2.959m10.228 9.01H2.959M6.802 8H2.959" /><path d="M11.081 6.466L9.533 8.037l1.548 1.571" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-9px] tail text-navy-950"> Wrap text </span> </button> <button type="button" class="bubble-wrap z-20 absolute right-1.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-copy-target="sibling" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35"><g buffered-rendering="static"><path d="M10.576 7.239c0-.995-.82-1.815-1.815-1.815H3.315c-.995 0-1.815.82-1.815 1.815v5.446c0 .995.82 1.815 1.815 1.815h5.446c.995 0 1.815-.82 1.815-1.815V7.239z" /><path d="M10.576 10.577h2.109A1.825 1.825 0 0014.5 8.761V3.315A1.826 1.826 0 0012.685 1.5H7.239c-.996 0-1.815.819-1.816 1.815v1.617" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-6px] tail [--tail-x:calc(100%-30px)] text-navy-950"> Copy to clipboard </span> </button> <div class='highlight relative group'> <pre class='highlight '><code id="code-garbsa7v"><span class="no">SQLITE3_PRODUCTION_WARN</span> <span class="o">=</span> <span class="s2">"You are running SQLite in production, this is generally not recommended."</span><span class="p">\</span> <span class="s2">" You can disable this warning by setting </span><span class="se">\"</span><span class="s2">config.active_record.sqlite3_production_warning=false</span><span class="se">\"</span><span class="s2">."</span> <span class="n">initializer</span> <span class="s2">"active_record.sqlite3_production_warning"</span> <span class="k">do</span> <span class="k">if</span> <span class="n">config</span><span class="p">.</span><span class="nf">active_record</span><span class="p">.</span><span class="nf">sqlite3_production_warning</span> <span class="o">&&</span> <span class="no">Rails</span><span class="p">.</span><span class="nf">env</span><span class="p">.</span><span class="nf">production?</span> <span class="no">ActiveSupport</span><span class="p">.</span><span class="nf">on_load</span><span class="p">(</span><span class="ss">:active_record_sqlite3adapter</span><span class="p">)</span> <span class="k">do</span> <span class="no">Rails</span><span class="p">.</span><span class="nf">logger</span><span class="p">.</span><span class="nf">warn</span><span class="p">(</span><span class="no">SQLITE3_PRODUCTION_WARN</span><span class="p">)</span> <span class="k">end</span> <span class="k">end</span> <span class="k">end</span> </code></pre> </div> </div> <p>There’s a few assumptions that the Rails community makes for contemporary production environments:</p> <ol> <li><strong class='font-semibold text-navy-950'>Host file systems are ephemeral</strong> - When deploying Rails applications, we assume either the volumes are “read-only” and a Rails app can’t write to desk <em>or</em> we assume if we can write to disk, it will get replaced on every deploy. </li><li><strong class='font-semibold text-navy-950'>Databases services are persistent and available from multiple nodes</strong> - When data is written to a data store, we expect it to be there when we ask for it again from any node that’s running on the same cluster. </li></ol> <p>When <code>rails new</code> is run, it defaults to the SQLite3 database adapter. This makes setting up a development environment incredibly easy because no additional services need to be installed on the workstation like a database or Redis. This creates a problem though—when people new to Rails deploy the SQLite default to production they might get errors about the volume being read-only or if they’re unlucky, the application would write data that would be deleted on the next deploy. Yikes!</p> <p>In our case we know we only want to run our Rails application on one node and have taken extra care to store the SQLite data files on a volume that persists between deploys. Since we have taken care of those two foot guns, it’s completely viable to run SQLite in production, so add this to your <code>config/environments/production.rb</code> file to affirm.</p> <div class="highlight-wrapper group relative ruby"> <button type="button" class="bubble-wrap z-20 absolute right-9 -mr-0.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-wrap-target="#code-ydqc0s27" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35" stroke-linecap="round" stroke-linejoin="round"><g buffered-rendering="static"><path d="M9.912 8.037h2.732c1.277 0 2.315-.962 2.315-2.237a2.325 2.325 0 00-2.315-2.31H2.959m10.228 9.01H2.959M6.802 8H2.959" /><path d="M11.081 6.466L9.533 8.037l1.548 1.571" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-9px] tail text-navy-950"> Wrap text </span> </button> <button type="button" class="bubble-wrap z-20 absolute right-1.5 top-1.5 text-transparent group-hover:text-gray-400 group-hover:hocus:text-white focus:text-white bg-transparent group-hover:bg-gray-900 group-hover:hocus:bg-gray-700 focus:bg-gray-700 transition-colors grid place-items-center w-7 h-7 rounded-lg outline-none focus:outline-none" data-copy-target="sibling" > <svg class="w-4 h-4 pointer-events-none" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.35"><g buffered-rendering="static"><path d="M10.576 7.239c0-.995-.82-1.815-1.815-1.815H3.315c-.995 0-1.815.82-1.815 1.815v5.446c0 .995.82 1.815 1.815 1.815h5.446c.995 0 1.815-.82 1.815-1.815V7.239z" /><path d="M10.576 10.577h2.109A1.825 1.825 0 0014.5 8.761V3.315A1.826 1.826 0 0012.685 1.5H7.239c-.996 0-1.815.819-1.816 1.815v1.617" /></g></svg> <span class="bubble-sm bubble-tl [--offset-l:-6px] tail [--tail-x:calc(100%-30px)] text-navy-950"> Copy to clipboard </span> </button> <div class='highlight relative group'> <pre class='highlight '><code id="code-ydqc0s27"><span class="c1"># Put this in your config/environments/production.rb file</span> <span class="n">config</span><span class="p">.</span><span class="nf">active_record</span><span class="p">.</span><span class="nf">sqlite3_production_warning</span> </code></pre> </div> </div><h2 id='wrap-up-the-sqlite-in-production-checklist' class='group flex items-start whitespace-pre-wrap relative mt-14 sm:mt-16 mb-4 text-navy-950 font-heading'><a class='inline-block align-text-top relative top-[.15em] w-6 h-6 -ml-6 after:hash opacity-0 group-hover:opacity-100 transition-all' href='#wrap-up-the-sqlite-in-production-checklist' aria-label='Anchor'></a><span class='plain-code'>Wrap-up: the SQLite in production checklist</span></h2> <p>Running a Rails application in production entirely on SQLite is a real possibility. It can lower your applications operational complexity, which will likely save you time and money, and even run faster since application data is stored on the same NVMe disk as the Rails application.</p> <p>Here’s the checklist to know if your application is suitable for SQLite:</p> <ol> <li><strong class='font-semibold text-navy-950'>Runs on one node</strong> - Make sure your Rails application can run on a single node. If running multiple nodes for your application is a requirement, you’ll want to stick with the more traditional client/server database stack. </li><li><strong class='font-semibold text-navy-950'>Data volumes are writable and persist between deploys</strong> - Make sure the path your SQLite database is writing to doesn’t get wiped out between deploys. Fly will setup a persistent <code>/data</code> Volume for you if it detects you’re running a Rails sqlite application and at least keep your data around between deploys. </li><li><strong class='font-semibold text-navy-950'>A few seconds of connection queuing between deploys is OK</strong> - When the Rails application is deployed and the server restarts, your application will technically be down. The Fly.io proxy will queue connections until the health checks on the new instance are passing. Once the server is back up and running, the queued connections that haven’t timed out will be sent to the server to fulfill the requests. Your users experience this as their browser taking a few seconds longer to load your website. </li><li><strong class='font-semibold text-navy-950'>You want to reduce complexity and costs</strong> - Running Fly.io in production requires less servers and monitoring, which can be a great way to keep your application stack simple and costs down. </li></ol> <p>Fortunately Fly.io and Litestack provide a reasonable set of defaults that will make your small or hobby Rails app deployable to production without having to worry much about the issues above. When you find your application outgrows running SQLite on one instance, Fly.io is there for the next step with multiple solutions including <a href='https://fly.io/docs/litefs/' title=''>LiteFS</a>, <a href='https://fly.io/docs/postgres/' title=''>Postgres</a>, or <a href='https://fly.io/docs/about/pricing/#apps-v2-and-machines' title=''>bigger machines with more storage, memory, and CPU cores</a>.</p> <footer class="flex items-center flex-wrap col-span-full w-full max-w-[44rem] mx-auto mt-14 md:mt-24 mb-4 text-gray-400"> <dl class="flex items-center text-xs font-bold uppercase tracking-wider"> <dt> Last updated </dt> <span class="mx-2 text-gray-300" aria-hidden>•</span> <dd> <time datetime="2023-09-12"> Sep 12, 2023 </time> </dd> </dl> <span class="flex-1 bg-gray-100 flex-1 h-px mx-2"></span> <a class="flex items-center justify-center w-7 h-7 hover:text-blue-500 transition-colors" href="https://twitter.com/share?text=SQLite & Rails in Production&url=https://fly.io/ruby-dispatch/sqlite-and-rails-in-production/&via=flydotio" target="_blank" > <svg role="img" class="" viewBox="0 0 24 24" style="pointer-events: none; width: 18px; height: 18px;" fill="currentColor"> <g buffered-rendering="static"> <path d="M22.208 3.871c-.757.252-1.824.496-2.834.748-.757-.883-1.892-1.388-3.154-1.388-2.902 0-4.92 2.649-4.289 5.425-3.659-.126-6.939-1.892-9.083-4.542-1.135 1.892-.505 4.542 1.388 5.803-.757 0-1.388-.126-2.019-.505 0 2.145 1.388 4.037 3.532 4.416-.631.252-1.388.252-2.019.126.505 1.766 2.145 3.028 4.037 3.028-1.892 1.388-4.289 2.019-6.56 1.766 1.892 1.262 4.163 2.019 6.686 2.019 8.2 0 12.742-6.813 12.49-12.994.753-1.089 1.49-2.201 1.824-3.902z" /> </g> </svg> <span class="sr-only">Share this post on Twitter</span> </a> <a class="flex items-center justify-center w-7 h-7 hover:text-orange-500 transition-colors" href="http://news.ycombinator.com/submitlink?u=https://fly.io/ruby-dispatch/sqlite-and-rails-in-production/&t=SQLite & Rails in Production" target="_blank" > <svg role="img" class="" viewBox="0 0 24 24" style="pointer-events: none; width: 14px; height: 14px;" fill="currentColor"> <g buffered-rendering="static"> <path d="M16.063 2h4.75l-6.625 12.5v7.5h-4.126l.001-7.5-6.875-12.5h4.875l4.125 8.75 3.875-8.75z" /> </g> </svg> <span class="sr-only">Share this post on Hacker News</span> </a> <a class="flex items-center justify-center w-7 h-7 hover:text-red-500 transition-colors" href="http://www.reddit.com/submit?url=https://fly.io/ruby-dispatch/sqlite-and-rails-in-production/&title=SQLite & Rails in Production" target="_blank" > <svg role="img" class="" viewBox="0 0 24 24" style="pointer-events: none; width: 20px; height: 20px;" fill="currentColor"> <g buffered-rendering="static"> <path d="M15.029 14.708c-.762 0-1.401-.616-1.401-1.377 0-.762.639-1.4 1.401-1.4s1.378.638 1.378 1.4c0 .761-.616 1.377-1.378 1.377m.194 2.546c-.674.673-1.727 1-3.224 1-1.496 0-2.551-.327-3.223-1-.07-.07-.11-.165-.11-.264 0-.205.169-.374.374-.374.099 0 .194.04.265.11.524.525 1.406.781 2.694.781s2.17-.256 2.696-.781c.07-.07.165-.109.264-.109.205 0 .373.168.373.373 0 .099-.039.194-.109.264m-7.631-3.923c0-.762.639-1.4 1.4-1.4.76 0 1.377.638 1.377 1.4 0 .76-.616 1.377-1.377 1.377-.762 0-1.4-.617-1.4-1.377m14.408-1.515c-.002-1.242-1.023-2.264-2.265-2.265-.569-.002-1.118.213-1.535.6-1.495-.974-3.497-1.602-5.714-1.688l1.223-3.734 3.213.757c.002 1.022.842 1.861 1.864 1.862 1.022-.001 1.863-.842 1.865-1.864-.002-1.023-.843-1.864-1.865-1.865-.746 0-1.423.448-1.716 1.134l-3.52-.828-.008-.002-.33-.078-1.51 4.61c-2.301.043-4.386.669-5.937 1.664-.411-.364-.943-.568-1.501-.568-1.241.001-2.262 1.023-2.264 2.264 0 .786.408 1.517 1.076 1.929-.038.221-.057.445-.057.673 0 3.288 4.01 5.964 8.939 5.964s8.94-2.676 8.94-5.964c0-.212-.016-.422-.049-.629.713-.398 1.155-1.155 1.151-1.972" /> </g> </svg> <span class="sr-only">Share this post on Reddit</span> </a> <div class="xl:hidden sm:block w-full text-base font-medium"> <dl class="pt-12 pb-16 border-b border-gray-100 grid gap-5"> <dt class="sr-only">Author</dt> <dd class="flex items-center space-x-6"> <img alt="Brad Gessler" class="w-16 h-16 object-cover rounded-xl" src="https://www.gravatar.com/avatar/0cbe06e04f80388dc83d1a2cbac48aec" /> <dl class="leading-5 whitespace-no-wrap"> <dt class="sr-only">Name</dt> <dd class="text-navy-900"> Brad Gessler </dd> <dt class="sr-only">@bradgessler</dt> <dd> <a href="https://twitter.com/bradgessler" class="text-violet-500 hover:text-violet-700 transition-colors"> @bradgessler </a> </dd> </dl> </dd> </dl> <dl class="pt-12"> <dt class="text-navy-900 mb-1"> Next post ↑ </dt> <dd class="mb-7"> <a class="line-clamp-2 text-violet-500 hover:text-violet-700 transition-colors" href="/ruby-dispatch/better-rails-forms-with-superform/"> Better Rails Forms with Superform </a> </dd> <dt class="text-navy-900 mb-1"> Previous post ↓ </dt> <dd> <a class="line-clamp-2 text-violet-500 hover:text-violet-700 transition-colors" href="/ruby-dispatch/organic-test-driven-development/"> Organic Test Driven Development </a> </dd> </dl> </div> </footer> </section> <dl class="text-sm w-44 ml-8 relative top-[-5.85rem] font-medium hidden xl:block"> <dt class="text-navy-900 mb-1"> Next post ↑ </dt> <dd class="mb-7"> <a class="line-clamp-2 text-violet-500 hover:text-violet-700 transition-colors" href="/ruby-dispatch/better-rails-forms-with-superform/"> Better Rails Forms with Superform </a> </dd> <dt class="text-navy-900 mb-1"> Previous post ↓ </dt> <dd> <a class="line-clamp-2 text-violet-500 hover:text-violet-700 transition-colors" href="/ruby-dispatch/organic-test-driven-development/"> Organic Test Driven Development </a> </dd> </dl> </article> </main> <footer class="text-sm text-gray-400 leading-6 pb-8 pt-12 lg:pt-20 text-medium bg-gray-100 text-gray-500" role="contentinfo" > <div class="container mx-auto px-4 sm:px-6 lg:px-8 pb-12 lg:pb-20 grid md:grid-cols-auto-span items-start gap-10 md:gap-16"> <a href="/" class="justify-self-start"> <svg role="img" class="text-navy-900" fill-rule="evenodd" viewBox="0 0 259 84" style="pointer-events: none; width: auto; height: 36px;" aria-labelledby="logo-title-5523 logo-description-5523" > <title id="logo-title-5523">Fly</title> <desc id="logo-description-5523">App performance optimization</desc> <g buffered-rendering="static"> <path d="M57.413 10.134h9.454c8.409 0 15.236 6.827 15.236 15.236v33.243c0 8.409-6.827 15.236-15.236 15.236h-.745c-4.328-.677-6.205-1.975-7.655-3.072l-12.02-9.883a1.692 1.692 0 0 0-2.128 0l-3.905 3.211-10.998-9.043a1.688 1.688 0 0 0-2.127 0L12.01 68.503c-3.075 2.501-5.109 2.039-6.428 1.894C2.175 67.601 0 63.359 0 58.613V25.37c0-8.409 6.827-15.236 15.237-15.236h9.433l-.017.038-.318.927-.099.318-.428 1.899-.059.333-.188 1.902-.025.522-.004.183.018.872.043.511.106.8.135.72.16.663.208.718.54 1.52.178.456.94 1.986.332.61 1.087 1.866.416.673 1.517 2.234.219.296 1.974 2.569.638.791 2.254 2.635.463.507 1.858 1.999.736.762 1.216 1.208-.244.204-.152.137c-.413.385-.805.794-1.172 1.224a10.42 10.42 0 0 0-.504.644 8.319 8.319 0 0 0-.651 1.064 6.234 6.234 0 0 0-.261.591 5.47 5.47 0 0 0-.353 1.606l-.007.475a5.64 5.64 0 0 0 .403 1.953 5.44 5.44 0 0 0 1.086 1.703c.338.36.723.674 1.145.932.359.22.742.401 1.14.539a6.39 6.39 0 0 0 2.692.306h.005a6.072 6.072 0 0 0 2.22-.659c.298-.158.582-.341.848-.549a5.438 5.438 0 0 0 1.71-2.274c.28-.699.417-1.446.405-2.198l-.022-.393a5.535 5.535 0 0 0-.368-1.513 6.284 6.284 0 0 0-.285-.618 8.49 8.49 0 0 0-.67-1.061 11.022 11.022 0 0 0-.354-.453 14.594 14.594 0 0 0-1.308-1.37l-.329-.28.557-.55 2.394-2.5.828-.909 1.287-1.448.837-.979 1.194-1.454.808-1.016 1.187-1.587.599-.821.85-1.271.708-1.083 1.334-2.323.763-1.524.022-.047.584-1.414a.531.531 0 0 0 .02-.056l.629-1.962.066-.286.273-1.562.053-.423.016-.259.019-.978-.005-.182-.05-.876-.062-.68-.31-1.961c-.005-.026-.01-.052-.018-.078l-.398-1.45-.137-.403-.179-.446Zm4.494 41.455a3.662 3.662 0 0 0-3.61 3.61 3.663 3.663 0 0 0 3.61 3.609 3.665 3.665 0 0 0 3.611-3.609 3.663 3.663 0 0 0-3.611-3.61Z" fill="url(#default-radial)" fill-opacity="1" /> <path d="M35.639 72.544l-.637.535a3.332 3.332 0 01-2.09.762H15.235a15.176 15.176 0 01-9.654-3.451c1.319.145 3.353.607 6.428-1.894l15.277-13.44a1.693 1.693 0 012.127 0l10.997 9.042 3.904-3.21c.619-.5 1.51-.5 2.128 0l12.019 9.882c1.45 1.097 3.327 2.394 7.654 3.071H58.12a3.394 3.394 0 01-1.963-.654l-.14-.108-.593-.493a1.247 1.247 0 00-.158-.159c-.672-.563-9.187-7.617-9.187-7.617a1 1 0 00-1.281.002s.021.026-9.038 7.615a1.12 1.12 0 00-.121.117zm26.262-20.96a3.678 3.678 0 00-3.61 3.609 3.68 3.68 0 003.61 3.609 3.68 3.68 0 003.61-3.609 3.678 3.678 0 00-3.61-3.609zM38.566 40.648L37.35 39.44l-.736-.762-1.858-1.999-.463-.507-2.253-2.634-.638-.791-1.974-2.569-.219-.296-1.517-2.234-.416-.673-1.087-1.866-.332-.61-.94-1.985-.178-.456-.539-1.52-.208-.718-.16-.663-.135-.72-.106-.8-.043-.511-.018-.872.004-.183.025-.522.188-1.901.059-.333.428-1.899.098-.318.318-.927.102-.24.506-1.112.351-.662.489-.806.487-.718.347-.456.4-.482.44-.484.377-.378.918-.808.671-.549c.016-.014.033-.026.05-.038l.794-.537.631-.402 1.198-.631c.018-.011.039-.02.058-.029l1.698-.705.157-.059 1.51-.442.638-.143.862-.173.572-.087.877-.109.598-.053 1.187-.063.465-.005.881.018.229.013 1.276.106 1.687.238.195.041 1.668.415.49.146.544.188.663.251.524.222.77.363.485.249.872.512.325.2 1.189.868.341.296.828.754.041.041.703.754.242.273.825 1.096.168.262.655 1.106.197.379.369.825.386.963.137.403.398 1.45a.89.89 0 01.018.078l.31 1.961.062.679.05.876.005.182-.019.978-.016.259-.053.423-.273 1.562-.066.286-.629 1.962a.626.626 0 01-.02.056l-.584 1.414-.022.047-.763 1.523-1.334 2.323-.708 1.083-.849 1.271-.599.821-1.187 1.587-.808 1.016-1.194 1.453-.837.979-1.287 1.448-.828.909-2.394 2.5-.556.55.328.28c.465.428.902.885 1.308 1.37.122.148.24.299.354.453.249.336.473.691.67 1.06.106.2.201.407.285.618.191.484.32.996.368 1.513l.022.393c.012.752-.125 1.5-.405 2.198a5.438 5.438 0 01-1.71 2.274c-.266.208-.55.391-.848.549a6.08 6.08 0 01-2.219.659h-.005a6.403 6.403 0 01-2.692-.306 5.882 5.882 0 01-1.14-.539 5.523 5.523 0 01-1.145-.932 5.458 5.458 0 01-1.086-1.703 5.662 5.662 0 01-.403-1.953l.007-.475a5.47 5.47 0 01.353-1.606c.077-.202.164-.399.261-.591.19-.37.408-.725.651-1.063.159-.221.328-.436.504-.644.367-.43.759-.839 1.172-1.224l.152-.137.244-.204z" fill="currentColor" /> <path d="M35.002 73.079l9.796-8.267a1 1 0 011.281-.002l9.938 8.269c.604.492 1.36.761 2.139.762h-25.28c.776 0 1.527-.269 2.126-.762zM41.1 43.568l.096.028c.031.015.057.036.085.055l.08.071c.198.182.39.373.575.569.13.139.257.282.379.43.155.187.3.383.432.587.057.09.11.181.16.276.043.082.082.167.116.253.06.15.105.308.119.469l-.003.302a1.726 1.726 0 01-.817 1.343 2.333 2.333 0 01-.994.327l-.373.011-.315-.028a2.398 2.398 0 01-.433-.105 2.07 2.07 0 01-.41-.192l-.246-.18a1.685 1.685 0 01-.56-.96 2.418 2.418 0 01-.029-.19l-.009-.288c.005-.078.017-.155.034-.232.043-.168.105-.331.183-.486.101-.194.216-.381.344-.559.213-.288.444-.562.691-.821.159-.168.322-.331.492-.488l.121-.109c.084-.055.085-.055.181-.083h.101zM40.481 3.42l.039-.003v33.665l-.084-.155a94.101 94.101 0 01-3.093-6.267 67.257 67.257 0 01-2.099-5.255 41.665 41.665 0 01-1.265-4.326c-.265-1.163-.469-2.343-.553-3.535a16.923 16.923 0 01-.029-1.528c.008-.444.026-.887.054-1.33.044-.696.115-1.391.217-2.081.081-.543.181-1.084.304-1.619.098-.425.212-.847.342-1.262.188-.6.413-1.186.675-1.758.096-.206.199-.411.307-.612.65-1.204 1.532-2.313 2.687-3.054a5.609 5.609 0 012.498-.88zm4.365.085l2.265.646c1.049.387 2.059.891 2.987 1.521a11.984 11.984 0 013.212 3.204c.502.748.918 1.555 1.243 2.398.471 1.247.763 2.554.866 3.882.03.348.047.697.054 1.046.008.324.006.649-.02.973-.064.725-.2 1.442-.407 2.14a17.03 17.03 0 01-.587 1.684c-.28.685-.591 1.357-.932 2.013-.754 1.457-1.623 2.852-2.553 4.201a65.451 65.451 0 01-3.683 4.806 91.02 91.02 0 01-4.417 4.896 93.66 93.66 0 002.907-5.949c.5-1.124.971-2.26 1.414-3.407.487-1.26.927-2.537 1.317-3.83.29-.969.546-1.948.757-2.938.181-.849.323-1.707.411-2.57.074-.72.101-1.444.083-2.166a30.867 30.867 0 00-.049-1.325c-.106-1.775-.376-3.545-.894-5.248a15.341 15.341 0 00-.714-1.892c-.663-1.444-1.588-2.793-2.84-3.778l-.42-.307z" fill="#fff" /> <path d="M179.213 64.297l-10.751-23.015c-.898-1.917-1.433-2.618-2.331-3.431l-.874-.788c-.697-.676-1.155-1.302-1.155-2.045 0-1.064.843-1.96 2.378-1.96h9.334c1.465 0 2.378.762 2.378 1.9 0 .635-.292 1.111-.661 1.578-.438.555-1.008 1.096-1.008 2.082 0 .618.18 1.234.527 2.021l6.416 15.025 5.755-14.647c.354-.974.596-1.832.596-2.519 0-1.069-.581-1.505-1.029-1.983-.39-.415-.702-.854-.702-1.557 0-1.149.935-1.9 2.193-1.9h5.748c1.612 0 2.378.834 2.378 1.9 0 .682-.393 1.314-1.166 1.996l-.813.668c-1.132.925-1.656 2.263-2.251 3.647l-8.716 20.998c-1.03 2.455-2.563 5.863-4.905 8.659-2.379 2.84-5.587 5.048-9.932 5.048-3.638 0-5.84-1.737-5.84-4.24 0-2.293 1.696-4.12 3.924-4.12 1.22 0 1.855.576 2.499 1.169.532.489 1.072.991 2.137.991.988 0 1.908-.418 2.742-1.093 1.274-1.03 2.341-2.652 3.129-4.384zm63.175-.082c4.839 0 8.804-1.658 11.897-4.967 3.09-3.304 4.636-7.281 4.636-11.931 0-4.539-1.469-8.268-4.396-11.191-2.926-2.921-6.723-4.388-11.396-4.388-4.92 0-8.944 1.597-12.077 4.78-3.135 3.186-4.703 7.045-4.703 11.578 0 4.493 1.496 8.301 4.483 11.425 2.99 3.126 6.84 4.694 11.556 4.694zm-40.921-.36c2.798 0 4.788-1.884 4.788-4.6 0-2.652-2.055-4.54-4.788-4.54-2.863 0-4.912 1.891-4.912 4.54 0 2.713 2.05 4.6 4.912 4.6zm9.964-4.305l.681-.72c.81-.787 1.071-1.582 1.071-3.774V42.097c0-1.895-.258-2.741-1.062-3.465l-.801-.718c-.785-.693-1.043-1.124-1.043-1.816 0-.984.763-1.791 1.99-2.071l5.44-1.32c.52-.126 1.107-.249 1.562-.249.626 0 1.138.206 1.497.563.36.358.572.873.572 1.517v20.518c0 2.069.251 3.031 1.115 3.758a.359.359 0 01.039.039l.608.708c.764.743 1.081 1.236 1.081 1.914 0 1.209-.912 1.9-2.377 1.9h-9.211c-1.396 0-2.316-.687-2.316-1.9 0-.681.317-1.178 1.154-1.925zm-61.567.001l.681-.721c.811-.787 1.071-1.582 1.071-3.774V27.999c0-1.835-.194-2.736-1.053-3.459l-.822-.796c-.709-.689-.968-1.116-.968-1.805 0-.985.767-1.789 1.927-2.07l5.378-1.32c.521-.126 1.107-.249 1.563-.249.621 0 1.147.187 1.522.542.376.356.608.885.608 1.598v34.616c0 2.074.258 2.981 1.125 3.766l.694.734c.769.748 1.025 1.238 1.025 1.919 0 .502-.153.907-.426 1.216-.385.435-1.03.684-1.89.684h-9.21c-.86 0-1.505-.249-1.891-.684-.272-.309-.425-.714-.425-1.216 0-.682.253-1.176 1.091-1.924zm-25.079-13.934v9.319c0 1.404.278 2.701 1.435 3.768l.748.726c.838.813 1.093 1.3 1.093 2.045 0 1.138-.913 1.9-2.378 1.9h-10.385c-1.465 0-2.377-.762-2.377-1.9 0-.884.259-1.303 1.097-2.049l.745-.724c.868-.786 1.434-1.857 1.434-3.766V30.039c0-1.517-.336-2.758-1.435-3.769l-.749-.726c-.77-.747-1.092-1.238-1.092-1.985 0-1.206.915-1.96 2.377-1.96h27.817c1.063 0 1.997.237 2.594.822.415.407.68.981.71 1.778l.433 6.421c.043.803-.194 1.472-.657 1.885-.319.284-.748.454-1.288.454-.681 0-1.203-.257-1.669-.701-.419-.399-.792-.959-1.213-1.618-1.016-1.624-1.489-2.208-2.572-2.967-1.507-1.112-3.803-1.494-8.145-1.494-2.505 0-4.086.109-5.082.366-.644.166-1.016.382-1.215.699-.204.324-.226.734-.226 1.235v12.618h6.523c1.561 0 2.659-.282 3.931-2.021l.007-.01c.51-.649.879-1.127 1.23-1.444.409-.37.802-.545 1.323-.545a1.9 1.9 0 011.883 1.901v8.699c0 1.165-.908 1.96-1.883 1.96-.485 0-.879-.173-1.289-.535-.353-.31-.723-.775-1.203-1.396-1.392-1.802-2.375-2.089-3.999-2.089h-6.523zm110.214-.22c0-3.121.68-5.364 2.089-6.713 1.392-1.332 2.888-2.006 4.496-2.006 2.212 0 4.205 1.238 6.003 3.672 1.837 2.489 2.746 5.853 2.746 10.086 0 3.124-.682 5.388-2.093 6.776-1.391 1.369-2.886 2.063-4.493 2.063-2.212 0-4.204-1.248-6.002-3.701-1.838-2.51-2.746-5.904-2.746-10.177zm-18.202-16.878c2.804 0 4.788-1.578 4.788-4.3 0-2.658-1.982-4.24-4.788-4.24-2.871 0-4.851 1.583-4.851 4.24 0 2.656 1.981 4.3 4.851 4.3z" fill="currentColor" /> </g> <defs> <radialGradient id="default-radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(43.593 41.714) scale(59.4764)"> <stop offset="0" stop-color="#ba7bf0" /> <stop offset=".45" stop-color="#996bec" /> <stop offset="1" stop-color="#5046e4" /> </radialGradient> <radialGradient id="laravel-bytes-radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(43.593 41.714) scale(59.4764)"> <stop offset="0" stop-color="#97f6e4" /> <stop offset=".45" stop-color="#5cead4" /> <stop offset="1" stop-color="#0d9488" /> </radialGradient> </defs> </svg> </a> <div class="grid grid-cols-fit-24 gap-10 items-start lg:justify-items-center"> <dl> <dt class="font-bold uppercase tracking-wider text-xs text-navy-900 mb-3">Company</dt> <dd class="font-medium flex flex-col items-start"> <a href="/about/" class="hover:text-violet-600 transition-colors">About</a> <a href="/pricing/" class="hover:text-violet-600 transition-colors">Pricing</a> <a href="/jobs/" class="hover:text-violet-600 transition-colors">Jobs</a> </dd> </dl> <dl> <dt class="font-bold uppercase tracking-wider text-xs text-navy-900 mb-3">Articles</dt> <dd class="font-medium flex flex-col items-start"> <a href="/blog/" class="hover:text-violet-600 transition-colors">Blog</a> <a href="/phoenix-files/" class="hover:text-violet-600 transition-colors">Phoenix Files</a> <a href="/laravel-bytes/" class="hover:text-violet-600 transition-colors">Laravel Bytes</a> <a href="/ruby-dispatch/" class="hover:text-violet-600 transition-colors">Ruby Dispatch</a> <a href="/django-beats/" class="hover:text-violet-600 transition-colors">Django Beats</a> <a href="/javascript-journal/" class="hover:text-violet-600 transition-colors">JavaScript Journal</a> </dd> </dl> <dl> <dt class="font-bold uppercase tracking-wider text-xs text-navy-900 mb-3">Resources</dt> <dd class="font-medium flex flex-col items-start"> <a href="/docs/" class="hover:text-violet-600 transition-colors">Docs</a> <a href="/docs/support/" class="hover:text-violet-600 transition-colors">Support</a> <a href="/support/" class="hover:text-violet-600 transition-colors">Support Metrics</a> <a href="https://status.flyio.net/" class="hover:text-violet-600 transition-colors">Status</a> </dd> </dl> <dl> <dt class="font-bold uppercase tracking-wider text-xs text-navy-900 mb-3">Contact</dt> <dd class="font-medium flex flex-col items-start"> <a href="https://github.com/superfly/" class="hover:text-violet-600 transition-colors">GitHub</a> <a href="https://twitter.com/flydotio" class="hover:text-violet-600 transition-colors">Twitter</a> <a href="https://community.fly.io/" class="hover:text-violet-600 transition-colors">Community</a> </dd> </dl> <dl> <dt class="font-bold uppercase tracking-wider text-xs text-navy-900 mb-3">Legal</dt> <dd class="font-medium flex flex-col items-start"> <a href="/docs/security/" class="hover:text-violet-600 transition-colors">Security</a> <a href="/legal/privacy-policy" class="hover:text-violet-600 transition-colors">Privacy policy</a> <a href="/legal/terms-of-service" class="hover:text-violet-600 transition-colors">Terms of service</a> <a href="/legal/acceptable-use-policy" class="hover:text-violet-600 transition-colors">Acceptable Use Policy</a> </dd> </dl> </div> </div> <p class="text-xs text-center mb-0">Copyright © 2024 Fly.io</p> </footer> <script src="/static/javascripts/application.js"></script> </body> </html>