feat: offline in-browser "Ask MSOS" assistant (no API, zero cost)
A privacy-friendly help widget that answers visitor questions from the site's own content and links to the full page — runs 100% in the browser, no API, no server, no per-token cost. - tools/build_search_index.py: parses every EN/MK/SI page into ~720 heading-level chunks per language -> assistant/index-<lang>.json (lazy-loaded only when the chat is opened; gzips to ~80 KB). - assistant.js: dependency-free BM25 search + multilingual stopword filtering + a curated short-answer layer for common questions, plus an accessible chat widget (role=dialog, keyboard, aria). CSP-safe (self only). - assistant.css: scoped .msa-* styles in the site's teal palette; responsive (full-screen panel on mobile). - Injected on 208 pages (blog WIP excluded; picks it up when that lands). Verified in a headless browser across EN/MK/SI: curated answers, search fallback with correct ranking (rare terms win), correct deep links, Cyrillic + Slovene diacritics, and zero console errors. Curated MK/SI answers are machine-drafted — proofread before launch. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
cca6fd18aa
commit
f7f297bd65
214 files changed
+876
No files matched your search
@@ -70,5 +70,7 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
/* ==========================================================================
|
||||||
|
MSOS Assistant widget styles. All selectors are .msa-* scoped so they can't
|
||||||
|
collide with the site. Colours echo the site's teal accent.
|
||||||
|
========================================================================== */
|
||||||
|
.msa-root {
|
||||||
|
--msa-accent: #12707e;
|
||||||
|
--msa-accent-dark: #0d5560;
|
||||||
|
--msa-bg: #ffffff;
|
||||||
|
--msa-bot: #f1f5f6;
|
||||||
|
--msa-user: #12707e;
|
||||||
|
--msa-text: #16232a;
|
||||||
|
position: fixed;
|
||||||
|
right: 20px; bottom: 20px;
|
||||||
|
z-index: 9999;
|
||||||
|
font-family: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* launcher */
|
||||||
|
.msa-launch {
|
||||||
|
display: inline-flex; align-items: center; gap: 8px;
|
||||||
|
background: var(--msa-accent); color: #fff;
|
||||||
|
border: 0; border-radius: 999px;
|
||||||
|
padding: 12px 18px; font-size: 15px; font-weight: 600;
|
||||||
|
cursor: pointer; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
|
||||||
|
transition: transform .15s ease, background .15s ease;
|
||||||
|
}
|
||||||
|
.msa-launch:hover { background: var(--msa-accent-dark); transform: translateY(-1px); }
|
||||||
|
.msa-launch i { font-size: 17px; }
|
||||||
|
.msa-open .msa-launch { display: none; }
|
||||||
|
|
||||||
|
/* panel */
|
||||||
|
.msa-panel {
|
||||||
|
position: absolute; right: 0; bottom: 0;
|
||||||
|
width: min(380px, calc(100vw - 32px));
|
||||||
|
height: min(560px, calc(100vh - 40px));
|
||||||
|
display: none; flex-direction: column;
|
||||||
|
background: var(--msa-bg); border-radius: 16px;
|
||||||
|
box-shadow: 0 24px 60px rgba(0, 0, 0, 0.28);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.msa-open .msa-panel { display: flex; }
|
||||||
|
|
||||||
|
.msa-head {
|
||||||
|
display: flex; align-items: center; justify-content: space-between;
|
||||||
|
background: var(--msa-accent); color: #fff;
|
||||||
|
padding: 14px 16px; font-weight: 700; font-size: 16px;
|
||||||
|
}
|
||||||
|
.msa-x { background: none; border: 0; color: #fff; font-size: 26px; line-height: 1; cursor: pointer; padding: 0 4px; }
|
||||||
|
.msa-x:hover { opacity: .8; }
|
||||||
|
|
||||||
|
.msa-log {
|
||||||
|
flex: 1; overflow-y: auto; padding: 14px;
|
||||||
|
display: flex; flex-direction: column; gap: 10px;
|
||||||
|
background: #fafbfb;
|
||||||
|
}
|
||||||
|
.msa-msg { display: flex; }
|
||||||
|
.msa-bot { justify-content: flex-start; }
|
||||||
|
.msa-user { justify-content: flex-end; }
|
||||||
|
.msa-bubble {
|
||||||
|
max-width: 85%; padding: 10px 13px; border-radius: 14px;
|
||||||
|
font-size: 14.5px; line-height: 1.5; color: var(--msa-text);
|
||||||
|
background: var(--msa-bot); border-bottom-left-radius: 4px;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
.msa-user .msa-bubble {
|
||||||
|
background: var(--msa-user); color: #fff; border-radius: 14px; border-bottom-right-radius: 4px;
|
||||||
|
}
|
||||||
|
.msa-also { color: #5a6b72; font-size: 13px; }
|
||||||
|
.msa-link {
|
||||||
|
display: inline-block; margin-top: 6px;
|
||||||
|
color: var(--msa-accent); font-weight: 600; text-decoration: none;
|
||||||
|
}
|
||||||
|
.msa-link:hover { text-decoration: underline; }
|
||||||
|
|
||||||
|
.msa-form { display: flex; gap: 8px; padding: 10px; border-top: 1px solid #eceff0; background: #fff; }
|
||||||
|
.msa-input {
|
||||||
|
flex: 1; border: 1px solid #d6dcde; border-radius: 10px;
|
||||||
|
padding: 10px 12px; font-size: 14.5px; font-family: inherit; color: var(--msa-text);
|
||||||
|
}
|
||||||
|
.msa-input:focus { outline: 2px solid var(--msa-accent); outline-offset: -1px; border-color: var(--msa-accent); }
|
||||||
|
.msa-send {
|
||||||
|
background: var(--msa-accent); color: #fff; border: 0; border-radius: 10px;
|
||||||
|
width: 44px; cursor: pointer; font-size: 16px;
|
||||||
|
}
|
||||||
|
.msa-send:hover { background: var(--msa-accent-dark); }
|
||||||
|
.msa-foot { margin: 0; padding: 8px 12px; font-size: 11.5px; color: #8a979d; background: #fff; text-align: center; }
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
.msa-root { right: 12px; bottom: 12px; }
|
||||||
|
.msa-panel { width: calc(100vw - 24px); height: calc(100vh - 24px); }
|
||||||
|
}
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
.msa-launch { transition: none; }
|
||||||
|
}
|
||||||
+284
@@ -0,0 +1,284 @@
|
|||||||
|
/* ==========================================================================
|
||||||
|
MSOS Assistant — offline "find my answer" helper.
|
||||||
|
100% in-browser: no API, no server, no cost. Lazy-loads a small per-language
|
||||||
|
index and answers with a short snippet + a link to the full page.
|
||||||
|
Dependency-free so it stays CSP-safe (script-src 'self').
|
||||||
|
========================================================================== */
|
||||||
|
(function () {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var LANG = (document.documentElement.lang || "en").toLowerCase();
|
||||||
|
if (LANG === "sl") LANG = "si"; // site uses lang="sl", files use "si"
|
||||||
|
if (["en", "mk", "si"].indexOf(LANG) < 0) LANG = "en";
|
||||||
|
|
||||||
|
/* ---- localized UI strings ---- */
|
||||||
|
var UI = {
|
||||||
|
en: { title: "Ask MSOS", open: "Ask MSOS", placeholder: "Ask a question…",
|
||||||
|
send: "Send", close: "Close",
|
||||||
|
greeting: "Hi! 👋 Ask me anything about studying in Slovenia or MSOS and I'll point you to the right page.",
|
||||||
|
found: "Here's what I found:", more: "Read more",
|
||||||
|
none: "I couldn't find a clear answer. Try the Student Welcome Guide, or email info@msosorg.com.",
|
||||||
|
guideUrl: "/en/student-welcome-guide/", disclaimer: "Answers come straight from this website." },
|
||||||
|
mk: { title: "Прашај MSOS", open: "Прашај MSOS", placeholder: "Постави прашање…",
|
||||||
|
send: "Испрати", close: "Затвори",
|
||||||
|
greeting: "Здраво! 👋 Прашај ме било што за студирање во Словенија или за MSOS и ќе те упатам до вистинската страница.",
|
||||||
|
found: "Еве што најдов:", more: "Прочитај повеќе",
|
||||||
|
none: "Не најдов јасен одговор. Пробај го Водичот за студенти или пиши на info@msosorg.com.",
|
||||||
|
guideUrl: "/mk/student-welcome-guide/", disclaimer: "Одговорите доаѓаат директно од оваа страница." },
|
||||||
|
si: { title: "Vprašaj MSOS", open: "Vprašaj MSOS", placeholder: "Zastavi vprašanje…",
|
||||||
|
send: "Pošlji", close: "Zapri",
|
||||||
|
greeting: "Živjo! 👋 Vprašaj me karkoli o študiju v Sloveniji ali o MSOS in usmeril te bom na pravo stran.",
|
||||||
|
found: "Tole sem našel:", more: "Preberi več",
|
||||||
|
none: "Nisem našel jasnega odgovora. Poglej Vodnik za študente ali piši na info@msosorg.com.",
|
||||||
|
guideUrl: "/si/student-welcome-guide/", disclaimer: "Odgovori prihajajo neposredno s te spletne strani." }
|
||||||
|
}[LANG];
|
||||||
|
|
||||||
|
/* ---- curated short answers for common questions (checked before search).
|
||||||
|
EN is complete; MK/SI seed a few — machine-drafted, PROOFREAD before launch.
|
||||||
|
Add more freely: {k:[keywords], a:"short answer", u:"/lang/page/"} ---- */
|
||||||
|
var INTENTS = {
|
||||||
|
en: [
|
||||||
|
{ k: ["residence", "permit", "temporary", "stay"], u: "/en/student-welcome-guide/student-residence-permit/",
|
||||||
|
a: "You apply for a temporary residence permit for study (usually before or right after arrival). It takes several documents and steps and is valid ~1 year, then renewed." },
|
||||||
|
{ k: ["visa"], u: "/en/student-welcome-guide/student-residence-permit/",
|
||||||
|
a: "Non-EU students generally need a residence permit for study rather than a short visa. See the residence-permit guide for the documents and steps." },
|
||||||
|
{ k: ["cost", "living", "expenses", "budget", "money", "rent"], u: "/en/get-to-know-slovenia/",
|
||||||
|
a: "Monthly living costs depend on your city and housing. The guide breaks down rent, food, transport and student discounts." },
|
||||||
|
{ k: ["accommodation", "housing", "dorm", "apartment", "room", "student home"], u: "/en/student-welcome-guide/student-accommodation/",
|
||||||
|
a: "You can look at student dorms and private rentals. The accommodation guide explains how and where to search." },
|
||||||
|
{ k: ["english", "slovene", "slovenian", "language"], u: "/en/student-welcome-guide/",
|
||||||
|
a: "Some programmes are in English; many are in Slovene. Learning basic Slovene helps a lot with daily life and admin." },
|
||||||
|
{ k: ["work", "job", "part-time", "student work"], u: "/en/student-welcome-guide/",
|
||||||
|
a: "Students can work part-time through student work ('študentsko delo'). The guide covers how it works alongside studies." },
|
||||||
|
{ k: ["boni", "benefits", "discount", "meal", "subsidised"], u: "/en/student-welcome-guide/",
|
||||||
|
a: "Students get subsidised meals ('boni') and many discounts. See the guide for how to register and use them." },
|
||||||
|
{ k: ["tuition", "fees", "scholarship", "funding", "ad futura"], u: "/en/student-welcome-guide/application-deadlines/",
|
||||||
|
a: "Tuition varies by programme and status; scholarships like Ad Futura exist. Check deadlines and funding in the guide." },
|
||||||
|
{ k: ["bank", "account", "iban"], u: "/en/blog/how-to-open-slovenian-bank-account/",
|
||||||
|
a: "Opening a Slovenian bank account is straightforward with your documents. The blog post walks through it step by step." },
|
||||||
|
{ k: ["enrol", "enrolment", "evš", "evs", "apply", "application", "admission"], u: "/en/student-welcome-guide/evs-application-guide/",
|
||||||
|
a: "You apply through the eVŠ portal. The eVŠ guide shows exactly how to submit your application." },
|
||||||
|
{ k: ["arrival", "checklist", "first", "when i arrive", "moving"], u: "/en/student-welcome-guide/arrival-checklist/",
|
||||||
|
a: "There's a first-weeks arrival checklist (registration, permit, bank, health, etc.) to keep you on track." },
|
||||||
|
{ k: ["member", "join", "membership", "become"], u: "/en/become-a-member/",
|
||||||
|
a: "You can join in a couple of minutes — students and supporters both welcome. Use the Become a member form." },
|
||||||
|
{ k: ["support", "donate", "donation", "sponsor", "help"], u: "/en/support/",
|
||||||
|
a: "You can support MSOS by bank transfer, sponsorship or partnership. See the Support page for details." },
|
||||||
|
{ k: ["contact", "email", "reach", "get in touch"], u: "/en/legal/",
|
||||||
|
a: "You can reach MSOS at info@msosorg.com. Official details are on the Official information page." }
|
||||||
|
],
|
||||||
|
mk: [
|
||||||
|
{ k: ["дозвол", "престој", "виза"], u: "/mk/student-welcome-guide/student-residence-permit/",
|
||||||
|
a: "Аплицираш за дозвола за привремен престој за студирање. Потребни се неколку документи и чекори; важи околу 1 година." },
|
||||||
|
{ k: ["член", "зачлен", "приклуч"], u: "/mk/become-a-member/",
|
||||||
|
a: "Можеш да се зачлениш за неколку минути — добредојдени се и студенти и поддржувачи." },
|
||||||
|
{ k: ["поддрш", "донац", "донир"], u: "/mk/support/",
|
||||||
|
a: "Можеш да го поддржиш MSOS преку банкарски трансфер, спонзорство или партнерство. Види ја страницата Поддршка." },
|
||||||
|
{ k: ["сместув", "стан", "дом"], u: "/mk/student-welcome-guide/student-accommodation/",
|
||||||
|
a: "Можеш да бараш студентски домови или приватно сместување. Водичот објаснува како и каде." },
|
||||||
|
{ k: ["контакт", "е-пошта", "мејл"], u: "/mk/legal/",
|
||||||
|
a: "Контактирај го MSOS на info@msosorg.com. Официјалните податоци се на страницата Официјални информации." }
|
||||||
|
],
|
||||||
|
si: [
|
||||||
|
{ k: ["dovoljenje", "prebivanje", "vizum", "bivanje"], u: "/si/student-welcome-guide/student-residence-permit/",
|
||||||
|
a: "Zaprosiš za dovoljenje za začasno prebivanje zaradi študija. Potrebnih je nekaj dokumentov in korakov; velja približno 1 leto." },
|
||||||
|
{ k: ["član", "včlan", "pridruž"], u: "/si/become-a-member/",
|
||||||
|
a: "Včlaniš se lahko v nekaj minutah — dobrodošli so študenti in podporniki." },
|
||||||
|
{ k: ["podpri", "donacij", "donir"], u: "/si/support/",
|
||||||
|
a: "MSOS lahko podpreš z bančnim nakazilom, sponzorstvom ali partnerstvom. Glej stran Podpri." },
|
||||||
|
{ k: ["nastanit", "stanovanje", "dom", "soba"], u: "/si/student-welcome-guide/student-accommodation/",
|
||||||
|
a: "Iščeš lahko študentske domove ali zasebne najeme. Vodnik pojasni, kako in kje." },
|
||||||
|
{ k: ["kontakt", "e-pošta", "mail"], u: "/si/legal/",
|
||||||
|
a: "MSOS dosežeš na info@msosorg.com. Uradni podatki so na strani Uradni podatki." }
|
||||||
|
]
|
||||||
|
}[LANG] || [];
|
||||||
|
|
||||||
|
/* ---- text normalization: lowercase + fold Latin diacritics (č→c…),
|
||||||
|
keep Cyrillic. Tokenize on non-letter/digit (Unicode-aware). ---- */
|
||||||
|
function norm(s) {
|
||||||
|
s = (s || "").toLowerCase();
|
||||||
|
try { s = s.normalize("NFD").replace(/[̀-ͯ]/g, ""); } catch (e) {}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
function tokens(s) {
|
||||||
|
var out = [], m = norm(s).match(/[\p{L}\p{N}]+/gu);
|
||||||
|
if (m) for (var i = 0; i < m.length; i++) if (m[i].length > 1) out.push(m[i]);
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
// Question/filler words in EN + MK + SI; removed from queries so the
|
||||||
|
// meaningful terms (e.g. "ohrid", "permit") drive the ranking.
|
||||||
|
var STOP = (function () {
|
||||||
|
var w = ("the a an of to in on for and or is are be was were do does did how what " +
|
||||||
|
"when where why who which can could would should will my your our we they it this " +
|
||||||
|
"that these those with at as by from about into over out up down me you i us them " +
|
||||||
|
"have has had need want please get got give tell show find help hi hello hey thanks " +
|
||||||
|
"kako kaj kje kdaj zakaj kdo kateri ali je so bo bi na za in ali da li mi me ti to ta " +
|
||||||
|
"te tega se z s v iz pri od do imam imate zelim moram lahko prosim zivjo pozdravljeni " +
|
||||||
|
"kako sto dali koi koga kade zosto koj koja e se na vo za i ili so da li mi me ti nie " +
|
||||||
|
"toa ova imam sakam treba moze prosim zdravo ").split(/\s+/);
|
||||||
|
var o = {}; for (var i = 0; i < w.length; i++) if (w[i]) o[w[i]] = 1; return o;
|
||||||
|
})();
|
||||||
|
|
||||||
|
/* ---- tiny BM25 search over the lazily-loaded index ---- */
|
||||||
|
var INDEX = null, DF = null, AVGLEN = 0, ready = false, loading = false;
|
||||||
|
|
||||||
|
function loadIndex() {
|
||||||
|
if (ready || loading) return Promise.resolve();
|
||||||
|
loading = true;
|
||||||
|
return fetch("/assistant/index-" + LANG + ".json")
|
||||||
|
.then(function (r) { return r.json(); })
|
||||||
|
.then(function (data) {
|
||||||
|
INDEX = data; DF = {}; var total = 0;
|
||||||
|
for (var i = 0; i < INDEX.length; i++) {
|
||||||
|
var c = INDEX[i];
|
||||||
|
c._t = tokens(c.x + " " + c.h + " " + c.t);
|
||||||
|
c._len = c._t.length; total += c._len;
|
||||||
|
var seen = {};
|
||||||
|
for (var j = 0; j < c._t.length; j++) {
|
||||||
|
var w = c._t[j];
|
||||||
|
if (!seen[w]) { seen[w] = 1; DF[w] = (DF[w] || 0) + 1; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
AVGLEN = total / Math.max(INDEX.length, 1);
|
||||||
|
ready = true; loading = false;
|
||||||
|
})
|
||||||
|
.catch(function () { loading = false; });
|
||||||
|
}
|
||||||
|
|
||||||
|
function search(query, k) {
|
||||||
|
if (!ready) return [];
|
||||||
|
var q0 = tokens(query); if (!q0.length) return [];
|
||||||
|
var N = INDEX.length, k1 = 1.5, b = 0.75, scored = [];
|
||||||
|
// Drop stopwords + very common terms so rare, meaningful words win.
|
||||||
|
var q = q0.filter(function (t) { return !STOP[t] && (!DF[t] || DF[t] / N <= 0.4); });
|
||||||
|
if (!q.length) q = q0.filter(function (t) { return !STOP[t]; });
|
||||||
|
if (!q.length) q = q0;
|
||||||
|
for (var i = 0; i < N; i++) {
|
||||||
|
var c = INDEX[i], score = 0, tf = {};
|
||||||
|
for (var j = 0; j < c._t.length; j++) tf[c._t[j]] = (tf[c._t[j]] || 0) + 1;
|
||||||
|
for (var t = 0; t < q.length; t++) {
|
||||||
|
var term = q[t], f = tf[term]; if (!f) continue;
|
||||||
|
var idf = Math.log(1 + (N - DF[term] + 0.5) / (DF[term] + 0.5));
|
||||||
|
score += idf * (f * (k1 + 1)) / (f + k1 * (1 - b + b * c._len / AVGLEN));
|
||||||
|
}
|
||||||
|
// boost when the query hits the heading/title
|
||||||
|
var hn = norm(c.h + " " + c.t);
|
||||||
|
for (var h = 0; h < q.length; h++) if (hn.indexOf(q[h]) >= 0) score += 0.6;
|
||||||
|
if (score > 0) scored.push([score, c]);
|
||||||
|
}
|
||||||
|
scored.sort(function (a, b) { return b[0] - a[0]; });
|
||||||
|
return scored.slice(0, k || 3).map(function (s) { return s[1]; });
|
||||||
|
}
|
||||||
|
|
||||||
|
function matchIntent(query) {
|
||||||
|
var q = norm(query), best = null, bestHits = 0;
|
||||||
|
for (var i = 0; i < INTENTS.length; i++) {
|
||||||
|
var hits = 0;
|
||||||
|
for (var j = 0; j < INTENTS[i].k.length; j++)
|
||||||
|
if (q.indexOf(norm(INTENTS[i].k[j])) >= 0) hits++;
|
||||||
|
if (hits > bestHits) { bestHits = hits; best = INTENTS[i]; }
|
||||||
|
}
|
||||||
|
return bestHits > 0 ? best : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---- snippet: ~180 chars of a chunk, trimmed to a sentence ---- */
|
||||||
|
function snippet(c) {
|
||||||
|
var x = c.x;
|
||||||
|
var lead = c.h && x.indexOf(c.h) === 0 ? x.slice(c.h.length).replace(/^[.\s]+/, "") : x;
|
||||||
|
if (lead.length > 200) lead = lead.slice(0, 200).replace(/\s+\S*$/, "") + "…";
|
||||||
|
return lead;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ========================= UI ========================= */
|
||||||
|
var esc = function (s) { return String(s == null ? "" : s)
|
||||||
|
.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">")
|
||||||
|
.replace(/"/g, """).replace(/'/g, "'"); };
|
||||||
|
|
||||||
|
var root, panel, log, input, launch, opened = false;
|
||||||
|
|
||||||
|
function bubble(text, who, extraHTML) {
|
||||||
|
var b = document.createElement("div");
|
||||||
|
b.className = "msa-msg msa-" + who;
|
||||||
|
b.innerHTML = '<div class="msa-bubble">' + text + (extraHTML || "") + "</div>";
|
||||||
|
log.appendChild(b);
|
||||||
|
log.scrollTop = log.scrollHeight;
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
|
function answer(query) {
|
||||||
|
bubble(esc(query), "user");
|
||||||
|
var typing = bubble("…", "bot");
|
||||||
|
Promise.resolve(ready ? null : loadIndex()).then(function () {
|
||||||
|
typing.remove();
|
||||||
|
var intent = matchIntent(query);
|
||||||
|
var hits = search(query, 3);
|
||||||
|
if (intent) {
|
||||||
|
var extra = '<a class="msa-link" href="' + esc(intent.u) + '">' + esc(UI.more) + ' →</a>';
|
||||||
|
bubble(esc(intent.a), "bot", extra);
|
||||||
|
// offer one more related page from search if different
|
||||||
|
var extraHit = hits.filter(function (c) { return c.u !== intent.u; })[0];
|
||||||
|
if (extraHit) bubble('<span class="msa-also">' + esc(UI.found) + '</span> ' +
|
||||||
|
esc(extraHit.h) + ' <a class="msa-link" href="' + esc(extraHit.u) + '">' + esc(UI.more) + ' →</a>', "bot");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (hits.length) {
|
||||||
|
bubble('<span class="msa-also">' + esc(UI.found) + '</span>', "bot");
|
||||||
|
hits.forEach(function (c) {
|
||||||
|
bubble('<strong>' + esc(c.h) + '</strong><br>' + esc(snippet(c)) +
|
||||||
|
'<br><a class="msa-link" href="' + esc(c.u) + '">' + esc(UI.more) + ' →</a>', "bot");
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
bubble(esc(UI.none) + ' <a class="msa-link" href="' + esc(UI.guideUrl) + '">' + esc(UI.more) + ' →</a>', "bot");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function open() {
|
||||||
|
opened = true; root.classList.add("msa-open");
|
||||||
|
panel.setAttribute("aria-hidden", "false");
|
||||||
|
launch.setAttribute("aria-expanded", "true");
|
||||||
|
loadIndex();
|
||||||
|
if (!log.childNodes.length) bubble(esc(UI.greeting), "bot");
|
||||||
|
setTimeout(function () { input.focus(); }, 50);
|
||||||
|
}
|
||||||
|
function close() {
|
||||||
|
opened = false; root.classList.remove("msa-open");
|
||||||
|
panel.setAttribute("aria-hidden", "true");
|
||||||
|
launch.setAttribute("aria-expanded", "false");
|
||||||
|
launch.focus();
|
||||||
|
}
|
||||||
|
function submit() {
|
||||||
|
var q = input.value.trim(); if (!q) return;
|
||||||
|
input.value = ""; answer(q);
|
||||||
|
}
|
||||||
|
|
||||||
|
function build() {
|
||||||
|
root = document.createElement("div");
|
||||||
|
root.className = "msa-root"; root.setAttribute("data-msa", "1");
|
||||||
|
root.innerHTML =
|
||||||
|
'<button class="msa-launch" aria-expanded="false" aria-controls="msa-panel" aria-label="' + esc(UI.open) + '">' +
|
||||||
|
'<i class="fas fa-comment-dots" aria-hidden="true"></i><span>' + esc(UI.open) + '</span></button>' +
|
||||||
|
'<section class="msa-panel" id="msa-panel" role="dialog" aria-label="' + esc(UI.title) + '" aria-hidden="true">' +
|
||||||
|
'<header class="msa-head"><span>' + esc(UI.title) + '</span>' +
|
||||||
|
'<button class="msa-x" aria-label="' + esc(UI.close) + '">×</button></header>' +
|
||||||
|
'<div class="msa-log" role="log" aria-live="polite"></div>' +
|
||||||
|
'<form class="msa-form"><input class="msa-input" type="text" autocomplete="off" ' +
|
||||||
|
'placeholder="' + esc(UI.placeholder) + '" aria-label="' + esc(UI.placeholder) + '">' +
|
||||||
|
'<button class="msa-send" type="submit" aria-label="' + esc(UI.send) + '"><i class="fas fa-paper-plane" aria-hidden="true"></i></button>' +
|
||||||
|
'</form>' +
|
||||||
|
'<p class="msa-foot">' + esc(UI.disclaimer) + '</p>' +
|
||||||
|
'</section>';
|
||||||
|
document.body.appendChild(root);
|
||||||
|
panel = root.querySelector(".msa-panel");
|
||||||
|
log = root.querySelector(".msa-log");
|
||||||
|
input = root.querySelector(".msa-input");
|
||||||
|
launch = root.querySelector(".msa-launch");
|
||||||
|
launch.addEventListener("click", function () { opened ? close() : open(); });
|
||||||
|
root.querySelector(".msa-x").addEventListener("click", close);
|
||||||
|
root.querySelector(".msa-form").addEventListener("submit", function (e) { e.preventDefault(); submit(); });
|
||||||
|
document.addEventListener("keydown", function (e) { if (e.key === "Escape" && opened) close(); });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.readyState !== "loading") build();
|
||||||
|
else document.addEventListener("DOMContentLoaded", build);
|
||||||
|
})();
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[{"u":"/en/about-us/","t":"Our Team, Mission, Vision & Core Values","h":"Our Team, Mission, Vision & Core Values","x":"Our Team, Mission, Vision & Core Values. MSOS is more than an organization - it is the energy of the team behind it. Our members are the heart and driving force that inspires us, writing this story…","lang":"en"},{"u":"/en/about-us/","t":"Our Team, Mission, Vision & Core Values","h":"Our core values","x":"Our core values. Our shared values keep us connected and guide us as one team.","lang":"en"},{"u":"/en/about-us/","t":"Our Team, Mission, Vision & Core Values","h":"Volunteer spirit","x":"Volunteer spirit. The strength of MSOS comes from giving our time and energy selflessly. Every project, event, and idea in MSOS is built on the hard work of our amazing volunteers. Our volunteer spirit is a testament to the dedication, passion, and collaborative energy of our community and the reason why we grow stronger together.","lang":"en"},{"u":"/en/about-us/","t":"Our Team, Mission, Vision & Core Values","h":"Solidarity & care for each other","x":"Solidarity & care for each other. We are more than a group of students, but a family. We look after one another and support each other not just with studies, but also with everyday challenges. We are here to listen, help, and celebrate successes together. It's about giving without expecting anything in return and creating a safe, warm, and uplifting environment where everyone feels they belong.","lang":"en"},{"u":"/en/about-us/","t":"Our Team, Mission, Vision & Core Values","h":"Love for our roots & ambition for the future","x":"Love for our roots & ambition for the future. We are proud of where we come from and carry our Macedonian heritage with us, while striving for a brighter future. Our roots give us strength, and our ambition pushes us forward. Our ambition drives us to be professional, innovative, and influential leaders and role models in our host country.","lang":"en"},{"u":"/en/about-us/","t":"Our Team, Mission, Vision & Core Values","h":"Have any questions?","x":"Have any questions?. Can't find the answer you're looking for? Please chat to our friendly team.","lang":"en"},{"u":"/en/become-a-member/","t":"Become a member","h":"Become a member","x":"Become a member. Join MSOS and find your people in Slovenia. Meet students, attend events, get support and help create projects across the Macedonian student community.","lang":"en"},{"u":"/en/become-a-member/","t":"Become a member","h":"Why become a member?","x":"Why become a member?. Real events, real friendships Find your people Meet Macedonian students across Slovenia and build friendships outside the classroom. Feel supported Get practical help, local knowledge and a community that understands studying abroad. Join memorable events Social evenings, cultural events, sports, trips, workshops and student gatherings. Build experience Develop skills through volunteering, communication, project work and event organisation. Create something meaningful Bring ideas, join projects and help shape activities for the community. Grow your network Meet students, ","lang":"en"},{"u":"/en/become-a-member/","t":"Become a member","h":"Find your people","x":"Find your people. Meet Macedonian students across Slovenia and build friendships outside the classroom.","lang":"en"},{"u":"/en/become-a-member/","t":"Become a member","h":"Feel supported","x":"Feel supported. Get practical help, local knowledge and a community that understands studying abroad.","lang":"en"},{"u":"/en/become-a-member/","t":"Become a member","h":"Join memorable events","x":"Join memorable events. Social evenings, cultural events, sports, trips, workshops and student gatherings.","lang":"en"},{"u":"/en/become-a-member/","t":"Become a member","h":"Build experience","x":"Build experience. Develop skills through volunteering, communication, project work and event organisation.","lang":"en"},{"u":"/en/become-a-member/","t":"Become a member","h":"Create something meaningful","x":"Create something meaningful. Bring ideas, join projects and help shape activities for the community.","lang":"en"},{"u":"/en/become-a-member/","t":"Become a member","h":"Grow your network","x":"Grow your network. Meet students, alumni, professionals, institutions and partners.","lang":"en"},{"u":"/en/become-a-member/","t":"Become a member","h":"Feel at home away from home","x":"Feel at home away from home. Belong to a community where you never have to explain where you come from.","lang":"en"},{"u":"/en/become-a-member/","t":"Become a member","h":"MSOS in numbers","x":"MSOS in numbers. 0 active members 0 events and activities 0 participants 0 partners Figures to confirm before launch.","lang":"en"},{"u":"/en/become-a-member/","t":"Become a member","h":"There is more than one way to be part of MSOS","x":"There is more than one way to be part of MSOS. You do not need to organise events or lead to belong. Join in the way that fits you. Stay connected Receive updates and know whLine truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[{"u":"/mk/about-us/","t":"Нашиот тим, мисија, визија и вредности - МСОС","h":"Нашиот тим, мисија, визија и вредности - МСОС","x":"Нашиот тим, мисија, визија и вредности - МСОС. МСОС е повеќе од организација - тоа е енергијата на тимот зад неа. Нашите членови се срцето и движечката сила што нè инспирира, пишувајќи ја оваа приказна и…","lang":"mk"},{"u":"/mk/about-us/","t":"Нашиот тим, мисија, визија и вредности - МСОС","h":"Нашите основни вредности","x":"Нашите основни вредности. Нашите заеднички вредности нè држат поврзани и нè водат како еден тим.","lang":"mk"},{"u":"/mk/about-us/","t":"Нашиот тим, мисија, визија и вредности - МСОС","h":"Волонтерски дух","x":"Волонтерски дух. Силата на МСОС доаѓа од несебичното давање на нашето време и енергија. Секој проект, настан и идеја во МСОС е изградена врз напорната работа на нашите неверојатни волонтери. Нашиот волонтерски дух е доказ за посветеноста, страста и заедничката енергија на нашата заедница и причината зошто заедно стануваме посилни.","lang":"mk"},{"u":"/mk/about-us/","t":"Нашиот тим, мисија, визија и вредности - МСОС","h":"Солидарност и грижа еден за друг","x":"Солидарност и грижа еден за друг. Ние сме повеќе од група студенти, ние сме семејство. Се грижиме еден за друг и се поддржуваме меѓусебно не само со студиите, туку и со секојдневните предизвици. Тука сме да слушаме, помагаме и да ги славиме успесите заедно. Станува збор за давање без да очекуваме ништо за возврат и создавање на безбедна, топла и охрабрувачка средина каде што секој се чувствува дека припаѓа.","lang":"mk"},{"u":"/mk/about-us/","t":"Нашиот тим, мисија, визија и вредности - МСОС","h":"Љубов кон нашите корени и амбиција за иднината","x":"Љубов кон нашите корени и амбиција за иднината. Гордеемe се со тоа од каде доаѓаме и го носиме нашето македонско наследство со нас, додека се стремиме кон посветла иднина. Нашите корени ни даваат сила, а нашата амбиција нè турка напред. Нашата амбиција нè тера да бидеме професионални, иновативни и влијателни лидери и примери за углед во нашата земја домаќин.","lang":"mk"},{"u":"/mk/about-us/","t":"Нашиот тим, мисија, визија и вредности - МСОС","h":"Имате какви било прашања?","x":"Имате какви било прашања?. Не можете да го најдете одговорот што го барате? Разговарајте со нашиот пријателски тим.","lang":"mk"},{"u":"/mk/become-a-member/","t":"Стани член","h":"Стани член","x":"Стани член. Придружете се на МСОС и најдете ги вашите луѓе во Словенија. Запознајте студенти, посетувајте настани, добијте поддршка и создавајте проекти во македонската студентска заедница.","lang":"mk"},{"u":"/mk/become-a-member/","t":"Стани член","h":"Зошто да станеш член?","x":"Зошто да станеш член?. Вистински настани, вистински пријателства Најди ги своите луѓе Запознај македонски студенти низ Словенија и создади пријателства надвор од предавалната. Почувствувај поддршка Добиј практична помош, локално знаење и заедница што разбира што значи студирање во странсLine truncated
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[{"u":"/si/about-us/","t":"Naša ekipa, poslanstvo, vizija in vrednote","h":"Naša ekipa, poslanstvo, vizija in vrednote","x":"Naša ekipa, poslanstvo, vizija in vrednote. MSOS je več kot le organizacija - je energija ekipe, ki stoji za njo. Naši člani so srce in gonilna sila, ki nas navdihuje, piše to zgodbo in oblikuje…","lang":"si"},{"u":"/si/about-us/","t":"Naša ekipa, poslanstvo, vizija in vrednote","h":"Naše temeljne vrednote","x":"Naše temeljne vrednote. Naše skupne vrednote nas povezujejo in nas vodijo kot eno ekipo.","lang":"si"},{"u":"/si/about-us/","t":"Naša ekipa, poslanstvo, vizija in vrednote","h":"Prostovoljski duh","x":"Prostovoljski duh. Moč MSOS izhaja iz nesebičnega dajanja našega časa in energije. Vsak projekt, dogodek in ideja v MSOS temelji na trdem delu naših čudovitih prostovoljcev. Naš prostovoljski duh je dokaz predanosti, strasti in sodelovalne energije naše skupnosti ter razlog, zakaj skupaj rastemo močnejši.","lang":"si"},{"u":"/si/about-us/","t":"Naša ekipa, poslanstvo, vizija in vrednote","h":"Solidarnost in skrb drug za drugega","x":"Solidarnost in skrb drug za drugega. Smo več kot le skupina študentov, smo družina. Skrbimo drug za drugega in se podpiramo ne le pri študiju, temveč tudi pri vsakodnevnih izzivih. Tu smo, da prisluhnemo, pomagamo in skupaj praznujemo uspehe. Gre za dajanje brez pričakovanja povračila in ustvarjanje varnega, toplega in spodbudnega okolja, kjer se vsak počuti, da pripada.","lang":"si"},{"u":"/si/about-us/","t":"Naša ekipa, poslanstvo, vizija in vrednote","h":"Ljubezen do naših korenin in ambicija za prihodnost","x":"Ljubezen do naših korenin in ambicija za prihodnost. Ponosni smo na to, od kod prihajamo, in s seboj nosimo našo makedonsko dediščino, hkrati pa si prizadevamo za svetlejšo prihodnost. Naše korenine nam dajejo moč, naša ambicija pa nas žene naprej. Naša ambicija nas spodbuja, da smo profesionalni, inovativni in vplivni voditelji ter vzorniki v naši gostiteljski državi.","lang":"si"},{"u":"/si/about-us/","t":"Naša ekipa, poslanstvo, vizija in vrednote","h":"Imate kakšno vprašanje?","x":"Imate kakšno vprašanje?. Ne najdete odgovora, ki ga iščete? Poklepetajte z našo prijazno ekipo.","lang":"si"},{"u":"/si/become-a-member/","t":"Postani član","h":"Postani član","x":"Postani član. Pridružite se MSOS in najdite svoje ljudi v Sloveniji. Spoznajte študente, obiskujte dogodke, prejmite podporo in soustvarjajte projekte makedonske študentske skupnosti.","lang":"si"},{"u":"/si/become-a-member/","t":"Postani član","h":"Zakaj postati član?","x":"Zakaj postati član?. Pravi dogodki, prava prijateljstva Najdi svoje ljudi Spoznaj makedonske študente po vsej Sloveniji in stkaj prijateljstva zunaj predavalnice. Občuti podporo Dobi praktično pomoč, lokalno znanje in skupnost, ki razume študij v tujini. Obišči nepozabne dogodke Družabni večeri, kulturni dogodki, šport, izleti, delavnice in študentska srečanja. Pridobi izkušnje Razvijaj veščine skozi prostovoljstvo, komunikacijo, projektno delo in organizacijo dogodkov. Ustvari nekaj pomembnega Prispevaj ideje, pridruži se projektom in soustvarjaj dejavnosti za skupnost. Razširi svojo mrežo Sp","lang":"si"},{"u":"/si/become-a-member/","t":"Postani član","h":"Najdi svoje ljudi","x":"Najdi svoje ljudi. Spoznaj makedonske študente po vsej Sloveniji in stkaj prijateljstva zunaj predavalnice.","lang":"si"},{"u":"/si/become-a-member/","t":"Postani član","h":"Občuti podporo","x":"Občuti podporo. Dobi praktično pomoč, lokalno znanje in skupnost, ki razume študij v tujini.","lang":"si"},{"u":"/si/become-a-member/","t":"Postani član","h":"Obišči nepozabne dogodke","x":"Obišči nepozabne dogodke. Družabni večeri, kulturni dogodki, šport, izleti, delavnice in študentska srečanja.","lang":"si"},{"u":"/si/become-a-member/","t":"Postani član","h":"Pridobi izkušnje","x":"Pridobi izkušnje. Razvijaj veščine skozi prostovoljstvo, komunikacijo, projektno delo in organizacijo dogodkov.","lang":"si"},{"u":"/si/become-a-member/","t":"Postani član","h":"Ustvari nekaj pomembnega","x":"Ustvari nekaj pomembnega. Prispevaj ideje, pridruži se projektom in soustvarjaj dejavnosti za skupnost.","lang":"si"},{"u":"/si/become-a-member/","t":"Postani član","h":"Razširi svojo mrežo","x":"Razširi svojo mrežo. Spoznaj študente, alumne, strokovnjake, ustanove in partnerje.","lang":"si"},{"u":"/si/become-a-member/","t":"Postani član","h":"Počuti se kot doma","x":"Počuti se kot doma. Pripadaj skupnosti, kjer ti nikoli ni treba pojasnjevati, od kod prihajaš.","lang":"si"},{"u":"/si/become-a-member/","t":"Postani član","h":"MSOS v številkah","x":"MSOS v številkah. 0 aktivnih članov 0 dogodkov in dejavnosti 0 udeležencev 0 partnerjev Podatki za potrditev pred objavo.","lang":"si"},{"u":"/si/become-a-member/","t":"Postani član","h":"Obstaja več načinov, da si del MSOS","x":"Obstaja več načinov, da si del MSOS. Ni ti treba organiLine truncated
|
||||||
@@ -422,5 +422,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -607,5 +607,7 @@
|
|||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
<script src="../../member-form.js"></script>
|
<script src="../../member-form.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -314,5 +314,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -529,5 +529,7 @@
|
|||||||
</footer>
|
</footer>
|
||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -382,5 +382,7 @@
|
|||||||
</footer>
|
</footer>
|
||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -391,5 +391,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -397,5 +397,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -364,5 +364,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -397,5 +397,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -389,5 +389,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -379,5 +379,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -376,5 +376,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -381,5 +381,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -364,5 +364,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -377,5 +377,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -371,5 +371,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -398,5 +398,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -383,5 +383,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -354,5 +354,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -530,5 +530,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../main.js"></script>
|
<script src="../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -289,5 +289,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -406,5 +406,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -469,5 +469,7 @@
|
|||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
<script src="../../news-filter.js"></script>
|
<script src="../../news-filter.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -295,5 +295,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -357,5 +357,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -378,5 +378,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -320,5 +320,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -331,5 +331,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -425,5 +425,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -412,5 +412,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -436,5 +436,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -439,5 +439,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -398,5 +398,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -360,5 +360,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -346,5 +346,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -358,5 +358,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -355,5 +355,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -356,5 +356,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -353,5 +353,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -371,5 +371,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -383,5 +383,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -374,5 +374,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -399,5 +399,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -348,5 +348,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -366,5 +366,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -409,5 +409,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -513,5 +513,7 @@
|
|||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
<script src="../../student-guide.js"></script>
|
<script src="../../student-guide.js"></script>
|
||||||
<script src="../../guide-feedback.js"></script>
|
<script src="../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -360,5 +360,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -432,5 +432,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -261,5 +261,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../my-route.js"></script>
|
<script src="../../../my-route.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -387,5 +387,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -404,5 +404,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -349,5 +349,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -358,5 +358,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -398,5 +398,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -398,5 +398,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -368,5 +368,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -356,5 +356,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -393,5 +393,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -410,5 +410,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -377,5 +377,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -351,5 +351,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -383,5 +383,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -353,5 +353,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -380,5 +380,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -347,5 +347,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -418,5 +418,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
<script src="../../../guide-feedback.js"></script>
|
<script src="../../../guide-feedback.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -423,5 +423,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -503,5 +503,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -422,5 +422,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -607,5 +607,7 @@
|
|||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
<script src="../../member-form.js"></script>
|
<script src="../../member-form.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -314,5 +314,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -529,5 +529,7 @@
|
|||||||
</footer>
|
</footer>
|
||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -382,5 +382,7 @@
|
|||||||
</footer>
|
</footer>
|
||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -391,5 +391,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -397,5 +397,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -364,5 +364,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -397,5 +397,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -389,5 +389,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -379,5 +379,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -376,5 +376,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -381,5 +381,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -364,5 +364,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -377,5 +377,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -367,5 +367,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -398,5 +398,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -383,5 +383,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -354,5 +354,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -533,5 +533,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../main.js"></script>
|
<script src="../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -289,5 +289,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -406,5 +406,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -469,5 +469,7 @@
|
|||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
<script src="../../news-filter.js"></script>
|
<script src="../../news-filter.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -295,5 +295,7 @@
|
|||||||
|
|
||||||
<script src="../../../main.js"></script>
|
<script src="../../../main.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -357,5 +357,7 @@
|
|||||||
<!-- END_FOOTER -->
|
<!-- END_FOOTER -->
|
||||||
|
|
||||||
<script src="../../main.js"></script>
|
<script src="../../main.js"></script>
|
||||||
|
<link rel="stylesheet" href="/assistant.css">
|
||||||
|
<script src="/assistant.js" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Loaded 100 of 214 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user