This repository has been archived by the owner on Dec 5, 2017. It is now read-only.
forked from cheeaun/busrouter-sg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
118 lines (117 loc) · 21.9 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<!DOCTYPE html>
<html itemscope itemtype="http://schema.org/WebPage">
<head>
<meta charset="utf-8">
<title>BusRouter SG</title>
<script>if (/cheeaun\.github/i.test(location.hostname)) location = 'https://busrouter.sg/';</script>
<meta name="description" content="Explore bus stops and routes on the map for all bus services in Singapore">
<meta name="apple-mobile-web-app-title" content="BusRouter SG">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="google" value="notranslate">
<meta itemprop="image" content="assets/icons/icon-144.png">
<meta itemprop="description" content="Explore bus stops and routes on the map for all bus services in Singapore">
<meta property="og:type" content="website">
<meta property="og:url" content="https://busrouter.sg/">
<meta property="og:title" content="BusRouter SG">
<meta property="og:description" content="Explore bus stops and routes on the map for all bus services in Singapore">
<meta property="og:image" content="https://busrouter.sg/assets/icons/icon-200.png">
<meta property="og:image:type" content="image/png">
<meta property="og:image:width" content="200">
<meta property="og:image:height" content="200">
<link rel="shortcut icon" href="favicon.ico">
<link rel="manifest" href="manifest.json">
<link rel="dns-prefetch" href="http://www.sbstransit.com.sg">
<link rel="dns-prefetch" href="http://www.transitlink.com.sg">
<link rel="canonical" href="https://busrouter.sg"/>
<link rel="apple-touch-icon-precomposed" href="assets/icons/icon-144.png">
<style>
html,body{margin:0;padding:0;overflow:hidden;width:100%;height:100%;font-size:14px;font-family:Roboto,sans-serif;font-weight:300;-webkit-text-size-adjust:none}button,input{font-family:Roboto,sans-serif;font-size:1em;padding:10px}a{color:#4285f4;text-decoration:none}a:hover{text-decoration:underline}a[href="#"]{-webkit-touch-callout:none}img{border:0}hr{margin:8px 0 6px;border:0;border-top:1px solid #F0F0E7}*{box-sizing:border-box}header{padding:10px;cursor:pointer;position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:absolute;z-index:1}header:active{opacity:.7}header h1{margin:0;padding:0;-webkit-filter:drop-shadow(0 2px 4px rgba(0,0,0,.2));filter:drop-shadow(0 2px 4px rgba(0,0,0,.2))}header svg{vertical-align:top}#header-search{border:0;margin:0;padding:10px;cursor:pointer;color:#000;opacity:.75;background-color:transparent}#header-search:hover{opacity:1}#header-search .icon{background-color:rgba(255,255,255,.8)}#places-search-form input{outline:0;-webkit-appearance:none;-moz-appearance:none;border:1px solid #aaa;border-radius:3px;color:#bbb;background-color:#fff;width:100%;margin:0;-webkit-transition:background-color .3s;-moz-transition:background-color .3s;transition:background-color .3s;font-size:1.2em}#places-search-form input:focus{color:#333;border-color:#20a4d0}#places-search-form input::-webkit-input-placeholder{color:#bbb}#places-search-form input:-moz-placeholder{color:#bbb}.dialog{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;z-index:-1;background-color:rgba(0,0,0,.15);-webkit-transition:opacity .3s;-moz-transition:opacity .3s;transition:opacity .3s;opacity:0}.dialog.show{z-index:100;opacity:1}.dialog section{position:absolute;top:0;left:0;width:100%;max-height:100%;background-color:#fff;padding:14px;-webkit-transition:-webkit-transform .3s cubic-bezier(0.15,.78,.18,1.17);transition:transform .3s cubic-bezier(0.15,.78,.18,1.17);-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);pointer-events:none}.dialog.show section{transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);pointer-events:auto;box-shadow:0 1px 15px rgba(0,0,0,.3)}@media screen and (min-width:500px) and (min-height:400px){.dialog section{width:500px;left:50%;margin-left:-250px;border-radius:5px}.dialog.show section{transform:translate3d(0,10px,0);-webkit-transform:translate3d(0,10px,0)}}.dialog section h2{font-size:1.3em;font-weight:400;margin-top:0;padding-top:0}.dialog section h2 small{opacity:.75}.dialog section p{margin-top:0;padding-top:0}.dialog section b,.dialog section strong{font-weight:400}#bounds-warning{position:absolute;top:10px;left:75px;display:none;padding:5px 10px;background-color:rgba(0,0,0,.7);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);color:#fff}#bounds-warning a{color:#fff;text-decoration:underline}#bounds-warning.visible{display:block}#map{position:absolute;top:0;left:0;bottom:0;right:300px;background-color:#E5E3DF}aside{position:absolute;top:0;bottom:0;right:0;width:300px;z-index:1;overflow:hidden}aside h1{cursor:default;color:#7ac000;background-color:#fff;margin:0;padding:0 10px;height:40px;line-height:40px;font-weight:400;border-bottom:1px solid rgba(0,0,0,.2)}aside #bus-stops-section h1,aside #bus-stop-routes-section h1{color:#f01b48;font-weight:400}aside h1 b{font-weight:500}aside h1 a{color:#fff}aside h1 a.close,aside h1 a.back{outline:0;color:inherit;display:inline-block;position:absolute;top:0;right:0;width:35px;height:40px;line-height:40px;text-align:center;transition:background-color .3s}aside h1 a.close:hover,aside h1 a.back:hover{text-decoration:none;background-color:rgba(0,0,0,.1)}aside h1 a.back{position:static;float:left;-webkit-transform:translateX(-10px);transform:translateX(-10px)}aside section{position:absolute;top:0;bottom:0;left:0;width:100%;background-color:#fff;z-index:1}aside section>div{position:absolute;top:40px;left:0;bottom:0;right:0;width:100%;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}aside section p{margin:0;padding:16px;color:#666;text-align:center}aside section div h2{color:#999;background-color:#f7f7f7;margin:0;padding:0 10px;height:24px;line-height:24px;font-size:1em;font-weight:400;border-bottom:1px solid #ededed;position:-webkit-sticky;position:sticky;top:0;z-index:1}aside section div ul{margin:0;padding:0;list-style:none}aside section div ul li{display:inline}aside section div ul li a{color:#333;background-color:#fff;display:block;padding:8px;border-bottom:1px solid #ededed;overflow:hidden;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;-webkit-transition:background-color .3s;-moz-transition:background-color .3s;transition:background-color .3s}aside section div ul li a:hover{text-decoration:none;color:#000;background-color:#fafafa}aside section div ul li a.hidden{display:none}#sidebar section#bus-services-section div ul li a:active,#sidebar section#bus-services-section div ul li a.selected{color:#fff;background-color:#95cf29}#sidebar section#bus-routes-section div ul li a:active .tag,#sidebar section#bus-routes-section div ul li a.selected .tag,#sidebar section#bus-stops-section div ul li a:active .tag,#sidebar section#bus-stops-section div ul li a.selected .tag{color:#fff;background-color:#f78da3}#sidebar section#bus-services-section div ul li a span{opacity:.65;margin-left:1em}aside section div ul li a.stop-a i,aside section div ul li a.stop-b i,aside section div ul li a.stop-dot i,aside section div ul li a.stop i{display:inline-block;background:transparent url(../../../../../../assets/images/bus-sprite.png) no-repeat;background-size:78px 84px;vertical-align:middle}aside section div ul li a.stop-a i,aside section div ul li a.stop-b i,aside section div ul li a.stop-dot i{width:26px;height:27px;margin-right:8px}aside section div ul li a.stop-a i{background-position:-26px -20px}aside section div ul li a.stop-b i{background-position:-52px -20px}aside section div ul li a.stop-dot i{background-position:0 -20px}aside section div ul li a.stop i{background-position:-30px 0;width:18px;height:19px;margin:0 12px 0 4px}aside section div ul li a .tag{vertical-align:middle;display:inline-block;font-weight:400;font-size:.8em;color:#999;background-color:#ededed;padding:3px 5px;margin:0 5px 0 0;line-height:1em;border-radius:3px}aside section #bus-stop-routes ul li a .tag{border-radius:0}aside section #bus-stop-routes ul li a:focus .tag,aside section #bus-stop-routes ul li a:hover .tag{color:#fff;background-color:#95cf29}#bus-services-section .search-field{position:relative;height:32px;display:block}#bus-services-section .search-field .icon{opacity:.5;position:absolute;top:8px;left:8px}#bus-services-section .search-field input{padding:0 30px;height:32px;line-height:32px;width:100%;border:0;border-radius:0;border-bottom:1px solid rgba(0,0,0,.2);background-color:#fff;-webkit-appearance:none;-moz-appearance:textfield;appearance:none}#bus-services-section .search-field input:focus{outline:0;box-shadow:inset 0 2px 5px rgba(0,0,0,.1)}#bus-services-section .search-field input::-webkit-outer-spin-button,#bus-services-section .search-field input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}#bus-services-section .search-field .close{color:#F01B48;line-height:1em;opacity:.5;position:absolute;top:0;right:0;padding:9px}#bus-services-section .search-field .close *{pointer-events:none;position:static}#bus-services-section .search-field .close:hover{opacity:.8}#bus-services-section .search-field input+.close{pointer-events:none;visibility:hidden}#bus-services-section .search-field input:valid+.close{pointer-events:all;visibility:visible}#bus-routes-section a.details{float:right;padding:5px 10px}#bus-routes-section .tab-bar{overflow:hidden;position:-webkit-sticky;position:sticky;top:0;background-color:rgba(240,240,240,.9);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}aside section .tab{color:#333;display:inline-block;padding:5px 10px;font-weight:400}aside section .tab:hover{color:#f01b48;text-decoration:none}aside section .tab.selected{background-color:#fff;color:#f01b48}aside section .tab{border-right:1px solid rgba(0,0,0,.1)}aside section{-webkit-transition-timing-function:cubic-bezier(.3,0,0,1);transition-timing-function:cubic-bezier(.3,0,0,1);transition-property:transform,-webkit-transform,opacity;transition-duration:.3s}aside section.hidden{pointer-events:none;opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}#bus-services-section.loading #bus-services ul li a.selected{background-size:30px 30px;background-image:linear-gradient(45deg,rgba(0,0,0,.03) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.03) 50%,rgba(0,0,0,.03) 75%,transparent 75%,transparent);-webkit-animation:barberpole .5s linear infinite;animation:barberpole .5s linear infinite}@-webkit-keyframes barberpole{from{background-position:0 0}to{background-position:60px 30px}}@keyframes barberpole{from{background-position:0 0}to{background-position:60px 30px}}#bus-stop-routes-section.loading h1 a.close{display:none}#bus-stop-routes-section.loading #bus-stop-routes{background-size:30px 30px;background-image:linear-gradient(45deg,rgba(0,0,0,.03) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.03) 50%,rgba(0,0,0,.03) 75%,transparent 75%,transparent);-webkit-animation:barberpole .5s linear infinite;animation:barberpole .5s linear infinite}.infowindow{font-size:14px}.infowindow h1{font-size:1.2em;font-weight:400;margin:0 0 2px;padding:0}.infowindow .tag{vertical-align:middle;display:inline-block;font-weight:400;font-size:.8em;color:#fff;background-color:#f78da3;padding:3px 5px;margin:0 5px 0 0;line-height:1em;border-radius:3px}.infowindow a.infoservice,.infowindow span.infoservice{font-weight:400;color:#fff;background-color:#95cf29;padding:2px 6px;margin:4px 0 0;display:inline-block}.infowindow a.infoservice:hover{background-color:#7ac000;text-decoration:none}.infowindow span.infoservice{color:#999;background-color:#ededed}.infowindow .show-routes{white-space:nowrap}.infowindow .infofooter{margin-top:7px;border-top:1px solid #F0F0E7;padding-top:3px}.infowindow .infofooter a{display:block;line-height:1.5em}#geolocation-control{cursor:pointer;border:0;outline:0;margin:10px;padding:12px;width:48px;height:48px;background-color:#fff;border-radius:50%;overflow:hidden;box-shadow:0 2px 4px rgba(0,0,0,.2);vertical-align:top}#geolocation-control svg{fill:#666}#geolocation-control.active svg{fill:#4285f4}.dialog button{display:block;width:100%;font-weight:500;color:#4285f4;background-color:#fff;border:1px solid #4285f4;cursor:pointer;border-radius:3px}.dialog button:hover{color:#fff;background-color:#4285f4;text-decoration:none}.dialog button svg{vertical-align:middle;fill:currentColor}.icon{width:16px;height:16px;vertical-align:-10%;fill:currentColor}.icon-circle{vertical-align:middle;width:24px;height:24px;border:1px solid;border-radius:12px;padding:4px}.icon-circle:hover{text-decoration:none}@media screen and (max-width:640px){#map{right:0;bottom:50%;-webkit-transition:bottom .3s;transition:bottom .3s}#sidebar{top:50%;left:0;width:100%;-webkit-transition:top .3s;transition:top .3s}#sidebar h1{border-top:1px solid rgba(0,0,0,.2)}.sidebar-collapsed #map{bottom:10%}.sidebar-collapsed #sidebar{top:90%}.infowindow{max-width:200px}}@-ms-viewport{width:device-width;zoom:1}@viewport{width:device-width;zoom:1}#outdated-browser{position:absolute;background-color:#ff9;padding:10px;top:0;left:0;right:0;width:100%;text-align:center;z-index:99999999}
</style>
<script async src="https://d2wy8f7a9ursnm.cloudfront.net/bugsnag-2.min.js" data-apikey="37e227db7c88af3576c11f86cba0cc02"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-23235796-4', 'auto');
ga('send', 'pageview');
</script>
</head>
<body>
<!--[if lt IE 10]>
<div id="outdated-browser">
<p>You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
</div>
<![endif]-->
<header id="heading">
<h1>
<svg viewBox="0 0 120 120" width="48" height="48">
<title>BusRouter SG</title>
<circle cx="60" cy="60" r="56.7" fill="#fff" stroke="#00454d" stroke-width="6.6"/>
<path fill="#00454d" d="M86.08 36.76c-.8-3.65-3.28-5.1-7.04-6.55-3.66-1.45-12.5-3.15-19.03-3.2-6.54.05-15.37 1.76-19.06 3.2-3.73 1.44-6.24 2.9-7 6.54l-2.8 20.15v27.77h4.84V89c-.02 5.33 8.3 5.33 8.32.02v-4.35h31.42V89c-.02 5.33 8.3 5.33 8.3.02v-4.35h4.85V56.9l-2.8-20.14zM48.12 32.1H71.9c2.32 0 2.32 3.27 0 3.28H48.13c-2.35 0-2.35-3.24 0-3.24v-.04zm-8 43.87c-2.2 0-4-1.67-4-3.74 0-2.05 1.78-3.72 3.94-3.72 2.18 0 4 1.68 4 3.73-.03 2.08-1.82 3.73-4.03 3.74h.08zM59.7 59h-21.2c-2.1.02-2.5-1.38-2.32-2.76l2.2-14.63c.3-1.76.94-2.92 3.44-2.94H78.2c2.53 0 3.14 1.18 3.45 2.94l2.24 14.63c.2 1.4-.25 2.77-2.3 2.77H59.73zm20.16 16.97c-2.15 0-4-1.67-4-3.74 0-2.05 1.84-3.72 4-3.72 2.23 0 4 1.68 4.08 3.73 0 2.08-1.78 3.73-4 3.74h-.08z"/>
<circle cx="96" cy="96" r="24" fill="#ef2c2e"/>
<path fill="#fff" d="M87.6 105.38c-1.4 0-2.75-.24-4.03-.72-1.3-.48-2.48-1.2-3.57-2.2l1.92-2.3c.9.77 1.8 1.36 2.7 1.77.9.4 1.92.6 3.06.6 1 0 1.78-.2 2.36-.62.58-.4.87-.96.87-1.65v-.06c0-.34-.04-.63-.16-.88-.1-.25-.32-.5-.62-.7-.3-.24-.73-.45-1.26-.64-.53-.2-1.22-.38-2.08-.57-.97-.22-1.84-.47-2.6-.76-.75-.3-1.4-.63-1.9-1.04-.5-.4-.9-.9-1.18-1.5-.26-.6-.4-1.3-.4-2.14v-.05c0-.77.15-1.5.46-2.14.3-.65.74-1.2 1.28-1.67.55-.47 1.2-.83 1.96-1.1.76-.25 1.6-.38 2.5-.38 1.34 0 2.54.2 3.6.6 1.08.38 2.08.95 3.02 1.7l-1.72 2.42c-.83-.6-1.66-1.08-2.48-1.4-.8-.32-1.64-.48-2.47-.48-.94 0-1.67.2-2.2.63-.5.4-.77.92-.77 1.52v.05c0 .35.06.66.18.93s.34.5.67.73c.32.22.76.42 1.33.6.57.2 1.28.4 2.15.6.97.25 1.82.52 2.56.82.74.3 1.36.66 1.84 1.08.5.42.86.92 1.1 1.48.27.58.4 1.23.4 1.98v.05c0 .86-.17 1.62-.5 2.3-.3.67-.75 1.25-1.32 1.72-.56.46-1.25.82-2.05 1.06-.8.26-1.67.38-2.63.38M104.4 105.43c-1.44 0-2.73-.24-3.9-.72-1.16-.46-2.15-1.12-2.98-1.97-.82-.84-1.46-1.83-1.9-2.97-.46-1.13-.7-2.37-.7-3.7V96c0-1.27.24-2.48.7-3.62.47-1.15 1.12-2.15 1.96-3 .84-.87 1.84-1.55 3-2.06 1.15-.5 2.4-.75 3.78-.75.8 0 1.53.06 2.18.17.65.1 1.25.27 1.8.48.56.2 1.1.47 1.58.77.5.3.98.64 1.45 1.04l-2.03 2.43c-.35-.3-.7-.57-1.07-.8-.37-.25-.75-.46-1.15-.62-.4-.17-.83-.3-1.3-.4-.5-.1-1-.14-1.6-.14-.82 0-1.6.2-2.32.54-.72.34-1.35.8-1.88 1.4-.53.57-.94 1.26-1.25 2.04-.3.78-.45 1.6-.45 2.48V96c0 .95.14 1.82.44 2.62s.7 1.5 1.26 2.07c.55.56 1.2 1 1.95 1.34.75.33 1.6.5 2.53.5.87 0 1.68-.13 2.43-.38.76-.25 1.4-.6 1.97-1V97.7h-4.67v-2.8H112v7.67c-.46.37-.96.74-1.5 1.1-.55.33-1.14.64-1.77.9-.64.26-1.32.46-2.05.6-.73.16-1.5.23-2.3.23"/>
</svg>
</h1>
</header>
<div id="about" class="dialog">
<section>
<h2>BusRouter SG<br><small>Singapore Bus Routes Explorer</small></h2>
<p><strong>Explore</strong> bus stops and routes on the map for all bus services in Singapore. Including <b>realtime arrival times</b> for all bus stops.</p>
<p><a href="https://github.com/cheeaun/busrouter-sg" target="_blank">Yet another project</a> by <a href="http://twitter.com/cheeaun" target="_blank" itemprop="creator">@cheeaun</a>. Data is <em>extracted</em> from the <a href="http://www.mytransport.sg/">Land Transport Authority</a>.</p>
<p>Sister sites: <a href="https://railrouter.sg/" target="_blank">🚆 RailRouter SG</a> <a href="https://taxirouter.sg/" target="_blank">🚖 TaxiRouter SG</a></p>
<p><strong>Start exploring</strong> by clicking on one of the listed bus services.</p>
<button class="close">Okay</button>
</section>
</div>
<div id="search" class="dialog">
<section>
<p>Search for a place</p>
<form id="places-search-form">
<p><input type="search" placeholder="e.g. Clarke Quay, Bugis Junction, Ang Mo Kio"></p>
</form>
<button class="close">Cancel</button>
</section>
</div>
<aside id="sidebar">
<section id="bus-services-section">
<h1>Bus Services</h1>
<div id="bus-services"></div>
</section>
<section id="bus-routes-section" class="extra hidden">
<h1>Routes for Bus Service <b></b> <a href="#/" class="back"><svg class="icon"><use xlink:href="#arrow-left"></use></svg></a></h1>
<div id="bus-routes"></div>
</section>
<section id="bus-stops-section" class="extra hidden">
<h1>Bus Stops <a href="#" class="close"><svg class="icon"><use xlink:href="#times"></use></svg></a></h1>
<div id="bus-stops"></div>
</section>
<section id="bus-stop-routes-section" class="extra hidden">
<h1>Routes for Bus Stop <b></b> <a href="#/" class="close"><svg class="icon"><use xlink:href="#times"></use></svg></a></h1>
<div id="bus-stop-routes"></div>
</section>
</aside>
<div id="map"></div>
<button id="header-search" title="Search for place">
<svg class="icon icon-circle"><use xlink:href="#search-icon"></use></svg>
</button>
<button id="geolocation-control">
<svg width="24" height="24" viewBox="0 0 24 24">
<path d="M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3c-.46-4.17-3.77-7.48-7.94-7.94V1h-2v2.06C6.83 3.52 3.52 6.83 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c4.17-.46 7.48-3.77 7.94-7.94H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"/>
</svg>
</button>
<div id="bounds-warning">Looks like you're lost.<br><a href="#" id="back-sg">Go back to Singapore</a>.</div>
<svg width="0" height="0" style="position:absolute"><symbol viewBox="0 0 24 24" id="arrow-left"><path d="M19.1 21.2L9.95 12l9.15-9.2L16.3 0l-12 12 12 12z"/></symbol><symbol viewBox="0 0 1792 1792" id="clock-o"><path d="M1024 544v448q0 14-9 23t-23 9H672q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h224V544q0-14 9-23t23-9h64q14 0 23 9t9 23zm416 352q0-148-73-273t-198-198-273-73-273 73-198 198-73 273 73 273 198 198 273 73 273-73 198-198 73-273zm224 0q0 209-103 385.5T1281.5 1561 896 1664t-385.5-103T231 1281.5 128 896t103-385.5T510.5 231 896 128t385.5 103T1561 510.5 1664 896z"/></symbol><symbol viewBox="0 0 1792 1792" id="code-fork"><path d="M672 1472q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm0-1152q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm640 128q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm96 0q0 52-26 96.5t-70 69.5q-2 287-226 414-68 38-203 81-128 40-169.5 71T672 1280v26q44 25 70 69.5t26 96.5q0 80-56 136t-136 56-136-56-56-136q0-52 26-96.5t70-69.5V486q-44-25-70-69.5T384 320q0-80 56-136t136-56 136 56 56 136q0 52-26 96.5T672 486v497q54-26 154-57 55-17 87.5-29.5t70.5-31 59-39.5 40.5-51 28-69.5 8.5-91.5q-44-25-70-69.5t-26-96.5q0-80 56-136t136-56 136 56 56 136z"/></symbol><symbol viewBox="0 0 1792 1792" id="list-alt"><path d="M384 1184v64q0 13-9.5 22.5T352 1280h-64q-13 0-22.5-9.5T256 1248v-64q0-13 9.5-22.5t22.5-9.5h64q13 0 22.5 9.5t9.5 22.5zm0-256v64q0 13-9.5 22.5T352 1024h-64q-13 0-22.5-9.5T256 992v-64q0-13 9.5-22.5T288 896h64q13 0 22.5 9.5T384 928zm0-256v64q0 13-9.5 22.5T352 768h-64q-13 0-22.5-9.5T256 736v-64q0-13 9.5-22.5T288 640h64q13 0 22.5 9.5T384 672zm1152 512v64q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 1248v-64q0-13 9.5-22.5t22.5-9.5h960q13 0 22.5 9.5t9.5 22.5zm0-256v64q0 13-9.5 22.5t-22.5 9.5H544q-13 0-22.5-9.5T512 992v-64q0-13 9.5-22.5T544 896h960q13 0 22.5 9.5t9.5 22.5zm0-256v64q0 13-9.5 22.5T1504 768H544q-13 0-22.5-9.5T512 736v-64q0-13 9.5-22.5T544 640h960q13 0 22.5 9.5t9.5 22.5zm128 704V544q0-13-9.5-22.5T1632 512H160q-13 0-22.5 9.5T128 544v832q0 13 9.5 22.5t22.5 9.5h1472q13 0 22.5-9.5t9.5-22.5zm128-1088v1088q0 66-47 113t-113 47H160q-66 0-113-47T0 1376V288q0-66 47-113t113-47h1472q66 0 113 47t47 113z"/></symbol><symbol viewBox="0 0 1792 1792" id="search-icon"><path d="M1216 832q0-185-131.5-316.5T768 384 451.5 515.5 320 832t131.5 316.5T768 1280t316.5-131.5T1216 832zm512 832q0 52-38 90t-90 38q-54 0-90-38l-343-342q-179 124-399 124-143 0-273.5-55.5t-225-150-150-225T64 832t55.5-273.5 150-225 225-150T768 128t273.5 55.5 225 150 150 225T1472 832q0 220-124 399l343 343q37 37 37 90z"/></symbol><symbol viewBox="0 0 1792 1792" id="times"><path d="M1490 1322q0 40-28 68l-136 136q-28 28-68 28t-68-28l-294-294-294 294q-28 28-68 28t-68-28l-136-136q-28-28-28-68t28-68l294-294-294-294q-28-28-28-68t28-68l136-136q28-28 68-28t68 28l294 294 294-294q28-28 68-28t68 28l136 136q28 28 28 68t-28 68l-294 294 294 294q28 28 28 68z"/></symbol></svg>
<script src="js/scripts.js" async></script>
<script>
if ('serviceWorker' in navigator){
navigator.serviceWorker.register('service-worker.js').then(function(registration){
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}).catch(function(err){
console.log('ServiceWorker registration failed: ', err);
});
}
</script>
</body>
</html>