Multi-day accumulated fixes: tag dispatch, session/pooling correctness, SPA rollout, jetc compiler

JetCore engine (Tag.cpp/.h, Global.cpp/.h, __*.cpp tag classes):
- Numerous __mysql.cpp connection-pooling correctness fixes (stale
  result sets, double-indirection sessionid bugs, field caching,
  pool keying) and a session-registration-before-connection-confirmed
  ordering fix (dangling pointer on a failed connect)
- Tag.cpp: large body of fixes to the tag-dispatch/container-scanning
  logic (bare-name fallback, database aliasing, single-quote handling,
  @-prefix session variable resolution, TAGDEF caching, nested split-tag
  scanning for if/while/until/ifrow so an inner one doesn't corrupt an
  outer one's own boundary scan) plus the process-first rendering
  order fix (a <process> now runs before <checksession>/page
  resolution, fixing a real "blank page after successful login" bug)
- Global.h/.cpp: added imapSessions (parallel to the existing __mysql*
  session map) for the new <imap> tag family
- __whiledir.cpp/__include.cpp: caching and directory-name-aliasing
  fixes
- __call.cpp/.h: fixed a dangling-pointer bug
- __write.cpp: fixed an O_WRONLY-only open that couldn't create a new
  file
- __ifrow.cpp/__sql.cpp: fixed the same sessionid double-indirection
  bug __mysql.cpp had (resolveKeyword's result was being used as a map
  key lookup instead of the resolved value itself)

jetc compiler (jetc/JetParser.cpp/.h, JetCodegen.cpp/.h, JetAST.h,
jetc.cpp, build-shared.sh, build-compiled.sh):
- Parser fixes: inline <include>, nested-quote handling, void-tag
  recognition
- Codegen fixes and expanded AST support
- build-shared.sh: atomic rename into place for a freshly-built .jtc
  (a live server dlopen()ing the same path mid-rebuild was corrupting
  its own already-mapped view of the old file) and a staleness check
  so a cached JetCore .o doesn't silently keep serving yesterday's
  fixes forever
- Added -lssl to both build scripts' link lines (needed once the new
  <imap> tag's client-side TLS code existed - previously nothing in
  this codebase used OpenSSL's SSL/TLS client API, only libcrypto)

Site content (jetc/barant-site/): SPA (fetch-and-swap navigation)
rollout across essentially every .page/.jet/.section/.tag/.proc/.method
file - dynamic-content fixes, fragment-mode stripping, native
$[@name] session variables replacing older mechanisms, and this
session's own checkout.page redesign, login start-param redirect fix,
and per-page side-menu (menu.bar/$[PAGE].menu) refresh support.
Completed the earlier main.css/control.css move from assets/ to
assets/images/ (git still showed the old paths as tracked-but-deleted
until now).

Deliberately left out of this commit: dozens of .pre-<description>-
<date> manual backup files (this session's and earlier ones' own
before/after snapshots, not meant for permanent history), compiled
.jtc build outputs, ad hoc test binaries and scripts under jetc/
(login_asan, wcwc_test, optest2_bin, etc.), and jetc/__pycache__/ -
none of these are meant to be tracked; a .gitignore covering them
would be worth adding separately.
This commit is contained in:
Brad Arant committed 2026-09-03 05:20:48 +00:00
1 parent 54b6e522f9
commit b0cadc3f08
162 files changed
+3567 -2887

No files matched your search

+19 -1
View File
@@ -8,7 +8,7 @@
namespace jetc {
enum class NodeKind {
TEXT, VAR, SET, IF, FOR, WHILE, FALLBACK
TEXT, VAR, SET, IF, FOR, WHILE, FALLBACK, TAGDEF, CONTAINER_SLOT
};
enum class CondMode { VALUES, EXPR };
@@ -55,6 +55,24 @@ namespace jetc {
std::string forScope;
std::vector<NodePtr> body; // also used by WHILE
// TAGDEF - a top-level <tag name="X">...</tag> custom-tag definition
// (only recognized at the file's true top level - see Parser::topLevel;
// one nested inside another tag's own definition body stays FALLBACK,
// unchanged). tagDefName is already lowercased, matching __tag.cpp's
// own registration key. tagDefBody is the compiled definition body
// (may itself contain CONTAINER_SLOT nodes for <container> markers,
// and FALLBACK leaves for anything still unsupported). rawSpan
// (shared with FALLBACK, below) still holds the exact original source
// text - codegen still emits the same raw interpretSpan-based
// registration into global.tags alongside the new compiled fast path,
// so anything that reaches this tag some other way keeps working
// exactly as it does today.
std::string tagDefName;
std::vector<NodePtr> tagDefBody;
// CONTAINER_SLOT - a <container> marker (see Tag::renderContainer) -
// a pure leaf, no extra fields.
// FALLBACK - exact original source text of one unsupported tag
std::string rawSpan;
};
+174 -104
View File
@@ -49,124 +49,181 @@ namespace jetc {
return expr.c_str();
}
void Codegen::emitBody(const std::vector<NodePtr> &nodes, int indent) {
for (auto &n : nodes) emitNode(n, indent);
void Codegen::emitBody(const std::vector<NodePtr> &nodes, int indent, std::ostringstream &target) {
for (auto &n : nodes) emitNode(n, indent, target);
}
void Codegen::emitNode(const NodePtr &n, int indent) {
void Codegen::emitNode(const NodePtr &n, int indent, std::ostringstream &target) {
std::string I = ind(indent);
switch (n->kind) {
case NodeKind::TEXT: {
if (n->text.empty()) break;
out << I << "out << " << cstr(n->text) << ";\n";
target << I << "out << " << cstr(n->text) << ";\n";
break;
}
case NodeKind::VAR: {
out << I << "{ coreutils::ZString v(" << cstr(n->varText) << "); out << scope.getVariable(v, true); }\n";
target << I << "{ coreutils::ZString v(" << cstr(n->varText) << "); out << scope.getVariable(v, true); }\n";
break;
}
case NodeKind::SET: {
std::string k = id("set_");
out << I << "{\n";
out << I << " scope.keywords[\"" << k << "name\"] = " << cstr(n->setName) << ";\n";
out << I << " scope.keywords[\"" << k << "scope\"] = " << cstr(n->setScope) << ";\n";
out << I << " coreutils::MString val;\n";
target << I << "{\n";
target << I << " scope.keywords[\"" << k << "name\"] = " << cstr(n->setName) << ";\n";
target << I << " scope.keywords[\"" << k << "scope\"] = " << cstr(n->setScope) << ";\n";
target << I << " coreutils::MString val;\n";
if (n->setHasExpr) {
out << I << " scope.keywords[\"" << k << "expr\"] = " << cstr(n->setExpr) << ";\n";
out << I << " val = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).string;\n";
target << I << " scope.keywords[\"" << k << "expr\"] = " << cstr(n->setExpr) << ";\n";
target << I << " val = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).string;\n";
} else {
out << I << " scope.keywords[\"" << k << "value\"] = " << cstr(n->setHasValue ? n->setValue : std::string()) << ";\n";
out << I << " val = scope.resolveKeyword(\"" << k << "value\");\n";
target << I << " scope.keywords[\"" << k << "value\"] = " << cstr(n->setHasValue ? n->setValue : std::string()) << ";\n";
target << I << " val = scope.resolveKeyword(\"" << k << "value\");\n";
}
out << I << " scope.assignVariable(scope.resolveKeyword(\"" << k << "name\"), val, scope.resolveKeyword(\"" << k << "scope\"));\n";
out << I << "}\n";
target << I << " scope.assignVariable(scope.resolveKeyword(\"" << k << "name\"), val, scope.resolveKeyword(\"" << k << "scope\"));\n";
target << I << "}\n";
break;
}
case NodeKind::IF: {
std::string k = id("if_");
out << I << "{\n";
out << I << " bool cond;\n";
target << I << "{\n";
target << I << " bool cond;\n";
if (n->cond.mode == CondMode::EXPR) {
out << I << " scope.keywords[\"" << k << "expr\"] = " << cstr(n->cond.expr) << ";\n";
out << I << " cond = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).boolean;\n";
target << I << " scope.keywords[\"" << k << "expr\"] = " << cstr(n->cond.expr) << ";\n";
target << I << " cond = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).boolean;\n";
} else {
out << I << " scope.keywords[\"" << k << "value1\"] = " << cstr(n->cond.value1) << ";\n";
out << I << " scope.keywords[\"" << k << "value2\"] = " << cstr(n->cond.value2) << ";\n";
out << I << " int rc = scope.resolveKeyword(\"" << k << "value1\").compare(scope.resolveKeyword(\"" << k << "value2\"));\n";
out << I << " cond = (" << staticTypeOp(n->cond.type, "rc") << ");\n";
target << I << " scope.keywords[\"" << k << "value1\"] = " << cstr(n->cond.value1) << ";\n";
target << I << " scope.keywords[\"" << k << "value2\"] = " << cstr(n->cond.value2) << ";\n";
target << I << " int rc = scope.resolveKeyword(\"" << k << "value1\").compare(scope.resolveKeyword(\"" << k << "value2\"));\n";
target << I << " cond = (" << staticTypeOp(n->cond.type, "rc") << ");\n";
}
out << I << " if (cond) {\n";
emitBody(n->thenBody, indent + 2);
target << I << " if (cond) {\n";
emitBody(n->thenBody, indent + 2, target);
if (n->hasElse) {
out << I << " } else {\n";
emitBody(n->elseBody, indent + 2);
target << I << " } else {\n";
emitBody(n->elseBody, indent + 2, target);
}
out << I << " }\n";
out << I << "}\n";
target << I << " }\n";
target << I << "}\n";
break;
}
case NodeKind::FOR: {
std::string k = id("for_");
out << I << "{\n";
out << I << " scope.keywords[\"" << k << "start\"] = " << cstr(n->forHasStart ? n->forStart : std::string("0")) << ";\n";
out << I << " scope.keywords[\"" << k << "end\"] = " << cstr(n->forEnd) << ";\n";
out << I << " scope.keywords[\"" << k << "step\"] = " << cstr(n->forStep) << ";\n";
out << I << " double ix = scope.resolveKeyword(\"" << k << "start\").asDouble();\n";
target << I << "{\n";
target << I << " scope.keywords[\"" << k << "start\"] = " << cstr(n->forHasStart ? n->forStart : std::string("0")) << ";\n";
target << I << " scope.keywords[\"" << k << "end\"] = " << cstr(n->forEnd) << ";\n";
target << I << " scope.keywords[\"" << k << "step\"] = " << cstr(n->forStep) << ";\n";
target << I << " double ix = scope.resolveKeyword(\"" << k << "start\").asDouble();\n";
if (n->forHasName) {
out << I << " scope.keywords[\"" << k << "name\"] = " << cstr(n->forName) << ";\n";
out << I << " scope.keywords[\"" << k << "scope\"] = " << cstr(n->forScope) << ";\n";
target << I << " scope.keywords[\"" << k << "name\"] = " << cstr(n->forName) << ";\n";
target << I << " scope.keywords[\"" << k << "scope\"] = " << cstr(n->forScope) << ";\n";
}
out << I << " for (; ix <= scope.resolveKeyword(\"" << k << "end\").asDouble(); ix += scope.resolveKeyword(\"" << k << "step\").asDouble()) {\n";
target << I << " for (; ix <= scope.resolveKeyword(\"" << k << "end\").asDouble(); ix += scope.resolveKeyword(\"" << k << "step\").asDouble()) {\n";
if (n->forHasName) {
out << I << " coreutils::MString nameSel = scope.resolveKeyword(\"" << k << "name\");\n";
out << I << " coreutils::MString scopeSel = scope.resolveKeyword(\"" << k << "scope\");\n";
out << I << " if ((scopeSel == \"\") || (scopeSel == \"global\")) global.variables[nameSel] = ix;\n";
out << I << " else if (scopeSel == \"local\") scope.local->variables[nameSel] = ix;\n";
out << I << " else if (scopeSel == \"parent\") scope.parent->local->variables[nameSel] = ix;\n";
out << I << " else throw coreutils::Exception(\"scope value is not valid.\");\n";
target << I << " coreutils::MString nameSel = scope.resolveKeyword(\"" << k << "name\");\n";
target << I << " coreutils::MString scopeSel = scope.resolveKeyword(\"" << k << "scope\");\n";
target << I << " if ((scopeSel == \"\") || (scopeSel == \"global\")) global.variables[nameSel] = ix;\n";
target << I << " else if (scopeSel == \"local\") scope.local->variables[nameSel] = ix;\n";
target << I << " else if (scopeSel == \"parent\") scope.parent->local->variables[nameSel] = ix;\n";
target << I << " else throw coreutils::Exception(\"scope value is not valid.\");\n";
}
emitBody(n->body, indent + 2);
out << I << " }\n";
out << I << "}\n";
emitBody(n->body, indent + 2, target);
target << I << " }\n";
target << I << "}\n";
break;
}
case NodeKind::WHILE: {
std::string k = id("while_");
out << I << "{\n";
out << I << " bool cond;\n";
target << I << "{\n";
target << I << " bool cond;\n";
if (n->cond.mode == CondMode::EXPR) {
out << I << " scope.keywords[\"" << k << "expr\"] = " << cstr(n->cond.expr) << ";\n";
out << I << " coreutils::MString exprSaved = scope.keywords[\"" << k << "expr\"];\n";
out << I << " cond = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).boolean;\n";
out << I << " while (cond) {\n";
emitBody(n->body, indent + 2);
out << I << " scope.keywords[\"" << k << "expr\"].reset();\n";
out << I << " scope.keywords[\"" << k << "expr\"] = exprSaved;\n";
out << I << " cond = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).boolean;\n";
out << I << " }\n";
target << I << " scope.keywords[\"" << k << "expr\"] = " << cstr(n->cond.expr) << ";\n";
target << I << " coreutils::MString exprSaved = scope.keywords[\"" << k << "expr\"];\n";
target << I << " cond = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).boolean;\n";
target << I << " while (cond) {\n";
emitBody(n->body, indent + 2, target);
target << I << " scope.keywords[\"" << k << "expr\"].reset();\n";
target << I << " scope.keywords[\"" << k << "expr\"] = exprSaved;\n";
target << I << " cond = jet::Operand(scope.keywords[\"" << k << "expr\"], scope).boolean;\n";
target << I << " }\n";
} else {
out << I << " scope.keywords[\"" << k << "value1\"] = " << cstr(n->cond.value1) << ";\n";
out << I << " scope.keywords[\"" << k << "value2\"] = " << cstr(n->cond.value2) << ";\n";
out << I << " int rc = scope.resolveKeyword(\"" << k << "value1\").compare(scope.resolveKeyword(\"" << k << "value2\"));\n";
out << I << " cond = (" << staticTypeOp(n->cond.type, "rc") << ");\n";
out << I << " while (cond) {\n";
emitBody(n->body, indent + 2);
out << I << " int rc2 = scope.resolveKeyword(\"" << k << "value1\").compare(scope.resolveKeyword(\"" << k << "value2\"));\n";
out << I << " cond = (" << staticTypeOp(n->cond.type, "rc2") << ");\n";
out << I << " }\n";
target << I << " scope.keywords[\"" << k << "value1\"] = " << cstr(n->cond.value1) << ";\n";
target << I << " scope.keywords[\"" << k << "value2\"] = " << cstr(n->cond.value2) << ";\n";
target << I << " int rc = scope.resolveKeyword(\"" << k << "value1\").compare(scope.resolveKeyword(\"" << k << "value2\"));\n";
target << I << " cond = (" << staticTypeOp(n->cond.type, "rc") << ");\n";
target << I << " while (cond) {\n";
emitBody(n->body, indent + 2, target);
target << I << " int rc2 = scope.resolveKeyword(\"" << k << "value1\").compare(scope.resolveKeyword(\"" << k << "value2\"));\n";
target << I << " cond = (" << staticTypeOp(n->cond.type, "rc2") << ");\n";
target << I << " }\n";
}
out << I << "}\n";
target << I << "}\n";
break;
}
case NodeKind::FALLBACK: {
out << I << "{ coreutils::ZString span(" << cstr(n->rawSpan) << "); scope.interpretSpan(span, out); }\n";
target << I << "{ coreutils::ZString span(" << cstr(n->rawSpan) << "); scope.interpretSpan(span, out); }\n";
break;
}
case NodeKind::CONTAINER_SLOT: {
// Reuses the interpreter's own <container> scope-walking logic
// verbatim (see Tag::renderContainer) rather than re-deriving
// it - this is exactly what the runtime's own <container>
// dispatch does when it's reached via interpretSpan, just
// without the text-scanning step to get there.
target << I << "scope.renderContainer(out);\n";
break;
}
case NodeKind::TAGDEF: {
// Codegen can still fail for a node that parsed successfully -
// e.g. an <if>/<while> whose type= isn't one of eq/ne/lt/le/gt/ge
// (staticTypeOp's own check - real legacy content occasionally
// has one of these sitting in a branch that's never actually
// reached at runtime either, so there's nothing to "correctly"
// compile). Parsing this definition's body already succeeded
// (see parseTagDef's own try/catch for that stage) or this node
// wouldn't exist as TAGDEF at all - so mirror that same
// graceful-degradation approach here for the emit stage: try
// building the compiled function into a throwaway stream first,
// and only splice it into tagDefFuncs (and register the
// compiledTags fast path) if that fully succeeds. A failure
// here just means this one definition stays interpreted,
// unchanged - zero risk to the rest of the file.
std::string funcName = "jetc_tagdef_" + id("");
std::ostringstream trial;
bool compiledOk = true;
try {
trial << "static void " << funcName << "(jet::Tag &scope, coreutils::MString &out) {\n";
emitBody(n->tagDefBody, 1, trial);
trial << "}\n\n";
} catch (const std::exception &) {
compiledOk = false;
}
// Emitted in place, at this TAGDEF's original position in
// program flow - matches exactly what FALLBACK would have
// emitted for this same <tag name="X">...</tag> span, so
// global.tags["x"] still gets populated as before (needed as a
// correctness fallback: any invocation this compiler doesn't
// itself recognize - e.g. reached through content this pass
// never compiled - still resolves it exactly as it always has).
target << I << "{ coreutils::ZString span(" << cstr(n->rawSpan) << "); scope.interpretSpan(span, out); }\n";
if (compiledOk) {
// The registration into compiledTags right after is the only
// new behavior beyond the raw registration above - a pure
// additive fast path __dotag checks first (see __dotag.cpp);
// a miss there falls through to the now-unchanged interpreted
// path, which is exactly what happens when compiledOk is
// false here too.
tagDefFuncs << trial.str();
target << I << "global.compiledTags[coreutils::MString(" << cstr(n->tagDefName) << ")] = &" << funcName << ";\n";
}
break;
}
}
@@ -177,6 +234,9 @@ namespace jetc {
const std::vector<ApiRoute> &apiRoutes, const std::string &apiSymbol) {
out.str("");
out.clear();
tagDefFuncs.str("");
tagDefFuncs.clear();
out << "// " << sourceFileComment << "\n";
out << "// Generated by jetc - DO NOT EDIT BY HAND.\n";
out << "#include \"Global.h\"\n";
@@ -187,51 +247,61 @@ namespace jetc {
out << "#include \"Exception.h\"\n";
out << "#include <iostream>\n\n";
// The entry function's own text is built into a separate stream so
// tagDefFuncs - populated as a SIDE EFFECT of the emitBody() call
// below, since TAGDEF nodes append to it as they're encountered -
// can be spliced in ahead of it. A compiled tag-definition function
// never needs to be forward-declared for anything defined before it
// in program order (nothing upstream calls it directly - see
// __dotag.cpp's runtime lookup instead), so this ordering is purely
// for readability, not a correctness requirement.
std::ostringstream body;
if (sharedMode) {
if (!apiRoutes.empty()) {
// A plain C struct, not any CoreUtils/JetCore type - this is the
// one piece of the plugin ABI a host loader needs to know about
// independent of the rest of this same-ABI C++ boundary.
out << "struct JetApiRoute { const char *method; const char *path; };\n";
out << "extern \"C\" const JetApiRoute *" << apiSymbol << "(int *count) {\n";
out << " static const JetApiRoute routes[] = {\n";
body << "struct JetApiRoute { const char *method; const char *path; };\n";
body << "extern \"C\" const JetApiRoute *" << apiSymbol << "(int *count) {\n";
body << " static const JetApiRoute routes[] = {\n";
for (auto &r : apiRoutes)
out << " { " << cstr(r.method) << ", " << cstr(r.path) << " },\n";
out << " };\n";
out << " *count = " << apiRoutes.size() << ";\n";
out << " return routes;\n";
out << "}\n\n";
body << " { " << cstr(r.method) << ", " << cstr(r.path) << " },\n";
body << " };\n";
body << " *count = " << apiRoutes.size() << ";\n";
body << " return routes;\n";
body << "}\n\n";
}
out << "extern \"C\" void " << entrySymbol << "(jet::Global &global, coreutils::MString &out) {\n";
out << " coreutils::ZString jetc_empty(\"\");\n";
out << " coreutils::MString jetc_scopeOut;\n";
out << " jet::Tag scope(jetc_empty, jetc_scopeOut, global, NULL, NULL);\n";
emitBody(top, 1);
out << "}\n";
return out.str();
body << "extern \"C\" void " << entrySymbol << "(jet::Global &global, coreutils::MString &out) {\n";
body << " coreutils::ZString jetc_empty(\"\");\n";
body << " coreutils::MString jetc_scopeOut;\n";
body << " jet::Tag scope(jetc_empty, jetc_scopeOut, global, NULL, NULL);\n";
emitBody(top, 1, body);
body << "}\n";
return out.str() + tagDefFuncs.str() + body.str();
}
out << "static void jetc_render(jet::Global &global, coreutils::MString &out) {\n";
out << " coreutils::ZString jetc_empty(\"\");\n";
out << " coreutils::MString jetc_scopeOut;\n";
out << " jet::Tag scope(jetc_empty, jetc_scopeOut, global, NULL, NULL);\n";
emitBody(top, 1);
out << "}\n\n";
out << "int main(int argc, char **argv, char **envp) {\n";
out << " jet::Global global(envp);\n";
out << " coreutils::MString out;\n";
out << " try {\n";
out << " jetc_render(global, out);\n";
out << " global.outputHeaders();\n";
out << " std::cout << out;\n";
out << " } catch(coreutils::Exception e) {\n";
out << " std::cout << out;\n";
out << " std::cout << \"\\n----- Error: \" << e.text << std::endl;\n";
out << " return 1;\n";
out << " }\n";
out << " return 0;\n";
out << "}\n";
return out.str();
body << "static void jetc_render(jet::Global &global, coreutils::MString &out) {\n";
body << " coreutils::ZString jetc_empty(\"\");\n";
body << " coreutils::MString jetc_scopeOut;\n";
body << " jet::Tag scope(jetc_empty, jetc_scopeOut, global, NULL, NULL);\n";
emitBody(top, 1, body);
body << "}\n\n";
body << "int main(int argc, char **argv, char **envp) {\n";
body << " jet::Global global(envp);\n";
body << " coreutils::MString out;\n";
body << " try {\n";
body << " jetc_render(global, out);\n";
body << " global.outputHeaders();\n";
body << " std::cout << out;\n";
body << " } catch(coreutils::Exception e) {\n";
body << " std::cout << out;\n";
body << " std::cout << \"\\n----- Error: \" << e.text << std::endl;\n";
body << " return 1;\n";
body << " }\n";
body << " return 0;\n";
body << "}\n";
return out.str() + tagDefFuncs.str() + body.str();
}
}
+19 -2
View File
@@ -62,11 +62,28 @@ namespace jetc {
private:
std::ostringstream out;
// Free functions generated for compiled <tag name="X"> definitions
// (see the TAGDEF case in emitNode) accumulate here, in the order
// encountered, and are spliced into the final output ahead of the
// entry function (see generate()) - C++ doesn't care about
// definition order within one translation unit as long as nothing
// outside of it needs a forward declaration, but keeping them
// grouped together ahead of the entry point makes the generated
// file easier to read/debug than interleaving them positionally.
std::ostringstream tagDefFuncs;
size_t nextId = 0;
std::string id(const std::string &prefix) { return prefix + std::to_string(nextId++) + "_"; }
void emitBody(const std::vector<NodePtr> &nodes, int indent);
void emitNode(const NodePtr &n, int indent);
// target is the stream this node's statements are written to - `out`
// for everything at the top level or nested inside ordinary control
// flow (IF/FOR/WHILE bodies stay in the same stream as their
// enclosing scope), but a TAGDEF's own body is rendered into a
// fresh stream to become a separate generated function (see
// emitNode's TAGDEF case) rather than being inlined in place.
void emitBody(const std::vector<NodePtr> &nodes, int indent, std::ostringstream &target);
void emitNode(const NodePtr &n, int indent, std::ostringstream &target);
static std::string ind(int indent);
static std::string cstr(const std::string &raw); // C++ string-literal escape
static const char *staticTypeOp(const std::string &type, const char *rcVar);
+299 -30
View File
@@ -1,6 +1,11 @@
#include "JetParser.h"
#include <cctype>
#include <stdexcept>
#include <set>
#include <cstdio>
#include <fstream>
#include <sstream>
#include <cstdio>
namespace jetc {
@@ -29,37 +34,148 @@ namespace jetc {
return s.substr(start, p - start);
}
namespace {
// jet-1.4 (the language this parser also has to accept, alongside
// real 2.0 source) was fully case-insensitive on tag names - the
// production source mixes case freely, even within one tag's own
// body (e.g. <SET ...> and <set ...> side by side). Tag names are
// matched case-insensitively throughout this parser for that
// reason; nothing else (attribute values, text content) is
// affected by this helper.
bool ciEquals(const char *a, size_t alen, const std::string &b) {
if (alen != b.size()) return false;
for (size_t i = 0; i < alen; i++)
if (std::tolower((unsigned char)a[i]) != std::tolower((unsigned char)b[i]))
return false;
return true;
}
}
bool Parser::matchTagOpen(const std::string &name, size_t at) const {
if (s.compare(at, 1, "<") != 0) return false;
size_t p = at + 1;
size_t nstart = p;
while (p < s.size() && isNameChar(s[p])) p++;
if (s.compare(nstart, p - nstart, name) != 0) return false;
if (!ciEquals(s.data() + nstart, p - nstart, name)) return false;
if (p >= s.size()) return false;
char c = s[p];
return c == ' ' || c == '>' || c == '/';
}
bool Parser::matchTagClose(const std::string &name, size_t at) const {
std::string closer = "</" + name + ">";
return s.compare(at, closer.size(), closer) == 0;
if (s.compare(at, 2, "</") != 0) return false;
size_t p = at + 2;
size_t nstart = p;
while (p < s.size() && isNameChar(s[p])) p++;
if (!ciEquals(s.data() + nstart, p - nstart, name)) return false;
return p < s.size() && s[p] == '>';
}
bool Parser::skipOpenTag(size_t &p) const {
namespace {
// jet-1.4's real parser knew which tags never take a body (its own
// "void element" list) - kept here, ahead of skipOpenTag/
// skipEmbeddedTag/parseFallback, since all of them need it.
bool isVoidTag(const std::string &name) {
static const std::set<std::string> voidTags = {
// jet's own built-ins that never take a body. exclude is
// NOT here - __exclude.cpp's own constructor requires a
// real body (throws "exclude must have a container"
// otherwise), it was previously miscategorized as void.
"set", "include", "cookie", "header", "read", "write",
"call", "system", "dump",
// <container> (see parseContainerSlot/Tag::renderContainer) -
// real content always writes it as a bare marker with no
// separate closing tag, even when it carries its own
// attributes (e.g. SESSIONCTL.tag's own
// <CONTAINER EVAL="NO">) - without this it was previously only
// reachable via the generic FALLBACK path (scanBody would
// incorrectly scan forward for a "</container>" that never
// exists, consuming unrelated following content).
"container",
// standard HTML5 void elements - real 1.4-era content (e.g.
// SESSIONCTL.tag) writes these the classic HTML way too,
// bare '>' and never a closing tag.
"br", "img", "input", "hr", "meta", "link", "area", "base",
"col", "embed", "source", "track", "wbr",
// <else> is a marker inside an <if>/<while>/<until> body
// (scanBody's own lookForElse handles it at the top level) -
// it never has its own close tag, so when it shows up
// embedded (inside a quoted attribute or another tag's
// attribute region, same as <if> does in <linkbutton>) it
// needs the same void treatment.
"else"
};
std::string lower = name;
for (char &c : lower) c = (char)std::tolower((unsigned char)c);
return voidTags.count(lower) != 0;
}
}
// Real 1.4 content nests real jet tags in two places a plain
// quote/angle-bracket scanner can't handle on its own:
// 1. Inside a quoted attribute value - SESSIONCTL.tag's <linkbutton>
// has HREF="javascript: <IF VALUE1="..." VALUE2="" TYPE=NE> ...
// </IF> ... " - the outer string and the embedded tag's own
// attributes reuse the same quote character with no escaping.
// 2. Inside another tag's OWN opening-tag attribute region, before
// its closing '>' - linkbutton's <A ...> has a conditional
// <if value1="#[CLASS]" value2="" type="ne">CLASS="#[CLASS]"</if>
// sitting between its other attributes and its own '>' - the
// literal '>' that ends the embedded <if ...>'s OWN opening tag
// would otherwise be mistaken for <A>'s closing '>'.
// skipEmbeddedTag() skips one such nested tag as a whole unit -
// its own attributes (recursing through skipOpenTag, so an embedded
// tag's embedded tag works too) and, if it isn't a void tag and wasn't
// self-closed, its real body up through its own matching close tag
// (via the same matchTagOpen/matchTagClose depth-tracking scanBody
// uses at the top level). skipOpenTag's own attribute scan and
// skipQuotedValue both call this for anything that looks like a
// nested tag, instead of treating it as ordinary content.
void Parser::skipEmbeddedTag(size_t &p) {
size_t nameStart = p + 1;
size_t nameEnd = nameStart;
while (nameEnd < s.size() && isNameChar(s[nameEnd])) nameEnd++;
std::string tagName = s.substr(nameStart, nameEnd - nameStart);
bool selfClosing = skipOpenTag(p);
if (!selfClosing && !isVoidTag(tagName)) {
auto span = scanBody(p, tagName, false);
p = span.first + 3 + tagName.size();
}
}
void Parser::skipQuotedValue(size_t &p) {
p++; // opening '"'
while (p < s.size()) {
if (s[p] == '"') { p++; return; }
if (s[p] == '\\' && p + 1 < s.size()) { p += 2; continue; }
if (s[p] == '<' && p + 1 < s.size() && isNameChar(s[p + 1])) {
skipEmbeddedTag(p);
continue;
}
if (s[p] == '<' && s.compare(p, 2, "</") == 0) {
p += 2;
while (p < s.size() && isNameChar(s[p])) p++;
if (p < s.size() && s[p] == '>') p++;
continue;
}
p++;
}
}
bool Parser::skipOpenTag(size_t &p) {
p++; // '<'
while (p < s.size() && isNameChar(s[p])) p++;
while (p < s.size()) {
if (s[p] == '"') {
p++;
while (p < s.size() && s[p] != '"') {
if (s[p] == '\\' && p + 1 < s.size()) p++;
p++;
}
if (p < s.size()) p++;
skipQuotedValue(p);
continue;
}
if (s.compare(p, 2, "/>") == 0) { p += 2; return true; }
if (s[p] == '>') { p += 1; return false; }
if (s[p] == '<' && p + 1 < s.size() && isNameChar(s[p + 1])) {
skipEmbeddedTag(p);
continue;
}
p++;
}
throw std::runtime_error("jetc: unterminated tag near end of input");
@@ -74,14 +190,40 @@ namespace jetc {
if (starts(">")) { pos += 1; hasContainer = true; break; }
std::string aname = readName();
if (aname.empty()) throw std::runtime_error("jetc: malformed attribute near offset " + std::to_string(pos));
if (starts("=\"")) {
pos += 2;
if (starts("=")) {
pos += 1;
std::string val;
while (!eof() && s[pos] != '"') {
if (s[pos] == '\\' && pos + 1 < s.size()) { val += s[pos]; val += s[pos + 1]; pos += 2; continue; }
val += s[pos++];
if (!eof() && s[pos] == '"') {
pos++;
while (!eof() && s[pos] != '"') {
if (s[pos] == '\\' && pos + 1 < s.size()) { val += s[pos]; val += s[pos + 1]; pos += 2; continue; }
val += s[pos++];
}
if (!eof()) pos++; // closing quote
} else if (!eof() && s[pos] == '\'') {
// Single-quoted value - real 1.4 content writes both
// (SESSIONCTL.tag's own name='tmp_#[name]' alongside
// ordinary name="..." elsewhere in the same file).
pos++;
while (!eof() && s[pos] != '\'') {
if (s[pos] == '\\' && pos + 1 < s.size()) { val += s[pos]; val += s[pos + 1]; pos += 2; continue; }
val += s[pos++];
}
if (!eof()) pos++; // closing quote
} else {
// Unquoted bareword value - real 1.4 content writes this
// too (type=eq, format=tobrowser, TYPE=NE throughout
// SESSIONCTL.tag) - the runtime interpreter's own
// attribute scanning already tolerates it; jetc's own
// parser previously didn't, since nothing had ever
// recursively parsed a tag definition's own body deeply
// enough to reach one before (see parseTagDef). Runs to
// the next whitespace or the tag's own closing '>'/'/>' .
while (!eof() && !std::isspace((unsigned char)s[pos]) && s[pos] != '>' &&
!(s[pos] == '/' && pos + 1 < s.size() && s[pos + 1] == '>')) {
val += s[pos++];
}
}
if (!eof()) pos++; // closing quote
attrs[aname] = val;
}
}
@@ -126,7 +268,40 @@ namespace jetc {
}
std::vector<NodePtr> Parser::parseSub(size_t start, size_t end) {
Parser sub(s.substr(start, end - start));
// Always topLevel=false - an <if>/<for>/<while> body is never the
// file's true top level, regardless of what topLevel this Parser
// itself was constructed with (see parseTagDef/isVoidTag's doc
// comments - a <tag name="X"> found here stays FALLBACK, unchanged).
Parser sub(s.substr(start, end - start), baseDir, includeDepth, false);
return sub.parseNodes();
}
std::vector<NodePtr> Parser::parseInclude() {
pos += 8; // "<include"
bool hasContainer;
// <include> is always void, the same way <set> is (see parseSet) -
// real content writes it bare (<include file="X">, no explicit
// '/>'), which parseAttrs reports as hasContainer=true since it
// can't tell that apart from a real container tag on syntax alone.
auto attrs = parseAttrs(hasContainer);
(void)hasContainer;
auto it = attrs.find("file");
if (it == attrs.end())
throw std::runtime_error("jetc: <include> must have a file attribute.");
if (includeDepth > 32)
throw std::runtime_error("jetc: <include> depth exceeded (possible include cycle) resolving " + it->second);
std::string fullPath = baseDir.empty() ? it->second : baseDir + "/" + it->second;
std::ifstream in(fullPath);
if (!in)
throw std::runtime_error("jetc: <include> cannot open " + fullPath);
std::ostringstream ss;
ss << in.rdbuf();
// Inherits the includer's own topLevel - an <include> spliced in at
// the file's true top level reads as if its content were written
// inline there (see this method's own doc comment), so a <tag
// name="X"> defined in the included file is just as eligible for
// compilation as one written directly in the includer.
Parser sub(ss.str(), baseDir, includeDepth + 1, topLevel);
return sub.parseNodes();
}
@@ -146,21 +321,19 @@ namespace jetc {
}
NodePtr Parser::parseSet() {
size_t origStart = pos;
pos += 4; // "<set"
bool hasContainer;
auto attrs = parseAttrs(hasContainer);
if (hasContainer) {
// Container-form <set> (value comes from rendering nested content)
// isn't modeled by this prototype - fall back to full interpretation
// of the whole tag instead of failing to compile.
auto span = scanBody(pos, "set", false);
pos = span.first + 3 + 3; // "</set>"
auto n = std::make_shared<Node>();
n->kind = NodeKind::FALLBACK;
n->rawSpan = s.substr(origStart, pos - origStart);
return n;
}
// jet-1.4's <set name=... value=... expr=...> is always a plain
// attribute-based assignment - it never had a container/body form.
// Real 1.4 content (config.cfg, SESSIONCTL.tag, throughout) writes
// it with a bare closing '>' and no explicit </set>, which is
// syntactically indistinguishable from a (speculative, and per the
// comment this replaced, never actually implemented) 2.0
// container-form <set>...</set>. Since the container form was never
// real to begin with, <set> is always treated as self-closing here,
// matching 1.4's actual, exclusive behavior rather than guessing.
(void)hasContainer;
auto n = std::make_shared<Node>();
n->kind = NodeKind::SET;
n->setName = attrs.count("name") ? attrs["name"] : "";
@@ -246,7 +419,7 @@ namespace jetc {
std::string tagName = peekTagName(pos);
size_t p = pos;
bool selfClosing = skipOpenTag(p);
if (!selfClosing) {
if (!selfClosing && !isVoidTag(tagName)) {
auto span = scanBody(p, tagName, false);
p = span.first + 3 + tagName.size();
}
@@ -257,6 +430,94 @@ namespace jetc {
return n;
}
NodePtr Parser::parseTagDef() {
size_t origStart = pos;
pos += 4; // "<tag"
bool hasContainer;
auto attrs = parseAttrs(hasContainer);
std::string name = attrs.count("name") ? attrs["name"] : "";
// A dynamic name ($[...]/#[...]) or a body-less definition can't be
// (and, per __tag.cpp, isn't even valid as) a compiled definition -
// fall back to the exact same FALLBACK behavior as before rather
// than failing to compile. Real content always uses a literal name.
bool dynamicName = name.find("$[") != std::string::npos || name.find("#[") != std::string::npos;
if (!hasContainer || name.empty() || dynamicName) {
if (hasContainer) {
auto span = scanBody(pos, "tag", false);
pos = span.first + 3 + 3; // "</tag>"
}
auto n = std::make_shared<Node>();
n->kind = NodeKind::FALLBACK;
n->rawSpan = s.substr(origStart, pos - origStart);
return n;
}
std::string lowerName = name;
for (char &c : lowerName) c = (char)std::tolower((unsigned char)c);
auto span = scanBody(pos, "tag", false);
size_t closePos = span.first;
size_t afterClose = closePos + 3 + 3; // "</tag>"
// Best-effort: this compiler's own modeled grammar is a real subset
// of what the runtime interpreter tolerates (jet-1.4 content is
// lenient in ways this parser doesn't fully cover yet - e.g. a
// completely unrecognized bare tag like SESSIONCTL.tag's own
// <setcookie ...>, which the interpreter just echoes as literal
// text rather than treating as a real tag needing a close - see
// Tag.cpp's own final dispatch fallback). Rather than teach every
// such case to this parser up front, fall all the way back to the
// exact same FALLBACK behavior a pre-TAGDEF compiler would have
// produced for this whole span whenever the body can't be parsed -
// this tag definition simply isn't compiled (stays fully
// interpreted, unchanged), with zero risk to anything else in the
// file. pos is never mutated by the failed parseSub call itself
// (it operates on its own copied substring), so no explicit
// rewind is needed before falling through.
std::vector<NodePtr> body;
bool bodyOk = true;
try {
body = parseSub(pos, closePos);
} catch (const std::exception &) {
bodyOk = false;
}
if (!bodyOk) {
pos = afterClose;
auto n = std::make_shared<Node>();
n->kind = NodeKind::FALLBACK;
n->rawSpan = s.substr(origStart, pos - origStart);
return n;
}
pos = afterClose;
auto n = std::make_shared<Node>();
n->kind = NodeKind::TAGDEF;
n->tagDefName = lowerName;
n->tagDefBody = body;
// Exact original source text - codegen still emits the same
// interpretSpan-based raw registration into global.tags alongside
// the new compiled fast path (see JetCodegen's TAGDEF case), so
// anything that reaches this tag some other way (a nested/locally-
// scoped definition shadowing it, or interpreted content elsewhere)
// keeps working exactly as it does today.
n->rawSpan = s.substr(origStart, pos - origStart);
return n;
}
NodePtr Parser::parseContainerSlot() {
pos += 10; // "<container"
bool hasContainer;
auto attrs = parseAttrs(hasContainer);
// Attributes on <container> (eval=/name=/scope=, as real content
// sometimes writes) are not consulted by the interpreter's own
// <container> dispatch branch either (see Tag::renderContainer) -
// matching that exactly rather than inventing new behavior here.
(void)attrs;
(void)hasContainer;
auto n = std::make_shared<Node>();
n->kind = NodeKind::CONTAINER_SLOT;
return n;
}
std::vector<NodePtr> Parser::parseNodes() {
std::vector<NodePtr> nodes;
std::string textBuf;
@@ -287,6 +548,14 @@ namespace jetc {
if (matchTagOpen("if", pos)) { flush(); nodes.push_back(parseIf()); continue; }
if (matchTagOpen("for", pos)) { flush(); nodes.push_back(parseFor()); continue; }
if (matchTagOpen("while", pos)) { flush(); nodes.push_back(parseWhile()); continue; }
if (matchTagOpen("include", pos)) {
flush();
auto included = parseInclude();
nodes.insert(nodes.end(), included.begin(), included.end());
continue;
}
if (matchTagOpen("container", pos)) { flush(); nodes.push_back(parseContainerSlot()); continue; }
if (topLevel && matchTagOpen("tag", pos)) { flush(); nodes.push_back(parseTagDef()); continue; }
flush();
nodes.push_back(parseFallback());
continue;
+43 -2
View File
@@ -21,7 +21,19 @@ namespace jetc {
// gracefully instead of failing to compile.
class Parser {
public:
explicit Parser(const std::string &src) : s(src), pos(0) {}
// topLevel is false for any nested sub-parse (an <if>/<for>/<while>
// body, via parseSub) and true for the file's own top-level flow and
// for anything spliced in from an <include> (which inherits the
// includer's own topLevel, since it's meant to read as if written
// inline at that point - see parseInclude). Only used to decide
// whether a <tag name="X"> definition is eligible for compilation
// (see parseTagDef) - one found at topLevel==false (nested inside
// another construct) stays FALLBACK, unchanged, matching __tag.cpp's
// own locally-scoped-registration semantics that only a true
// top-level definition is guaranteed to always be registered by the
// time any invocation could reach it.
explicit Parser(const std::string &src, std::string baseDir = "", int includeDepth = 0, bool topLevel = true)
: s(src), pos(0), baseDir(baseDir), includeDepth(includeDepth), topLevel(topLevel) {}
std::vector<NodePtr> parseNodes();
@@ -29,6 +41,9 @@ namespace jetc {
std::string s;
size_t pos;
size_t nextId = 0;
std::string baseDir;
int includeDepth;
bool topLevel;
bool eof() const { return pos >= s.size(); }
bool starts(const std::string &lit) const;
@@ -42,7 +57,9 @@ namespace jetc {
// p points at '<' of some tag's opening; advances p past its '>' or
// "/>", skipping quoted attribute values. Returns true if self-closing.
bool skipOpenTag(size_t &p) const;
bool skipOpenTag(size_t &p);
void skipQuotedValue(size_t &p);
void skipEmbeddedTag(size_t &p);
std::map<std::string, std::string> parseAttrs(bool &hasContainer);
@@ -54,6 +71,15 @@ namespace jetc {
std::vector<NodePtr> parseSub(size_t start, size_t end);
// <include file="..."> is spliced in at compile time - read the
// referenced file (resolved relative to baseDir) and parse ITS
// content as if it had been written inline here, so everything in
// it (custom <tag> definitions included) goes through this real
// compiler, not the separate runtime interpreter (which has its own,
// independently-buggy nested-tag handling). Returns the parsed nodes
// to be spliced into the caller's own node list.
std::vector<NodePtr> parseInclude();
NodePtr parseVar();
NodePtr parseSet();
NodePtr parseIf();
@@ -61,6 +87,21 @@ namespace jetc {
NodePtr parseWhile();
NodePtr parseFallback();
// <tag name="X">...</tag> at true top level (see topLevel above) -
// compiles the definition body with a nested (topLevel=false) parse
// instead of falling back to raw text, so jetc can generate a real
// render function for it (see JetCodegen). Falls back to an ordinary
// FALLBACK node (same as today) if the definition has no container
// or no literal name= - degrades gracefully rather than failing to
// compile.
NodePtr parseTagDef();
// <container> (any case/attributes/closing style, always void - see
// isVoidTag) - a leaf node; the actual rendering logic lives in
// Tag::renderContainer, called from generated code exactly as the
// interpreter's own <container> dispatch calls it today.
NodePtr parseContainerSlot();
std::string newId(const std::string &prefix) { return prefix + std::to_string(nextId++) + "_"; }
};
-24
View File
@@ -1,24 +0,0 @@
.controlframe {background: #888;
padding: 5px 5px 15px 10px;
}
.vm {position: relative;
height: 55px;
}
.vmname {position: absolute;
left: 0px; top: 0px;
height: 55px;
}
.vmcover {position: absolute;
left: 15px;
top: 30px;
font: 12px 'Dot Matrix';
background: #bbb;
color: white;
border: 1pt solid white;
border-radius: 5px;
padding: 2px 10px 2px 10px;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 1.3 MiB

@@ -0,0 +1,26 @@
.controlframe {background: #16161c;
border: 1px solid rgba(197, 164, 90, 0.28);
border-radius: 3px;
padding: 5px 5px 15px 10px;
}
.vm {position: relative;
height: 55px;
}
.vmname {position: absolute;
left: 0px; top: 0px;
height: 55px;
}
.vmcover {position: absolute;
left: 15px;
top: 30px;
font: 12px 'Dot Matrix';
background: #101014;
color: #e3c47e;
border: 1px solid rgba(197, 164, 90, 0.4);
border-radius: 5px;
padding: 2px 10px 2px 10px;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

+690
View File
@@ -0,0 +1,690 @@
.rotate {
animation: rotation 1s infinite linear;
}
@keyframes rotation {
from {
transform: rotate(0deg);
}
to {
transform: rotate(359deg);
}
}
@font-face {
font-family: avenir;
src: url('https://barant.com/fonts/AvenirLTStd-Light.ttf');
}
@font-face {
font-family: source;
src: url('https://barant.com/fonts/jackinput.TTF');
}
@font-face {
font-family: exo2;
src: url('https://barant.com/fonts/Exo2-RegularCondensed.otf');
}
:root {
--bond-bg: #0a0a0d;
--bond-bg-2: #131318;
--bond-panel: #16161c;
--bond-panel-2: #1c1c24;
--bond-line: rgba(197, 164, 90, 0.28);
--bond-line-soft: rgba(255, 255, 255, 0.07);
--bond-gold: #c5a45a;
--bond-gold-bright: #e3c47e;
--bond-ice: #6fb8c9;
--bond-text: #e7e4dc;
--bond-text-dim: #8d8c92;
--bond-red: #a13a3a;
}
* { box-sizing: border-box; }
body {
background: radial-gradient(ellipse at top, #1a1a20 0%, #0a0a0d 60%, #060607 100%);
background-attachment: fixed;
font-family: exo2;
color: var(--bond-text);
margin: 10px 10px 10px 10px;
width: 98%;
}
a:link, a:visited { text-decoration: none; color: var(--bond-gold); }
a:hover { text-decoration: none; color: var(--bond-gold-bright); }
h1 {
font: 20pt exo2;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--bond-text);
text-shadow: 0 0 0.6em rgba(197, 164, 90, 0.25);
opacity: 0.95;
}
h2 {
font: 14pt exo2;
letter-spacing: 0.06em;
color: var(--bond-gold-bright);
}
h3 {
font: 12pt exo2;
letter-spacing: 0.05em;
color: var(--bond-text);
}
p { font-family: 8pt exo2; color: var(--bond-text); }
ul { font-family: 8pt exo2; }
li { font-family: 8pt exo2; color: var(--bond-text); }
.project_header {
background: linear-gradient(180deg, #1c1c24, #101014);
color: var(--bond-gold-bright);
padding: 5px;
font-weight: 400;
font-size: 14px;
border-bottom: 1px solid var(--bond-line);
}
.pageclass {
background: var(--bond-bg-2);
border-radius: 6px;
border: 1px solid var(--bond-line);
box-shadow: 0 0 0 1px rgba(0,0,0,0.6), 0 20px 60px rgba(0,0,0,0.65);
border-spacing: 0px;
padding: 0px;
max-width: 1050px;
min-width: 1050px;
margin: auto;
font-family: exo2;
font-size: 10pt;
color: var(--bond-text);
overflow: hidden;
}
input {
background: #101014;
color: var(--bond-text);
border: 1px solid var(--bond-line-soft);
font-family: exo2;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
padding: 2px 6px;
border-radius: 2px;
}
input:focus {
border-color: var(--bond-gold);
box-shadow: 0 0 0 1px rgba(197, 164, 90, 0.35);
}
select {
background: #101014;
color: var(--bond-text);
font-family: exo2;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
border: 1px solid var(--bond-line-soft);
padding: 1px 2px 1px 2px;
border-radius: 2px;
}
textarea.fieldinput {
background: #101014;
color: var(--bond-text);
resize: none;
font-family: exo2;
border: 1px solid var(--bond-line-soft);
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
padding: 2px 2px 2px 5px;
border-radius: 2px;
}
textarea.fieldinputerror {
background: #241213;
color: var(--bond-text);
resize: none;
font-family: exo2;
border: 1px solid var(--bond-red);
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
padding: 2px 2px 2px 5px;
border-radius: 2px;
}
.sectionframe {
position: relative;
font-family: exo2;
border: 1px solid var(--bond-line-soft);
font-size: 10pt;
margin: 3px;
background: var(--bond-panel);
padding: 0px;
border-radius: 3px;
}
.sectionframe:after{
content: '';
position: absolute;
top: 1px;
left: 1px;
width: calc(100% - 2px);
height: 1px;
background: var(--bond-line);
}
.sectionframecontents {
padding: 10px;
text-align: justify;
color: var(--bond-text);
border-top: 1px solid var(--bond-line-soft);
background-color: var(--bond-panel);
}
.sectionframeheading {
background: linear-gradient(180deg, #1c1c24, #131318);
color: var(--bond-gold-bright);
border-bottom: 1px solid var(--bond-line);
vertical-align: middle;
padding: 6px 10px;
margin: 0px;
font-family: 12pt avenir;
letter-spacing: 0.08em;
text-transform: uppercase;
font-size: 10pt;
border-radius: 3px 3px 0px 0px;
}
.sectionframeheading2 {
background: var(--bond-panel-2);
color: var(--bond-gold-bright);
font-family: exo2;
font-size: 20pt;
letter-spacing: 0.06em;
padding: 3px;
border-radius: 3px;
}
.heading {
background: linear-gradient(180deg, #131318, #0d0d10);
border-radius: 5px 5px 0px 0px;
border-bottom: 1px solid var(--bond-line);
max-height: 80px;
}
.entryform {
background: #232330;
padding: 6px;
margin: 0px;
border: 1px solid rgba(197, 164, 90, 0.5);
border-radius: 3px;
}
.entryform table {
font: 12px exo2;
background: transparent;
border: 0pt solid black;
color: var(--bond-text);
}
.footer {
background: linear-gradient(180deg, #0a0a0d, #000);
border-top: 1px solid var(--bond-line);
font: 8pt verdana;
letter-spacing: 0.05em;
color: var(--bond-gold);
text-align: center;
padding: 6px 0;
border-radius: 0px 0px 5px 5px;
}
.menubar {
background: #0a0a0d;
border-bottom: 1px solid var(--bond-line);
padding: 0px 0px 0px 0px;
margin: 0px;
}
.baritem {
background: transparent;
color: var(--bond-text-dim);
position: relative;
font-family: exo2;
font-weight: 600;
letter-spacing: 0.06em;
font-size: 8pt;
padding: 6px 10px;
margin: 6px 0px 0px 0px;
border: none;
border-bottom: 2px solid transparent;
border-radius: 0px;
transition: color 0.25s ease, border-color 0.25s ease;
}
.baritem:after{
content: none;
}
.baritemselected {
/* Deliberately styled to read as the same surface as the content
panel it opens into (matching background, gold border wrapping
only the top/sides) - the open bottom edge is the same color as
its own background rather than a hard line, so it visually reads
as "raised up out of the black bar, connected to the page below"
rather than just another highlighted nav item. */
background: var(--bond-panel);
color: var(--bond-gold-bright);
font-family: exo2;
font-weight: 600;
letter-spacing: 0.06em;
font-size: 8pt;
padding: 7px 10px 8px 10px;
margin: 4px 0px 0px 0px;
border: 1px solid var(--bond-gold);
border-bottom: 1px solid var(--bond-panel);
border-radius: 5px 5px 0px 0px;
box-shadow: 0 -2px 8px rgba(197, 164, 90, 0.18);
text-shadow: 0 0 0.5em rgba(197, 164, 90, 0.35);
}
.baritem:hover {
color: var(--bond-gold-bright);
border-bottom: 2px solid var(--bond-line);
transition: color 0.2s ease, border-color 0.2s ease;
}
.panel {
background: var(--bond-panel);
margin: 10px;
padding: 3px;
border: 1px solid var(--bond-line-soft);
border-radius: 3px;
}
.panel table {
font: 12px exo2;
padding: 5px;
background: var(--bond-panel-2);
border: 1px solid var(--bond-line-soft);
border-radius: 6px;
color: var(--bond-text);
}
.panel table th {
background: #101014;
color: var(--bond-gold-bright);
padding: 2px 3px 3px 3px;
border: 0pt;
letter-spacing: 0.04em;
}
.panel table td {
background: transparent;
color: var(--bond-text);
padding: 2px 3px 3px 3px;
border: 0pt;
}
.left {
text-align: right;
padding-left: 20px;
border-radius: 6px 0px 0px 6px;
}
.right {
border-radius: 0px 6px 6px 0px;
padding-right: 20px;
}
.featured { background: var(--bond-panel); }
.buttonbay {
width: 100%;
text-align: center;
}
.fieldinput {
font-family: exo2;
border-radius: 3px;
padding: 2px 2px 2px 5px;
border: 1px solid var(--bond-line-soft);
background: #101014;
color: var(--bond-text);
}
.fieldinputerror {
font-family: exo2;
border-radius: 3px;
padding: 2px 2px 2px 5px;
background: #241213;
border: 1px solid var(--bond-red);
color: var(--bond-text);
}
.fieldprompt {
font-size: 10pt;
text-align: right;
color: var(--bond-gold-bright);
background: transparent;
}
.message { font: bold 10pt verdana; color: #d97a7a; }
.collection_heading { font: bold 12pt verdana; color: var(--bond-gold-bright); }
.collection_text { font: 10pt verdana; color: var(--bond-text); }
.collection_tracks_background { font: 8pt bold verdana; color: var(--bond-text); background: #101014; }
.warning { font: 10pt verdana; background: #3a1414; color: #e0a0a0; text-align: justify; border: 1px solid var(--bond-red); }
.button {
position: relative;
display: inline-block;
font-size: 10pt;
font-weight: 600;
letter-spacing: 0.04em;
color: var(--bond-gold-bright);
border: 1px solid var(--bond-gold);
background: linear-gradient(180deg, #1c1c24, #131318);
padding: 2px 10px 3px 10px;
margin: 0px;
border-radius: 3px;
transition: box-shadow 0.2s ease, background 0.2s ease;
}
.button:hover {
box-shadow: 0 0 0.6em rgba(197, 164, 90, 0.35);
background: linear-gradient(180deg, #24242e, #1a1a20);
}
.button:after{
content: none;
}
.code {
font-family: source;
font-weight: 400;
font-size: 10pt;
border: 1px solid var(--bond-line-soft);
background: #101014;
color: var(--bond-gold-bright);
padding: 5px;
}
/* SPA content-swap fade transition */
#content {
transition: opacity 0.18s ease;
}
#content.spa-fading {
opacity: 0;
}
/* Shopping cart */
.cart-notice {
background: var(--bond-panel-2);
border: 1px solid var(--bond-line);
border-left: 3px solid var(--bond-gold);
color: var(--bond-text);
padding: 8px 12px;
margin: 0 0 10px 0;
border-radius: 3px;
font-size: 9pt;
}
.cart-wrap {
border: 1px solid var(--bond-line);
border-radius: 4px;
overflow: hidden;
background: var(--bond-panel);
}
.cart-header {
display: grid;
grid-template-columns: 1fr 90px 90px 100px 70px;
gap: 8px;
align-items: center;
padding: 8px 14px;
background: linear-gradient(180deg, #1c1c24, #131318);
border-bottom: 1px solid var(--bond-line);
color: var(--bond-gold-bright);
font-size: 8pt;
letter-spacing: 0.08em;
text-transform: uppercase;
font-weight: 600;
}
.cart-header .cart-col-price,
.cart-header .cart-col-qty,
.cart-header .cart-col-total {
text-align: right;
}
.cart-items {
max-height: 420px;
overflow-y: auto;
}
.cart-row {
display: grid;
grid-template-columns: 1fr 90px 90px 100px 70px;
gap: 8px;
align-items: center;
padding: 10px 14px;
border-bottom: 1px solid var(--bond-line-soft);
color: var(--bond-text);
font-size: 9pt;
transition: background 0.15s ease;
}
.cart-row:last-child { border-bottom: none; }
.cart-row:hover {
background: rgba(197, 164, 90, 0.06);
}
.cart-row .cart-col-desc {
font-weight: 500;
color: var(--bond-text);
}
.cart-row .cart-col-price,
.cart-row .cart-col-total {
text-align: right;
font-variant-numeric: tabular-nums;
}
.cart-row .cart-col-total {
color: var(--bond-gold-bright);
font-weight: 600;
}
.cart-row .cart-col-qty {
text-align: right;
}
.cart-qty-input {
width: 60px !important;
text-align: center;
margin: 0 !important;
display: inline-block !important;
}
.cart-col-remove {
text-align: right;
}
.cart-remove-link {
color: var(--bond-text-dim) !important;
font-size: 8pt;
letter-spacing: 0.04em;
text-transform: uppercase;
border: 1px solid var(--bond-line-soft);
border-radius: 3px;
padding: 3px 8px;
transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}
.cart-remove-link:hover {
color: #d97a7a !important;
border-color: var(--bond-red);
background: rgba(161, 58, 58, 0.12);
}
.cart-summary {
padding: 12px 14px;
background: linear-gradient(180deg, #131318, #0d0d10);
border-top: 1px solid var(--bond-line);
}
.cart-summary-row {
display: flex;
justify-content: space-between;
align-items: baseline;
color: var(--bond-text);
font-size: 10pt;
}
.cart-summary-total {
color: var(--bond-gold-bright);
font-size: 14pt;
font-weight: 700;
letter-spacing: 0.02em;
}
.cart-empty {
text-align: center;
padding: 50px 20px;
color: var(--bond-text-dim);
}
.cart-empty-icon {
font-size: 40pt;
opacity: 0.5;
margin-bottom: 8px;
}
.cart-empty-title {
font-size: 13pt;
color: var(--bond-text);
letter-spacing: 0.04em;
margin-bottom: 4px;
}
.cart-empty-text {
font-size: 9pt;
color: var(--bond-text-dim);
}
/* Checkout */
.checkout-header {
display: grid;
grid-template-columns: 1fr 90px 70px 100px;
gap: 8px;
align-items: center;
padding: 8px 14px;
background: linear-gradient(180deg, #1c1c24, #131318);
border-bottom: 1px solid var(--bond-line);
color: var(--bond-gold-bright);
font-size: 8pt;
letter-spacing: 0.08em;
text-transform: uppercase;
font-weight: 600;
}
.checkout-header .checkout-col-qty {
text-align: right;
}
.checkout-row {
display: grid;
grid-template-columns: 1fr 90px 70px 100px;
gap: 8px;
align-items: center;
padding: 10px 14px;
border-bottom: 1px solid var(--bond-line-soft);
color: var(--bond-text);
font-size: 9pt;
}
.checkout-row:last-child { border-bottom: none; }
.checkout-row .checkout-col-qty {
text-align: right;
color: var(--bond-text-dim);
}
.checkout-pay-wrap {
max-width: 380px;
margin: 0 auto;
padding: 6px 0 4px 0;
}
.checkout-pay-label {
font-size: 8pt;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--bond-text-dim);
margin-bottom: 6px;
}
.checkout-card-input {
background: var(--bond-panel-2);
border: 1px solid var(--bond-line);
border-radius: 4px;
padding: 10px;
min-height: 40px;
margin-bottom: 14px;
}
.checkout-pay-btn {
display: block;
width: 100%;
font-size: 11pt;
padding: 9px 10px 10px 10px;
text-align: center;
color: #0a0a0d;
background: linear-gradient(180deg, var(--bond-gold-bright), var(--bond-gold));
border: 1px solid var(--bond-gold);
cursor: pointer;
}
.checkout-pay-btn:hover {
background: linear-gradient(180deg, #f0d89a, var(--bond-gold-bright));
box-shadow: 0 0 0.6em rgba(197, 164, 90, 0.45);
}
.checkout-pay-btn:disabled {
cursor: default;
opacity: 0.55;
background: linear-gradient(180deg, #1c1c24, #131318);
color: var(--bond-text-dim);
box-shadow: none;
}
.checkout-processing {
visibility: hidden;
background: var(--bond-panel-2);
border: 1px solid var(--bond-line);
border-left: 3px solid var(--bond-gold);
color: var(--bond-text);
padding: 8px 12px;
margin-top: 12px;
border-radius: 3px;
font-size: 9pt;
}
.checkout-error {
color: #d97a7a;
font-size: 9pt;
margin-top: 12px;
min-height: 1.2em;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 811 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

-385
View File
@@ -1,385 +0,0 @@
.rotate {
animation: rotation 1s infinite linear;
}
@keyframes rotation {
from {
transform: rotate(0deg);
}
to {
transform: rotate(359deg);
}
}
@font-face {
font-family: avenir;
src: url('https://barant.com/fonts/AvenirLTStd-Light.ttf');
}
@font-face {
font-family: source;
src: url('https://barant.com/fonts/jackinput.TTF');
}
@font-face {
font-family: exo2;
src: url('https://barant.com/fonts/Exo2-RegularCondensed.otf');
}
body {background: linear-gradient(to bottom, #ccc, #444);
font-family: exo2;
margin: 10px 10px 10px 10px;
width: 98%;
}
a:link {text-decoration: none}
a:visited {text-decoration:none}
a:hover {text-decoration:none}
h1 {font: 20pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
color: #808080;
opacity: 0.9;}
h2 {font: 14pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
h3 {font: 12pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
p {font-family: 8pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
ul {font-family: 8pt exo2;}
li {font-family: 8pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
.project_header {background: #88c;
color: #fff;
padding: 5px;
font-weight: 400;
font-size: 14px;
}
.pageclass {background: #fff;
border-radius: 10px;
border: 2pt outset;
border-spacing: 0px;
padding: 0px;
max-width: 1050px;
min-width: 1050px
margin: auto;
text-shadow: 0 0 0.1em #CCC, 0 0 0.1em #87F;
font-family: exo2;
font-size: 10pt;
}
input {background: #fff;
border: 1px inset;
font-family: exo2;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
-o-border-radius: 2px;
-ms-border-radius: 2px;
border-radius: 0px;
}
select {background: #fff;
font-family: exo2;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
border: 1px solid #444;
padding: 1px 2px 1px 2px;
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
-o-border-radius: 7px;
-ms-border-radius: 7px;
border-radius: 0px;
}
textarea.fieldinput {background: #fff;
resize: none;
font-family: exo2;
border: 1px solid #444;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
padding: 2px 2px 2px 5px;
-webkit-border-radius: 0px;
-moz-border-radius: 0px;
-o-border-radius: 0px;
-ms-border-radius: 0px;
border-radius: 0px;
}
textarea.fieldinputerror {background: #fcc;
resize: none;
font-family: exo2;
border: 1px solid #f00;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
padding: 2px 2px 2px 5px;
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
-o-border-radius: 7px;
-ms-border-radius: 7px;
border-radius: 0px;
}
.sectionframe {
position: relative;
font-family: exo2;
border: 0px outset;
font-size: 10pt;
margin: 3px;
background: #808080;
padding: 0px;
border-radius: 0px;
}
.sectionframe:after{
content: '';
position: absolute;
top: 1px;
left: 1px;
width: calc(100% - 2px);
height: 12px;
background: linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.2));
}
.sectionframecontents {
padding: 10px;
text-align: justify;
color: #000000;
border: 1pt inset;
background-color: #F8F8FF;
}
.sectionframeheading {
# background: linear-gradient(to bottom, #fff, #88f);
background: #2099f0;
color: #fff;
border: 1pt outset;
vertical-align: middle;
padding: 5px;
margin: 0px;
font-family: 12pt avenir;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
border-radius: 0px 0px 0px 0px;
}
.sectionframeheading2 {
background: #C0C0C0;
font-family: exo2;
font-size: 20pt;
padding: 3px
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
border-radius: 3px;
}
.heading {background: #fff;
border-radius: 7px 7px 0px 0px;
max-height: 80px;
}
.entryform {
background: #2099f0;
padding: 3px 3px 3px 3px;
margin: 0px;
border: 0px solid black;
border-radius: 0px;
}
.entryform table {
font: 12px exo2;
background: #c5e1f4;
border: 0pt solid black;
}
.footer {
background: linear-gradient(to bottom, #000, #888);
font: 8pt verdana;
color: #FFFFFF;
text-align: center;
border-radius: 0px 0px 6px 6px;}
.menubar {
# background: linear-gradient(to bottom, #fff, #2099f0);
padding: 0px 0px 0px 0px;
margin: 0px;
}
.baritem {
background-image: linear-gradient(#2099f0, #c3ddef);
color: #fff;
position: relative;
font-family: exo2;
font-weight: 1000;
font-size: 8pt;
padding: 2px 10px;
margin: 10px 0px 0px 0px;
border: solid;
border-width: 0px 0px 1px 0px;
border-color: #fff;
border-radius: 5px 5px 0px 0px;
border-style: outset;
transition: background 2s;
}
.baritem:after{
content: '';
position: absolute;
top: 1px;
left: 1px;
width: calc(100% - 2px);
height: 50%;
z-index: 5;
pointer-events: none;
border-radius: 4px 4px 0px 0px;
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
}
.baritemselected {
background: #ccc;
color: #000;
font-family: exo2;
font-weight: 1000;
font-size: 8pt;
padding: 2px 10px;
margin: 5px 10px 0px 0px;
border: solid;
border-width: 1px 1px 0px 1px;
border-color: #fff;
border-radius: 5px 5px 0px 0px;
border-style: outset;
transition: background 2s;
}
.baritem:hover {
background: #c3ddef;
color: #fff;
transition: background 5s;
}
.panel {background: #ccc;
margin: 10px;
padding: 3px;
border: 0pt inset;}
.panel table {
font: 12px exo2;
padding: 5px;
background: #c5e1f4;
border: 1pt solid black;
border-radius: 9px;
}
.panel table th {
background: #2099f0;
color: #fff;
padding: 2px 3px 3px 3px;
border: 0pt;
}
.panel table td {
background: #c5e1f4;
color: #000;
padding: 2px 3px 3px 3px;
border: 0pt;
}
.left {
text-align: right;
padding-left: 20px;
border-radius: 9px 0px 0px 9px;
}
.right {
border-radius: 0px 9px 9px 0px;
padding-right: 20px;
}
.featured {background: #fff}
.buttonbay {
width: 100%;
text-align: center;
}
.fieldinput {
font-family: exo2;
border-radius: 7px;
padding: 2px 2px 2px 5px;
border: 1px solid #ccc;
}
.fieldinputerror {
font-family: exo2;
border-radius: 7px;
padding: 2px 2px 2px 5px;
background: #fcc;
border: 1px solid red;
}
.fieldprompt {
font-size: 10pt;
text-align: right;
background: #00f;
}
.message {font: bold 10pt verdana; color: #FF0000}
.collection_heading {font: bold 12pt verdana; color: #FFFFFF}
.collection_text {font: 10pt verdana; color: #FFFFFF}
.collection_tracks_background {font: 8pt bold verdana; color: #FFFFFF; background: #10003F}
.warning {font: 10pt verdana; background: #FF0000; color: #FFFFFF; text-align: justify}
.button {
position: relative;
display: inline-block;
font-size: 10pt;
font-weight: 400;
color: #fff;
border: 2px outset;
background: #2099f0;
padding: 2px 10px 3px 10px;
margin: 0px;
border-radius: 5px;
}
.button:after{
content: '';
position: absolute;
top: 0px;
left: 0px;
width: calc(100% - 0px);
height: 10px;
z-index: 5;
border-radius: 3px;
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
}
.code {
font-family: source;
font-weight: 400;
font-size: 10pt;
border: 1pt solid black;
background: #ff8;
padding: 5px;
}
+173 -20
View File
@@ -12,28 +12,27 @@ IMG_CACHE = ROOT + "/assets/images"
os.makedirs(OUT, exist_ok=True)
os.makedirs(IMG_CACHE, exist_ok=True)
IMG_MIME = {
".png": "image/png", ".jpg": "image/jpeg", ".jpeg": "image/jpeg",
".gif": "image/gif", ".svg": "image/svg+xml", ".webp": "image/webp",
".ico": "image/x-icon",
}
def resolve_images(html):
"""Find any remaining /images/<file> reference (src="..." or url('...'))
and inline it as a data: URI, fetching+caching from barant.com on first
use - APIServer has no static-file serving, same reason the chrome logo
and page CSS/fonts needed inlining earlier this session."""
"""Find any /images/<file> or images/<file> reference (src="...",
href="...", or CSS url('...')) and repoint it at the live APIServer
GET /assets/{filename} route instead of inlining it as a data: URI -
fetching+caching from barant.com into the same assets/images/ cache
directory on first use (unchanged), just no longer embedding the raw
bytes into every page's own HTML (undoes the earlier base64-inlining
approach now that a real static-asset module exists to serve these).
Matches both the absolute form (/images/x.png) and the relative form
(images/x.png, no leading slash) - the previous version of this
function only matched the absolute form, silently leaving several
real <img src="images/.."> references un-rewritten and pointing
nowhere (APIServer has no /images/ route at all)."""
def repl(m):
path = m.group(1) # e.g. images/grid.png
fname = path.split("/")[-1]
ext = os.path.splitext(fname)[1].lower()
mime = IMG_MIME.get(ext, "application/octet-stream")
local_path = IMG_CACHE + "/" + fname
if not os.path.exists(local_path):
subprocess.run(["curl", "-s", "-o", local_path, "https://barant.com/" + path], check=True)
return data_uri(local_path, mime)
html = re.sub(r'/images/([A-Za-z0-9_.-]+)(?=["\'])', repl, html)
return "/assets/" + fname
html = re.sub(r'/?images/([A-Za-z0-9_.-]+)(?=["\'])', repl, html)
return html
@@ -199,6 +198,72 @@ opensource_menu = flatten_linkbuttons(opensource_menu)
SIDEBAR_HTML = opensource_menu
# ---------------------------------------------------------------------------
# SPA bootstrap script: present once, in the chrome, on every FULL page load
# (never in a fragment-only response, which has no <head>/<script> of its
# own). Intercepts clicks on internal <a href="/..."> links and swaps just
# #jetc-content via fetch('/name?fragment=1') instead of a full navigation;
# also drives the browser back/forward buttons via popstate. See the
# FULL_PAGE_TMPL / FRAGMENT_TMPL split in convert_page() for how a single
# route serves both the full page and the fragment-only response, decided
# by the ?fragment=1 query flag.
# ---------------------------------------------------------------------------
# Pages excluded from client-side fragment fetching entirely - a click on
# one of these falls through to an ORDINARY browser navigation (hitting
# the full-page route, confirmed safe) instead of being intercepted.
# Real, deterministic finding: <name>?fragment=1 for a MYSQL_PAGES page
# crashes the whole apiserver process on the very FIRST such request
# (reproduced repeatedly - not state-dependent, not "two failures in a
# row"), while the exact same page's full-page route (no ?fragment=1)
# fails cleanly with the expected "database and host parameters are not
# valid." and the server survives. Root cause not isolated (a <mysql>
# connection failure unwinding through the smaller <tag name="_frag_X">
# definition specifically, vs surviving fine through the larger
# <tag name="_full_X"> one, for reasons not chased down further given
# scope) - this is a mitigation, not a fix, and only matters while these
# pages fail (no real DB password configured); worth re-testing once a
# real DB is wired in, since a successful <mysql> connection takes a
# completely different code path that may not hit this at all.
FRAGMENT_EXCLUDED_PAGES = sorted(MYSQL_PAGES)
SPA_SCRIPT = """<script>
(function() {
var FRAGMENT_EXCLUDED = %s;
function pageNameFromPath(path) {
var name = path.replace(/^\\//, '').replace(/\\.page$/, '');
return name || 'main';
}
function loadPage(name, push) {
fetch('/' + name + '?fragment=1').then(function(resp) {
if (!resp.ok) throw new Error('HTTP ' + resp.status);
return resp.text();
}).then(function(html) {
var el = document.getElementById('jetc-content');
if (el) el.innerHTML = html;
if (push) history.pushState({page: name}, '', '/' + name);
}).catch(function(err) {
console.error('jetc-spa: failed to load page', name, err);
});
}
document.addEventListener('click', function(ev) {
if (ev.defaultPrevented || ev.button !== 0 || ev.metaKey || ev.ctrlKey || ev.shiftKey || ev.altKey) return;
var target = ev.target.nodeType === 1 ? ev.target : ev.target.parentElement;
var a = target ? target.closest('a') : null;
if (!a) return;
if (a.target === '_blank' || a.hasAttribute('download')) return;
var href = a.getAttribute('href') || '';
if (href.indexOf(':') !== -1 || href.indexOf('//') === 0 || href.indexOf('/') !== 0) return;
if (FRAGMENT_EXCLUDED.indexOf(pageNameFromPath(href)) !== -1) return;
ev.preventDefault();
loadPage(pageNameFromPath(href), true);
});
window.addEventListener('popstate', function() {
loadPage(pageNameFromPath(location.pathname), false);
});
})();
</script>""" % (repr(FRAGMENT_EXCLUDED_PAGES).replace("'", '"'))
# ---------------------------------------------------------------------------
# Build the page chrome from mainpagetemplate.temp: the part of <template>
# before <contents> and the part after.
@@ -208,6 +273,39 @@ temp_raw = read(SRC + "/mainpagetemplate.temp")
m = re.search(r'<template>(.*)</template>', temp_raw, re.DOTALL)
template_body = m.group(1)
# mainpagetemplate.temp's own <tag name="title">...</tag> helper is dead
# code in this conversion - title substitution happens via a plain Python
# string-replace on <exclude>$[_title]</exclude> below, never by actually
# invoking this helper. Stripped as genuinely dead code (not a bug fix -
# see below for the real one).
template_body = drop_tag_block(template_body, "title")
# Real bug found and isolated via a minimal standalone repro (bisecting
# down from "the whole chrome throws 'comment must have a container'"):
# a <comment>...</comment> block, when it ends up nested inside one of
# this script's own <tag name="_full_NAME">/<tag name="_frag_NAME">
# definitions (see convert_page() below) - needed so the fragment/full
# <if> branches can hold real HTML content without jetc's compile-time
# <if> body parser choking on it - fails at RUNTIME with "comment must
# have a container", even though the exact same <comment> block renders
# fine as ordinary top-level content. Reproduced with a 4-line synthetic
# case (<tag name="x">text<comment>plain text, no nested tags</comment>
# text</tag>) - so this is a genuine jetc/JetCore bug in how a custom tag
# DEFINITION'S stored text gets re-processed at <dotag> invocation time,
# not something specific to this page's content. Flagged for the project,
# not fixed here (root cause not isolated further - the base Tag class's
# container-boundary bookkeeping is shared by many tags and risky to
# change without full regression coverage).
#
# Worked around instead: this specific <comment> block wraps content
# gated on $[_login_id] (show a logged-in session var menu) - the EXACT
# same "session-gated, always empty for an anonymous visitor" category
# already established as this conversion's design for cart.menu/login.menu/
# the ACCOUNT+ADMIN nav tabs (see below) - so stripping it entirely is
# consistent with the rest of this file, not a new compromise.
template_body = re.sub(r'<comment>\s*<if value1="\$\[_login_id\]".*?</if>\s*</comment>',
'', template_body, flags=re.DOTALL)
# Substitute the chrome-level includes/placeholders that are now fixed for
# every page in this conversion (no per-page menubar/menu overrides exist -
# confirmed by grepping every source .page file for _menubar/_menu overrides
@@ -221,7 +319,13 @@ template_body = re.sub(r'<if value1="\$\[_menu\]" value2="" type="eq">\s*<includ
CONTENTS_MARKER = "<contents>"
idx = template_body.index(CONTENTS_MARKER)
CHROME_BEFORE = resolve_images(template_body[:idx])
CHROME_AFTER = resolve_images(template_body[idx + len(CONTENTS_MARKER):])
CHROME_AFTER = resolve_images(template_body[idx + len(CONTENTS_MARKER):]) + SPA_SCRIPT
FULL_PAGE_TMPL = (
'<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]'
'<html lang="en"><head><title>%s</title>%s</head><body>'
'%s<div id="jetc-content">%s</div>%s</body></html>'
)
def convert_page(name):
@@ -262,11 +366,60 @@ def convert_page(name):
chrome_before = CHROME_BEFORE.replace('<exclude>$[_title]</exclude>', page_title)
full_page = FULL_PAGE_TMPL % (page_title, STYLE_BLOCK, chrome_before, contents, CHROME_AFTER)
if name in MYSQL_PAGES:
# Real, reproducible server crash (heap corruption - "free():
# invalid pointer" seen live) when a <mysql> connection failure
# unwinds through the smaller fragment-mode <tag name="_frag_X">
# definition specifically - the exact same failure through the
# larger _full_X definition is fine (clean caught exception, 500).
# The client-side click handler already skips fetching these pages
# as fragments (FRAGMENT_EXCLUDED, above), but that only protects
# normal clicking - a stale already-open tab (running JS from
# before that fix shipped) or anyone hitting the URL directly
# would still trigger it. This is the real, server-side fix: the
# fragment response for these pages never attempts the <mysql>
# connection at all, so the crash is unreachable regardless of
# how the request arrives. Re-test once a real DB password makes
# these pages actually work - a successful connection takes a
# different code path that may not need this at all.
fragment_page = ('<div id="jetc-content"><p>This page requires a full load - '
'<a href="/%s">view it directly</a>.</p></div>') % name
else:
fragment_page = '<div id="jetc-content">%s</div>' % contents
# A direct/full-page load and an SPA-driven fragment fetch both hit this
# SAME route (/name) - distinguished by ?fragment=1 in the query string,
# per the user's explicit choice over a separate /name.page route. A
# normal load has no query string at all, so $[fragment] is simply
# unset - referencing an unset global variable throws ("global variable
# is not initialized.").
#
# Two real jetc bugs found and worked around while building this (both
# confirmed via direct minimal reproduction, not guessed):
# 1. <try> safely captures the possibly-unset $[fragment] into
# fragflag (always "1" or "" afterward) - but <try> must wrap ONLY
# the <set>, never an <if>. Nesting <if>/<else> INSIDE <try> silently
# drops the <else> branch's output specifically when compiled
# through jetc (works fine in jet-2.0's own interpreter; the bug is
# jetc-compiled-only). The branching <if> lives entirely OUTSIDE/
# AFTER <try> instead.
# 2. A large/complex body (real inlined HTML+CSS+JS, hundreds of KB)
# placed directly as an <if>'s branch content fails to COMPILE at
# all ("unterminated <html> - no matching close tag found") - jetc's
# own compile-time <if>/<else> body scanner isn't robust against
# real-world markup at this scale. Worked around by keeping the
# <if>'s own branches tiny (self-closing custom-tag invocations)
# and moving the real content into <tag name="..."> DEFINITIONS
# (which jetc never compile-time-parses at all - stored as opaque
# raw text, exactly like a <try> body, and only actually rendered
# via <dotag> at runtime).
body = (
'<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]'
'<html lang="en"><head><title>%s</title>%s</head><body>'
'%s%s%s</body></html>'
) % (page_title, STYLE_BLOCK, chrome_before, contents, CHROME_AFTER)
'<try name="_fragerr"><set name="fragflag" expr="$[fragment]" /><catch><set name="fragflag" value="" /></try>'
'<tag name="_frag_%s">%s</tag><tag name="_full_%s">%s</tag>'
'<if value1="$[fragflag]" value2="1" type="eq"><_frag_%s /><else><_full_%s /></if>'
) % (name, fragment_page, name, full_page, name, name)
jet_text = "#api GET /%s\n%s\n" % (name, body)
+6 -11
View File
@@ -1,4 +1,3 @@
#api GET /applications
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>APPLICATIONS</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">APPLICATIONS</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<div class="sectionframe"><div class="sectionframeheading"><b>Project Manager</b></div><div class="sectionframecontents">
<p>A comprehensive project manager that extends an agile like
@@ -485,7 +480,7 @@ against transaction flow placed in a calendar.</p>
</div></div>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -493,4 +488,4 @@ against transaction flow placed in a calendar.</p>
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+8 -13
View File
@@ -1,4 +1,3 @@
#api GET /asm1802
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>RCA1802 Micro-Controller Assembler/Emulator</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">RCA1802 Micro-Controller Assembler/Emulator</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,16 +463,12 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<div class="sectionframe"><div class="sectionframeheading"><b>RCA1802</b></div><div class="sectionframecontents">
<h1>The RCA1802 Micro-Controller</h1>
<img src="images/rca1802chip.jpeg" align="right">
<img src="/assets/rca1802chip.jpeg" align="right">
<p>Back in the 1970's RCA released a chip that was widely used in
satellites and other spacecraft to this day. It is a very simple
8-bit micro-controller with 16-bit addressibility enabling memory
@@ -496,7 +491,7 @@ device.</p>
</div></div>
<div class="sectionframe"><div class="sectionframeheading"><b>RCA1802 Emulator</b></div><div class="sectionframecontents">
<img src="images/emu1802a.png" align="right" width="500">
<img src="/assets/emu1802a.png" align="right" width="500">
<p>The 1802 emulator provides a fully functional RCA1802
micro-controller device complete with interupt handling and DMA
controls for memory access. Experiment with code structures and build
@@ -518,7 +513,7 @@ change environment going for the Kicad project as well as the source
code for the assembler and emulator components.
</div></div>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -526,4 +521,4 @@ code for the assembler and emulator components.
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+6 -11
View File
@@ -1,4 +1,3 @@
#api GET /barantmail
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>BARANTMAIL OPEN SOURCE PROJECT</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">BARANTMAIL OPEN SOURCE PROJECT</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<div class="sectionframe"><div class="sectionframeheading"><b>BARANTMAIL OPEN SOURCE PROJECT</b></div><div class="sectionframecontents">
<p>In the year 2000 I was extremely frustrated with the state of e-amil
systems available to Linux. Sendmail and q-mail were pretty much the two
@@ -489,7 +484,7 @@ I also wanted a scalable multi-server capability.</p>
</ul>
<p></p>
</div></div>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -497,4 +492,4 @@ I also wanted a scalable multi-server capability.</p>
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+16 -503
View File
@@ -1,503 +1,16 @@
#api GET /contact
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>Support E-Mail</title><style>
.rotate {
animation: rotation 1s infinite linear;
}
@keyframes rotation {
from {
transform: rotate(0deg);
}
to {
transform: rotate(359deg);
}
}
@font-face {
font-family: avenir;
src: url('data:font/ttf;base64,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 truncated
}
@font-face {
font-family: source;
src: url('data:font/ttf;base64,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 truncated
}
@font-face {
font-family: exo2;
src: url('data:font/otf;base64,T1RUTwALAIAAAwAwQ0ZGIF65aMUAAA4EAACDv0dQT1NyBlyKAACeSAAAYTJHU1VCWwJIAAAAmQgAAAU+T1MvMmqogawAAAEgAAAAYGNtYXC4LHjGAAAGoAAAB0JoZWFkA3NjtwAAALwAAAA2aGhlYQc+BIEAAAD0AAAAJGhtdHg+CUgTAACRxAAAB0RtYXhwAdFQAAAAARgAAAAGbmFtZVDBsvwAAAGAAAAFHnBvc3T/uAAyAAAN5AAAACAAAQAAAAEAQYT55LNfDzz1AAMD6AAAAADQhBABAAAAANCEEAH/c/7tA+EDpwAAAAMAAgAAAAAAAAABAAAD5/83AAAEBf9z/3MD4QABAAAAAAAAAAAAAAAAAAAB0QAAUAAB0QAAAAMByAGQAAMACAKKAlgAAABLAooCWAAAAV4AMgEkAAAAAAUGAAAAAAAAAAACBwAAAAAAAAAAAAAAAFVLV04AQAAg+wICvP83ASsD5wDJIAAAlwAAAAAB5wKyAAAAIAADAAAAFgEOAAEAAAAAAAAATwAAAAEAAAAAAAEABQBPAAEAAAAAAAIAEQBUAAEAAAAAAAMAIABlAAEAAAAAAAQAFwCFAAEAAAAAAAUAPACcAAEAAAAAAAYAFQDYAAEAAAAAAAkADQDtAAEAAAAAAAwAEwD6AAEAAAAAAA4APwENAAMAAQQJAAAAngFMAAMAAQQJAAEAHgHqAAMAAQQJAAIADgIIAAMAAQQJAAMAQAIWAAMAAQQJAAQALgJWAAMAAQQJAAUAeAKEAAMAAQQJAAYAKgL8AAMAAQQJAAkAGgMmAAMAAQQJAAwAJgNAAAMAAQQJAA4AfgNmAAMAAQQJABAACgPkAAMAAQQJABEAIgPuQ29weXJpZ2h0IKkgMjAxNCwgTmF0YW5hZWwgR2FtYSAod3d3Lm5kaXNjb3ZlcmVkLmNvbSAuIGluZm8oYXQpbmRpc2NvdmVyZWQuY29tKUV4byAyUmVndWxhciBDb25kZW5zZWQxLjAwMTtVS1dOO0V4bzItUmVndWxhckNvbmRlbnNlZEV4byAyIFJlZ3VsYXIgQ29uZGVuc2VkVmVyc2lvbiAxLjAwMTtQUyAwMDEuMDAxO2hvdGNvbnYgMS4wLjcwO21ha2VvdGYubGliMi41LjU4MzI5RXhvMi1SZWd1bGFyQ29uZGVuc2VkTmF0YW5hZWwgR2FtYXd3dy5uZGlzY292ZXJlZC5jb21odHRwOi8vc2NyaXB0cy5zaWwub3JnL2Ntcy9zY3JpcHRzL3BhZ2UucGhwP3NpdGVfaWQ9bnJzaSZpZD1PRkwAQwBvAHAAeQByAGkAZwBoAHQAIACpACAAMgAwADEANAAsACAATgBhAHQAYQBuAGEAZQBsACAARwBhAG0AYQAgACgAdwB3AHcALgBuAGQAaQBzAGMAbwB2AGUAcgBlAGQALgBjAG8AbQAgAC4AIABpAG4AZgBvACgAYQB0ACkAbgBkAGkAcwBjAG8AdgBlAHIAZQBkAC4AYwBvAG0AKQBFAHgAbwAgADIAIABDAG8AbgBkAGUAbgBzAGUAZABSAGUAZwB1AGwAYQByADEALgAwADAAMQA7AFUASwBXAE4AOwBFAHgAbwAyAC0AUgBlAGcAdQBsAGEAcgBDAG8AbgBkAGUAbgBzAGUAZABFAHgAbwAgADIAIABSAGUAZwB1AGwAYQByACAAQwBvAG4AZABlAG4AcwBlAGQAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMQA7AFAAUwAgADAAMAAxAC4AMAAwADEAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARQB4AG8AMgAtAFIAZQBnAHUAbABhAHIAQwBvAG4AZABlAG4AcwBlAGQATgBhAHQAYQBuAGEAZQBsACAARwBhAG0AYQB3AHcAdwAuAG4AZABpAHMAYwBvAHYAZQByAGUAZAAuAGMAbwBtAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBjAG0AcwAvAHMAYwByAGkAcAB0AHMALwBwAGEAZwBlAC4AcABoAHAAPwBzAGkAdABlAF8AaQBkAD0AbgByAHMAaQAmAGkAZAA9AE8ARgBMAEUAeABvACAAMgBSAGUAZwB1AGwAYQByACAAQwBvAG4AZABlAG4AcwBlAGQAAAAAAAMAAAADAAACFAABAAAAAAAcAAMAAQAAAhQABgH4AAAACQD3AZUAAAAAAAABlQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVAXUBfAF3AZoBrgG2AX0BhQGG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 truncated
}
body {background: linear-gradient(to bottom, #ccc, #444);
font-family: exo2;
margin: 10px 10px 10px 10px;
width: 98%;
}
a:link {text-decoration: none}
a:visited {text-decoration:none}
a:hover {text-decoration:none}
h1 {font: 20pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
color: #808080;
opacity: 0.9;}
h2 {font: 14pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
h3 {font: 12pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
p {font-family: 8pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
ul {font-family: 8pt exo2;}
li {font-family: 8pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
.project_header {background: #88c;
color: #fff;
padding: 5px;
font-weight: 400;
font-size: 14px;
}
.pageclass {background: #fff;
border-radius: 10px;
border: 2pt outset;
border-spacing: 0px;
padding: 0px;
max-width: 1050px;
min-width: 1050px
margin: auto;
text-shadow: 0 0 0.1em #CCC, 0 0 0.1em #87F;
font-family: exo2;
font-size: 10pt;
}
input {background: #fff;
border: 1px inset;
font-family: exo2;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
-o-border-radius: 2px;
-ms-border-radius: 2px;
border-radius: 0px;
}
select {background: #fff;
font-family: exo2;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
border: 1px solid #444;
padding: 1px 2px 1px 2px;
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
-o-border-radius: 7px;
-ms-border-radius: 7px;
border-radius: 0px;
}
textarea.fieldinput {background: #fff;
resize: none;
font-family: exo2;
border: 1px solid #444;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
padding: 2px 2px 2px 5px;
-webkit-border-radius: 0px;
-moz-border-radius: 0px;
-o-border-radius: 0px;
-ms-border-radius: 0px;
border-radius: 0px;
}
textarea.fieldinputerror {background: #fcc;
resize: none;
font-family: exo2;
border: 1px solid #f00;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
padding: 2px 2px 2px 5px;
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
-o-border-radius: 7px;
-ms-border-radius: 7px;
border-radius: 0px;
}
.sectionframe {
position: relative;
font-family: exo2;
border: 0px outset;
font-size: 10pt;
margin: 3px;
background: #808080;
padding: 0px;
border-radius: 0px;
}
.sectionframe:after{
content: '';
position: absolute;
top: 1px;
left: 1px;
width: calc(100% - 2px);
height: 12px;
background: linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.2));
}
.sectionframecontents {
padding: 10px;
text-align: justify;
color: #000000;
border: 1pt inset;
background-color: #F8F8FF;
}
.sectionframeheading {
# background: linear-gradient(to bottom, #fff, #88f);
background: #2099f0;
color: #fff;
border: 1pt outset;
vertical-align: middle;
padding: 5px;
margin: 0px;
font-family: 12pt avenir;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
border-radius: 0px 0px 0px 0px;
}
.sectionframeheading2 {
background: #C0C0C0;
font-family: exo2;
font-size: 20pt;
padding: 3px
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
border-radius: 3px;
}
.heading {background: #fff;
border-radius: 7px 7px 0px 0px;
max-height: 80px;
}
.entryform {
background: #2099f0;
padding: 3px 3px 3px 3px;
margin: 0px;
border: 0px solid black;
border-radius: 0px;
}
.entryform table {
font: 12px exo2;
background: #c5e1f4;
border: 0pt solid black;
}
.footer {
background: linear-gradient(to bottom, #000, #888);
font: 8pt verdana;
color: #FFFFFF;
text-align: center;
border-radius: 0px 0px 6px 6px;}
.menubar {
# background: linear-gradient(to bottom, #fff, #2099f0);
padding: 0px 0px 0px 0px;
margin: 0px;
}
.baritem {
background-image: linear-gradient(#2099f0, #c3ddef);
color: #fff;
position: relative;
font-family: exo2;
font-weight: 1000;
font-size: 8pt;
padding: 2px 10px;
margin: 10px 0px 0px 0px;
border: solid;
border-width: 0px 0px 1px 0px;
border-color: #fff;
border-radius: 5px 5px 0px 0px;
border-style: outset;
transition: background 2s;
}
.baritem:after{
content: '';
position: absolute;
top: 1px;
left: 1px;
width: calc(100% - 2px);
height: 50%;
z-index: 5;
pointer-events: none;
border-radius: 4px 4px 0px 0px;
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
}
.baritemselected {
background: #ccc;
color: #000;
font-family: exo2;
font-weight: 1000;
font-size: 8pt;
padding: 2px 10px;
margin: 5px 10px 0px 0px;
border: solid;
border-width: 1px 1px 0px 1px;
border-color: #fff;
border-radius: 5px 5px 0px 0px;
border-style: outset;
transition: background 2s;
}
.baritem:hover {
background: #c3ddef;
color: #fff;
transition: background 5s;
}
.panel {background: #ccc;
margin: 10px;
padding: 3px;
border: 0pt inset;}
.panel table {
font: 12px exo2;
padding: 5px;
background: #c5e1f4;
border: 1pt solid black;
border-radius: 9px;
}
.panel table th {
background: #2099f0;
color: #fff;
padding: 2px 3px 3px 3px;
border: 0pt;
}
.panel table td {
background: #c5e1f4;
color: #000;
padding: 2px 3px 3px 3px;
border: 0pt;
}
.left {
text-align: right;
padding-left: 20px;
border-radius: 9px 0px 0px 9px;
}
.right {
border-radius: 0px 9px 9px 0px;
padding-right: 20px;
}
.featured {background: #fff}
.buttonbay {
width: 100%;
text-align: center;
}
.fieldinput {
font-family: exo2;
border-radius: 7px;
padding: 2px 2px 2px 5px;
border: 1px solid #ccc;
}
.fieldinputerror {
font-family: exo2;
border-radius: 7px;
padding: 2px 2px 2px 5px;
background: #fcc;
border: 1px solid red;
}
.fieldprompt {
font-size: 10pt;
text-align: right;
background: #00f;
}
.message {font: bold 10pt verdana; color: #FF0000}
.collection_heading {font: bold 12pt verdana; color: #FFFFFF}
.collection_text {font: 10pt verdana; color: #FFFFFF}
.collection_tracks_background {font: 8pt bold verdana; color: #FFFFFF; background: #10003F}
.warning {font: 10pt verdana; background: #FF0000; color: #FFFFFF; text-align: justify}
.button {
position: relative;
display: inline-block;
font-size: 10pt;
font-weight: 400;
color: #fff;
border: 2px outset;
background: #2099f0;
padding: 2px 10px 3px 10px;
margin: 0px;
border-radius: 5px;
}
.button:after{
content: '';
position: absolute;
top: 0px;
left: 0px;
width: calc(100% - 0px);
height: 10px;
z-index: 5;
border-radius: 3px;
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
}
.code {
font-family: source;
font-weight: 400;
font-size: 10pt;
border: 1pt solid black;
background: #ff8;
padding: 5px;
}
.controlframe {background: #888;
padding: 5px 5px 15px 10px;
}
.vm {position: relative;
height: 55px;
}
.vmname {position: absolute;
left: 0px; top: 0px;
height: 55px;
}
.vmcover {position: absolute;
left: 15px;
top: 30px;
font: 12px 'Dot Matrix';
background: #bbb;
color: white;
border: 1pt solid white;
border-radius: 5px;
padding: 2px 10px 2px 10px;
}
</style></head><body>
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">Support E-Mail</div>
</div>
</div>
<div style="float: right; text-align: right; margin-right: 10px; margin-top: 5px;"></div>
</div>
<div class="menubar">
<table class="menubar" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td style="border-bottom: 1pt solid #bbb; width: 20px;">&nbsp;</td>
<td class="baritem"><a href="/main">HOME</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/services">SERVICES</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/hosting">HOSTING</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/documents">DOCUMENT MGMT</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/siptrunk">SIP TRUNKING</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/vst">VST</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/modular1">MODULAR1</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/modular1_patches">MODULAR1 PATCHES</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/synthedit">SYNTHEDIT</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/wordpress">WORDPRESS</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/opensource">OPEN SOURCE</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/contact">CONTACT</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
</ifrow>
</if>
<td class="baritem"><a href="/login">LOGIN</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td style="border-bottom: 1pt solid #bbb; width: 10px;">&nbsp;</td>
</tr>
</table>
</div>
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
<a href="/jet">JET</a><br>
<a href="/synthmax">SYNTHMAX</a><br>
<a href="/serverframework">SERVER CORE FRAMEWORK</a>
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="sectionframe"><div class="sectionframeheading"><b>Contact</b></div><div class="sectionframecontents">
<p>Please contact us by phone at <b>(702) 232-0050</b>.</p>
<p>To e-mail us, just enter text below and press the buttons:</p>
<entryform>
<field prompt="Name" type="text" name="name" size="50" maxlength="50">
<field prompt="E-Mail" type="text" name="email" size="50" maxlength="50">
<field prompt="Message" type="multiline" name="message" rows="5" cols="60">
<captcha>
<buttonbay>
<div class="button">Send Message</div>
</buttonbay>
</entryform>
<messages>
<script src='https://www.google.com/recaptcha/api.js'></script>
</div></div>
</div>
<div style="clear: both;"></div>
</div>
</div>
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
<include file="../src/SESSIONCTL.tag">
<include file="../src/barant.tag">
<include file="../src/project.tag">
<set name="host" value="localhost">
<set name="database" value="barant">
<set name="user" value="barant">
<set name="password" value="uversa1960">
<database name="$[database]" host="$[host]" user="$[user]" password="$[password]" sessionid="">
<sessionctl page="contact">
<defaultnav>
<setpage name="contact">
</defaultnav>
<link rel="stylesheet" href="/assets/main.css">
<link rel="stylesheet" href="/assets/control.css">
</sessionctl>
</database>
+6 -11
View File
@@ -1,4 +1,3 @@
#api GET /crystal
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>CRYSTAL</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">CRYSTAL</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<div class="sectionframe"><div class="sectionframeheading"><b>Crystal - High Security Communications</b></div><div class="sectionframecontents">
@@ -478,7 +473,7 @@ textarea.fieldinputerror {background: #fcc;
Android.</p>
</div></div>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -486,4 +481,4 @@ Android.</p>
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+7 -12
View File
@@ -1,4 +1,3 @@
#api GET /davidarant
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>barant.com - David Eugene Arant</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">barant.com - David Eugene Arant</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,14 +463,10 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<img src="images/arant2.jpg" align="left">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<img src="/assets/arant2.jpg" align="left">
<h1>David Eugene Arant</h1>
<p>David Eugene Arant was born in South Gate California on April 17th, 1935
to parents May L. Arant and Francis M. Arant.</p>
@@ -491,7 +486,7 @@ on these pages.</p>
</whiledir>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -499,4 +494,4 @@ on these pages.</p>
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+6 -11
View File
@@ -1,4 +1,3 @@
#api GET /documents
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>Document Management</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">Document Management</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<div class="sectionframe"><div class="sectionframeheading"><b>Document Management</b></div><div class="sectionframecontents">
<h1>Online Document Management</h1>
<p>BARANT Technology Group now offers document management storage and
@@ -481,7 +476,7 @@ upon department for internal documents use. Or if you are a service
group you can establish accounts and store correspondence and
documents for any activity with that account.</p>
</div></div>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -489,4 +484,4 @@ documents for any activity with that account.</p>
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+16 -503
View File
@@ -1,503 +1,16 @@
#api GET /help
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>Support E-Mail</title><style>
.rotate {
animation: rotation 1s infinite linear;
}
@keyframes rotation {
from {
transform: rotate(0deg);
}
to {
transform: rotate(359deg);
}
}
@font-face {
font-family: avenir;
src: url('data:font/ttf;base64,AAEAAAAQAQAABAAAQkFTRYsllDEAAGo4AAAAUEZGVE1Xn89+AABqHAAAABxHREVGBT8F8QAAYYgAAABOR1BPU8yRwuEAAGPYAAAGREdTVULybtNsAABh2AAAAf5PUy8yWLpvKAAAAYgAAABgY21hcGu/0oYAAAYAAAACimdhc3D//wADAABhgAAAAAhnbHlmDlZkhgAACpwAAE1EaGVhZAfHj+4AAAEMAAAANmhoZWEHAANTAAABRAAAACRobXR4ESwuGgAAAegAAAQYbG9jYYMHlpAAAAiMAAACEG1heHABUABFAAABaAAAACBuYW1lnUqtLgAAV+AAAAbGcG9zdB3l48UAAF6oAAAC2AABAAAAAgj1LRvsCl8PPPUACwPoAAAAANKzIbUAAAAA0rMhtf9Z/wYD6AOkAAAACAACAAAAAAAAAAEAAAL0/wwAyAPo/1n/WQPoAAEAAAAAAAAAAAAAAAAAAAEFAAEAAAEHAEIABwAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAwILASwABQAEAooCWAAAAEsCigJYAAABXgAyARgAAAILBAICAgMCAgQAAAADAAAAAAAAAAAAAAAAQURCRQAAACD7AgL0/wwAyAOkAPogAAABAAAAAAHUAsQAAAAgAAQB9AAAAAAAAAFNAAABBAAAAXIAiQIIAKECCAANAggAIQMvACYCwAA7AQQAZAEEADoBBAAMAbwAJgKaAE4BBAAyAU0AKwEEAFIBcgAJAggAGgIIAF8CCAApAggAKQIIABcCCAApAggAHAIIACkCCAApAggAHAEEAFIBBAAyApoAUgKaAE4CmgBSAc8ALwMgACwCrQAFAnYAYQLAADMC5QBYAlEAYQIsAGEDCgAzAtIAYQEEAGEB4gAHAmMAYQH0AGEDeQBaAwoAYQNCADMCPgBhA0IAMwJRAGECLAA1Aj4ADAKsAFQCUf/9A7AABQJjAAECPv/6AiwAFwEEAEoBcgAFAQQAJAKaAFIB9AAAAPD/+gIHADsCYwBDAeEANgJjADYCLAA2ASgAEgJjADwCLABQAPAASwDw/+IB4QBQAPAAWgNUAEsCLABLAlIANgJjAEMCYwA2AU0ASwGqABwBTQAOAiwASwHPAA8CwAAPAeEABgHPAA8BqgAbAU0AQgDeAFcBTQA7ApoAZwEEAAABcgCJAggANAIIADoCCAALAggAAADeAFcCCABAAPD/6QMgABwBUQAiAeEAPwKaAE4BTQArAyAAHADw//QBkAA4ApoATgFSABcBUgAbAPAAPgIsAEsCWAA8AQQAUgDwACEBUgBDAYIAIgHhAEcDCgAkAwoAHAMKABQBzwAlAq0ABQKtAAUCrQAFAq0ABQKtAAUCrQAFA57/+wLAADMCUQBhAlEAYQJRAGECUQBhAQQABAEEAEgBBP/zAQT/8wLlAAoDCgBhA0IAMwNCADMDQgAzA0IAMwNCADMCmgBkA0IAMwKsAFQCrABUAqwAVAKsAFQCPv/6Aj4AYQJRAFACBwA7AgcAOwIHADsCBwA7AgcAOwIHADsDVAA2AeEANgIsADYCLAA2AiwANgIsADYA8P/6APAAPgDw/+kA8P/pAlIANgIsAEsCUgA2AlIANgJSADYCUgA2AlIANgKaAE4CUgAnAiwASwIsAEsCLABLAiwASwHPAA8CYwBDAc8ADwDwAFoB9AAZAPAABgOwADsDiwAsAiwANQGqABwCPv/6AiwAFwGqABsCCP/wAPD/6QDw/+YA8P/0APD/6ADwAEsA8AAbAPAACgDw/9wA8P/1AqQAMQIsAEsCEgALAU0AKwH0AAAD6AAAAQQAPgEEAD4BBAA+AggAaQIIAGkCCABpAggAJgIIACYB9ABJA+gAdwPVABoBOwA/ATsARwCo/1kCCAAQAcQAHgPeAFQCpAAxA3MAIgH9ACoCXQAfAowAGgIJABYCmgBOAKj/WQEEAFICGwAhAusAMQFPAA0CGQAsAhkAMQIZADECGQAyAhsANQIHABICBwASAgcAEgIHABIBUQAiAYIAIgFSAEMAFwAbAAAAAwAAAAMAAAAcAAEAAAAAAYQAAwABAAAAHAAEAWgAAABWAEAABQAWAH4A/wExAUIBUwFhAXgBfgGSAscCyQLdA6kDvAPAIBAgFCAaIB4gIiAmIDAgOiBEIKwhEyEiISYhLiICIgYiDyISIhUiGiIeIisiSCJgImUlyvsC//8AAAAgAKABMQFBAVIBYAF4AX0BkgLGAskC2AOpA7wDwCAQIBMgGCAcICAgJiAwIDkgRCCsIRMhIiEmIS4iAiIGIg8iESIVIhkiHiIrIkgiYCJkJcr7Af///+P/wv+R/4L/c/9n/1H/Tf86/gf+Bv34/S39G/0Y4Mngx+DE4MPgwuC/4LbgruCl4D7f2N/K38ffwN7t3ure4t7h3t/e3N7Z3s3esd6a3pfbMwX9AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGEAhoeJi5OYnqOipKalp6mrqqytr66wsbO1tLa4t7y7vb7icmRlaeR4oXBr7HZq+oia93P7/Gd37/Lx2PhsfNaouoFjbvbM+fBtfeVigoWXxcba29/g3N25/cHJ6ern6P7/43ne4eaEjIONio+QkY6VlgCUnJ2bws3UcdDR0nrV084AAAAAACYAJgAmACYAQABSAIIA0AEOAWYBcgGMAaYBxAHYAeYB8gIEAhQCTgJgAowCxALgAwwDOgNOA5ADvAPaA/IEBgQaBCwEYAS6BNYFEgU4BWAFeAWMBbQFzAXYBfYGEgYiBkAGWAZ6BpwGyAbwByQHNgdgB3QHlAewB8YH3AfuB/4IEAgkCDAIPgh2CKIIxAjwCSAJQAl4CZYJrgnUCeoJ9gouClIKcAqcCsgK6AsYCzoLXgtwC5ALqAvKC+AMEgwgDFAMcgxyDIoMvAzkDRwNQg1UDaQNwg4EDjoOVA5kDnAOsg7ADuAO/A8mD1wPag+SD6wPvg/mD/gQGhA2EGYQpBD2ESwRThFwEZYRzhIAEjYSXBKkEsIS4BMCEzATRBNYE3ATlBPGE/oUIhRKFHYUshTqFQQVPhVuFZ4V0hYSFjAWVBaOFs4XDhdSF6YX9hhKGKIY5hkeGVYZkhnYGewaABoYGjwadBqyGtYa+hsiG1objhu0G+4cGhxGHHYcshzaHQYdPh1KHWQdfB2wHfYeNh5yHqAewh7kHxIfJB82H0QfXh9wH5Ifrh/OH+IgEiA6IGIgbiB6IIYglCCiILAgxCDYIOwhAiEgITIhWiGuIb4h0CHgIiAiWCKAIrAi6iMkI0QjXCN6I4gjmCOqI8okIiRUJKIkwiTeJPolJCVYJX4lsiXYJg4mMCZCJmwmogAFAAAAAAH0ArwAAwAGAAkADAAPAAAxESERAxMhExcRASELARETAfT6qv6syKr+jgFUqsiqArz9RAGLAP/+1P8B/v3VAP8BLP4CAP8AAgCJ//oA6QLEAAMACwAAExEjEQI0NjIWFAYi1zwSHCgcHCgCxP32Agr9UigcHCgcAAAAAAIAoQHgAWcCxAADAAcAABM1MxUzNTMVoTxOPAHg5OTk5AAAAAIADQAAAfsCxAAbAB8AADM3IzUzNyM1MzczBzM3MwczFSMHMxUjByM3IwcTNyMHWx5scxZscx40H4sfNB9scxVscx40HosesBWKFeUwnDDj4+PjMJww5eXlARWcnAAAAAMAIf+xAd8DEwAGAA4AMQAAARE+ATU0LwERDgEVFBYXEzUiJic3HgEXEScuATU0Njc1MxUyFwcuASMRFx4BFRQGBxUBGTlLWVsyRjQzEThuIjkYTCtHQTJySDB6PzcXRiVGNUt1UQE6/vACUTxQIWYBCglJNjE5Ev4bQzcyJygwAgEiGhhhL09sB0NDWSgjKP7mGBNYSFJqBUMAAAUAJv/eAwkC5gAHAA8AFwAfACMAABI0NjIWFAYiJhQWMjY0JiIANDYyFhQGIiYUFjI2NCYiCQEXASZljmVlji9FYkVFYgEQZY5lZY4vRWJFRWL+cgHILv43Ad2OZWWOZd5kRERkRP2/jmVljmXeZEREZET+5ALsHP0UAAADADv/7gKyAtYAIAAvADsAAAEXNzMHFyMnDgEjIiY1ND4CNy4CNTQ2MzIWFRQOAgMiBhUUHgEXPgM1NCYTJw4EFRQWMzIBO6xmRIChWWouaEZcfBg4KSkbHR5oSkFfGDYoLy0+HRkWHSAvFjhoxBkbKxYRXERhAYS2uOKpcj5BclwnPzUdGSEmQx5KV1RCJDovGQEAOCwXOR8aDxMlLBsqNf39zA8SIh4sGEJSAAAAAAEAZAHgAKACxAADAAATNTMVZDwB4OTkAAEAOv9kAPgC3AAMAAATFw4BFRQXBy4BNTQ2xTM/Q4IvRUpJAtwgT+Bt0M4eX+pzd+kAAAABAAz/ZADKAtwADAAAFyc+ATU0JzceARUUBj8zP0OCL0VKSZwgT+Bt0M4eX+pzd+kAAAAAAQAmAWYBlgLEAA4AABMVNxcHFwcnByc3JzcXNfeQD5BbJV5ZKFuSDpMCxJgwMC96HX19HXoyLTCYAAAAAQBOADACTAIuAAsAABM1MzUzFTMVIxUjNU7nMOfnMAEXMOfnMOfnAAEAMv92ALoAWgADAAAXNzMHMkJGTYrk5AAAAAABACsA0gEiAQgAAwAANzUzFSv30jY2AAABAFL/+gCyAFoALine truncated
}
@font-face {
font-family: source;
src: url('data:font/ttf;base64,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 truncated
}
@font-face {
font-family: exo2;
src: url('data:font/otf;base64,T1RUTwALAIAAAwAwQ0ZGIF65aMUAAA4EAACDv0dQT1NyBlyKAACeSAAAYTJHU1VCWwJIAAAAmQgAAAU+T1MvMmqogawAAAEgAAAAYGNtYXC4LHjGAAAGoAAAB0JoZWFkA3NjtwAAALwAAAA2aGhlYQc+BIEAAAD0AAAAJGhtdHg+CUgTAACRxAAAB0RtYXhwAdFQAAAAARgAAAAGbmFtZVDBsvwAAAGAAAAFHnBvc3T/uAAyAAAN5AAAACAAAQAAAAEAQYT55LNfDzz1AAMD6AAAAADQhBABAAAAANCEEAH/c/7tA+EDpwAAAAMAAgAAAAAAAAABAAAD5/83AAAEBf9z/3MD4QABAAAAAAAAAAAAAAAAAAAB0QAAUAAB0QAAAAMByAGQAAMACAKKAlgAAABLAooCWAAAAV4AMgEkAAAAAAUGAAAAAAAAAAACBwAAAAAAAAAAAAAAAFVLV04AQAAg+wICvP83ASsD5wDJIAAAlwAAAAAB5wKyAAAAIAADAAAAFgEOAAEAAAAAAAAATwAAAAEAAAAAAAEABQBPAAEAAAAAAAIAEQBUAAEAAAAAAAMAIABlAAEAAAAAAAQAFwCFAAEAAAAAAAUAPACcAAEAAAAAAAYAFQDYAAEAAAAAAAkADQDtAAEAAAAAAAwAEwD6AAEAAAAAAA4APwENAAMAAQQJAAAAngFMAAMAAQQJAAEAHgHqAAMAAQQJAAIADgIIAAMAAQQJAAMAQAIWAAMAAQQJAAQALgJWAAMAAQQJAAUAeAKEAAMAAQQJAAYAKgL8AAMAAQQJAAkAGgMmAAMAAQQJAAwAJgNAAAMAAQQJAA4AfgNmAAMAAQQJABAACgPkAAMAAQQJABEAIgPuQ29weXJpZ2h0IKkgMjAxNCwgTmF0YW5hZWwgR2FtYSAod3d3Lm5kaXNjb3ZlcmVkLmNvbSAuIGluZm8oYXQpbmRpc2NvdmVyZWQuY29tKUV4byAyUmVndWxhciBDb25kZW5zZWQxLjAwMTtVS1dOO0V4bzItUmVndWxhckNvbmRlbnNlZEV4byAyIFJlZ3VsYXIgQ29uZGVuc2VkVmVyc2lvbiAxLjAwMTtQUyAwMDEuMDAxO2hvdGNvbnYgMS4wLjcwO21ha2VvdGYubGliMi41LjU4MzI5RXhvMi1SZWd1bGFyQ29uZGVuc2VkTmF0YW5hZWwgR2FtYXd3dy5uZGlzY292ZXJlZC5jb21odHRwOi8vc2NyaXB0cy5zaWwub3JnL2Ntcy9zY3JpcHRzL3BhZ2UucGhwP3NpdGVfaWQ9bnJzaSZpZD1PRkwAQwBvAHAAeQByAGkAZwBoAHQAIACpACAAMgAwADEANAAsACAATgBhAHQAYQBuAGEAZQBsACAARwBhAG0AYQAgACgAdwB3AHcALgBuAGQAaQBzAGMAbwB2AGUAcgBlAGQALgBjAG8AbQAgAC4AIABpAG4AZgBvACgAYQB0ACkAbgBkAGkAcwBjAG8AdgBlAHIAZQBkAC4AYwBvAG0AKQBFAHgAbwAgADIAIABDAG8AbgBkAGUAbgBzAGUAZABSAGUAZwB1AGwAYQByADEALgAwADAAMQA7AFUASwBXAE4AOwBFAHgAbwAyAC0AUgBlAGcAdQBsAGEAcgBDAG8AbgBkAGUAbgBzAGUAZABFAHgAbwAgADIAIABSAGUAZwB1AGwAYQByACAAQwBvAG4AZABlAG4AcwBlAGQAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMQA7AFAAUwAgADAAMAAxAC4AMAAwADEAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARQB4AG8AMgAtAFIAZQBnAHUAbABhAHIAQwBvAG4AZABlAG4AcwBlAGQATgBhAHQAYQBuAGEAZQBsACAARwBhAG0AYQB3AHcAdwAuAG4AZABpAHMAYwBvAHYAZQByAGUAZAAuAGMAbwBtAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBjAG0AcwAvAHMAYwByAGkAcAB0AHMALwBwAGEAZwBlAC4AcABoAHAAPwBzAGkAdABlAF8AaQBkAD0AbgByAHMAaQAmAGkAZAA9AE8ARgBMAEUAeABvACAAMgBSAGUAZwB1AGwAYQByACAAQwBvAG4AZABlAG4AcwBlAGQAAAAAAAMAAAADAAACFAABAAAAAAAcAAMAAQAAAhQABgH4AAAACQD3AZUAAAAAAAABlQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVAXUBfAF3AZoBrgG2AX0BhQGGAW8BsAFzAYkBeAF/AV4BXwFgAWEBYgFjAWQBZQFmAWcBcgF+AacBogGjAXoBuAABAAwADQASABYAHwAgACQAJgAvADAAMgA4ADkAPwBJAEsATABQAFUAWgBjAGQAaQBqAG8BgwFwAYQBtwGAAcsAcwB+AH8AhACIAJEAkgCWAJgAoQCiAKQAqgCrALEAuwC9AL4AwgDIAM0A1gDXANwA3QDiAYEBuQGCAZ8AAAAFAAkAEAAXAD4AQgBdAHQAeAB2AHcAfAB7AIIAiQCOAIsAjACaAJ0AmwCcALAAsgC1ALMAtAC5AM4A0QDPANABvAG+AZgBnAHBAXEBvwDHAcABuwHCAcMByQGsAAsARgGlAbEBqAGkAZ0AAAGtAbQBsgFdAaYA8gDzAVsAfQC4AXsBdgGpAbMBlwGeAAABiwGMAXQBlgAGAAoARwBIALoBiAGHAZABkQGSAZMBoAG1AOAAbQFoAZsBjQGOAO0A7gG9AXkBlAGPAa8ABAAZAAIAGgAcACgAKQAqACwAQABBAAAAQwBbAFwAXgCZAccB0AHNAcQBygHPAcYBzAHOAcUABAUuAAAAjACAAAYADAAvADkAfgC0AQcBEwEbASMBJwErATMBNwFIAU0BWwFnAWsBfgGSAhsCxwLdA5QDqQO8A8AEDwQTBBUEGQQaBCMELwQzBDUEOQQ6BEMETwRfBJEEsQS3BLoEwB6FHvMgFCAaIB4gIiAmIDAgOiBEIKwhIiICIgUiDyISIhoiHiIrIkgiYCJlJcr7Av//AAAAIAAwADoAoAC2AQoBFgEeASYBKgEuATYBOQFKAVABXgFqAW4BkgIYAsYC2AOUA6kDvAPABAEEEAQUBBYEGgQbBCQEMAQ0BDYEOgQ7BEQEUQSQBLAEtgS6BMAegB7yIBMgGCAcICAgJiAwIDkgRCCsISIiAiIFIg8iESIaIh4iKyJIImAiZCXK+wH//wAAAS4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAA/cb9sv2g/Z0AAPzk/Ob85/zo/OkAAPz4/Pr8+/z8/P0AAAAAAAAAAAAA/Gz8ZwAAAAAAAOF6AAAAAOFO4X/hVOEk4O/goN+r35zfowAA35nfh99731bfTAAA2+sF7AABAIwAAACoATABWAH6AgwCFgIgAiICJAIuAjACTgJUAmoCfAJ+AAACnAKiAqQAAAAAAAAAAAKmAAAAAAAAAAAAAAK4AAAAAAAAAAAAAALEAtoC9gL4AvoAAAAAAvgDAgMEAAADBAMIAAAAAAAAAAAAAAAAAAAAAAAAAvoAAAAAAAAAAAAAAvIAAAAAAAABlQF1AXwBdwGaAa4BtgF9AYUBhgFvAbABcwGJAXgBfwFyAX4BpwGiAaMBegG4AAEADAANABIAFgAfACAAJAAmAC8AMAAyADgAOQA/AEkASwBMAFAAVQBaAGMAZABpAGoAbwGDAXABhAG3AYABywBzAH4AfwCEAIgAkQCSAJYAmAChAKIApACqAKsAsQC7AL0AvgDCAMgAzQDWANcA3ADdAOIBgQG5AYIBnwGWAXYBmAGcAZkBnQG6AcEByQG7APIBiwGpAYoBwAHNAb4BsQFtAW4BwwG/AXkBxgFsAPMBjAFqAWkBawF7AAYAAgAEAAoABQAJAAsAEAAcABcAGQAaACwAKAApACoAEwA+AEMAQABBAEcAQgGrAEYAXgBbAFwAXQBrAEoAxwB4AHQAdgB8AHcAewB9AIIAjgCJAIsAjACdAJoAmwCcAIUAsAC1ALIAswC5ALQBoAC4ANEAzgDPANAA3gC8AOAABwB5AAMAdQAIAHoADgCAABEAgwAPAIEAFACGABUAhwAdAI8AGwCNAB4AkAAYAIoAIQCTACMAlQAiAJQAJQCXAC0AnwAuAKAAKwCZACcAngAxAKMAMwClADUApwA0AKYANgCoADcAqQA6AKwAPACuADsArQA9AK8ARQC3AEQAtgBIALoATQC/AE8AwQBOAMAAUQDDAFMAxQBSAMQAWADLAFcAygBWAMkAYADTAGIA1QBfANIAYQDUAGYA2QBsAN8AbQBwAOMAcgDlAHEA5ABUAMYAWQDMAccBxQHEAcoBzwHOAdABzAD8ASMA+AEcARsBHgEfASABGQEaASEBAwEBAQ0BFAEOAQ8BEQEQARIBEwEXARgBFgEdASIBFQFCAUMBRQFEAUYBRwFLAUwBSgFRAVYBSQEwAVcBLAFQAU8BUgFTAVQBTQFOAVUBNwE1AUEBSAD5AS0BJAFYASUBWQBoANsAZQDYAGcA2gBuAOEBiAGHAZABkQGPAbwBvQFxAbQBqgGoAaQAAAADAAAAAAAA/7UAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAEAgABAQEWRXhvMi1SZWd1bGFyQ29uZGVuc2VkAAEBASP4EAD5BwH5CAL4GAT7Ifun+nX6OwUcFFkPHBf6EbUceNUSAO4CAAEABwAOABUAGwAhACsAMQA3AD0ARwBOAFUAWwBnAHEAdQB3AIEAiACPAJsAoQCnAKsAtwC9AMMAzwDSAN8ALine truncated
}
body {background: linear-gradient(to bottom, #ccc, #444);
font-family: exo2;
margin: 10px 10px 10px 10px;
width: 98%;
}
a:link {text-decoration: none}
a:visited {text-decoration:none}
a:hover {text-decoration:none}
h1 {font: 20pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
color: #808080;
opacity: 0.9;}
h2 {font: 14pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
h3 {font: 12pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
p {font-family: 8pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
ul {font-family: 8pt exo2;}
li {font-family: 8pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
.project_header {background: #88c;
color: #fff;
padding: 5px;
font-weight: 400;
font-size: 14px;
}
.pageclass {background: #fff;
border-radius: 10px;
border: 2pt outset;
border-spacing: 0px;
padding: 0px;
max-width: 1050px;
min-width: 1050px
margin: auto;
text-shadow: 0 0 0.1em #CCC, 0 0 0.1em #87F;
font-family: exo2;
font-size: 10pt;
}
input {background: #fff;
border: 1px inset;
font-family: exo2;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
-o-border-radius: 2px;
-ms-border-radius: 2px;
border-radius: 0px;
}
select {background: #fff;
font-family: exo2;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
border: 1px solid #444;
padding: 1px 2px 1px 2px;
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
-o-border-radius: 7px;
-ms-border-radius: 7px;
border-radius: 0px;
}
textarea.fieldinput {background: #fff;
resize: none;
font-family: exo2;
border: 1px solid #444;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
padding: 2px 2px 2px 5px;
-webkit-border-radius: 0px;
-moz-border-radius: 0px;
-o-border-radius: 0px;
-ms-border-radius: 0px;
border-radius: 0px;
}
textarea.fieldinputerror {background: #fcc;
resize: none;
font-family: exo2;
border: 1px solid #f00;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
padding: 2px 2px 2px 5px;
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
-o-border-radius: 7px;
-ms-border-radius: 7px;
border-radius: 0px;
}
.sectionframe {
position: relative;
font-family: exo2;
border: 0px outset;
font-size: 10pt;
margin: 3px;
background: #808080;
padding: 0px;
border-radius: 0px;
}
.sectionframe:after{
content: '';
position: absolute;
top: 1px;
left: 1px;
width: calc(100% - 2px);
height: 12px;
background: linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.2));
}
.sectionframecontents {
padding: 10px;
text-align: justify;
color: #000000;
border: 1pt inset;
background-color: #F8F8FF;
}
.sectionframeheading {
# background: linear-gradient(to bottom, #fff, #88f);
background: #2099f0;
color: #fff;
border: 1pt outset;
vertical-align: middle;
padding: 5px;
margin: 0px;
font-family: 12pt avenir;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
border-radius: 0px 0px 0px 0px;
}
.sectionframeheading2 {
background: #C0C0C0;
font-family: exo2;
font-size: 20pt;
padding: 3px
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
border-radius: 3px;
}
.heading {background: #fff;
border-radius: 7px 7px 0px 0px;
max-height: 80px;
}
.entryform {
background: #2099f0;
padding: 3px 3px 3px 3px;
margin: 0px;
border: 0px solid black;
border-radius: 0px;
}
.entryform table {
font: 12px exo2;
background: #c5e1f4;
border: 0pt solid black;
}
.footer {
background: linear-gradient(to bottom, #000, #888);
font: 8pt verdana;
color: #FFFFFF;
text-align: center;
border-radius: 0px 0px 6px 6px;}
.menubar {
# background: linear-gradient(to bottom, #fff, #2099f0);
padding: 0px 0px 0px 0px;
margin: 0px;
}
.baritem {
background-image: linear-gradient(#2099f0, #c3ddef);
color: #fff;
position: relative;
font-family: exo2;
font-weight: 1000;
font-size: 8pt;
padding: 2px 10px;
margin: 10px 0px 0px 0px;
border: solid;
border-width: 0px 0px 1px 0px;
border-color: #fff;
border-radius: 5px 5px 0px 0px;
border-style: outset;
transition: background 2s;
}
.baritem:after{
content: '';
position: absolute;
top: 1px;
left: 1px;
width: calc(100% - 2px);
height: 50%;
z-index: 5;
pointer-events: none;
border-radius: 4px 4px 0px 0px;
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
}
.baritemselected {
background: #ccc;
color: #000;
font-family: exo2;
font-weight: 1000;
font-size: 8pt;
padding: 2px 10px;
margin: 5px 10px 0px 0px;
border: solid;
border-width: 1px 1px 0px 1px;
border-color: #fff;
border-radius: 5px 5px 0px 0px;
border-style: outset;
transition: background 2s;
}
.baritem:hover {
background: #c3ddef;
color: #fff;
transition: background 5s;
}
.panel {background: #ccc;
margin: 10px;
padding: 3px;
border: 0pt inset;}
.panel table {
font: 12px exo2;
padding: 5px;
background: #c5e1f4;
border: 1pt solid black;
border-radius: 9px;
}
.panel table th {
background: #2099f0;
color: #fff;
padding: 2px 3px 3px 3px;
border: 0pt;
}
.panel table td {
background: #c5e1f4;
color: #000;
padding: 2px 3px 3px 3px;
border: 0pt;
}
.left {
text-align: right;
padding-left: 20px;
border-radius: 9px 0px 0px 9px;
}
.right {
border-radius: 0px 9px 9px 0px;
padding-right: 20px;
}
.featured {background: #fff}
.buttonbay {
width: 100%;
text-align: center;
}
.fieldinput {
font-family: exo2;
border-radius: 7px;
padding: 2px 2px 2px 5px;
border: 1px solid #ccc;
}
.fieldinputerror {
font-family: exo2;
border-radius: 7px;
padding: 2px 2px 2px 5px;
background: #fcc;
border: 1px solid red;
}
.fieldprompt {
font-size: 10pt;
text-align: right;
background: #00f;
}
.message {font: bold 10pt verdana; color: #FF0000}
.collection_heading {font: bold 12pt verdana; color: #FFFFFF}
.collection_text {font: 10pt verdana; color: #FFFFFF}
.collection_tracks_background {font: 8pt bold verdana; color: #FFFFFF; background: #10003F}
.warning {font: 10pt verdana; background: #FF0000; color: #FFFFFF; text-align: justify}
.button {
position: relative;
display: inline-block;
font-size: 10pt;
font-weight: 400;
color: #fff;
border: 2px outset;
background: #2099f0;
padding: 2px 10px 3px 10px;
margin: 0px;
border-radius: 5px;
}
.button:after{
content: '';
position: absolute;
top: 0px;
left: 0px;
width: calc(100% - 0px);
height: 10px;
z-index: 5;
border-radius: 3px;
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
}
.code {
font-family: source;
font-weight: 400;
font-size: 10pt;
border: 1pt solid black;
background: #ff8;
padding: 5px;
}
.controlframe {background: #888;
padding: 5px 5px 15px 10px;
}
.vm {position: relative;
height: 55px;
}
.vmname {position: absolute;
left: 0px; top: 0px;
height: 55px;
}
.vmcover {position: absolute;
left: 15px;
top: 30px;
font: 12px 'Dot Matrix';
background: #bbb;
color: white;
border: 1pt solid white;
border-radius: 5px;
padding: 2px 10px 2px 10px;
}
</style></head><body>
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">Support E-Mail</div>
</div>
</div>
<div style="float: right; text-align: right; margin-right: 10px; margin-top: 5px;"></div>
</div>
<div class="menubar">
<table class="menubar" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td style="border-bottom: 1pt solid #bbb; width: 20px;">&nbsp;</td>
<td class="baritem"><a href="/main">HOME</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/services">SERVICES</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/hosting">HOSTING</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/documents">DOCUMENT MGMT</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/siptrunk">SIP TRUNKING</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/vst">VST</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/modular1">MODULAR1</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/modular1_patches">MODULAR1 PATCHES</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/synthedit">SYNTHEDIT</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/wordpress">WORDPRESS</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/opensource">OPEN SOURCE</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/contact">CONTACT</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
</ifrow>
</if>
<td class="baritem"><a href="/login">LOGIN</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td style="border-bottom: 1pt solid #bbb; width: 10px;">&nbsp;</td>
</tr>
</table>
</div>
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
<a href="/jet">JET</a><br>
<a href="/synthmax">SYNTHMAX</a><br>
<a href="/serverframework">SERVER CORE FRAMEWORK</a>
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="sectionframe"><div class="sectionframeheading"><b>Contact</b></div><div class="sectionframecontents">
<p>Please contact us by phone at <b>(702) 755-8235</b>.</p>
<p>To e-mail us, just enter text below and press the buttons:</p>
<entryform>
<field prompt="Name" type="text" name="name" size="50" maxlength="50">
<field prompt="E-Mail" type="text" name="email" size="50" maxlength="50">
<field prompt="Message" type="multiline" name="message" rows="5" cols="60">
<captcha>
<buttonbay>
Send Message
</buttonbay>
</entryform>
<messages>
<script src='https://www.google.com/recaptcha/api.js'></script>
</div></div>
</div>
<div style="clear: both;"></div>
</div>
</div>
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
<include file="../src/SESSIONCTL.tag">
<include file="../src/barant.tag">
<include file="../src/project.tag">
<set name="host" value="localhost">
<set name="database" value="barant">
<set name="user" value="barant">
<set name="password" value="uversa1960">
<database name="$[database]" host="$[host]" user="$[user]" password="$[password]" sessionid="">
<sessionctl page="help">
<defaultnav>
<setpage name="help">
</defaultnav>
<link rel="stylesheet" href="/assets/main.css">
<link rel="stylesheet" href="/assets/control.css">
</sessionctl>
</database>
+7 -12
View File
@@ -1,4 +1,3 @@
#api GET /hosting
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>HOSTING</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">HOSTING</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,14 +463,10 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<retain name="sku">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<div class="sectionframe"><div class="sectionframeheading"><b>Virtual Machine Hosting</b></div><div class="sectionframecontents">
<p>We offer several virtual machine hosting options. Everything to run your business.</p>
@@ -531,7 +526,7 @@ telephony solution.</p>
<hr>
</div></div>
<set name="pagemenu" value="davidarant" />
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -539,4 +534,4 @@ telephony solution.</p>
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+6 -11
View File
@@ -1,4 +1,3 @@
#api GET /jet
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>barant.com - JET Extension Tags</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">barant.com - JET Extension Tags</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div class="sectionframe"><div class="sectionframeheading"><b>JET Extension Tags</b></div><div class="sectionframecontents">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content"><div class="sectionframe"><div class="sectionframeheading"><b>JET Extension Tags</b></div><div class="sectionframecontents">
<p>Complete reference documentation go <a href="/jet/contents">here</a>.</p>
@@ -523,7 +518,7 @@ identifier.</li>
<li>Pretty URLS with clean navigation.</li>
</ul>
</div></div>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -531,4 +526,4 @@ identifier.</li>
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
-506
View File
@@ -1,506 +0,0 @@
#api GET /main
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>BARANT Technology Group</title><style>
.rotate {
animation: rotation 1s infinite linear;
}
@keyframes rotation {
from {
transform: rotate(0deg);
}
to {
transform: rotate(359deg);
}
}
@font-face {
font-family: avenir;
src: url('data:font/ttf;base64,AAEAAAAQAQAABAAAQkFTRYsllDEAAGo4AAAAUEZGVE1Xn89+AABqHAAAABxHREVGBT8F8QAAYYgAAABOR1BPU8yRwuEAAGPYAAAGREdTVULybtNsAABh2AAAAf5PUy8yWLpvKAAAAYgAAABgY21hcGu/0oYAAAYAAAACimdhc3D//wADAABhgAAAAAhnbHlmDlZkhgAACpwAAE1EaGVhZAfHj+4AAAEMAAAANmhoZWEHAANTAAABRAAAACRobXR4ESwuGgAAAegAAAQYbG9jYYMHlpAAAAiMAAACEG1heHABUABFAAABaAAAACBuYW1lnUqtLgAAV+AAAAbGcG9zdB3l48UAAF6oAAAC2AABAAAAAgj1LRvsCl8PPPUACwPoAAAAANKzIbUAAAAA0rMhtf9Z/wYD6AOkAAAACAACAAAAAAAAAAEAAAL0/wwAyAPo/1n/WQPoAAEAAAAAAAAAAAAAAAAAAAEFAAEAAAEHAEIABwAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAwILASwABQAEAooCWAAAAEsCigJYAAABXgAyARgAAAILBAICAgMCAgQAAAADAAAAAAAAAAAAAAAAQURCRQAAACD7AgL0/wwAyAOkAPogAAABAAAAAAHUAsQAAAAgAAQB9AAAAAAAAAFNAAABBAAAAXIAiQIIAKECCAANAggAIQMvACYCwAA7AQQAZAEEADoBBAAMAbwAJgKaAE4BBAAyAU0AKwEEAFIBcgAJAggAGgIIAF8CCAApAggAKQIIABcCCAApAggAHAIIACkCCAApAggAHAEEAFIBBAAyApoAUgKaAE4CmgBSAc8ALwMgACwCrQAFAnYAYQLAADMC5QBYAlEAYQIsAGEDCgAzAtIAYQEEAGEB4gAHAmMAYQH0AGEDeQBaAwoAYQNCADMCPgBhA0IAMwJRAGECLAA1Aj4ADAKsAFQCUf/9A7AABQJjAAECPv/6AiwAFwEEAEoBcgAFAQQAJAKaAFIB9AAAAPD/+gIHADsCYwBDAeEANgJjADYCLAA2ASgAEgJjADwCLABQAPAASwDw/+IB4QBQAPAAWgNUAEsCLABLAlIANgJjAEMCYwA2AU0ASwGqABwBTQAOAiwASwHPAA8CwAAPAeEABgHPAA8BqgAbAU0AQgDeAFcBTQA7ApoAZwEEAAABcgCJAggANAIIADoCCAALAggAAADeAFcCCABAAPD/6QMgABwBUQAiAeEAPwKaAE4BTQArAyAAHADw//QBkAA4ApoATgFSABcBUgAbAPAAPgIsAEsCWAA8AQQAUgDwACEBUgBDAYIAIgHhAEcDCgAkAwoAHAMKABQBzwAlAq0ABQKtAAUCrQAFAq0ABQKtAAUCrQAFA57/+wLAADMCUQBhAlEAYQJRAGECUQBhAQQABAEEAEgBBP/zAQT/8wLlAAoDCgBhA0IAMwNCADMDQgAzA0IAMwNCADMCmgBkA0IAMwKsAFQCrABUAqwAVAKsAFQCPv/6Aj4AYQJRAFACBwA7AgcAOwIHADsCBwA7AgcAOwIHADsDVAA2AeEANgIsADYCLAA2AiwANgIsADYA8P/6APAAPgDw/+kA8P/pAlIANgIsAEsCUgA2AlIANgJSADYCUgA2AlIANgKaAE4CUgAnAiwASwIsAEsCLABLAiwASwHPAA8CYwBDAc8ADwDwAFoB9AAZAPAABgOwADsDiwAsAiwANQGqABwCPv/6AiwAFwGqABsCCP/wAPD/6QDw/+YA8P/0APD/6ADwAEsA8AAbAPAACgDw/9wA8P/1AqQAMQIsAEsCEgALAU0AKwH0AAAD6AAAAQQAPgEEAD4BBAA+AggAaQIIAGkCCABpAggAJgIIACYB9ABJA+gAdwPVABoBOwA/ATsARwCo/1kCCAAQAcQAHgPeAFQCpAAxA3MAIgH9ACoCXQAfAowAGgIJABYCmgBOAKj/WQEEAFICGwAhAusAMQFPAA0CGQAsAhkAMQIZADECGQAyAhsANQIHABICBwASAgcAEgIHABIBUQAiAYIAIgFSAEMAFwAbAAAAAwAAAAMAAAAcAAEAAAAAAYQAAwABAAAAHAAEAWgAAABWAEAABQAWAH4A/wExAUIBUwFhAXgBfgGSAscCyQLdA6kDvAPAIBAgFCAaIB4gIiAmIDAgOiBEIKwhEyEiISYhLiICIgYiDyISIhUiGiIeIisiSCJgImUlyvsC//8AAAAgAKABMQFBAVIBYAF4AX0BkgLGAskC2AOpA7wDwCAQIBMgGCAcICAgJiAwIDkgRCCsIRMhIiEmIS4iAiIGIg8iESIVIhkiHiIrIkgiYCJkJcr7Af///+P/wv+R/4L/c/9n/1H/Tf86/gf+Bv34/S39G/0Y4Mngx+DE4MPgwuC/4LbgruCl4D7f2N/K38ffwN7t3ure4t7h3t/e3N7Z3s3esd6a3pfbMwX9AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGEAhoeJi5OYnqOipKalp6mrqqytr66wsbO1tLa4t7y7vb7icmRlaeR4oXBr7HZq+oia93P7/Gd37/Lx2PhsfNaouoFjbvbM+fBtfeVigoWXxcba29/g3N25/cHJ6ern6P7/43ne4eaEjIONio+QkY6VlgCUnJ2bws3UcdDR0nrV084AAAAAACYAJgAmACYAQABSAIIA0AEOAWYBcgGMAaYBxAHYAeYB8gIEAhQCTgJgAowCxALgAwwDOgNOA5ADvAPaA/IEBgQaBCwEYAS6BNYFEgU4BWAFeAWMBbQFzAXYBfYGEgYiBkAGWAZ6BpwGyAbwByQHNgdgB3QHlAewB8YH3AfuB/4IEAgkCDAIPgh2CKIIxAjwCSAJQAl4CZYJrgnUCeoJ9gouClIKcAqcCsgK6AsYCzoLXgtwC5ALqAvKC+AMEgwgDFAMcgxyDIoMvAzkDRwNQg1UDaQNwg4EDjoOVA5kDnAOsg7ADuAO/A8mD1wPag+SD6wPvg/mD/gQGhA2EGYQpBD2ESwRThFwEZYRzhIAEjYSXBKkEsIS4BMCEzATRBNYE3ATlBPGE/oUIhRKFHYUshTqFQQVPhVuFZ4V0hYSFjAWVBaOFs4XDhdSF6YX9hhKGKIY5hkeGVYZkhnYGewaABoYGjwadBqyGtYa+hsiG1objhu0G+4cGhxGHHYcshzaHQYdPh1KHWQdfB2wHfYeNh5yHqAewh7kHxIfJB82H0QfXh9wH5Ifrh/OH+IgEiA6IGIgbiB6IIYglCCiILAgxCDYIOwhAiEgITIhWiGuIb4h0CHgIiAiWCKAIrAi6iMkI0QjXCN6I4gjmCOqI8okIiRUJKIkwiTeJPolJCVYJX4lsiXYJg4mMCZCJmwmogAFAAAAAAH0ArwAAwAGAAkADAAPAAAxESERAxMhExcRASELARETAfT6qv6syKr+jgFUqsiqArz9RAGLAP/+1P8B/v3VAP8BLP4CAP8AAgCJ//oA6QLEAAMACwAAExEjEQI0NjIWFAYi1zwSHCgcHCgCxP32Agr9UigcHCgcAAAAAAIAoQHgAWcCxAADAAcAABM1MxUzNTMVoTxOPAHg5OTk5AAAAAIADQAAAfsCxAAbAB8AADM3IzUzNyM1MzczBzM3MwczFSMHMxUjByM3IwcTNyMHWx5scxZscx40H4sfNB9scxVscx40HosesBWKFeUwnDDj4+PjMJww5eXlARWcnAAAAAMAIf+xAd8DEwAGAA4AMQAAARE+ATU0LwERDgEVFBYXEzUiJic3HgEXEScuATU0Njc1MxUyFwcuASMRFx4BFRQGBxUBGTlLWVsyRjQzEThuIjkYTCtHQTJySDB6PzcXRiVGNUt1UQE6/vACUTxQIWYBCglJNjE5Ev4bQzcyJygwAgEiGhhhL09sB0NDWSgjKP7mGBNYSFJqBUMAAAUAJv/eAwkC5gAHAA8AFwAfACMAABI0NjIWFAYiJhQWMjY0JiIANDYyFhQGIiYUFjI2NCYiCQEXASZljmVlji9FYkVFYgEQZY5lZY4vRWJFRWL+cgHILv43Ad2OZWWOZd5kRERkRP2/jmVljmXeZEREZET+5ALsHP0UAAADADv/7gKyAtYAIAAvADsAAAEXNzMHFyMnDgEjIiY1ND4CNy4CNTQ2MzIWFRQOAgMiBhUUHgEXPgM1NCYTJw4EFRQWMzIBO6xmRIChWWouaEZcfBg4KSkbHR5oSkFfGDYoLy0+HRkWHSAvFjhoxBkbKxYRXERhAYS2uOKpcj5BclwnPzUdGSEmQx5KV1RCJDovGQEAOCwXOR8aDxMlLBsqNf39zA8SIh4sGEJSAAAAAAEAZAHgAKACxAADAAATNTMVZDwB4OTkAAEAOv9kAPgC3AAMAAATFw4BFRQXBy4BNTQ2xTM/Q4IvRUpJAtwgT+Bt0M4eX+pzd+kAAAABAAz/ZADKAtwADAAAFyc+ATU0JzceARUUBj8zP0OCL0VKSZwgT+Bt0M4eX+pzd+kAAAAAAQAmAWYBlgLEAA4AABMVNxcHFwcnByc3JzcXNfeQD5BbJV5ZKFuSDpMCxJgwMC96HX19HXoyLTCYAAAAAQBOADACTAIuAAsAABM1MzUzFTMVIxUjNU7nMOfnMAEXMOfnMOfnAAEAMv92ALoAWgADAAAXNzMHMkJGTYrk5AAAAAABACsA0gEiAQgAAwAANzUzFSv30jY2AAABAFL/+gCyAFoALine truncated
}
@font-face {
font-family: source;
src: url('data:font/ttf;base64,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 truncated
}
@font-face {
font-family: exo2;
src: url('data:font/otf;base64,T1RUTwALAIAAAwAwQ0ZGIF65aMUAAA4EAACDv0dQT1NyBlyKAACeSAAAYTJHU1VCWwJIAAAAmQgAAAU+T1MvMmqogawAAAEgAAAAYGNtYXC4LHjGAAAGoAAAB0JoZWFkA3NjtwAAALwAAAA2aGhlYQc+BIEAAAD0AAAAJGhtdHg+CUgTAACRxAAAB0RtYXhwAdFQAAAAARgAAAAGbmFtZVDBsvwAAAGAAAAFHnBvc3T/uAAyAAAN5AAAACAAAQAAAAEAQYT55LNfDzz1AAMD6AAAAADQhBABAAAAANCEEAH/c/7tA+EDpwAAAAMAAgAAAAAAAAABAAAD5/83AAAEBf9z/3MD4QABAAAAAAAAAAAAAAAAAAAB0QAAUAAB0QAAAAMByAGQAAMACAKKAlgAAABLAooCWAAAAV4AMgEkAAAAAAUGAAAAAAAAAAACBwAAAAAAAAAAAAAAAFVLV04AQAAg+wICvP83ASsD5wDJIAAAlwAAAAAB5wKyAAAAIAADAAAAFgEOAAEAAAAAAAAATwAAAAEAAAAAAAEABQBPAAEAAAAAAAIAEQBUAAEAAAAAAAMAIABlAAEAAAAAAAQAFwCFAAEAAAAAAAUAPACcAAEAAAAAAAYAFQDYAAEAAAAAAAkADQDtAAEAAAAAAAwAEwD6AAEAAAAAAA4APwENAAMAAQQJAAAAngFMAAMAAQQJAAEAHgHqAAMAAQQJAAIADgIIAAMAAQQJAAMAQAIWAAMAAQQJAAQALgJWAAMAAQQJAAUAeAKEAAMAAQQJAAYAKgL8AAMAAQQJAAkAGgMmAAMAAQQJAAwAJgNAAAMAAQQJAA4AfgNmAAMAAQQJABAACgPkAAMAAQQJABEAIgPuQ29weXJpZ2h0IKkgMjAxNCwgTmF0YW5hZWwgR2FtYSAod3d3Lm5kaXNjb3ZlcmVkLmNvbSAuIGluZm8oYXQpbmRpc2NvdmVyZWQuY29tKUV4byAyUmVndWxhciBDb25kZW5zZWQxLjAwMTtVS1dOO0V4bzItUmVndWxhckNvbmRlbnNlZEV4byAyIFJlZ3VsYXIgQ29uZGVuc2VkVmVyc2lvbiAxLjAwMTtQUyAwMDEuMDAxO2hvdGNvbnYgMS4wLjcwO21ha2VvdGYubGliMi41LjU4MzI5RXhvMi1SZWd1bGFyQ29uZGVuc2VkTmF0YW5hZWwgR2FtYXd3dy5uZGlzY292ZXJlZC5jb21odHRwOi8vc2NyaXB0cy5zaWwub3JnL2Ntcy9zY3JpcHRzL3BhZ2UucGhwP3NpdGVfaWQ9bnJzaSZpZD1PRkwAQwBvAHAAeQByAGkAZwBoAHQAIACpACAAMgAwADEANAAsACAATgBhAHQAYQBuAGEAZQBsACAARwBhAG0AYQAgACgAdwB3AHcALgBuAGQAaQBzAGMAbwB2AGUAcgBlAGQALgBjAG8AbQAgAC4AIABpAG4AZgBvACgAYQB0ACkAbgBkAGkAcwBjAG8AdgBlAHIAZQBkAC4AYwBvAG0AKQBFAHgAbwAgADIAIABDAG8AbgBkAGUAbgBzAGUAZABSAGUAZwB1AGwAYQByADEALgAwADAAMQA7AFUASwBXAE4AOwBFAHgAbwAyAC0AUgBlAGcAdQBsAGEAcgBDAG8AbgBkAGUAbgBzAGUAZABFAHgAbwAgADIAIABSAGUAZwB1AGwAYQByACAAQwBvAG4AZABlAG4AcwBlAGQAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMQA7AFAAUwAgADAAMAAxAC4AMAAwADEAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARQB4AG8AMgAtAFIAZQBnAHUAbABhAHIAQwBvAG4AZABlAG4AcwBlAGQATgBhAHQAYQBuAGEAZQBsACAARwBhAG0AYQB3AHcAdwAuAG4AZABpAHMAYwBvAHYAZQByAGUAZAAuAGMAbwBtAGgAdAB0AHAAOgAvAC8AcwBjAHIAaQBwAHQAcwAuAHMAaQBsAC4AbwByAGcALwBjAG0AcwAvAHMAYwByAGkAcAB0AHMALwBwAGEAZwBlAC4AcABoAHAAPwBzAGkAdABlAF8AaQBkAD0AbgByAHMAaQAmAGkAZAA9AE8ARgBMAEUAeABvACAAMgBSAGUAZwB1AGwAYQByACAAQwBvAG4AZABlAG4AcwBlAGQAAAAAAAMAAAADAAACFAABAAAAAAAcAAMAAQAAAhQABgH4AAAACQD3AZUAAAAAAAABlQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVAXUBfAF3AZoBrgG2AX0BhQGG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 truncated
}
body {background: linear-gradient(to bottom, #ccc, #444);
font-family: exo2;
margin: 10px 10px 10px 10px;
width: 98%;
}
a:link {text-decoration: none}
a:visited {text-decoration:none}
a:hover {text-decoration:none}
h1 {font: 20pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
color: #808080;
opacity: 0.9;}
h2 {font: 14pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
h3 {font: 12pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
p {font-family: 8pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
ul {font-family: 8pt exo2;}
li {font-family: 8pt exo2;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
}
.project_header {background: #88c;
color: #fff;
padding: 5px;
font-weight: 400;
font-size: 14px;
}
.pageclass {background: #fff;
border-radius: 10px;
border: 2pt outset;
border-spacing: 0px;
padding: 0px;
max-width: 1050px;
min-width: 1050px
margin: auto;
text-shadow: 0 0 0.1em #CCC, 0 0 0.1em #87F;
font-family: exo2;
font-size: 10pt;
}
input {background: #fff;
border: 1px inset;
font-family: exo2;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
-o-border-radius: 2px;
-ms-border-radius: 2px;
border-radius: 0px;
}
select {background: #fff;
font-family: exo2;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
border: 1px solid #444;
padding: 1px 2px 1px 2px;
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
-o-border-radius: 7px;
-ms-border-radius: 7px;
border-radius: 0px;
}
textarea.fieldinput {background: #fff;
resize: none;
font-family: exo2;
border: 1px solid #444;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
padding: 2px 2px 2px 5px;
-webkit-border-radius: 0px;
-moz-border-radius: 0px;
-o-border-radius: 0px;
-ms-border-radius: 0px;
border-radius: 0px;
}
textarea.fieldinputerror {background: #fcc;
resize: none;
font-family: exo2;
border: 1px solid #f00;
font-size: 14px;
min-height: 18px;
display: block;
margin-bottom: 3px;
margin-top: 0px;
outline: none;
padding: 2px 2px 2px 5px;
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
-o-border-radius: 7px;
-ms-border-radius: 7px;
border-radius: 0px;
}
.sectionframe {
position: relative;
font-family: exo2;
border: 0px outset;
font-size: 10pt;
margin: 3px;
background: #808080;
padding: 0px;
border-radius: 0px;
}
.sectionframe:after{
content: '';
position: absolute;
top: 1px;
left: 1px;
width: calc(100% - 2px);
height: 12px;
background: linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.2));
}
.sectionframecontents {
padding: 10px;
text-align: justify;
color: #000000;
border: 1pt inset;
background-color: #F8F8FF;
}
.sectionframeheading {
# background: linear-gradient(to bottom, #fff, #88f);
background: #2099f0;
color: #fff;
border: 1pt outset;
vertical-align: middle;
padding: 5px;
margin: 0px;
font-family: 12pt avenir;
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
border-radius: 0px 0px 0px 0px;
}
.sectionframeheading2 {
background: #C0C0C0;
font-family: exo2;
font-size: 20pt;
padding: 3px
text-shadow: 0 0 0.2em #CCC, 0 0 0.2em #87F;
border-radius: 3px;
}
.heading {background: #fff;
border-radius: 7px 7px 0px 0px;
max-height: 80px;
}
.entryform {
background: #2099f0;
padding: 3px 3px 3px 3px;
margin: 0px;
border: 0px solid black;
border-radius: 0px;
}
.entryform table {
font: 12px exo2;
background: #c5e1f4;
border: 0pt solid black;
}
.footer {
background: linear-gradient(to bottom, #000, #888);
font: 8pt verdana;
color: #FFFFFF;
text-align: center;
border-radius: 0px 0px 6px 6px;}
.menubar {
# background: linear-gradient(to bottom, #fff, #2099f0);
padding: 0px 0px 0px 0px;
margin: 0px;
}
.baritem {
background-image: linear-gradient(#2099f0, #c3ddef);
color: #fff;
position: relative;
font-family: exo2;
font-weight: 1000;
font-size: 8pt;
padding: 2px 10px;
margin: 10px 0px 0px 0px;
border: solid;
border-width: 0px 0px 1px 0px;
border-color: #fff;
border-radius: 5px 5px 0px 0px;
border-style: outset;
transition: background 2s;
}
.baritem:after{
content: '';
position: absolute;
top: 1px;
left: 1px;
width: calc(100% - 2px);
height: 50%;
z-index: 5;
pointer-events: none;
border-radius: 4px 4px 0px 0px;
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
}
.baritemselected {
background: #ccc;
color: #000;
font-family: exo2;
font-weight: 1000;
font-size: 8pt;
padding: 2px 10px;
margin: 5px 10px 0px 0px;
border: solid;
border-width: 1px 1px 0px 1px;
border-color: #fff;
border-radius: 5px 5px 0px 0px;
border-style: outset;
transition: background 2s;
}
.baritem:hover {
background: #c3ddef;
color: #fff;
transition: background 5s;
}
.panel {background: #ccc;
margin: 10px;
padding: 3px;
border: 0pt inset;}
.panel table {
font: 12px exo2;
padding: 5px;
background: #c5e1f4;
border: 1pt solid black;
border-radius: 9px;
}
.panel table th {
background: #2099f0;
color: #fff;
padding: 2px 3px 3px 3px;
border: 0pt;
}
.panel table td {
background: #c5e1f4;
color: #000;
padding: 2px 3px 3px 3px;
border: 0pt;
}
.left {
text-align: right;
padding-left: 20px;
border-radius: 9px 0px 0px 9px;
}
.right {
border-radius: 0px 9px 9px 0px;
padding-right: 20px;
}
.featured {background: #fff}
.buttonbay {
width: 100%;
text-align: center;
}
.fieldinput {
font-family: exo2;
border-radius: 7px;
padding: 2px 2px 2px 5px;
border: 1px solid #ccc;
}
.fieldinputerror {
font-family: exo2;
border-radius: 7px;
padding: 2px 2px 2px 5px;
background: #fcc;
border: 1px solid red;
}
.fieldprompt {
font-size: 10pt;
text-align: right;
background: #00f;
}
.message {font: bold 10pt verdana; color: #FF0000}
.collection_heading {font: bold 12pt verdana; color: #FFFFFF}
.collection_text {font: 10pt verdana; color: #FFFFFF}
.collection_tracks_background {font: 8pt bold verdana; color: #FFFFFF; background: #10003F}
.warning {font: 10pt verdana; background: #FF0000; color: #FFFFFF; text-align: justify}
.button {
position: relative;
display: inline-block;
font-size: 10pt;
font-weight: 400;
color: #fff;
border: 2px outset;
background: #2099f0;
padding: 2px 10px 3px 10px;
margin: 0px;
border-radius: 5px;
}
.button:after{
content: '';
position: absolute;
top: 0px;
left: 0px;
width: calc(100% - 0px);
height: 10px;
z-index: 5;
border-radius: 3px;
background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0.2));
}
.code {
font-family: source;
font-weight: 400;
font-size: 10pt;
border: 1pt solid black;
background: #ff8;
padding: 5px;
}
.controlframe {background: #888;
padding: 5px 5px 15px 10px;
}
.vm {position: relative;
height: 55px;
}
.vmname {position: absolute;
left: 0px; top: 0px;
height: 55px;
}
.vmcover {position: absolute;
left: 15px;
top: 30px;
font: 12px 'Dot Matrix';
background: #bbb;
color: white;
border: 1pt solid white;
border-radius: 5px;
padding: 2px 10px 2px 10px;
}
</style></head><body>
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">BARANT Technology Group</div>
</div>
</div>
<div style="float: right; text-align: right; margin-right: 10px; margin-top: 5px;"></div>
</div>
<div class="menubar">
<table class="menubar" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td style="border-bottom: 1pt solid #bbb; width: 20px;">&nbsp;</td>
<td class="baritem"><a href="/main">HOME</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/services">SERVICES</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/hosting">HOSTING</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/documents">DOCUMENT MGMT</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/siptrunk">SIP TRUNKING</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/vst">VST</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/modular1">MODULAR1</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/modular1_patches">MODULAR1 PATCHES</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/synthedit">SYNTHEDIT</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/wordpress">WORDPRESS</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/opensource">OPEN SOURCE</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td class="baritem"><a href="/contact">CONTACT</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
</ifrow>
</if>
<td class="baritem"><a href="/login">LOGIN</a></td><td style="border-bottom: 1pt solid #bbb;">&nbsp;</td>
<td style="border-bottom: 1pt solid #bbb; width: 10px;">&nbsp;</td>
</tr>
</table>
</div>
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
<a href="/jet">JET</a><br>
<a href="/synthmax">SYNTHMAX</a><br>
<a href="/serverframework">SERVER CORE FRAMEWORK</a>
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="sectionframe"><div class="sectionframeheading"><b>Welcome to BARANT Systems</b></div><div class="sectionframecontents">
<div style="width: 48%;">
<p>We are BARANT Technology Group. Contact us for information on how we can
help you with your technical objectives.</p>
<h1>Modular1 VST Synthesizer</h1>
<p>Check out our <a href="/vst">Modular1 VST3
Synthesizer</a> If you appreciate the art of modular analog
synthesizers then you will really enjoy the Modular1 with all the
features of an analog modular synthesizer put into a single VST3
instrument. With the added features of polyphony and patches that
change instantaneously this synthesizer is truly a powerhouse in the
audio toolbox.</p>
<a href="/vst"><img src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvbW9kdWxhcjEucG5nJyk7PC9zY3JpcHQ+ICAgICAgICAgICAgICA8IURPQ1RZUEUgaHRtbD4gICAgICA8IS0tW2lmIGx0IElFIDcgXT48aHRtbCBjbGFzcz0iaWUgaWU2IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTciIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA4IF0+PGh0bWwgY2xhc3M9ImllIGllOCIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIChndGUgSUUgOSl8IShJRSldPjwhLS0+PGh0bWwgbGFuZz0iZW4iPiA8IS0tPCFbZW5kaWZdLS0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkPgogPHRpdGxlPlBhZ2UgTm90IEZvdW5kPC90aXRsZT4KICAgICAgIDxNRVRBIE5BTUU9QVVUSE9SIENPTlRFTlQ9IiI+ICAgICAgIDxNRVRBIE5BTUU9REVTQ1JJUFRJT04gQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1LRVlXT1JEUyBDT05URU5UPSIiPiAgICAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9tYWluLmNzcyI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9jc3MvY29udHJvbC5jc3MiPgogPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9wbmciIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbS9pbWFnZXMvZmF2aWNvbi5wbmciPgogPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL2NrZWRpdG9yL2NrZWRpdG9yLmpzIj48L3NjcmlwdD4KIDwhLS0gR2xvYmFsIHNpdGUgdGFnIChndGFnLmpzKSAtIEdvb2dsZSBBbmFseXRpY3MgLS0+CiA8c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD1HLVQyV1lSUDBDMEgiPjwvc2NyaXB0PgogPHNjcmlwdD4KICB3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTsKICBmdW5jdGlvbiBndGFnKCl7ZGF0YUxheWVyLnB1c2goYXJndW1lbnRzKTt9CiAgZ3RhZygnanMnLCBuZXcgRGF0ZSgpKTsKICBndGFnKCdjb25maWcnLCAnRy1UMldZUlAwQzBIJyk7CiA8L3NjcmlwdD4KICAgICAgICAgICAgIDwvaGVhZD4gICAgICA8Ym9keSAgICAgICAgICAgICA+ICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJfTEFTVFBBR0UiIFZBTFVFPSJtb2R1bGFyMS5wbmciID4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBST0NFU1MiIFZBTFVFPSIiID4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IkVYSVRQUk9DRVNTIiBWQUxVRT0iIiA+CTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkRJUiIgdmFsdWU9IiI+CTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Il9DVExESVIiIHZhbHVlPSIiPgk8SU5QVVQgVFlQRT1ISURERU4gTkFNRT0iUEFHRSIgVkFMVUU9Im1vZHVsYXIxLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdtb2R1bGFyMS5wbmcnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKTsgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0udGFyZ2V0PScnOyIgICAgICAgICAgICAgICAgICAgICAgCQkgICAgICA+PGEgaHJlZj0iL21haW4iPkhPTUU8L2E+PC9BPjwvdGQ+Cjx0ZCBzdHlsZT0iYm9yZGVyLWJvdHRvbTogMXB0IHNvbGlkICNiYmI7Ij4mbmJzcDs8L3RkPgo8dGQgY2xhc3M9ImJhcml0ZW0iPgo8QSBIUkVGPSJqYXZhc2NyaXB0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uUFJPQ0VTUy52YWx1ZT0nJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uUEFHRS52YWx1ZT0nbW9kdWxhcjEucG5nJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCk7ICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnRhcmdldD0nJzsiICAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgPjxhIGhyZWY9Ii9zZXJ2aWNlcyI+U0VSVklDRVM8L2E+PC9BPjwvdGQ+Cjx0ZCBzdHlsZT0iYm9yZGVyLWJvdHRvbTogMXB0IHNvbGlkICNiYmI7Ij4mbmJzcDs8L3RkPgo8dGQgY2xhc3M9ImJhcml0ZW0iPgo8QSBIUkVGPSJqYXZhc2NyaXB0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uUFJPQ0VTUy52YWx1ZT0nJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZm9ybXNbMF0uUEFHRS52YWx1ZT0nLine truncated
<p>Excellent quality and technical performance provide a performance level
instrument for musicians or students who wish to learn sound wave
synthesis techniques or for musicians to enable that old analog sound
in their DAW recording system..</p>
<p>Checkout the product page for more information on the capabilities
of the Modular1 synthesizer.</p>
</div>
</div></div>
</div>
<div style="clear: both;"></div>
</div>
</div>
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
+6 -11
View File
@@ -1,4 +1,3 @@
#api GET /notfound
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>Page Not Found</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">Page Not Found</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,15 +463,11 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<p>Requested page is not found.</p>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -480,4 +475,4 @@ textarea.fieldinputerror {background: #fcc;
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+6 -11
View File
@@ -1,4 +1,3 @@
#api GET /opensource
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>OPEN SOURCE</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">OPEN SOURCE</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<div class="sectionframe"><div class="sectionframeheading"><b>Open Source Projects</b></div><div class="sectionframecontents">
<h1>Open Source Projects</h1>
<p>We have several open source projects that we have created.</p>
@@ -520,7 +515,7 @@ firmware code utilizing the RCA1802 micro-controller chip.</li>
Check out our git server at <a href="https://git.barant.com">git.barant.com</a>.
</div></div>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -528,4 +523,4 @@ firmware code utilizing the RCA1802 micro-controller chip.</li>
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+7 -12
View File
@@ -1,4 +1,3 @@
#api GET /serverframework
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>Server Core Framework</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">Server Core Framework</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<div class="sectionframe"><div class="sectionframeheading"><b>Server Core Framework</b></div><div class="sectionframecontents">
<p>It is finally here! The Server Core Framework is now available. The
framework offers support for just about any server you can devise.</p>
@@ -503,14 +498,14 @@ Unty 3D and for the Unreal Engine 4 with drop in and play options that
can be heavily modified to support unique game features. Offers
support for mySQL backends.</p>
<img src="images/ServerCoreMap.png" width="80%">
<img src="/assets/ServerCoreMap.png" width="80%">
<br>
<code>
git clone https://barant.com/git@ServerCore.git
</code>
</div></div>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -518,4 +513,4 @@ git clone https://barant.com/git@ServerCore.git
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+6 -11
View File
@@ -1,4 +1,3 @@
#api GET /services
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>BARANT Technology Group</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">BARANT Technology Group</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<div class="sectionframe"><div class="sectionframeheading"><b>Welcome to BARANT Systems</b></div><div class="sectionframecontents">
@@ -517,7 +512,7 @@ textarea.fieldinputerror {background: #fcc;
</div>
</div></div>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -525,4 +520,4 @@ textarea.fieldinputerror {background: #fcc;
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+6 -11
View File
@@ -1,4 +1,3 @@
#api GET /siptrunk
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>SIP Trunking</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">SIP Trunking</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<div class="sectionframe"><div class="sectionframeheading"><b>SIP Trunking</b></div><div class="sectionframecontents">
<h1>For PBX Systems</h1>
<p>Some of the best prices around for adding trunks to your PBX. We
@@ -504,7 +499,7 @@ We can also host a PBX for you as well. Complete functionality
utilizing FreePBX can be provided on the internet so you do not need
to worry about the hardware. We manage and maintain everything for you.
</div></div>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -512,4 +507,4 @@ to worry about the hardware. We manage and maintain everything for you.
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+9 -14
View File
@@ -1,4 +1,3 @@
#api GET /synthedit
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>SYNTHEDIT</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">SYNTHEDIT</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<div class="sectionframe"><div class="sectionframeheading"><b>SYNTHEDIT</b></div><div class="sectionframecontents">
<h1>Modules</h1>
<p>Several modules are under development for Synthedit 1.4.</p>
@@ -492,9 +487,9 @@ synthesizers. Using a superfast algorithm to generate with precision
the harmonics up to the nyquist limit. Precise control over the amplitude and phase
of each harmonic allows traditional waveforms to be generated without
aliasing problems. </p>
<img src="images/sawtooth.png" width="120px">
<img src="images/square.png" width="120px">
<img src="images/triangle.png" width="120px">
<img src="/assets/sawtooth.png" width="120px">
<img src="/assets/square.png" width="120px">
<img src="/assets/triangle.png" width="120px">
<br>
<p>Individual control over each and every harmonic affords the
generation of many waveforms that require a harmonic purity.</p>
@@ -502,7 +497,7 @@ generation of many waveforms that require a harmonic purity.</p>
</div>
</div></div>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -510,4 +505,4 @@ generation of many waveforms that require a harmonic purity.</p>
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+7 -12
View File
@@ -1,4 +1,3 @@
#api GET /wordpress
<set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"><head><title>Wordpress Plugins</title><style>
.rotate {
animation: rotation 1s infinite linear;
@@ -415,7 +414,7 @@ textarea.fieldinputerror {background: #fcc;
<div class="pageclass">
<div class="heading">
<div style="display: inline-block; width: 500px;">
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvYnRnbG9nby5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImJ0Z2xvZ28ucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJidGdsb2dvLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdidGdsb2dvLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLine truncated
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/assets/btglogo.png"></a>
<div style="padding-top: 15px;">
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
<div style="left: 80px; color: #2099f0;">Wordpress Plugins</div>
@@ -454,7 +453,7 @@ textarea.fieldinputerror {background: #fcc;
<div style="display: table-row; width: 100%;">
<div style="display: table-cell; border:
background-image: url('data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvZ3JpZC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9ImdyaWQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJncmlkLnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdncmlkLnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBBR0UudmFsdWU9J2dyaWQucG5nJzsLine truncated
background-image: url('/assets/grid.png') repeat-x repeat-y;">
<div class="panel" style="width: 200px; display: table-cell; ">
<div class="sectionframe"><div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b></div><div class="sectionframecontents">
<a href="/barantmail">BARANTMAIL</a><br>
@@ -464,13 +463,9 @@ textarea.fieldinputerror {background: #fcc;
<a href="/asm1802">ASM/MCH 1802 SIMULATOR</a><br>
</div></div>
<comment>
<if value1="$[_login_id]" value2="1" type="eq">
<include file="sessionvar.menu">
</if>
</comment>
</div>
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;">
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"><div id="jetc-content">
<div class="sectionframe"><div class="sectionframeheading"><b>BARANT Shopping Cart for WordPress</b></div><div class="sectionframecontents">
@@ -491,7 +486,7 @@ textarea.fieldinputerror {background: #fcc;
Square, with no WooCommerce required.</p>
</div>
<div style="display: table-cell; vertical-align: top; width: 90px; text-align: center;">
<img src="data:image/png;base64,ICAgICAgICAgICAgICAgIDxzY3JpcHQ+d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCcnLCcvc2hvcHBpbmdfY2FydC5wbmcnKTs8L3NjcmlwdD4gICAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPiAgICAgIDwhLS1baWYgbHQgSUUgNyBdPjxodG1sIGNsYXNzPSJpZSBpZTYiIGxhbmc9ImVuIj4gPCFbZW5kaWZdLS0+ICAgICAgPCEtLVtpZiBJRSA3IF0+PGh0bWwgY2xhc3M9ImllIGllNyIgbGFuZz0iZW4iPiA8IVtlbmRpZl0tLT4gICAgICA8IS0tW2lmIElFIDggXT48aHRtbCBjbGFzcz0iaWUgaWU4IiBsYW5nPSJlbiI+IDwhW2VuZGlmXS0tPiAgICAgIDwhLS1baWYgKGd0ZSBJRSA5KXwhKElFKV0+PCEtLT48aHRtbCBsYW5nPSJlbiI+IDwhLS08IVtlbmRpZl0tLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWQ+CiA8dGl0bGU+UGFnZSBOb3QgRm91bmQ8L3RpdGxlPgogICAgICAgPE1FVEEgTkFNRT1BVVRIT1IgQ09OVEVOVD0iIj4gICAgICAgPE1FVEEgTkFNRT1ERVNDUklQVElPTiBDT05URU5UPSIiPiAgICAgICA8TUVUQSBOQU1FPUtFWVdPUkRTIENPTlRFTlQ9IiI+ICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIvY3NzL21haW4uY3NzIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iL2Nzcy9jb250cm9sLmNzcyI+CiA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9iYXJhbnQuY29tL2ltYWdlcy9mYXZpY29uLnBuZyI+CiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvY2tlZGl0b3IvY2tlZGl0b3IuanMiPjwvc2NyaXB0PgogPCEtLSBHbG9iYWwgc2l0ZSB0YWcgKGd0YWcuanMpIC0gR29vZ2xlIEFuYWx5dGljcyAtLT4KIDxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctVDJXWVJQMEMwSCI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdOwogIGZ1bmN0aW9uIGd0YWcoKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpO30KICBndGFnKCdqcycsIG5ldyBEYXRlKCkpOwogIGd0YWcoJ2NvbmZpZycsICdHLVQyV1lSUDBDMEgnKTsKIDwvc2NyaXB0PgogICAgICAgICAgICAgPC9oZWFkPiAgICAgIDxib2R5ICAgICAgICAgICAgID4gICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9MQVNUUEFHRSIgVkFMVUU9InNob3BwaW5nX2NhcnQucG5nIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJQUk9DRVNTIiBWQUxVRT0iIiA+CTxJTlBVVCBUWVBFPUhJRERFTiBOQU1FPSJFWElUUFJPQ0VTUyIgVkFMVUU9IiIgPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJESVIiIHZhbHVlPSIiPgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJfQ1RMRElSIiB2YWx1ZT0iIj4JPElOUFVUIFRZUEU9SElEREVOIE5BTUU9IlBBR0UiIFZBTFVFPSJzaG9wcGluZ19jYXJ0LnBuZyIgPiAgICAgICAgPElOUFVUIFRZUEU9SElEREVOIE5BTUU9Il9USU1FU1RBTVAiIFZBTFVFPSIiID4gICAgICAgICAgICAgICAgIAkJCgkgICA8ZGl2IGNsYXNzPSJwYWdlY2xhc3MiPgogIDxkaXYgY2xhc3M9ImhlYWRpbmciPiAgICAKICAgPGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogNTAwcHg7Ij4KICAgIDxhIGhyZWY9Imh0dHBzOi8vYmFyYW50LmNvbSI+PGltZyBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsgbWFyZ2luOiAxMHB4OyIgYWxpZ249ImxlZnQiIHNyYz0iL2ltYWdlcy9idGdsb2dvLnBuZyI+PC9hPgogICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6IDE1cHg7Ij4KICAgICA8ZGl2IHN0eWxlPSJsZWZ0OiA4MHB4OyBjb2xvcjogIzIwOTlmMDsgZm9udC1zaXplOiAyMHB0OyI+QkFSQU5UIFRFQ0hOT0xPR1kgR1JPVVA8L2Rpdj4gIAogICAgIDxkaXYgc3R5bGU9ImxlZnQ6IDgwcHg7IGNvbG9yOiAjMjA5OWYwOyI+UGFnZSBOb3QgRm91bmQ8L2Rpdj4gICAgCiAgICA8L2Rpdj4KICAgPC9kaXY+CiAgIDxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMTBweDsgbWFyZ2luLXRvcDogNXB4OyI+PC9kaXY+IAogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1lbnViYXIiPgo8dGFibGUgY2xhc3M9Im1lbnViYXIiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg6IDEwMCUiPgo8dHI+CiA8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyB3aWR0aDogMjBweDsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdzaG9wcGluZ19jYXJ0LnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvbWFpbiI+SE9NRTwvYT48L0E+PC90ZD4KPHRkIHN0eWxlPSJib3JkZXItYm90dG9tOiAxcHQgc29saWQgI2JiYjsiPiZuYnNwOzwvdGQ+Cjx0ZCBjbGFzcz0iYmFyaXRlbSI+CjxBIEhSRUY9ImphdmFzY3JpcHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QUk9DRVNTLnZhbHVlPScnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS5QQUdFLnZhbHVlPSdzaG9wcGluZ19jYXJ0LnBuZyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOyAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5mb3Jtc1swXS50YXJnZXQ9Jyc7IiAgICAgICAgICAgICAgICAgICAgICAJCSAgICAgID48YSBocmVmPSIvc2VydmljZXMiPlNFUlZJQ0VTPC9hPjwvQT48L3RkPgo8dGQgc3R5bGU9ImJvcmRlci1ib3R0b206IDFwdCBzb2xpZCAjYmJiOyI+Jm5ic3A7PC90ZD4KPHRkIGNsYXNzPSJiYXJpdGVtIj4KPEEgSFJFRj0iamF2YXNjcmlwdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWzBdLlBST0NFU1MudmFsdWU9Jyc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmZvcm1zWLine truncated
<img src="/assets/shopping_cart.png" width="64">
</div>
</div>
</div></div>
@@ -534,7 +529,7 @@ touch</a> - BARANT Technology Group can also handle hosting and setup for
you directly.</p>
</div></div>
</div>
</div></div>
<div style="clear: both;"></div>
</div>
</div>
@@ -542,4 +537,4 @@ you directly.</p>
<div class="footer" style="clear: both;">&copy; 1999-2026 BARANT Systems, All Rights Reserved</div>
</div>
</body></html>
</body></html>
+18 -166
View File
@@ -1,10 +1,3 @@
# --------------------------------------------------------------
# SESSIONCTL lib
#
# Session Control Function Library
#
#
# --------------------------------------------------------------
<tag name="ifadmin">
<if value1="$[__admin__]" value2="1" type="eq">
@@ -18,9 +11,6 @@
</if>
</tag>
#==============================================================================
# RETAIN tag definition.
#==============================================================================
<tag name="retain" keywords="name value empty">
<if value1="#[empty]" value2="" type=eq>
@@ -36,17 +26,8 @@
</if>
</tag>
#==============================================================================
# IFNOTSESSION tag definition.
#==============================================================================
<tag name="ifnotsession">
<if value1="$[_SESSIONID]" value2="" type="eq"><container></if>
</tag>
#------------------------------------------------------------------------------
# LINKBUTTON tag definition.
#------------------------------------------------------------------------------
<tag name="linkbutton" keywords="pagedir page process name name2 value value2 target class multipart">
@@ -93,8 +74,8 @@
document.forms[0].N_LEVEL.value='$[X_LEVEL]';
</IF>
document.forms[0].submit();
document.forms[0].target='';"
document.forms[0].target='';
document.forms[0].requestSubmit();"
<if value1="#[CLASS]" value2="" type="ne">
CLASS="#[CLASS]"
</if>
@@ -102,9 +83,6 @@
</TAG>
#------------------------------------------------------------------------------
# ABUTTON tag definition.
#------------------------------------------------------------------------------
<TAG NAME="ABUTTON" KEYWORDS="PAGE PROCESS NAME VALUE MULTIPART">
<BUTTON ONCLICK="javascript:
@@ -126,81 +104,20 @@
document.forms[0].encoding='multipart/form-data';
</IF>
document.forms[0].submit();">&nbsp;<CONTAINER>&nbsp;</BUTTON>
document.forms[0].requestSubmit();">&nbsp;<CONTAINER>&nbsp;</BUTTON>
</TAG>
# ----------------------------------------------
# CREATESESSION
# ----------------------------------------------
<tag name="createsession" keywords="page timeout">
<if value1="$[_session_id]" value2="" type="ne">
<sql>
delete from sessions
where uuid='$[_session_id]'
</sql>
</if>
<set name="_uuid" expr="uuid()">
<set name="_timestamp" expr="now()">
<if value1="#[timeout]" value2="" type="eq">
<set name="timeout" value="0" scope="local">
</if>
<sql>
insert into sessions
set uuid='$[_uuid]',
timestamp='$[_timestamp]',
timeout_page='#[page]',
timeout=#[timeout]
</sql>
<if value1="#[timeout]" value2="" type="eq">
<setcookie name="_session_id" value="$[_uuid]">
<else>
<setcookie name="_session_id" value="$[_uuid]" timeout="#[timeout]">
</if>
</tag>
# ----------------------------------------------
# ENDSESSION
# ----------------------------------------------
<tag name="endsession">
<if value1="$[_session_id]" value2="" type="ne">
<sql>
delete from sessions
where uuid='$[_session_id]'
</sql>
<setcookie name="_session_id" value="">
</if>
</tag>
#--------------------------------------------------
#SETENV
#--------------------------------------------------
<tag name="setenv" keywords="name">
<if value1="$[_session_id]" value2="" type="ne">
<eval name="_envvalue" scope="local"><container></eval>
<set name="_envvalue" value="#[_envvalue]" format="binary" scope="local">
<sql>
replace into sessionenv
set session_uuid='$[_session_id]',
name='#[name]',
value='#[_envvalue]'
</sql>$[sqlerror]
<eval name="#[name]"><container></eval>
</if>
<eval name="_envvalue" scope="local"><container></eval>
<set name="#[name]" value="#[_envvalue]">
<set name="@#[name]" value="#[_envvalue]">
</tag>
#--------------------------------------------------
#CLEARENV
#--------------------------------------------------
<tag name="clearenv" keywords="name">
<sql>
DELETE FROM sessionenv WHERE session_uuid='$[_session_id]' AND name='#[name]'
</sql>$[sqlerror]
<SET NAME='#[name]' VALUE="">
</tag>
<tag name="clearenv" keywords="name">
<set name="#[name]" value="">
<set name="@#[name]" value="">
</tag>
#--------------------------------------------------
#SETPAGE
#--------------------------------------------------
<tag name="setpage" keywords="NAME DIR">
<SET NAME=PAGE VALUE='#[NAME]'>
<IF VALUE1="#[DIR]" VALUE2="" TYPE="NE">
@@ -209,79 +126,21 @@
</IF>
</TAG>
#--------------------------------------------------
#SETPROCESS
#--------------------------------------------------
<TAG NAME='SETPROCESS' KEYWORDS='VALUE'>
<SET NAME=PROCESS VALUE='#[VALUE]'>
</TAG>
#--------------------------------------------------
#CHECKSESSION
#--------------------------------------------------
<tag name="checksession">
<sql>
select *,
if((timeout > 0) && (unix_timestamp(now()) - unix_timestamp(timestamp) > (timeout * 60)),'0','1') as session_valid
from sessions
where uuid="$[_session_id]"
</sql>$[sqlerror]
<ifrow>
<if value1="$[.session_valid]" value2="1" type="eq">
<set name="session_timestamp" value="$[.timestamp]">
<set name="_timestamp" expr="now()">
<sql>
update sessions
set timestamp='$[_timestamp]'
where uuid="$[_session_id]"
</sql>
<sql>
select * from sessionenv where session_uuid="$[_session_id]"
</sql>$[sqlerror]
<whilerow>
<eval name="$[.name]">$[.value]</eval>
</whilerow>
<else>
<setpage name="$[.timeout_page]">
<set name="_session_id" value="">
</if>
<else>
<setpage name="">
<set name="_session_id" value="">
</ifrow>
<set name="_login_id" value="$[@_login_id]">
<set name="_login_name" value="$[@_login_name]">
<set name="_login_email" value="$[@_login_email]">
<set name="_login_type" value="$[@_login_type]">
<set name="_login_uuid" value="$[@_login_uuid]">
</tag>
#--------------------------------------------------
#FIRST RUN - See FETCHPROC in SESSIONCTL tag
#--------------------------------------------------
<TAG NAME='FIRSTRUN'>
<IF VALUE1='$[_PROCESSRAN]' VALUE2='FALSE' TYPE=EQ>
<EVAL NAME='_FIRSTRUN'>$[_FIRSTRUN] <CONTAINER></EVAL>
</IF>
</TAG>
#--------------------------------------------------
#RUNERROR - See FETCHPROC in SESSIONCTL tag
#--------------------------------------------------
<TAG NAME='RUNERROR'>
<IF VALUE1='$[_PROCESSRAN]' VALUE2='TRUE' TYPE=EQ>
<EVAL NAME="_RUNERROR">$[_RUNERROR] <CONTAINER></EVAL>
</IF>
</TAG>
#--------------------------------------------------
#SESSIONCTL
#--------------------------------------------------
<tag name='sessionctl' keywords="page stylesheet">
<tag name="defaultnav"><if expr="('$[PAGE]' = '') and ('$[PROCESS]' = '')"><eval><container></eval></if></tag>
<database name="$[database]" host="$[host]" user="$[user]" password="$[password]" sessionid="_SESSIONCTL">
@@ -292,10 +151,10 @@
<fetchpage>
</tag>
<tag name="page" keywords="template class onload secure loggedin admin" scope="local">
<tag name="author" scope="local"><eval name="author" scope="parent"><container></eval></tag>
<tag name="author" scope="local"><eval name="AUTHOR" scope="parent"><container></eval></tag>
<tag name="description" scope="local"><container name="description" eval="no" scope="parent"></tag>
<tag name="keywords" scope="local"><container name="keywords" eval="no" scope="parent"></tag>
<tag name="contents" scope="local"><eval name="_body"><container></eval></tag>
<tag name="contents" scope="local"><eval name="_BODY"><container></eval></tag>
<TAG NAME='TEMPLATE' SCOPE=LOCAL>
<tag name="contents" scope="local">
$[_BODY]
@@ -331,7 +190,7 @@ $[_BODY]
</head>
<body <if value1="#[CLASS]" value2="" type="ne">class="#[CLASS]"</if>
<if value1="#[onload]" value2="" type="ne">onload="#[onload]"</if>>
<form method="post" enctype="multipart/form-data">
<form method="post" enctype="multipart/form-data" action="$[REQUEST_URI]">
<INPUT TYPE=HIDDEN NAME="_LASTPAGE" VALUE="$[PAGE]" >
<INPUT TYPE=HIDDEN NAME="PROCESS" VALUE="" >
<INPUT TYPE=HIDDEN NAME="EXITPROCESS" VALUE="$[EXITPROCESS]" >
@@ -361,14 +220,7 @@ $[_BODY]
</TAG>
<tag name="fetchproc">
<tag name="process">
<if value1="$[_TIMESTAMP:0]" value2="$[session_timestamp]" type="eq">
<set name="_PROCESSRAN" value="FALSE">
<else>
<set name="_PROCESSRAN" value="TRUE">
</if>
<eval><container></eval>
<eval>$[_FIRSTRUN]</eval>
<eval>$[_RUNERROR]</eval>
</tag>
<EVAL><INCLUDE FILE="./$[DIR]/$[PROCESS].proc"></EVAL>
</TAG>
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<heading>
<title>Barant Systems - West Coast Wing Chun Open House 2014</title>
</heading>
+2 -2
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate" secure="yes" loggedin="yes">
<page secure="yes" loggedin="yes">
<title>ACCOUNT</title>
<contents>
<retain name="download_file">
@@ -46,7 +46,7 @@
<br><span style="font-size: 9pt;"><b>barant.com</b></span>
<br><span style="font-size: 7pt;">IP:</span> <span style="font-size: 9pt; font-family: monospace;">74.80.233.78</span></div>
<div style="float: right; padding: 5px;"><img src="images/power_on.png" width="32"></div>
<div style="float: right; padding: 5px;"><img src="/assets/power_on.png" width="32"></div>
<div style="float: right; width: 90px; height: 48px; background: #444;"></div>
<div style="float: right; margin-right: 25px;">3 days 2:10:33<br><br>34% of 40.2GB</div>
<div style="clear: both;"></div>
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<title>BARANT Systems</title>
<contents>
<sectionframe title="E-Mail Confirmation">
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<heading>
<title>The Digital Gods - The MP3 Music Store</title>
</heading>
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<menu>
<include file="projects.menu">
<include file="sessionvar.menu">
-4
View File
@@ -1,7 +1,3 @@
<if value1="$[_session_id]" value2="" type="eq">
<createsession>
</if>
$[_session_id]-$[sku]
<sql>select * from cart_item where session_uuid='$[_session_id]' and sku='$[sku]'</sql>
$[sqlerror]
<ifrow><set name="qty" value="$[.quantity]"></ifrow>
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate" secure="yes" loggedin="yes" admin="true">
<page secure="yes" loggedin="yes" admin="true">
<title>ADMINISTRATION</title>
<contents>
<eval name="_menu">
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate" secure="yes" admin="true" loggedin="yes">
<page secure="yes" admin="true" loggedin="yes">
<title>INVOICE</title>
<contents>
<eval name="_menu">
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate" secure="yes" loggedin="yes" admin="true">
<page secure="yes" loggedin="yes" admin="true">
<title>ADMIN INVOICES</title>
<contents>
<eval name="_menu">
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<title>APPLICATIONS</title>
<contents>
<sectionframe title="Project Manager">
+3 -3
View File
@@ -1,9 +1,9 @@
<page template="mainpagetemplate">
<page>
<title>RCA1802 Micro-Controller Assembler/Emulator</title>
<contents>
<sectionframe title="RCA1802">
<h1>The RCA1802 Micro-Controller</h1>
<img src="images/rca1802chip.jpeg" align="right">
<img src="/assets/rca1802chip.jpeg" align="right">
<p>Back in the 1970's RCA released a chip that was widely used in
satellites and other spacecraft to this day. It is a very simple
8-bit micro-controller with 16-bit addressibility enabling memory
@@ -26,7 +26,7 @@ device.</p>
</sectionframe>
<sectionframe title="RCA1802 Emulator">
<img src="images/emu1802a.png" align="right" width="500">
<img src="/assets/emu1802a.png" align="right" width="500">
<p>The 1802 emulator provides a fully functional RCA1802
micro-controller device complete with interupt handling and DMA
controls for memory access. Experiment with code structures and build
+1 -1
View File
@@ -3,7 +3,7 @@
<table width="100% cellpadding="5" cellspacing="0">
<tr>
<td class="featured">
<p><img src="images/organ1.png" align="right"></p>
<p><img src="/assets/organ1.png" align="right"></p>
<p>
<whiledir dir="/var/www/barant/musiclink" name="filename">
<if expr="substring('$[filename]',1,1) != '.'">
+1 -1
View File
@@ -16,7 +16,7 @@
</if>
<div class="sectionframe"><if value1="#[title]" value2="" type="ne">
<div class="$[sectionframeheading]"><b>#[title]</b>
<if value1="#[edit]" value2="true" type="eq"><img src="images/edit.png" width="16"></if></div></if>
<if value1="#[edit]" value2="true" type="eq"><img src="/assets/edit.png" width="16"></if></div></if>
<div class="sectionframecontents"><container></div></div>
</tag>
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<title>BARANTMAIL OPEN SOURCE PROJECT</title>
<contents>
<sectionframe title="BARANTMAIL OPEN SOURCE PROJECT">
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<heading>
<title>BARANT Systems</title>
</heading>
+102 -60
View File
@@ -1,80 +1,122 @@
<page template="mainpagetemplate">
<page>
<title>SHOPPING CART</title>
<contents>
<retain name="sku">
<set name="tranonce" expr="unix_timestamp()">
<setenv name="tranonce">$[tranonce]</setenv>
<sectionframe title="SHOPPING CART">
<input type="hidden" name="sku" value="">
<input type="hidden" name="qty" value="">
<script>
function update(input) {
PROCESS.value="updatecartqty";
submit();
function cartQtyChange(sku, qty) {
if (qty === '' || isNaN(qty)) return;
document.forms[0].PROCESS.value = 'updatecartqty';
document.forms[0].PAGE.value = 'cart';
document.forms[0].sku.value = sku;
document.forms[0].qty.value = qty;
document.forms[0].requestSubmit();
}
</script>
<set name="hasrecurring" value="false">
<set name="hasfiles" value="false">
<showtable>
select product_list.sku as SKU,
description as Description,
quantity as Qty,
price as Price
from product_list
join cart_item on product_list.sku=cart_item.sku
where cart_item.session_uuid='$[_session_id]'
</showtable>
<br>
<comment>//these need to be incorporated into a query.
<if value1="$[.type]" value2="subscription" type="eq">
<set name="hasrecurring" value="true">
</if>
<if value1="$[.type]" value2="file" type="eq">
<set name="hasfiles" value="true">
</if>
</comment>
<showtable>
select count(*) as number_of_items,
sum(price * quantity) as total
from product_list
join cart_item on product_list.sku=cart_item.sku
where cart_item.session_uuid='$[_session_id]'
</showtable>
<sql>
select if(find_in_set('physical', group_concat(distinct type)),'true','false') as physical,
if(find_in_set('file', group_concat(distinct type)),'true','false') as file,
if(find_in_set('subscription', group_concat(distinct type)),'true','false') as subscription
from product_list
join cart_item on product_list.sku=cart_item.sku
select count(*) as number_of_items,
sum(price * quantity) as total
from product_list
join cart_item on product_list.sku=cart_item.sku
where cart_item.session_uuid='$[_session_id]'
</sql>
$[sqlerror]
<ifrow>
<set name="cart_count" value="$[.number_of_items]">
<set name="cart_total" value="$[.total]">
</ifrow>
<if value1="$[.subscription]" value2="true" type="eq">
<div style="border: 1pt solid black; width: 400px; padding: 5px;">Please note that you have recurring charge items. On the terms of
the recurrence (monthly or annually) you will not be charged
automatically but you will be notified via e-mail that your service is
about to expire. It is your responsibility to renew the services.</div>
<sectionframe title="Shopping Cart">
<if expr="$[cart_count] > 0">
<sql>
select if(find_in_set('SUBSCRIPTION', group_concat(distinct type)),'true','false') as subscription,
if(find_in_set('FILE', group_concat(distinct type)),'true','false') as file
from product_list
join cart_item on product_list.sku=cart_item.sku
where cart_item.session_uuid='$[_session_id]'
</sql>
$[sqlerror]
<ifrow>
<set name="cart_has_subscription" value="$[.subscription]">
<set name="cart_has_file" value="$[.file]">
</ifrow>
<if value1="$[cart_has_subscription]" value2="true" type="eq">
<div class="cart-notice">Some items in your cart are recurring subscriptions. You will not be
charged automatically - you'll be notified by e-mail before each renewal, and it's your
responsibility to renew.</div>
</if>
<if value1="$[.file]" value2="true" type="eq">
<div style="margin-top: 3px; width: 400px; border: 1pt solid black; padding: 5px;">Please note that
you have purchased items that must be downloaded from your account
page after you checkout.</div>
<if value1="$[cart_has_file]" value2="true" type="eq">
<div class="cart-notice">Some items in your cart are downloadable files - available from your
account page after checkout.</div>
</if>
<div class="cart-wrap">
<div class="cart-header">
<div class="cart-col-desc">Item</div>
<div class="cart-col-price">Price</div>
<div class="cart-col-qty">Qty</div>
<div class="cart-col-total">Total</div>
<div class="cart-col-remove"></div>
</div>
<div class="cart-items">
<sql>select product_list.sku as SKU,
description as Description,
quantity as Qty,
price as Price
from product_list
join cart_item on product_list.sku=cart_item.sku
where cart_item.session_uuid='$[_session_id]'
order by description</sql>
$[sqlerror]
<whilerow>
<set name="linetotal" expr="$[.Price] * $[.Qty]">
<div class="cart-row">
<div class="cart-col-desc">$[.Description]</div>
<div class="cart-col-price">$$[.Price]</div>
<div class="cart-col-qty">
<input type="number" class="cart-qty-input" min="0" value="$[.Qty]"
onchange="cartQtyChange('$[.SKU]', this.value); return true;">
</div>
<div class="cart-col-total">$$[linetotal]</div>
<div class="cart-col-remove">
<a href="#" class="cart-remove-link" onclick="
document.forms[0].PROCESS.value='removecartitem';
document.forms[0].PAGE.value='cart';
document.forms[0].sku.value='$[.SKU]';
document.forms[0].requestSubmit();
return false;">Remove</a>
</div>
</div>
</whilerow>
</div>
<div class="cart-summary">
<div class="cart-summary-row">
<span>$[cart_count] item<if expr="$[cart_count] != 1">s</if></span>
<span class="cart-summary-total">$$[cart_total]</span>
</div>
</div>
</div>
<div style="text-align: center; width: 100%; margin-top: 10px;">
<linkbutton page="checkout" class="button">Check Out</linkbutton>
</div>
<else>
<div class="cart-empty">
<div class="cart-empty-icon">&#128722;</div>
<div class="cart-empty-title">Your cart is empty</div>
<div class="cart-empty-text">Items you add will show up here.</div>
</div>
</if>
<br>
<div style="text-align: center; width: 100%">
<linkbutton page="checkout" class="button">Check
Out</linkbutton></div>
<div style="clear:both;"></div>
<br>
</sectionframe>
</contents>
</page>
</page>
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<contents>
<sectionframe title="Change Project Icon">
+85 -24
View File
@@ -1,8 +1,8 @@
<page template="mainpagetemplate" loggedin="yes">
<page loggedin="yes">
<title>SHOPPING CART - CHECKOUT</title>
<script src="https://web.squarecdn.com/v1/square.js"></script>
<contents>
<script>
<script src="https://web.squarecdn.com/v1/square.js"></script>
<script>
function processCardForm(token) {
xhr = new XMLHttpRequest();
xhr.open('POST', '/pp.cgi', true);
@@ -11,50 +11,111 @@
console.log(">" + this.responseText + "<");
if(this.responseText == "OK\n") {
document.forms[0].PAGE.value = 'thankyou';
document.forms[0].submit();
} else {
message.innerText = this.responseText;
document.forms[0].requestSubmit();
} else {
var payBtn = document.getElementById('pay');
payBtn.disabled = false;
var processbanner = document.getElementById('process');
processbanner.style.visibility = 'hidden';
message.innerText = this.responseText;
}
};
let data = 'id=$[_session_id]&token=' + token + '&tranonce=$[tranonce]';
xhr.send(data);
xhr.send(data);
}
var card;
async function buildForm() {
let payments = Square.payments('sq0idp-V4R4vEferpF9kr7d5x5abQ','LV0MRENX5ED3Z');
const card = await payments.card({
style: {
'.input-container.is-focus': { borderColor: '#006AFF' },
'.message-text.is-error': { color: '#BF0020' }
input: {
backgroundColor: '#1c1c24',
color: '#e7e4dc',
fontSize: '14px'
},
'input::placeholder': { color: '#8d8c92' },
'.input-container': { borderColor: 'rgba(197, 164, 90, 0.28)' },
'.input-container.is-focus': { borderColor: '#c5a45a' },
'.input-container.is-error': { borderColor: '#a13a3a' },
'.message-text': { color: '#8d8c92' },
'.message-text.is-error': { color: '#a13a3a' }
}
});
await card.attach('#card');
let button = document.getElementById('pay');
button.addEventListener('click', async () => {
message.innerText = '';
let result = await card.tokenize();
if (result.status === 'OK') {
button.disabled = true;
let processbanner = document.getElementById('process');
processbanner.style.visibility = 'visible';
processCardForm(result.token);
} else {
let errorMessage = 'Please check your card details and try again.';
if (result.errors && result.errors.length && result.errors[0].message)
errorMessage = result.errors[0].message;
message.innerText = errorMessage;
}
});
}
buildForm();
buildForm();
</script>
<sql>select count(*) as number_of_items,
sum(price * quantity) as total
from product_list
join cart_item on product_list.sku=cart_item.sku
where cart_item.session_uuid='$[_session_id]'
</sql>
<sectionframe title="Pay with Credit Card">
<div>Please enter your payment information:</div>
<div style="font-size: 20px;">$[total]</div>
<div id="card" style="background-color: #ddd;width: 300px; padding: 5px;"></div>
<div style="padding: 5px;"><button id= "pay" type="button">Pay</button></div>
<div id="process" style="background-color: #0f0; border: 2px solid #000; padding:
5px; display: block-inline; margin: 10px; visibility: hidden;"> Processing Payment - Please wait... </div>
<div id="message" style="color: #f00; margin-top: 20px;"></div>
<sql>select sum(price * quantity) as total
from product_list
join cart_item on product_list.sku=cart_item.sku
where cart_item.session_uuid='$[_session_id]'</sql>
$[sqlerror]
<ifrow>
<set name="checkout_total" value="$[.total]">
</ifrow>
<sectionframe title="Order Summary">
<sql>select product_list.sku as SKU,
description as Description,
quantity as Qty,
price as Price
from product_list
join cart_item on product_list.sku=cart_item.sku
where cart_item.session_uuid='$[_session_id]'
order by description</sql>
$[sqlerror]
<div class="cart-wrap">
<div class="checkout-header">
<div class="cart-col-desc">Item</div>
<div class="cart-col-price">Price</div>
<div class="checkout-col-qty">Qty</div>
<div class="cart-col-total">Total</div>
</div>
<div class="cart-items">
<whilerow>
<set name="linetotal" expr="$[.Price] * $[.Qty]">
<div class="checkout-row">
<div class="cart-col-desc">$[.Description]</div>
<div class="cart-col-price">$$[.Price]</div>
<div class="checkout-col-qty">$[.Qty]</div>
<div class="cart-col-total">$$[linetotal]</div>
</div>
</whilerow>
</div>
<div class="cart-summary">
<div class="cart-summary-row">
<span>Total Due</span>
<span class="cart-summary-total">$$[checkout_total]</span>
</div>
</div>
</div>
</sectionframe>
<sectionframe title="Payment">
<div class="checkout-pay-wrap">
<div class="checkout-pay-label">Card Details</div>
<div id="card" class="checkout-card-input"></div>
<button id="pay" type="button" class="button checkout-pay-btn">Pay $$[checkout_total]</button>
<div id="process" class="checkout-processing">Processing Payment &mdash; Please wait&hellip;</div>
<div id="message" class="checkout-error"></div>
</div>
</sectionframe>
</contents>
</page>
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<title>Support E-Mail</title>
<contents>
<sectionframe title="Contact">
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<contents>
<sectionframe title="Create Project">
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<contents>
<sectionframe title="Create Release Target">
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<contents>
<projectheader />
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<contents>
<sectionframe title="Create Task">
+1 -1
View File
@@ -17,6 +17,6 @@ alt="Buy now with PayPal" /></td>
<messages>
<div id="processing" style="position: absolute; background: white; visibility: hidden; top:280px; left: 400px; display: inline-block; padding: 0px 10px 0px 10px; border: 1pt solid black; border-radius: 5px;">
<img class="rotate" src="/images/spinning.png" width="50" align="center">
<img class="rotate" src="/assets/spinning.png" width="50" align="center">
<span style="padding: 0px 0px 0px 10px; font-size: 16px"> PROCESSING...</span>
</div>
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<title>CRYSTAL</title>
<contents>
<setenv name="_menubar"></setenv>
+2 -2
View File
@@ -1,9 +1,9 @@
<page template="mainpagetemplate">
<page>
<heading>
<title>barant.com - David Eugene Arant</title>
</heading>
<contents>
<img src="images/arant2.jpg" align="left">
<img src="/assets/arant2.jpg" align="left">
<h1>David Eugene Arant</h1>
<p>David Eugene Arant was born in South Gate California on April 17th, 1935
to parents May L. Arant and Francis M. Arant.</p>
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<title>Document Management</title>
<style>
.price {display: table-cell;
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate" secure="yes" loggedin="yes" admin="true">
<page secure="yes" loggedin="yes" admin="true">
<title>ADMIN INVOICES</title>
<contents>
<database host="$[host]" name="$[database]" user="$[user]" password="$[password]" sessionid="1">
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<contents>
$[_project_header]
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<menu>
<include file="projects.menu">
<include file="sessionvar.menu">
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<title>Support E-Mail</title>
<contents>
<sectionframe title="Contact">
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<title>HOSTING</title>
<contents>
<retain name="sku">
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<title>Barant Systems</title>
<contents>
<include file="barantstream.section">
+1 -1
View File
@@ -10,7 +10,7 @@
where i.id=$[_invoice_id]</sql>
<set name="amount" value="$[.amount]">
<div style="width: 500px; border: 1pt solid #000; padding: 3px; background: #fff;">
<div><div style="display: inline-block;"><img style="width: 300px;" src="images/invoice_logo.png"></div>
<div><div style="display: inline-block;"><img style="width: 300px;" src="/assets/invoice_logo.png"></div>
<div style="display: flex; float: right; align-items: center;">
Invoice: $[.invnumber] $[.status]
</div>
+1 -1
View File
@@ -12,7 +12,7 @@
where i.id=30</sql>
<set name="amount" value="$[.amount]">
<div style="width: 500px; border: 1pt solid #000; padding: 3px;">
<div><div style="display: inline-block;"><img style="width: 50px;" src="images/btglogo.png"></div>
<div><div style="display: inline-block;"><img style="width: 50px;" src="/assets/btglogo.png"></div>
<div style="display: inline-block;">
<div>BARANT TECHNLOGY GROUP</div>
<div>INVOICE</div>
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<title>barant.com - JET Extension Tags</title>
<contents>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> COMMENT</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> COMMENT</h2>
<hr>
<p>Use the COMMENT tag to prevent JET from recognizing and forwarding
the contents to the output. This is not the same as an HTML command
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CONTAINER</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CONTAINER</h2>
<hr>
<p>Use the CONTAINER tag inside a TAG set to insert the contents of
the define macro tag into the output stream. </p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> DATABASE</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> DATABASE</h2>
<hr>
<p>Use the DATABASE tag to gain access to the mySQL database specified in the tag arguments.
Access to the database is only available inside the container of this tag.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,6 +1,6 @@
<sectionframe title="JET Command Reference">
<h2><a href="/jet/contents"><img src="/images/back.png" width="15"></a> CALL</h2>
<h2><a href="/jet/contents"><img src="/assets/back.png" width="15"></a> CALL</h2>
<hr>
<p>Use the CALL tag to transfer control to an executable file on the
host system. Use a fully qualified name for the executable file.</p>
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate" secure="yes" loggedin="no">
<page secure="yes" loggedin="no">
<title>JUKEBOX</title>
<contents>
<script>
+1 -1
View File
@@ -1,7 +1,7 @@
<if value1="$[_login_id]" value2="" type="ne">
<div style="color: #444; margin-bottom: 3px;">Welcome $[_login_name]</div>
<div>
<linkbutton page="cart"><img style="margin-top: 0px; margin-right: 10px;" src="/images/shopping_cart.png" width="30px" align="center"></linkbutton>
<linkbutton page="cart"><img style="margin-top: 0px; margin-right: 10px;" src="/assets/shopping_cart.png" width="30px" align="center"></linkbutton>
<linkbutton process="logout" class="button">Logout</linkbutton>
</div>
</if>
+2 -5
View File
@@ -8,19 +8,16 @@
<set name="login_email" value="$[login_email]">
<set name="login_type" value="$[.type]">
<set name="login_uuid" value="$[.uuid]">
<if value1="$[_session_id]" value2="" type="eq">
<createsession>
</if>
<setenv name="_login_id">$[login_id]</setenv>
<setenv name="_login_name">$[login_name]</setenv>
<setenv name="_login_email">$[login_email]</setenv>
<setenv name="_login_type">$[login_type]</setenv>
<setenv name="_login_uuid">$[login_uuid]</setenv>
<sql>update users set last_login=now() where id=$[login_id]</sql>
<if value1="$[start]" value2="" type="eq">
<if value1="$[@start]" value2="" type="eq">
<setpage name="account">
<else>
<setpage name="$[start]">
<setpage name="$[@start]">
</if>
<clearenv name="start">
<else>
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<title>LOGIN</title>
<contents>
<setenv name="start">$[start:0]</setenv>
+1 -1
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<title>Barant Systems</title>
<contents>
<sectionframe title="Log Out">
+2 -2
View File
@@ -1,4 +1,4 @@
<page template="mainpagetemplate">
<page>
<title>BARANT Technology Group</title>
<contents>
<setenv name="_menubar"></setenv>
@@ -16,7 +16,7 @@ features of an analog modular synthesizer put into a single VST3
instrument. With the added features of polyphony and patches that
change instantaneously this synthesizer is truly a powerhouse in the
audio toolbox.</p>
<a href="/vst"><img src="/images/modular1.png" style="width: 200px;" align="left"></a>
<a href="/vst"><img src="/assets/modular1.png" style="width: 200px;" align="left"></a>
<p>Excellent quality and technical performance provide a performance level
instrument for musicians or students who wish to learn sound wave
synthesis techniques or for musicians to enable that old analog sound
Loaded 100 of 162 files, more files were not shown because too many files have changed in this diff. Show more