/** Copyright (C) 2020-2026 Kedron Holdings LLC, All Rights Reserved. This file is part of Reactor.
 *  For info and license terms please see https://reactor.toggledbits.com/
 *  ------------------------------------------------------------------------------
*/
const a13_0x160315 = a13_0x2b3d;
(function (_0x281c1f, _0x2ee494) {
    const _0x110704 = a13_0x2b3d, _0x4509c4 = _0x281c1f();
    while (!![]) {
        try {
            const _0xf1aeb6 = parseInt(_0x110704(0x10d)) / 0x1 + parseInt(_0x110704(0x105)) / 0x2 + -parseInt(_0x110704(0xf6)) / 0x3 * (-parseInt(_0x110704(0xf8)) / 0x4) + parseInt(_0x110704(0xf0)) / 0x5 + parseInt(_0x110704(0x103)) / 0x6 * (-parseInt(_0x110704(0xef)) / 0x7) + parseInt(_0x110704(0x106)) / 0x8 + parseInt(_0x110704(0xfe)) / 0x9 * (-parseInt(_0x110704(0xf9)) / 0xa);
            if (_0xf1aeb6 === _0x2ee494)
                break;
            else
                _0x4509c4['push'](_0x4509c4['shift']());
        } catch (_0x3a3fef) {
            _0x4509c4['push'](_0x4509c4['shift']());
        }
    }
}(a13_0x80c4, 0x71cd1));
const version = 0x6235, Logger = require(a13_0x160315(0x107)), Observable = require(a13_0x160315(0x10c)), Observer = require(a13_0x160315(0xf7)), util = require(a13_0x160315(0xf4));
function a13_0x2b3d(_0x59a677, _0x259a73) {
    _0x59a677 = _0x59a677 - 0xee;
    const _0x80c48a = a13_0x80c4();
    let _0x2b3d29 = _0x80c48a[_0x59a677];
    return _0x2b3d29;
}
var expressions = {};
const validName = /^\p{Alphabetic}[\p{Alphabetic}0-9_$]*$/iu;
class Expression {
    constructor(_0x164d5f) {
        const _0x59d1c9 = a13_0x160315;
        this['id'] = _0x164d5f, this[_0x59d1c9(0xee)] = Logger[_0x59d1c9(0x10b)](this);
    }
    static ['isValidName'](_0x25eaaa) {
        const _0x4780a9 = a13_0x160315;
        return validName[_0x4780a9(0xf1)](_0x25eaaa);
    }
    static ['has'](_0x4ab1e8) {
        return !!expressions[_0x4ab1e8];
    }
    static ['add'](_0x31dcdf) {
        const _0x591ac1 = a13_0x160315;
        let _0x1e4a73 = _0x31dcdf['getID']();
        if (!Expression['isValidName'](_0x1e4a73))
            throw new Error('Expression\x20name\x20\x22' + _0x1e4a73 + _0x591ac1(0x10a));
        if (expressions[_0x1e4a73])
            throw new Error(_0x591ac1(0x108) + _0x1e4a73 + _0x591ac1(0x102));
        return expressions[_0x1e4a73] = _0x31dcdf, _0x31dcdf;
    }
    static [a13_0x160315(0x104)](_0x397de3) {
        return expressions[_0x397de3];
    }
    ['toString']() {
        const _0x57e512 = a13_0x160315;
        return this['constructor'][_0x57e512(0xf2)] + '#' + String(this['id']);
    }
    [a13_0x160315(0xfa)]() {
        const _0x1ff64e = a13_0x160315;
        this[_0x1ff64e(0xee)][_0x1ff64e(0xf5)](0x5, _0x1ff64e(0xfd), this), this['id'] && (this[_0x1ff64e(0x101)](), this[_0x1ff64e(0x100)](), delete expressions[this['id']], this[_0x1ff64e(0xfb)] = this['id'], this['id'] = null);
    }
    ['getID']() {
        return this['id'];
    }
    [a13_0x160315(0xff)]() {
        throw new ReferenceError('Needs\x20subclass\x20implementation');
    }
    [a13_0x160315(0x10e)]() {
        const _0x3d0c66 = a13_0x160315;
        throw new ReferenceError(_0x3d0c66(0xfc));
    }
}
util['mixin'](Expression, Observer), util[a13_0x160315(0x109)](Expression, Observable), module[a13_0x160315(0xf3)] = Expression;
function a13_0x80c4() {
    const _0x44be7d = [
        '1734894xwWoWi',
        '1563816pLzbUx',
        './Logger.js',
        'Expression\x20named\x20\x22',
        'mixin',
        '\x22\x20is\x20invalid',
        'getLogger',
        './Observable.js',
        '891145thpWcl',
        'setValue',
        'log',
        '141428jhsVBh',
        '553525kTPYyF',
        'test',
        'name',
        'exports',
        './util',
        'debug',
        '12843KtRSez',
        './Observer.js',
        '320UHyZJQ',
        '130VyBDul',
        '_destroy',
        '__deleted',
        'Needs\x20subclass\x20implementation',
        '%1:\x20Expression._destroy',
        '952209AeXypk',
        'getValue',
        'disconnect',
        'unsubscribe',
        '\x22\x20already\x20exists.',
        '168xTDarj',
        'get'
    ];
    a13_0x80c4 = function () {
        return _0x44be7d;
    };
    return a13_0x80c4();
}