(function(l, r) { if (l.getElementById('livereloadscript')) return; r = l.createElement('script'); r.async = 1; r.src = '//' + (window.location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1'; r.id = 'livereloadscript'; l.getElementsByTagName('head')[0].appendChild(r) })(window.document); var app = (function () { 'use strict'; function noop() { } const identity = x => x; function assign(tar, src) { // @ts-ignore for (const k in src) tar[k] = src[k]; return tar; } function add_location(element, file, line, column, char) { element.__svelte_meta = { loc: { file, line, column, char } }; } function run(fn) { return fn(); } function blank_object() { return Object.create(null); } function run_all(fns) { fns.forEach(run); } function is_function(thing) { return typeof thing === 'function'; } function safe_not_equal(a, b) { return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); } function is_empty(obj) { return Object.keys(obj).length === 0; } function subscribe(store, ...callbacks) { if (store == null) { return noop; } const unsub = store.subscribe(...callbacks); return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; } const is_client = typeof window !== 'undefined'; let now = is_client ? () => window.performance.now() : () => Date.now(); let raf = is_client ? cb => requestAnimationFrame(cb) : noop; const tasks = new Set(); function run_tasks(now) { tasks.forEach(task => { if (!task.c(now)) { tasks.delete(task); task.f(); } }); if (tasks.size !== 0) raf(run_tasks); } /** * Creates a new task that runs on each raf frame * until it returns a falsy value or is aborted */ function loop(callback) { let task; if (tasks.size === 0) raf(run_tasks); return { promise: new Promise(fulfill => { tasks.add(task = { c: callback, f: fulfill }); }), abort() { tasks.delete(task); } }; } function append(target, node) { target.appendChild(node); } function insert(target, node, anchor) { target.insertBefore(node, anchor || null); } function detach(node) { node.parentNode.removeChild(node); } function element(name) { return document.createElement(name); } function svg_element(name) { return document.createElementNS('http://www.w3.org/2000/svg', name); } function text(data) { return document.createTextNode(data); } function space() { return text(' '); } function empty() { return text(''); } function attr(node, attribute, value) { if (value == null) node.removeAttribute(attribute); else if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value); } function children(element) { return Array.from(element.childNodes); } function custom_event(type, detail) { const e = document.createEvent('CustomEvent'); e.initCustomEvent(type, false, false, detail); return e; } const active_docs = new Set(); let active = 0; // https://github.com/darkskyapp/string-hash/blob/master/index.js function hash(str) { let hash = 5381; let i = str.length; while (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i); return hash >>> 0; } function create_rule(node, a, b, duration, delay, ease, fn, uid = 0) { const step = 16.666 / duration; let keyframes = '{\n'; for (let p = 0; p <= 1; p += step) { const t = a + (b - a) * ease(p); keyframes += p * 100 + `%{${fn(t, 1 - t)}}\n`; } const rule = keyframes + `100% {${fn(b, 1 - b)}}\n}`; const name = `__svelte_${hash(rule)}_${uid}`; const doc = node.ownerDocument; active_docs.add(doc); const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = doc.head.appendChild(element('style')).sheet); const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {}); if (!current_rules[name]) { current_rules[name] = true; stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length); } const animation = node.style.animation || ''; node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`; active += 1; return name; } function delete_rule(node, name) { const previous = (node.style.animation || '').split(', '); const next = previous.filter(name ? anim => anim.indexOf(name) < 0 // remove specific animation : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations ); const deleted = previous.length - next.length; if (deleted) { node.style.animation = next.join(', '); active -= deleted; if (!active) clear_rules(); } } function clear_rules() { raf(() => { if (active) return; active_docs.forEach(doc => { const stylesheet = doc.__svelte_stylesheet; let i = stylesheet.cssRules.length; while (i--) stylesheet.deleteRule(i); doc.__svelte_rules = {}; }); active_docs.clear(); }); } let current_component; function set_current_component(component) { current_component = component; } function get_current_component() { if (!current_component) throw new Error('Function called outside component initialization'); return current_component; } function afterUpdate(fn) { get_current_component().$$.after_update.push(fn); } function onDestroy(fn) { get_current_component().$$.on_destroy.push(fn); } function createEventDispatcher() { const component = get_current_component(); return (type, detail) => { const callbacks = component.$$.callbacks[type]; if (callbacks) { // TODO are there situations where events could be dispatched // in a server (non-DOM) environment? const event = custom_event(type, detail); callbacks.slice().forEach(fn => { fn.call(component, event); }); } }; } // TODO figure out if we still want to support // shorthand events, or if we want to implement // a real bubbling mechanism function bubble(component, event) { const callbacks = component.$$.callbacks[event.type]; if (callbacks) { callbacks.slice().forEach(fn => fn(event)); } } const dirty_components = []; const binding_callbacks = []; const render_callbacks = []; const flush_callbacks = []; const resolved_promise = Promise.resolve(); let update_scheduled = false; function schedule_update() { if (!update_scheduled) { update_scheduled = true; resolved_promise.then(flush); } } function tick() { schedule_update(); return resolved_promise; } function add_render_callback(fn) { render_callbacks.push(fn); } let flushing = false; const seen_callbacks = new Set(); function flush() { if (flushing) return; flushing = true; do { // first, call beforeUpdate functions // and update components for (let i = 0; i < dirty_components.length; i += 1) { const component = dirty_components[i]; set_current_component(component); update(component.$$); } set_current_component(null); dirty_components.length = 0; while (binding_callbacks.length) binding_callbacks.pop()(); // then, once components are updated, call // afterUpdate functions. This may cause // subsequent updates... for (let i = 0; i < render_callbacks.length; i += 1) { const callback = render_callbacks[i]; if (!seen_callbacks.has(callback)) { // ...so guard against infinite loops seen_callbacks.add(callback); callback(); } } render_callbacks.length = 0; } while (dirty_components.length); while (flush_callbacks.length) { flush_callbacks.pop()(); } update_scheduled = false; flushing = false; seen_callbacks.clear(); } function update($$) { if ($$.fragment !== null) { $$.update(); run_all($$.before_update); const dirty = $$.dirty; $$.dirty = [-1]; $$.fragment && $$.fragment.p($$.ctx, dirty); $$.after_update.forEach(add_render_callback); } } let promise; function wait() { if (!promise) { promise = Promise.resolve(); promise.then(() => { promise = null; }); } return promise; } function dispatch(node, direction, kind) { node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`)); } const outroing = new Set(); let outros; function group_outros() { outros = { r: 0, c: [], p: outros // parent group }; } function check_outros() { if (!outros.r) { run_all(outros.c); } outros = outros.p; } function transition_in(block, local) { if (block && block.i) { outroing.delete(block); block.i(local); } } function transition_out(block, local, detach, callback) { if (block && block.o) { if (outroing.has(block)) return; outroing.add(block); outros.c.push(() => { outroing.delete(block); if (callback) { if (detach) block.d(1); callback(); } }); block.o(local); } } const null_transition = { duration: 0 }; function create_in_transition(node, fn, params) { let config = fn(node, params); let running = false; let animation_name; let task; let uid = 0; function cleanup() { if (animation_name) delete_rule(node, animation_name); } function go() { const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition; if (css) animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++); tick(0, 1); const start_time = now() + delay; const end_time = start_time + duration; if (task) task.abort(); running = true; add_render_callback(() => dispatch(node, true, 'start')); task = loop(now => { if (running) { if (now >= end_time) { tick(1, 0); dispatch(node, true, 'end'); cleanup(); return running = false; } if (now >= start_time) { const t = easing((now - start_time) / duration); tick(t, 1 - t); } } return running; }); } let started = false; return { start() { if (started) return; delete_rule(node); if (is_function(config)) { config = config(); wait().then(go); } else { go(); } }, invalidate() { started = false; }, end() { if (running) { cleanup(); running = false; } } }; } function create_out_transition(node, fn, params) { let config = fn(node, params); let running = true; let animation_name; const group = outros; group.r += 1; function go() { const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition; if (css) animation_name = create_rule(node, 1, 0, duration, delay, easing, css); const start_time = now() + delay; const end_time = start_time + duration; add_render_callback(() => dispatch(node, false, 'start')); loop(now => { if (running) { if (now >= end_time) { tick(0, 1); dispatch(node, false, 'end'); if (!--group.r) { // this will result in `end()` being called, // so we don't need to clean up here run_all(group.c); } return false; } if (now >= start_time) { const t = easing((now - start_time) / duration); tick(1 - t, t); } } return running; }); } if (is_function(config)) { wait().then(() => { // @ts-ignore config = config(); go(); }); } else { go(); } return { end(reset) { if (reset && config.tick) { config.tick(1, 0); } if (running) { if (animation_name) delete_rule(node, animation_name); running = false; } } }; } const globals = (typeof window !== 'undefined' ? window : typeof globalThis !== 'undefined' ? globalThis : global); function get_spread_update(levels, updates) { const update = {}; const to_null_out = {}; const accounted_for = { $$scope: 1 }; let i = levels.length; while (i--) { const o = levels[i]; const n = updates[i]; if (n) { for (const key in o) { if (!(key in n)) to_null_out[key] = 1; } for (const key in n) { if (!accounted_for[key]) { update[key] = n[key]; accounted_for[key] = 1; } } levels[i] = n; } else { for (const key in o) { accounted_for[key] = 1; } } } for (const key in to_null_out) { if (!(key in update)) update[key] = undefined; } return update; } function get_spread_object(spread_props) { return typeof spread_props === 'object' && spread_props !== null ? spread_props : {}; } function create_component(block) { block && block.c(); } function mount_component(component, target, anchor, customElement) { const { fragment, on_mount, on_destroy, after_update } = component.$$; fragment && fragment.m(target, anchor); if (!customElement) { // onMount happens before the initial afterUpdate add_render_callback(() => { const new_on_destroy = on_mount.map(run).filter(is_function); if (on_destroy) { on_destroy.push(...new_on_destroy); } else { // Edge case - component was destroyed immediately, // most likely as a result of a binding initialising run_all(new_on_destroy); } component.$$.on_mount = []; }); } after_update.forEach(add_render_callback); } function destroy_component(component, detaching) { const $$ = component.$$; if ($$.fragment !== null) { run_all($$.on_destroy); $$.fragment && $$.fragment.d(detaching); // TODO null out other refs, including component.$$ (but need to // preserve final state?) $$.on_destroy = $$.fragment = null; $$.ctx = []; } } function make_dirty(component, i) { if (component.$$.dirty[0] === -1) { dirty_components.push(component); schedule_update(); component.$$.dirty.fill(0); } component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); } function init(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) { const parent_component = current_component; set_current_component(component); const $$ = component.$$ = { fragment: null, ctx: null, // state props, update: noop, not_equal, bound: blank_object(), // lifecycle on_mount: [], on_destroy: [], on_disconnect: [], before_update: [], after_update: [], context: new Map(parent_component ? parent_component.$$.context : options.context || []), // everything else callbacks: blank_object(), dirty, skip_bound: false }; let ready = false; $$.ctx = instance ? instance(component, options.props || {}, (i, ret, ...rest) => { const value = rest.length ? rest[0] : ret; if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { if (!$$.skip_bound && $$.bound[i]) $$.bound[i](value); if (ready) make_dirty(component, i); } return ret; }) : []; $$.update(); ready = true; run_all($$.before_update); // `false` as a special case of no DOM component $$.fragment = create_fragment ? create_fragment($$.ctx) : false; if (options.target) { if (options.hydrate) { const nodes = children(options.target); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion $$.fragment && $$.fragment.l(nodes); nodes.forEach(detach); } else { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion $$.fragment && $$.fragment.c(); } if (options.intro) transition_in(component.$$.fragment); mount_component(component, options.target, options.anchor, options.customElement); flush(); } set_current_component(parent_component); } /** * Base class for Svelte components. Used when dev=false. */ class SvelteComponent { $destroy() { destroy_component(this, 1); this.$destroy = noop; } $on(type, callback) { const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); callbacks.push(callback); return () => { const index = callbacks.indexOf(callback); if (index !== -1) callbacks.splice(index, 1); }; } $set($$props) { if (this.$$set && !is_empty($$props)) { this.$$.skip_bound = true; this.$$set($$props); this.$$.skip_bound = false; } } } function dispatch_dev(type, detail) { document.dispatchEvent(custom_event(type, Object.assign({ version: '3.37.0' }, detail))); } function append_dev(target, node) { dispatch_dev('SvelteDOMInsert', { target, node }); append(target, node); } function insert_dev(target, node, anchor) { dispatch_dev('SvelteDOMInsert', { target, node, anchor }); insert(target, node, anchor); } function detach_dev(node) { dispatch_dev('SvelteDOMRemove', { node }); detach(node); } function attr_dev(node, attribute, value) { attr(node, attribute, value); if (value == null) dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute }); else dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value }); } function validate_slots(name, slot, keys) { for (const slot_key of Object.keys(slot)) { if (!~keys.indexOf(slot_key)) { console.warn(`<${name}> received an unexpected slot "${slot_key}".`); } } } /** * Base class for Svelte components with some minor dev-enhancements. Used when dev=true. */ class SvelteComponentDev extends SvelteComponent { constructor(options) { if (!options || (!options.target && !options.$$inline)) { throw new Error("'target' is a required option"); } super(); } $destroy() { super.$destroy(); this.$destroy = () => { console.warn('Component was already destroyed'); // eslint-disable-line no-console }; } $capture_state() { } $inject_state() { } } /* src/components/Navbar.svelte generated by Svelte v3.37.0 */ const file$5 = "src/components/Navbar.svelte"; function create_fragment$6(ctx) { let div4; let div0; let span1; let img; let img_src_value; let t0; let span0; let t2; let t3; let div2; let div1; let a0; let svg0; let path0; let t4; let t5; let a1; let svg1; let path1; let t6; let t7; let a2; let svg2; let path2; let t8; let t9; let div3; let button; let svg3; let path3; const block = { c: function create() { div4 = element("div"); div0 = element("div"); span1 = element("span"); img = element("img"); t0 = space(); span0 = element("span"); span0.textContent = "Tangan"; t2 = text("Menolong"); t3 = space(); div2 = element("div"); div1 = element("div"); a0 = element("a"); svg0 = svg_element("svg"); path0 = svg_element("path"); t4 = text("\n\t\t\t\tHome"); t5 = space(); a1 = element("a"); svg1 = svg_element("svg"); path1 = svg_element("path"); t6 = text("\n\t\t\t\tBusinesses"); t7 = space(); a2 = element("a"); svg2 = svg_element("svg"); path2 = svg_element("path"); t8 = text("\n\t\t\t\tRegister"); t9 = space(); div3 = element("div"); button = element("button"); svg3 = svg_element("svg"); path3 = svg_element("path"); if (img.src !== (img_src_value = "/logo.png")) attr_dev(img, "src", img_src_value); attr_dev(img, "alt", ""); attr_dev(img, "class", "w-14 h-14 mr-4"); add_location(img, file$5, 3, 3, 179); attr_dev(span0, "class", "text-primary"); add_location(span0, file$5, 4, 3, 235); attr_dev(span1, "class", "text-lg font-bold inline-flex items-center"); add_location(span1, file$5, 2, 2, 118); attr_dev(div0, "class", "flex-1 px-2 mx-2"); add_location(div0, file$5, 1, 1, 85); attr_dev(path0, "stroke-linecap", "round"); attr_dev(path0, "stroke-linejoin", "round"); attr_dev(path0, "stroke-width", "2"); attr_dev(path0, "d", "M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"); add_location(path0, file$5, 11, 5, 573); attr_dev(svg0, "xmlns", "http://www.w3.org/2000/svg"); attr_dev(svg0, "fill", "none"); attr_dev(svg0, "viewBox", "0 0 24 24"); attr_dev(svg0, "class", "inline-block w-5 mr-2 stroke-current"); add_location(svg0, file$5, 10, 4, 450); attr_dev(a0, "class", "btn btn-ghost btn-sm rounded-btn"); attr_dev(a0, "href", "/#/"); add_location(a0, file$5, 9, 3, 390); attr_dev(path1, "stroke-linecap", "round"); attr_dev(path1, "stroke-linejoin", "round"); attr_dev(path1, "stroke-width", "2"); attr_dev(path1, "d", "M21 13.255A23.931 23.931 0 0112 15c-3.183 0-6.22-.62-9-1.745M16 6V4a2 2 0 00-2-2h-4a2 2 0 00-2 2v2m4 6h.01M5 20h14a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"); add_location(path1, file$5, 17, 5, 1019); attr_dev(svg1, "xmlns", "http://www.w3.org/2000/svg"); attr_dev(svg1, "fill", "none"); attr_dev(svg1, "viewBox", "0 0 24 24"); attr_dev(svg1, "class", "inline-block w-5 mr-2 stroke-current"); add_location(svg1, file$5, 16, 4, 896); attr_dev(a1, "class", "btn btn-ghost btn-sm rounded-btn"); attr_dev(a1, "href", "/#/businesses"); add_location(a1, file$5, 15, 3, 826); attr_dev(path2, "stroke-linecap", "round"); attr_dev(path2, "stroke-linejoin", "round"); attr_dev(path2, "stroke-width", "2"); attr_dev(path2, "d", "M12 9v3m0 0v3m0-3h3m-3 0H9m12 0a9 9 0 11-18 0 9 9 0 0118 0z"); add_location(path2, file$5, 23, 5, 1497); attr_dev(svg2, "xmlns", "http://www.w3.org/2000/svg"); attr_dev(svg2, "fill", "none"); attr_dev(svg2, "viewBox", "0 0 24 24"); attr_dev(svg2, "class", "inline-block w-5 mr-2 stroke-current"); add_location(svg2, file$5, 22, 4, 1374); attr_dev(a2, "class", "btn btn-ghost btn-sm rounded-btn"); attr_dev(a2, "href", "/#/register"); add_location(a2, file$5, 21, 3, 1306); attr_dev(div1, "class", "flex items-stretch"); add_location(div1, file$5, 8, 2, 354); attr_dev(div2, "class", "flex-none hidden px-2 mx-2 lg:flex"); add_location(div2, file$5, 7, 1, 303); attr_dev(path3, "stroke-linecap", "round"); attr_dev(path3, "stroke-linejoin", "round"); attr_dev(path3, "stroke-width", "2"); attr_dev(path3, "d", "M4 6h16M4 12h16M4 18h16"); add_location(path3, file$5, 32, 4, 1886); attr_dev(svg3, "xmlns", "http://www.w3.org/2000/svg"); attr_dev(svg3, "fill", "none"); attr_dev(svg3, "viewBox", "0 0 24 24"); attr_dev(svg3, "class", "inline-block w-6 h-6 stroke-current"); add_location(svg3, file$5, 31, 3, 1765); attr_dev(button, "class", "btn btn-square btn-ghost"); add_location(button, file$5, 30, 2, 1720); attr_dev(div3, "class", "flex-none lg:hidden"); add_location(div3, file$5, 29, 1, 1684); attr_dev(div4, "class", "navbar lg:rounded-box bg-neutral-focus text-neutral-content shadow-xl"); add_location(div4, file$5, 0, 0, 0); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); }, m: function mount(target, anchor) { insert_dev(target, div4, anchor); append_dev(div4, div0); append_dev(div0, span1); append_dev(span1, img); append_dev(span1, t0); append_dev(span1, span0); append_dev(span1, t2); append_dev(div4, t3); append_dev(div4, div2); append_dev(div2, div1); append_dev(div1, a0); append_dev(a0, svg0); append_dev(svg0, path0); append_dev(a0, t4); append_dev(div1, t5); append_dev(div1, a1); append_dev(a1, svg1); append_dev(svg1, path1); append_dev(a1, t6); append_dev(div1, t7); append_dev(div1, a2); append_dev(a2, svg2); append_dev(svg2, path2); append_dev(a2, t8); append_dev(div4, t9); append_dev(div4, div3); append_dev(div3, button); append_dev(button, svg3); append_dev(svg3, path3); }, p: noop, i: noop, o: noop, d: function destroy(detaching) { if (detaching) detach_dev(div4); } }; dispatch_dev("SvelteRegisterBlock", { block, id: create_fragment$6.name, type: "component", source: "", ctx }); return block; } function instance$6($$self, $$props) { let { $$slots: slots = {}, $$scope } = $$props; validate_slots("Navbar", slots, []); const writable_props = []; Object.keys($$props).forEach(key => { if (!~writable_props.indexOf(key) && key.slice(0, 2) !== "$$") console.warn(` was created with unknown prop '${key}'`); }); return []; } class Navbar extends SvelteComponentDev { constructor(options) { super(options); init(this, options, instance$6, create_fragment$6, safe_not_equal, {}); dispatch_dev("SvelteRegisterComponent", { component: this, tagName: "Navbar", options, id: create_fragment$6.name }); } } /* src/components/Footer.svelte generated by Svelte v3.37.0 */ const file$4 = "src/components/Footer.svelte"; function create_fragment$5(ctx) { let div4; let div3; let div0; let img; let img_src_value; let t0; let div1; let a0; let t2; let a1; let t4; let a2; let t6; let a3; let t8; let div2; let span; let t10; let a4; const block = { c: function create() { div4 = element("div"); div3 = element("div"); div0 = element("div"); img = element("img"); t0 = space(); div1 = element("div"); a0 = element("a"); a0.textContent = "Link 1"; t2 = space(); a1 = element("a"); a1.textContent = "Link 2"; t4 = space(); a2 = element("a"); a2.textContent = "Link 3"; t6 = space(); a3 = element("a"); a3.textContent = "Link 4"; t8 = space(); div2 = element("div"); span = element("span"); span.textContent = "Created by"; t10 = space(); a4 = element("a"); a4.textContent = "Hamza ALI"; if (img.src !== (img_src_value = "/logo.png")) attr_dev(img, "src", img_src_value); attr_dev(img, "alt", ""); attr_dev(img, "class", "w-14 h-14 mr-4"); add_location(img, file$4, 3, 3, 308); attr_dev(div0, "class", "text-xl mb-2 lg:mb-0 font-title text-neutral-content lg:absolute lg:left-4 font-bold"); add_location(div0, file$4, 2, 2, 206); attr_dev(a0, "class", "my-1 btn btn-ghost btn-xs"); attr_dev(a0, "target", "_blank"); attr_dev(a0, "rel", "noopener"); attr_dev(a0, "href", "#"); add_location(a0, file$4, 7, 3, 402); attr_dev(a1, "class", "my-1 btn btn-ghost btn-xs"); attr_dev(a1, "target", "_blank"); attr_dev(a1, "rel", "noopener"); attr_dev(a1, "href", "#"); add_location(a1, file$4, 8, 3, 493); attr_dev(a2, "class", "my-1 btn btn-ghost btn-xs"); attr_dev(a2, "target", "_blank"); attr_dev(a2, "rel", "noopener"); attr_dev(a2, "href", "#"); add_location(a2, file$4, 9, 3, 584); attr_dev(a3, "class", "my-1 btn btn-ghost btn-xs"); attr_dev(a3, "target", "_blank"); attr_dev(a3, "rel", "noopener"); attr_dev(a3, "href", "#"); add_location(a3, file$4, 10, 3, 675); attr_dev(div1, "class", "text-center"); add_location(div1, file$4, 6, 2, 373); attr_dev(span, "class", "text-primary"); add_location(span, file$4, 14, 3, 865); attr_dev(a4, "class", "my-1 btn btn-ghost btn-xs"); attr_dev(a4, "target", "_blank"); attr_dev(a4, "rel", "noopener"); attr_dev(a4, "href", "#"); add_location(a4, file$4, 15, 3, 913); attr_dev(div2, "class", "text-sm font-title text-neutral-content lg:absolute lg:right-4 font-bold"); add_location(div2, file$4, 13, 2, 775); attr_dev(div3, "class", "w-full max-w-6xl text-center hero-content flex flex-col lg:flex-row justify-cener items-center"); add_location(div3, file$4, 1, 1, 95); attr_dev(div4, "class", "hero lg:rounded-box bg-neutral-focus text-neutral-content shadow-xl lg:relative"); add_location(div4, file$4, 0, 0, 0); }, l: function claim(nodes) { throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option"); }, m: function mount(target, anchor) { insert_dev(target, div4, anchor); append_dev(div4, div3); append_dev(div3, div0); append_dev(div0, img); append_dev(div3, t0); append_dev(div3, div1); append_dev(div1, a0); append_dev(div1, t2); append_dev(div1, a1); append_dev(div1, t4); append_dev(div1, a2); append_dev(div1, t6); append_dev(div1, a3); append_dev(div3, t8); append_dev(div3, div2); append_dev(div2, span); append_dev(div2, t10); append_dev(div2, a4); }, p: noop, i: noop, o: noop, d: function destroy(detaching) { if (detaching) detach_dev(div4); } }; dispatch_dev("SvelteRegisterBlock", { block, id: create_fragment$5.name, type: "component", source: "", ctx }); return block; } function instance$5($$self, $$props) { let { $$slots: slots = {}, $$scope } = $$props; validate_slots("Footer", slots, []); const writable_props = []; Object.keys($$props).forEach(key => { if (!~writable_props.indexOf(key) && key.slice(0, 2) !== "$$") console.warn(`