Release of v5.1.1-beta6

Fix bug in the filter of Languages by linked entities. #1230.
This commit is contained in:
Robot committed 2025-07-01 15:21:42 +00:00
1 parent cf681b2b16
commit 1702bd1f0c
37 files changed
+870 -818

No files matched your search

+3 -3
View File
@@ -9,7 +9,7 @@ This is a professional-grade [Joomla 5.x](https://extensions.joomla.org/extensio
JCB generates native Joomla components, plugins, and modules for Joomla 3.x, 4.x, and 5.x - and is already prepared for Joomla 6. Every compiled project is tailored for the specific version without needing backward compatibility plugins. With integrated version-aware compiling, smart boilerplating, and Git-powered project syncing, JCB is much more than a code generator-it's a **full-stack development pipeline for Joomla extensions**.
You can install this component easily. The latest release (**5.1.1-beta5**) is available on [Releases](https://git.vdm.dev/joomla/pkg-component-builder/releases) and updated frequently with full source access.
You can install this component easily. The latest release (**5.1.1-beta6**) is available on [Releases](https://git.vdm.dev/joomla/pkg-component-builder/releases) and updated frequently with full source access.
Upgrades are seamless through Joomla's built-in extension update mechanism.
@@ -229,9 +229,9 @@ JCB is developed by developers for developers. Its purpose is to democratize hig
* **Company:** [Vast Development Method](https://dev.vdm.io)
* **Author:** [Llewellyn van der Merwe](mailto:joomla@vdm.io)
* **Component:** [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
* **Created:** 30th April, 2015 · **Last Build:** 25th June, 2025 · **Version:** 5.1.1-beta5
* **Created:** 30th April, 2015 · **Last Build:** 1st July, 2025 · **Version:** 5.1.1-beta6
* **License:** GNU General Public License version 2 or later; see LICENSE.txt · **Copyright:** Copyright (C) 2015 Vast Development Method. All rights reserved.
* **Lines:** 1092899 · **Fields:** 2096 · **Files:** 7506 · **Folders:** 728
* **Lines:** 1094999 · **Fields:** 2096 · **Files:** 7514 · **Folders:** 728
> Generated with [JCB](https://www.joomlacomponentbuilder.com) — The Smartest Way to Build Joomla Extensions.
+300 -289
View File
@@ -20,76 +20,104 @@ use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Mail\Mail;
use Joomla\Registry\Registry;
// No direct access to this file
\defined('_JEXEC') or die;
/**
* ###Component### component email helper
*
* @since 3.0
* Provides a complete and configurable mailer integration for Joomla components.
* Allows for custom headers, DKIM signing, embedded images, and HTML styling.
*
* @since 3.0
*/
abstract class ###Component###Email
{
/**
* The active recipient
* The active recipient.
*
* @var activeRecipient (array)
* @var array<string, mixed>
* @since 3.0
*/
public static $active = [];
public static array $active = [];
/**
* Configuration object
* Mail instances container.
*
* @var Registry
* @var Joomla___890fd6b1_0127_4f35_9b6e_ee6f2dc61bcc___Power[]
* @since 1.7.3
*/
public static ?Registry $config = null;
protected static array $instances = [];
/**
* Mailer object
* Global Configuration object.
*
* @var Mail
* @var Registry|null
* @since 5.1.1
*/
public static ?Mail $mailer = null;
protected static ?Registry $gConfig = null;
/**
* Custom Headers
* Component Configuration object.
*
* @var array
* @var Registry|null
* @since 3.0
*/
protected static ?Registry $config = null;
/**
* Mailer object.
*
* @var Joomla___890fd6b1_0127_4f35_9b6e_ee6f2dc61bcc___Power|null
* @since 3.0
*/
protected static ?Joomla___890fd6b1_0127_4f35_9b6e_ee6f2dc61bcc___Power $mailer = null;
/**
* Custom email headers.
*
* @var array<string, string>
* @since 3.0
*/
protected static array $header = [];
/**
* Get a configuration object
* Retrieve the component configuration.
*
* @return Registry Component configuration object
* @since 3.0
*/
public static function getConfig()
protected static function getConfig(): Registry
{
if (!self::$config)
{
self::$config = Joomla___aeb8e463_291f_4445_9ac4_34b637c12dbd___Power::getParams('com_###component###');
}
return self::$config;
return self::$config ??= Joomla___aeb8e463_291f_4445_9ac4_34b637c12dbd___Power::getParams('com_###component###');
}
/**
* Returns the global mailer object, only creating it if it doesn't already exist.
* Retrieve the global configuration.
*
* @return Registry Global configuration object
* @since 3.0
*/
public static function getMailerInstance()
protected static function getGlobalConfig(): Registry
{
if (!self::$mailer)
{
self::$mailer = self::createMailer();
}
return self::$mailer;
return self::$gConfig ??= Joomla___39403062_84fb_46e0_bac4_0023f766e827___Power::getApplication()->getConfig();
}
/**
* Check that a string looks like an email address.
* @param string $address The email address to check
* @param string|callable $patternselect A selector for the validation pattern to use :
* Get or create a Mailer instance.
*
* @return Joomla___890fd6b1_0127_4f35_9b6e_ee6f2dc61bcc___Power A cloned Mail object instance
* @since 3.0
*/
public static function getMailer(): Joomla___890fd6b1_0127_4f35_9b6e_ee6f2dc61bcc___Power
{
return self::$mailer ??= self::createMailer();
}
/**
* Validate an email address using a selected pattern or callable.
*
* @param string $address Email address to validate.
* @param string|callable|null $patternselect Validation pattern or callable.
* * `auto` Pick best pattern automatically;
* * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14;
* * `pcre` Use old PCRE implementation;
@@ -101,374 +129,357 @@ abstract class ###Component###Email
* return (strpos($address, '@') !== false);
* });
* You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator.
* @return boolean
* @static
* @access public
*
* @return bool True if valid, false otherwise
* @since 3.0
*/
public static function validateAddress($address, $patternselect = null): bool
public static function validateAddress(string $address, $patternselect = null): bool
{
return self::getMailerInstance()->validateAddress($address, $patternselect);
return self::getMailer()->validateAddress($address, $patternselect);
}
/**
* Get a mailer object.
* Set a custom email header.
*
* Returns the global {@link Mail} object, only creating it if it doesn't already exist.
* @param string $key Header name.
* @param string $value Header value.
*
* @return Mail object
*
* @see Mail
* @return void
* @since 3.0
*/
public static function getMailer(): Mail
public static function setHeader(string $key, string $value): void
{
if (!self::$mailer)
self::$header[$key] = $value;
}
/**
* Get or create a Mail instance with specific configuration.
*
* @param string $id Instance ID.
* @param bool $exceptions Enable exceptions.
*
* @return Joomla___890fd6b1_0127_4f35_9b6e_ee6f2dc61bcc___Power Configured Mail instance
* @since 5.1.1
*/
public static function getInstance(string $id = 'Joomla', bool $exceptions = true): Joomla___890fd6b1_0127_4f35_9b6e_ee6f2dc61bcc___Power
{
if (!isset(self::$instances[$id]))
{
self::$mailer = self::createMailer();
$config = clone self::getGlobalConfig();
$config->set('throw_exceptions', $exceptions);
self::$instances[$id] = Joomla___39403062_84fb_46e0_bac4_0023f766e827___Power::getContainer()->get(Joomla___3e2779e9_b33f_42b8_a13b_53f08d99f15b___Power::class)->createMailer($config);
}
$copy = clone self::$mailer;
return $copy;
return self::$instances[$id];
}
/**
* Create a mailer object
* Create a configured Mail instance.
*
* @return Mail object
*
* @see Mail
* @return Joomla___890fd6b1_0127_4f35_9b6e_ee6f2dc61bcc___Power The created Mail object with sender, reply-to and transport settings.
* @since 3.0
*/
protected static function createMailer(): Mail
protected static function createMailer(): Joomla___890fd6b1_0127_4f35_9b6e_ee6f2dc61bcc___Power
{
// set component params
$conf = self::getConfig();
// now load the mailer
$conf = self::getConfig();
$mailer = $conf->get('mailer', 'global');
$mail = self::getInstance();
// Create a Mail object
$mail = Mail::getInstance();
// check if set to global
if ('global' == $mailer)
if ($mailer === 'global')
{
// get the global details
$globalConf = Joomla___39403062_84fb_46e0_bac4_0023f766e827___Power::getConfig();
$mailer = $globalConf->get('mailer');
$smtpauth = ($globalConf->get('smtpauth') == 0) ? null : 1;
$smtpuser = $globalConf->get('smtpuser');
$smtppass = $globalConf->get('smtppass');
$smtphost = $globalConf->get('smtphost');
$smtpsecure = $globalConf->get('smtpsecure');
$smtpport = $globalConf->get('smtpport');
$sendmail = $globalConf->get('sendmail');
$mailfrom = $globalConf->get('mailfrom');
$fromname = $globalConf->get('fromname');
$replyto = $globalConf->get('replyto');
$replytoname = $globalConf->get('replytoname');
$global = self::getGlobalConfig();
$mailer = $global->get('mailer');
$params = [
'smtpauth' => $global->get('smtpauth') ? 1 : null,
'smtpuser' => $global->get('smtpuser'),
'smtppass' => $global->get('smtppass'),
'smtphost' => $global->get('smtphost'),
'smtpsecure' => $global->get('smtpsecure'),
'smtpport' => $global->get('smtpport'),
'sendmail' => $global->get('sendmail'),
'from' => $global->get('mailfrom'),
'name' => $global->get('fromname'),
'replyto' => $global->get('replyto'),
'replytoname' => $global->get('replytoname'),
];
}
else
{
$smtpauth = ($conf->get('smtpauth') == 0) ? null : 1;
$smtpuser = $conf->get('smtpuser');
$smtppass = $conf->get('smtppass');
$smtphost = $conf->get('smtphost');
$smtpsecure = $conf->get('smtpsecure');
$smtpport = $conf->get('smtpport');
$sendmail = $conf->get('sendmail');
$mailfrom = $conf->get('emailfrom');
$fromname = $conf->get('fromname');
$replyto = $conf->get('replyto');
$replytoname = $conf->get('replytoname');
$params = [
'smtpauth' => $conf->get('smtpauth') ? 1 : null,
'smtpuser' => $conf->get('smtpuser'),
'smtppass' => $conf->get('smtppass'),
'smtphost' => $conf->get('smtphost'),
'smtpsecure' => $conf->get('smtpsecure'),
'smtpport' => $conf->get('smtpport'),
'sendmail' => $conf->get('sendmail'),
'from' => $conf->get('emailfrom'),
'name' => $conf->get('fromname'),
'replyto' => $conf->get('replyto'),
'replytoname' => $conf->get('replytoname'),
];
}
// Set global sender
$mail->setSender(array($mailfrom, $fromname));
$mail->setSender([$params['from'], $params['name']]);
// set the global reply-to if found
if ($replyto && $replytoname)
{
if (!empty($params['replyto']) && !empty($params['replytoname']))
{
$mail->ClearReplyTos();
$mail->addReplyTo($replyto, $replytoname);
$mail->addReplyTo($params['replyto'], $params['replytoname']);
}
// Default mailer is to use PHP's mail function
switch ($mailer)
{
case 'smtp':
// set the SMTP option
$mail->useSMTP($smtpauth, $smtphost, $smtpuser, $smtppass, $smtpsecure, $smtpport);
$mail->useSMTP(
$params['smtpauth'],
$params['smtphost'],
$params['smtpuser'],
$params['smtppass'],
$params['smtpsecure'],
$params['smtpport']
);
break;
case 'sendmail':
// set the sendmail option
$mail->useSendmail($sendmail);
$mail->useSendmail($params['sendmail']);
$mail->IsSendmail();
break;
default:
$mail->IsMail();
break;
}
return $mail;
}
/**
* Set a Mail custom header.
* Compose and send an email with full options including attachments, HTML, DKIM, and reply-to support.
*
* @return void
* @param string|array $recipient Email or list of recipients.
* @param string $subject Subject line.
* @param string $body HTML body.
* @param string|null $textonly Optional plain text fallback.
* @param int $mode 1 = HTML, 0 = plain text.
* @param string|null $bounce_email Optional bounce email address.
* @param string|null $idsession Optional message tracking tag.
* @param string|array|null $mailreply Optional reply-to address(es).
* @param string|array|null $replyname Optional reply-to name(s).
* @param string|null $mailfrom Optional sender email override.
* @param string|null $fromname Optional sender name override.
* @param array|null $cc CC recipients.
* @param array|null $bcc BCC recipients.
* @param array|string|null $attachment Attachments.
* @param bool $embeded Embed image flag.
* @param array|null $embeds Embedded image definitions.
*
* @return bool True on success, false on failure.
* @since 3.0
*/
public static function setHeader($target, $value)
{
// set the header
self::$header[$target] = $value;
}
/**
* Send an email
*
* @return bool on success
*
*/
public static function send($recipient, $subject, $body, $textonly, $mode = 0, $bounce_email = null, $idsession = null, $mailreply = null, $replyname = null , $mailfrom = null, $fromname = null, $cc = null, $bcc = null, $attachment = null, $embeded = null , $embeds = null)
{
// Get a Mail instance
public static function send(
$recipient,
string $subject,
string $body,
?string $textonly,
int $mode = 0,
?string $bounce_email = null,
?string $idsession = null,
$mailreply = null,
$replyname = null,
?string $mailfrom = null,
?string $fromname = null,
?array $cc = null,
?array $bcc = null,
$attachment = null,
bool $embeded = false,
?array $embeds = null
): bool {
$mail = self::getMailer();
// set component params
$conf = self::getConfig();
// set if we have override
if ($mailfrom && $fromname)
{
$mail->setSender(array($mailfrom, $fromname));
$mail->setSender([$mailfrom, $fromname]);
}
// load the bounce email as sender if set
if (!is_null($bounce_email))
if ($bounce_email)
{
$mail->Sender = $bounce_email;
}
// Add tag to email to identify it
if (!is_null($idsession))
if ($idsession)
{
$mail->addCustomHeader('X-VDMmethodID:'.$idsession);
$mail->addCustomHeader('X-VDMmethodID:' . $idsession);
}
// set headers if found
if (isset(self::$header) && is_array(self::$header) && count((array)self::$header) > 0)
foreach (self::$header as $key => $val)
{
foreach (self::$header as $_target => $_value)
{
$mail->addCustomHeader($_target.':'.$_value);
}
$mail->addCustomHeader($key . ':' . $val);
}
// set the subject & Body
$mail->setSubject($subject);
$mail->setBody($body);
// Are we sending the email as HTML?
if ($mode)
{
$mail->IsHTML(true);
$mail->isHTML(true);
$mail->AltBody = $textonly;
}
//embed images
if ($embeded)
if ($embeded && !empty($embeds))
{
if(Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($embeds))
foreach ($embeds as $embed)
{
foreach($embeds as $embed)
{
$mail->AddEmbeddedImage($embed->Path,$embed->FileName);
}
$mail->addEmbeddedImage($embed->Path, $embed->FileName);
}
}
$mail->addRecipient($recipient);
$mail->addCC($cc);
$mail->addBCC($bcc);
$mail->addAttachment($attachment);
if (!empty($cc)) $mail->addCC($cc);
if (!empty($bcc)) $mail->addBCC($bcc);
if (!empty($attachment)) $mail->addAttachment($attachment);
// Take care of reply email addresses
if (is_array($mailreply))
if (!empty($mailreply))
{
$mail->ClearReplyTos();
$numReplyTo = count((array)$mailreply);
for ($i=0; $i < $numReplyTo; $i++)
if (is_array($mailreply))
{
$mail->addReplyTo($mailreply[$i], $replyname[$i]);
foreach ($mailreply as $i => $reply)
{
$mail->addReplyTo($reply, $replyname[$i] ?? '');
}
}
else
{
$mail->addReplyTo($mailreply, (string) $replyname);
}
}
elseif (!empty($mailreply))
{
$mail->ClearReplyTos();
$mail->addReplyTo($mailreply, $replyname);
}
// check if we can add the DKIM to email
if ($conf->get('enable_dkim'))
{
if (!empty($conf->get('dkim_domain')) && !empty($conf->get('dkim_selector')) && !empty($conf->get('dkim_private')) && !empty($conf->get('dkim_public')))
{
$mail->DKIM_domain = $conf->get('dkim_domain');
$mail->DKIM_selector = $conf->get('dkim_selector');
$mail->DKIM_identity = $conf->get('dkim_identity');
$mail->DKIM_passphrase = $conf->get('dkim_passphrase');
$sent = false;
$tmp = null;
try {
if (
$conf->get('enable_dkim') &&
($domain = $conf->get('dkim_domain')) &&
($selector = $conf->get('dkim_selector')) &&
($privateKey = $conf->get('dkim_private'))
) {
$mail->DKIM_domain = $domain;
$mail->DKIM_selector = $selector;
$mail->DKIM_identity = $conf->get('dkim_identity') ?: $domain;
$mail->DKIM_passphrase = $conf->get('dkim_passphrase');
$tmp = tempnam(sys_get_temp_dir(), 'VDM');
$h = fopen($tmp, 'w');
fwrite($h, $conf->get('dkim_private'));
fclose($h);
$mail->DKIM_private = $tmp;
if ($tmp === false || file_put_contents($tmp, $privateKey) === false)
{
throw new \RuntimeException('Failed to create temporary DKIM private key file.');
}
$mail->DKIM_private = $tmp;
}
$sent = $mail->Send();
} finally {
if ($tmp && file_exists($tmp))
{
@unlink($tmp);
}
}
$sendmail = $mail->Send();
$sent = $mail->Send();
if ($conf->get('enable_dkim') && !empty($conf->get('dkim_domain')) && !empty($conf->get('dkim_selector')) && !empty($conf->get('dkim_private')) && !empty($conf->get('dkim_public')))
if ($tmp)
{
@unlink($tmp);
}
if (method_exists('###Component###Helper','storeMessage'))
if (method_exists('###Component###Helper', 'storeMessage'))
{
// if we have active recipient details
if (isset(self::$active[$recipient]))
{
// store the massage if the method is set
###Component###Helper::storeMessage($sendmail, self::$active[$recipient], $subject, $body, $textonly, $mode, 'email');
// clear memory
unset(self::$active[$recipient]);
}
else
{
// store the massage if the method is set
###Component###Helper::storeMessage($sendmail, $recipient, $subject, $body, $textonly, $mode, 'email');
}
$data = self::$active[$recipient] ?? $recipient;
###Component###Helper::storeMessage($sent, $data, $subject, $body, $textonly, $mode, 'email');
unset(self::$active[$recipient]);
}
return $sendmail;
return $sent;
}
/**
* Set html text (in a row) and subject (as title) to a email table.
* do not use <p> instead use <br />
* in your html that you pass to this method
* since it is a table row it does not
* work well with paragraphs
* Build a complete minimal HTML email body with basic headers.
* Use <br /> instead of <p> for layout consistency in emails.
*
* @return string on success
* @param string $html Body HTML content.
* @param string $subject Email subject/title used in the <title> tag.
*
* @return string Full HTML email body.
* @since 3.0
*/
public static function setBasicBody($html, $subject)
public static function setBasicBody(string $html, string $subject): string
{
$body = [];
$body[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";
$body[] = "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
$body[] = "<head>";
$body[] = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
$body[] = "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>";
$body[] = "<title>" . $subject . "</title>";
$body[] = "<style type=\"text/css\">";
$body[] = "#outlook a {padding:0;}";
$body[] = ".ExternalClass {width:100%;}";
$body[] = ".ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} ";
$body[] = "p {margin: 0; padding: 0; font-size: 0px; line-height: 0px;} ";
$body[] = "table td {border-collapse: collapse;}";
$body[] = "table {border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }";
$body[] = "img {display: block; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;}";
$body[] = "a img {border: none;}";
$body[] = "a {text-decoration: none; color: #000001;}";
$body[] = "a.phone {text-decoration: none; color: #000001 !important; pointer-events: auto; cursor: default;}";
$body[] = "span {font-size: 13px; line-height: 17px; font-family: monospace; color: #000001;}";
$body[] = "</style>";
$body[] = "<!--[if gte mso 9]>";
$body[] = "<style>";
$body[] = "/* Target Outlook 2007 and 2010 */";
$body[] = "</style>";
$body[] = "<![endif]-->";
$body[] = "</head>";
$body[] = "<body style=\"width:100%; margin:0; padding:0; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;\">";
$body[] = $html;
$body[] = "</body>";
$body[] = "</html>";
return implode("\n", $body);
return implode("\n", [
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
'<html xmlns="http://www.w3.org/1999/xhtml">',
'<head>',
'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />',
'<meta name="viewport" content="width=device-width, initial-scale=1.0"/>',
'<title>' . htmlspecialchars($subject) . '</title>',
'<style type="text/css">',
'#outlook a {padding:0;} .ExternalClass {width:100%;} .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height:100%;}',
'p {margin: 0; padding: 0; font-size: 0px; line-height: 0px;}',
'table, table td {border-collapse: collapse;}',
'img {display:block; outline:none; text-decoration:none; -ms-interpolation-mode:bicubic;}',
'a img {border:none;} a {text-decoration:none; color:#000001;} a.phone {pointer-events:auto; cursor:default; color:#000001 !important;}',
'span {font-size:13px; line-height:17px; font-family:monospace; color:#000001;}',
'</style>',
'<!--[if gte mso 9]><style>/* Target Outlook 2007 and 2010 */</style><![endif]-->',
'</head>',
'<body style="width:100%; margin:0; padding:0; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">',
$html,
'</body>',
'</html>'
]);
}
/**
* Set html text (in a row) and subject (as title) to a email table.
* do not use <p> instead use <br />
* in your html that you pass to this method
* since it is a table row it does not
* work well with paragraphs
* Build a styled HTML email with outer table formatting for wide layout support.
* Suitable for rich content emails that need outer table structure.
*
* @return string on success
* @param string $html Inner body HTML content.
* @param string $subject Email subject/title used in the <title> tag.
*
* @return string Complete HTML email content.
* @since 3.0
*/
public static function setTableBody($html, $subject)
public static function setTableBody(string $html, string $subject): string
{
$body = [];
$body[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";
$body[] = "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
$body[] = "<head>";
$body[] = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
$body[] = "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>";
$body[] = "<title>" . $subject . "</title>";
$body[] = "<style type=\"text/css\">";
$body[] = "#outlook a {padding:0;}";
$body[] = ".ExternalClass {width:100%;}";
$body[] = ".ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} ";
$body[] = "p {margin: 0; padding: 0; font-size: 0px; line-height: 0px;} ";
$body[] = "table td {border-collapse: collapse;}";
$body[] = "table {border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }";
$body[] = "img {display: block; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;}";
$body[] = "a img {border: none;}";
$body[] = "a {text-decoration: none; color: #000001;}";
$body[] = "a.phone {text-decoration: none; color: #000001 !important; pointer-events: auto; cursor: default;}";
$body[] = "span {font-size: 13px; line-height: 17px; font-family: monospace; color: #000001;}";
$body[] = "</style>";
$body[] = "<!--[if gte mso 9]>";
$body[] = "<style>";
$body[] = "/* Target Outlook 2007 and 2010 */";
$body[] = "</style>";
$body[] = "<![endif]-->";
$body[] = "</head>";
$body[] = "<body style=\"width:100%; margin:0; padding:0; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;\">";
$body[] = "\n<!-- body wrapper -->";
$body[] = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"margin:0; padding:0; width:100%; line-height: 100% !important;\">";
$body[] = "<tr>";
$body[] = "<td valign=\"top\">";
$body[] = "<!-- edge wrapper -->";
$body[] = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\" width=\"800\" >";
$body[] = "<tr>";
$body[] = "<td valign=\"top\">";
$body[] = "<!-- content wrapper -->";
$body[] = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\" width=\"780\">";
$body[] = "<tr>";
$body[] = "<td valign=\"top\" style=\"vertical-align: top;\">";
$body[] = $html;
$body[] = "</td>";
$body[] = "</tr>";
$body[] = "</table>";
$body[] = "<!-- / content wrapper -->";
$body[] = "</td>";
$body[] = "</tr>";
$body[] = "</table>";
$body[] = "<!-- / edge wrapper -->";
$body[] = "</td>";
$body[] = "</tr>";
$body[] = "</table>";
$body[] = "<!-- / page wrapper -->";
$body[] = "</body>";
$body[] = "</html>";
return implode("\n", $body);
return implode("\n", [
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
'<html xmlns="http://www.w3.org/1999/xhtml">',
'<head>',
'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />',
'<meta name="viewport" content="width=device-width, initial-scale=1.0"/>',
'<title>' . htmlspecialchars($subject) . '</title>',
'<style type="text/css">',
'#outlook a {padding:0;} .ExternalClass {width:100%;} .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height:100%;}',
'p {margin: 0; padding: 0; font-size: 0px; line-height: 0px;}',
'table, table td {border-collapse: collapse;}',
'img {display:block; outline:none; text-decoration:none; -ms-interpolation-mode:bicubic;}',
'a img {border:none;} a {text-decoration:none; color:#000001;} a.phone {pointer-events:auto; cursor:default; color:#000001 !important;}',
'span {font-size:13px; line-height:17px; font-family:monospace; color:#000001;}',
'</style>',
'<!--[if gte mso 9]><style>/* Target Outlook 2007 and 2010 */</style><![endif]-->',
'</head>',
'<body style="width:100%; margin:0; padding:0; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">',
'<table cellpadding="0" cellspacing="0" border="0" width="100%" style="line-height:100% !important;">',
'<tr><td valign="top">',
'<table cellpadding="0" cellspacing="0" border="0" align="center" width="800">',
'<tr><td valign="top">',
'<table cellpadding="0" cellspacing="0" border="0" align="center" width="780">',
'<tr><td valign="top" style="vertical-align:top;">',
$html,
'</td></tr></table>',
'</td></tr></table>',
'</td></tr></table>',
'</body>',
'</html>'
]);
}
}
@@ -138,18 +138,18 @@ class HtmlView extends BaseHtmlView
if ($this->refid && $this->ref)
{
// return to the item that referred to this item
$this->referral = '&ref=' . (string)$this->ref . '&refid=' . (int)$this->refid;
$this->referral = '&ref=' . (string) $this->ref . '&refid=' . (int) $this->refid;
}
elseif($this->ref)
{
// return to the list view that referred to this item
$this->referral = '&ref=' . (string)$this->ref;
$this->referral = '&ref=' . (string) $this->ref;
}
// check return value
if (!is_null($return))
{
// add the return value
$this->referral .= '&return=' . (string)$return;
$this->referral .= '&return=' . (string) $return;
}###LINKEDVIEWITEMS###
// Set the toolbar
@@ -178,8 +178,8 @@ class HtmlView extends BaseHtmlView
{
###ADDTOOLBAR###
// now initiate the toolbar
$this->toolbar ??= Toolbar::getInstance();
// add the toolbar if it's not already loaded
$this->toolbar ??= Joomla___39403062_84fb_46e0_bac4_0023f766e827___Power::getContainer()->get(Joomla___5d2ae99b_1ea1_44f0_9b59_f1aa7eab9e2e___Power::class)->createToolbar('toolbar');
}
/**
+1 -1
View File
@@ -28,7 +28,7 @@ extract($displayData);
* Layout variables
* -----------------
* @var Form $tmpl The Empty form for template
* @var array $forms Array of JForm instances for render the rows
* @var array $forms Array of Form instances for render the rows
* @var bool $multiple The multiple state for the form field
* @var int $min Count of minimum repeating in multiple mode
* @var int $max Count of maximum repeating in multiple mode
+11 -11
View File
@@ -83,7 +83,7 @@ CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_component` (
`php_site_event` MEDIUMTEXT NULL,
`preferred_joomla_version` INT(11) NOT NULL DEFAULT 3,
`readme` TEXT NULL,
`remove_line_breaks` TINYINT(1) NOT NULL DEFAULT 1,
`remove_line_breaks` TINYINT(1) NULL DEFAULT 1,
`sales_server` INT(11) NOT NULL DEFAULT 0,
`short_description` VARCHAR(255) NULL DEFAULT '',
`sql` MEDIUMTEXT NULL,
@@ -1245,7 +1245,7 @@ CREATE TABLE IF NOT EXISTS `#__componentbuilder_language_translation` (
`modules` TEXT NULL,
`plugins` TEXT NULL,
`source` MEDIUMTEXT NULL,
`translation` TEXT NULL,
`translation` MEDIUMTEXT NULL,
`params` TEXT NULL,
`published` TINYINT(3) NULL DEFAULT 1,
`created_by` INT unsigned NULL,
@@ -2153,7 +2153,7 @@ INSERT INTO `#__componentbuilder_joomla_power` (`id`, `description`, `guid`, `se
INSERT INTO `#__componentbuilder_power` (`id`, `guid`, `system_name`, `name`, `type`, `description`, `add_licensing_template`, `licensing_template`, `power_version`, `extends`, `extends_custom`, `extendsinterfaces_custom`, `extendsinterfaces`, `implements`, `implements_custom`, `namespace`, `add_head`, `property_selection`, `method_selection`, `head`, `use_selection`, `main_class_code`, `load_selection`, `composer`, `params`, `published`, `created`, `version`, `hits`, `access`) VALUES
(4, 'c4169332-3914-400e-b861-972b2d465963', 'JCB.Spreadsheet.Importer', 'Importer', 'final class', 'Spreadsheet Importer Class\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\[[[ComponentNamespace]]].Spreadsheet.Importer', 0, '{}', '{}', '', '{\"use_selection0\":{\"use\":\"61d1146f-2c2e-4e42-8492-d076f945cf35\",\"as\":\"FileReader\"},\"use_selection1\":{\"use\":\"9ffc54fa-a71e-412f-bc8b-064fc3b69167\",\"as\":\"RowDataProcessor\"}}', 'CS8qKg0KCSAqIFRoZSBGaWxlUmVhZGVyIENsYXNzLg0KCSAqDQoJICogQHZhciAgIEZpbGVSZWFkZXINCgkgKiBAc2luY2UgMy4wLjgNCgkgKi8NCglwcm90ZWN0ZWQgRmlsZVJlYWRlciAkZmlsZXJlYWRlcjsNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yLg0KCSAqDQoJICogQHBhcmFtIEZpbGVSZWFkZXIgICAkZmlsZXJlYWRlciAgIFRoZSBGaWxlUmVhZGVyIENsYXNzLg0KCSAqDQoJICogQHNpbmNlIDMuMC44DQoJICovDQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEZpbGVSZWFkZXIgJGZpbGVyZWFkZXIpDQoJew0KCQkkdGhpcy0+ZmlsZXJlYWRlciA9ICRmaWxlcmVhZGVyOw0KCX0NCg0KCS8qKg0KCSAqIFN0cmVhbSByb3dzIGZyb20gYSBDU1Ygb3IgRXhjZWwgZmlsZSBvbmUgYnkgb25lIHVzaW5nIHlpZWxkLg0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAkZmlsZVBhdGggICAgVGhlIHBhdGggdG8gdGhlIGZpbGUuDQoJICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAkc3RhcnRSb3cgICAgVGhlIHN0YXJ0aW5nIHJvdyBpbmRleC4NCgkgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICRjaHVua1NpemUgICBUaGUgbnVtYmVyIG9mIHJvd3MgdG8gcmVhZCBwZXIgY2h1bmsuDQoJICogQHBhcmFtIFJvd0RhdGFQcm9jZXNzb3IgICAkcHJvY2Vzc29yICAgVGhlIHByb2Nlc3NvciB1c2VkIHRvIHRyYW5zZm9ybSB0aGUgcm93IGRhdGEgaW50byB0aGUgZGVzaXJlZCBmb3JtYXQuDQoJICoNCgkgKiBAcmV0dXJuIFxHZW5lcmF0b3IgICAgQSBnZW5lcmF0b3IgdGhhdCB5aWVsZHMgZWFjaCByb3cgYXMgYW4gYXJyYXkuDQoJICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0Lg0KCSAqIEB0aHJvd3MgXE91dE9mUmFuZ2VFeGNlcHRpb24gSWYgdGhlIHN0YXJ0IHJvdyBpcyBiZXlvbmQgdGhlIGhpZ2hlc3Qgcm93LCBubyByb3dzIGNhbiBiZSBwcm9jZXNzZWQuDQoJICogQHRocm93cyBSZWFkZXJFeGNlcHRpb24gSWYgdGhlcmUgaXMgYW4gZXJyb3IgaWRlbnRpZnlpbmcgb3IgcmVhZGluZyB0aGUgZmlsZS4NCgkgKiBAdGhyb3dzIFNwcmVhZHNoZWV0RXhjZXB0aW9uIElmIHRoZXJlIGlzIGFuIGVycm9yIHdvcmtpbmcgd2l0aCB0aGUgc3ByZWFkc2hlZXQuDQoJICogQHNpbmNlIDMuMi4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIHJlYWQoc3RyaW5nICRmaWxlUGF0aCwgaW50ICRzdGFydFJvdywgaW50ICRjaHVua1NpemUsIFJvd0RhdGFQcm9jZXNzb3IgJHByb2Nlc3Nvcik6IFxHZW5lcmF0b3INCgl7DQoJCWZvcmVhY2ggKCR0aGlzLT5maWxlcmVhZGVyLT5yZWFkKCRmaWxlUGF0aCwgJHN0YXJ0Um93LCAkY2h1bmtTaXplKSBhcyAkcm93KQ0KCQl7DQoJCQl5aWVsZCAkcHJvY2Vzc29yLT5wcm9jZXNzKCRyb3cpOw0KCQl9DQoJfQ==', '{}', '{}', '', 1, '2021-11-13 17:52:23', 26, 0, 1),
(11, '4b225c51-d293-48e4-b3f6-5136cf5c3f18', 'Utilities Json Helper', 'JsonHelper', 'abstract class', 'The json checker\r\n\r\n@since 3.0.9', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICAzcmQgU2VwdGVtYmVyLCAyMDIwDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', '', '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Utilities.JsonHelper', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIENoZWNrIGlmIHlvdSBoYXZlIGEganNvbiBzdHJpbmcNCgkgKg0KCSAqIEBpbnB1dCAgICBzdHJpbmcgICRzdHJpbmcgIFRoZSBqc29uIHN0cmluZyB0byBjaGVjaw0KCSAqDQoJICogQHJldHVybnMgYm9vbCB0cnVlIG9uIHN1Y2Nlc3MNCgkgKiANCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVjaygkc3RyaW5nKTogYm9vbA0KCXsNCgkJaWYgKFN0cmluZ0hlbHBlcjo6Y2hlY2soJHN0cmluZykpDQoJCXsNCgkJCWpzb25fZGVjb2RlKChzdHJpbmcpICRzdHJpbmcpOw0KCQkJcmV0dXJuIChqc29uX2xhc3RfZXJyb3IoKSA9PT0gSlNPTl9FUlJPUl9OT05FKTsNCgkJfQ0KDQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCgkvKioNCgkgKiBDb252ZXJ0IGEganNvbiBvYmplY3QgdG8gYSBzdHJpbmcNCgkgKg0KCSAqIEBpbnB1dCAgICBzdHJpbmcgICR2YWx1ZSAgVGhlIGpzb24gc3RyaW5nIHRvIGNvbnZlcnQNCgkgKg0KCSAqIEByZXR1cm5zIGEgc3RyaW5nDQoJICogDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3RyaW5nKCR2YWx1ZSwgJHNlcGFyYXRvciA9ICIsICIsICR0YWJsZSA9IG51bGwsICRpZCA9ICdpZCcsICRuYW1lID0gJ25hbWUnKQ0KCXsNCgkJLy8gZG8gc29tZSB0YWJsZSBmb290IHdvcmsNCgkJJGV4dGVybmFsID0gZmFsc2U7DQoJCWlmIChpc19zdHJpbmcoJHRhYmxlKSAmJiBzdHJwb3MoKHN0cmluZykgJHRhYmxlLCAnI19fJykgIT09IGZhbHNlKQ0KCQl7DQoJCQkkZXh0ZXJuYWwgPSB0cnVlOw0KCQkJJHRhYmxlID0gc3RyX3JlcGxhY2UoJyNfXycsICcnLCAoc3RyaW5nKSAkdGFibGUpOw0KCQl9DQoNCgkJLy8gY2hlY2sgaWYgc3RyaW5nIGlzIEpTT04NCgkJJHJlc3VsdCA9IGpzb25fZGVjb2RlKChzdHJpbmcpICR2YWx1ZSwgdHJ1ZSk7DQoJCWlmIChqc29uX2xhc3RfZXJyb3IoKSA9PT0gSlNPTl9FUlJPUl9OT05FKQ0KCQl7DQoJCQkvLyBpcyBKU09ODQoJCQlpZiAoQXJyYXlIZWxwZXI6OmNoZWNrKCRyZXN1bHQpKQ0KCQkJew0KCQkJCWlmIChTdHJpbmdIZWxwZXI6OmNoZWNrKCR0YWJsZSkpDQoJCQkJew0KCQkJCQkkbmFtZXMgPSBbXTsNCgkJCQkJZm9yZWFjaCAoJHJlc3VsdCBhcyAkdmFsKQ0KCQkJCQl7DQoJCQkJCQlpZiAoJGV4dGVybmFsKQ0KCQkJCQkJew0KCQkJCQkJCWlmICgkX25hbWUgPSBHZXRIZWxwZXI6OnZhcihudWxsLCAkdmFsLCAkaWQsICRuYW1lLCAnPScsICR0YWJsZSkpDQoJCQkJCQkJew0KCQkJCQkJCQkkbmFtZXNbXSA9ICRfbmFtZTsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCQllbHNlDQoJCQkJCQl7DQoJCQkJCQkJaWYgKCRfbmFtZSA9IEdldEhlbHBlcjo6dmFyKCR0YWJsZSwgJHZhbCwgJGlkLCAkbmFtZSkpDQoJCQkJCQkJew0KCQkJCQkJCQkkbmFtZXNbXSA9ICRfbmFtZTsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJaWYgKEFycmF5SGVscGVyOjpjaGVjaygkbmFtZXMpKQ0KCQkJCQl7DQoJCQkJCQlyZXR1cm4gKHN0cmluZykgaW1wbG9kZSgkc2VwYXJhdG9yLCAkbmFtZXMpOw0KCQkJCQl9CQ0KCQkJCX0NCgkJCQlyZXR1cm4gKHN0cmluZykgaW1wbG9kZSgkc2VwYXJhdG9yLCAkcmVzdWx0KTsNCgkJCX0NCgkJCXJldHVybiAoc3RyaW5nKSBqc29uX2RlY29kZSgoc3RyaW5nKSAkdmFsdWUpOw0KCQl9DQoJCXJldHVybiAkdmFsdWU7DQoJfQ0K', '{\"load_selection0\":{\"load\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\"},\"load_selection1\":{\"load\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\"},\"load_selection2\":{\"load\":\"db87c339-5bb6-4291-a7ef-2c48ea1b06bc\"}}', '\"\"', '{\"source\":{\"guid\":\"1a1b6f3d-f16c-431a-b270-7a8a80cc7f56\"}}', 1, '2022-03-08 21:03:54', 27, 0, 1),
(12, '1f28cb53-60d9-4db1-b517-3c7dc6b429ef', 'Utilities String Helper', 'StringHelper', 'abstract class', 'Some string tricks\r\n\r\n@since 3.0.9', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICAzcmQgU2VwdGVtYmVyLCAyMDIwDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Utilities.StringHelper', 1, '{}', '{}', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcRmlsdGVyXElucHV0RmlsdGVyOw0KdXNlIEpvb21sYVxDTVNcTGFuZ3VhZ2VcTGFuZ3VhZ2VGYWN0b3J5SW50ZXJmYWNlOw0KdXNlIEpvb21sYVxDTVNcTGFuZ3VhZ2VcTGFuZ3VhZ2VGYWN0b3J5Ow==', '{\"use_selection0\":{\"use\":\"640b5352-fb09-425f-a26e-cd44eda03f15\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIFRoZSBNYWluIEFjdGl2ZSBMYW5ndWFnZQ0KCSAqIA0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgJGxhbmdUYWc7DQoNCgkvKioNCgkgKiBWYWxpZGF0ZSB0aGF0IGlucHV0IGlzIGEgbm9uLWVtcHR5LCBub24td2hpdGVzcGFjZS1vbmx5IHN0cmluZy4NCgkgKg0KCSAqIEBwYXJhbSBtaXhlZCAkaW5wdXQgVGhlIGlucHV0IHZhbHVlIHRvIHZhbGlkYXRlLg0KCSAqDQoJICogQHJldHVybnMgYm9vbCAgVHJ1ZSBpZiBpbnB1dCBpcyBhIG5vbi1lbXB0eSwgbm9uLXdoaXRlc3BhY2Utb25seSBzdHJpbmcsIG90aGVyd2lzZSBmYWxzZS4NCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVjaygkaW5wdXQpOiBib29sDQoJew0KCQlyZXR1cm4gaXNfc3RyaW5nKCRpbnB1dCkgJiYgdHJpbSgkaW5wdXQpICE9PSAnJzsNCgl9DQoNCgkvKioNCgkgKiBTaG9ydGVucyBhIHN0cmluZyB0byBhIHNwZWNpZmllZCBsZW5ndGgsIG9wdGlvbmFsbHkgYWRkaW5nIGEgdG9vbHRpcCB3aXRoIHRoZSBmdWxsIHRleHQuDQoJICoNCgkgKiBUaGlzIG1ldGhvZCBzYWZlbHkgc2hvcnRlbnMgdGhlIGlucHV0IHN0cmluZyB3aXRob3V0IGN1dHRpbmcgd29yZHMgYWJydXB0bHkuIElmIHRoZSBzdHJpbmcNCgkgKiBleGNlZWRzIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLCBlbGxpcHNlcyAoLi4uKSBhcmUgYWRkZWQuIE9wdGlvbmFsbHksIGEgdG9vbHRpcCBjb250YWluaW5nIHRoZQ0KCSAqIGxvbmdlciBvcmlnaW5hbCBzdHJpbmcgY2FuIGJlIGluY2x1ZGVkLg0KCSAqDQoJICogQHBhcmFtIG1peGVkICRzdHJpbmcgICBUaGUgc3RyaW5nIHlvdSB3b3VsZCBsaWtlIHRvIHNob3J0ZW4uDQoJICogQHBhcmFtIGludCAgICRsZW5ndGggICBUaGUgbWF4aW11bSBsZW5ndGggZm9yIHRoZSBzaG9ydGVuZWQgc3RyaW5nLiBEZWZhdWx0IGlzIDQwLg0KCSAqIEBwYXJhbSBib29sICAkYWRkVGlwICAgV2hldGhlciB0byBhZGQgYSB0b29sdGlwIHdpdGggdGhlIG9yaWdpbmFsIGxvbmdlciBzdHJpbmcuIERlZmF1bHQgdHJ1ZS4NCgkgKg0KCSAqIEByZXR1cm4gc3RyaW5nfG1peGVkICAgVGhlIHNob3J0ZW5lZCBzdHJpbmcsIG9wdGlvbmFsbHkgd2l0aCBhIHRvb2x0aXAuIE9yIG9yaWdpbmFsIHZhbHVlIHBhc3NlZA0KCSAqIEBzaW5jZSAgMy4yLjENCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNob3J0ZW4oJHN0cmluZywgaW50ICRsZW5ndGggPSA0MCwgYm9vbCAkYWRkVGlwID0gdHJ1ZSkNCgl7DQoJCS8vIFZhbGlkYXRlIHN0cmluZyBpbnB1dCBhbmQgcmV0dXJuIG9yaWdpbmFsIGlmIGludmFsaWQgb3Igc2hvcnQgZW5vdWdoLg0KCQlpZiAoIXNlbGY6OmNoZWNrKCRzdHJpbmcpIHx8IG1iX3N0cmxlbigkc3RyaW5nKSA8PSAkbGVuZ3RoKQ0KCQl7DQoJCQlyZXR1cm4gJHN0cmluZzsNCgkJfQ0KDQoJCS8vIFRydW5jYXRlIHN0cmluZyB0byBuZWFyZXN0IHdvcmQgYm91bmRhcnkNCgkJJHNob3J0ZW5lZCA9IG1iX3N1YnN0cigkc3RyaW5nLCAwLCAkbGVuZ3RoKTsNCg0KCQkvLyBGaW5kIHRoZSBsYXN0IHNwYWNlIHRvIGF2b2lkIGN1dHRpbmcgb2ZmIGEgd29yZA0KCQkkbGFzdFNwYWNlID0gbWJfc3RycnBvcygkc2hvcnRlbmVkLCAnICcpOw0KCQlpZiAoJGxhc3RTcGFjZSAhPT0gZmFsc2UpDQoJCXsNCgkJCSRzaG9ydGVuZWQgPSBtYl9zdWJzdHIoJHNob3J0ZW5lZCwgMCwgJGxhc3RTcGFjZSk7DQoJCX0NCg0KCQkvLyBQcmVwYXJlIHRyaW1tZWQgYW5kIHNob3J0ZW5lZCBvdXRwdXQgd2l0aCBlbGxpcHNlcw0KCQkkc2hvcnRlbmVkID0gdHJpbSgkc2hvcnRlbmVkKSAuICcuLi4nOw0KDQoJCS8vIEFkZCB0b29sdGlwIGlmIHJlcXVlc3RlZA0KCQlpZiAoJGFkZFRpcCkNCgkJew0KCQkJLy8gU2FmZWx5IGVzY2FwZSBvdXRwdXQgZm9yIEhUTUwNCgkJCSR0aXRsZSA9IHNlbGY6OnNob3J0ZW4oJHN0cmluZywgNDAwICwgZmFsc2UpOw0KCQkJJGVzY2FwZWRUaXRsZSA9IGh0bWxzcGVjaWFsY2hhcnMoJHRpdGxlLCBFTlRfUVVPVEVTLCAnVVRGLTgnKTsNCgkJCSRlc2NhcGVkU2hvcnQgPSBodG1sc3BlY2lhbGNoYXJzKCRzaG9ydGVuZWQsIEVOVF9RVU9URVMsICdVVEYtOCcpOw0KDQoJCQlyZXR1cm4gJzxzcGFuIGNsYXNzPSJoYXNUaXAiIHRpdGxlPSInIC4gJGVzY2FwZWRUaXRsZSAuICciIHN0eWxlPSJjdXJzb3I6aGVscCI+Jw0KCQkJCS4gJGVzY2FwZWRTaG9ydA0KCQkJCS4gJzwvc3Bhbj4nOw0KCQl9DQoNCgkJLy8gUmV0dXJuIHNob3J0ZW5lZCB2ZXJzaW9uIHdpdGhvdXQgdG9vbHRpcA0KCQlyZXR1cm4gJHNob3J0ZW5lZDsNCgl9DQoNCgkvKioNCgkgKiBNYWtlcyBhIHN0cmluZyBzYWZlIGJ5IHNhbml0aXppbmcgYW5kIGZvcm1hdHRpbmcgaXQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgdHlwZS4NCgkgKg0KCSAqIFRoaXMgbWV0aG9kIGNhbiByZW1vdmUgdW53YW50ZWQgY2hhcmFjdGVycywgdHJhbnNsaXRlcmF0ZSB0ZXh0LCByZXBsYWNlIG51bWJlcnMgd2l0aCANCgkgKiB0aGVpciBFbmdsaXNoIGVxdWl2YWxlbnRzLCBhbmQgYXBwbHkgZGlmZmVyZW50IGNhc2UgZm9ybWF0dGluZyBzdHlsZXMuDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICAkc3RyaW5nICAgICAgICAgICAgVGhlIHN0cmluZyB0byBzYW5pdGl6ZSBhbmQgZm9ybWF0Lg0KCSAqIEBwYXJhbSBzdHJpbmcgICR0eXBlICAgICAgICAgICAgICBUaGUgZm9ybWF0dGluZyB0eXBlIHRvIGFwcGx5LiBTdXBwb3J0ZWQgdmFsdWVzOg0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICdmaWxlbmFtZScgIDogUmVtb3ZlcyBzcGVjaWFsIGNoYXJhY3RlcnMgYW5kIGV4dHJhIHNwYWNlcy4NCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAnTCcgLine truncated
(12, '1f28cb53-60d9-4db1-b517-3c7dc6b429ef', 'Utilities String Helper', 'StringHelper', 'abstract class', 'Some string tricks\r\n\r\n@since 3.0.9', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICAzcmQgU2VwdGVtYmVyLCAyMDIwDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Utilities.StringHelper', 1, '{}', '{}', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcRmlsdGVyXElucHV0RmlsdGVyOw0KdXNlIEpvb21sYVxDTVNcTGFuZ3VhZ2VcTGFuZ3VhZ2VGYWN0b3J5SW50ZXJmYWNlOw0KdXNlIEpvb21sYVxDTVNcTGFuZ3VhZ2VcTGFuZ3VhZ2VGYWN0b3J5Ow==', '{\"use_selection0\":{\"use\":\"640b5352-fb09-425f-a26e-cd44eda03f15\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIFRoZSBNYWluIEFjdGl2ZSBMYW5ndWFnZQ0KCSAqIA0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgJGxhbmdUYWc7DQoNCgkvKioNCgkgKiBWYWxpZGF0ZSB0aGF0IGlucHV0IGlzIGEgbm9uLWVtcHR5LCBub24td2hpdGVzcGFjZS1vbmx5IHN0cmluZy4NCgkgKg0KCSAqIEBwYXJhbSBtaXhlZCAkaW5wdXQgVGhlIGlucHV0IHZhbHVlIHRvIHZhbGlkYXRlLg0KCSAqDQoJICogQHJldHVybnMgYm9vbCAgVHJ1ZSBpZiBpbnB1dCBpcyBhIG5vbi1lbXB0eSwgbm9uLXdoaXRlc3BhY2Utb25seSBzdHJpbmcsIG90aGVyd2lzZSBmYWxzZS4NCgkgKiBAc2luY2UgIDMuMC45DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVjaygkaW5wdXQpOiBib29sDQoJew0KCQlyZXR1cm4gaXNfc3RyaW5nKCRpbnB1dCkgJiYgdHJpbSgkaW5wdXQpICE9PSAnJzsNCgl9DQoNCgkvKioNCgkgKiBTaG9ydGVucyBhIHN0cmluZyB0byBhIHNwZWNpZmllZCBsZW5ndGgsIG9wdGlvbmFsbHkgYWRkaW5nIGEgdG9vbHRpcCB3aXRoIHRoZSBmdWxsIHRleHQuDQoJICoNCgkgKiBUaGlzIG1ldGhvZCBzYWZlbHkgc2hvcnRlbnMgdGhlIGlucHV0IHN0cmluZyB3aXRob3V0IGN1dHRpbmcgd29yZHMgYWJydXB0bHkuIElmIHRoZSBzdHJpbmcNCgkgKiBleGNlZWRzIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLCBlbGxpcHNlcyAoLi4uKSBhcmUgYWRkZWQuIE9wdGlvbmFsbHksIGEgdG9vbHRpcCBjb250YWluaW5nIHRoZQ0KCSAqIGxvbmdlciBvcmlnaW5hbCBzdHJpbmcgY2FuIGJlIGluY2x1ZGVkLg0KCSAqDQoJICogQHBhcmFtIG1peGVkICRzdHJpbmcgICBUaGUgc3RyaW5nIHlvdSB3b3VsZCBsaWtlIHRvIHNob3J0ZW4uDQoJICogQHBhcmFtIGludCAgICRsZW5ndGggICBUaGUgbWF4aW11bSBsZW5ndGggZm9yIHRoZSBzaG9ydGVuZWQgc3RyaW5nLiBEZWZhdWx0IGlzIDQwLg0KCSAqIEBwYXJhbSBib29sICAkYWRkVGlwICAgV2hldGhlciB0byBhZGQgYSB0b29sdGlwIHdpdGggdGhlIG9yaWdpbmFsIGxvbmdlciBzdHJpbmcuIERlZmF1bHQgdHJ1ZS4NCgkgKg0KCSAqIEByZXR1cm4gc3RyaW5nfG1peGVkICAgVGhlIHNob3J0ZW5lZCBzdHJpbmcsIG9wdGlvbmFsbHkgd2l0aCBhIHRvb2x0aXAuIE9yIG9yaWdpbmFsIHZhbHVlIHBhc3NlZA0KCSAqIEBzaW5jZSAgMy4yLjENCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNob3J0ZW4oJHN0cmluZywgaW50ICRsZW5ndGggPSA0MCwgYm9vbCAkYWRkVGlwID0gdHJ1ZSkNCgl7DQoJCS8vIFZhbGlkYXRlIHN0cmluZyBpbnB1dCBhbmQgcmV0dXJuIG9yaWdpbmFsIGlmIGludmFsaWQgb3Igc2hvcnQgZW5vdWdoLg0KCQlpZiAoIXNlbGY6OmNoZWNrKCRzdHJpbmcpIHx8IG1iX3N0cmxlbigkc3RyaW5nKSA8PSAkbGVuZ3RoKQ0KCQl7DQoJCQlyZXR1cm4gJHN0cmluZzsNCgkJfQ0KDQoJCS8vIFRydW5jYXRlIHN0cmluZyB0byBuZWFyZXN0IHdvcmQgYm91bmRhcnkNCgkJJHNob3J0ZW5lZCA9IG1iX3N1YnN0cigkc3RyaW5nLCAwLCAkbGVuZ3RoKTsNCg0KCQkvLyBGaW5kIHRoZSBsYXN0IHNwYWNlIHRvIGF2b2lkIGN1dHRpbmcgb2ZmIGEgd29yZA0KCQkkbGFzdFNwYWNlID0gbWJfc3RycnBvcygkc2hvcnRlbmVkLCAnICcpOw0KCQlpZiAoJGxhc3RTcGFjZSAhPT0gZmFsc2UpDQoJCXsNCgkJCSRzaG9ydGVuZWQgPSBtYl9zdWJzdHIoJHNob3J0ZW5lZCwgMCwgJGxhc3RTcGFjZSk7DQoJCX0NCg0KCQkvLyBQcmVwYXJlIHRyaW1tZWQgYW5kIHNob3J0ZW5lZCBvdXRwdXQgd2l0aCBlbGxpcHNlcw0KCQkkc2hvcnRlbmVkID0gdHJpbSgkc2hvcnRlbmVkKSAuICcuLi4nOw0KDQoJCS8vIEFkZCB0b29sdGlwIGlmIHJlcXVlc3RlZA0KCQlpZiAoJGFkZFRpcCkNCgkJew0KCQkJLy8gU2FmZWx5IGVzY2FwZSBvdXRwdXQgZm9yIEhUTUwNCgkJCSR0aXRsZSA9IHNlbGY6OnNob3J0ZW4oJHN0cmluZywgNDAwICwgZmFsc2UpOw0KDQoJCQlyZXR1cm4gc3ByaW50ZigNCgkJCQknPHNwYW4gY2xhc3M9Imhhc1RpcCIgdGl0bGU9IiVzIiBzdHlsZT0iY3Vyc29yOmhlbHAiPiVzPC9zcGFuPicsDQoJCQkJaHRtbHNwZWNpYWxjaGFycygkdGl0bGUsIEVOVF9RVU9URVMsICdVVEYtOCcpLA0KCQkJCWh0bWxzcGVjaWFsY2hhcnMoJHNob3J0ZW5lZCwgRU5UX1FVT1RFUywgJ1VURi04JykNCgkJCSk7DQoJCX0NCg0KCQkvLyBSZXR1cm4gc2hvcnRlbmVkIHZlcnNpb24gd2l0aG91dCB0b29sdGlwDQoJCXJldHVybiAkc2hvcnRlbmVkOw0KCX0NCg0KCS8qKg0KCSAqIE1ha2VzIGEgc3RyaW5nIHNhZmUgYnkgc2FuaXRpemluZyBhbmQgZm9ybWF0dGluZyBpdCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCB0eXBlLg0KCSAqDQoJICogVGhpcyBtZXRob2QgY2FuIHJlbW92ZSB1bndhbnRlZCBjaGFyYWN0ZXJzLCB0cmFuc2xpdGVyYXRlIHRleHQsIHJlcGxhY2UgbnVtYmVycyB3aXRoIA0KCSAqIHRoZWlyIEVuZ2xpc2ggZXF1aXZhbGVudHMsIGFuZCBhcHBseSBkaWZmZXJlbnQgY2FzZSBmb3JtYXR0aW5nIHN0eWxlcy4NCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgICRzdHJpbmcgICAgICAgICAgICBUaGUgc3RyaW5nIHRvIHNhbml0aXplIGFuZCBmb3JtYXQuDQoJICogQHBhcmFtIHN0cmluZyAgJHR5cGUgICAgICAgICAgICAgIFRoZSBmb3JtYXR0aW5nIHR5cGUgdG8gYXBwbHkuIFN1cHBvcnRlZCB2YWx1ZXM6DQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gJ2ZpbGVuYW1lJyAgOiBSZW1vdmVzIHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgZXh0cmEgc3BhY2VzLg0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtICdMJyAgICAgICAgIDogQ29udmVydHMgdG8gbG93ZXJjYXNlIHdpdGggdW5kZXJzY29yZXMgcmVwbGFjaW5nLine truncated
(13, '0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a', 'Utilities Array Helper', 'ArrayHelper', 'abstract class', 'Some array tricks helper\r\n\r\n@since 3.0.9', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICAzcmQgU2VwdGVtYmVyLCAyMDIwDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Utilities.ArrayHelper', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIENoZWNrIGlmIGhhdmUgYW4gYXJyYXkgd2l0aCBhIGxlbmd0aA0KCSAqDQoJICogQGlucHV0CWFycmF5ICAgVGhlIGFycmF5IHRvIGNoZWNrDQoJICoNCgkgKiBAcmV0dXJucyBpbnR8ZmFsc2UgIG51bWJlciBvZiBpdGVtcyBpbiBhcnJheSBvbiBzdWNjZXNzDQoJICogDQoJICogQHNpbmNlICAzLjIuMA0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hlY2soJGFycmF5LCAkcmVtb3ZlRW1wdHlTdHJpbmcgPSBmYWxzZSkNCgl7DQoJCWlmIChpc19hcnJheSgkYXJyYXkpICYmICgkbnIgPSBjb3VudCgoYXJyYXkpICRhcnJheSkpID4gMCkNCgkJew0KCQkJLy8gYWxzbyBtYWtlIHN1cmUgdGhlIGVtcHR5IHN0cmluZ3MgYXJlIHJlbW92ZWQNCgkJCWlmICgkcmVtb3ZlRW1wdHlTdHJpbmcpDQoJCQl7DQoJCQkJJGFycmF5ID0gYXJyYXlfZmlsdGVyKCRhcnJheSk7DQoNCgkJCQlpZiAoJGFycmF5ID09PSBbXSkNCgkJCQl7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoNCgkJCQlyZXR1cm4gY291bnQoJGFycmF5KTsNCgkJCX0NCg0KCQkJcmV0dXJuICRucjsNCgkJfQ0KDQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCgkvKioNCgkgKiBNZXJnZSBhbiBhcnJheSBvZiBhcnJheSdzDQoJICoNCgkgKiBAaW5wdXQJYXJyYXkgICBUaGUgYXJyYXlzIHlvdSB3b3VsZCBsaWtlIHRvIG1lcmdlDQoJICoNCgkgKiBAcmV0dXJucyBhcnJheXxudWxsICBtZXJnZWQgYXJyYXkgb24gc3VjY2Vzcw0KCSAqIA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1lcmdlKCRhcnJheXMpOiA/YXJyYXkNCgl7DQoJCWlmKHNlbGY6OmNoZWNrKCRhcnJheXMpKQ0KCQl7DQoJCQkkbWVyZ2VkID0gW107DQoJCQlmb3JlYWNoICgkYXJyYXlzIGFzICRhcnJheSkNCgkJCXsNCgkJCQlpZiAoc2VsZjo6Y2hlY2soJGFycmF5KSkNCgkJCQl7DQoJCQkJCSRtZXJnZWQgPSBhcnJheV9tZXJnZSgkbWVyZ2VkLCAkYXJyYXkpOw0KCQkJCX0NCgkJCX0NCgkJCXJldHVybiAkbWVyZ2VkOw0KCQl9DQoJCXJldHVybiBudWxsOw0KCX0NCg0KCS8qKg0KCSAqIENoZWNrIGlmIGFycmF5cyBpbnRlcnNlY3QNCgkgKg0KCSAqIEBpbnB1dAlhcnJheSAgIFRoZSBmaXJzdCBhcnJheQ0KCSAqIEBpbnB1dAlhcnJheSAgIFRoZSBzZWNvbmQgYXJyYXkNCgkgKg0KCSAqIEByZXR1cm5zIGJvb2wgIHRydWUgaWYgaW50ZXJzZWN0IGVsc2UgZmFsc2UNCgkgKiANCgkgKiBAc2luY2UgIDMuMS4xDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbnRlcnNlY3QoJGFfYXJyYXksICRiX2FycmF5KTogYm9vbA0KCXsNCgkJLy8gZmxpcCB0aGUgc2Vjb25kIGFycmF5DQoJCSRiX2FycmF5ID0gYXJyYXlfZmxpcCgkYl9hcnJheSk7DQoNCgkJLy8gbG9vcCB0aGUgZmlyc3QgYXJyYXkNCgkJZm9yZWFjaCAoJGFfYXJyYXkgYXMgJHYpDQoJCXsNCgkJCWlmIChpc3NldCgkYl9hcnJheVskdl0pKQ0KCQkJew0KCQkJCXJldHVybiB0cnVlOw0KCQkJfQ0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCgkvKioNCgkgKiBEZWVwIGNsb25lIGFuIGFycmF5LCBpbmNsdWRpbmcgbmVzdGVkIGFycmF5cyBhbmQgb2JqZWN0cy4NCgkgKg0KCSAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBjb21wbGV0ZWx5IGluZGVwZW5kZW50IGNvcHkgb2YgdGhlIGdpdmVuIGFycmF5Lg0KCSAqIEl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBuZXN0ZWQgYXJyYXlzIGFuZCB1c2VzIFBIUCdzIGBjbG9uZWAga2V5d29yZA0KCSAqIHRvIGNsb25lIGFueSBvYmplY3RzIGZvdW5kIHdpdGhpbiB0aGUgc3RydWN0dXJlLg0KCSAqDQoJICogTm90ZTogUmVzb3VyY2VzIGFuZCBjbG9zdXJlcyBhcmUgbm90IHN1cHBvcnRlZCBhbmQgd2lsbCBub3QgYmUgY29waWVkLg0KCSAqDQoJICogQHBhcmFtICBhcnJheSAgJGFycmF5ICBUaGUgYXJyYXkgdG8gYmUgZGVlcGx5IGNsb25lZC4NCgkgKg0KCSAqIEByZXR1cm4gYXJyYXkgQSBmdWxseSBjbG9uZWQsIGluZGVwZW5kZW50IGNvcHkgb2YgdGhlIGlucHV0IGFycmF5Lg0KCSAqIEBzaW5jZSA1LjEuMQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2xvbmUoYXJyYXkgJGFycmF5KTogYXJyYXkNCgl7DQoJCSRjb3B5ID0gW107DQoNCgkJZm9yZWFjaCAoJGFycmF5IGFzICRrZXkgPT4gJHZhbHVlKQ0KCQl7DQoJCQlpZiAoaXNfYXJyYXkoJHZhbHVlKSkNCgkJCXsNCgkJCQkkY29weVska2V5XSA9IHNlbGY6OmNsb25lKCR2YWx1ZSk7DQoJCQl9DQoJCQllbHNlaWYgKGlzX29iamVjdCgkdmFsdWUpKQ0KCQkJew0KCQkJCSRjb3B5WyRrZXldID0gY2xvbmUgJHZhbHVlOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCSRjb3B5WyRrZXldID0gJHZhbHVlOw0KCQkJfQ0KCQl9DQoNCgkJcmV0dXJuICRjb3B5Ow0KCX0=', '{}', '{}', '', 1, '2022-03-08 22:53:52', 24, 0, 1),
(14, 'ce8cf834-6bac-44fb-941c-861f7e046cc0', 'String Namespace Helper', 'NamespaceHelper', 'abstract class', 'Control the naming of a namespace helper\r\n\r\n@since 3.0.9', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICAzcmQgU2VwdGVtYmVyLCAyMDIwDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Utilities.String.NamespaceHelper', 0, '{}', '{}', '', '{\"use_selection0\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIE1ha2luZyBuYW1lc3BhY2Ugc2FmZQ0KCSAqDQoJICogQHBhcmFtICBzdHJpbmcgICAkc3RyaW5nICAgIFRoZSBuYW1lc3BhY2Ugc3RyaW5nIHlvdSB3b3VsZCBsaWtlIHRvIG1ha2Ugc2FmZQ0KCSAqDQoJICogQHJldHVybiBzdHJpbmcgb24gc3VjY2Vzcw0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhZmUoc3RyaW5nICRzdHJpbmcpOiBzdHJpbmcNCgl7DQoJCS8vIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBiYWNrc2xhc2hlcw0KCQkkc3RyaW5nID0gdHJpbSgkc3RyaW5nLCAnXFwnKTsNCg0KCQkvLyBTcGxpdCB0aGUgc3RyaW5nIGludG8gbmFtZXNwYWNlIHNlZ21lbnRzDQoJCSRzZWdtZW50cyA9IGV4cGxvZGUoJ1xcJywgJHN0cmluZyk7DQoNCgkJLy8gbWFrZSBlYWNoIHNlZ21lbnQgc2FmZQ0KCQkkc2VnbWVudHMgPSBhcnJheV9tYXAoW3NlbGY6OmNsYXNzLCAnc2FmZVNlZ21lbnQnXSwgJHNlZ21lbnRzKTsNCg0KCQkvLyBKb2luIHRoZSBuYW1lc3BhY2Ugc2VnbWVudHMgYmFjayB0b2dldGhlcg0KCQlyZXR1cm4gaW1wbG9kZSgnXFwnLCAkc2VnbWVudHMpOw0KCX0NCg0KCS8qKg0KCSAqIE1ha2luZyBvbmUgbmFtZXNwYWNlIHNlZ21lbnQgc2FmZQ0KCSAqDQoJICogQHBhcmFtICBzdHJpbmcgICAkc3RyaW5nICAgIFRoZSBuYW1lc3BhY2Ugc2VnbWVudCBzdHJpbmcgeW91IHdvdWxkIGxpa2UgdG8gbWFrZSBzYWZlDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZyBvbiBzdWNjZXNzDQoJICogQHNpbmNlICAzLjAuOQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2FmZVNlZ21lbnQoc3RyaW5nICRzdHJpbmcpOiBzdHJpbmcNCgl7DQoJCS8vIENoZWNrIGlmIHNlZ21lbnQgc3RhcnRzIHdpdGggYSBudW1iZXINCgkJaWYgKHByZWdfbWF0Y2goIi9eXGQvIiwgJHN0cmluZykpDQoJCXsNCgkJCS8vIEV4dHJhY3QgdGhlIHN0YXJ0aW5nIG51bWJlcihzKQ0KCQkJcHJlZ19tYXRjaCgiL15cZCsvIiwgJHN0cmluZywgJG1hdGNoZXMpOw0KDQoJCQlpZiAoaXNzZXQoJG1hdGNoZXNbMF0pKQ0KCQkJew0KCQkJCSRudW1iZXJXb3JkID0gU3RyaW5nSGVscGVyOjpudW1iZXJzKCRtYXRjaGVzWzBdKTsNCgkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoJG1hdGNoZXNbMF0sICRudW1iZXJXb3JkLCAkc3RyaW5nKTsNCgkJCX0NCgkJfQ0KDQoJCS8vIFRyYW5zbGl0ZXJhdGUgc3RyaW5nIFRPRE86IGxvb2sgYWdhaW4gYXMgdGhpcyBtYWtlcyBpdCBsb3dlcmNhc2UNCgkJLy8gJHNlZ21lbnQgPSBTdHJpbmdIZWxwZXI6OnRyYW5zbGl0ZXJhdGUoJHNlZ21lbnQpOw0KDQoJCS8vIE1ha2Ugc3VyZSBzZWdtZW50IG9ubHkgY29udGFpbnMgdmFsaWQgY2hhcmFjdGVycw0KCQlyZXR1cm4gcHJlZ19yZXBsYWNlKCIvW15BLVphLXowLTldLyIsICcnLCAkc3RyaW5nKTsNCgl9', '{}', '{}', '', 1, '2022-03-08 23:27:57', 24, 0, 1),
(17, 'db87c339-5bb6-4291-a7ef-2c48ea1b06bc', 'Utilities GetHelper', 'GetHelper', 'abstract class', 'Some easy get...\r\n\r\n@since 3.0.9', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICAzcmQgU2VwdGVtYmVyLCAyMDIwDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Utilities.GetHelper', 1, '{}', '{}', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTs=', '{\"use_selection0\":{\"use\":\"640b5352-fb09-425f-a26e-cd44eda03f15\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"9d76b8dc-3883-4755-b11c-131d19ca8a53\",\"as\":\"Data\"}}', 'CS8qKg0KCSAqIEdldCBhIFZhcmlhYmxlIA0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nfG51bGwgICR0YWJsZSAgICAgICAgVGhlIHRhYmxlIGZyb20gd2hpY2ggdG8gZ2V0IHRoZSB2YXJpYWJsZQ0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAkd2hlcmUgICAgICAgIFRoZSB2YWx1ZSB3aGVyZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICAgICAkd2hlcmVTdHJpbmcgIFRoZSB0YXJnZXQvZmllbGQgc3RyaW5nIHdoZXJlL25hbWUNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAgICAgJHdoYXQgICAgICAgICBUaGUgcmV0dXJuIGZpZWxkDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICRvcGVyYXRvciAgICAgVGhlIG9wZXJhdG9yIGJldHdlZW4gJHdoZXJlU3RyaW5nL2ZpZWxkIGFuZCAkd2hlcmUvdmFsdWUNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAgICAgJG1haW4gICAgICAgICBUaGUgY29tcG9uZW50IGluIHdoaWNoIHRoZSB0YWJsZSBpcyBmb3VuZA0KCSAqDQoJICogQHJldHVybiAgbWl4ZWQgc3RyaW5nL2ludC9mbG9hdA0KCSAqIEBzaW5jZSAgMy4wLjkNCgkgKg0KCSAqIEBkZXByZWNhdGVkIDUuMSAgVXNlICBEYXRhOjpfKCdEYXRhLkxvYWQnKS0+dGFibGUoJHRhYmxlKS0+dmFsdWUoLi4uKQ0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdmFyKD9zdHJpbmcgJHRhYmxlID0gbnVsbCwgJHdoZXJlID0gbnVsbCwNCgkJc3RyaW5nICR3aGVyZVN0cmluZyA9ICd1c2VyJywgc3RyaW5nICR3aGF0ID0gJ2lkJywNCgkJc3RyaW5nICRvcGVyYXRvciA9ICc9JywgP3N0cmluZyAkbWFpbiA9IG51bGwpDQoJew0KCQlpZihlbXB0eSgkd2hlcmUpKQ0KCQl7DQoJCQkkd2hlcmUgPSBGYWN0b3J5OjpnZXRVc2VyKCktPmlkOw0KCQl9DQoNCgkJaWYoZW1wdHkoJG1haW4pKQ0KCQl7DQoJCQkkbWFpbiA9IEhlbHBlcjo6Z2V0Q29kZSgpOw0KCQl9DQoNCgkJLy8gR2V0IGEgZGIgY29ubmVjdGlvbi4NCgkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoNCgkJLy8gQ3JlYXRlIGEgbmV3IHF1ZXJ5IG9iamVjdC4NCgkJJHF1ZXJ5ID0gJGRiLT5nZXRRdWVyeSh0cnVlKTsNCgkJJHF1ZXJ5LT5zZWxlY3QoJGRiLT5xdW90ZU5hbWUoYXJyYXkoJHdoYXQpKSk7DQoNCgkJaWYgKGVtcHR5KCR0YWJsZSkpDQoJCXsNCgkJCSRxdWVyeS0+ZnJvbSgkZGItPnF1b3RlTmFtZSgnI19fJyAuICRtYWluKSk7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQkkcXVlcnktPmZyb20oJGRiLT5xdW90ZU5hbWUoJyNfXycgLiAkbWFpbiAuICdfJyAuICR0YWJsZSkpOw0KCQl9DQoNCgkJaWYgKGlzX251bWVyaWMoJHdoZXJlKSkNCgkJew0KCQkJJHF1ZXJ5LT53aGVyZSgkZGItPnF1b3RlTmFtZSgkd2hlcmVTdHJpbmcpIC4gJyAnIC4gJG9wZXJhdG9yIC4gJyAnIC4gKGludCkgJHdoZXJlKTsNCgkJfQ0KCQllbHNlaWYgKGlzX3N0cmluZygkd2hlcmUpKQ0KCQl7DQoJCQkkcXVlcnktPndoZXJlKCRkYi0+cXVvdGVOYW1lKCR3aGVyZVN0cmluZykgLiAnICcgLiAkb3BlcmF0b3IgLiAnICcgLiAkZGItPnF1b3RlKChzdHJpbmcpJHdoZXJlKSk7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCQkkZGItPnNldFF1ZXJ5KCRxdWVyeSk7DQoJCSRkYi0+ZXhlY3V0ZSgpOw0KDQoJCWlmICgkZGItPmdldE51bVJvd3MoKSkNCgkJew0KCQkJcmV0dXJuICRkYi0+bG9hZFJlc3VsdCgpOw0KCQl9DQoNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIEdldCBhcnJheSBvZiB2YXJpYWJsZXMNCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZ3xudWxsICAkdGFibGUgICAgICAgIFRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGdldCB0aGUgdmFyaWFibGVzDQoJICogQHBhcmFtICAgbWl4ZWQgICAgICAgICR3aGVyZSAgICAgICAgVGhlIHZhbHVlIHdoZXJlDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICR3aGVyZVN0cmluZyAgVGhlIHRhcmdldC9maWVsZCBzdHJpbmcgd2hlcmUvbmFtZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICAgICAkd2hhdCAgICAgICAgIFRoZSByZXR1cm4gZmllbGQNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAgICAgJG9wZXJhdG9yICAgICBUaGUgb3BlcmF0b3IgYmV0d2VlbiAkd2hlcmVTdHJpbmcvZmllbGQgYW5kICR3aGVyZS92YWx1ZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICAgICAkbWFpbiAgICAgICAgIFRoZSBjb21wb25lbnQgaW4gd2hpY2ggdGhlIHRhYmxlIGlzIGZvdW5kDQoJICogQHBhcmFtICAgYm9vbCAgICAgICAgICR1bmlxdWUgICAgICAgVGhlIHN3aXRjaCB0byByZXR1cm4gYSB1bmlxdWUgYXJyYXkNCgkgKg0KCSAqIEByZXR1cm4gIGFycmF5fG51bGwNCgkgKiBAc2luY2UgIDMuMC45DQoJICoNCgkgKiBAZGVwcmVjYXRlZCA1LjEgIFVzZSAgRGF0YTo6XygnRGF0YS5Mb2FkJyktPnRhYmxlKCR0YWJsZSktPnZhbHVlcyguLi4pDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiB2YXJzKD9zdHJpbmcgJHRhYmxlID0gbnVsbCwgJHdoZXJlID0gbnVsbCwNCgkJc3RyaW5nICR3aGVyZVN0cmluZyA9ICd1c2VyJywgc3RyaW5nICR3aGF0ID0gJ2lkJywgc3RyaW5nICRvcGVyYXRvciA9ICdJTicsDQoJCT9zdHJpbmcgJG1haW4gPSBudWxsLCBib29sICR1bmlxdWUgPSB0cnVlKTogP2FycmF5DQoJew0KCQlpZihlbXB0eSgkd2hlcmUpKQ0KCQl7DQoJCQkkd2hlcmUgPSBGYWN0b3J5OjpnZXRVc2VyKCktPmlkOw0KCQl9DQoNCgkJaWYoJG1haW4gPT09IG51bGwpDQoJCXsNCgkJCSRtYWluID0gSGVscGVyOjpnZXRDb2RlKCk7DQoJCX0NCg0KCQlpZiAoIUFycmF5SGVscGVyOjpjaGVjaygkd2hlcmUpICYmICR3aGVyZSA+IDApDQoJCXsNCgkJCSR3aGVyZSA9IFskd2hlcmVdOw0KCQl9DQoNCgkJaWYgKEFycmF5SGVscGVyOjpjaGVjaygkd2hlcmUpKQ0KCQl7DQoJCQkvLyBwcmVwIG1haW4gPC0tIHdoeT8gd2VsbCBpZiAkbWFpbj0nJyBpcyBlbXB0eSB0aGVuICR0YWJsZSBjYW4gYmUgY2F0ZWdvcmllcyBvciB1c2Vycw0KCQkJaWYgKFN0cmluZ0Line truncated
@@ -2165,10 +2165,10 @@ INSERT INTO `#__componentbuilder_power` (`id`, `guid`, `system_name`, `name`, `t
(29, 'c4a188de-ad78-4a6d-9d5b-01866846d701', 'JCB.Service.Spreadsheet', 'Spreadsheet', 'class', 'Spreadsheet Service Provider\r\n\r\n@since 5.0.3', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '{\"0\":\"-1\"}', 'ServiceProviderInterface', '[[[NamespacePrefix]]]\\Joomla\\[[[ComponentNamespace]]].Service.Spreadsheet', 1, '{}', '{}', 'dXNlIEpvb21sYVxESVxDb250YWluZXI7DQp1c2UgSm9vbWxhXERJXFNlcnZpY2VQcm92aWRlckludGVyZmFjZTs=', '{\"use_selection0\":{\"use\":\"fd3f322a-082d-4579-93ad-3352c5adfc71\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"e250638e-4a50-41f9-9172-db3e7f174d26\",\"as\":\"default\"},\"use_selection2\":{\"use\":\"c4169332-3914-400e-b861-972b2d465963\",\"as\":\"default\"},\"use_selection3\":{\"use\":\"dcb0e061-f337-44f7-87f2-f5c5fb9ce917\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIFJlZ2lzdGVycyB0aGUgc2VydmljZSBwcm92aWRlciB3aXRoIGEgREkgY29udGFpbmVyLg0KCSAqDQoJICogQHBhcmFtICAgQ29udGFpbmVyICAkY29udGFpbmVyICBUaGUgREkgY29udGFpbmVyLg0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqIEBzaW5jZSA1LjAuMw0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiByZWdpc3RlcihDb250YWluZXIgJGNvbnRhaW5lcikNCgl7DQoJCSRjb250YWluZXItPmFsaWFzKEhlYWRlcjo6Y2xhc3MsICdTcHJlYWRzaGVldC5IZWFkZXInKQ0KCQkJLT5zaGFyZSgnU3ByZWFkc2hlZXQuSGVhZGVyJywgWyR0aGlzLCAnZ2V0SGVhZGVyJ10sIHRydWUpOw0KDQoJCSRjb250YWluZXItPmFsaWFzKEV4cG9ydGVyOjpjbGFzcywgJ1NwcmVhZHNoZWV0LkV4cG9ydGVyJykNCgkJCS0+c2hhcmUoJ1NwcmVhZHNoZWV0LkV4cG9ydGVyJywgWyR0aGlzLCAnZ2V0RXhwb3J0ZXInXSwgdHJ1ZSk7DQoNCgkJJGNvbnRhaW5lci0+YWxpYXMoSW1wb3J0ZXI6OmNsYXNzLCAnU3ByZWFkc2hlZXQuSW1wb3J0ZXInKQ0KCQkJLT5zaGFyZSgnU3ByZWFkc2hlZXQuSW1wb3J0ZXInLCBbJHRoaXMsICdnZXRJbXBvcnRlciddLCB0cnVlKTsNCg0KCQkkY29udGFpbmVyLT5hbGlhcyhGaWxlUmVhZGVyOjpjbGFzcywgJ1NwcmVhZHNoZWV0LkZpbGVSZWFkZXInKQ0KCQkJLT5zaGFyZSgnU3ByZWFkc2hlZXQuRmlsZVJlYWRlcicsIFskdGhpcywgJ2dldEZpbGVSZWFkZXInXSwgdHJ1ZSk7DQoJfQ0KDQoJLyoqDQoJICogR2V0IFRoZSBIZWFkZXIgQ2xhc3MuDQoJICoNCgkgKiBAcGFyYW0gICBDb250YWluZXIgICRjb250YWluZXIgIFRoZSBESSBjb250YWluZXIuDQoJICoNCgkgKiBAcmV0dXJuICBIZWFkZXINCgkgKiBAc2luY2UgNS4wLjMNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVyKENvbnRhaW5lciAkY29udGFpbmVyKTogSGVhZGVyDQoJew0KCQlyZXR1cm4gbmV3IEhlYWRlcigpOw0KCX0NCg0KCS8qKg0KCSAqIEdldCBUaGUgRXhwb3J0ZXIgQ2xhc3MuDQoJICoNCgkgKiBAcGFyYW0gICBDb250YWluZXIgICRjb250YWluZXIgIFRoZSBESSBjb250YWluZXIuDQoJICoNCgkgKiBAcmV0dXJuICBFeHBvcnRlcg0KCSAqIEBzaW5jZSA1LjAuMw0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZXRFeHBvcnRlcihDb250YWluZXIgJGNvbnRhaW5lcik6IEV4cG9ydGVyDQoJew0KCQlyZXR1cm4gbmV3IEV4cG9ydGVyKCk7DQoJfQ0KDQoJLyoqDQoJICogR2V0IFRoZSBJbXBvcnRlciBDbGFzcy4NCgkgKg0KCSAqIEBwYXJhbSAgIENvbnRhaW5lciAgJGNvbnRhaW5lciAgVGhlIERJIGNvbnRhaW5lci4NCgkgKg0KCSAqIEByZXR1cm4gIEltcG9ydGVyDQoJICogQHNpbmNlIDUuMC4zDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdldEltcG9ydGVyKENvbnRhaW5lciAkY29udGFpbmVyKTogSW1wb3J0ZXINCgl7DQoJCXJldHVybiBuZXcgSW1wb3J0ZXIoDQoJCQkkY29udGFpbmVyLT5nZXQoJ1NwcmVhZHNoZWV0LkZpbGVSZWFkZXInKQ0KCQkpOw0KCX0NCg0KCS8qKg0KCSAqIEdldCBUaGUgRmlsZVJlYWRlciBDbGFzcy4NCgkgKg0KCSAqIEBwYXJhbSAgIENvbnRhaW5lciAgJGNvbnRhaW5lciAgVGhlIERJIGNvbnRhaW5lci4NCgkgKg0KCSAqIEByZXR1cm4gIEZpbGVSZWFkZXINCgkgKiBAc2luY2UgNS4wLjMNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZ2V0RmlsZVJlYWRlcihDb250YWluZXIgJGNvbnRhaW5lcik6IEZpbGVSZWFkZXINCgl7DQoJCXJldHVybiBuZXcgRmlsZVJlYWRlcigpOw0KCX0=', '{}', '{}', '', 1, '2022-07-09 10:21:53', 19, 0, 1),
(103, '8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff', 'VDM.Interfaces.ModelInterface', 'ModelInterface', 'interface', 'Model Interface\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Interfaces.ModelInterface', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIFNldCB0aGUgY3VycmVudCBhY3RpdmUgdGFibGUNCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgICR0YWJsZSBUaGUgdGFibGUgdGhhdCBzaG91bGQgYmUgYWN0aXZlDQoJICoNCgkgKiBAcmV0dXJuIHNlbGYNCgkgKiBAc2luY2UgMy4yLjINCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gdGFibGUoc3RyaW5nICR0YWJsZSk6IHNlbGY7DQoNCgkvKioNCgkgKiBNb2RlbCB0aGUgdmFsdWUNCgkgKiAgICAgICAgICBFeGFtcGxlOiAkdGhpcy0+dmFsdWUodmFsdWUsICd2YWx1ZV9rZXknLCAndGFibGVfbmFtZScpOw0KCSAqDQoJICogQHBhcmFtICAgbWl4ZWQgICAgICAgICAgJHZhbHVlICAgIFRoZSB2YWx1ZSB0byBtb2RlbA0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICAgICAgICRmaWVsZCAgICBUaGUgZmllbGQga2V5DQoJICogQHBhcmFtICAgc3RyaW5nfG51bGwgICAgJHRhYmxlICAgIFRoZSB0YWJsZQ0KCSAqDQoJICogQHJldHVybiAgbWl4ZWQNCgkgKiBAc2luY2UgMy4yLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gdmFsdWUoJHZhbHVlLCBzdHJpbmcgJGZpZWxkLCA/c3RyaW5nICR0YWJsZSA9IG51bGwpOw0KDQoJLyoqDQoJICogTW9kZWwgYSB2YWx1ZSBvZiBtdWx0aXBsZSBpdGVtcw0KCSAqICAgICAgICAgIEV4YW1wbGU6ICR0aGlzLT5pdGVtcyhBcnJheSwgJ3ZhbHVlX2tleScsICd0YWJsZV9uYW1lJyk7DQoJICoNCgkgKiBAcGFyYW0gICBhcnJheXxudWxsICAgICRpdGVtcyAgICBUaGUgYXJyYXkgb2YgdmFsdWVzDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAkZmllbGQgICAgVGhlIGZpZWxkIGtleQ0KCSAqIEBwYXJhbSAgIHN0cmluZ3xudWxsICAgJHRhYmxlICAgIFRoZSB0YWJsZQ0KCSAqDQoJICogQHJldHVybiAgYXJyYXl8bnVsbA0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB2YWx1ZXMoP2FycmF5ICRpdGVtcywgc3RyaW5nICRmaWVsZCwgP3N0cmluZyAkdGFibGUgPSBudWxsKTogP2FycmF5Ow0KDQoJLyoqDQoJICogTW9kZWwgdGhlIHZhbHVlcyBvZiBhbiBpdGVtDQoJICogICAgICAgICAgRXhhbXBsZTogJHRoaXMtPml0ZW0oT2JqZWN0LCAndGFibGVfbmFtZScpOw0KCSAqDQoJICogQHBhcmFtICAgb2JqZWN0fG51bGwgICAgJGl0ZW0gICAgICBUaGUgaXRlbSBvYmplY3QNCgkgKiBAcGFyYW0gICBzdHJpbmd8bnVsbCAgICAkdGFibGUgICAgIFRoZSB0YWJsZQ0KCSAqDQoJICogQHJldHVybiAgb2JqZWN0fG51bGwNCgkgKiBAc2luY2UgMy4yLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gaXRlbSg/b2JqZWN0ICRpdGVtLCA/c3RyaW5nICR0YWJsZSA9IG51bGwpOiA/b2JqZWN0Ow0KDQoJLyoqDQoJICogTW9kZWwgdGhlIHZhbHVlcyBvZiBtdWx0aXBsZSBpdGVtcw0KCSAqICAgICAgICAgIEV4YW1wbGU6ICR0aGlzLT5pdGVtcyhBcnJheSwgJ3RhYmxlX25hbWUnKTsNCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5fG51bGwgICAgJGl0ZW1zICAgIFRoZSBhcnJheSBvZiBpdGVtIG9iamVjdHMNCgkgKiBAcGFyYW0gICBzdHJpbmd8bnVsbCAgICAkdGFibGUgICAgIFRoZSB0YWJsZQ0KCSAqDQoJICogQHJldHVybiAgYXJyYXl8bnVsbA0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBpdGVtcyg/YXJyYXkgJGl0ZW1zID0gbnVsbCwgP3N0cmluZyAkdGFibGUgPSBudWxsKTogP2FycmF5Ow0KDQoJLyoqDQoJICogTW9kZWwgdGhlIHZhbHVlcyBvZiBhbiByb3cNCgkgKiAgICAgICAgICBFeGFtcGxlOiAkdGhpcy0+aXRlbShBcnJheSwgJ3RhYmxlX25hbWUnKTsNCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5fG51bGwgICAgICRpdGVtICAgICAgVGhlIGl0ZW0gYXJyYXkNCgkgKiBAcGFyYW0gICBzdHJpbmd8bnVsbCAgICAkdGFibGUgICAgIFRoZSB0YWJsZQ0KCSAqDQoJICogQHJldHVybiAgYXJyYXl8bnVsbA0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiByb3coP2FycmF5ICRpdGVtLCA/c3RyaW5nICR0YWJsZSA9IG51bGwpOiA/YXJyYXk7DQoNCgkvKioNCgkgKiBNb2RlbCB0aGUgdmFsdWVzIG9mIG11bHRpcGxlIHJvd3MNCgkgKiAgICAgICAgICBFeGFtcGxlOiAkdGhpcy0+aXRlbXMoQXJyYXksICd0YWJsZV9uYW1lJyk7DQoJICoNCgkgKiBAcGFyYW0gICBhcnJheXxudWxsICAgICAkaXRlbXMgICAgVGhlIGFycmF5IG9mIGl0ZW0gYXJyYXkNCgkgKiBAcGFyYW0gICBzdHJpbmd8bnVsbCAgICAkdGFibGUgICAgVGhlIHRhYmxlDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheXxudWxsDQoJICogQHNpbmNlIDMuMi4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIHJvd3MoP2FycmF5ICRpdGVtcyA9IG51bGwsID9zdHJpbmcgJHRhYmxlID0gbnVsbCk6ID9hcnJheTsNCg0KCS8qKg0KCSAqIEdldCBsYXN0IG1vZGVsZWQgSUQNCgkgKiAgICAgICAgICBFeGFtcGxlOiAkdGhpcy0+bGFzdCgndGFibGVfbmFtZScpOw0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nfG51bGwgICAgICR0YWJsZSAgICAgVGhlIHRhYmxlDQoJICoNCgkgKiBAcmV0dXJuICBpbnR8bnVsbA0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBsYXN0KD9zdHJpbmcgJHRhYmxlID0gbnVsbCk6ID9pbnQ7DQoNCgkvKioNCgkgKiBTZXQgdGhlIGN1cnJlbnQgYWN0aXZlIHRhYmxlDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICAgJHRhYmxlTmFtZSAgVGhlIHRhYmxlIG5hbWUNCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKiBAc2luY2UgMy4yLjINCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gc2V0VGFibGUoc3RyaW5nICR0YWJsZU5hbWUpOiB2b2lkOw0KDQoJLyoqDQoJICogU2V0IHRoZSBzd2l0Y2ggdG8gY29udHJvbCB0aGUgYmVoYXZpb3VyIG9mIGVtcHR5IHZhbHVlcw0KCSAqDQoJICogQHBhcmFtIGJvb2wgICAkYWxsb3dFbXB0eSAgVGhlIHN3aXRjaA0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqIEBzaW5jZSAzLjIuMg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBzZXRBbGxvd0VtcHR5KGJvb2wgJGFsbG93RW1wdHkpOiB2b2lkOw==', '{}', '{}', '', 1, '2022-09-13 10:05:07', 21, 0, 1),
(104, '584747d1-3a86-453d-b7a3-a2219de8d777', 'VDM.Abstraction.Model', 'Model', 'abstract class', 'Base Model\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '{\"0\":\"8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Abstraction.Model', 0, '{}', '{}', '', '{\"use_selection0\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\",\"as\":\"default\"},\"use_selection2\":{\"use\":\"2da6d6c4-eb29-4d69-8bc2-36d96e916adf\",\"as\":\"Table\"}}', 'CS8qKg0KCSAqIExhc3QgSUQNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgMy4yLjANCgkgKi8NCglwcm90ZWN0ZWQgYXJyYXkgJGxhc3Q7DQoNCgkvKioNCgkgKiBTZWFyY2ggVGFibGUNCgkgKg0KCSAqIEB2YXIgICAgVGFibGUNCgkgKiBAc2luY2UgMy4yLjANCgkgKi8NCglwcm90ZWN0ZWQgVGFibGUgJHRhYmxlOw0KDQoJLyoqDQoJICogVGFibGUgTmFtZQ0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgMy4yLjANCgkgKi8NCglwcm90ZWN0ZWQgc3RyaW5nICR0YWJsZU5hbWU7DQoNCgkvKioNCgkgKiBUaGUgc3dpdGNoIHRvIGNvbnRyb2wgdGhlIGJlaGF2aW91ciBvZiBlbXB0eSB2YWx1ZXMNCgkgKg0KCSAqIEB2YXIgICAgYm9vbA0KCSAqIEBzaW5jZSAzLjIuMg0KCSAqLw0KCXByb3RlY3RlZCBib29sICRhbGxvd0VtcHR5ID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yDQoJICoNCgkgKiBAcGFyYW0gVGFibGUgICAgICAgICAkdGFibGUgICAgICAgIFRoZSBzZWFyY2ggdGFibGUgb2JqZWN0Lg0KCSAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICR0YWJsZU5hbWUgICAgVGhlIHRhYmxlDQoJICogQHBhcmFtIGJvb2x8bnVsbCAgICAgJGFsbG93RW1wdHkgICBUaGUgc3dpdGNoIHRvIGNvbnRyb2wgdGhlIGJlaGF2aW91ciBvZiBlbXB0eSB2YWx1ZXMgKGRlZmF1bHQgdHJ1ZSkNCgkgKg0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChUYWJsZSAkdGFibGUsID9zdHJpbmcgJHRhYmxlTmFtZSA9IG51bGwsID9ib29sICRhbGxvd0VtcHR5ID0gbnVsbCkNCgl7DQoJCSR0aGlzLT50YWJsZSA9ICR0YWJsZTsNCgkJaWYgKCR0YWJsZU5hbWUgIT09IG51bGwpDQoJCXsNCgkJCSR0aGlzLT5zZXRUYWJsZSgkdGFibGVOYW1lKTsNCgkJfQ0KCQlpZiAoJGFsbG93RW1wdHkgIT09IG51bGwpDQoJCXsNCgkJCSR0aGlzLT5zZXRBbGxvd0VtcHR5KCRhbGxvd0VtcHR5KTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIFNldCB0aGUgY3VycmVudCBhY3RpdmUgdGFibGUNCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJHRhYmxlIFRoZSB0YWJsZSB0aGF0IHNob3VsZCBiZSBhY3RpdmUNCgkgKg0KCSAqIEByZXR1cm4gc2VsZg0KCSAqIEBzaW5jZSAzLjIuMg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB0YWJsZShzdHJpbmcgJHRhYmxlKTogc2VsZg0KCXsNCgkJJHRoaXMtPnNldFRhYmxlKCR0YWJsZSk7DQoNCgkJcmV0dXJuICR0aGlzOw0KCX0NCg0KCS8qKg0KCSAqIE1vZGVsIHRoZSB2YWx1ZQ0KCSAqICAgICAgICAgIEV4YW1wbGU6ICR0aGlzLT52YWx1ZSh2YWx1ZSwgJ3ZhbHVlX2tleScsICd0YWJsZV9uYW1lJyk7DQoJICoNCgkgKiBAcGFyYW0gICBtaXhlZCAgICAgICAgICAkdmFsdWUgICAgVGhlIHZhbHVlIHRvIG1vZGVsDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgJGZpZWxkICAgIFRoZSBmaWVsZCBrZXkNCgkgKiBAcGFyYW0gICBzdHJpbmd8bnVsbCAgICAkdGFibGUgICAgVGhlIHRhYmxlDQoJICoNCgkgKiBAcmV0dXJuICBtaXhlZA0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqLw0KCWFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiB2YWx1ZSgkdmFsdWUsIHN0cmluZyAkZmllbGQsID9zdHJpbmcgJHRhYmxlID0gbnVsbCk7DQoNCgkvKioNCgkgKiBNb2RlbCBhIHZhbHVlIG9mIG11bHRpcGxlIGl0ZW1zDQoJICogICAgICAgICAgRXhhbXBsZTogJHRoaXMtPnZhbHVlcyhBcnJheSwgJ3ZhbHVlX2tleScsICd0YWJsZV9uYW1lJyk7DQoJICoNCgkgKiBAcGFyYW0gICBhcnJheXxudWxsICAgICRpdGVtcyAgICBUaGUgYXJyYXkgb2YgdmFsdWVzDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAkZmllbGQgICAgVGhlIGZpZWxkIGtleQ0KCSAqIEBwYXJhbSAgIHN0cmluZ3xudWxsICAgJHRhYmxlICAgIFRoZSB0YWJsZQ0KCSAqDQoJICogQHJldHVybiAgYXJyYXl8bnVsbA0KCSAqIEBzaW5jZSAzLjIuMg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB2YWx1ZXMoP2FycmF5ICRpdGVtcywgc3RyaW5nICRmaWVsZCwgP3N0cmluZyAkdGFibGUgPSBudWxsKTogP2FycmF5DQoJew0KCQkvLyBjaGVjayBpZiB0aGlzIGlzIGEgdmFsaWQgdGFibGUNCgkJaWYgKEFycmF5SGVscGVyOjpjaGVjaygkaXRlbXMpKQ0KCQl7DQoJCQkvLyBzZXQgdGhlIHRhYmxlIG5hbWUNCgkJCWlmIChlbXB0eSgkdGFibGUpKQ0KCQkJew0KCQkJCSR0YWJsZSA9ICR0aGlzLT5nZXRUYWJsZSgpOw0KCQkJfQ0KDQoJCQkvLyB2YWxpZGF0ZSBpZiBmaWVsZCBleGlzdCBpbiB0YWJsZQ0KCQkJaWYgKCEkdGhpcy0+dGFibGUtPmV4aXN0KCR0YWJsZSwgJGZpZWxkKSkNCgkJCXsNCgkJCQlyZXR1cm4gbnVsbDsNCgkJCX0NCg0KCQkJLy8gdmFsdWUgY291bnRlcg0KCQkJJHZhbHVlX251bWJlciA9IDA7DQoNCgkJCS8vIGNoZWNrIGlmIHRoaXMgaXMgYSB2YWxpZCB0YWJsZQ0KCQkJJGl0ZW1fYnVja2V0ID0gW107DQoNCgkJCWZvcmVhY2ggKCRpdGVtcyBhcyAkdmFsdWUpDQoJCQl7DQoJCQkJaWYgKCEkdGhpcy0+dmFsaWRhdGVCZWZvcmUoJHZhbHVlLCAkZmllbGQsICR0YWJsZSkpDQoJCQkJew0KCQkJCQljb250aW51ZTsNCgkJCQl9DQoNCgkJCQkkdmFsdWUgPSAkdGhpcy0+dmFsdWUoJHZhbHVlLCAkZmllbGQsICR0YWJsZSk7DQoNCgkJCQlpZiAoISR0aGlzLT52YWxpZGF0ZUFmdGVyKCR2YWx1ZSwgJGZpZWxkLCAkdGFibGUpKQ0KCQkJCXsNCgkJCQkJY29udGludWU7DQoJCQkJfQ0KDQoJCQkJJGl0ZW1fYnVja2V0W10gPSAkdmFsdWU7DQoNCgkJCQkkdmFsdWVfbnVtYmVyKys7DQoJCQl9DQoNCgkJCS8vIGRvIHdlIGhhdmUgYW55IHZhbHVlcyBsZWZ0DQoJCQlpZiAoJHZhbHVlX251bWJlciA+IDApDQoJCQl7DQoJCQkJcmV0dXJuICRpdGVtX2J1Y2tldDsNCgkJCX0NCgkJfQ0KDQoJCXJldHVybiBudWxsOwLine truncated
(124, '06f8eada-d59b-441c-b287-0aea1793da5a', 'VDM.Database.Load', 'Load', 'final class', 'Database Load\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', '6cbef8f8-4813-48e3-b05a-65e1aea95171', '', '', '', '{\"0\":\"2ad31f74-f579-499d-b98b-c4f54fd615dd\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Database.Load', 0, '{}', '{}', '', '{\"use_selection0\":{\"use\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIExvYWQgZGF0YSByb3dzIGFzIGFuIGFycmF5IG9mIGFzc29jaWF0ZWQgYXJyYXlzDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAgICAgJHNlbGVjdCAgIEFycmF5IG9mIHNlbGVjdGlvbiBrZXlzDQoJICogQHBhcmFtICAgYXJyYXkgICAgICAgICR0YWJsZXMgICBBcnJheSBvZiB0YWJsZXMgdG8gc2VhcmNoDQoJICogQHBhcmFtICAgYXJyYXl8bnVsbCAgICR3aGVyZSAgICBBcnJheSBvZiB3aGVyZSBrZXk9PnZhbHVlIG1hdGNoIGV4aXN0DQoJICogQHBhcmFtICAgYXJyYXl8bnVsbCAgICRvcmRlciAgICBBcnJheSBvZiBob3cgdG8gb3JkZXIgdGhlIGRhdGENCgkgKiBAcGFyYW0gICBpbnR8bnVsbCAgICAgJGxpbWl0ICAgIExpbWl0IHRoZSBudW1iZXIgb2YgdmFsdWVzIHJldHVybmVkDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheXxudWxsDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIHJvd3MoYXJyYXkgJHNlbGVjdCwgYXJyYXkgJHRhYmxlcywgP2FycmF5ICR3aGVyZSA9IG51bGwsDQoJCT9hcnJheSAkb3JkZXIgPSBudWxsLCA/aW50ICRsaW1pdCA9IG51bGwpOiA/YXJyYXkNCgl7DQoJCS8vIHNldCBrZXkgaWYgZm91bmQNCgkJJGtleSA9ICR0aGlzLT5nZXRLZXkoJHNlbGVjdCk7DQoNCgkJLy8gY2hlY2sgaWYgd2UgY2FuIGdldCBtYW55IHJvd3MNCgkJaWYgKCR0aGlzLT5tYW55KCRzZWxlY3QsICR0YWJsZXMsICR3aGVyZSwgJG9yZGVyLCAkbGltaXQpKQ0KCQl7DQoJCQkvLyByZXR1cm4gYXNzb2NpYXRlZCBhcnJheXMgZnJvbSB0aGUgdGFibGUgcmVjb3Jkcw0KCQkJcmV0dXJuICR0aGlzLT5kYi0+bG9hZEFzc29jTGlzdCgka2V5KTsNCgkJfQ0KDQoJCS8vIGRhdGEgZG9lcyBub3QgZXhpc3QNCgkJcmV0dXJuIG51bGw7DQoJfQ0KDQoJLyoqDQoJICogTG9hZCBkYXRhIHJvd3MgYXMgYW4gYXJyYXkgb2Ygb2JqZWN0cw0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAgICAgICRzZWxlY3QgICBBcnJheSBvZiBzZWxlY3Rpb24ga2V5cw0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICAgICAkdGFibGVzICAgQXJyYXkgb2YgdGFibGVzIHRvIHNlYXJjaA0KCSAqIEBwYXJhbSAgIGFycmF5fG51bGwgICAkd2hlcmUgICAgQXJyYXkgb2Ygd2hlcmUga2V5PT52YWx1ZSBtYXRjaCBleGlzdA0KCSAqIEBwYXJhbSAgIGFycmF5fG51bGwgICAkb3JkZXIgICAgQXJyYXkgb2YgaG93IHRvIG9yZGVyIHRoZSBkYXRhDQoJICogQHBhcmFtICAgaW50fG51bGwgICAgICRsaW1pdCAgICBMaW1pdCB0aGUgbnVtYmVyIG9mIHZhbHVlcyByZXR1cm5lZA0KCSAqDQoJICogQHJldHVybiAgYXJyYXl8bnVsbA0KCSAqIEBzaW5jZSAgIDMuMi4wDQoJICoqLw0KCXB1YmxpYyBmdW5jdGlvbiBpdGVtcyhhcnJheSAkc2VsZWN0LCBhcnJheSAkdGFibGVzLCA/YXJyYXkgJHdoZXJlID0gbnVsbCwNCgkJP2FycmF5ICRvcmRlciA9IG51bGwsID9pbnQgJGxpbWl0ID0gbnVsbCk6ID9hcnJheQ0KCXsNCgkJLy8gc2V0IGtleSBpZiBmb3VuZA0KCQkka2V5ID0gJHRoaXMtPmdldEtleSgkc2VsZWN0KTsNCg0KCQkvLyBjaGVjayBpZiB3ZSBjYW4gZ2V0IG1hbnkgcm93cw0KCQlpZiAoJHRoaXMtPm1hbnkoJHNlbGVjdCwgJHRhYmxlcywgJHdoZXJlLCAkb3JkZXIsICRsaW1pdCkpDQoJCXsNCgkJCS8vIHJldHVybiBhc3NvY2lhdGVkIGFycmF5cyBmcm9tIHRoZSB0YWJsZSByZWNvcmRzDQoJCQlyZXR1cm4gJHRoaXMtPmRiLT5sb2FkT2JqZWN0TGlzdCgka2V5KTsNCgkJfQ0KDQoJCS8vIGRhdGEgZG9lcyBub3QgZXhpc3QNCgkJcmV0dXJuIG51bGw7DQoJfQ0KDQoJLyoqDQoJICogTG9hZCBkYXRhIHJvdyBhcyBhbiBhc3NvY2lhdGVkIGFycmF5DQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAgICAgJHNlbGVjdCAgIEFycmF5IG9mIHNlbGVjdGlvbiBrZXlzDQoJICogQHBhcmFtICAgYXJyYXkgICAgICAgJHRhYmxlcyAgQXJyYXkgb2YgdGFibGVzIHRvIHNlYXJjaA0KCSAqIEBwYXJhbSAgIGFycmF5fG51bGwgICR3aGVyZSAgIEFycmF5IG9mIHdoZXJlIGtleT0+dmFsdWUgbWF0Y2ggZXhpc3QNCgkgKiBAcGFyYW0gICBhcnJheXxudWxsICAkb3JkZXIgICAgQXJyYXkgb2YgaG93IHRvIG9yZGVyIHRoZSBkYXRhDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheXxudWxsDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIHJvdyhhcnJheSAkc2VsZWN0LCBhcnJheSAkdGFibGVzLCA/YXJyYXkgJHdoZXJlID0gbnVsbCwgP2FycmF5ICRvcmRlciA9IG51bGwpOiA/YXJyYXkNCgl7DQoJCS8vIGNoZWNrIGlmIHdlIGNhbiBnZXQgb25lIHJvdw0KCQlpZiAoJHRoaXMtPm9uZSgkc2VsZWN0LCAkdGFibGVzLCAkd2hlcmUsICRvcmRlcikpDQoJCXsNCgkJCXJldHVybiAkdGhpcy0+ZGItPmxvYWRBc3NvYygpOw0KCQl9DQoNCgkJLy8gZGF0YSBkb2VzIG5vdCBleGlzdA0KCQlyZXR1cm4gbnVsbDsNCgl9DQoNCgkvKioNCgkgKiBMb2FkIGRhdGEgcm93IGFzIGFuIG9iamVjdA0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAgICAgICRzZWxlY3QgICBBcnJheSBvZiBzZWxlY3Rpb24ga2V5cw0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICAgICR0YWJsZXMgIEFycmF5IG9mIHRhYmxlcyB0byBzZWFyY2gNCgkgKiBAcGFyYW0gICBhcnJheXxudWxsICAkd2hlcmUgICBBcnJheSBvZiB3aGVyZSBrZXk9PnZhbHVlIG1hdGNoIGV4aXN0DQoJICogQHBhcmFtICAgYXJyYXl8bnVsbCAgJG9yZGVyICAgIEFycmF5IG9mIGhvdyB0byBvcmRlciB0aGUgZGF0YQ0KCSAqDQoJICogQHJldHVybiAgb2JqZWN0fG51bGwNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gaXRlbShhcnJheSAkc2VsZWN0LCBhcnJheSAkdGFibGVzLCA/YXJyYXkgJHdoZXJlID0gbnVsbCwgP2FycmF5ICRvcmRlciA9IG51bGwpOiA/b2JqZWN0DQoJew0KCQkvLyBjaGVjayBpZiB3ZSBjYW4gZ2V0IG9uZSByb3cNCgkJaWYgKCR0aGlzLT5vbmUoJHNlbGVjdCwgJHRhYmxlcywgJHdoZXJlLCAkb3JkZXIpKQ0KCQl7DQoJCQLine truncated
(124, '06f8eada-d59b-441c-b287-0aea1793da5a', 'VDM.Database.Load', 'Load', 'final class', 'Database Load\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', '6cbef8f8-4813-48e3-b05a-65e1aea95171', '', '', '', '{\"0\":\"2ad31f74-f579-499d-b98b-c4f54fd615dd\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Database.Load', 0, '{}', '{}', '', '{\"use_selection0\":{\"use\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIExvYWQgZGF0YSByb3dzIGFzIGFuIGFycmF5IG9mIGFzc29jaWF0ZWQgYXJyYXlzDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAgICAgJHNlbGVjdCAgIEFycmF5IG9mIHNlbGVjdGlvbiBrZXlzDQoJICogQHBhcmFtICAgYXJyYXkgICAgICAgICR0YWJsZXMgICBBcnJheSBvZiB0YWJsZXMgdG8gc2VhcmNoDQoJICogQHBhcmFtICAgYXJyYXl8bnVsbCAgICR3aGVyZSAgICBBcnJheSBvZiB3aGVyZSBrZXk9PnZhbHVlIG1hdGNoIGV4aXN0DQoJICogQHBhcmFtICAgYXJyYXl8bnVsbCAgICRvcmRlciAgICBBcnJheSBvZiBob3cgdG8gb3JkZXIgdGhlIGRhdGENCgkgKiBAcGFyYW0gICBpbnR8bnVsbCAgICAgJGxpbWl0ICAgIExpbWl0IHRoZSBudW1iZXIgb2YgdmFsdWVzIHJldHVybmVkDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheXxudWxsDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIHJvd3MoYXJyYXkgJHNlbGVjdCwgYXJyYXkgJHRhYmxlcywgP2FycmF5ICR3aGVyZSA9IG51bGwsDQoJCT9hcnJheSAkb3JkZXIgPSBudWxsLCA/aW50ICRsaW1pdCA9IG51bGwpOiA/YXJyYXkNCgl7DQoJCS8vIHNldCBrZXkgaWYgZm91bmQNCgkJJGtleSA9ICR0aGlzLT5nZXRLZXkoJHNlbGVjdCk7DQoNCgkJLy8gY2hlY2sgaWYgd2UgY2FuIGdldCBtYW55IHJvd3MNCgkJaWYgKCR0aGlzLT5tYW55KCRzZWxlY3QsICR0YWJsZXMsICR3aGVyZSwgJG9yZGVyLCAkbGltaXQpKQ0KCQl7DQoJCQkvLyByZXR1cm4gYXNzb2NpYXRlZCBhcnJheXMgZnJvbSB0aGUgdGFibGUgcmVjb3Jkcw0KCQkJcmV0dXJuICR0aGlzLT5kYi0+bG9hZEFzc29jTGlzdCgka2V5KTsNCgkJfQ0KDQoJCS8vIGRhdGEgZG9lcyBub3QgZXhpc3QNCgkJcmV0dXJuIG51bGw7DQoJfQ0KDQoJLyoqDQoJICogTG9hZCBkYXRhIHJvd3MgYXMgYW4gYXJyYXkgb2Ygb2JqZWN0cw0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAgICAgICRzZWxlY3QgICBBcnJheSBvZiBzZWxlY3Rpb24ga2V5cw0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICAgICAkdGFibGVzICAgQXJyYXkgb2YgdGFibGVzIHRvIHNlYXJjaA0KCSAqIEBwYXJhbSAgIGFycmF5fG51bGwgICAkd2hlcmUgICAgQXJyYXkgb2Ygd2hlcmUga2V5PT52YWx1ZSBtYXRjaCBleGlzdA0KCSAqIEBwYXJhbSAgIGFycmF5fG51bGwgICAkb3JkZXIgICAgQXJyYXkgb2YgaG93IHRvIG9yZGVyIHRoZSBkYXRhDQoJICogQHBhcmFtICAgaW50fG51bGwgICAgICRsaW1pdCAgICBMaW1pdCB0aGUgbnVtYmVyIG9mIHZhbHVlcyByZXR1cm5lZA0KCSAqDQoJICogQHJldHVybiAgYXJyYXl8bnVsbA0KCSAqIEBzaW5jZSAgIDMuMi4wDQoJICoqLw0KCXB1YmxpYyBmdW5jdGlvbiBpdGVtcyhhcnJheSAkc2VsZWN0LCBhcnJheSAkdGFibGVzLCA/YXJyYXkgJHdoZXJlID0gbnVsbCwNCgkJP2FycmF5ICRvcmRlciA9IG51bGwsID9pbnQgJGxpbWl0ID0gbnVsbCk6ID9hcnJheQ0KCXsNCgkJLy8gc2V0IGtleSBpZiBmb3VuZA0KCQkka2V5ID0gJHRoaXMtPmdldEtleSgkc2VsZWN0KTsNCg0KCQkvLyBjaGVjayBpZiB3ZSBjYW4gZ2V0IG1hbnkgcm93cw0KCQlpZiAoJHRoaXMtPm1hbnkoJHNlbGVjdCwgJHRhYmxlcywgJHdoZXJlLCAkb3JkZXIsICRsaW1pdCkpDQoJCXsNCgkJCS8vIHJldHVybiBhc3NvY2lhdGVkIGFycmF5cyBmcm9tIHRoZSB0YWJsZSByZWNvcmRzDQoJCQlyZXR1cm4gJHRoaXMtPmRiLT5sb2FkT2JqZWN0TGlzdCgka2V5KTsNCgkJfQ0KDQoJCS8vIGRhdGEgZG9lcyBub3QgZXhpc3QNCgkJcmV0dXJuIG51bGw7DQoJfQ0KDQoJLyoqDQoJICogTG9hZCBkYXRhIHJvdyBhcyBhbiBhc3NvY2lhdGVkIGFycmF5DQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAgICAgJHNlbGVjdCAgIEFycmF5IG9mIHNlbGVjdGlvbiBrZXlzDQoJICogQHBhcmFtICAgYXJyYXkgICAgICAgJHRhYmxlcyAgQXJyYXkgb2YgdGFibGVzIHRvIHNlYXJjaA0KCSAqIEBwYXJhbSAgIGFycmF5fG51bGwgICR3aGVyZSAgIEFycmF5IG9mIHdoZXJlIGtleT0+dmFsdWUgbWF0Y2ggZXhpc3QNCgkgKiBAcGFyYW0gICBhcnJheXxudWxsICAkb3JkZXIgICAgQXJyYXkgb2YgaG93IHRvIG9yZGVyIHRoZSBkYXRhDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheXxudWxsDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIHJvdyhhcnJheSAkc2VsZWN0LCBhcnJheSAkdGFibGVzLCA/YXJyYXkgJHdoZXJlID0gbnVsbCwgP2FycmF5ICRvcmRlciA9IG51bGwpOiA/YXJyYXkNCgl7DQoJCS8vIGNoZWNrIGlmIHdlIGNhbiBnZXQgb25lIHJvdw0KCQlpZiAoJHRoaXMtPm9uZSgkc2VsZWN0LCAkdGFibGVzLCAkd2hlcmUsICRvcmRlcikpDQoJCXsNCgkJCXJldHVybiAkdGhpcy0+ZGItPmxvYWRBc3NvYygpOw0KCQl9DQoNCgkJLy8gZGF0YSBkb2VzIG5vdCBleGlzdA0KCQlyZXR1cm4gbnVsbDsNCgl9DQoNCgkvKioNCgkgKiBMb2FkIGRhdGEgcm93IGFzIGFuIG9iamVjdA0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAgICAgICRzZWxlY3QgICBBcnJheSBvZiBzZWxlY3Rpb24ga2V5cw0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICAgICR0YWJsZXMgIEFycmF5IG9mIHRhYmxlcyB0byBzZWFyY2gNCgkgKiBAcGFyYW0gICBhcnJheXxudWxsICAkd2hlcmUgICBBcnJheSBvZiB3aGVyZSBrZXk9PnZhbHVlIG1hdGNoIGV4aXN0DQoJICogQHBhcmFtICAgYXJyYXl8bnVsbCAgJG9yZGVyICAgIEFycmF5IG9mIGhvdyB0byBvcmRlciB0aGUgZGF0YQ0KCSAqDQoJICogQHJldHVybiAgb2JqZWN0fG51bGwNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gaXRlbShhcnJheSAkc2VsZWN0LCBhcnJheSAkdGFibGVzLCA/YXJyYXkgJHdoZXJlID0gbnVsbCwgP2FycmF5ICRvcmRlciA9IG51bGwpOiA/b2JqZWN0DQoJew0KCQkvLyBjaGVjayBpZiB3ZSBjYW4gZ2V0IG9uZSByb3cNCgkJaWYgKCR0aGlzLT5vbmUoJHNlbGVjdCwgJHRhYmxlcywgJHdoZXJlLCAkb3JkZXIpKQ0KCQl7DQoJCQLine truncated
(125, '2ad31f74-f579-499d-b98b-c4f54fd615dd', 'VDM.Interfaces.Database.LoadInterface', 'LoadInterface', 'interface', 'Database Load Interface\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Interfaces.Database.LoadInterface', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIExvYWQgZGF0YSByb3dzIGFzIGFuIGFycmF5IG9mIGFzc29jaWF0ZWQgYXJyYXlzDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAgICAgJHNlbGVjdCAgIEFycmF5IG9mIHNlbGVjdGlvbiBrZXlzDQoJICogQHBhcmFtICAgYXJyYXkgICAgICAgICR0YWJsZXMgICBBcnJheSBvZiB0YWJsZXMgdG8gc2VhcmNoDQoJICogQHBhcmFtICAgYXJyYXl8bnVsbCAgICR3aGVyZSAgICBBcnJheSBvZiB3aGVyZSBrZXk9PnZhbHVlIG1hdGNoIGV4aXN0DQoJICogQHBhcmFtICAgYXJyYXl8bnVsbCAgICRvcmRlciAgICBBcnJheSBvZiBob3cgdG8gb3JkZXIgdGhlIGRhdGENCgkgKiBAcGFyYW0gICBpbnR8bnVsbCAgICAgJGxpbWl0ICAgIExpbWl0IHRoZSBudW1iZXIgb2YgdmFsdWVzIHJldHVybmVkDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheXxudWxsDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIHJvd3MoYXJyYXkgJHNlbGVjdCwgYXJyYXkgJHRhYmxlcywgP2FycmF5ICR3aGVyZSA9IG51bGwsDQoJCT9hcnJheSAkb3JkZXIgPSBudWxsLCA/aW50ICRsaW1pdCA9IG51bGwpOiA/YXJyYXk7DQoNCgkvKioNCgkgKiBMb2FkIGRhdGEgcm93cyBhcyBhbiBhcnJheSBvZiBvYmplY3RzDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAgICAgJHNlbGVjdCAgIEFycmF5IG9mIHNlbGVjdGlvbiBrZXlzDQoJICogQHBhcmFtICAgYXJyYXkgICAgICAgICR0YWJsZXMgICBBcnJheSBvZiB0YWJsZXMgdG8gc2VhcmNoDQoJICogQHBhcmFtICAgYXJyYXl8bnVsbCAgICR3aGVyZSAgICBBcnJheSBvZiB3aGVyZSBrZXk9PnZhbHVlIG1hdGNoIGV4aXN0DQoJICogQHBhcmFtICAgYXJyYXl8bnVsbCAgICRvcmRlciAgICBBcnJheSBvZiBob3cgdG8gb3JkZXIgdGhlIGRhdGENCgkgKiBAcGFyYW0gICBpbnR8bnVsbCAgICAgJGxpbWl0ICAgIExpbWl0IHRoZSBudW1iZXIgb2YgdmFsdWVzIHJldHVybmVkDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheXxudWxsDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIGl0ZW1zKGFycmF5ICRzZWxlY3QsIGFycmF5ICR0YWJsZXMsID9hcnJheSAkd2hlcmUgPSBudWxsLA0KCQk/YXJyYXkgJG9yZGVyID0gbnVsbCwgP2ludCAkbGltaXQgPSBudWxsKTogP2FycmF5Ow0KDQoJLyoqDQoJICogTG9hZCBkYXRhIHJvdyBhcyBhbiBhc3NvY2lhdGVkIGFycmF5DQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAgICAgJHNlbGVjdCAgIEFycmF5IG9mIHNlbGVjdGlvbiBrZXlzDQoJICogQHBhcmFtICAgYXJyYXkgICAgICAgJHRhYmxlcyAgQXJyYXkgb2YgdGFibGVzIHRvIHNlYXJjaA0KCSAqIEBwYXJhbSAgIGFycmF5fG51bGwgICR3aGVyZSAgIEFycmF5IG9mIHdoZXJlIGtleT0+dmFsdWUgbWF0Y2ggZXhpc3QNCgkgKiBAcGFyYW0gICBhcnJheXxudWxsICAkb3JkZXIgICAgQXJyYXkgb2YgaG93IHRvIG9yZGVyIHRoZSBkYXRhDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheXxudWxsDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIHJvdyhhcnJheSAkc2VsZWN0LCBhcnJheSAkdGFibGVzLCA/YXJyYXkgJHdoZXJlID0gbnVsbCwgP2FycmF5ICRvcmRlciA9IG51bGwpOiA/YXJyYXk7DQoNCgkvKioNCgkgKiBMb2FkIGRhdGEgcm93IGFzIGFuIG9iamVjdA0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAgICAgICRzZWxlY3QgICBBcnJheSBvZiBzZWxlY3Rpb24ga2V5cw0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICAgICR0YWJsZXMgIEFycmF5IG9mIHRhYmxlcyB0byBzZWFyY2gNCgkgKiBAcGFyYW0gICBhcnJheXxudWxsICAkd2hlcmUgICBBcnJheSBvZiB3aGVyZSBrZXk9PnZhbHVlIG1hdGNoIGV4aXN0DQoJICogQHBhcmFtICAgYXJyYXl8bnVsbCAgJG9yZGVyICAgIEFycmF5IG9mIGhvdyB0byBvcmRlciB0aGUgZGF0YQ0KCSAqDQoJICogQHJldHVybiAgb2JqZWN0fG51bGwNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gaXRlbShhcnJheSAkc2VsZWN0LCBhcnJheSAkdGFibGVzLCA/YXJyYXkgJHdoZXJlID0gbnVsbCwgP2FycmF5ICRvcmRlciA9IG51bGwpOiA/b2JqZWN0Ow0KDQoJLyoqDQoJICogR2V0IHRoZSBtYXggdmFsdWUgYmFzZWQgb24gYSBmaWx0ZXJlZCByZXN1bHQgZnJvbSBhIGdpdmVuIHRhYmxlDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAgICRmaWVsZCAgICAgVGhlIGZpZWxkIGtleQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICAgJHRhYmxlcyAgICBUaGUgdGFibGUNCgkgKiBAcGFyYW0gICBhcnJheSAgICAgICRmaWx0ZXIgICAgVGhlIGZpbHRlciBrZXlzDQoJICoNCgkgKiBAcmV0dXJuICBpbnR8bnVsbA0KCSAqIEBzaW5jZSAgIDMuMi4wDQoJICoqLw0KCXB1YmxpYyBmdW5jdGlvbiBtYXgoJGZpZWxkLCBhcnJheSAkdGFibGVzLCBhcnJheSAkZmlsdGVyKTogP2ludDsNCg0KCS8qKg0KCSAqIENvdW50IHRoZSBudW1iZXIgb2YgaXRlbXMgYmFzZWQgb24gZmlsdGVyIHJlc3VsdCBmcm9tIGEgZ2l2ZW4gdGFibGUNCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICAgJHRhYmxlcyAgICBUaGUgdGFibGUNCgkgKiBAcGFyYW0gICBhcnJheSAgICAgICRmaWx0ZXIgICAgVGhlIGZpbHRlciBrZXlzDQoJICoNCgkgKiBAcmV0dXJuICBpbnR8bnVsbA0KCSAqIEBzaW5jZSAgIDMuMi4wDQoJICoqLw0KCXB1YmxpYyBmdW5jdGlvbiBjb3VudChhcnJheSAkdGFibGVzLCBhcnJheSAkZmlsdGVyKTogP2ludDsNCg0KCS8qKg0KCSAqIExvYWQgb25lIHZhbHVlIGZyb20gYSByb3cNCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICAgICAkc2VsZWN0ICAgQXJyYXkgb2Ygc2VsZWN0aW9uIGtleXMNCgkgKiBAcGFyYW0gICBhcnJheSAgICAgICAkdGFibGVzICBBcnJheSBvZiB0YWJsZXMgdG8gc2VhcmNoDQoJICogQHBhcmFtICAgYXJyYXl8bnVsbCAgJHdoZXJlICAgQXJyYXkgb2Ygd2hlcmUga2V5PT52YWx1ZSBtYXRjaCBleGlzdA0KCSAqIEBwYXJhbSAgIGFycmF5fG51bGwgICRvcmRlciAgICBBcnJheSBvZiBob3cgdG8gb3JkZXIgdGhlIGRhdGENCgkgKg0KCSAqIEByZXR1cm4gIG1peGVkDQoJICogQHNpbmNlICAgMy4yLjLine truncated
(126, '6cbef8f8-4813-48e3-b05a-65e1aea95171', 'VDM.Abstraction.Database', 'Database', 'abstract class', 'Database\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Abstraction.Database', 1, '{}', '{}', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcRGF0YWJhc2VcRGF0YWJhc2VJbnRlcmZhY2UgYXMgSm9vbWxhRGF0YWJhc2U7', '{\"use_selection0\":{\"use\":\"640b5352-fb09-425f-a26e-cd44eda03f15\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"58ab1a65-9a80-40a3-bb33-c50fbf003b63\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIEZ1bmN0aW9uIHRvIHF1b3RlIHZhbHVlcw0KCSAqDQoJICogQHNpbmNlIDUuMS4xDQoJICovDQoJdXNlIFF1b3RlVHJhaXQ7DQoNCgkvKioNCgkgKiBEYXRhYmFzZSBvYmplY3QgdG8gcXVlcnkgbG9jYWwgREINCgkgKg0KCSAqIEB2YXIgSm9vbWxhRGF0YWJhc2UNCgkgKiBAc2luY2UgMy4yLjANCgkgKi8NCglwcm90ZWN0ZWQgSm9vbWxhRGF0YWJhc2UgJGRiOw0KDQoJLyoqDQoJICogQ3VycmVudCBjb21wb25lbnQgY29kZSBuYW1lDQoJICoNCgkgKiBAdmFyICAgICBzdHJpbmcNCgkgKiBAc2luY2UgNS4xLjENCgkgKi8NCglwcm90ZWN0ZWQgc3RyaW5nICRjb21wb25lbnRDb2RlOw0KDQoJLyoqDQoJICogQ29yZSBDb21wb25lbnQgVGFibGUgTmFtZQ0KCSAqDQoJICogQHZhciAgIHN0cmluZw0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqLw0KCXByb3RlY3RlZCBzdHJpbmcgJHRhYmxlOw0KDQoJLyoqDQoJICogQ29uc3RydWN0b3INCgkgKg0KCSAqIEB0aHJvd3MgXEV4Y2VwdGlvbg0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCg/Sm9vbWxhRGF0YWJhc2UgJGRiID0gbnVsbCkNCgl7DQoJCSR0aGlzLT5kYiA9ICRkYiA/OiBGYWN0b3J5OjpnZXRDb250YWluZXIoKS0+Z2V0KEpvb21sYURhdGFiYXNlOjpjbGFzcyk7DQoNCgkJJHRoaXMtPmNvbXBvbmVudENvZGUgPSBIZWxwZXI6OmdldENvZGUoKTsNCgkJJHRoaXMtPnRhYmxlID0gJyNfXycgLiAkdGhpcy0+Y29tcG9uZW50Q29kZTsNCgl9DQoNCgkvKioNCgkgKiBTZXQgYSB0YWJsZSBuYW1lLCBhZGRpbmcgdGhlDQoJICogICAgIGNvcmUgY29tcG9uZW50IGFzIG5lZWRlZA0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAkdGFibGUgICBUaGUgdGFibGUgc3RyaW5nDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0VGFibGUoc3RyaW5nICR0YWJsZSk6IHN0cmluZw0KCXsNCgkJaWYgKHN0cnBvcygkdGFibGUsICcjX18nKSA9PT0gZmFsc2UpDQoJCXsNCgkJCXJldHVybiAkdGhpcy0+dGFibGUgLiAnXycgLiAkdGFibGU7DQoJCX0NCg0KCQlyZXR1cm4gJHRhYmxlOw0KCX0=', '{}', '{}', '', 1, '2018-10-05 17:01:41', 50, 0, 1),
(133, '524eb8f6-38d4-47dc-92ad-98b94e099ac0', 'VDM.Database.Insert', 'Insert', 'final class', 'Database Insert Class\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 'd9839333-a8f1-4a36-9256-5df4d349b3f6', '', '', '', '{\"0\":\"ad12ca1c-d3ce-4e7f-88c5-c6c92bdedc48\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Database.Insert', 1, '{}', '{}', 'dXNlIEpvb21sYVxDTVNcRGF0ZVxEYXRlOw==', '{\"use_selection0\":{\"use\":\"b8176bdf-5615-4d91-8dfa-990d42f44127\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIERlZmF1bHQgU3dpdGNoDQoJICoNCgkgKiBAc2luY2UgNS4xLjENCgkgKi8NCgl1c2UgRGVmYXVsdFRyYWl0Ow0KDQoJLyoqDQoJICogVGhlIGhpc3RvcnkgdHJhY2tlciBidWNrZXQNCgkgKg0KCSAqIEB2YXIgICAgICBhcnJheQ0KCSAqIEBzaW5jZSAgNS4xLjENCgkgKiovDQoJcHJvdGVjdGVkIGFycmF5ICRoaXN0b3J5R3VpZDsNCg0KCS8qKg0KCSAqIEluc2VydCByb3dzIHRvIHRoZSBkYXRhYmFzZSAod2l0aCByZW1hcHBpbmcgYW5kIGZpbHRlcmluZyBjb2x1bW5zIG9wdGlvbikNCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICRkYXRhICAgICAgRGF0YXNldCB0byBzdG9yZSBpbiBkYXRhYmFzZSBbYXJyYXkgb2YgYXJyYXlzIChrZXkgPT4gdmFsdWUpXQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgVGhlIHRhYmxlIHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIGFkZGVkDQoJICogQHBhcmFtICAgYXJyYXkgICAgJGNvbHVtbnMgICBEYXRhIGNvbHVtbnMgZm9yIHJlbWFwcGluZyBhbmQgZmlsdGVyaW5nDQoJICoNCgkgKiBAcmV0dXJuICBib29sDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIHJvd3MoYXJyYXkgJGRhdGEsIHN0cmluZyAkdGFibGUsIGFycmF5ICRjb2x1bW5zID0gW10pOiBib29sDQoJew0KCQlpZiAoIUFycmF5SGVscGVyOjpjaGVjaygkZGF0YSkpDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCWlmICgkY29sdW1ucyA9PT0gW10pDQoJCXsNCgkJCSRjb2x1bW5zID0gJHRoaXMtPmdldEFycmF5Q29sdW1ucygkZGF0YSk7DQoJCX0NCg0KCQlyZXR1cm4gKCRjb2x1bW5zID09PSBbXSkgPyBmYWxzZSA6ICR0aGlzLT5pbnNlcnQoJGRhdGEsICR0YWJsZSwgJGNvbHVtbnMsIHRydWUpOw0KCX0NCg0KCS8qKg0KCSAqIEluc2VydCBpdGVtcyB0byB0aGUgZGF0YWJhc2UgKHdpdGggcmVtYXBwaW5nIGFuZCBmaWx0ZXJpbmcgY29sdW1ucyBvcHRpb24pDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkZGF0YSAgICAgICAgIERhdGEgdG8gc3RvcmUgaW4gZGF0YWJhc2UgKGFycmF5IG9mIG9iamVjdHMpDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHRhYmxlICAgICAgICBUaGUgdGFibGUgd2hlcmUgdGhlIGRhdGEgaXMgYmVpbmcgYWRkZWQNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkY29sdW1ucyAgICAgIERhdGEgY29sdW1ucyBmb3IgcmVtYXBwaW5nIGFuZCBmaWx0ZXJpbmcNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gaXRlbXMoYXJyYXkgJGRhdGEsIHN0cmluZyAkdGFibGUsIGFycmF5ICRjb2x1bW5zID0gW10pOiBib29sDQoJew0KCQlpZiAoIUFycmF5SGVscGVyOjpjaGVjaygkZGF0YSkpDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCWlmICgkY29sdW1ucyA9PT0gW10pDQoJCXsNCgkJCSRjb2x1bW5zID0gJHRoaXMtPmdldE9iamVjdHNDb2x1bW5zKCRkYXRhKTsNCgkJfQ0KDQoJCXJldHVybiAoJGNvbHVtbnMgPT09IFtdKSA/IGZhbHNlIDogJHRoaXMtPmluc2VydCgkZGF0YSwgJHRhYmxlLCAkY29sdW1ucywgZmFsc2UpOw0KCX0NCg0KCS8qKg0KCSAqIEluc2VydCByb3cgdG8gdGhlIGRhdGFiYXNlDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkZGF0YSAgICAgIERhdGFzZXQgdG8gc3RvcmUgaW4gZGF0YWJhc2UgKGtleSA9PiB2YWx1ZSkNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkdGFibGUgICAgIFRoZSB0YWJsZSB3aGVyZSB0aGUgZGF0YSBpcyBiZWluZyBhZGRlZA0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqIEBzaW5jZSAgIDMuMi4wDQoJICoqLw0KCXB1YmxpYyBmdW5jdGlvbiByb3coYXJyYXkgJGRhdGEsIHN0cmluZyAkdGFibGUpOiBib29sDQoJew0KCQlyZXR1cm4gJHRoaXMtPnJvd3MoWyRkYXRhXSwgJHRhYmxlKTsNCgl9DQoNCgkvKioNCgkgKiBJbnNlcnQgaXRlbSB0byB0aGUgZGF0YWJhc2UNCgkgKg0KCSAqIEBwYXJhbSAgIG9iamVjdCAgICAkZGF0YSAgICAgRGF0YXNldCB0byBzdG9yZSBpbiBkYXRhYmFzZSAoa2V5ID0+IHZhbHVlKQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgVGhlIHRhYmxlIHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIGFkZGVkDQoJICoNCgkgKiBAcmV0dXJuICBib29sDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIGl0ZW0ob2JqZWN0ICRkYXRhLCBzdHJpbmcgJHRhYmxlKTogYm9vbA0KCXsNCgkJcmV0dXJuICR0aGlzLT5pdGVtcyhbJGRhdGFdLCAkdGFibGUpOw0KCX0NCg0KCS8qKg0KCSAqIEdldCBjb2x1bW5zIGZyb20gZGF0YSBhcnJheQ0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAkZGF0YSAgIERhdGEgYXJyYXkNCgkgKg0KCSAqIEByZXR1cm4gIGFycmF5DQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEFycmF5Q29sdW1ucyhhcnJheSAmJGRhdGEpOiBhcnJheQ0KCXsNCgkJJHJvdyA9IGFycmF5X3ZhbHVlcygkZGF0YSlbMF07DQoNCgkJaWYgKCFBcnJheUhlbHBlcjo6Y2hlY2soJHJvdykpDQoJCXsNCgkJCXJldHVybiBbXTsNCgkJfQ0KDQoJCSRjb2x1bW5zID0gYXJyYXlfa2V5cygkcm93KTsNCg0KCQlyZXR1cm4gYXJyYXlfY29tYmluZSgkY29sdW1ucywgJGNvbHVtbnMpOw0KCX0NCg0KCS8qKg0KCSAqIEdldCBjb2x1bW5zIGZyb20gZGF0YSBvYmplY3RzDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICRkYXRhICAgRGF0YSBvYmplY3RzDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheQ0KCSAqIEBzaW5jZSAgIDMuMi4wDQoJICoqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRPYmplY3RzQ29sdW1ucyhhcnJheSAmJGRhdGEpOiBhcnJheQ0KCXsNCgkJJHJvdyA9IGFycmF5X3ZhbHVlcygkZGF0YSlbMF0Line truncated
(133, '524eb8f6-38d4-47dc-92ad-98b94e099ac0', 'VDM.Database.Insert', 'Insert', 'final class', 'Database Insert Class\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 'd9839333-a8f1-4a36-9256-5df4d349b3f6', '', '', '', '{\"0\":\"ad12ca1c-d3ce-4e7f-88c5-c6c92bdedc48\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Database.Insert', 1, '{}', '{}', 'dXNlIEpvb21sYVxDTVNcRGF0ZVxEYXRlOw==', '{\"use_selection0\":{\"use\":\"b8176bdf-5615-4d91-8dfa-990d42f44127\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIERlZmF1bHQgU3dpdGNoDQoJICoNCgkgKiBAc2luY2UgNS4xLjENCgkgKi8NCgl1c2UgRGVmYXVsdFRyYWl0Ow0KDQoJLyoqDQoJICogVGhlIGhpc3RvcnkgdHJhY2tlciBidWNrZXQNCgkgKg0KCSAqIEB2YXIgICAgICBhcnJheQ0KCSAqIEBzaW5jZSAgNS4xLjENCgkgKiovDQoJcHJvdGVjdGVkIGFycmF5ICRoaXN0b3J5R3VpZDsNCg0KCS8qKg0KCSAqIEluc2VydCByb3dzIHRvIHRoZSBkYXRhYmFzZSAod2l0aCByZW1hcHBpbmcgYW5kIGZpbHRlcmluZyBjb2x1bW5zIG9wdGlvbikNCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICRkYXRhICAgICAgRGF0YXNldCB0byBzdG9yZSBpbiBkYXRhYmFzZSBbYXJyYXkgb2YgYXJyYXlzIChrZXkgPT4gdmFsdWUpXQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgVGhlIHRhYmxlIHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIGFkZGVkDQoJICogQHBhcmFtICAgYXJyYXkgICAgJGNvbHVtbnMgICBEYXRhIGNvbHVtbnMgZm9yIHJlbWFwcGluZyBhbmQgZmlsdGVyaW5nDQoJICoNCgkgKiBAcmV0dXJuICBib29sDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIHJvd3MoYXJyYXkgJGRhdGEsIHN0cmluZyAkdGFibGUsIGFycmF5ICRjb2x1bW5zID0gW10pOiBib29sDQoJew0KCQlpZiAoIUFycmF5SGVscGVyOjpjaGVjaygkZGF0YSkpDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCWlmICgkY29sdW1ucyA9PT0gW10pDQoJCXsNCgkJCSRjb2x1bW5zID0gJHRoaXMtPmdldEFycmF5Q29sdW1ucygkZGF0YSk7DQoJCX0NCg0KCQlyZXR1cm4gKCRjb2x1bW5zID09PSBbXSkgPyBmYWxzZSA6ICR0aGlzLT5pbnNlcnQoJGRhdGEsICR0YWJsZSwgJGNvbHVtbnMsIHRydWUpOw0KCX0NCg0KCS8qKg0KCSAqIEluc2VydCBpdGVtcyB0byB0aGUgZGF0YWJhc2UgKHdpdGggcmVtYXBwaW5nIGFuZCBmaWx0ZXJpbmcgY29sdW1ucyBvcHRpb24pDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkZGF0YSAgICAgICAgIERhdGEgdG8gc3RvcmUgaW4gZGF0YWJhc2UgKGFycmF5IG9mIG9iamVjdHMpDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHRhYmxlICAgICAgICBUaGUgdGFibGUgd2hlcmUgdGhlIGRhdGEgaXMgYmVpbmcgYWRkZWQNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkY29sdW1ucyAgICAgIERhdGEgY29sdW1ucyBmb3IgcmVtYXBwaW5nIGFuZCBmaWx0ZXJpbmcNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gaXRlbXMoYXJyYXkgJGRhdGEsIHN0cmluZyAkdGFibGUsIGFycmF5ICRjb2x1bW5zID0gW10pOiBib29sDQoJew0KCQlpZiAoIUFycmF5SGVscGVyOjpjaGVjaygkZGF0YSkpDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCWlmICgkY29sdW1ucyA9PT0gW10pDQoJCXsNCgkJCSRjb2x1bW5zID0gJHRoaXMtPmdldE9iamVjdHNDb2x1bW5zKCRkYXRhKTsNCgkJfQ0KDQoJCXJldHVybiAoJGNvbHVtbnMgPT09IFtdKSA/IGZhbHNlIDogJHRoaXMtPmluc2VydCgkZGF0YSwgJHRhYmxlLCAkY29sdW1ucywgZmFsc2UpOw0KCX0NCg0KCS8qKg0KCSAqIEluc2VydCByb3cgdG8gdGhlIGRhdGFiYXNlDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkZGF0YSAgICAgIERhdGFzZXQgdG8gc3RvcmUgaW4gZGF0YWJhc2UgKGtleSA9PiB2YWx1ZSkNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkdGFibGUgICAgIFRoZSB0YWJsZSB3aGVyZSB0aGUgZGF0YSBpcyBiZWluZyBhZGRlZA0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqIEBzaW5jZSAgIDMuMi4wDQoJICoqLw0KCXB1YmxpYyBmdW5jdGlvbiByb3coYXJyYXkgJGRhdGEsIHN0cmluZyAkdGFibGUpOiBib29sDQoJew0KCQlyZXR1cm4gJHRoaXMtPnJvd3MoWyRkYXRhXSwgJHRhYmxlKTsNCgl9DQoNCgkvKioNCgkgKiBJbnNlcnQgaXRlbSB0byB0aGUgZGF0YWJhc2UNCgkgKg0KCSAqIEBwYXJhbSAgIG9iamVjdCAgICAkZGF0YSAgICAgRGF0YXNldCB0byBzdG9yZSBpbiBkYXRhYmFzZSAoa2V5ID0+IHZhbHVlKQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgVGhlIHRhYmxlIHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIGFkZGVkDQoJICoNCgkgKiBAcmV0dXJuICBib29sDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIGl0ZW0ob2JqZWN0ICRkYXRhLCBzdHJpbmcgJHRhYmxlKTogYm9vbA0KCXsNCgkJcmV0dXJuICR0aGlzLT5pdGVtcyhbJGRhdGFdLCAkdGFibGUpOw0KCX0NCg0KCS8qKg0KCSAqIEdldCBjb2x1bW5zIGZyb20gZGF0YSBhcnJheQ0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAkZGF0YSAgIERhdGEgYXJyYXkNCgkgKg0KCSAqIEByZXR1cm4gIGFycmF5DQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEFycmF5Q29sdW1ucyhhcnJheSAmJGRhdGEpOiBhcnJheQ0KCXsNCgkJJHJvdyA9IGFycmF5X3ZhbHVlcygkZGF0YSlbMF07DQoNCgkJaWYgKCFBcnJheUhlbHBlcjo6Y2hlY2soJHJvdykpDQoJCXsNCgkJCXJldHVybiBbXTsNCgkJfQ0KDQoJCSRjb2x1bW5zID0gYXJyYXlfa2V5cygkcm93KTsNCg0KCQlyZXR1cm4gYXJyYXlfY29tYmluZSgkY29sdW1ucywgJGNvbHVtbnMpOw0KCX0NCg0KCS8qKg0KCSAqIEdldCBjb2x1bW5zIGZyb20gZGF0YSBvYmplY3RzDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICRkYXRhICAgRGF0YSBvYmplY3RzDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheQ0KCSAqIEBzaW5jZSAgIDMuMi4wDQoJICoqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRPYmplY3RzQ29sdW1ucyhhcnJheSAmJGRhdGEpOiBhcnJheQ0KCXsNCgkJJHJvdyA9IGFycmF5X3ZhbHVlcygkZGF0YSlbMF0Line truncated
(134, 'ad12ca1c-d3ce-4e7f-88c5-c6c92bdedc48', 'VDM.Interfaces.Database.InsertInterface', 'InsertInterface', 'interface', 'Database Insert Interface\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '{\"0\":\"78931d43-9fb9-4cc1-a2ca-b3e189ef842e\",\"1\":\"ac77cee7-7018-4496-a453-9757623e3849\"}', '', '', '[[[NamespacePrefix]]]\\Joomla\\Interfaces.Database.InsertInterface', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIEluc2VydCByb3dzIHRvIHRoZSBkYXRhYmFzZSAod2l0aCByZW1hcHBpbmcgYW5kIGZpbHRlcmluZyBjb2x1bW5zIG9wdGlvbikNCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICRkYXRhICAgICAgRGF0YXNldCB0byBzdG9yZSBpbiBkYXRhYmFzZSBbYXJyYXkgb2YgYXJyYXlzIChrZXkgPT4gdmFsdWUpXQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgVGhlIHRhYmxlIHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIGFkZGVkDQoJICogQHBhcmFtICAgYXJyYXkgICAgJGNvbHVtbnMgICBEYXRhIGNvbHVtbnMgZm9yIHJlbWFwcGluZyBhbmQgZmlsdGVyaW5nDQoJICoNCgkgKiBAcmV0dXJuICBib29sDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIHJvd3MoYXJyYXkgJGRhdGEsIHN0cmluZyAkdGFibGUsIGFycmF5ICRjb2x1bW5zID0gW10pOiBib29sOw0KDQoJLyoqDQoJICogSW5zZXJ0IGl0ZW1zIHRvIHRoZSBkYXRhYmFzZSAod2l0aCByZW1hcHBpbmcgYW5kIGZpbHRlcmluZyBjb2x1bW5zIG9wdGlvbikNCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICRkYXRhICAgICAgICAgRGF0YSB0byBzdG9yZSBpbiBkYXRhYmFzZSAoYXJyYXkgb2Ygb2JqZWN0cykNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkdGFibGUgICAgICAgIFRoZSB0YWJsZSB3aGVyZSB0aGUgZGF0YSBpcyBiZWluZyBhZGRlZA0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICRjb2x1bW5zICAgICAgRGF0YSBjb2x1bW5zIGZvciByZW1hcHBpbmcgYW5kIGZpbHRlcmluZw0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqIEBzaW5jZSAgIDMuMi4wDQoJICoqLw0KCXB1YmxpYyBmdW5jdGlvbiBpdGVtcyhhcnJheSAkZGF0YSwgc3RyaW5nICR0YWJsZSwgYXJyYXkgJGNvbHVtbnMgPSBbXSk6IGJvb2w7DQoNCgkvKioNCgkgKiBJbnNlcnQgcm93IHRvIHRoZSBkYXRhYmFzZQ0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAgJGRhdGEgICAgICBEYXRhc2V0IHRvIHN0b3JlIGluIGRhdGFiYXNlIChrZXkgPT4gdmFsdWUpDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHRhYmxlICAgICBUaGUgdGFibGUgd2hlcmUgdGhlIGRhdGEgaXMgYmVpbmcgYWRkZWQNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gcm93KGFycmF5ICRkYXRhLCBzdHJpbmcgJHRhYmxlKTogYm9vbDsNCg0KCS8qKg0KCSAqIEluc2VydCBpdGVtIHRvIHRoZSBkYXRhYmFzZQ0KCSAqDQoJICogQHBhcmFtICAgb2JqZWN0ICAgICRkYXRhICAgICBEYXRhc2V0IHRvIHN0b3JlIGluIGRhdGFiYXNlIChrZXkgPT4gdmFsdWUpDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHRhYmxlICAgICBUaGUgdGFibGUgd2hlcmUgdGhlIGRhdGEgaXMgYmVpbmcgYWRkZWQNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gaXRlbShvYmplY3QgJGRhdGEsIHN0cmluZyAkdGFibGUpOiBib29sOw==', '{}', '{}', '', 1, '2022-12-10 14:06:51', 20, 0, 1),
(135, 'caf33c5d-858c-4f9a-894f-ab302ec5445a', 'VDM.Interfaces.FactoryInterface', 'FactoryInterface', 'interface', 'The Container Factory Interface\r\n\r\n@since 0.0.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Interfaces.FactoryInterface', 1, '{}', '{}', 'dXNlIEpvb21sYVxESVxDb250YWluZXI7', '{}', 'CS8qKg0KCSAqIEdldCBhbnkgY2xhc3MgZnJvbSB0aGUgY29udGFpbmVyDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRrZXkgIFRoZSBjb250YWluZXIgY2xhc3Mga2V5DQoJICoNCgkgKiBAcmV0dXJuICBNaXhlZA0KCSAqIEBzaW5jZSAwLjAuMA0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gXyhzdHJpbmcgJGtleSk7DQoNCgkvKioNCgkgKiBHZXQgdGhlIGdsb2JhbCBjb250YWluZXINCgkgKg0KCSAqIEByZXR1cm4gIENvbnRhaW5lcg0KCSAqIEBzaW5jZSAwLjAuMA0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Q29udGFpbmVyKCk6IENvbnRhaW5lcjs=', '{}', '{}', '', 1, '2022-12-14 07:12:55', 19, 0, 1),
(136, 'bfd1d6d5-56c1-4fe9-9fee-1c5910e1f5d8', 'VDM.Table', 'Table', 'class', '[[[Component]]] Tables\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '2.0.0', 'e0f6ddbe-2a35-4537-942c-faff2ebd04f6', '', '', '', '{\"0\":\"2da6d6c4-eb29-4d69-8bc2-36d96e916adf\"}', '', '[[[NamespacePrefix]]]\\Joomla\\[[[ComponentNamespace]]].Table', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIEFsbCBhcmVhcy92aWV3cy90YWJsZXMgd2l0aCB0aGVpciBmaWVsZCBkZXRhaWxzDQoJICoNCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqKi8NCglwcm90ZWN0ZWQgYXJyYXkgJHRhYmxlcyA9ICMjI0FMTF9DT01QT05FTlRfRklFTERTIyMjOw==', '{}', '{}', '', 1, '2022-12-14 07:30:10', 21, 0, 1),
@@ -2177,11 +2177,11 @@ INSERT INTO `#__componentbuilder_power` (`id`, `guid`, `system_name`, `name`, `t
(379, '1198aecf-84c6-45d2-aea8-d531aa4afdfa', 'Utilities FormHelper', 'FormHelper', 'abstract class', 'Form Helper\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Utilities.FormHelper', 1, '{}', '{}', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtSGVscGVyIGFzIEpvb21sYUZvcm1IZWxwZXI7DQp1c2UgSm9vbWxhXENNU1xGb3JtXEZvcm1GaWVsZDs=', '{}', 'CS8qKg0KCSAqIGdldCB0aGUgZmllbGQgeG1sDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAgICRhdHRyaWJ1dGVzICAgVGhlIGFycmF5IG9mIGF0dHJpYnV0ZXMNCgkgKiBAcGFyYW0gICBhcnJheSAgICAgICRvcHRpb25zICAgICAgVGhlIG9wdGlvbnMgdG8gYXBwbHkgdG8gdGhlIFhNTCBlbGVtZW50DQoJICoNCgkgKiBAcmV0dXJuICBcU2ltcGxlWE1MRWxlbWVudHxudWxsDQoJICogQHNpbmNlIDMuMi4wDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiB4bWwoYXJyYXkgJGF0dHJpYnV0ZXMsID9hcnJheSAkb3B0aW9ucyA9IG51bGwpOiA/XFNpbXBsZVhNTEVsZW1lbnQNCgl7DQoJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGF0dHJpYnV0ZXMgYW5kIGEgdHlwZSB2YWx1ZQ0KCQlpZiAoQXJyYXlIZWxwZXI6OmNoZWNrKCRhdHRyaWJ1dGVzKSkNCgkJew0KCQkJLy8gc3RhcnQgZmllbGQgeG1sDQoJCQkkWE1MID0gbmV3IFxTaW1wbGVYTUxFbGVtZW50KCc8ZmllbGQvPicpOw0KDQoJCQkvLyBsb2FkIHRoZSBhdHRyaWJ1dGVzDQoJCQlzZWxmOjphdHRyaWJ1dGVzKCRYTUwsICRhdHRyaWJ1dGVzKTsNCg0KCQkJLy8gY2hlY2sgaWYgd2UgaGF2ZSBvcHRpb25zDQoJCQlpZiAoQXJyYXlIZWxwZXI6OmNoZWNrKCRvcHRpb25zKSkNCgkJCXsNCgkJCQkvLyBsb2FkIHRoZSBvcHRpb25zDQoJCQkJc2VsZjo6b3B0aW9ucygkWE1MLCAkb3B0aW9ucyk7DQoJCQl9DQoNCgkJCS8vIHJldHVybiB0aGUgZmllbGQgeG1sDQoJCQlyZXR1cm4gJFhNTDsNCgkJfQ0KDQoJCXJldHVybiBudWxsOw0KCX0NCg0KCS8qKg0KCSAqIHhtbEFwcGVuZA0KCSAqDQoJICogQHBhcmFtICAgXFNpbXBsZVhNTEVsZW1lbnQgICAkeG1sICAgICAgVGhlIFhNTCBlbGVtZW50IHJlZmVyZW5jZSBpbiB3aGljaCB0byBpbmplY3QgYSBjb21tZW50DQoJICogQHBhcmFtICAgbWl4ZWQgICAgICAgICAgICAgICRub2RlICAgICBBIFNpbXBsZVhNTEVsZW1lbnQgbm9kZSB0byBhcHBlbmQgdG8gdGhlIFhNTCBlbGVtZW50IHJlZmVyZW5jZSwNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgYSBzdGRDbGFzcyBvYmplY3QgY29udGFpbmluZyBhIGNvbW1lbnQgYXR0cmlidXRlIHRvIGJlIGluamVjdGVkDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSB0aGUgWE1MIG5vZGUgYW5kIGEgZmllbGRYTUwgYXR0cmlidXRlIGNvbnRhaW5pbmcgYSBTaW1wbGVYTUxFbGVtZW50DQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICogQHNpbmNlIDMuMi4wDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhcHBlbmQoXFNpbXBsZVhNTEVsZW1lbnQgJiR4bWwsICRub2RlKQ0KCXsNCgkJaWYgKCEkbm9kZSkNCgkJew0KCQkJLy8gZWxlbWVudCB3YXMgbm90IHJldHVybmVkDQoJCQlyZXR1cm47DQoJCX0NCg0KCQlpZiAoJG5vZGUgaW5zdGFuY2VvZiBcc3RkQ2xhc3MpDQoJCXsNCgkJCWlmIChwcm9wZXJ0eV9leGlzdHMoJG5vZGUsICdjb21tZW50JykpDQoJCQl7DQoJCQkJc2VsZjo6Y29tbWVudCgkeG1sLCAkbm9kZS0+Y29tbWVudCk7DQoJCQl9DQoJCQlpZiAocHJvcGVydHlfZXhpc3RzKCRub2RlLCAnZmllbGRYTUwnKSkNCgkJCXsNCgkJCQlzZWxmOjphcHBlbmQoJHhtbCwgJG5vZGUtPmZpZWxkWE1MKTsNCgkJCX0NCgkJfQ0KCQllbHNlaWYgKCRub2RlIGluc3RhbmNlb2YgXFNpbXBsZVhNTEVsZW1lbnQpDQoJCXsNCgkJCSRkb21YTUwgPSBcZG9tX2ltcG9ydF9zaW1wbGV4bWwoJHhtbCk7DQoJCQkkZG9tTm9kZSA9IFxkb21faW1wb3J0X3NpbXBsZXhtbCgkbm9kZSk7DQoJCQkkZG9tWE1MLT5hcHBlbmRDaGlsZCgkZG9tWE1MLT5vd25lckRvY3VtZW50LT5pbXBvcnROb2RlKCRkb21Ob2RlLCB0cnVlKSk7DQoJCQkkeG1sID0gXHNpbXBsZXhtbF9pbXBvcnRfZG9tKCRkb21YTUwpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogeG1sQ29tbWVudA0KCSAqDQoJICogQHBhcmFtICAgXFNpbXBsZVhNTEVsZW1lbnQgICAkeG1sICAgICAgICBUaGUgWE1MIGVsZW1lbnQgcmVmZXJlbmNlIGluIHdoaWNoIHRvIGluamVjdCBhIGNvbW1lbnQNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAgICAgICAgICAgJGNvbW1lbnQgICAgVGhlIGNvbW1lbnQgdG8gaW5qZWN0DQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICogQHNpbmNlIDMuMi4wDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb21tZW50KFxTaW1wbGVYTUxFbGVtZW50ICYkeG1sLCBzdHJpbmcgJGNvbW1lbnQpDQoJew0KCQkkZG9tWE1MID0gXGRvbV9pbXBvcnRfc2ltcGxleG1sKCR4bWwpOw0KCQkkZG9tQ29tbWVudCA9IG5ldyBcRE9NQ29tbWVudCgkY29tbWVudCk7DQoJCSRub2RlVGFyZ2V0ID0gJGRvbVhNTC0+b3duZXJEb2N1bWVudC0+aW1wb3J0Tm9kZSgkZG9tQ29tbWVudCwgdHJ1ZSk7DQoJCSRkb21YTUwtPmFwcGVuZENoaWxkKCRub2RlVGFyZ2V0KTsNCgkJJHhtbCA9IFxzaW1wbGV4bWxfaW1wb3J0X2RvbSgkZG9tWE1MKTsNCgl9DQoNCgkvKioNCgkgKiB4bWxBZGRBdHRyaWJ1dGVzDQoJICoNCgkgKiBAcGFyYW0gICBcU2ltcGxlWE1MRWxlbWVudCAgICR4bWwgICAgICAgICAgVGhlIFhNTCBlbGVtZW50IHJlZmVyZW5jZSBpbiB3aGljaCB0byBpbmplY3QgYSBjb21tZW50DQoJICogQHBhcmFtICAgYXJyYXkgICAgICAgICAgICAgICRhdHRyaWJ1dGVzICAgVGhlIGF0dHJpYnV0ZXMgdG8gYXBwbHkgdG8gdGhlIFhNTCBlbGVtZW50DQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICogQHNpbmNlIDMuMi4wDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhdHRyaWJ1dGVzKFxTaW1wbGVYTUxFbGVtZW50ICYkeG1sLCBhcnJheSAkYXR0cmlidXRlcyA9IFtdKQ0KCXsNCgkJZm9yZWFjaCAoJGF0dHJpYnV0ZXMgYXMgJGtleSA9PiAkdmFsdWUpDQoJCXsNCgkJCSR4bWwtPmFkZEF0dHJpYnV0ZSgka2V5LCAkdmFsdWUgPz8gJycpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogeG1sQWRkT3B0aW9ucw0KCSAqDQoJICogQHBhcmFtICAgXFNpbXBsZVhNTEVsZW1lbnQgICAkeG1sICAgICAgICAgIFRoZSLine truncated
(382, '7c1fb50f-8fb1-4627-8705-6fedf7182ca5', 'VDM.Model.Upsert', 'Upsert', 'final class', 'Power Model Update or Insert\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', '584747d1-3a86-453d-b7a3-a2219de8d777', 'Abstraction\\Model', '', '', '{\"0\":\"8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Model.Upsert', 0, '{}', '{}', '', '{\"use_selection0\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\",\"as\":\"default\"},\"use_selection2\":{\"use\":\"91004529-94a9-4590-b842-e7c6b624ecf5\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIE1vZGVsIHRoZSB2YWx1ZQ0KCSAqICAgICAgICAgIEV4YW1wbGU6ICR0aGlzLT52YWx1ZSh2YWx1ZSwgJ2ZpZWxkX2tleScsICd0YWJsZV9uYW1lJyk7DQoJICoNCgkgKiBAcGFyYW0gICBtaXhlZCAgICAgICAgICAgJHZhbHVlICAgIFRoZSB2YWx1ZSB0byBtb2RlbA0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICAgICAgICAkZmllbGQgICAgVGhlIGZpZWxkIGtleQ0KCSAqIEBwYXJhbSAgIHN0cmluZ3xudWxsICAgICAkdGFibGUgICAgVGhlIHRhYmxlDQoJICoNCgkgKiBAcmV0dXJuICBtaXhlZA0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB2YWx1ZSgkdmFsdWUsIHN0cmluZyAkZmllbGQsID9zdHJpbmcgJHRhYmxlID0gbnVsbCkNCgl7DQoJCS8vIHNldCB0aGUgdGFibGUgbmFtZQ0KCQlpZiAoZW1wdHkoJHRhYmxlKSkNCgkJew0KCQkJJHRhYmxlID0gJHRoaXMtPmdldFRhYmxlKCk7DQoJCX0NCg0KCQkvLyBjaGVjayBpZiB0aGlzIGlzIGEgdmFsaWQgdGFibGUNCgkJaWYgKCgkc3RvcmUgPSAkdGhpcy0+dGFibGUtPmdldCgkdGFibGUsICRmaWVsZCwgJ3N0b3JlJykpICE9PSBudWxsKQ0KCQl7DQoJCQkvLyBvcGVuIHRoZSB2YWx1ZSBiYXNlZCBvbiB0aGUgc3RvcmUgbWV0aG9kDQoJCQlzd2l0Y2goJHN0b3JlKQ0KCQkJew0KCQkJCWNhc2UgJ2Jhc2U2NCc6DQoJCQkJCSR2YWx1ZSA9IGJhc2U2NF9lbmNvZGUoKHN0cmluZykgJHZhbHVlKTsNCgkJCQlicmVhazsNCgkJCQljYXNlICdqc29uJzoNCgkJCQkJJHZhbHVlID0ganNvbl9lbmNvZGUoJHZhbHVlLCAgSlNPTl9GT1JDRV9PQkpFQ1QpOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoNCgkJcmV0dXJuICR2YWx1ZTsNCgl9DQoNCgkvKioNCgkgKiBWYWxpZGF0ZSBiZWZvcmUgdGhlIHZhbHVlIGlzIG1vZGVsbGVkDQoJICoNCgkgKiBAcGFyYW0gICBtaXhlZCAgICAgICAgICR2YWx1ZSAgIFRoZSBmaWVsZCB2YWx1ZQ0KCSAqIEBwYXJhbSAgIHN0cmluZ3xudWxsICAgJGZpZWxkICAgICBUaGUgZmllbGQga2V5DQoJICogQHBhcmFtICAgc3RyaW5nfG51bGwgICAkdGFibGUgICBUaGUgdGFibGUNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKiBAc2luY2UgMy4yLjANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gdmFsaWRhdGVCZWZvcmUoJiR2YWx1ZSwgP3N0cmluZyAkZmllbGQgPSBudWxsLCA/c3RyaW5nICR0YWJsZSA9IG51bGwpOiBib29sDQoJew0KCQkvLyBjaGVjayB2YWx1ZXMNCgkJaWYgKFN0cmluZ0hlbHBlcjo6Y2hlY2soJHZhbHVlKSB8fCBBcnJheUhlbHBlcjo6Y2hlY2soJHZhbHVlLCB0cnVlKSAgfHwgT2JqZWN0SGVscGVyOjpjaGVjaygkdmFsdWUpIHx8IGlzX251bWVyaWMoJHZhbHVlKSkNCgkJew0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCgkJLy8gY2hlY2sgaWYgd2UgYWxsb3cgZW1wdHkNCgkJZWxzZWlmICgkdGhpcy0+Z2V0QWxsb3dFbXB0eSgpICYmIGVtcHR5KCR2YWx1ZSkpDQoJCXsNCgkJCXJldHVybiB0cnVlOw0KCQl9DQoJCS8vIHJlbW92ZSBlbXB0eSB2YWx1ZXMNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIFZhbGlkYXRlIGFmdGVyIHRoZSB2YWx1ZSBpcyBtb2RlbGxlZA0KCSAqDQoJICogQHBhcmFtICAgbWl4ZWQgICAgICAgICAkdmFsdWUgICBUaGUgZmllbGQgdmFsdWUNCgkgKiBAcGFyYW0gICBzdHJpbmd8bnVsbCAgICRmaWVsZCAgICAgVGhlIGZpZWxkIGtleQ0KCSAqIEBwYXJhbSAgIHN0cmluZ3xudWxsICAgJHRhYmxlICAgVGhlIHRhYmxlDQoJICoNCgkgKiBAcmV0dXJuICBib29sDQoJICogQHNpbmNlIDMuMi4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHZhbGlkYXRlQWZ0ZXIoJiR2YWx1ZSwgP3N0cmluZyAkZmllbGQgPSBudWxsLCA/c3RyaW5nICR0YWJsZSA9IG51bGwpOiBib29sDQoJew0KCQkvLyBvbmx5IHN0cmluZ3Mgb3IgbnVtYmVycyBhbGxvd2VkDQoJCWlmIChTdHJpbmdIZWxwZXI6OmNoZWNrKCR2YWx1ZSkgfHwgaXNfbnVtZXJpYygkdmFsdWUpKQ0KCQl7DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCQkvLyBjaGVjayBpZiB3ZSBhbGxvdyBlbXB0eQ0KCQllbHNlaWYgKCR0aGlzLT5nZXRBbGxvd0VtcHR5KCkgJiYgZW1wdHkoJHZhbHVlKSkNCgkJew0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCgkJLy8gcmVtb3ZlIGVtcHR5IHZhbHVlcw0KCQlyZXR1cm4gZmFsc2U7DQoJfQ==', '{}', '{}', '', 1, '2023-04-01 02:49:38', 32, 0, 1),
(383, '7179fde6-1e51-4b51-8545-7ca18f74a0f4', 'VDM.Interfaces.Database.UpdateInterface', 'UpdateInterface', 'interface', 'Database Update Interface\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '{\"0\":\"ac77cee7-7018-4496-a453-9757623e3849\",\"1\":\"78931d43-9fb9-4cc1-a2ca-b3e189ef842e\"}', '', '', '[[[NamespacePrefix]]]\\Joomla\\Interfaces.Database.UpdateInterface', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIFVwZGF0ZSByb3dzIGluIHRoZSBkYXRhYmFzZSAod2l0aCByZW1hcHBpbmcgYW5kIGZpbHRlcmluZyBjb2x1bW5zIG9wdGlvbikNCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICRkYXRhICAgICAgRGF0YXNldCB0byB1cGRhdGUgaW4gZGF0YWJhc2UgW2FycmF5IG9mIGFycmF5cyAoa2V5ID0+IHZhbHVlKV0NCgkgKiBAcGFyYW0gICBzdHJpbmcgICAka2V5ICAgICAgIERhdGFzZXQga2V5IGNvbHVtbiB0byB1c2UgaW4gdXBkYXRpbmcgdGhlIHZhbHVlcyBpbiB0aGUgRGF0YWJhc2UNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkdGFibGUgICAgIFRoZSB0YWJsZSB3aGVyZSB0aGUgZGF0YSBpcyBiZWluZyB1cGRhdGVkDQoJICogQHBhcmFtICAgYXJyYXkgICAgJGNvbHVtbnMgICBEYXRhIGNvbHVtbnMgZm9yIHJlbWFwcGluZyBhbmQgZmlsdGVyaW5nDQoJICoNCgkgKiBAcmV0dXJuICBib29sDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIHJvd3MoYXJyYXkgJGRhdGEsIHN0cmluZyAka2V5LCBzdHJpbmcgJHRhYmxlLCBhcnJheSAkY29sdW1ucyA9IFtdKTogYm9vbDsNCg0KCS8qKg0KCSAqIFVwZGF0ZSBpdGVtcyBpbiB0aGUgZGF0YWJhc2UgKHdpdGggcmVtYXBwaW5nIGFuZCBmaWx0ZXJpbmcgY29sdW1ucyBvcHRpb24pDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkZGF0YSAgICAgIERhdGEgdG8gdXBkYXRlZCBpbiBkYXRhYmFzZSAoYXJyYXkgb2Ygb2JqZWN0cykNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAka2V5ICAgICAgIERhdGFzZXQga2V5IGNvbHVtbiB0byB1c2UgaW4gdXBkYXRpbmcgdGhlIHZhbHVlcyBpbiB0aGUgRGF0YWJhc2UNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkdGFibGUgICAgIFRoZSB0YWJsZSB3aGVyZSB0aGUgZGF0YSBpcyBiZWluZyB1cGRhdGUNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkY29sdW1ucyAgIERhdGEgY29sdW1ucyBmb3IgcmVtYXBwaW5nIGFuZCBmaWx0ZXJpbmcNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gaXRlbXMoYXJyYXkgJGRhdGEsIHN0cmluZyAka2V5LCBzdHJpbmcgJHRhYmxlLCBhcnJheSAkY29sdW1ucyA9IFtdKTogYm9vbDsNCg0KCS8qKg0KCSAqIFVwZGF0ZSByb3cgaW4gdGhlIGRhdGFiYXNlDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkZGF0YSAgICAgIERhdGFzZXQgdG8gdXBkYXRlIGluIGRhdGFiYXNlIChrZXkgPT4gdmFsdWUpDQoJICogQHBhcmFtICAgc3RyaW5nICAgJGtleSAgICAgICBEYXRhc2V0IGtleSBjb2x1bW4gdG8gdXNlIGluIHVwZGF0aW5nIHRoZSB2YWx1ZXMgaW4gdGhlIERhdGFiYXNlDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHRhYmxlICAgICBUaGUgdGFibGUgd2hlcmUgdGhlIGRhdGEgaXMgYmVpbmcgdXBkYXRlZA0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqIEBzaW5jZSAgIDMuMi4wDQoJICoqLw0KCXB1YmxpYyBmdW5jdGlvbiByb3coYXJyYXkgJGRhdGEsIHN0cmluZyAka2V5LCBzdHJpbmcgJHRhYmxlKTogYm9vbDsNCg0KCS8qKg0KCSAqIFVwZGF0ZSBpdGVtIGluIHRoZSBkYXRhYmFzZQ0KCSAqDQoJICogQHBhcmFtICAgb2JqZWN0ICAgJGRhdGEgICAgICBEYXRhc2V0IHRvIHVwZGF0ZSBpbiBkYXRhYmFzZSAoa2V5ID0+IHZhbHVlKQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRrZXkgICAgICAgRGF0YXNldCBrZXkgY29sdW1uIHRvIHVzZSBpbiB1cGRhdGluZyB0aGUgdmFsdWVzIGluIHRoZSBEYXRhYmFzZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgVGhlIHRhYmxlIHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIHVwZGF0ZWQNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gaXRlbShvYmplY3QgJGRhdGEsIHN0cmluZyAka2V5LCBzdHJpbmcgJHRhYmxlKTogYm9vbDsNCg0KCS8qKg0KCSAqIFVwZGF0ZSBhIHNpbmdsZSBjb2x1bW4gdmFsdWUgZm9yIGFsbCByb3dzIGluIHRoZSB0YWJsZQ0KCSAqDQoJICogQHBhcmFtICAgbWl4ZWQgICAkdmFsdWUgICBUaGUgdmFsdWUgdG8gYXNzaWduIHRvIHRoZSBjb2x1bW4NCgkgKiBAcGFyYW0gICBzdHJpbmcgICRrZXkgICAgIERhdGFzZXQga2V5IGNvbHVtbiB0byB1c2UgaW4gdXBkYXRpbmcgdGhlIHZhbHVlcyBpbiB0aGUgRGF0YWJhc2UNCgkgKiBAcGFyYW0gICBzdHJpbmcgICR0YWJsZSAgIFRoZSB0YWJsZSB3aGVyZSB0aGUgdXBkYXRlIHNob3VsZCBiZSBhcHBsaWVkDQoJICoNCgkgKiBAcmV0dXJuICBib29sICBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUNCgkgKiBAc2luY2UgICA1LjEuMQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBjb2x1bW4obWl4ZWQgJHZhbHVlLCBzdHJpbmcgJGtleSwgc3RyaW5nICR0YWJsZSk6IGJvb2w7', '{}', '{}', '', 1, '2023-04-01 19:54:56', 18, 0, 1),
(384, 'cce56585-58b0-4f72-a92c-e2635ea52d83', 'VDM.Database.Update', 'Update', 'final class', 'Database Update Class\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 'd9839333-a8f1-4a36-9256-5df4d349b3f6', '', '', '', '{\"0\":\"7179fde6-1e51-4b51-8545-7ca18f74a0f4\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Database.Update', 1, '{}', '{}', 'dXNlIEpvb21sYVxDTVNcRGF0ZVxEYXRlOw==', '{\"use_selection0\":{\"use\":\"b8176bdf-5615-4d91-8dfa-990d42f44127\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIERlZmF1bHQgU3dpdGNoDQoJICoNCgkgKiBAc2luY2UgNS4xLjENCgkgKi8NCgl1c2UgRGVmYXVsdFRyYWl0Ow0KDQoJLyoqDQoJICogVXBkYXRlIHJvd3MgaW4gdGhlIGRhdGFiYXNlICh3aXRoIHJlbWFwcGluZyBhbmQgZmlsdGVyaW5nIGNvbHVtbnMgb3B0aW9uKQ0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAgJGRhdGEgICAgICBEYXRhc2V0IHRvIHVwZGF0ZSBpbiBkYXRhYmFzZSBbYXJyYXkgb2YgYXJyYXlzIChrZXkgPT4gdmFsdWUpXQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRrZXkgICAgICAgRGF0YXNldCBrZXkgY29sdW1uIHRvIHVzZSBpbiB1cGRhdGluZyB0aGUgdmFsdWVzIGluIHRoZSBEYXRhYmFzZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgVGhlIHRhYmxlIHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIHVwZGF0ZWQNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkY29sdW1ucyAgIERhdGEgY29sdW1ucyBmb3IgcmVtYXBwaW5nIGFuZCBmaWx0ZXJpbmcNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gcm93cyhhcnJheSAkZGF0YSwgc3RyaW5nICRrZXksIHN0cmluZyAkdGFibGUsIGFycmF5ICRjb2x1bW5zID0gW10pOiBib29sDQoJew0KCQkvLyBzZXQgdGhlIHVwZGF0ZSBjb2x1bW5zDQoJCWlmICgkZGF0YSA9PT0gW10gfHwgc3RybGVuKCRrZXkpID09IDApDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCS8vIHNldCB0aGUgdXBkYXRlIHZhbHVlcw0KCQlmb3JlYWNoICgkZGF0YSBhcyAkdmFsdWVzKQ0KCQl7DQoJCQlpZiAoJGNvbHVtbnMgIT09IFtdKQ0KCQkJew0KCQkJCS8vIGxvYWQgb25seSB3aGF0IGlzIHBhcnQgb2YgdGhlIGNvbHVtbnMgc2V0DQoJCQkJJHJvdyA9IFtdOw0KCQkJCWZvcmVhY2ggKCRjb2x1bW5zIGFzICRjb2x1bW4gPT4gJGtleV8pDQoJCQkJew0KCQkJCQlpZiAoaXNzZXQoJHZhbHVlc1ska2V5X10pKQ0KCQkJCQl7DQoJCQkJCQkkcm93WyRjb2x1bW5dID0gJHZhbHVlc1ska2V5X107DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQkvLyB1cGRhdGUgdGhlIHJvdw0KCQkJCSR0aGlzLT5yb3coJHJvdywgJGtleSwgJHRhYmxlKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkvLyB1cGRhdGUgdGhlIHJvdw0KCQkJCSR0aGlzLT5yb3coKGFycmF5KSAkdmFsdWVzLCAka2V5LCAkdGFibGUpOw0KCQkJfQ0KCQl9DQoNCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQoJLyoqDQoJICogVXBkYXRlIGl0ZW1zIGluIHRoZSBkYXRhYmFzZSAod2l0aCByZW1hcHBpbmcgYW5kIGZpbHRlcmluZyBjb2x1bW5zIG9wdGlvbikNCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICRkYXRhICAgICAgRGF0YSB0byB1cGRhdGVkIGluIGRhdGFiYXNlIChhcnJheSBvZiBvYmplY3RzKQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRrZXkgICAgICAgRGF0YXNldCBrZXkgY29sdW1uIHRvIHVzZSBpbiB1cGRhdGluZyB0aGUgdmFsdWVzIGluIHRoZSBEYXRhYmFzZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgVGhlIHRhYmxlIHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIHVwZGF0ZQ0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICRjb2x1bW5zICAgRGF0YSBjb2x1bW5zIGZvciByZW1hcHBpbmcgYW5kIGZpbHRlcmluZw0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqIEBzaW5jZSAgIDMuMi4wDQoJICoqLw0KCXB1YmxpYyBmdW5jdGlvbiBpdGVtcyhhcnJheSAkZGF0YSwgc3RyaW5nICRrZXksIHN0cmluZyAkdGFibGUsIGFycmF5ICRjb2x1bW5zID0gW10pOiBib29sDQoJew0KCQkvLyBzZXQgdGhlIHVwZGF0ZSBjb2x1bW5zDQoJCWlmICgkZGF0YSA9PT0gW10gfHwgc3RybGVuKCRrZXkpID09IDApDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCS8vIHNldCB0aGUgdXBkYXRlIHZhbHVlcw0KCQlmb3JlYWNoICgkZGF0YSBhcyAkbnIgPT4gJHZhbHVlcykNCgkJew0KCQkJaWYgKCRjb2x1bW5zICE9PSBbXSkNCgkJCXsNCgkJCQkvLyBsb2FkIG9ubHkgd2hhdCBpcyBwYXJ0IG9mIHRoZSBjb2x1bW5zIHNldA0KCQkJCSRyb3cgPSBbXTsNCgkJCQlmb3JlYWNoICgkY29sdW1ucyBhcyAkY29sdW1uID0+ICRrZXlfKQ0KCQkJCXsNCgkJCQkJaWYgKGlzc2V0KCR2YWx1ZXMtPnska2V5X30pKQ0KCQkJCQl7DQoJCQkJCQkkcm93WyRjb2x1bW5dID0gJHZhbHVlcy0+eyRrZXlffTsNCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCS8vIHVwZGF0ZSB0aGUgcm93DQoJCQkJJHRoaXMtPnJvdygkcm93LCAka2V5LCAkdGFibGUpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIHVwZGF0ZSB0aGUgcm93DQoJCQkJJHRoaXMtPnJvdygoYXJyYXkpICR2YWx1ZXMsICRrZXksICR0YWJsZSk7DQoJCQl9DQoJCX0NCg0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCgkvKioNCgkgKiBVcGRhdGUgcm93IGluIHRoZSBkYXRhYmFzZQ0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAgJGRhdGEgICAgICBEYXRhc2V0IHRvIHVwZGF0ZSBpbiBkYXRhYmFzZSAoa2V5ID0+IHZhbHVlKQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRrZXkgICAgICAgRGF0YXNldCBrZXkgY29sdW1uIHRvIHVzZSBpbiB1cGRhdGluZyB0aGUgdmFsdWVzIGluIHRoZSBEYXRhYmFzZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgVGhlIHRhYmxlIHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIHVwZGF0ZWQNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gcm93KGFycmF5ICRkYXRhLCBzdHJpbmcgJGtleSwgc3RyaW5nICR0YWJsZSk6IGJvb2wNCgl7DQoJCS8vIHNldCB0aGUgdXBkYXRlIGNvbHVtbnMNCgkJaWYgKCRkYXRhID09PSBbXSB8fCBzdHJsZW4oJGtleSkgPT0gMCkNCgkJew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCgkJLy8gc2V0IGpvb21sYSBkZWZhdWx0IGNvbHVtbnMNCgkJJGFkZF9tb2RpZmllLine truncated
(384, 'cce56585-58b0-4f72-a92c-e2635ea52d83', 'VDM.Database.Update', 'Update', 'final class', 'Database Update Class\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 'd9839333-a8f1-4a36-9256-5df4d349b3f6', '', '', '', '{\"0\":\"7179fde6-1e51-4b51-8545-7ca18f74a0f4\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Database.Update', 1, '{}', '{}', 'dXNlIEpvb21sYVxDTVNcRGF0ZVxEYXRlOw==', '{\"use_selection0\":{\"use\":\"b8176bdf-5615-4d91-8dfa-990d42f44127\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIERlZmF1bHQgU3dpdGNoDQoJICoNCgkgKiBAc2luY2UgNS4xLjENCgkgKi8NCgl1c2UgRGVmYXVsdFRyYWl0Ow0KDQoJLyoqDQoJICogVXBkYXRlIHJvd3MgaW4gdGhlIGRhdGFiYXNlICh3aXRoIHJlbWFwcGluZyBhbmQgZmlsdGVyaW5nIGNvbHVtbnMgb3B0aW9uKQ0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAgJGRhdGEgICAgICBEYXRhc2V0IHRvIHVwZGF0ZSBpbiBkYXRhYmFzZSBbYXJyYXkgb2YgYXJyYXlzIChrZXkgPT4gdmFsdWUpXQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRrZXkgICAgICAgRGF0YXNldCBrZXkgY29sdW1uIHRvIHVzZSBpbiB1cGRhdGluZyB0aGUgdmFsdWVzIGluIHRoZSBEYXRhYmFzZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgVGhlIHRhYmxlIHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIHVwZGF0ZWQNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkY29sdW1ucyAgIERhdGEgY29sdW1ucyBmb3IgcmVtYXBwaW5nIGFuZCBmaWx0ZXJpbmcNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gcm93cyhhcnJheSAkZGF0YSwgc3RyaW5nICRrZXksIHN0cmluZyAkdGFibGUsIGFycmF5ICRjb2x1bW5zID0gW10pOiBib29sDQoJew0KCQkvLyBzZXQgdGhlIHVwZGF0ZSBjb2x1bW5zDQoJCWlmICgkZGF0YSA9PT0gW10gfHwgc3RybGVuKCRrZXkpID09IDApDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCS8vIHNldCB0aGUgdXBkYXRlIHZhbHVlcw0KCQlmb3JlYWNoICgkZGF0YSBhcyAkdmFsdWVzKQ0KCQl7DQoJCQlpZiAoJGNvbHVtbnMgIT09IFtdKQ0KCQkJew0KCQkJCS8vIGxvYWQgb25seSB3aGF0IGlzIHBhcnQgb2YgdGhlIGNvbHVtbnMgc2V0DQoJCQkJJHJvdyA9IFtdOw0KCQkJCWZvcmVhY2ggKCRjb2x1bW5zIGFzICRjb2x1bW4gPT4gJGtleV8pDQoJCQkJew0KCQkJCQlpZiAoaXNzZXQoJHZhbHVlc1ska2V5X10pKQ0KCQkJCQl7DQoJCQkJCQkkcm93WyRjb2x1bW5dID0gJHZhbHVlc1ska2V5X107DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQkvLyB1cGRhdGUgdGhlIHJvdw0KCQkJCSR0aGlzLT5yb3coJHJvdywgJGtleSwgJHRhYmxlKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkvLyB1cGRhdGUgdGhlIHJvdw0KCQkJCSR0aGlzLT5yb3coKGFycmF5KSAkdmFsdWVzLCAka2V5LCAkdGFibGUpOw0KCQkJfQ0KCQl9DQoNCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQoJLyoqDQoJICogVXBkYXRlIGl0ZW1zIGluIHRoZSBkYXRhYmFzZSAod2l0aCByZW1hcHBpbmcgYW5kIGZpbHRlcmluZyBjb2x1bW5zIG9wdGlvbikNCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICRkYXRhICAgICAgRGF0YSB0byB1cGRhdGVkIGluIGRhdGFiYXNlIChhcnJheSBvZiBvYmplY3RzKQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRrZXkgICAgICAgRGF0YXNldCBrZXkgY29sdW1uIHRvIHVzZSBpbiB1cGRhdGluZyB0aGUgdmFsdWVzIGluIHRoZSBEYXRhYmFzZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgVGhlIHRhYmxlIHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIHVwZGF0ZQ0KCSAqIEBwYXJhbSAgIGFycmF5ICAgICRjb2x1bW5zICAgRGF0YSBjb2x1bW5zIGZvciByZW1hcHBpbmcgYW5kIGZpbHRlcmluZw0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqIEBzaW5jZSAgIDMuMi4wDQoJICoqLw0KCXB1YmxpYyBmdW5jdGlvbiBpdGVtcyhhcnJheSAkZGF0YSwgc3RyaW5nICRrZXksIHN0cmluZyAkdGFibGUsIGFycmF5ICRjb2x1bW5zID0gW10pOiBib29sDQoJew0KCQkvLyBzZXQgdGhlIHVwZGF0ZSBjb2x1bW5zDQoJCWlmICgkZGF0YSA9PT0gW10gfHwgc3RybGVuKCRrZXkpID09IDApDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCS8vIHNldCB0aGUgdXBkYXRlIHZhbHVlcw0KCQlmb3JlYWNoICgkZGF0YSBhcyAkbnIgPT4gJHZhbHVlcykNCgkJew0KCQkJaWYgKCRjb2x1bW5zICE9PSBbXSkNCgkJCXsNCgkJCQkvLyBsb2FkIG9ubHkgd2hhdCBpcyBwYXJ0IG9mIHRoZSBjb2x1bW5zIHNldA0KCQkJCSRyb3cgPSBbXTsNCgkJCQlmb3JlYWNoICgkY29sdW1ucyBhcyAkY29sdW1uID0+ICRrZXlfKQ0KCQkJCXsNCgkJCQkJaWYgKGlzc2V0KCR2YWx1ZXMtPnska2V5X30pKQ0KCQkJCQl7DQoJCQkJCQkkcm93WyRjb2x1bW5dID0gJHZhbHVlcy0+eyRrZXlffTsNCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCS8vIHVwZGF0ZSB0aGUgcm93DQoJCQkJJHRoaXMtPnJvdygkcm93LCAka2V5LCAkdGFibGUpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIHVwZGF0ZSB0aGUgcm93DQoJCQkJJHRoaXMtPnJvdygoYXJyYXkpICR2YWx1ZXMsICRrZXksICR0YWJsZSk7DQoJCQl9DQoJCX0NCg0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCgkvKioNCgkgKiBVcGRhdGUgcm93IGluIHRoZSBkYXRhYmFzZQ0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAgJGRhdGEgICAgICBEYXRhc2V0IHRvIHVwZGF0ZSBpbiBkYXRhYmFzZSAoa2V5ID0+IHZhbHVlKQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRrZXkgICAgICAgRGF0YXNldCBrZXkgY29sdW1uIHRvIHVzZSBpbiB1cGRhdGluZyB0aGUgdmFsdWVzIGluIHRoZSBEYXRhYmFzZQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgVGhlIHRhYmxlIHdoZXJlIHRoZSBkYXRhIGlzIGJlaW5nIHVwZGF0ZWQNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKiBAc2luY2UgICAzLjIuMA0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gcm93KGFycmF5ICRkYXRhLCBzdHJpbmcgJGtleSwgc3RyaW5nICR0YWJsZSk6IGJvb2wNCgl7DQoJCS8vIHNldCB0aGUgdXBkYXRlIGNvbHVtbnMNCgkJaWYgKCRkYXRhID09PSBbXSB8fCBzdHJsZW4oJGtleSkgPT0gMCkNCgkJew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCgkJLy8gc2V0IGpvb21sYSBkZWZhdWx0IGNvbHVtbnMNCgkJJGFkZF9tb2RpZmllLine truncated
(435, 'e0f6ddbe-2a35-4537-942c-faff2ebd04f6', 'VDM.Abstraction.BaseTable', 'BaseTable', 'abstract class', 'Base Table\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '{\"0\":\"2da6d6c4-eb29-4d69-8bc2-36d96e916adf\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Abstraction.BaseTable', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIEFsbCBhcmVhcy92aWV3cy90YWJsZXMgd2l0aCB0aGVpciBmaWVsZCBkZXRhaWxzDQoJICoNCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqKi8NCglwcm90ZWN0ZWQgYXJyYXkgJHRhYmxlczsNCg0KCS8qKg0KCSAqIEFsbCBkZWZhdWx0IGZpZWxkcw0KCSAqDQoJICogQHZhciAgICAgYXJyYXkNCgkgKiBAc2luY2UgMy4yLjENCgkgKiovDQoJcHJvdGVjdGVkIGFycmF5ICRkZWZhdWx0cyA9IFsNCgkJJ2lkJyA9PiBbDQoJCQknb3JkZXInID0+IC0xLA0KCQkJJ25hbWUnID0+ICdpZCcsDQoJCQknbGFiZWwnID0+ICdJRCcsDQoJCQkndHlwZScgPT4gJ3RleHQnLA0KCQkJJ3RpdGxlJyA9PiBmYWxzZSwNCgkJCSdsaXN0JyA9PiBOVUxMLA0KCQkJJ3N0b3JlJyA9PiBOVUxMLA0KCQkJJ3RhYl9uYW1lJyA9PiBOVUxMLA0KCQkJJ2RiJyA9PiBbDQoJCQkJJ3R5cGUnID0+ICdJTlQoMTEpJywNCgkJCQknZGVmYXVsdCcgPT4gJ0VNUFRZJywNCgkJCQknYXV0b19pbmNyZW1lbnQnID0+IHRydWUsDQoJCQkJJ3ByaW1hcnlfa2V5JyA9PiB0cnVlLA0KCQkJCSdudWxsX3N3aXRjaCcgPT4gJ05PVCBOVUxMJw0KCQkJXQ0KCQldLA0KCQknYXNzZXRfaWQnID0+IFsNCgkJCSduYW1lJyA9PiAnYXNzZXRfaWQnLA0KCQkJJ2xhYmVsJyA9PiBOVUxMLA0KCQkJJ3R5cGUnID0+IE5VTEwsDQoJCQkndGl0bGUnID0+IGZhbHNlLA0KCQkJJ2xpc3QnID0+IE5VTEwsDQoJCQknc3RvcmUnID0+IE5VTEwsDQoJCQkndGFiX25hbWUnID0+IE5VTEwsDQoJCQknZGInID0+IFsNCgkJCQkndHlwZScgPT4gJ0lOVCgxMCkgdW5zaWduZWQnLA0KCQkJCSdkZWZhdWx0JyA9PiAnMCcsDQoJCQkJJ251bGxfc3dpdGNoJyA9PiAnTlVMTCcsDQoJCQkJJ2NvbW1lbnQnID0+ICdGSyB0byB0aGUgI19fYXNzZXRzIHRhYmxlLicNCgkJCV0NCgkJXSwNCgkJJ29yZGVyaW5nJyA9PiBbDQoJCQknbmFtZScgPT4gJ29yZGVyaW5nJywNCgkJCSdsYWJlbCcgPT4gJ09yZGVyaW5nJywNCgkJCSd0eXBlJyA9PiAnbnVtYmVyJywNCgkJCSd0aXRsZScgPT4gZmFsc2UsDQoJCQknbGlzdCcgPT4gTlVMTCwNCgkJCSdzdG9yZScgPT4gTlVMTCwNCgkJCSd0YWJfbmFtZScgPT4gTlVMTCwNCgkJCSdkYicgPT4gWw0KCQkJCSd0eXBlJyA9PiAnSU5UKDExKScsDQoJCQkJJ2RlZmF1bHQnID0+ICcwJywNCgkJCQknbnVsbF9zd2l0Y2gnID0+ICdOVUxMJw0KCQkJXQ0KCQldLA0KCQkncHVibGlzaGVkJyA9PiBbDQoJCQknbmFtZScgPT4gJ3B1Ymxpc2hlZCcsDQoJCQknbGFiZWwnID0+ICdTdGF0dXMnLA0KCQkJJ3R5cGUnID0+ICdsaXN0JywNCgkJCSd0aXRsZScgPT4gZmFsc2UsDQoJCQknbGlzdCcgPT4gTlVMTCwNCgkJCSdzdG9yZScgPT4gTlVMTCwNCgkJCSd0YWJfbmFtZScgPT4gTlVMTCwNCgkJCSdkYicgPT4gWw0KCQkJCSd0eXBlJyA9PiAnVElOWUlOVCgzKScsDQoJCQkJJ2RlZmF1bHQnID0+ICcxJywNCgkJCQknbnVsbF9zd2l0Y2gnID0+ICdOVUxMJywNCgkJCQkna2V5JyA9PiB0cnVlLA0KCQkJCSdrZXlfbmFtZScgPT4gJ3N0YXRlJw0KCQkJXQ0KCQldLA0KCQknbW9kaWZpZWRfYnknID0+IFsNCgkJCSduYW1lJyA9PiAnbW9kaWZpZWRfYnknLA0KCQkJJ2xhYmVsJyA9PiAnTW9kaWZpZWQgYnknLA0KCQkJJ3R5cGUnID0+ICd1c2VyJywNCgkJCSd0aXRsZScgPT4gZmFsc2UsDQoJCQknbGlzdCcgPT4gTlVMTCwNCgkJCSdzdG9yZScgPT4gTlVMTCwNCgkJCSd0YWJfbmFtZScgPT4gTlVMTCwNCgkJCSdkYicgPT4gWw0KCQkJCSd0eXBlJyA9PiAnSU5UIHVuc2lnbmVkJywNCgkJCQknbnVsbF9zd2l0Y2gnID0+ICdOVUxMJywNCgkJCQkna2V5JyA9PiB0cnVlLA0KCQkJCSdrZXlfbmFtZScgPT4gJ21vZGlmaWVkYnknDQoJCQldDQoJCV0sDQoJCSdtb2RpZmllZCcgPT4gWw0KCQkJJ25hbWUnID0+ICdtb2RpZmllZCcsDQoJCQknbGFiZWwnID0+ICdNb2RpZmllZCcsDQoJCQkndHlwZScgPT4gJ2NhbGVuZGFyJywNCgkJCSd0aXRsZScgPT4gZmFsc2UsDQoJCQknbGlzdCcgPT4gTlVMTCwNCgkJCSdzdG9yZScgPT4gTlVMTCwNCgkJCSd0YWJfbmFtZScgPT4gTlVMTCwNCgkJCSdkYicgPT4gWw0KCQkJCSd0eXBlJyA9PiAnREFURVRJTUUnLA0KCQkJCSdudWxsX3N3aXRjaCcgPT4gJ05VTEwnDQoJCQldDQoJCV0sDQoJCSdjcmVhdGVkX2J5JyA9PiBbDQoJCQknbmFtZScgPT4gJ2NyZWF0ZWRfYnknLA0KCQkJJ2xhYmVsJyA9PiAnQ3JlYXRlZCBieScsDQoJCQkndHlwZScgPT4gJ3VzZXInLA0KCQkJJ3RpdGxlJyA9PiBmYWxzZSwNCgkJCSdsaXN0JyA9PiBOVUxMLA0KCQkJJ3N0b3JlJyA9PiBOVUxMLA0KCQkJJ3RhYl9uYW1lJyA9PiBOVUxMLA0KCQkJJ2RiJyA9PiBbDQoJCQkJJ3R5cGUnID0+ICdJTlQgdW5zaWduZWQnLA0KCQkJCSdkZWZhdWx0JyA9PiAnMCcsDQoJCQkJJ251bGxfc3dpdGNoJyA9PiAnTlVMTCcsDQoJCQkJJ2tleScgPT4gdHJ1ZSwNCgkJCQkna2V5X25hbWUnID0+ICdjcmVhdGVkYnknDQoJCQldDQoJCV0sDQoJCSdjcmVhdGVkJyA9PiBbDQoJCQknbmFtZScgPT4gJ2NyZWF0ZWQnLA0KCQkJJ2xhYmVsJyA9PiAnQ3JlYXRlZCcsDQoJCQkndHlwZScgPT4gJ2NhbGVuZGFyJywNCgkJCSd0aXRsZScgPT4gZmFsc2UsDQoJCQknbGlzdCcgPT4gTlVMTCwNCgkJCSdzdG9yZScgPT4gTlVMTCwNCgkJCSd0YWJfbmFtZScgPT4gTlVMTCwNCgkJCSdkYicgPT4gWw0KCQkJCSd0eXBlJyA9PiAnREFURVRJTUUnLA0KCQkJCSdkZWZhdWx0JyA9PiAnQ1VSUkVOVF9USU1FU1RBTVAnLA0KCQkJCSdudWxsX3N3aXRjaCcgPT4gJ05VTEwnDQoJCQldDQoJCV0sDQoJCSdjaGVja2VkX291dCcgPT4gWw0KCQkJJ25hbWUnID0+ICdjaGVja2VkX291dCcsDQoJCQknbGFiZWwnID0+IE5VTEwsDQoJCQkndHlwZScgPT4gTlVMTCwNCgkJCSd0aXRsZScgPT4gZmFsc2UsDQoJCQknbGlzdCcgPT4gTlVMTCwNCgkJCSdzdG9yZScgPT4gTlVMTCwNCgkJCSd0YWJfbmFtZScgPT4gTlVMTCwNCgkJCSdkYicgPT4gWw0KCQkJCSd0eXBlJyA9PiAnSU5UIHVuc2lnbmVkJywNCgkJCQknbnVsbF9zd2l0Y2gnID0+ICdOVUxMJywNCgkJCQkna2V5JyA9PiB0cnVlLA0KCQkJCSdrZXlfbmFtZScgPT4gJ2NoZWNrb3V0Jw0KCQkJXQLine truncated
(436, 'ff8d5fdb-2d1f-4178-bd18-a43b8efd1068', 'JCB.Import.Factory', 'Factory', 'abstract class', 'Import Factory\r\n\r\n@since 3.2.2', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', '2e5bf608-de5c-4b00-a20d-47c26aa350d9', '', '', '', '{\"0\":\"caf33c5d-858c-4f9a-894f-ab302ec5445a\"}', '', '[[[NamespacePrefix]]]\\Joomla\\[[[ComponentNamespace]]].Import.Factory', 1, '{}', '{}', 'dXNlIEpvb21sYVxESVxDb250YWluZXI7', '{\"use_selection0\":{\"use\":\"19b2ba92-1655-4384-acfb-979c80de8b6d\",\"as\":\"default\"},\"use_selection1\":{\"use\":\"4815e1c7-a433-443d-a112-d1e03d7df84b\",\"as\":\"default\"},\"use_selection2\":{\"use\":\"2dcedd6c-c95b-4a37-9cac-95d28faedca3\",\"as\":\"default\"},\"use_selection3\":{\"use\":\"a5daf189-3345-4b13-8716-c51f686f545b\",\"as\":\"default\"},\"use_selection4\":{\"use\":\"21754a8b-2323-4a77-8459-378a74c1ec97\",\"as\":\"default\"},\"use_selection5\":{\"use\":\"202ccd9e-dfcf-4cde-a0ce-bde1fd27f088\",\"as\":\"default\"},\"use_selection6\":{\"use\":\"c4a188de-ad78-4a6d-9d5b-01866846d701\",\"as\":\"default\"},\"use_selection7\":{\"use\":\"b5184f80-613e-46c8-b40a-b60de779bb78\",\"as\":\"ItemImport\"}}', 'CS8qKg0KCSAqIEdsb2JhbCBQYWNrYWdlIENvbnRhaW5lcg0KCSAqDQoJICogQHZhciAgIENvbnRhaW5lcnxudWxsDQoJICogQHNpbmNlIDAuMC4wDQoJICoqLw0KCXByb3RlY3RlZCBzdGF0aWMgP0NvbnRhaW5lciAkY29udGFpbmVyID0gbnVsbDsNCg0KCS8qKg0KCSAqIENyZWF0ZSBhIGNvbnRhaW5lciBvYmplY3QNCgkgKg0KCSAqIEByZXR1cm4gIENvbnRhaW5lcg0KCSAqIEBzaW5jZSAzLjIuMg0KCSAqLw0KCXByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlQ29udGFpbmVyKCk6IENvbnRhaW5lcg0KCXsNCgkJcmV0dXJuIChuZXcgQ29udGFpbmVyKCkpDQoJCQktPnJlZ2lzdGVyU2VydmljZVByb3ZpZGVyKG5ldyBUYWJsZSgpKQ0KCQkJLT5yZWdpc3RlclNlcnZpY2VQcm92aWRlcihuZXcgRGF0YWJhc2UoKSkNCgkJCS0+cmVnaXN0ZXJTZXJ2aWNlUHJvdmlkZXIobmV3IE1vZGVsKCkpDQoJCQktPnJlZ2lzdGVyU2VydmljZVByb3ZpZGVyKG5ldyBEYXRhKCkpDQoJCQktPnJlZ2lzdGVyU2VydmljZVByb3ZpZGVyKG5ldyBJbXBvcnQoKSkNCgkJCS0+cmVnaXN0ZXJTZXJ2aWNlUHJvdmlkZXIobmV3IEZpbGUoKSkNCgkJCS0+cmVnaXN0ZXJTZXJ2aWNlUHJvdmlkZXIobmV3IFNwcmVhZHNoZWV0KCkpDQoJCQktPnJlZ2lzdGVyU2VydmljZVByb3ZpZGVyKG5ldyBJdGVtSW1wb3J0KCkpOw0KCX0=', '{}', '{}', '', 1, '2023-06-02 01:14:26', 16, 0, 1),
(462, '9c3aa650-e536-4eea-a2d4-73cc3e184aa9', 'VDM.Interfaces.Database.DeleteInterface', 'DeleteInterface', 'interface', 'Database Delete Interface\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Interfaces.Database.DeleteInterface', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIERlbGV0ZSBhbGwgcm93cyBpbiB0aGUgZGF0YWJhc2UgdGhhdCBtYXRjaCB0aGVzZSBjb25kaXRpb25zDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkY29uZGl0aW9ucyAgICBDb25kaXRpb25zIGJ5IHdoaWNoIHRvIGRlbGV0ZSB0aGUgZGF0YSBpbiBkYXRhYmFzZSBbYXJyYXkgb2YgYXJyYXlzIChrZXkgPT4gdmFsdWUpXQ0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICAgICAgIFRoZSB0YWJsZSB3aGVyZSB0aGUgZGF0YSBpcyBiZWluZyBkZWxldGVkDQoJICoNCgkgKiBAcmV0dXJuICBib29sDQoJICogQHNpbmNlICAgMy4yLjANCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIGl0ZW1zKGFycmF5ICRjb25kaXRpb25zLCBzdHJpbmcgJHRhYmxlKTogYm9vbDsNCg0KCS8qKg0KCSAqIFRydW5jYXRlIGEgdGFibGUNCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICBUaGUgdGFibGUgdGhhdCBzaG91bGQgYmUgdHJ1bmNhdGVkDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICogQHNpbmNlICAgMy4yLjINCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIHRydW5jYXRlKHN0cmluZyAkdGFibGUpOiB2b2lkOw==', '{}', '{}', '', 1, '2023-07-19 04:17:01', 10, 0, 1),
(463, '92291f1f-f248-4ec0-9f2a-3d47c49eeac1', 'VDM.Database.Delete', 'Delete', 'final class', 'Database Delete Class\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', '6cbef8f8-4813-48e3-b05a-65e1aea95171', '', '', '', '{\"0\":\"9c3aa650-e536-4eea-a2d4-73cc3e184aa9\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Database.Delete', 0, '{}', '{}', '', '{\"use_selection0\":{\"use\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIERlbGV0ZSBhbGwgaXRlbXMgaW4gdGhlIGRhdGFiYXNlIHRoYXQgbWF0Y2ggdGhlc2UgY29uZGl0aW9ucw0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAgJGNvbmRpdGlvbnMgICAgQ29uZGl0aW9ucyBieSB3aGljaCB0byBkZWxldGUgdGhlIGRhdGEgaW4gZGF0YWJhc2UgW2FycmF5IG9mIGFycmF5cyAoa2V5ID0+IHZhbHVlKV0NCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkdGFibGUgICAgICAgICBUaGUgdGFibGUgd2hlcmUgdGhlIGRhdGEgaXMgYmVpbmcgZGVsZXRlZA0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqIEBzaW5jZSAgIDMuMi4yDQoJICoqLw0KCXB1YmxpYyBmdW5jdGlvbiBpdGVtcyhhcnJheSAkY29uZGl0aW9ucywgc3RyaW5nICR0YWJsZSk6IGJvb2wNCgl7DQoJCS8vIHNldCB0aGUgdXBkYXRlIGNvbHVtbnMNCgkJaWYgKCRjb25kaXRpb25zID09PSBbXSkNCgkJew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCgkJLy8gZ2V0IGEgcXVlcnkgb2JqZWN0DQoJCSRxdWVyeSA9ICR0aGlzLT5kYi0+Z2V0UXVlcnkodHJ1ZSk7DQoNCgkJLy8gc3RhcnQgdGhlIGNvbmRpdGlvbnMgYnVja2V0DQoJCSRfY29uZGl0aW9ucyA9IFtdOw0KCQlmb3JlYWNoICgkY29uZGl0aW9ucyBhcyAka2V5ID0+ICR2YWx1ZSkNCgkJew0KCQkJaWYgKEFycmF5SGVscGVyOjpjaGVjaygkdmFsdWUpKQ0KCQkJew0KCQkJCWlmIChpc3NldCgkdmFsdWVbJ3ZhbHVlJ10pICYmIGlzc2V0KCR2YWx1ZVsnb3BlcmF0b3InXSkpDQoJCQkJew0KCQkJCQkvLyBjaGVjayBpZiB2YWx1ZSBuZWVkcyB0byBiZSBxdW90ZWQNCgkJCQkJJHF1b3RlID0gJHZhbHVlWydxdW90ZSddID8/IHRydWU7DQoJCQkJCWlmICghJHF1b3RlKQ0KCQkJCQl7DQoJCQkJCQlpZiAoQXJyYXlIZWxwZXI6OmNoZWNrKCR2YWx1ZVsndmFsdWUnXSkpDQoJCQkJCQl7DQoJCQkJCQkJLy8gYWRkIHRoZSB3aGVyZSBieSBhcnJheQ0KCQkJCQkJCSRfY29uZGl0aW9uc1tdID0gJHRoaXMtPmRiLT5xdW90ZU5hbWUoJGtleSkNCgkJCQkJCQkJLiAnICcgLiAkdmFsdWVbJ29wZXJhdG9yJ10NCgkJCQkJCQkJLiAnICcgLiAnICgnIC4NCgkJCQkJCQkJaW1wbG9kZSgnLCcsICR2YWx1ZVsndmFsdWUnXSkNCgkJCQkJCQkJLiAnKSc7DQoJCQkJCQl9DQoJCQkJCQllbHNlDQoJCQkJCQl7DQoJCQkJCQkJLy8gYWRkIHRoZSBjb25kaXRpb25zDQoJCQkJCQkJJF9jb25kaXRpb25zW10gPSAkdGhpcy0+ZGItPnF1b3RlTmFtZSgka2V5KQ0KCQkJCQkJCQkuICcgJyAuICR2YWx1ZVsnb3BlcmF0b3InXQ0KCQkJCQkJCQkuICcgJyAuICR2YWx1ZVsndmFsdWUnXTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCQllbHNlDQoJCQkJCXsNCgkJCQkJCWlmIChBcnJheUhlbHBlcjo6Y2hlY2soJHZhbHVlWyd2YWx1ZSddKSkNCgkJCQkJCXsNCgkJCQkJCQkvLyBhZGQgdGhlIHdoZXJlIGJ5IGFycmF5DQoJCQkJCQkJJF9jb25kaXRpb25zW10gPSAkdGhpcy0+ZGItPnF1b3RlTmFtZSgka2V5KQ0KCQkJCQkJCQkuICcgJyAuICR2YWx1ZVsnb3BlcmF0b3InXQ0KCQkJCQkJCQkuICcgJyAuICcgKCcgLg0KCQkJCQkJCQlpbXBsb2RlKCcsJywgYXJyYXlfbWFwKGZuKCR2YWwpID0+ICR0aGlzLT5xdW90ZSgkdmFsKSwgJHZhbHVlWyd2YWx1ZSddKSkNCgkJCQkJCQkJLiAnKSc7DQoJCQkJCQl9DQoJCQkJCQllbHNlDQoJCQkJCQl7DQoJCQkJCQkJLy8gYWRkIHRoZSBjb25kaXRpb25zDQoJCQkJCQkJJF9jb25kaXRpb25zW10gPSAkdGhpcy0+ZGItPnF1b3RlTmFtZSgka2V5KQ0KCQkJCQkJCQkuICcgJyAuICR2YWx1ZVsnb3BlcmF0b3InXQ0KCQkJCQkJCQkuICcgJyAuICR0aGlzLT5xdW90ZSgkdmFsdWVbJ3ZhbHVlJ10pOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCS8vIHdlIHNob3VsZCB0aHJvdWdoIGFuIGV4Y2VwdGlvbg0KCQkJCQkvLyBmb3Igc2VjdXJpdHkgd2UganVzdCByZXR1cm4gZmFsc2UgZm9yIG5vdw0KCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIGFkZCBkZWZhdWx0IGNvbmRpdGlvbg0KCQkJCSRfY29uZGl0aW9uc1tdID0gJHRoaXMtPmRiLT5xdW90ZU5hbWUoJGtleSkgLiAnID0gJyAuICR0aGlzLT5xdW90ZSgkdmFsdWUpOw0KCQkJfQ0KCQl9DQoNCgkJLy8gc2V0IHRoZSBxdWVyeSB0YXJnZXRzDQoJCSRxdWVyeS0+ZGVsZXRlKCR0aGlzLT5kYi0+cXVvdGVOYW1lKCR0aGlzLT5nZXRUYWJsZSgkdGFibGUpKSk7DQoJCSRxdWVyeS0+d2hlcmUoJF9jb25kaXRpb25zKTsNCg0KCQkkdGhpcy0+ZGItPnNldFF1ZXJ5KCRxdWVyeSk7DQoNCgkJcmV0dXJuICR0aGlzLT5kYi0+ZXhlY3V0ZSgpOw0KCX0NCg0KCS8qKg0KCSAqIFRydW5jYXRlIGEgdGFibGUNCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICR0YWJsZSAgICBUaGUgdGFibGUgdGhhdCBzaG91bGQgYmUgdHJ1bmNhdGVkDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICogQHNpbmNlICAgMy4yLjINCgkgKiovDQoJcHVibGljIGZ1bmN0aW9uIHRydW5jYXRlKHN0cmluZyAkdGFibGUpOiB2b2lkDQoJew0KCQkkdGhpcy0+ZGItPnRydW5jYXRlVGFibGUoJHRoaXMtPmdldFRhYmxlKCR0YWJsZSkpOw0KCX0=', '{}', '{}', '', 1, '2023-07-19 04:27:21', 11, 0, 1),
(463, '92291f1f-f248-4ec0-9f2a-3d47c49eeac1', 'VDM.Database.Delete', 'Delete', 'final class', 'Database Delete Class\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', '6cbef8f8-4813-48e3-b05a-65e1aea95171', '', '', '', '{\"0\":\"9c3aa650-e536-4eea-a2d4-73cc3e184aa9\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Database.Delete', 0, '{}', '{}', '', '{\"use_selection0\":{\"use\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIERlbGV0ZSBhbGwgaXRlbXMgaW4gdGhlIGRhdGFiYXNlIHRoYXQgbWF0Y2ggdGhlc2UgY29uZGl0aW9ucw0KCSAqDQoJICogQHBhcmFtICAgYXJyYXkgICAgJGNvbmRpdGlvbnMgICAgQ29uZGl0aW9ucyBieSB3aGljaCB0byBkZWxldGUgdGhlIGRhdGEgaW4gZGF0YWJhc2UgW2FycmF5IG9mIGFycmF5cyAoa2V5ID0+IHZhbHVlKV0NCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkdGFibGUgICAgICAgICBUaGUgdGFibGUgd2hlcmUgdGhlIGRhdGEgaXMgYmVpbmcgZGVsZXRlZA0KCSAqDQoJICogQHJldHVybiAgYm9vbA0KCSAqIEBzaW5jZSAgIDMuMi4yDQoJICoqLw0KCXB1YmxpYyBmdW5jdGlvbiBpdGVtcyhhcnJheSAkY29uZGl0aW9ucywgc3RyaW5nICR0YWJsZSk6IGJvb2wNCgl7DQoJCS8vIHNldCB0aGUgdXBkYXRlIGNvbHVtbnMNCgkJaWYgKCRjb25kaXRpb25zID09PSBbXSkNCgkJew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCgkJLy8gZ2V0IGEgcXVlcnkgb2JqZWN0DQoJCSRxdWVyeSA9ICR0aGlzLT5kYi0+Y3JlYXRlUXVlcnkoKTsNCg0KCQkvLyBzdGFydCB0aGUgY29uZGl0aW9ucyBidWNrZXQNCgkJJF9jb25kaXRpb25zID0gW107DQoJCWZvcmVhY2ggKCRjb25kaXRpb25zIGFzICRrZXkgPT4gJHZhbHVlKQ0KCQl7DQoJCQlpZiAoQXJyYXlIZWxwZXI6OmNoZWNrKCR2YWx1ZSkpDQoJCQl7DQoJCQkJaWYgKGlzc2V0KCR2YWx1ZVsndmFsdWUnXSkgJiYgaXNzZXQoJHZhbHVlWydvcGVyYXRvciddKSkNCgkJCQl7DQoJCQkJCS8vIGNoZWNrIGlmIHZhbHVlIG5lZWRzIHRvIGJlIHF1b3RlZA0KCQkJCQkkcXVvdGUgPSAkdmFsdWVbJ3F1b3RlJ10gPz8gdHJ1ZTsNCgkJCQkJaWYgKCEkcXVvdGUpDQoJCQkJCXsNCgkJCQkJCWlmIChBcnJheUhlbHBlcjo6Y2hlY2soJHZhbHVlWyd2YWx1ZSddKSkNCgkJCQkJCXsNCgkJCQkJCQkvLyBhZGQgdGhlIHdoZXJlIGJ5IGFycmF5DQoJCQkJCQkJJF9jb25kaXRpb25zW10gPSAkdGhpcy0+ZGItPnF1b3RlTmFtZSgka2V5KQ0KCQkJCQkJCQkuICcgJyAuICR2YWx1ZVsnb3BlcmF0b3InXQ0KCQkJCQkJCQkuICcgJyAuICcgKCcgLg0KCQkJCQkJCQlpbXBsb2RlKCcsJywgJHZhbHVlWyd2YWx1ZSddKQ0KCQkJCQkJCQkuICcpJzsNCgkJCQkJCX0NCgkJCQkJCWVsc2UNCgkJCQkJCXsNCgkJCQkJCQkvLyBhZGQgdGhlIGNvbmRpdGlvbnMNCgkJCQkJCQkkX2NvbmRpdGlvbnNbXSA9ICR0aGlzLT5kYi0+cXVvdGVOYW1lKCRrZXkpDQoJCQkJCQkJCS4gJyAnIC4gJHZhbHVlWydvcGVyYXRvciddDQoJCQkJCQkJCS4gJyAnIC4gJHZhbHVlWyd2YWx1ZSddOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCWVsc2UNCgkJCQkJew0KCQkJCQkJaWYgKEFycmF5SGVscGVyOjpjaGVjaygkdmFsdWVbJ3ZhbHVlJ10pKQ0KCQkJCQkJew0KCQkJCQkJCS8vIGFkZCB0aGUgd2hlcmUgYnkgYXJyYXkNCgkJCQkJCQkkX2NvbmRpdGlvbnNbXSA9ICR0aGlzLT5kYi0+cXVvdGVOYW1lKCRrZXkpDQoJCQkJCQkJCS4gJyAnIC4gJHZhbHVlWydvcGVyYXRvciddDQoJCQkJCQkJCS4gJyAnIC4gJyAoJyAuDQoJCQkJCQkJCWltcGxvZGUoJywnLCBhcnJheV9tYXAoZm4oJHZhbCkgPT4gJHRoaXMtPnF1b3RlKCR2YWwpLCAkdmFsdWVbJ3ZhbHVlJ10pKQ0KCQkJCQkJCQkuICcpJzsNCgkJCQkJCX0NCgkJCQkJCWVsc2UNCgkJCQkJCXsNCgkJCQkJCQkvLyBhZGQgdGhlIGNvbmRpdGlvbnMNCgkJCQkJCQkkX2NvbmRpdGlvbnNbXSA9ICR0aGlzLT5kYi0+cXVvdGVOYW1lKCRrZXkpDQoJCQkJCQkJCS4gJyAnIC4gJHZhbHVlWydvcGVyYXRvciddDQoJCQkJCQkJCS4gJyAnIC4gJHRoaXMtPnF1b3RlKCR2YWx1ZVsndmFsdWUnXSk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJLy8gd2Ugc2hvdWxkIHRocm91Z2ggYW4gZXhjZXB0aW9uDQoJCQkJCS8vIGZvciBzZWN1cml0eSB3ZSBqdXN0IHJldHVybiBmYWxzZSBmb3Igbm93DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJLy8gYWRkIGRlZmF1bHQgY29uZGl0aW9uDQoJCQkJJF9jb25kaXRpb25zW10gPSAkdGhpcy0+ZGItPnF1b3RlTmFtZSgka2V5KSAuICcgPSAnIC4gJHRoaXMtPnF1b3RlKCR2YWx1ZSk7DQoJCQl9DQoJCX0NCg0KCQkvLyBzZXQgdGhlIHF1ZXJ5IHRhcmdldHMNCgkJJHF1ZXJ5LT5kZWxldGUoJHRoaXMtPmRiLT5xdW90ZU5hbWUoJHRoaXMtPmdldFRhYmxlKCR0YWJsZSkpKTsNCgkJJHF1ZXJ5LT53aGVyZSgkX2NvbmRpdGlvbnMpOw0KDQoJCSR0aGlzLT5kYi0+c2V0UXVlcnkoJHF1ZXJ5KTsNCg0KCQlyZXR1cm4gJHRoaXMtPmRiLT5leGVjdXRlKCk7DQoJfQ0KDQoJLyoqDQoJICogVHJ1bmNhdGUgYSB0YWJsZQ0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHRhYmxlICAgIFRoZSB0YWJsZSB0aGF0IHNob3VsZCBiZSB0cnVuY2F0ZWQNCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKiBAc2luY2UgICAzLjIuMg0KCSAqKi8NCglwdWJsaWMgZnVuY3Rpb24gdHJ1bmNhdGUoc3RyaW5nICR0YWJsZSk6IHZvaWQNCgl7DQoJCSR0aGlzLT5kYi0+dHJ1bmNhdGVUYWJsZSgkdGhpcy0+Z2V0VGFibGUoJHRhYmxlKSk7DQoJfQ==', '{}', '{}', '', 1, '2023-07-19 04:27:21', 12, 0, 1),
(485, '43134867-5cb8-4280-9be8-309fd2fd135f', 'VDM.Abstraction.ActiveRegistry', 'ActiveRegistry', 'abstract class', 'Active Storage Registry.\r\n\r\nDon\'t use this beyond 10 dimensional depth for best performance.\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '{\"0\":\"af0eedbe-603b-4671-8e5a-28165d88254b\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Abstraction.ActiveRegistry', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIFRoZSByZWdpc3RyeSBhcnJheS4NCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgMy4yLjANCgkgKiovDQoJcHJvdGVjdGVkIGFycmF5ICRhY3RpdmUgPSBbXTsNCg0KCS8qKg0KCSAqIEJhc2Ugc3dpdGNoIHRvIGFkZCB2YWx1ZXMgYXMgc3RyaW5nIG9yIGFycmF5DQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgMy4yLjANCgkgKiovDQoJcHJvdGVjdGVkIGJvb2wgJGFkZEFzQXJyYXkgPSBmYWxzZTsNCg0KCS8qKg0KCSAqIEJhc2Ugc3dpdGNoIHRvIGtlZXAgYXJyYXkgdmFsdWVzIHVuaXF1ZQ0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlIDMuMi4yDQoJICoqLw0KCXByb3RlY3RlZCBib29sICR1bmlxdWVBcnJheSA9IGZhbHNlOw0KDQoJLyoqDQoJICogQ2hlY2sgaWYgdGhlIHJlZ2lzdHJ5IGhhcyBhbnkgY29udGVudC4NCgkgKg0KCSAqIEByZXR1cm4gYm9vbCAgUmV0dXJucyB0cnVlIGlmIHRoZSBhY3RpdmUgYXJyYXkgaXMgbm90IGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuDQoJICogQHNpbmNlIDMuMi4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGlzQWN0aXZlKCk6IGJvb2wNCgl7DQoJCXJldHVybiAhZW1wdHkoJHRoaXMtPmFjdGl2ZSk7DQoJfQ0KDQoJLyoqDQoJICogR2V0IGFsbCB2YWx1ZSBmcm9tIHRoZSBhY3RpdmUgcmVnaXN0cnkuDQoJICoNCgkgKiBAcmV0dXJuIGFycmF5ICAgVGhlIHZhbHVlcyBvciBlbXB0eSBhcnJheS4NCgkgKiBAc2luY2UgMy4yLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gYWxsQWN0aXZlKCk6IGFycmF5DQoJew0KCQlyZXR1cm4gJHRoaXMtPmFjdGl2ZTsNCgl9DQoNCgkvKioNCgkgKiBTZXRzIGEgdmFsdWUgaW50byB0aGUgcmVnaXN0cnkgdXNpbmcgbXVsdGlwbGUga2V5cy4NCgkgKg0KCSAqIEBwYXJhbSBtaXhlZCAgICR2YWx1ZSAgICAgVGhlIHZhbHVlIHRvIHNldC4NCgkgKiBAcGFyYW0gc3RyaW5nICAuLi4ka2V5cyAgIFRoZSBrZXlzIHRvIGRldGVybWluZSB0aGUgbG9jYXRpb24uDQoJICoNCgkgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgYW55IG9mIHRoZSBrZXlzIGFyZSBub3QgYSBudW1iZXIgb3Igc3RyaW5nLg0KCSAqIEByZXR1cm4gdm9pZA0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBzZXRBY3RpdmUoJHZhbHVlLCBzdHJpbmcgLi4uJGtleXMpOiB2b2lkDQoJew0KCQlpZiAoISR0aGlzLT52YWxpZEFjdGl2ZUtleXMoJGtleXMpKQ0KCQl7DQoJCQl0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiS2V5cyBtdXN0IG9ubHkgYmUgc3RyaW5ncyBvciBudW1iZXJzIHRvIHNldCBhbnkgdmFsdWUuIik7DQoJCX0NCg0KCQkkYXJyYXkgPSAmJHRoaXMtPmFjdGl2ZTsNCg0KCQlmb3JlYWNoICgka2V5cyBhcyAka2V5KQ0KCQl7DQoJCQlpZiAoIWlzc2V0KCRhcnJheVska2V5XSkpDQoJCQl7DQoJCQkJaWYgKCFpc19hcnJheSgkYXJyYXkpKQ0KCQkJCXsNCgkJCQkJJHBhdGggPSAnWycgLiBpbXBsb2RlKCddWycsICRrZXlzKSAuICddJzsNCgkJCQkJdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIkF0dGVtcHRlZCB0byB1c2Uga2V5ICd7JGtleX0nIG9uIGEgbm9uLWFycmF5IHZhbHVlOiB7JGFycmF5fS4gUGF0aDogeyRwYXRofSBWYWx1ZTogeyR2YWx1ZX0iKTsNCgkJCQl9DQoNCgkJCQkkYXJyYXlbJGtleV0gPSBbXTsNCgkJCX0NCgkJCSRhcnJheSA9ICYkYXJyYXlbJGtleV07DQoJCX0NCg0KCQkkYXJyYXkgPSAkdmFsdWU7DQoJfQ0KDQoJLyoqDQoJICogQWRkcyBjb250ZW50IGludG8gdGhlIHJlZ2lzdHJ5LiBJZiBhIGtleSBleGlzdHMsDQoJICogaXQgZWl0aGVyIGFwcGVuZHMgb3IgY29uY2F0ZW5hdGVzIGJhc2VkIG9uIHRoZSB2YWx1ZSdzIHR5cGUuDQoJICoNCgkgKiBAcGFyYW0gbWl4ZWQgICAgICAgJHZhbHVlICAgICBUaGUgdmFsdWUgdG8gc2V0Lg0KCSAqIEBwYXJhbSBib29sfG51bGwgICAkYXNBcnJheSAgIERldGVybWluZXMgaWYgdGhlIG5ldyB2YWx1ZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBhbiBhcnJheS4NCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBpcyAkYWRkQXNBcnJheSA9IGZhbHNlIChpZiBudWxsKSBpbiBiYXNlIGNsYXNzLg0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVycmlkZSBpbiBjaGlsZCBjbGFzcyBhbGxvd2VkIHNldCBjbGFzcyBwcm9wZXJ0eSAkYWRkQXNBcnJheSA9IHRydWUuDQoJICogQHBhcmFtIHN0cmluZyAgICAgIC4uLiRrZXlzICAgVGhlIGtleXMgdG8gZGV0ZXJtaW5lIHRoZSBsb2NhdGlvbi4NCgkgKg0KCSAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiBhbnkgb2YgdGhlIGtleXMgYXJlIG5vdCBhIG51bWJlciBvciBzdHJpbmcuDQoJICogQHJldHVybiB2b2lkDQoJICogQHNpbmNlIDMuMi4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGFkZEFjdGl2ZSgkdmFsdWUsID9ib29sICRhc0FycmF5LCBzdHJpbmcgLi4uJGtleXMpOiB2b2lkDQoJew0KCQlpZiAoISR0aGlzLT52YWxpZEFjdGl2ZUtleXMoJGtleXMpKQ0KCQl7DQoJCQl0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiS2V5cyBtdXN0IG9ubHkgYmUgc3RyaW5ncyBvciBudW1iZXJzIHRvIGFkZCBhbnkgdmFsdWUuIik7DQoJCX0NCg0KCQkvLyBudWxsIGZhbGxiYWNrIHRvIGNsYXNzIHZhbHVlDQoJCWlmICgkYXNBcnJheSA9PT0gbnVsbCkNCgkJew0KCQkJJGFzQXJyYXkgPSAkdGhpcy0+YWRkQXNBcnJheTsNCgkJfQ0KDQoJCSRhcnJheSA9ICYkdGhpcy0+YWN0aXZlOw0KDQoJCWZvcmVhY2ggKCRrZXlzIGFzICRrZXkpDQoJCXsNCgkJCWlmICghaXNzZXQoJGFycmF5WyRrZXldKSkNCgkJCXsNCgkJCQlpZiAoIWlzX2FycmF5KCRhcnJheSkpDQoJCQkJew0KCQkJCQkkcGF0aCA9ICdbJyAuIGltcGxvZGUoJ11bJywgJGtleXMpIC4gJ10nOw0KCQkJCQl0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiQXR0ZW1wLine truncated
(486, 'af0eedbe-603b-4671-8e5a-28165d88254b', 'VDM.Interfaces.Activeregistryinterface', 'Activeregistryinterface', 'interface', 'The Active Registry Interface\r\n\r\n@since 3.2.0', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Interfaces.Activeregistryinterface', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIENoZWNrIGlmIHRoZSByZWdpc3RyeSBoYXMgYW55IGNvbnRlbnQuDQoJICoNCgkgKiBAcmV0dXJuIGJvb2wgIFJldHVybnMgdHJ1ZSBpZiB0aGUgYWN0aXZlIGFycmF5IGlzIG5vdCBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBpc0FjdGl2ZSgpOiBib29sOw0KDQoJLyoqDQoJICogUmV0cmlldmVzIGFsbCB2YWx1ZSBmcm9tIHRoZSByZWdpc3RyeS4NCgkgKg0KCSAqIEByZXR1cm4gYXJyYXkgICBUaGUgdmFsdWVzLg0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBhbGxBY3RpdmUoKTogYXJyYXk7DQoNCgkvKioNCgkgKiBTZXRzIGEgdmFsdWUgaW50byB0aGUgcmVnaXN0cnkgdXNpbmcgbXVsdGlwbGUga2V5cy4NCgkgKg0KCSAqIEBwYXJhbSBtaXhlZCAgICR2YWx1ZSAgICAgVGhlIHZhbHVlIHRvIHNldC4NCgkgKiBAcGFyYW0gc3RyaW5nICAuLi4ka2V5cyAgIFRoZSBrZXlzIHRvIGRldGVybWluZSB0aGUgbG9jYXRpb24uDQoJICoNCgkgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgYW55IG9mIHRoZSBrZXlzIGFyZSBub3QgYSBudW1iZXIgb3Igc3RyaW5nLg0KCSAqIEByZXR1cm4gdm9pZA0KCSAqIEBzaW5jZSAzLjIuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBzZXRBY3RpdmUoJHZhbHVlLCBzdHJpbmcgLi4uJGtleXMpOiB2b2lkOw0KDQoJLyoqDQoJICogQWRkcyBjb250ZW50IGludG8gdGhlIHJlZ2lzdHJ5LiBJZiBhIGtleSBleGlzdHMsDQoJICogaXQgZWl0aGVyIGFwcGVuZHMgb3IgY29uY2F0ZW5hdGVzIGJhc2VkIG9uIHRoZSB2YWx1ZSdzIHR5cGUuDQoJICoNCgkgKiBAcGFyYW0gbWl4ZWQgICAgICAgJHZhbHVlICAgICBUaGUgdmFsdWUgdG8gc2V0Lg0KCSAqIEBwYXJhbSBib29sfG51bGwgICAkYXNBcnJheSAgIERldGVybWluZXMgaWYgdGhlIG5ldyB2YWx1ZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBhbiBhcnJheS4NCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBpcyAkYWRkQXNBcnJheSA9IGZhbHNlIChpZiBudWxsKSBpbiBiYXNlIGNsYXNzLg0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVycmlkZSBpbiBjaGlsZCBjbGFzcyBhbGxvd2VkIHNldCBjbGFzcyBwcm9wZXJ0eSAkYWRkQXNBcnJheSA9IHRydWUuDQoJICogQHBhcmFtIHN0cmluZyAgICAgIC4uLiRrZXlzICAgVGhlIGtleXMgdG8gZGV0ZXJtaW5lIHRoZSBsb2NhdGlvbi4NCgkgKg0KCSAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiBhbnkgb2YgdGhlIGtleXMgYXJlIG5vdCBhIG51bWJlciBvciBzdHJpbmcuDQoJICogQHJldHVybiB2b2lkDQoJICogQHNpbmNlIDMuMi4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGFkZEFjdGl2ZSgkdmFsdWUsID9ib29sICRhc0FycmF5LCBzdHJpbmcgLi4uJGtleXMpOiB2b2lkOw0KDQoJLyoqDQoJICogUmV0cmlldmVzIGEgdmFsdWUgKG9yIHN1Yi1hcnJheSkgZnJvbSB0aGUgcmVnaXN0cnkgdXNpbmcgbXVsdGlwbGUga2V5cy4NCgkgKg0KCSAqIEBwYXJhbSBtaXhlZCAgICRkZWZhdWx0ICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpZiBub3Qgc2V0Lg0KCSAqIEBwYXJhbSBzdHJpbmcgIC4uLiRrZXlzICAgICAgVGhlIGtleXMgdG8gZGV0ZXJtaW5lIHRoZSBsb2NhdGlvbi4NCgkgKg0KCSAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiBhbnkgb2YgdGhlIGtleXMgYXJlIG5vdCBhIG51bWJlciBvciBzdHJpbmcuDQoJICogQHJldHVybiBtaXhlZCBUaGUgdmFsdWUgb3Igc3ViLWFycmF5IGZyb20gdGhlIHN0b3JhZ2UuIE51bGwgaWYgdGhlIGxvY2F0aW9uIGRvZXNuJ3QgZXhpc3QuDQoJICogQHNpbmNlIDMuMi4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdldEFjdGl2ZSgkZGVmYXVsdCwgc3RyaW5nIC4uLiRrZXlzKTsNCg0KCS8qKg0KCSAqIFJlbW92ZXMgYSB2YWx1ZSAob3Igc3ViLWFycmF5KSBmcm9tIHRoZSByZWdpc3RyeSB1c2luZyBtdWx0aXBsZSBrZXlzLg0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAuLi4ka2V5cyBUaGUga2V5cyB0byBkZXRlcm1pbmUgdGhlIGxvY2F0aW9uLg0KCSAqDQoJICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIGFueSBvZiB0aGUga2V5cyBhcmUgbm90IGEgbnVtYmVyIG9yIHN0cmluZy4NCgkgKiBAcmV0dXJuIHZvaWQNCgkgKiBAc2luY2UgMy4yLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlQWN0aXZlKHN0cmluZyAuLi4ka2V5cyk6IHZvaWQ7DQoNCgkvKioNCgkgKiBDaGVja3MgdGhlIGV4aXN0ZW5jZSBvZiBhIHBhcnRpY3VsYXIgbG9jYXRpb24gaW4gdGhlIHJlZ2lzdHJ5IHVzaW5nIG11bHRpcGxlIGtleXMuDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nIC4uLiRrZXlzIFRoZSBrZXlzIHRvIGRldGVybWluZSB0aGUgbG9jYXRpb24uDQoJICoNCgkgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgYW55IG9mIHRoZSBrZXlzIGFyZSBub3QgYSBudW1iZXIgb3Igc3RyaW5nLg0KCSAqIEByZXR1cm4gYm9vbCBUcnVlIGlmIHRoZSBsb2NhdGlvbiBleGlzdHMsIGZhbHNlIG90aGVyd2lzZS4NCgkgKiBAc2luY2UgMy4yLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gZXhpc3RzQWN0aXZlKHN0cmluZyAuLi4ka2V5cyk6IGJvb2w7', '{}', '{}', '', 1, '2023-09-08 16:12:43', 18, 0, 1),
(489, '7e822c03-1b20-41d1-9427-f5b8d5836af7', 'VDM.Abstraction.Registry', 'Registry', 'abstract class', 'VDM Basic Registry.\r\n\r\nDon\'t use this beyond 10 dimensional depth for best performance.\r\n\r\n@since 3.2.0\r\n@since 5.0.4 Joomla Registry Compatible', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', '43134867-5cb8-4280-9be8-309fd2fd135f', '', '', '', '{\"0\":\"64e291c2-11f1-423d-a44d-837cc12cc017\",\"1\":\"-1\"}', ' \\JsonSerializable, \\ArrayAccess, \\IteratorAggregate, \\Countable', '[[[NamespacePrefix]]]\\Joomla\\Abstraction.Registry', 1, '{}', '{}', 'dXNlIEpvb21sYVxSZWdpc3RyeVxGYWN0b3J5IGFzIEZvcm1hdEZhY3Rvcnk7', '{}', 'CS8qKg0KCSAqIFBhdGggc2VwYXJhdG9yDQoJICoNCgkgKiBAdmFyICAgIHN0cmluZ3xudWxsDQoJICogQHNpbmNlICAzLjIuMA0KCSAqLw0KCXByb3RlY3RlZCA/c3RyaW5nICRzZXBhcmF0b3IgPSAnLic7DQoNCgkvKioNCgkgKiBUaGUgbmFtZSBvZiB0aGUgcmVnaXN0cnkuDQoJICoNCgkgKiBAdmFyICAgc3RyaW5nfG51bGwNCgkgKiBAc2luY2UgNS4wLjQNCgkgKi8NCglwcm90ZWN0ZWQgP3N0cmluZyAkbmFtZSA9IG51bGw7DQoNCgkvKioNCgkgKiBDb25zdHJ1Y3Rvci4NCgkgKg0KCSAqIEluaXRpYWxpemVzIHRoZSBSZWdpc3RyeSBvYmplY3Qgd2l0aCBvcHRpb25hbCBkYXRhLg0KCSAqDQoJICogQHBhcmFtICBtaXhlZCAgICAgICAgJGRhdGEgICAgICBPcHRpb25hbCBkYXRhIHRvIGxvYWQgaW50byB0aGUgcmVnaXN0cnkuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgYW4gYXJyYXksIHN0cmluZywgb3Igb2JqZWN0Lg0KCSAqIEBwYXJhbSAgc3RyaW5nfG51bGwgICRzZXBhcmF0b3IgVGhlIHBhdGggc2VwYXJhdG9yLCBhbmQgZW1wdHkgc3RyaW5nIHdpbGwgZmxhdHRlbiB0aGUgcmVnaXN0cnkuDQoJICogQHNpbmNlICA1LjAuNA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZGF0YSA9IG51bGwsID9zdHJpbmcgJHNlcGFyYXRvciA9IG51bGwpDQoJew0KCQkvLyB3ZSBkb24ndCBhbGxvdyBudWxsIG9uIGluaXRpYWxpemF0aW9uIChkZWZhdWx0IGlzIGEgZG90KQ0KCQkvLyBzbyB0aGF0IGFsbCBjbGFzcyBpbmhlcml0YW5jZSBjYW4gb3ZlcnJpZGUgdGhlIHNlcGFyYXRvciBwcm9wZXJ0eQ0KCQkvLyB1c2UgYW4gZW1wdHkgc3RyaW5nIGlmIHlvdSB3YW50IHRvIGZsYXR0ZW4gdGhlIHJlZ2lzdHJ5DQoJCWlmICgkc2VwYXJhdG9yICE9PSBudWxsKQ0KCQl7DQoJCQkkdGhpcy0+c2V0U2VwYXJhdG9yKCRzZXBhcmF0b3IpOw0KCQl9DQoNCgkJaWYgKCRkYXRhICE9PSBudWxsKQ0KCQl7DQoJCQlpZiAoaXNfYXJyYXkoJGRhdGEpKQ0KCQkJew0KCQkJCSR0aGlzLT5sb2FkQXJyYXkoJGRhdGEpOw0KCQkJfQ0KCQkJZWxzZWlmIChpc19zdHJpbmcoJGRhdGEpKQ0KCQkJew0KCQkJCSR0aGlzLT5sb2FkU3RyaW5nKCRkYXRhKTsNCgkJCX0NCgkJCWVsc2VpZiAoaXNfb2JqZWN0KCRkYXRhKSkNCgkJCXsNCgkJCQkkdGhpcy0+bG9hZE9iamVjdCgkZGF0YSk7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBNYWdpYyBtZXRob2QgdG8gZ2V0IGEgdmFsdWUgZnJvbSB0aGUgcmVnaXN0cnkuDQoJICoNCgkgKiBBbGxvd3MgZm9yIGFjY2Vzc2luZyByZWdpc3RyeSBkYXRhIHVzaW5nIG9iamVjdCBwcm9wZXJ0eSBzeW50YXguDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuDQoJICoNCgkgKiBAcmV0dXJuIG1peGVkIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHksIG9yIG51bGwgaWYgbm90IGZvdW5kLg0KCSAqIEBzaW5jZSAgNS4wLjQNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gX19nZXQoJG5hbWUpDQoJew0KCQlyZXR1cm4gJHRoaXMtPmdldCgkbmFtZSk7DQoJfQ0KDQoJLyoqDQoJICogTWFnaWMgbWV0aG9kIHRvIHNldCBhIHZhbHVlIGluIHRoZSByZWdpc3RyeS4NCgkgKg0KCSAqIEFsbG93cyBmb3Igc2V0dGluZyByZWdpc3RyeSBkYXRhIHVzaW5nIG9iamVjdCBwcm9wZXJ0eSBzeW50YXguDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lICBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gc2V0Lg0KCSAqIEBwYXJhbSBtaXhlZCAgJHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuDQoJICoNCgkgKiBAcmV0dXJuIHZvaWQNCgkgKiBAc2luY2UgIDUuMC40DQoJICovDQoJcHVibGljIGZ1bmN0aW9uIF9fc2V0KCRuYW1lLCAkdmFsdWUpDQoJew0KCQkkdGhpcy0+c2V0KCRuYW1lLCAkdmFsdWUpOw0KCX0NCg0KCS8qKg0KCSAqIE1hZ2ljIG1ldGhvZCB0byBjaGVjayBpZiBhIHByb3BlcnR5IGlzIHNldCBpbiB0aGUgcmVnaXN0cnkuDQoJICoNCgkgKiBBbGxvd3MgZm9yIHVzaW5nIGlzc2V0KCkgb24gcmVnaXN0cnkgcHJvcGVydGllcy4NCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGNoZWNrLg0KCSAqDQoJICogQHJldHVybiBib29sIFRydWUgaWYgdGhlIHByb3BlcnR5IGlzIHNldCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqIEBzaW5jZSAgNS4wLjQNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gX19pc3NldCgkbmFtZSkNCgl7DQoJCXJldHVybiAkdGhpcy0+ZXhpc3RzKCRuYW1lKTsNCgl9DQoNCgkvKioNCgkgKiBNYWdpYyBtZXRob2QgdG8gdW5zZXQgYSBwcm9wZXJ0eSBpbiB0aGUgcmVnaXN0cnkuDQoJICoNCgkgKiBBbGxvd3MgZm9yIHVzaW5nIHVuc2V0KCkgb24gcmVnaXN0cnkgcHJvcGVydGllcy4NCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHVuc2V0Lg0KCSAqDQoJICogQHJldHVybiB2b2lkDQoJICogQHNpbmNlICA1LjAuNA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX3Vuc2V0KCRuYW1lKQ0KCXsNCgkJJHRoaXMtPnJlbW92ZSgkbmFtZSk7DQoJfQ0KDQoJLyoqDQoJICogTWFnaWMgbWV0aG9kIHRvIGNsb25lIHRoZSByZWdpc3RyeS4NCgkgKg0KCSAqIFBlcmZvcm1zIGEgZGVlcCBjb3B5IG9mIHRoZSByZWdpc3RyeSBkYXRhLg0KCSAqDQoJICogQHJldHVybiB2b2lkDQoJICogQHNpbmNlICA1LjAuNA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2Nsb25lKCkNCgl7DQoJCSR0aGlzLT5hY3RpdmUgPSB1bnNlcmlhbGl6ZShzZXJpYWxpemUoJHRoaXMtPmFjdGl2ZSkpOw0KCX0NCg0KCS8qKg0KCSAqIE1hZ2ljIG1ldGhvZCB0byBjb252ZXJ0IHLine truncated
@@ -2220,7 +2220,7 @@ INSERT INTO `#__componentbuilder_power` (`id`, `guid`, `system_name`, `name`, `t
(770, '13c2cac1-a70d-42d7-99fc-eb7ac3443069', 'Utilities Class Helper', 'ClassHelper', 'abstract class', 'Class Helper for JCB Powers\r\n\r\n@since 3.2.2', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIwDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Utilities.ClassHelper', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIEVuc3VyZXMgdGhhdCBhIGNsYXNzIGluIHRoZSBuYW1lc3BhY2UgaXMgYXZhaWxhYmxlLg0KCSAqIElmIHRoZSBjbGFzcyBpcyBub3QgYWxyZWFkeSBsb2FkZWQsIGl0IGF0dGVtcHRzIHRvIGxvYWQgaXQgdmlhIHRoZSBzcGVjaWZpZWQgYXV0b2xvYWRlci4NCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgICRjbGFzc05hbWUgICAgICAgVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBjbGFzcyB0byBjaGVjay4NCgkgKiBAcGFyYW0gc3RyaW5nICAkY29tcG9uZW50ICAgICAgIFRoZSBjb21wb25lbnQgbmFtZSB3aGVyZSB0aGUgYXV0b2xvYWRlciByZXNpZGVzLg0KCSAqIEBwYXJhbSBzdHJpbmcgICRhdXRvbG9hZGVyUGF0aCAgVGhlIHBhdGggdG8gdGhlIGF1dG9sb2FkZXIgZmlsZSB3aXRoaW4gdGhlIGNvbXBvbmVudC4NCgkgKg0KCSAqIEByZXR1cm4gYm9vbCBUcnVlIGlmIHRoZSBjbGFzcyBleGlzdHMgb3Igd2FzIHN1Y2Nlc3NmdWxseSBsb2FkZWQsIGZhbHNlIG90aGVyd2lzZS4NCgkgKiBAc2luY2UgMy4yLjINCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGV4aXN0cyhzdHJpbmcgJGNsYXNzTmFtZSwgc3RyaW5nICRjb21wb25lbnQsIHN0cmluZyAkYXV0b2xvYWRlclBhdGgpOiBib29sDQoJew0KCQlpZiAoIWNsYXNzX2V4aXN0cygkY2xhc3NOYW1lLCB0cnVlKSkNCgkJew0KCQkJLy8gQ29uc3RydWN0IHRoZSBwYXRoIHRvIHRoZSBhdXRvbG9hZGVyIGZpbGUNCgkJCSRhdXRvbG9hZGVyRmlsZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tXycgLiAkY29tcG9uZW50IC4gJy8nIC4gJGF1dG9sb2FkZXJQYXRoOw0KDQoJCQlpZiAoZmlsZV9leGlzdHMoJGF1dG9sb2FkZXJGaWxlKSkNCgkJCXsNCgkJCQlyZXF1aXJlX29uY2UgJGF1dG9sb2FkZXJGaWxlOw0KCQkJfQ0KDQoJCQkvLyBDaGVjayBhZ2FpbiBpZiB0aGUgY2xhc3Mgbm93IGV4aXN0cyBhZnRlciByZXF1aXJpbmcgdGhlIGF1dG9sb2FkZXINCgkJCWlmICghY2xhc3NfZXhpc3RzKCRjbGFzc05hbWUsIHRydWUpKQ0KCQkJew0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQo=', '{}', '{}', NULL, 1, '2024-07-12 11:44:53', 7, 0, 1),
(781, '900456a2-feb5-48b9-9f05-c5a032a32c59', 'VDM.PHPConfigurationChecker', 'PHPConfigurationChecker', 'abstract class', 'PHP Configuration Checker\r\n\r\n@since 5.0.2', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', '7e822c03-1b20-41d1-9427-f5b8d5836af7', '', '', '', '{\"0\":\"95c02df3-fe0a-405b-b506-b7a5b8605b66\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Abstraction.PHPConfigurationChecker', 1, '{}', '{}', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTs=', '{}', 'CS8qKg0KCSAqIFRoZSB1cGxvYWQgbWF4IGZpbGVzaXplIHZhbHVlDQoJICoNCgkgKiBAdmFyICAgIHN0cmluZw0KCSAqIEBzaW5jZSAgNS4wLjINCgkgKiovDQoJcHJvdGVjdGVkICBzdHJpbmcgJHVwbG9hZF9tYXhfZmlsZXNpemU7DQoNCgkvKioNCgkgKiBUaGUgcG9zdCBtYXggc2l6ZSB2YWx1ZQ0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDUuMC4yDQoJICoqLw0KCXByb3RlY3RlZCAgc3RyaW5nICRwb3N0X21heF9zaXplOw0KDQoJLyoqDQoJICogVGhlIG1heCBleGVjdXRpb24gdGltZSB2YWx1ZQ0KCSAqDQoJICogQHZhciAgICBpbnQNCgkgKiBAc2luY2UgIDUuMC4yDQoJICoqLw0KCXByb3RlY3RlZCAgaW50ICRtYXhfZXhlY3V0aW9uX3RpbWU7DQoNCgkvKioNCgkgKiBUaGUgbWF4IGlucHV0IHZhcnMgdmFsdWUNCgkgKg0KCSAqIEB2YXIgICAgaW50DQoJICogQHNpbmNlICA1LjAuMg0KCSAqKi8NCglwcm90ZWN0ZWQgIGludCAkbWF4X2lucHV0X3ZhcnM7DQoNCgkvKioNCgkgKiBUaGUgbWF4IGlucHV0IHRpbWUgdmFsdWUNCgkgKg0KCSAqIEB2YXIgICAgaW50DQoJICogQHNpbmNlICA1LjAuMg0KCSAqKi8NCglwcm90ZWN0ZWQgIGludCAkbWF4X2lucHV0X3RpbWU7DQoNCgkvKioNCgkgKiBUaGUgbWVtb3J5IGxpbWl0IHZhbHVlDQoJICoNCgkgKiBAdmFyICAgIHN0cmluZw0KCSAqIEBzaW5jZSAgNS4wLjINCgkgKiovDQoJcHJvdGVjdGVkICBzdHJpbmcgJG1lbW9yeV9saW1pdDsNCg0KCS8qKg0KCSAqIFRoZSByZWdpc3RyeSBhcnJheS4NCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgNS4wLjINCgkgKiovDQoJcHJvdGVjdGVkIGFycmF5ICRhY3RpdmUgPSBbDQoJCSdwaHAnID0+IFsNCgkJCSd1cGxvYWRfbWF4X2ZpbGVzaXplJyA9PiBbDQoJCQkJJ3N1Y2Nlc3MnID0+ICdUaGUgdXBsb2FkX21heF9maWxlc2l6ZSBpcyBhcHByb3ByaWF0ZWx5IHNldCB0byBoYW5kbGUgbGFyZ2UgZmlsZXMsIHdoaWNoIGlzIGVzc2VudGlhbCBmb3IgdXBsb2FkaW5nIHN1YnN0YW50aWFsIGNvbXBvbmVudHMgYW5kIG1lZGlhLicsDQoJCQkJJ3dhcm5pbmcnID0+ICdUaGUgY3VycmVudCB1cGxvYWRfbWF4X2ZpbGVzaXplIG1heSBub3Qgc3VwcG9ydCBsYXJnZSBmaWxlIHVwbG9hZHMgZWZmZWN0aXZlbHksIHBvdGVudGlhbGx5IGNhdXNpbmcgZmFpbHVyZXMgZHVyaW5nIGNvbXBvbmVudCBpbnN0YWxsYXRpb24uJw0KCQkJXSwNCgkJCSdwb3N0X21heF9zaXplJyA9PiBbDQoJCQkJJ3N1Y2Nlc3MnID0+ICdUaGUgcG9zdF9tYXhfc2l6ZSBzZXR0aW5nIGlzIHN1ZmZpY2llbnQgdG8gbWFuYWdlIGxhcmdlIGRhdGEgc3VibWlzc2lvbnMsIGVuc3VyaW5nIHNtb290aCBkYXRhIHByb2Nlc3Npbmcgd2l0aGluIGZvcm1zIGFuZCB1cGxvYWRzLicsDQoJCQkJJ3dhcm5pbmcnID0+ICdBbiBpbnN1ZmZpY2llbnQgcG9zdF9tYXhfc2l6ZSBjYW4gbGVhZCB0byB0cnVuY2F0ZWQgZGF0YSBzdWJtaXNzaW9ucywgYWZmZWN0aW5nIGZvcm0gZnVuY3Rpb25hbGl0eSBhbmQgZGF0YSBpbnRlZ3JpdHkuJw0KCQkJXSwNCgkJCSdtYXhfZXhlY3V0aW9uX3RpbWUnID0+IFsNCgkJCQknc3VjY2VzcycgPT4gJ01heCBleGVjdXRpb24gdGltZSBpcyBzZXQgaGlnaCBlbm91Z2ggdG8gZXhlY3V0ZSBjb21wbGV4IG9wZXJhdGlvbnMgd2l0aG91dCBwcmVtYXR1cmUgdGVybWluYXRpb24sIHdoaWNoIGlzIGNydWNpYWwgZm9yIGxlbmd0aHkgb3BlcmF0aW9ucy4nLA0KCQkJCSd3YXJuaW5nJyA9PiAnQSBsb3cgbWF4IGV4ZWN1dGlvbiB0aW1lIGNvdWxkIGxlYWQgdG8gc2NyaXB0IHRpbWVvdXRzLCBlc3BlY2lhbGx5IGR1cmluZyBpbnRlbnNpdmUgb3BlcmF0aW9ucywgd2hpY2ggbWlnaHQgaW50ZXJydXB0IGV4ZWN1dGlvbiBhbmQgY2F1c2UgZmFpbHVyZXMgZHVyaW5nIHRoZSBjb21waWxpbmcgb2YgYSBsYXJnZSBleHRlbnNpb24uJw0KCQkJXSwNCgkJCSdtYXhfaW5wdXRfdmFycycgPT4gWw0KCQkJCSdzdWNjZXNzJyA9PiAnVGhlIG1heF9pbnB1dF92YXJzIHNldHRpbmcgc3VwcG9ydHMgYSBoaWdoIG51bWJlciBvZiBpbnB1dCB2YXJpYWJsZXMsIGZhY2lsaXRhdGluZyBjb21wbGV4IGZvcm1zIGFuZCBkZXRhaWxlZCBjb21wb25lbnQgY29uZmlndXJhdGlvbnMuJywNCgkJCQknd2FybmluZycgPT4gJ1RvbyBmZXcgbWF4X2lucHV0X3ZhcnMgbWF5IHJlc3VsdCBpbiBsb3N0IGRhdGEgZHVyaW5nIHByb2Nlc3NpbmcgY29tcGxleCBmb3Jtcywgd2hpY2ggY2FuIGxlYWQgdG8gaW5jb21wbGV0ZSBjb25maWd1cmF0aW9ucyBhbmQgb3BlcmF0aW9uYWwgaXNzdWVzLicNCgkJCV0sDQoJCQknbWF4X2lucHV0X3RpbWUnID0+IFsNCgkJCQknc3VjY2VzcycgPT4gJ01heCBpbnB1dCB0aW1lIGlzIGFkZXF1YXRlIGZvciBwcm9jZXNzaW5nIGlucHV0cyBlZmZpY2llbnRseSBkdXJpbmcgaGlnaC1sb2FkIG9wZXJhdGlvbnMsIGVuc3VyaW5nIG5vIHByZW1hdHVyZSB0aW1lb3V0cy4nLA0KCQkJCSd3YXJuaW5nJyA9PiAnQW4gaW5zdWZmaWNpZW50IG1heCBpbnB1dCB0aW1lIGNvdWxkIHJlc3VsdCBpbiBpbmNvbXBsZXRlIGRhdGEgcHJvY2Vzc2luZyBkdXJpbmcgaW5wdXQtaGVhdnkgb3BlcmF0aW9ucywgcG90ZW50aWFsbHkgbGVhZGluZyB0byBlcnJvcnMgYW5kIGRhdGEgbG9zcy4nDQoJCQldLA0KCQkJJ21lbW9yeV9saW1pdCcgPT4gWw0KCQkJCSdzdWNjZXNzJyA9PiAnVGhlIG1lbW9yeSBsaW1pdCBpcyBzZXQgaGlnaCB0byBhY2NvbW1vZGF0ZSBleHRlbnNpdmUgb3BlcmF0aW9ucyBhbmQgZGF0YSBwcm9jZXNzaW5nLCB3aGljaCBlbmhhbmNlcyBvdmVyYWxsIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHkuJywNCgkJCQknd2FybmluZycgPT4gJ0EgbG93IG1lbW9yeSBsaW1pdCBjYW4gbGVhZCB0byBmcmVxdWVudCBjcmFzaGVzIGFuZCBwZXJmb3JtYW5jZSBpc3N1ZXMsIHBhcnRpY3VsYXJseSB3aGVuIHByb2Nlc3NpbmcgbGFyZ2UgYW1vdW50cyBvZiBkYXRhIG9yIGNvbXBsZXggY2FsY3VsYXRpb25zLicNCgkJCV0NCgkJXSwNCgkJJ2VuLine truncated
(782, '4b2d6f28-346e-46ec-bf24-d470319cca2d', 'VDM.Component.PHPConfigurationChecker', 'PHPConfigurationChecker', 'final class', '[[[Component]]] PHP Configuration Checker\r\n\r\n@since 5.02', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', '900456a2-feb5-48b9-9f05-c5a032a32c59', '', '', '', '{\"0\":\"95c02df3-fe0a-405b-b506-b7a5b8605b66\"}', '', '[[[NamespacePrefix]]]\\Joomla\\[[[ComponentNamespace]]].PHPConfigurationChecker', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIFRoZSB1cGxvYWQgbWF4IGZpbGVzaXplIHZhbHVlDQoJICoNCgkgKiBAdmFyICAgIHN0cmluZw0KCSAqIEBzaW5jZSAgNS4wLjINCgkgKiovDQoJcHJvdGVjdGVkICBzdHJpbmcgJHVwbG9hZF9tYXhfZmlsZXNpemUgPSAnW1tbdXBsb2FkX21heF9maWxlc2l6ZV1dXSc7DQoNCgkvKioNCgkgKiBUaGUgcG9zdCBtYXggc2l6ZSB2YWx1ZQ0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDUuMC4yDQoJICoqLw0KCXByb3RlY3RlZCAgc3RyaW5nICRwb3N0X21heF9zaXplID0gJ1tbW3Bvc3RfbWF4X3NpemVdXV0nOw0KDQoJLyoqDQoJICogVGhlIG1heCBleGVjdXRpb24gdGltZSB2YWx1ZQ0KCSAqDQoJICogQHZhciAgICBpbnQNCgkgKiBAc2luY2UgIDUuMC4yDQoJICoqLw0KCXByb3RlY3RlZCAgaW50ICRtYXhfZXhlY3V0aW9uX3RpbWUgPSBbW1ttYXhfZXhlY3V0aW9uX3RpbWVdXV07DQoNCgkvKioNCgkgKiBUaGUgbWF4IGlucHV0IHZhcnMgdmFsdWUNCgkgKg0KCSAqIEB2YXIgICAgaW50DQoJICogQHNpbmNlICA1LjAuMg0KCSAqKi8NCglwcm90ZWN0ZWQgIGludCAkbWF4X2lucHV0X3ZhcnMgPSBbW1ttYXhfaW5wdXRfdmFyc11dXTsNCg0KCS8qKg0KCSAqIFRoZSBtYXggaW5wdXQgdGltZSB2YWx1ZQ0KCSAqDQoJICogQHZhciAgICBpbnQNCgkgKiBAc2luY2UgIDUuMC4yDQoJICoqLw0KCXByb3RlY3RlZCAgaW50ICRtYXhfaW5wdXRfdGltZSA9IFtbW21heF9pbnB1dF90aW1lXV1dOw0KDQoJLyoqDQoJICogVGhlIG1lbW9yeSBsaW1pdCB2YWx1ZQ0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDUuMC4yDQoJICoqLw0KCXByb3RlY3RlZCAgc3RyaW5nICRtZW1vcnlfbGltaXQgPSAnW1tbbWVtb3J5X2xpbWl0XV1dJzsNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yLg0KCSAqDQoJICogQHNpbmNlICA1LjAuMg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkYXBwID0gbnVsbCkNCgl7DQoJCXBhcmVudDo6X19jb25zdHJ1Y3QoJGFwcCk7DQoNCgkJLy8gc2V0IHRoZSByZXF1aXJlZCBQSFAgQ29uZmlndXJlcw0KCQkkdGhpcy0+c2V0KCdlbnZpcm9ubWVudC5uYW1lJywgJ1tbW0NvbXBvbmVudF1dXSBlbnZpcm9ubWVudCcpOw0KCQkkdGhpcy0+c2V0KCdlbnZpcm9ubWVudC53aWtpX3VybCcsICdbW1tlbnZpcm9ubWVudF93aWtpX3VybF1dXScpOw0KCX0=', '{}', '{}', NULL, 1, '2024-07-27 12:38:37', 4, 0, 1),
(821, '7832a726-87b6-4e95-887e-7b725d3fab8f', 'Joomla.Utilities.UserHelper', 'UserHelper', 'abstract class', 'Create & Update User [Save]\r\n\r\n@since 5.0.2', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIwDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\[[[ComponentNamespace]]].Utilities.UserHelper', 1, '{}', '{}', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXEZvcm1cRm9ybTsNCnVzZSBKb29tbGFcQ01TXExhbmd1YWdlXFRleHQ7DQp1c2UgSm9vbWxhXENNU1xVc2VyXFVzZXI7DQp1c2UgSm9vbWxhXENNU1xVc2VyXFVzZXJIZWxwZXIgYXMgSm9vbWxhVXNlckhlbHBlcjsNCnVzZSBKb29tbGFcQ01TXE1WQ1xNb2RlbFxCYXNlRGF0YWJhc2VNb2RlbDs=', '{\"use_selection0\":{\"use\":\"640b5352-fb09-425f-a26e-cd44eda03f15\",\"as\":\"Component\"},\"use_selection1\":{\"use\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\",\"as\":\"default\"},\"use_selection2\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"},\"use_selection3\":{\"use\":\"1c10a5f1-204d-4f17-ad9f-0e0684f2030d\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIFNhdmUgdXNlciBkZXRhaWxzIGJ5IGVpdGhlciBjcmVhdGluZyBhIG5ldyB1c2VyIG9yIHVwZGF0aW5nIGFuIGV4aXN0aW5nIHVzZXIuDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgJGNyZWRlbnRpYWxzICBVc2VyIGNyZWRlbnRpYWxzIGluY2x1ZGluZyAnbmFtZScsICd1c2VybmFtZScsICdlbWFpbCcsICdwYXNzd29yZCcsIGFuZCAncGFzc3dvcmQyJy4NCgkgKiBAcGFyYW0gICBpbnQgICAgJGF1dG9sb2dpbiAgICBGbGFnIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIGF1dG8tbG9naW4gdGhlIHVzZXIgYWZ0ZXIgcmVnaXN0cmF0aW9uLg0KCSAqIEBwYXJhbSAgIGFycmF5ICAkcGFyYW1zICAgICAgIFBhcmFtZXRlcnMgZm9yIHVzZXIgYWN0aXZhdGlvbiwgcGFzc3dvcmQgc2VuZGluZywgYW5kIHVzZXIgcmVnaXN0cmF0aW9uIGFsbG93YW5jZS4NCgkgKiBAcGFyYW0gICBpbnQgICAgJG1vZGUgICAgICAgICBNb2RlIG9mIHJlZ2lzdHJhdGlvbjogMSA9IFNpdGUgUmVnaXN0cmF0aW9uLCAwID0gQWRtaW4gUmVnaXN0cmF0aW9uLCAyID0gQ3VzdG9tIEhlbHBlciBNZXRob2QuDQoJICoNCgkgKiBAcmV0dXJuICBpbnQgIFVzZXIgSUQgb24gc3VjY2Vzcy4NCgkgKg0KCSAqIEB0aHJvd3MgIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gIElmIHJlcXVpcmVkIGNyZWRlbnRpYWxzIGFyZSBtaXNzaW5nLg0KCSAqIEB0aHJvd3MgIFxSdW50aW1lRXhjZXB0aW9uICAgICAgICAgIElmIHRoZSB1c2VyIHVwZGF0ZSBvciBjcmVhdGlvbiBmYWlscy4NCgkgKiBAdGhyb3dzICBOb1VzZXJJZEZvdW5kRXhjZXB0aW9uICAgICBJZiB0aGUgdXNlciBpcyBub3QgZm91bmQuDQoJICoNCgkgKiBAc2luY2UgICA1LjAuMw0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2F2ZShhcnJheSAkY3JlZGVudGlhbHMsIGludCAkYXV0b2xvZ2luID0gMCwNCgkJYXJyYXkgJHBhcmFtcyA9IFsndXNlcmFjdGl2YXRpb24nID0+IDAsICdzZW5kcGFzc3dvcmQnID0+IDFdLCBpbnQgJG1vZGUgPSAxKTogaW50DQoJew0KCQkvLyBjYW4gbm90IGNvbnRpbnVlIHdpdGhvdXQgYW4gZW1haWwNCgkJaWYgKGVtcHR5KCRjcmVkZW50aWFsc1snZW1haWwnXSkpDQoJCXsNCgkJCXRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFRleHQ6Ol8oJ0NhbiBub3Qgc2F2ZSB1c2VyIHdpdGhvdXQgZW1haWwgdmFsdWUuJykpOw0KCQl9DQoNCgkJLy8gRW5zdXJlIHRoZSAndXNlcm5hbWUnIGtleSBleGlzdHMgaW4gdGhlIGNyZWRlbnRpYWxzIGFycmF5LCBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nIGlmIG5vdCBwcm92aWRlZC4NCgkJJHVzZXJuYW1lID0gJGNyZWRlbnRpYWxzWyd1c2VybmFtZSddID8/ICRjcmVkZW50aWFsc1snZW1haWwnXTsNCg0KCQkvLyBJZiB0aGUgdXNlcidzIElEIGlzIHNldCBhbmQgdmFsaWQsIGhhbmRsZSB0aGUgdXBkYXRlIGxvZ2ljLg0KCQlpZiAoIWVtcHR5KCRjcmVkZW50aWFsc1snaWQnXSkgJiYgJGNyZWRlbnRpYWxzWydpZCddID4gMCkNCgkJew0KCQkJJHVzZXJJZCA9ICRjcmVkZW50aWFsc1snaWQnXTsNCgkJCSRlbWFpbCA9ICRjcmVkZW50aWFsc1snZW1haWwnXTsNCg0KCQkJLy8gRmV0Y2ggZXhpc3RpbmcgdXNlciBieSBlbWFpbCBhbmQgdXNlcm5hbWUuDQoJCQkkZXhpc3RpbmdFbWFpbFVzZXJJZCA9IHN0YXRpYzo6Z2V0VXNlcklkQnlFbWFpbCgkZW1haWwpOw0KCQkJJGV4aXN0aW5nVXNlcm5hbWVJZCA9IHN0YXRpYzo6Z2V0VXNlcklkQnlVc2VybmFtZSgkdXNlcm5hbWUpOw0KDQoJCQkvLyBWYWxpZGF0ZSB0aGF0IHdlIGFyZW4ndCBhdHRlbXB0aW5nIHRvIHVwZGF0ZSBvdGhlciB1c2VycyBvciByZXVzZSBhbm90aGVyIHVzZXIncyBlbWFpbC91c2VybmFtZS4NCgkJCWlmICgNCgkJCQkoJGV4aXN0aW5nRW1haWxVc2VySWQgJiYgJGV4aXN0aW5nRW1haWxVc2VySWQgIT0gJHVzZXJJZCkgfHwNCgkJCQkoJGV4aXN0aW5nVXNlcm5hbWVJZCAmJiAkZXhpc3RpbmdVc2VybmFtZUlkICE9ICR1c2VySWQpIHx8DQoJCQkJKCRleGlzdGluZ0VtYWlsVXNlcklkICYmICRleGlzdGluZ1VzZXJuYW1lSWQgJiYgJGV4aXN0aW5nRW1haWxVc2VySWQgIT0gJGV4aXN0aW5nVXNlcm5hbWVJZCkNCgkJCSkgew0KCQkJCXRocm93IG5ldyBOb1VzZXJJZEZvdW5kRXhjZXB0aW9uKA0KCQkJCQlUZXh0OjpzcHJpbnRmKA0KCQkJCQkJJ1VzZXIgSUQgbWlzbWF0Y2ggZGV0ZWN0ZWQgd2hlbiB0cnlpbmcgdG8gc2F2ZSAlcyAoJXMpIGNyZWRlbnRpYWxzLicsDQoJCQkJCQkkdXNlcm5hbWUsDQoJCQkJCQkkZW1haWwNCgkJCQkJKQ0KCQkJCSk7DQoJCQl9DQoNCgkJCS8vIFVwZGF0ZSB0aGUgZXhpc3RpbmcgdXNlci4NCgkJCXJldHVybiBzdGF0aWM6OnVwZGF0ZSgkY3JlZGVudGlhbHMpOw0KCQl9DQoNCgkJLy8gQ3JlYXRlIGEgbmV3IHVzZXIgaWYgbm8gZXhpc3RpbmcgdXNlciBpcyBmb3VuZC4NCgkJcmV0dXJuIHN0YXRpYzo6Y3JlYXRlKCRjcmVkZW50aWFscywgJGF1dG9sb2dpbiwgJHBhcmFtcywgJG1vZGUpOw0KCX0NCg0KCS8qKg0KCSAqIENyZWF0ZSBhIHVzZXIgYW5kIHVwZGF0ZSB0aGUgZ2l2ZW4gdGFibGUuDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgJGNyZWRlbnRpYWxzICBVc2VyIGNyZWRlbnRpYWxzIGluY2x1ZGluZyAnbmFtZScsLine truncated
(821, '7832a726-87b6-4e95-887e-7b725d3fab8f', 'Joomla.Utilities.UserHelper', 'UserHelper', 'abstract class', 'Create & Update User [Save]\r\n\r\n@since 5.0.2', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIwDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\[[[ComponentNamespace]]].Utilities.UserHelper', 1, '{}', '{}', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXEZvcm1cRm9ybTsNCnVzZSBKb29tbGFcQ01TXExhbmd1YWdlXFRleHQ7DQp1c2UgSm9vbWxhXENNU1xVc2VyXFVzZXI7DQp1c2UgSm9vbWxhXENNU1xVc2VyXFVzZXJIZWxwZXIgYXMgSm9vbWxhVXNlckhlbHBlcjsNCnVzZSBKb29tbGFcQ01TXE1WQ1xNb2RlbFxCYXNlRGF0YWJhc2VNb2RlbDs=', '{\"use_selection0\":{\"use\":\"640b5352-fb09-425f-a26e-cd44eda03f15\",\"as\":\"Component\"},\"use_selection1\":{\"use\":\"0a59c65c-9daf-4bc9-baf4-e063ff9e6a8a\",\"as\":\"default\"},\"use_selection2\":{\"use\":\"1f28cb53-60d9-4db1-b517-3c7dc6b429ef\",\"as\":\"default\"},\"use_selection3\":{\"use\":\"1c10a5f1-204d-4f17-ad9f-0e0684f2030d\",\"as\":\"default\"}}', 'CS8qKg0KCSAqIFNhdmUgdXNlciBkZXRhaWxzIGJ5IGVpdGhlciBjcmVhdGluZyBhIG5ldyB1c2VyIG9yIHVwZGF0aW5nIGFuIGV4aXN0aW5nIHVzZXIuDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgJGNyZWRlbnRpYWxzICBVc2VyIGNyZWRlbnRpYWxzIGluY2x1ZGluZyAnbmFtZScsICd1c2VybmFtZScsICdlbWFpbCcsICdwYXNzd29yZCcsIGFuZCAncGFzc3dvcmQyJy4NCgkgKiBAcGFyYW0gICBpbnQgICAgJGF1dG9sb2dpbiAgICBGbGFnIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIGF1dG8tbG9naW4gdGhlIHVzZXIgYWZ0ZXIgcmVnaXN0cmF0aW9uLg0KCSAqIEBwYXJhbSAgIGFycmF5ICAkcGFyYW1zICAgICAgIFBhcmFtZXRlcnMgZm9yIHVzZXIgYWN0aXZhdGlvbiwgcGFzc3dvcmQgc2VuZGluZywgYW5kIHVzZXIgcmVnaXN0cmF0aW9uIGFsbG93YW5jZS4NCgkgKiBAcGFyYW0gICBpbnQgICAgJG1vZGUgICAgICAgICBNb2RlIG9mIHJlZ2lzdHJhdGlvbjogMSA9IFNpdGUgUmVnaXN0cmF0aW9uLCAwID0gQWRtaW4gUmVnaXN0cmF0aW9uLCAyID0gQ3VzdG9tIEhlbHBlciBNZXRob2QuDQoJICoNCgkgKiBAcmV0dXJuICBpbnQgIFVzZXIgSUQgb24gc3VjY2Vzcy4NCgkgKg0KCSAqIEB0aHJvd3MgIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gIElmIHJlcXVpcmVkIGNyZWRlbnRpYWxzIGFyZSBtaXNzaW5nLg0KCSAqIEB0aHJvd3MgIFxSdW50aW1lRXhjZXB0aW9uICAgICAgICAgIElmIHRoZSB1c2VyIHVwZGF0ZSBvciBjcmVhdGlvbiBmYWlscy4NCgkgKiBAdGhyb3dzICBOb1VzZXJJZEZvdW5kRXhjZXB0aW9uICAgICBJZiB0aGUgdXNlciBpcyBub3QgZm91bmQuDQoJICoNCgkgKiBAc2luY2UgICA1LjAuMw0KCSAqLw0KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2F2ZShhcnJheSAkY3JlZGVudGlhbHMsIGludCAkYXV0b2xvZ2luID0gMCwNCgkJYXJyYXkgJHBhcmFtcyA9IFsndXNlcmFjdGl2YXRpb24nID0+IDAsICdzZW5kcGFzc3dvcmQnID0+IDFdLCBpbnQgJG1vZGUgPSAxKTogaW50DQoJew0KCQkvLyBjYW4gbm90IGNvbnRpbnVlIHdpdGhvdXQgYW4gZW1haWwNCgkJaWYgKGVtcHR5KCRjcmVkZW50aWFsc1snZW1haWwnXSkpDQoJCXsNCgkJCXRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFRleHQ6Ol8oJ0NhbiBub3Qgc2F2ZSB1c2VyIHdpdGhvdXQgZW1haWwgdmFsdWUuJykpOw0KCQl9DQoNCgkJLy8gRW5zdXJlIHRoZSAndXNlcm5hbWUnIGtleSBleGlzdHMgaW4gdGhlIGNyZWRlbnRpYWxzIGFycmF5LCBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nIGlmIG5vdCBwcm92aWRlZC4NCgkJJHVzZXJuYW1lID0gJGNyZWRlbnRpYWxzWyd1c2VybmFtZSddID8/ICRjcmVkZW50aWFsc1snZW1haWwnXTsNCg0KCQkvLyBJZiB0aGUgdXNlcidzIElEIGlzIHNldCBhbmQgdmFsaWQsIGhhbmRsZSB0aGUgdXBkYXRlIGxvZ2ljLg0KCQlpZiAoIWVtcHR5KCRjcmVkZW50aWFsc1snaWQnXSkgJiYgJGNyZWRlbnRpYWxzWydpZCddID4gMCkNCgkJew0KCQkJJHVzZXJJZCA9ICRjcmVkZW50aWFsc1snaWQnXTsNCgkJCSRlbWFpbCA9ICRjcmVkZW50aWFsc1snZW1haWwnXTsNCg0KCQkJLy8gRmV0Y2ggZXhpc3RpbmcgdXNlciBieSBlbWFpbCBhbmQgdXNlcm5hbWUuDQoJCQkkZXhpc3RpbmdFbWFpbFVzZXJJZCA9IHN0YXRpYzo6Z2V0VXNlcklkQnlFbWFpbCgkZW1haWwpOw0KCQkJJGV4aXN0aW5nVXNlcm5hbWVJZCA9IHN0YXRpYzo6Z2V0VXNlcklkQnlVc2VybmFtZSgkdXNlcm5hbWUpOw0KDQoJCQkvLyBWYWxpZGF0ZSB0aGF0IHdlIGFyZW4ndCBhdHRlbXB0aW5nIHRvIHVwZGF0ZSBvdGhlciB1c2VycyBvciByZXVzZSBhbm90aGVyIHVzZXIncyBlbWFpbC91c2VybmFtZS4NCgkJCWlmICgNCgkJCQkoJGV4aXN0aW5nRW1haWxVc2VySWQgJiYgJGV4aXN0aW5nRW1haWxVc2VySWQgIT0gJHVzZXJJZCkgfHwNCgkJCQkoJGV4aXN0aW5nVXNlcm5hbWVJZCAmJiAkZXhpc3RpbmdVc2VybmFtZUlkICE9ICR1c2VySWQpIHx8DQoJCQkJKCRleGlzdGluZ0VtYWlsVXNlcklkICYmICRleGlzdGluZ1VzZXJuYW1lSWQgJiYgJGV4aXN0aW5nRW1haWxVc2VySWQgIT0gJGV4aXN0aW5nVXNlcm5hbWVJZCkNCgkJCSkgew0KCQkJCXRocm93IG5ldyBOb1VzZXJJZEZvdW5kRXhjZXB0aW9uKA0KCQkJCQlUZXh0OjpzcHJpbnRmKA0KCQkJCQkJJ1VzZXIgSUQgbWlzbWF0Y2ggZGV0ZWN0ZWQgd2hlbiB0cnlpbmcgdG8gc2F2ZSAlcyAoJXMpIGNyZWRlbnRpYWxzLicsDQoJCQkJCQkkdXNlcm5hbWUsDQoJCQkJCQkkZW1haWwNCgkJCQkJKQ0KCQkJCSk7DQoJCQl9DQoNCgkJCS8vIFVwZGF0ZSB0aGUgZXhpc3RpbmcgdXNlci4NCgkJCXJldHVybiBzdGF0aWM6OnVwZGF0ZSgkY3JlZGVudGlhbHMpOw0KCQl9DQoNCgkJLy8gQ3JlYXRlIGEgbmV3IHVzZXIgaWYgbm8gZXhpc3RpbmcgdXNlciBpcyBmb3VuZC4NCgkJcmV0dXJuIHN0YXRpYzo6Y3JlYXRlKCRjcmVkZW50aWFscywgJGF1dG9sb2dpbiwgJHBhcmFtcywgJG1vZGUpOw0KCX0NCg0KCS8qKg0KCSAqIENyZWF0ZSBhIHVzZXIgYW5kIHVwZGF0ZSB0aGUgZ2l2ZW4gdGFibGUuDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgJGNyZWRlbnRpYWxzICBVc2VyIGNyZWRlbnRpYWxzIGluY2x1ZGluZyAnbmFtZScsLine truncated
(822, '46b98346-ec98-42b3-a393-96c7d1282b1c', 'VDM.Data.UsersSubform', 'UsersSubform', 'final class', 'CRUD the user data of any sub-form to another view (table)\r\n\r\n@since 5.0.2', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIwDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '{\"0\":\"576685fd-263c-46bb-9fdc-1f5eb234cbb6\",\"1\":\"34959721-415b-4b5e-8002-3d1fc84b3b2b\"}', '', '[[[NamespacePrefix]]]\\Joomla\\Data.UsersSubform', 1, '{}', '{}', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXFVzZXJcVXNlcjs=', '{\"use_selection0\":{\"use\":\"7212e4db-371f-4cfd-8122-32e9bb100d83\",\"as\":\"Items\"},\"use_selection1\":{\"use\":\"5acded67-0e3d-4c6b-a6ea-b533b076de0c\",\"as\":\"default\"},\"use_selection2\":{\"use\":\"7832a726-87b6-4e95-887e-7b725d3fab8f\",\"as\":\"default\"},\"use_selection3\":{\"use\":\"1c10a5f1-204d-4f17-ad9f-0e0684f2030d\",\"as\":\"default\"},\"use_selection4\":{\"use\":\"640b5352-fb09-425f-a26e-cd44eda03f15\",\"as\":\"Component\"}}', 'CS8qKg0KCSAqIFRoZSBHbG9iYWxseSBVbmlxdWUgSWRlbnRpZmllci4NCgkgKg0KCSAqIEBzaW5jZSA1LjAuMg0KCSAqLw0KCXVzZSBHdWlkOw0KDQoJLyoqDQoJICogVGhlIEl0ZW1zIENsYXNzLg0KCSAqDQoJICogQHZhciAgIEl0ZW1zDQoJICogQHNpbmNlIDMuMi4yDQoJICovDQoJcHJvdGVjdGVkIEl0ZW1zICRpdGVtczsNCg0KCS8qKg0KCSAqIFRhYmxlIE5hbWUNCgkgKg0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICogQHNpbmNlIDMuMi4xDQoJICovDQoJcHJvdGVjdGVkIHN0cmluZyAkdGFibGU7DQoNCgkvKioNCgkgKiBUaGUgdXNlciBwcm9wZXJ0aWVzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlIDUuMC4yDQoJICovDQoJcHJvdGVjdGVkIGFycmF5ICR1c2VyOw0KDQoJLyoqDQoJICogVGhlIGN1cnJlbnQgYWN0aXZlIHVzZXINCgkgKg0KCSAqIEB2YXIgICAgVXNlcg0KCSAqIEBzaW5jZSA1LjAuMg0KCSAqLw0KCXByb3RlY3RlZCBVc2VyICRpZGVudGl0eTsNCg0KCS8qKg0KCSAqIFRoZSBhY3RpdmUgdXNlcnMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgNS4wLjINCgkgKi8NCglwcm90ZWN0ZWQgYXJyYXkgJGFjdGl2ZVVzZXJzID0gW107DQoNCgkvKioNCgkgKiBDb25zdHJ1Y3Rvci4NCgkgKg0KCSAqIEBwYXJhbSBJdGVtcyAgICAgICAkaXRlbXMgICBUaGUgaXRlbXMgQ2xhc3MuDQoJICogQHBhcmFtIHN0cmluZ3xudWxsICR0YWJsZSAgIFRoZSB0YWJsZSBuYW1lLg0KCSAqDQoJICogQHNpbmNlIDMuMi4yDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEl0ZW1zICRpdGVtcywgP3N0cmluZyAkdGFibGUgPSBudWxsKQ0KCXsNCgkJJHRoaXMtPml0ZW1zID0gJGl0ZW1zOw0KCQlpZiAoJHRhYmxlICE9PSBudWxsKQ0KCQl7DQoJCQkkdGhpcy0+dGFibGUgPSAkdGFibGU7DQoJCX0NCg0KCQkkdGhpcy0+aWRlbnRpdHkgPSBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpLT5nZXRJZGVudGl0eSgpOw0KDQoJCS8vIFJldHJpZXZlIHRoZSB1c2VyIHByb3BlcnRpZXMNCgkJJHRoaXMtPmluaXRpYWxpemVVc2VyUHJvcGVydGllcygpOw0KCX0NCg0KCS8qKg0KCSAqIFNldCB0aGUgY3VycmVudCBhY3RpdmUgdGFibGUNCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJHRhYmxlIFRoZSB0YWJsZSB0aGF0IHNob3VsZCBiZSBhY3RpdmUNCgkgKg0KCSAqIEByZXR1cm4gc2VsZg0KCSAqIEBzaW5jZSAgMy4yLjINCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gdGFibGUoc3RyaW5nICR0YWJsZSk6IHNlbGYNCgl7DQoJCSR0aGlzLT50YWJsZSA9ICR0YWJsZTsNCg0KCQlyZXR1cm4gJHRoaXM7DQoJfQ0KDQoJLyoqDQoJICogR2V0IGEgc3ViZm9ybSBpdGVtcw0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAgICRsaW5rVmFsdWUgIFRoZSB2YWx1ZSBvZiB0aGUgbGluayBrZXkgaW4gY2hpbGQgdGFibGUuDQoJICogQHBhcmFtIHN0cmluZyAgICRsaW5rS2V5ICAgIFRoZSBsaW5rIGtleSBvbiB3aGljaCB0aGUgaXRlbXMgd2hlcmUgbGlua2VkIGluIHRoZSBjaGlsZCB0YWJsZS4NCgkgKiBAcGFyYW0gc3RyaW5nICAgJGZpZWxkICAgICAgVGhlIHBhcmVudCBmaWVsZCBuYW1lIG9mIHRoZSBzdWJmb3JtIGluIHRoZSBwYXJlbnQgdmlldy4NCgkgKiBAcGFyYW0gYXJyYXkgICAgJGdldCAgICAgICAgVGhlIGFycmF5IGdldDpzZXQgb2YgdGhlIGtleXMgb2YgZWFjaCByb3cgaW4gdGhlIHN1YmZvcm0uDQoJICogQHBhcmFtIGJvb2wgICAgICRtdWx0aSAgICAgIFRoZSBzd2l0Y2ggdG8gcmV0dXJuIGEgbXVsdGlwbGUgc2V0Lg0KCSAqDQoJICogQHJldHVybiBhcnJheXxudWxsICAgVGhlIHN1YmZvcm0NCgkgKiBAc2luY2UgIDMuMi4yDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGdldChzdHJpbmcgJGxpbmtWYWx1ZSwgc3RyaW5nICRsaW5rS2V5LCBzdHJpbmcgJGZpZWxkLCBhcnJheSAkZ2V0LCBib29sICRtdWx0aSA9IHRydWUpOiA/YXJyYXkNCgl7DQoJCWlmICgoJGl0ZW1zID0gJHRoaXMtPml0ZW1zLT50YWJsZSgkdGhpcy0+Z2V0VGFibGUoKSktPmdldChbJGxpbmtWYWx1ZV0sICRsaW5rS2V5KSkgIT09IG51bGwpDQoJCXsNCgkJCXJldHVybiAkdGhpcy0+Y29udmVydGVyKA0KCQkJCSR0aGlzLT5nZXRVc2Vyc0RldGFpbHMoJGl0ZW1zKSwNCgkJCQkkZ2V0LA0KCQkJCSRmaWVsZCwNCgkJCQkkbXVsdGkNCgkJCSk7DQoJCX0NCg0KCQlyZXR1cm4gbnVsbDsNCgl9DQoNCgkvKioNCgkgKiBTZXQgYSBzdWJmb3JtIGl0ZW1zDQoJICoNCgkgKiBAcGFyYW0gbWl4ZWQgICAgJGl0ZW1zICAgICAgVGhlIGxpc3Qgb2YgaXRlbXMgZnJvbSB0aGUgc3ViZm9ybSB0byBzZXQNCgkgKiBAcGFyYW0gc3RyaW5nICAgJGluZGV4S2V5ICAgVGhlIGluZGV4IGtleSBvbiB3aGljaCB0aGUgaXRlbXMgc2hvdWxkIGJlIG9ic2VydmVkIGFzIGl0IHJlbGF0ZXMgdG8gaW5zZXJ0L3VwZGF0ZS9kZWxldGUuDQoJICogQHBhcmFtIHN0cmluZyAgICRsaW5rS2V5ICAgIFRoZSBsaW5rIGtleSBvbiB3aGljaCB0aGUgaXRlbXMgd2hlcmUgbGlua2VkIGluIHRoZSBjaGlsZCB0YWJsZS4NCgkgKiBAcGFyYW0gc3RyaW5nICAgJGxpbmtWYWx1ZSAgVGhlIHZhbHVlIG9mIHRoZSBsaW5rIGtleSBpbiBjaGlsZCB0YWJsZS4NCgkgKg0KCSAqIEByZXR1cm4gYm9vbA0KCSAqIEBzaW5jZSAgMy4yLjLine truncated
(823, '5acded67-0e3d-4c6b-a6ea-b533b076de0c', 'VDM.Data.Guid', 'Guid', 'trait', 'Globally Unique Identifier\r\n\r\n@since 5.0.2', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIwDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Data.Guid', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIFJldHVybnMgYSBHVUlEdjQgc3RyaW5nLg0KCSAqIA0KCSAqIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYmVzdCBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgbWV0aG9kDQoJICogYXZhaWxhYmxlIG9uIHRoZSBwbGF0Zm9ybSB3aXRoIGEgZmFsbGJhY2sgdG8gYW4gb2xkZXIsIGxlc3Mgc2VjdXJlIHZlcnNpb24uDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleSB0byBjaGVjayBhbmQgbW9kaWZ5IHZhbHVlcy4NCgkgKg0KCSAqIEByZXR1cm4gc3RyaW5nIEEgR1VJRHY0IHN0cmluZy4NCgkgKg0KCSAqIEBzaW5jZSA1LjAuMg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZXRHdWlkKHN0cmluZyAka2V5KTogc3RyaW5nDQoJew0KCQkvLyBXaW5kb3dzOiBVc2UgY29tX2NyZWF0ZV9ndWlkIGlmIGF2YWlsYWJsZQ0KCQlpZiAoZnVuY3Rpb25fZXhpc3RzKCdjb21fY3JlYXRlX2d1aWQnKSkNCgkJew0KCQkJJGd1aWQgPSB0cmltKFxjb21fY3JlYXRlX2d1aWQoKSwgJ3t9Jyk7DQoJCQlyZXR1cm4gJHRoaXMtPmNoZWNrR3VpZCgkZ3VpZCwgJGtleSk7DQoJCX0NCg0KCQkvLyBVbml4LWJhc2VkIHN5c3RlbXM6IFVzZSBvcGVuc3NsX3JhbmRvbV9wc2V1ZG9fYnl0ZXMgaWYgYXZhaWxhYmxlDQoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ3JhbmRvbV9ieXRlcycpKQ0KCQl7DQoJCQl0cnkgew0KCQkJCSRkYXRhID0gcmFuZG9tX2J5dGVzKDE2KTsNCgkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgew0KCQkJCS8vIEhhbmRsZSB0aGUgZXJyb3IgYXBwcm9wcmlhdGVseSAobG9nZ2luZywgdGhyb3dpbmcsIGV0Yy4pDQoJCQkJcmV0dXJuICR0aGlzLT5mYWxsYmFja0d1aWQoJGtleSk7DQoJCQl9DQoNCgkJCS8vIFNldCB0aGUgdmVyc2lvbiB0byAwMTAwIGFuZCB0aGUgYml0cyA2LTcgdG8gMTAgYXMgcGVyIFJGQyA0MTIyDQoJCQkkZGF0YVs2XSA9IGNocihvcmQoJGRhdGFbNl0pICYgMHgwZiB8IDB4NDApOw0KCQkJJGRhdGFbOF0gPSBjaHIob3JkKCRkYXRhWzhdKSAmIDB4M2YgfCAweDgwKTsNCg0KCQkJJGd1aWQgPSB2c3ByaW50ZignJXMlcy0lcy0lcy0lcy0lcyVzJXMnLCBzdHJfc3BsaXQoYmluMmhleCgkZGF0YSksIDQpKTsNCgkJCXJldHVybiAkdGhpcy0+Y2hlY2tHdWlkKCRndWlkLCAka2V5KTsNCgkJfQ0KDQoJCS8vIEZhbGxiYWNrIHRvIG9sZGVyIG1ldGhvZHMgaWYgc2VjdXJlIG1ldGhvZHMgYXJlIG5vdCBhdmFpbGFibGUNCgkJcmV0dXJuICR0aGlzLT5mYWxsYmFja0d1aWQoJGtleSk7DQoJfQ0KDQoJLyoqDQoJICogVmFsaWRhdGUgdGhlIEdsb2JhbGx5IFVuaXF1ZSBJZGVudGlmaWVyDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRndWlkDQoJICoNCgkgKiBAcmV0dXJuIGJvb2wNCgkgKiBAc2luY2UgIDUuMC40DQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiB2YWxpZGF0ZUd1aWQoJGd1aWQpDQoJew0KCQkvLyBjaGVjayBpZiB3ZSBoYXZlIGEgc3RyaW5nDQoJCWlmICghZW1wdHkoJGd1aWQpICYmIGlzX3N0cmluZygkZ3VpZCkpDQoJCXsNCgkJCXJldHVybiBwcmVnX21hdGNoKCIvXihceyk/W2EtZlxkXXs4fSgtW2EtZlxkXXs0fSl7NH1bYS1mXGRdezh9KD8oMSlcfSkkL2kiLCAkZ3VpZCk7DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIEdlbmVyYXRlcyBhIGZhbGxiYWNrIEdVSUR2NCB1c2luZyBsZXNzIHNlY3VyZSBtZXRob2RzLg0KCSAqDQoJICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkgdG8gY2hlY2sgYW5kIG1vZGlmeSB2YWx1ZXMuDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZyBBIEdVSUR2NCBzdHJpbmcuDQoJICoNCgkgKiBAc2luY2UgNS4wLjINCgkgKi8NCglwcml2YXRlIGZ1bmN0aW9uIGZhbGxiYWNrR3VpZChzdHJpbmcgJGtleSk6IHN0cmluZw0KCXsNCgkJJGNoYXJpZCA9IHN0cnRvbG93ZXIobWQ1KHVuaXFpZChyYW5kb21faW50KDAsIFBIUF9JTlRfTUFYKSwgdHJ1ZSkpKTsNCgkJJGd1aWR2NCA9IHNwcmludGYoDQoJCQknJXMtJXMtJXMtJXMtJXMnLA0KCQkJc3Vic3RyKCRjaGFyaWQsICAwLCA4KSwNCgkJCXN1YnN0cigkY2hhcmlkLCAgOCwgNCksDQoJCQlzdWJzdHIoJGNoYXJpZCwgMTIsIDQpLA0KCQkJc3Vic3RyKCRjaGFyaWQsIDE2LCA0KSwNCgkJCXN1YnN0cigkY2hhcmlkLCAyMCwgMTIpDQoJCSk7DQoNCgkJcmV0dXJuICR0aGlzLT5jaGVja0d1aWQoJGd1aWR2NCwgJGtleSk7DQoJfQ0KDQoJLyoqDQoJICogQ2hlY2tzIGlmIHRoZSBHVUlEIHZhbHVlIGlzIHVuaXF1ZSBhbmQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4NCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJGd1aWQgVGhlIEdVSUQgdmFsdWUgdG8gY2hlY2suDQoJICogQHBhcmFtIHN0cmluZyAka2V5ICBUaGUga2V5IHRvIGNoZWNrIGFuZCBtb2RpZnkgdmFsdWVzLg0KCSAqDQoJICogQHJldHVybiBzdHJpbmcgVGhlIHVuaXF1ZSBHVUlEIHZhbHVlLg0KCSAqDQoJICogQHNpbmNlIDUuMC4yDQoJICovDQoJcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0d1aWQoc3RyaW5nICRndWlkLCBzdHJpbmcgJGtleSk6IHN0cmluZw0KCXsNCgkJLy8gQ2hlY2sgdGhhdCB0aGUgR1VJRCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0DQoJCWlmICgkdGhpcy0+aXRlbXMtPnRhYmxlKCR0aGlzLT5nZXRUYWJsZSgpKS0+dmFsdWVzKFskZ3VpZF0sICRrZXkpKQ0KCQl7DQoJCQlyZXR1cm4gJHRoaXMtPmdldEd1aWQoJGtleSk7DQoJCX0NCg0KCQlyZXR1cm4gJGd1aWQ7DQoJfQ==', '{}', '{}', NULL, 1, '2024-09-02 00:08:44', 4, 0, 1),
(824, '576685fd-263c-46bb-9fdc-1f5eb234cbb6', 'VDM.Interfaces.Data.GuidInterface', 'GuidInterface', 'interface', 'Globally Unique Identifier Interface\r\n\r\n@since 5.0.2', 2, 'LyoqDQogKiBAcGFja2FnZSAgICBKb29tbGEuQ29tcG9uZW50LkJ1aWxkZXINCiAqDQogKiBAY3JlYXRlZCAgICA0dGggU2VwdGVtYmVyLCAyMDIyDQogKiBAYXV0aG9yICAgICBMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZSA8aHR0cHM6Ly9kZXYudmRtLmlvPg0KICogQGdpdCAgICAgICAgSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIDxodHRwczovL2dpdC52ZG0uZGV2L2pvb21sYS9Db21wb25lbnQtQnVpbGRlcj4NCiAqIEBjb3B5cmlnaHQgIENvcHlyaWdodCAoQykgMjAxNSBWYXN0IERldmVsb3BtZW50IE1ldGhvZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAqIEBsaWNlbnNlICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBsYXRlcjsgc2VlIExJQ0VOU0UudHh0DQogKi8NCg==', '1.0.0', 0, '', '', '', '', '', '[[[NamespacePrefix]]]\\Joomla\\Interfaces.Data.GuidInterface', 0, '{}', '{}', '', '{}', 'CS8qKg0KCSAqIFJldHVybnMgYSBHVUlEdjQgc3RyaW5nLg0KCSAqIA0KCSAqIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYmVzdCBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgbWV0aG9kDQoJICogYXZhaWxhYmxlIG9uIHRoZSBwbGF0Zm9ybSB3aXRoIGEgZmFsbGJhY2sgdG8gYW4gb2xkZXIsIGxlc3Mgc2VjdXJlIHZlcnNpb24uDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleSB0byBjaGVjayBhbmQgbW9kaWZ5IHZhbHVlcy4NCgkgKg0KCSAqIEByZXR1cm4gc3RyaW5nIEEgR1VJRHY0IHN0cmluZy4NCgkgKg0KCSAqIEBzaW5jZSA1LjAuMg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBnZXRHdWlkKHN0cmluZyAka2V5KTogc3RyaW5nOw==', '{}', '{}', NULL, 1, '2024-09-02 00:11:37', 3, 0, 1),
@@ -2432,7 +2432,7 @@ INSERT INTO `#__componentbuilder_class_method` (`id`, `arguments`, `code`, `comm
(15, 'JGNvbnRleHQsICRwa3MsICR2YWx1ZQ==', '', 'CS8qKg0KCSAqIFRoaXMgaXMgYW4gZXZlbnQgdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgY29udGVudHMgc3RhdGUgaXMgY2hhbmdlZC4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRjb250ZXh0ICBUaGUgY29udGV4dCBmb3IgdGhlIGNvbnRlbnQgcGFzc2VkIHRvIHRoZSBwbHVnaW4uDQoJICogQHBhcmFtICAgYXJyYXkgICAgJHBrcyAgICAgIEEgbGlzdCBvZiBwcmltYXJ5IGtleSBpZHMgb2YgdGhlIGNvbnRlbnQgdGhhdCBoYXMgY2hhbmdlZCBzdGF0ZS4NCgkgKiBAcGFyYW0gICBpbnRlZ2VyICAkdmFsdWUgICAgVGhlIHZhbHVlIG9mIHRoZSBzdGF0ZSB0aGF0IHRoZSBjb250ZW50IGhhcyBiZWVuIGNoYW5nZWQgdG8uDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8=', 'plugins', '92e46234-5c28-4eb1-b3e9-b7adbfc7bbd4', '37f35ae4-fc6c-49f0-b070-8701da85455d', 'onContentChangeState', 'public', '', 1, '2019-07-15 11:06:03', '2025-05-31 19:43:43', 19, 0, 1),
(16, 'JGNvbnRleHQsICYkcm93LCAmJHBhcmFtcywgJHBhZ2UgPSAw', '', 'CS8qKg0KCSAqIFRoaXMgaXMgdGhlIGZpcnN0IHN0YWdlIGluIHByZXBhcmluZyBjb250ZW50IGZvciBvdXRwdXQgYW5kIGlzIHRoZQ0KCSAqIG1vc3QgY29tbW9uIHBvaW50IGZvciBjb250ZW50IG9yaWVudGF0ZWQgcGx1Z2lucyB0byBkbyB0aGVpciB3b3JrLg0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJGNvbnRleHQgIFRoZSBjb250ZXh0IG9mIHRoZSBjb250ZW50IGJlaW5nIHBhc3NlZCB0byB0aGUgcGx1Z2luLg0KCSAqIEBwYXJhbSAgIG9iamVjdCAgICYkcm93ICAgICBUaGUgYXJ0aWNsZSBvYmplY3QuICBOb3RlICRhcnRpY2xlLT50ZXh0IGlzIGFsc28gYXZhaWxhYmxlDQoJICogQHBhcmFtICAgbWl4ZWQgICAgJiRwYXJhbXMgIFRoZSBhcnRpY2xlIHBhcmFtcw0KCSAqIEBwYXJhbSAgIGludGVnZXIgICRwYWdlICAgICBUaGUgJ3BhZ2UnIG51bWJlcg0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICov', 'plugins', '92fe98ad-c529-494a-9147-5ae1e4d78068', '37f35ae4-fc6c-49f0-b070-8701da85455d', 'onContentPrepare', 'public', '', 1, '2019-07-15 11:06:03', '2025-05-31 19:45:24', 19, 0, 1),
(17, 'JG5hbWU=', 'CQkkbGluayA9ICdpbmRleC5waHA/b3B0aW9uPWNvbV9mb28mYW1wO3ZpZXc9Zm9vJmFtcDtsYXlvdXQ9bW9kYWwmYW1wO3RtcGw9Y29tcG9uZW50JmFtcDsnDQoJCQkuIFNlc3Npb246OmdldEZvcm1Ub2tlbigpIC4gJz0xJmFtcDtlZGl0b3I9JyAuICRuYW1lOw0KDQoJCSRidXR0b24gPSBuZXcgQ01TT2JqZWN0Ow0KCQkkYnV0dG9uLT5tb2RhbCA9IHRydWU7DQoJCSRidXR0b24tPmNsYXNzID0gJ2J0biBidG4tc2Vjb25kYXJ5JzsNCgkJJGJ1dHRvbi0+bGluayA9ICRsaW5rOw0KCQkkYnV0dG9uLT50ZXh0ID0gVGV4dDo6XygnUExHX0VESVRPUlNYVERfRk9PX0JVVFRPTl9GT08nKTsNCgkJJGJ1dHRvbi0+bmFtZSA9ICdmaWxlLWFkZCc7DQoJCSRidXR0b24tPm9wdGlvbnMgPSBhcnJheSgNCgkJCSdoZWlnaHQnICAgICA9PiAnMzAwcHgnLA0KCQkJJ3dpZHRoJyAgICAgID0+ICc4MDBweCcsDQoJCQknYm9keUhlaWdodCcgPT4gJzcwJywNCgkJCSdtb2RhbFdpZHRoJyA9PiAnODAnLA0KCQkpOw0KDQoJCXJldHVybiAkYnV0dG9uOw==', 'CS8qKg0KCSAqIERpc3BsYXkgdGhlIGJ1dHRvbg0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICRuYW1lIFRoZSBuYW1lIG9mIHRoZSBidXR0b24gdG8gYWRkDQoJICoNCgkgKiBAcmV0dXJuICBDTVNPYmplY3QgIFRoZSBidXR0b24gb3B0aW9ucyBhcyBKT2JqZWN0DQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8=', 'plugins', 'b1d55780-5ba8-40d2-8dd6-fd9cd1ecf7f4', '9d4e911a-866f-4363-a47e-fc63f219aa01', 'onDisplay', 'public', '', 1, '2019-07-15 11:06:03', '2025-05-31 19:51:26', 19, 0, 1),
(18, 'JGZpZWxkLCBET01FbGVtZW50ICRwYXJlbnQsIEpGb3JtICRmb3Jt', '', 'CS8qKg0KCSAqIFRyYW5zZm9ybXMgdGhlIGZpZWxkIGludG8gYSBET00gWE1MIGVsZW1lbnQgYW5kIGFwcGVuZHMgaXQgYXMgYSBjaGlsZCBvbiB0aGUgZ2l2ZW4gcGFyZW50Lg0KCSAqDQoJICogQHBhcmFtICAgc3RkQ2xhc3MgICAkZmllbGQgIFRoZSBmaWVsZC4NCgkgKiBAcGFyYW0gICBET01FbGVtZW50ICRwYXJlbnQgVGhlIGZpZWxkIG5vZGUgcGFyZW50Lg0KCSAqIEBwYXJhbSAgIEpGb3JtICAgICAgJGZvcm0gICBUaGUgZm9ybS4NCgkgKg0KCSAqIEByZXR1cm4gIERPTUVsZW1lbnQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMC4wDQoJICov', 'plugins', '62a85e6b-8d40-46fb-bb82-6999d79bddac', 'cc5b64a6-dbec-45b7-97e2-87893ea6827d', 'onCustomFieldsPrepareDom', 'public', '', 1, '2019-07-15 11:06:03', '2025-05-31 20:24:05', 19, 0, 1),
(18, 'JGZpZWxkLCBET01FbGVtZW50ICRwYXJlbnQsIEpvb21sYV9fX2M0ZmU3Mzc3X2Y4OTFfNDIxOF9iN2UzX2E0MGJjOTljMGE2MV9fX1Bvd2VyICRmb3Jt', '', 'CS8qKg0KCSAqIFRyYW5zZm9ybXMgdGhlIGZpZWxkIGludG8gYSBET00gWE1MIGVsZW1lbnQgYW5kIGFwcGVuZHMgaXQgYXMgYSBjaGlsZCBvbiB0aGUgZ2l2ZW4gcGFyZW50Lg0KCSAqDQoJICogQHBhcmFtICAgc3RkQ2xhc3MgICAkZmllbGQgIFRoZSBmaWVsZC4NCgkgKiBAcGFyYW0gICBET01FbGVtZW50ICRwYXJlbnQgVGhlIGZpZWxkIG5vZGUgcGFyZW50Lg0KCSAqIEBwYXJhbSAgIEpvb21sYV9fX2M0ZmU3Mzc3X2Y4OTFfNDIxOF9iN2UzX2E0MGJjOTljMGE2MV9fX1Bvd2VyICAgICAgJGZvcm0gICBUaGUgZm9ybS4NCgkgKg0KCSAqIEByZXR1cm4gIERPTUVsZW1lbnQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMC4wDQoJICov', 'plugins', '62a85e6b-8d40-46fb-bb82-6999d79bddac', 'cc5b64a6-dbec-45b7-97e2-87893ea6827d', 'onCustomFieldsPrepareDom', 'public', '', 1, '2019-07-15 11:06:03', '2025-05-31 20:24:05', 19, 0, 1),
(19, 'JGNvbnRleHQsICRpdGVtLCAkaXNOZXcsICRkYXRhID0gYXJyYXko', '', 'CS8qKg0KCSAqIFRoZSBzYXZlIGV2ZW50Lg0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAkY29udGV4dCBUaGUgY29udGV4dA0KCSAqIEBwYXJhbSAgIEpUYWJsZSAgJGl0ZW0gICAgVGhlIHRhYmxlDQoJICogQHBhcmFtICAgYm9vbGVhbiAkaXNOZXcgICBJcyBuZXcgaXRlbQ0KCSAqIEBwYXJhbSAgIGFycmF5ICAgJGRhdGEgICAgVGhlIHZhbGlkYXRlZCBkYXRhDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuDQoJICoNCgkgKiBAc2luY2UgICAxLjAuMA0KCSAqLw==', 'plugins', 'd831a202-15f1-4458-b26c-7c69dee2caf5', 'cc5b64a6-dbec-45b7-97e2-87893ea6827d', 'onContentBeforeSave', 'public', '', 1, '2019-07-15 11:06:03', '2025-05-31 20:25:05', 19, 0, 1),
(20, 'JGV4dGVuc2lvbiwgJHBrcywgJHZhbHVl', 'CQkvLyBNYWtlIHN1cmUgd2UncmUgaGFuZGxpbmcgY29tX2NvbnRlbnQgY2F0ZWdvcmllcy4NCgkJaWYgKCRleHRlbnNpb24gPT09ICdjb21fZm9vJykNCgkJew0KCQkJJHRoaXMtPmNhdGVnb3J5U3RhdGVDaGFuZ2UoJHBrcywgJHZhbHVlKTsNCgkJfQ==', 'CS8qKg0KCSAqIE1ldGhvZCB0byB1cGRhdGUgdGhlIGl0ZW0gbGluayBpbmZvcm1hdGlvbiB3aGVuIHRoZSBpdGVtIGNhdGVnb3J5IGlzDQoJICogY2hhbmdlZC4gVGhpcyBpcyBmaXJlZCB3aGVuIHRoZSBpdGVtIGNhdGVnb3J5IGlzIHB1Ymxpc2hlZCBvciB1bnB1Ymxpc2hlZA0KCSAqIGZyb20gdGhlIGxpc3Qgdmlldy4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRleHRlbnNpb24gIFRoZSBleHRlbnNpb24gd2hvc2UgY2F0ZWdvcnkgaGFzIGJlZW4gdXBkYXRlZC4NCgkgKiBAcGFyYW0gICBhcnJheSAgICAkcGtzICAgICAgICBBIGxpc3Qgb2YgcHJpbWFyeSBrZXkgaWRzIG9mIHRoZSBjb250ZW50IHRoYXQgaGFzIGNoYW5nZWQgc3RhdGUuDQoJICogQHBhcmFtICAgaW50ZWdlciAgJHZhbHVlICAgICAgVGhlIHZhbHVlIG9mIHRoZSBzdGF0ZSB0aGF0IHRoZSBjb250ZW50IGhhcyBiZWVuIGNoYW5nZWQgdG8uDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8=', 'plugins', 'fcccc173-d2ef-411c-9d39-b1db373bdc5d', '75021594-d111-4e01-9d42-4e86e57bbec3', 'onFinderCategoryChangeState', 'public', '', 1, '2019-07-15 11:06:03', '2025-05-31 20:28:26', 19, 0, 1),
(21, 'JGNvbnRleHQsICR0YWJsZQ==', 'CQlpZiAoJGNvbnRleHQgPT09ICdjb21fZm9vLmZvbycpDQoJCXsNCgkJCSRpZCA9ICR0YWJsZS0+aWQ7DQoJCX0NCgkJZWxzZWlmICgkY29udGV4dCA9PT0gJ2NvbV9maW5kZXIuaW5kZXgnKQ0KCQl7DQoJCQkkaWQgPSAkdGFibGUtPmxpbmtfaWQ7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KDQoJCS8vIFJlbW92ZSBpdGVtIGZyb20gdGhlIGluZGV4Lg0KCQlyZXR1cm4gJHRoaXMtPnJlbW92ZSgkaWQpOw==', 'CS8qKg0KCSAqIE1ldGhvZCB0byByZW1vdmUgdGhlIGxpbmsgaW5mb3JtYXRpb24gZm9yIGl0ZW1zIHRoYXQgaGF2ZSBiZWVuIGRlbGV0ZWQuDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRjb250ZXh0ICBUaGUgY29udGV4dCBvZiB0aGUgYWN0aW9uIGJlaW5nIHBlcmZvcm1lZC4NCgkgKiBAcGFyYW0gICBKVGFibGUgICR0YWJsZSAgICBBIEpUYWJsZSBvYmplY3QgY29udGFpbmluZyB0aGUgcmVjb3JkIHRvIGJlIGRlbGV0ZWQNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2xlYW4gIFRydWUgb24gc3VjY2Vzcy4NCgkgKg0KCSAqIEBzaW5jZSAgIDIuNQ0KCSAqIEB0aHJvd3MgIEV4Y2VwdGlvbiBvbiBkYXRhYmFzZSBlcnJvci4NCgkgKi8=', 'plugins', '581a6599-d81c-4b98-9eca-5d934abad88c', '75021594-d111-4e01-9d42-4e86e57bbec3', 'onFinderAfterDelete', 'public', '', 1, '2019-07-15 11:06:03', '2025-05-31 20:28:43', 19, 0, 1),
@@ -2528,7 +2528,7 @@ INSERT INTO `#__componentbuilder_class_method` (`id`, `arguments`, `code`, `comm
(111, 'JG1vZGVsLCAmJHBhY2thZ2UsICRpbnN0YWxsZXIsICYkcmVzdWx0LCAmJG1zZw==', '', 'CS8qKg0KCSAqIG9uSW5zdGFsbGVyQWZ0ZXJJbnN0YWxsZXIuDQoJICoNCgkgKiBUaGlzIGV2ZW50IGFsbG93cyBhIGN1c3RvbSBhIHBvc3QtZmxpZ2h0DQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8=', 'plugins', 'e3633016-5801-44ab-81d8-ff19c396745f', '93940067-92d1-4cc2-b4e2-d3fc118d99bd', 'onInstallerAfterInstaller', 'public', '', 1, '2019-08-14 14:59:09', '2025-05-31 20:40:34', 19, 0, 1),
(112, 'JGNvbnRleHQsICYkZGF0YQ==', '', 'CS8qKg0KCSAqIFJ1bnMgb24gY29udGVudCBwcmVwYXJhdGlvbiBvZiBkYXRhDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICRjb250ZXh0ICBUaGUgY29udGV4dCBmb3IgdGhlIGRhdGENCgkgKiBAcGFyYW0gICBvYmplY3QgICRkYXRhICAgICBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgZGF0YSBmb3IgdGhlIGZvcm0uDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8=', 'plugins', 'ab056f69-a17e-4060-99c3-3b0505da2c49', '37f35ae4-fc6c-49f0-b070-8701da85455d', 'onContentPrepareData', 'public', '', 1, '2019-08-17 01:59:23', '2025-05-31 19:46:40', 15, 0, 4),
(113, 'Rm9ybSAkZm9ybSwgJGRhdGE=', '', 'CS8qKg0KCSAqIFJ1bnMgb24gY29udGVudCBwcmVwYXJhdGlvbiBvZiBmb3JtLg0KCSAqDQoJICogQHBhcmFtICAgRm9ybSAgICAgJGZvcm0gIFRoZSBmb3JtDQoJICogQHBhcmFtICAgc3RkQ2xhc3MgICRkYXRhICBUaGUgZGF0YQ0KCSAqDQoJICogQHJldHVybiAgYm9vbGVhbg0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICov', 'plugins', '2d8f2ef2-5f8c-420f-a3c9-c252315b10ab', '37f35ae4-fc6c-49f0-b070-8701da85455d', 'onContentPrepareForm', 'public', '', 1, '2019-08-17 01:59:23', '2025-05-31 19:47:38', 15, 0, 4),
(114, 'SkZvcm0gJGZvcm0sICYkZGF0YQ==', '', 'CS8qKgoJICogVGhlIHZhbGlkYXRpb24gZXZlbnQuCgkgKgoJICogQHBhcmFtICAgSkZvcm0gICAgICRmb3JtICBUaGUgZm9ybQoJICogQHBhcmFtICAgc3RkQ2xhc3MgICRkYXRhICBUaGUgZGF0YQoJICoKCSAqIEByZXR1cm4gIHZvaWQKCSAqCgkgKiBAc2luY2UgICAxLjAKCSAqLw==', 'plugins', '962e479a-7e71-40e2-92ff-b944f8345e42', 'cc83a326-07a4-41d0-a456-4123eb77e655', 'onUserBeforeDataValidation', 'public', '', 1, '2019-08-17 01:59:23', '0000-00-00 00:00:00', 1, 0, 4),
(114, 'Sm9vbWxhX19fYzRmZTczNzdfZjg5MV80MjE4X2I3ZTNfYTQwYmM5OWMwYTYxX19fUG93ZXIgJGZvcm0sICYkZGF0YQ==', '', 'CS8qKgoJICogVGhlIHZhbGlkYXRpb24gZXZlbnQuCgkgKgoJICogQHBhcmFtICAgSm9vbWxhX19fYzRmZTczNzdfZjg5MV80MjE4X2I3ZTNfYTQwYmM5OWMwYTYxX19fUG93ZXIgICAgICRmb3JtICBUaGUgZm9ybQoJICogQHBhcmFtICAgc3RkQ2xhc3MgICRkYXRhICBUaGUgZGF0YQoJICoKCSAqIEByZXR1cm4gIHZvaWQKCSAqCgkgKiBAc2luY2UgICAxLjAKCSAqLw==', 'plugins', '962e479a-7e71-40e2-92ff-b944f8345e42', 'cc83a326-07a4-41d0-a456-4123eb77e655', 'onUserBeforeDataValidation', 'public', '', 1, '2019-08-17 01:59:23', '0000-00-00 00:00:00', 1, 0, 4),
(115, 'JGNvbnRleHQsICRkYXRhLCBGb3JtICRmb3Jt', '', 'CS8qKg0KCSAqIE5vcm1hbGl6ZXMgdGhlIHJlcXVlc3QgZGF0YS4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJGNvbnRleHQgIFRoZSBjb250ZXh0DQoJICogQHBhcmFtICAgb2JqZWN0ICAkZGF0YSAgICAgVGhlIG9iamVjdA0KCSAqIEBwYXJhbSAgIEZvcm0gICAgJGZvcm0gICAgIFRoZSBmb3JtDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8=', 'plugins', '782ad30f-b914-439a-913e-1f173041f146', '37f35ae4-fc6c-49f0-b070-8701da85455d', 'onContentNormaliseRequestData', 'public', '', 1, '2019-08-22 01:09:18', '2025-05-31 19:48:10', 14, 0, 5),
(116, 'JiRjb25maWcsICRjb21waWxlcg==', 'CQkvLyBkbyBzb21ldGhpbmcgb24gdGhlIGpjYl9jZV9vbkJlZm9yZUdldCBldmVudA==', 'CS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBHZXRdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8=', 'plugins', '36244a14-d958-4eca-a144-641e7a443116', 'e0947c15-d3d0-4e21-8e60-044ee8a946d6', 'jcb_ce_onBeforeGet', 'public', '', 1, '2019-08-22 01:09:18', '2025-05-31 20:14:30', 21, 0, 1),
(117, '', 'CQkvLyBkbyBzb21ldGhpbmcgb24gdGhlIGpjYl9jZV9vbkFmdGVyR2V0IGV2ZW50', 'CS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEFmdGVyIEdldF0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw==', 'plugins', '0695639b-a4b9-4e90-a6cb-a7664b8299fa', 'e0947c15-d3d0-4e21-8e60-044ee8a946d6', 'jcb_ce_onAfterGet', 'public', '', 1, '2019-08-22 01:09:18', '2025-05-31 20:18:21', 21, 0, 1),
@@ -2904,7 +2904,7 @@ INSERT INTO `#__componentbuilder_fieldtype` (`id`, `description`, `name`, `prope
(44, 'The imagelist form field type provides a drop down list of image files in a specified directory. Only files with .png, .gif, .jpg, .bmp, .ico extensions are listed. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.\r\n\r\nBy default, the first item on the list is \'- Do not use -\' (which is translatable) and is given the value \'-1\' and this is followed by \'- Use default -\' (also translatable) given the value \'0\'.', 'Imagelist', '{\"properties0\":{\"name\":\"type\",\"example\":\"imagelist\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be imagelist.\"},\"properties1\":{\"name\":\"name\",\"example\":\"myimagelist\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select an image\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"directory\",\"example\":\"images\\/stories\",\"adjustable\":\"1\",\"description\":\"(optional) is the filesystem path to the directory containing the image files to be listed. If omitted the directory given by JPATH_ROOT is assumed.\"},\"properties4\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default image file name.\"},\"properties5\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties6\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to filter the list of image files selected for inclusion in the drop-down list. If omitted, all image files in the directory are included. The filter argument expression is applied before the exclude argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties7\":{\"name\":\"exclude\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to exclude image files from the list. The exclude argument expression is applied after the filter argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties8\":{\"name\":\"stripext\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true then file name extensions will be stripped from the image file names listed. Also note that the file name will be saved without the extension too.\"},\"properties9\":{\"name\":\"hide_none\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Do not use -\' item is omitted from the drop-down list.\"},\"properties10\":{\"name\":\"hide_default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Use default -\' item is omitted from the drop-down list.\"},\"properties11\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Image file dropdown from directory.', '', 1, 4, 0, 14, '72680e92-2859-49c6-ad92-c2329c52f9f8'),
(45, ' The Modal menu form field type provides a styled drop-down list of Joomla menu items, visually matching Joomla\'s modal UI patterns. Unlike the modal select field type, it does not open a modal window for selection but instead presents menu items in a compact, dropdown format consistent with the modal design language used in Joomla\'s administrator interface.', 'Modal Menu', '{\"properties0\":{\"name\":\"type\",\"example\":\"modal_menu\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be modal_menu.\"},\"properties1\":{\"name\":\"name\",\"example\":\"base\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Base Item\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"option\",\"example\":\"Current\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) set the options of this radio. Separate options with commas and use the pipe symbol to separate value from text.\"},\"properties4\":{\"name\":\"select\",\"example\":\"true\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) show select options\"},\"properties5\":{\"name\":\"new\",\"example\":\"true\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory)\"},\"properties6\":{\"name\":\"edit\",\"example\":\"true\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory)\"},\"properties7\":{\"name\":\"description\",\"example\":\"Select a menu item to always be used as the base for the menu display. You must set the Start Level to the same level or higher than the level of the base item. This will cause the module to be displayed on all assigned pages. If Current is selected the active item is used as the base. This causes the module to only display when the parent menu item is active.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties8\":{\"name\":\"clear\",\"example\":\"true\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory)\"},\"properties9\":{\"name\":\"disable\",\"example\":\"separator,alias,heading,url\",\"adjustable\":\"1\",\"description\":\"(optional)\"},\"properties10\":{\"name\":\"filter\",\"example\":\"integer\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to filter the list of image files selected for inclusion in the drop-down list. If omitted, all image files in the directory are included. The filter argument expression is applied before the exclude argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties11\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\\r\\n\"}}', 'Styled dropdown of menu items.', '', 1, 8, 0, 15, '715256a4-8cc2-4d66-9d08-31e58ca5b036'),
(46, 'The menu form field type provides a drop down list of the available menus from your Joomla! site. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected. ', 'Menu', '{\"properties0\":{\"name\":\"type\",\"example\":\"menu\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be menu.\"},\"properties1\":{\"name\":\"name\",\"example\":\"menutype\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the filed.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Menu to Show\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"Choose which menu should be rendered with this instance of module.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) tooltip for the form field.\"},\"properties4\":{\"name\":\"clientid\",\"example\":\"0\",\"adjustable\":\"1\",\"description\":\"\"},\"properties5\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default menu. Note that this is the name of the menu shown in the Type column on the Menu Manager screen and not the menu ID number.\"},\"properties6\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties7\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'Dropdown list of Joomla menus.', '', 1, 6, 0, 16, '6349f152-8ef5-43bd-a89b-ce18f33ac5e5'),
(47, 'Dynamic Checkboxes generates a list of checkboxes dynamically based on data retrieved at runtime, such as from a database query or external source. Useful for displaying variable options that may change depending on context or configuration.', 'DynamicCheckboxes@', '{\"properties0\":{\"name\":\"type\",\"example\":\"change_this\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) can be anything, just not the same as any other default Joomla field type. You can also not use the \\\"_\\\" (underscore) or \\\"-\\\" (hyphen) in the type name, and no spaces.\"},\"properties1\":{\"name\":\"name\",\"example\":\"dynamic_checkboxes\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Dynamic Checkboxes\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"The checkbox linked to global subform of the same name\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"option\",\"example\":\"1|Default\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) set the options of this checkboxes. Separate options with commas and use the pipe symbol to separate value from text.\"},\"properties5\":{\"name\":\"default\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties6\":{\"name\":\"required\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties7\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties8\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"},\"properties9\":{\"name\":\"extends\",\"example\":\"checkboxes\",\"mandatory\":\"1\",\"description\":\"Must be checkboxes\"},\"properties10\":{\"name\":\"type_phpHEADER_1\",\"example\":\"\\\\JFormHelper::loadFieldClass(\'checkboxes\');\\r\\nuse VDM\\\\Joomla\\\\Utilities\\\\Component\\\\Helper;\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"The Header USE options\"},\"properties11\":{\"name\":\"type_php_1\",\"example\":\"\\t\\/**\\r\\n\\t * Method to get the data to be passed to the layout for rendering.\\r\\n\\t *\\r\\n\\t * @return array\\r\\n\\t *\\r\\n\\t * @since 3.5\\r\\n\\t *\\/\\r\\n\\tprotected function getLayoutData()\\r\\n\\t{\\r\\n\\t\\t$data = parent::getLayoutData();\\r\\n\\r\\n\\t\\t\\/\\/ True if the field has \'value\' set. In other words, it has been stored, don\'t use the default values.\\r\\n\\t\\t$hasValue = (isset($this->value) && !empty($this->value));\\r\\n\\r\\n\\t\\t\\/\\/ If a value has been stored, use it. Otherwise, use the defaults.\\r\\n\\t\\t$checkedOptions = $hasValue ? $this->value : $this->checkedOptions;\\r\\n\\r\\n\\t\\t\\/\\/ get the form options\\r\\n\\t\\t$options = $this->getOptions();\\r\\n\\r\\n\\t\\t\\/\\/ get the component params\\r\\n\\t\\t$params = Helper::getParams();\\r\\n\\t\\t$subform = $params->get($this->fieldname);\\r\\n\\r\\n\\t\\t\\/\\/ add the paths found in global settings\\r\\n\\t\\tif (is_array($subform) && $subform !== [])\\r\\n\\t\\t{\\r\\n\\t\\t\\tforeach ($subform as $value)\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\tif (isset($value->path) && strlen($value->path) > 3)\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t$tmp = new \\\\stdClass;\\r\\n\\t\\t\\t\\t\\t$tmp->value = $value->set_me;\\r\\n\\t\\t\\t\\t\\t$tmp->text = $value->set_me;\\r\\n\\t\\t\\t\\t\\t$tmp->checked = false;\\r\\n\\r\\n\\t\\t\\t\\t\\t$options[] = $tmp;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\r\\n\\t\\t$extraData = array(\\r\\n\\t\\t\\t\'checkedOptions\' => is_array($checkedOptions) ? $checkedOptions : explode(\',\', (string) $checkedOptions),\\r\\n\\t\\t\\t\'hasValue\' => $hasValue,\\r\\n\\t\\t\\t\'options\' => $options\\r\\n\\t\\t);\\r\\n\\r\\n\\t\\treturn array_merge($data, $extraData);\\r\\n\\t}\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"The php for the getLayoutData method.\"}}', 'Super Power Repository Paths', '', 1, 15, 0, 12, '7ed21e79-cbc5-48e3-9ed0-ca72b0f2f1a1'),
(47, 'Dynamic Checkboxes generates a list of checkboxes dynamically based on data retrieved at runtime, such as from a database query or external source. Useful for displaying variable options that may change depending on context or configuration.', 'DynamicCheckboxes@', '{\"properties0\":{\"name\":\"type\",\"example\":\"change_this\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) can be anything, just not the same as any other default Joomla field type. You can also not use the \\\"_\\\" (underscore) or \\\"-\\\" (hyphen) in the type name, and no spaces.\"},\"properties1\":{\"name\":\"name\",\"example\":\"dynamic_checkboxes\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Dynamic Checkboxes\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"The checkbox linked to global subform of the same name\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"option\",\"example\":\"1|Default\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) set the options of this checkboxes. Separate options with commas and use the pipe symbol to separate value from text.\"},\"properties5\":{\"name\":\"default\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties6\":{\"name\":\"required\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties7\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties8\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"},\"properties9\":{\"name\":\"extends\",\"example\":\"checkboxes\",\"mandatory\":\"1\",\"description\":\"Must be checkboxes\"},\"properties10\":{\"name\":\"type_phpHEADER_1\",\"example\":\"FormHelper::loadFieldClass(\'checkboxes\');\\r\\nuse VDM\\\\Joomla\\\\Utilities\\\\Component\\\\Helper;\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"The Header USE options\"},\"properties11\":{\"name\":\"type_php_1\",\"example\":\"\\t\\/**\\r\\n\\t * Method to get the data to be passed to the layout for rendering.\\r\\n\\t *\\r\\n\\t * @return array\\r\\n\\t *\\r\\n\\t * @since 3.5\\r\\n\\t *\\/\\r\\n\\tprotected function getLayoutData()\\r\\n\\t{\\r\\n\\t\\t$data = parent::getLayoutData();\\r\\n\\r\\n\\t\\t\\/\\/ True if the field has \'value\' set. In other words, it has been stored, don\'t use the default values.\\r\\n\\t\\t$hasValue = (isset($this->value) && !empty($this->value));\\r\\n\\r\\n\\t\\t\\/\\/ If a value has been stored, use it. Otherwise, use the defaults.\\r\\n\\t\\t$checkedOptions = $hasValue ? $this->value : $this->checkedOptions;\\r\\n\\r\\n\\t\\t\\/\\/ get the form options\\r\\n\\t\\t$options = $this->getOptions();\\r\\n\\r\\n\\t\\t\\/\\/ get the component params\\r\\n\\t\\t$params = Helper::getParams();\\r\\n\\t\\t$subform = $params->get($this->fieldname);\\r\\n\\r\\n\\t\\t\\/\\/ add the paths found in global settings\\r\\n\\t\\tif (is_array($subform) && $subform !== [])\\r\\n\\t\\t{\\r\\n\\t\\t\\tforeach ($subform as $value)\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\tif (isset($value->path) && strlen($value->path) > 3)\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t$tmp = new \\\\stdClass;\\r\\n\\t\\t\\t\\t\\t$tmp->value = $value->set_me;\\r\\n\\t\\t\\t\\t\\t$tmp->text = $value->set_me;\\r\\n\\t\\t\\t\\t\\t$tmp->checked = false;\\r\\n\\r\\n\\t\\t\\t\\t\\t$options[] = $tmp;\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\r\\n\\t\\t$extraData = array(\\r\\n\\t\\t\\t\'checkedOptions\' => is_array($checkedOptions) ? $checkedOptions : explode(\',\', (string) $checkedOptions),\\r\\n\\t\\t\\t\'hasValue\' => $hasValue,\\r\\n\\t\\t\\t\'options\' => $options\\r\\n\\t\\t);\\r\\n\\r\\n\\t\\treturn array_merge($data, $extraData);\\r\\n\\t}\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"The php for the getLayoutData method.\"}}', 'Super Power Repository Paths', '', 1, 15, 0, 12, '7ed21e79-cbc5-48e3-9ed0-ca72b0f2f1a1'),
(48, 'The ModalSelectField offers an intuitive, user-friendly modal popup interface within Joomla\'s administrator forms. It enables users to select existing records, create new records, edit existing records, or clear selected records directly from within the form. The field retrieves and displays the selected record\'s title dynamically, based on configurable database parameters. It simplifies relational data handling, enhancing the user experience by minimizing page transitions and streamlining record management tasks in Joomla administration interfaces.', 'ModalSelect', '{\"properties0\":{\"name\":\"type\",\"example\":\"ModalSelect\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be ModalSelect.\"},\"properties1\":{\"name\":\"name\",\"example\":\"targetview\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Enter some text\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"sql_title_table\",\"example\":\"#__###component###_targetview\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"Database table (with prefix) used for retrieving title.\"},\"properties4\":{\"name\":\"sql_title_column\",\"example\":\"title\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"Column used for the title display in the modal input field.\"},\"properties5\":{\"name\":\"sql_title_key\",\"example\":\"id\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"Primary key column name of the selected item (usually id).\"},\"properties6\":{\"name\":\"urlSelect\",\"example\":\"index.php?option=com_###component###&amp;view=targetviews&amp;layout=modal&amp;tmpl=component&amp;titleKey=id\",\"adjustable\":\"1\",\"description\":\"URL for opening modal to select an existing record. Important note, the [titleKey] in the url must be equal to [sql_title_key]\"},\"properties7\":{\"name\":\"urlNew\",\"example\":\"index.php?option=com_###component###&amp;task=targetview.add&amp;layout=modal&amp;tmpl=component\",\"adjustable\":\"1\",\"description\":\"URL for opening modal to create a new record.\"},\"properties8\":{\"name\":\"urlEdit\",\"example\":\"index.php?option=com_###component###&amp;task=targetview.edit&amp;id={id}&amp;layout=modal&amp;tmpl=component\",\"adjustable\":\"1\",\"description\":\"URL for editing selected record. {id} dynamically replaced with the [sql_title_key] valiue.\"},\"properties9\":{\"name\":\"titleSelect\",\"example\":\"Select Targetview\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"Modal title for the record selection window.\"},\"properties10\":{\"name\":\"titleNew\",\"example\":\"New Targetview\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"Modal title displayed when creating a new record.\"},\"properties11\":{\"name\":\"titleEdit\",\"example\":\"Edit Targetview\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"Modal title displayed when editing existing record.\"},\"properties12\":{\"name\":\"iconSelect\",\"example\":\"icon-copy\",\"adjustable\":\"1\",\"description\":\"CSS icon class from Icomoon or FontAwesome for select button.\"},\"properties13\":{\"name\":\"select\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"Allow users to select a record (true\\/false). Default: true.\"},\"properties14\":{\"name\":\"new\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"Allow users to create a new record (true\\/false). Default: false.\"},\"properties15\":{\"name\":\"edit\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"Allow editing of selected record (true\\/false). Default: false.\"},\"properties16\":{\"name\":\"clear\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"Allow clearing of the current selection (true\\/false). Default: true.\"},\"properties17\":{\"name\":\"required\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties18\":{\"name\":\"class\",\"example\":\"input-large\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'input-large\'.\"},\"properties19\":{\"name\":\"description\",\"example\":\"Enter some description\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties20\":{\"name\":\"hint\",\"example\":\"Select a Targetview\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The placeholder to display inside the text box.\"},\"properties21\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value of the field (item ID).\"},\"properties22\":{\"Line truncated
--
+302 -290
View File
@@ -14,78 +14,107 @@ use Joomla\CMS\Factory;
use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Mail\Mail;
use Joomla\Registry\Registry;
use VDM\Joomla\Utilities\ArrayHelper;
use Joomla\CMS\Mail\MailerInterface;
use Joomla\CMS\Mail\MailerFactoryInterface;
// No direct access to this file
\defined('_JEXEC') or die;
/**
* Componentbuilder component email helper
*
* @since 3.0
* Provides a complete and configurable mailer integration for Joomla components.
* Allows for custom headers, DKIM signing, embedded images, and HTML styling.
*
* @since 3.0
*/
abstract class ComponentbuilderEmail
{
/**
* The active recipient
* The active recipient.
*
* @var activeRecipient (array)
* @var array<string, mixed>
* @since 3.0
*/
public static $active = [];
public static array $active = [];
/**
* Configuration object
* Mail instances container.
*
* @var Registry
* @var MailerInterface[]
* @since 1.7.3
*/
public static ?Registry $config = null;
protected static array $instances = [];
/**
* Mailer object
* Global Configuration object.
*
* @var Mail
* @var Registry|null
* @since 5.1.1
*/
public static ?Mail $mailer = null;
protected static ?Registry $gConfig = null;
/**
* Custom Headers
* Component Configuration object.
*
* @var array
* @var Registry|null
* @since 3.0
*/
protected static ?Registry $config = null;
/**
* Mailer object.
*
* @var MailerInterface|null
* @since 3.0
*/
protected static ?MailerInterface $mailer = null;
/**
* Custom email headers.
*
* @var array<string, string>
* @since 3.0
*/
protected static array $header = [];
/**
* Get a configuration object
* Retrieve the component configuration.
*
* @return Registry Component configuration object
* @since 3.0
*/
public static function getConfig()
protected static function getConfig(): Registry
{
if (!self::$config)
{
self::$config = ComponentHelper::getParams('com_componentbuilder');
}
return self::$config;
return self::$config ??= ComponentHelper::getParams('com_componentbuilder');
}
/**
* Returns the global mailer object, only creating it if it doesn't already exist.
* Retrieve the global configuration.
*
* @return Registry Global configuration object
* @since 3.0
*/
public static function getMailerInstance()
protected static function getGlobalConfig(): Registry
{
if (!self::$mailer)
{
self::$mailer = self::createMailer();
}
return self::$mailer;
return self::$gConfig ??= Factory::getApplication()->getConfig();
}
/**
* Check that a string looks like an email address.
* @param string $address The email address to check
* @param string|callable $patternselect A selector for the validation pattern to use :
* Get or create a Mailer instance.
*
* @return MailerInterface A cloned Mail object instance
* @since 3.0
*/
public static function getMailer(): MailerInterface
{
return self::$mailer ??= self::createMailer();
}
/**
* Validate an email address using a selected pattern or callable.
*
* @param string $address Email address to validate.
* @param string|callable|null $patternselect Validation pattern or callable.
* * `auto` Pick best pattern automatically;
* * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14;
* * `pcre` Use old PCRE implementation;
@@ -97,374 +126,357 @@ abstract class ComponentbuilderEmail
* return (strpos($address, '@') !== false);
* });
* You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator.
* @return boolean
* @static
* @access public
*
* @return bool True if valid, false otherwise
* @since 3.0
*/
public static function validateAddress($address, $patternselect = null): bool
public static function validateAddress(string $address, $patternselect = null): bool
{
return self::getMailerInstance()->validateAddress($address, $patternselect);
return self::getMailer()->validateAddress($address, $patternselect);
}
/**
* Get a mailer object.
* Set a custom email header.
*
* Returns the global {@link Mail} object, only creating it if it doesn't already exist.
* @param string $key Header name.
* @param string $value Header value.
*
* @return Mail object
*
* @see Mail
* @return void
* @since 3.0
*/
public static function getMailer(): Mail
public static function setHeader(string $key, string $value): void
{
if (!self::$mailer)
self::$header[$key] = $value;
}
/**
* Get or create a Mail instance with specific configuration.
*
* @param string $id Instance ID.
* @param bool $exceptions Enable exceptions.
*
* @return MailerInterface Configured Mail instance
* @since 5.1.1
*/
public static function getInstance(string $id = 'Joomla', bool $exceptions = true): MailerInterface
{
if (!isset(self::$instances[$id]))
{
self::$mailer = self::createMailer();
$config = clone self::getGlobalConfig();
$config->set('throw_exceptions', $exceptions);
self::$instances[$id] = Factory::getContainer()->get(MailerFactoryInterface::class)->createMailer($config);
}
$copy = clone self::$mailer;
return $copy;
return self::$instances[$id];
}
/**
* Create a mailer object
* Create a configured Mail instance.
*
* @return Mail object
*
* @see Mail
* @return MailerInterface The created Mail object with sender, reply-to and transport settings.
* @since 3.0
*/
protected static function createMailer(): Mail
protected static function createMailer(): MailerInterface
{
// set component params
$conf = self::getConfig();
// now load the mailer
$conf = self::getConfig();
$mailer = $conf->get('mailer', 'global');
$mail = self::getInstance();
// Create a Mail object
$mail = Mail::getInstance();
// check if set to global
if ('global' == $mailer)
if ($mailer === 'global')
{
// get the global details
$globalConf = Factory::getConfig();
$mailer = $globalConf->get('mailer');
$smtpauth = ($globalConf->get('smtpauth') == 0) ? null : 1;
$smtpuser = $globalConf->get('smtpuser');
$smtppass = $globalConf->get('smtppass');
$smtphost = $globalConf->get('smtphost');
$smtpsecure = $globalConf->get('smtpsecure');
$smtpport = $globalConf->get('smtpport');
$sendmail = $globalConf->get('sendmail');
$mailfrom = $globalConf->get('mailfrom');
$fromname = $globalConf->get('fromname');
$replyto = $globalConf->get('replyto');
$replytoname = $globalConf->get('replytoname');
$global = self::getGlobalConfig();
$mailer = $global->get('mailer');
$params = [
'smtpauth' => $global->get('smtpauth') ? 1 : null,
'smtpuser' => $global->get('smtpuser'),
'smtppass' => $global->get('smtppass'),
'smtphost' => $global->get('smtphost'),
'smtpsecure' => $global->get('smtpsecure'),
'smtpport' => $global->get('smtpport'),
'sendmail' => $global->get('sendmail'),
'from' => $global->get('mailfrom'),
'name' => $global->get('fromname'),
'replyto' => $global->get('replyto'),
'replytoname' => $global->get('replytoname'),
];
}
else
{
$smtpauth = ($conf->get('smtpauth') == 0) ? null : 1;
$smtpuser = $conf->get('smtpuser');
$smtppass = $conf->get('smtppass');
$smtphost = $conf->get('smtphost');
$smtpsecure = $conf->get('smtpsecure');
$smtpport = $conf->get('smtpport');
$sendmail = $conf->get('sendmail');
$mailfrom = $conf->get('emailfrom');
$fromname = $conf->get('fromname');
$replyto = $conf->get('replyto');
$replytoname = $conf->get('replytoname');
$params = [
'smtpauth' => $conf->get('smtpauth') ? 1 : null,
'smtpuser' => $conf->get('smtpuser'),
'smtppass' => $conf->get('smtppass'),
'smtphost' => $conf->get('smtphost'),
'smtpsecure' => $conf->get('smtpsecure'),
'smtpport' => $conf->get('smtpport'),
'sendmail' => $conf->get('sendmail'),
'from' => $conf->get('emailfrom'),
'name' => $conf->get('fromname'),
'replyto' => $conf->get('replyto'),
'replytoname' => $conf->get('replytoname'),
];
}
// Set global sender
$mail->setSender(array($mailfrom, $fromname));
$mail->setSender([$params['from'], $params['name']]);
// set the global reply-to if found
if ($replyto && $replytoname)
{
if (!empty($params['replyto']) && !empty($params['replytoname']))
{
$mail->ClearReplyTos();
$mail->addReplyTo($replyto, $replytoname);
$mail->addReplyTo($params['replyto'], $params['replytoname']);
}
// Default mailer is to use PHP's mail function
switch ($mailer)
{
case 'smtp':
// set the SMTP option
$mail->useSMTP($smtpauth, $smtphost, $smtpuser, $smtppass, $smtpsecure, $smtpport);
$mail->useSMTP(
$params['smtpauth'],
$params['smtphost'],
$params['smtpuser'],
$params['smtppass'],
$params['smtpsecure'],
$params['smtpport']
);
break;
case 'sendmail':
// set the sendmail option
$mail->useSendmail($sendmail);
$mail->useSendmail($params['sendmail']);
$mail->IsSendmail();
break;
default:
$mail->IsMail();
break;
}
return $mail;
}
/**
* Set a Mail custom header.
* Compose and send an email with full options including attachments, HTML, DKIM, and reply-to support.
*
* @return void
* @param string|array $recipient Email or list of recipients.
* @param string $subject Subject line.
* @param string $body HTML body.
* @param string|null $textonly Optional plain text fallback.
* @param int $mode 1 = HTML, 0 = plain text.
* @param string|null $bounce_email Optional bounce email address.
* @param string|null $idsession Optional message tracking tag.
* @param string|array|null $mailreply Optional reply-to address(es).
* @param string|array|null $replyname Optional reply-to name(s).
* @param string|null $mailfrom Optional sender email override.
* @param string|null $fromname Optional sender name override.
* @param array|null $cc CC recipients.
* @param array|null $bcc BCC recipients.
* @param array|string|null $attachment Attachments.
* @param bool $embeded Embed image flag.
* @param array|null $embeds Embedded image definitions.
*
* @return bool True on success, false on failure.
* @since 3.0
*/
public static function setHeader($target, $value)
{
// set the header
self::$header[$target] = $value;
}
/**
* Send an email
*
* @return bool on success
*
*/
public static function send($recipient, $subject, $body, $textonly, $mode = 0, $bounce_email = null, $idsession = null, $mailreply = null, $replyname = null , $mailfrom = null, $fromname = null, $cc = null, $bcc = null, $attachment = null, $embeded = null , $embeds = null)
{
// Get a Mail instance
public static function send(
$recipient,
string $subject,
string $body,
?string $textonly,
int $mode = 0,
?string $bounce_email = null,
?string $idsession = null,
$mailreply = null,
$replyname = null,
?string $mailfrom = null,
?string $fromname = null,
?array $cc = null,
?array $bcc = null,
$attachment = null,
bool $embeded = false,
?array $embeds = null
): bool {
$mail = self::getMailer();
// set component params
$conf = self::getConfig();
// set if we have override
if ($mailfrom && $fromname)
{
$mail->setSender(array($mailfrom, $fromname));
$mail->setSender([$mailfrom, $fromname]);
}
// load the bounce email as sender if set
if (!is_null($bounce_email))
if ($bounce_email)
{
$mail->Sender = $bounce_email;
}
// Add tag to email to identify it
if (!is_null($idsession))
if ($idsession)
{
$mail->addCustomHeader('X-VDMmethodID:'.$idsession);
$mail->addCustomHeader('X-VDMmethodID:' . $idsession);
}
// set headers if found
if (isset(self::$header) && is_array(self::$header) && count((array)self::$header) > 0)
foreach (self::$header as $key => $val)
{
foreach (self::$header as $_target => $_value)
{
$mail->addCustomHeader($_target.':'.$_value);
}
$mail->addCustomHeader($key . ':' . $val);
}
// set the subject & Body
$mail->setSubject($subject);
$mail->setBody($body);
// Are we sending the email as HTML?
if ($mode)
{
$mail->IsHTML(true);
$mail->isHTML(true);
$mail->AltBody = $textonly;
}
//embed images
if ($embeded)
if ($embeded && !empty($embeds))
{
if(ArrayHelper::check($embeds))
foreach ($embeds as $embed)
{
foreach($embeds as $embed)
{
$mail->AddEmbeddedImage($embed->Path,$embed->FileName);
}
$mail->addEmbeddedImage($embed->Path, $embed->FileName);
}
}
$mail->addRecipient($recipient);
$mail->addCC($cc);
$mail->addBCC($bcc);
$mail->addAttachment($attachment);
if (!empty($cc)) $mail->addCC($cc);
if (!empty($bcc)) $mail->addBCC($bcc);
if (!empty($attachment)) $mail->addAttachment($attachment);
// Take care of reply email addresses
if (is_array($mailreply))
if (!empty($mailreply))
{
$mail->ClearReplyTos();
$numReplyTo = count((array)$mailreply);
for ($i=0; $i < $numReplyTo; $i++)
if (is_array($mailreply))
{
$mail->addReplyTo($mailreply[$i], $replyname[$i]);
foreach ($mailreply as $i => $reply)
{
$mail->addReplyTo($reply, $replyname[$i] ?? '');
}
}
else
{
$mail->addReplyTo($mailreply, (string) $replyname);
}
}
elseif (!empty($mailreply))
{
$mail->ClearReplyTos();
$mail->addReplyTo($mailreply, $replyname);
}
// check if we can add the DKIM to email
if ($conf->get('enable_dkim'))
{
if (!empty($conf->get('dkim_domain')) && !empty($conf->get('dkim_selector')) && !empty($conf->get('dkim_private')) && !empty($conf->get('dkim_public')))
{
$mail->DKIM_domain = $conf->get('dkim_domain');
$mail->DKIM_selector = $conf->get('dkim_selector');
$mail->DKIM_identity = $conf->get('dkim_identity');
$mail->DKIM_passphrase = $conf->get('dkim_passphrase');
$sent = false;
$tmp = null;
try {
if (
$conf->get('enable_dkim') &&
($domain = $conf->get('dkim_domain')) &&
($selector = $conf->get('dkim_selector')) &&
($privateKey = $conf->get('dkim_private'))
) {
$mail->DKIM_domain = $domain;
$mail->DKIM_selector = $selector;
$mail->DKIM_identity = $conf->get('dkim_identity') ?: $domain;
$mail->DKIM_passphrase = $conf->get('dkim_passphrase');
$tmp = tempnam(sys_get_temp_dir(), 'VDM');
$h = fopen($tmp, 'w');
fwrite($h, $conf->get('dkim_private'));
fclose($h);
$mail->DKIM_private = $tmp;
if ($tmp === false || file_put_contents($tmp, $privateKey) === false)
{
throw new \RuntimeException('Failed to create temporary DKIM private key file.');
}
$mail->DKIM_private = $tmp;
}
$sent = $mail->Send();
} finally {
if ($tmp && file_exists($tmp))
{
@unlink($tmp);
}
}
$sendmail = $mail->Send();
$sent = $mail->Send();
if ($conf->get('enable_dkim') && !empty($conf->get('dkim_domain')) && !empty($conf->get('dkim_selector')) && !empty($conf->get('dkim_private')) && !empty($conf->get('dkim_public')))
if ($tmp)
{
@unlink($tmp);
}
if (method_exists('ComponentbuilderHelper','storeMessage'))
if (method_exists('ComponentbuilderHelper', 'storeMessage'))
{
// if we have active recipient details
if (isset(self::$active[$recipient]))
{
// store the massage if the method is set
ComponentbuilderHelper::storeMessage($sendmail, self::$active[$recipient], $subject, $body, $textonly, $mode, 'email');
// clear memory
unset(self::$active[$recipient]);
}
else
{
// store the massage if the method is set
ComponentbuilderHelper::storeMessage($sendmail, $recipient, $subject, $body, $textonly, $mode, 'email');
}
$data = self::$active[$recipient] ?? $recipient;
ComponentbuilderHelper::storeMessage($sent, $data, $subject, $body, $textonly, $mode, 'email');
unset(self::$active[$recipient]);
}
return $sendmail;
return $sent;
}
/**
* Set html text (in a row) and subject (as title) to a email table.
* do not use <p> instead use <br />
* in your html that you pass to this method
* since it is a table row it does not
* work well with paragraphs
* Build a complete minimal HTML email body with basic headers.
* Use <br /> instead of <p> for layout consistency in emails.
*
* @return string on success
* @param string $html Body HTML content.
* @param string $subject Email subject/title used in the <title> tag.
*
* @return string Full HTML email body.
* @since 3.0
*/
public static function setBasicBody($html, $subject)
public static function setBasicBody(string $html, string $subject): string
{
$body = [];
$body[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";
$body[] = "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
$body[] = "<head>";
$body[] = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
$body[] = "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>";
$body[] = "<title>" . $subject . "</title>";
$body[] = "<style type=\"text/css\">";
$body[] = "#outlook a {padding:0;}";
$body[] = ".ExternalClass {width:100%;}";
$body[] = ".ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} ";
$body[] = "p {margin: 0; padding: 0; font-size: 0px; line-height: 0px;} ";
$body[] = "table td {border-collapse: collapse;}";
$body[] = "table {border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }";
$body[] = "img {display: block; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;}";
$body[] = "a img {border: none;}";
$body[] = "a {text-decoration: none; color: #000001;}";
$body[] = "a.phone {text-decoration: none; color: #000001 !important; pointer-events: auto; cursor: default;}";
$body[] = "span {font-size: 13px; line-height: 17px; font-family: monospace; color: #000001;}";
$body[] = "</style>";
$body[] = "<!--[if gte mso 9]>";
$body[] = "<style>";
$body[] = "/* Target Outlook 2007 and 2010 */";
$body[] = "</style>";
$body[] = "<![endif]-->";
$body[] = "</head>";
$body[] = "<body style=\"width:100%; margin:0; padding:0; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;\">";
$body[] = $html;
$body[] = "</body>";
$body[] = "</html>";
return implode("\n", $body);
return implode("\n", [
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
'<html xmlns="http://www.w3.org/1999/xhtml">',
'<head>',
'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />',
'<meta name="viewport" content="width=device-width, initial-scale=1.0"/>',
'<title>' . htmlspecialchars($subject) . '</title>',
'<style type="text/css">',
'#outlook a {padding:0;} .ExternalClass {width:100%;} .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height:100%;}',
'p {margin: 0; padding: 0; font-size: 0px; line-height: 0px;}',
'table, table td {border-collapse: collapse;}',
'img {display:block; outline:none; text-decoration:none; -ms-interpolation-mode:bicubic;}',
'a img {border:none;} a {text-decoration:none; color:#000001;} a.phone {pointer-events:auto; cursor:default; color:#000001 !important;}',
'span {font-size:13px; line-height:17px; font-family:monospace; color:#000001;}',
'</style>',
'<!--[if gte mso 9]><style>/* Target Outlook 2007 and 2010 */</style><![endif]-->',
'</head>',
'<body style="width:100%; margin:0; padding:0; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">',
$html,
'</body>',
'</html>'
]);
}
/**
* Set html text (in a row) and subject (as title) to a email table.
* do not use <p> instead use <br />
* in your html that you pass to this method
* since it is a table row it does not
* work well with paragraphs
* Build a styled HTML email with outer table formatting for wide layout support.
* Suitable for rich content emails that need outer table structure.
*
* @return string on success
* @param string $html Inner body HTML content.
* @param string $subject Email subject/title used in the <title> tag.
*
* @return string Complete HTML email content.
* @since 3.0
*/
public static function setTableBody($html, $subject)
public static function setTableBody(string $html, string $subject): string
{
$body = [];
$body[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";
$body[] = "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
$body[] = "<head>";
$body[] = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
$body[] = "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>";
$body[] = "<title>" . $subject . "</title>";
$body[] = "<style type=\"text/css\">";
$body[] = "#outlook a {padding:0;}";
$body[] = ".ExternalClass {width:100%;}";
$body[] = ".ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} ";
$body[] = "p {margin: 0; padding: 0; font-size: 0px; line-height: 0px;} ";
$body[] = "table td {border-collapse: collapse;}";
$body[] = "table {border-collapse: collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }";
$body[] = "img {display: block; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic;}";
$body[] = "a img {border: none;}";
$body[] = "a {text-decoration: none; color: #000001;}";
$body[] = "a.phone {text-decoration: none; color: #000001 !important; pointer-events: auto; cursor: default;}";
$body[] = "span {font-size: 13px; line-height: 17px; font-family: monospace; color: #000001;}";
$body[] = "</style>";
$body[] = "<!--[if gte mso 9]>";
$body[] = "<style>";
$body[] = "/* Target Outlook 2007 and 2010 */";
$body[] = "</style>";
$body[] = "<![endif]-->";
$body[] = "</head>";
$body[] = "<body style=\"width:100%; margin:0; padding:0; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;\">";
$body[] = "\n<!-- body wrapper -->";
$body[] = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"margin:0; padding:0; width:100%; line-height: 100% !important;\">";
$body[] = "<tr>";
$body[] = "<td valign=\"top\">";
$body[] = "<!-- edge wrapper -->";
$body[] = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\" width=\"800\" >";
$body[] = "<tr>";
$body[] = "<td valign=\"top\">";
$body[] = "<!-- content wrapper -->";
$body[] = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"center\" width=\"780\">";
$body[] = "<tr>";
$body[] = "<td valign=\"top\" style=\"vertical-align: top;\">";
$body[] = $html;
$body[] = "</td>";
$body[] = "</tr>";
$body[] = "</table>";
$body[] = "<!-- / content wrapper -->";
$body[] = "</td>";
$body[] = "</tr>";
$body[] = "</table>";
$body[] = "<!-- / edge wrapper -->";
$body[] = "</td>";
$body[] = "</tr>";
$body[] = "</table>";
$body[] = "<!-- / page wrapper -->";
$body[] = "</body>";
$body[] = "</html>";
return implode("\n", $body);
return implode("\n", [
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
'<html xmlns="http://www.w3.org/1999/xhtml">',
'<head>',
'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />',
'<meta name="viewport" content="width=device-width, initial-scale=1.0"/>',
'<title>' . htmlspecialchars($subject) . '</title>',
'<style type="text/css">',
'#outlook a {padding:0;} .ExternalClass {width:100%;} .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height:100%;}',
'p {margin: 0; padding: 0; font-size: 0px; line-height: 0px;}',
'table, table td {border-collapse: collapse;}',
'img {display:block; outline:none; text-decoration:none; -ms-interpolation-mode:bicubic;}',
'a img {border:none;} a {text-decoration:none; color:#000001;} a.phone {pointer-events:auto; cursor:default; color:#000001 !important;}',
'span {font-size:13px; line-height:17px; font-family:monospace; color:#000001;}',
'</style>',
'<!--[if gte mso 9]><style>/* Target Outlook 2007 and 2010 */</style><![endif]-->',
'</head>',
'<body style="width:100%; margin:0; padding:0; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;">',
'<table cellpadding="0" cellspacing="0" border="0" width="100%" style="line-height:100% !important;">',
'<tr><td valign="top">',
'<table cellpadding="0" cellspacing="0" border="0" align="center" width="800">',
'<tr><td valign="top">',
'<table cellpadding="0" cellspacing="0" border="0" align="center" width="780">',
'<tr><td valign="top" style="vertical-align:top;">',
$html,
'</td></tr></table>',
'</td></tr></table>',
'</td></tr></table>',
'</body>',
'</html>'
]);
}
}
+49 -48
View File
@@ -46,6 +46,7 @@ use VDM\Joomla\Utilities\FileHelper;
use VDM\Joomla\Utilities\JsonHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\Component\Helper;
use VDM\Joomla\Utilities\SessionHelper;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\FieldHelper;
use VDM\Joomla\Componentbuilder\Compiler\Factory as CompilerFactory;
use VDM\Joomla\Utilities\Base64Helper;
@@ -1469,15 +1470,6 @@ abstract class ComponentbuilderHelper
return false;
}
/**
* set the session defaults if not set
**/
protected static function setSessionDefaults()
{
// noting for now
return true;
}
/**
* check if it is a new hash
**/
@@ -2294,61 +2286,70 @@ abstract class ComponentbuilderHelper
/**
* the Butler
**/
public static $session = array();
* Local in-memory cache of session values for faster access.
*
* @var array<string, mixed>
* @since 3.5.2
*/
protected static array $localSession = [];
/**
* the Butler Assistant
**/
protected static $localSession = array();
/**
* start a session if not already set, and load with data
**/
public static function loadSession()
* Initialize the session and set default values.
*
* This ensures the session is ready and can be used safely.
* Defaults can be loaded or checked here if needed.
*
* @return void
* @throws \RuntimeException if the session cannot be initialized
* @since 3.5.2
*/
public static function loadSession(): void
{
if (!isset(self::$session) || !ObjectHelper::check(self::$session))
// Ensure the session is initialized (handled by the session() method).
SessionHelper::session();
// Set default session values if needed
if (method_exists(static::class, 'setSessionDefaults'))
{
self::$session = Factory::getApplication()->getSession();
static::setSessionDefaults();
}
// set the defaults
self::setSessionDefaults();
}
/**
* give Session more to keep
**/
public static function set($key, $value)
* Store a key-value pair in the session and local memory.
*
* @param string $key The session key name
* @param mixed $value The value to store
*
* @return mixed The previous session value if it existed
* @since 3.5.2
*/
public static function set(string $key, $value)
{
if (!isset(self::$session) || !ObjectHelper::check(self::$session))
{
self::$session = Factory::getApplication()->getSession();
}
// set to local memory to speed up program
self::$localSession[$key] = $value;
// load to session for later use
return self::$session->set($key, self::$localSession[$key]);
static::$localSession[$key] = $value;
return SessionHelper::set($key, $value);
}
/**
* get info from Session
**/
public static function get($key, $default = null)
* Retrieve a value from the session.
* Uses local cache if already fetched during this request.
*
* @param string $key The session key name
* @param mixed $default Default value if the key is not found
*
* @return mixed The session value
* @since 3.5.2
*/
public static function get(string $key, $default = null)
{
if (!isset(self::$session) || !ObjectHelper::check(self::$session))
if (!array_key_exists($key, static::$localSession))
{
self::$session = Factory::getApplication()->getSession();
static::$localSession[$key] = SessionHelper::get($key, $default);
}
// check if in local memory
if (!isset(self::$localSession[$key]))
{
// set to local memory to speed up program
self::$localSession[$key] = self::$session->get($key, $default);
}
return self::$localSession[$key];
}
return static::$localSession[$key];
}
/**
* get field type properties
+1 -1
View File
@@ -970,7 +970,7 @@ class Admin_viewModel extends AdminModel
/**
* Method to validate the form data.
*
* @param JForm $form The form to validate against.
* @param Form $form The form to validate against.
* @param array $data The data to validate.
* @param string $group The name of the field group to validate.
*
+2 -1
View File
@@ -28,6 +28,7 @@ use VDM\Joomla\Utilities\FormHelper as JCBFormHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\StringHelper;
use Joomla\CMS\Form\Form;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -109,7 +110,7 @@ class Admin_viewsModel extends ListModel
* @param array $data data
* @param boolean $loadData load current data
*
* @return \JForm|boolean The \JForm object or false on error
* @return Form|boolean The Form object or false on error
*
* @since JCB 2.12.5
*/
+2 -1
View File
@@ -28,6 +28,7 @@ use VDM\Joomla\Componentbuilder\Utilities\FilterHelper as JCBFilterHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\StringHelper;
use Joomla\CMS\Form\Form;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -108,7 +109,7 @@ class Custom_admin_viewsModel extends ListModel
* @param array $data data
* @param boolean $loadData load current data
*
* @return \JForm|boolean The \JForm object or false on error
* @return Form|boolean The Form object or false on error
*
* @since JCB 2.12.5
*/
+1 -1
View File
@@ -592,7 +592,7 @@ class Custom_codeModel extends AdminModel
/**
* Method to validate the form data.
*
* @param JForm $form The form to validate against.
* @param Form $form The form to validate against.
* @param array $data The data to validate.
* @param string $group The name of the field group to validate.
*
+1 -1
View File
@@ -747,7 +747,7 @@ class Dynamic_getModel extends AdminModel
/**
* Method to validate the form data.
*
* @param JForm $form The form to validate against.
* @param Form $form The form to validate against.
* @param array $data The data to validate.
* @param string $group The name of the field group to validate.
*
+1 -1
View File
@@ -678,7 +678,7 @@ class FieldModel extends AdminModel
/**
* Method to validate the form data.
*
* @param JForm $form The form to validate against.
* @param Form $form The form to validate against.
* @param array $data The data to validate.
* @param string $group The name of the field group to validate.
*
+2 -1
View File
@@ -28,6 +28,7 @@ use VDM\Joomla\Componentbuilder\Utilities\FilterHelper as JCBFilterHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\StringHelper;
use Joomla\CMS\Form\Form;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -111,7 +112,7 @@ class FieldsModel extends ListModel
* @param array $data data
* @param boolean $loadData load current data
*
* @return \JForm|boolean The \JForm object or false on error
* @return Form|boolean The Form object or false on error
*
* @since JCB 2.12.5
*/
+1 -1
View File
@@ -611,7 +611,7 @@ class FieldtypeModel extends AdminModel
/**
* Method to validate the form data.
*
* @param JForm $form The form to validate against.
* @param Form $form The form to validate against.
* @param array $data The data to validate.
* @param string $group The name of the field group to validate.
*
+1 -1
View File
@@ -477,7 +477,7 @@ class Help_documentModel extends AdminModel
/**
* Method to validate the form data.
*
* @param JForm $form The form to validate against.
* @param Form $form The form to validate against.
* @param array $data The data to validate.
* @param string $group The name of the field group to validate.
*
+1 -1
View File
@@ -904,7 +904,7 @@ class Joomla_componentModel extends AdminModel
/**
* Method to validate the form data.
*
* @param JForm $form The form to validate against.
* @param Form $form The form to validate against.
* @param array $data The data to validate.
* @param string $group The name of the field group to validate.
*
+63 -36
View File
@@ -202,6 +202,30 @@ class Language_translationModel extends AdminModel
$item->metadata = $registry->toArray();
}
if (!empty($item->plugins))
{
// Convert the plugins field to an array.
$plugins = new Registry;
$plugins->loadString($item->plugins);
$item->plugins = $plugins->toArray();
}
if (!empty($item->modules))
{
// Convert the modules field to an array.
$modules = new Registry;
$modules->loadString($item->modules);
$item->modules = $modules->toArray();
}
if (!empty($item->components))
{
// Convert the components field to an array.
$components = new Registry;
$components->loadString($item->components);
$item->components = $components->toArray();
}
if (!empty($item->translation))
{
// Convert the translation field to an array.
@@ -210,24 +234,6 @@ class Language_translationModel extends AdminModel
$item->translation = $translation->toArray();
}
if (!empty($item->plugins))
{
// JSON Decode plugins.
$item->plugins = json_decode($item->plugins);
}
if (!empty($item->modules))
{
// JSON Decode modules.
$item->modules = json_decode($item->modules);
}
if (!empty($item->components))
{
// JSON Decode components.
$item->components = json_decode($item->components);
}
if (empty($item->id))
{
@@ -987,6 +993,45 @@ class Language_translationModel extends AdminModel
$data['metadata'] = (string) $metadata;
}
// Set the plugins items to data.
if (isset($data['plugins']) && is_array($data['plugins']))
{
$plugins = new Registry;
$plugins->loadArray($data['plugins']);
$data['plugins'] = (string) $plugins;
}
elseif (!isset($data['plugins']))
{
// Set the empty plugins to data
$data['plugins'] = '';
}
// Set the modules items to data.
if (isset($data['modules']) && is_array($data['modules']))
{
$modules = new Registry;
$modules->loadArray($data['modules']);
$data['modules'] = (string) $modules;
}
elseif (!isset($data['modules']))
{
// Set the empty modules to data
$data['modules'] = '';
}
// Set the components items to data.
if (isset($data['components']) && is_array($data['components']))
{
$components = new Registry;
$components->loadArray($data['components']);
$data['components'] = (string) $components;
}
elseif (!isset($data['components']))
{
// Set the empty components to data
$data['components'] = '';
}
// Set the translation items to data.
if (isset($data['translation']) && is_array($data['translation']))
{
@@ -1000,24 +1045,6 @@ class Language_translationModel extends AdminModel
$data['translation'] = '';
}
// Set the plugins string to JSON string.
if (isset($data['plugins']))
{
$data['plugins'] = (string) json_encode($data['plugins']);
}
// Set the modules string to JSON string.
if (isset($data['modules']))
{
$data['modules'] = (string) json_encode($data['modules']);
}
// Set the components string to JSON string.
if (isset($data['components']))
{
$data['components'] = (string) json_encode($data['components']);
}
// Set the Params Items to data
if (isset($data['params']) && is_array($data['params']))
{
+76 -83
View File
@@ -29,6 +29,7 @@ use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\StringHelper;
use VDM\Joomla\Utilities\JsonHelper;
use Joomla\CMS\Form\Form;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -104,7 +105,7 @@ class Language_translationsModel extends ListModel
* @param array $data data
* @param boolean $loadData load current data
*
* @return \JForm|boolean The \JForm object or false on error
* @return Form|boolean The Form object or false on error
*
* @since JCB 2.12.5
*/
@@ -355,54 +356,50 @@ class Language_translationsModel extends ListModel
// From the componentbuilder_item table
$query->from($db->quoteName('#__componentbuilder_language_translation', 'a'));
// do not use these filters in the export method
if (!isset($_export) || !$_export)
// Filtering "translated in"
$filter_translated = $this->state->get("filter.translated");
if ($filter_translated !== null && !empty($filter_translated))
{
// Filtering "translated in"
$filter_translated = $this->state->get("filter.translated");
if ($filter_translated !== null && !empty($filter_translated))
if (($ids = JCBFilterHelper::translations($filter_translated)) !== null)
{
if (($ids = JCBFilterHelper::translations($filter_translated)) !== null)
{
$query->where($db->quoteName('a.id') . ' IN (' . implode(',', $ids) . ')');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
$query->where($db->quoteName('a.id') . ' IN (' . implode(',', $ids) . ')');
}
// Filtering "not translated in"
$filter_not_translated = $this->state->get("filter.not_translated");
if ($filter_not_translated !== null && !empty($filter_not_translated))
else
{
if (($ids = JCBFilterHelper::translations($filter_not_translated, false)) !== null)
{
$query->where($db->quoteName('a.id') . ' IN (' . implode(',',$ids) . ')');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
}
// Filtering "extension"
$filter_extension = $this->state->get("filter.extension");
if ($filter_extension !== null && !empty($filter_extension))
// Filtering "not translated in"
$filter_not_translated = $this->state->get("filter.not_translated");
if ($filter_not_translated !== null && !empty($filter_not_translated))
{
if (($ids = JCBFilterHelper::translations($filter_not_translated, false)) !== null)
{
// column name, and id
$type_extension = explode('__', $filter_extension);
if (($ids = JCBFilterHelper::translation((int) $type_extension[1], $type_extension[0])) !== null)
{
$query->where($db->quoteName('a.id') . ' IN (' . implode(',', $ids) . ')');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
$query->where($db->quoteName('a.id') . ' IN (' . implode(',',$ids) . ')');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
}
// Filtering "extension"
$filter_extension = $this->state->get("filter.extension");
if ($filter_extension !== null && !empty($filter_extension))
{
// column name, and id
$type_extension = explode('__', $filter_extension);
if (($ids = JCBFilterHelper::translation((string) $type_extension[1], (string) $type_extension[0])) !== null)
{
$query->where($db->quoteName('a.id') . ' IN (' . implode(',', $ids) . ')');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
}
@@ -516,54 +513,50 @@ class Language_translationsModel extends ListModel
$query->where('a.id IN (' . implode(',',$pks) . ')');
}
// do not use these filters in the export method
if (!isset($_export) || !$_export)
{
// Filtering "translated in"
$filter_translated = $this->state->get("filter.translated");
if ($filter_translated !== null && !empty($filter_translated))
$filter_translated = $this->state->get("filter.translated");
if ($filter_translated !== null && !empty($filter_translated))
{
if (($ids = JCBFilterHelper::translations($filter_translated)) !== null)
{
if (($ids = JCBFilterHelper::translations($filter_translated)) !== null)
{
$query->where($db->quoteName('a.id') . ' IN (' . implode(',', $ids) . ')');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
$query->where($db->quoteName('a.id') . ' IN (' . implode(',', $ids) . ')');
}
// Filtering "not translated in"
$filter_not_translated = $this->state->get("filter.not_translated");
if ($filter_not_translated !== null && !empty($filter_not_translated))
else
{
if (($ids = JCBFilterHelper::translations($filter_not_translated, false)) !== null)
{
$query->where($db->quoteName('a.id') . ' IN (' . implode(',',$ids) . ')');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
}
// Filtering "extension"
$filter_extension = $this->state->get("filter.extension");
if ($filter_extension !== null && !empty($filter_extension))
// Filtering "not translated in"
$filter_not_translated = $this->state->get("filter.not_translated");
if ($filter_not_translated !== null && !empty($filter_not_translated))
{
if (($ids = JCBFilterHelper::translations($filter_not_translated, false)) !== null)
{
// column name, and id
$type_extension = explode('__', $filter_extension);
if (($ids = JCBFilterHelper::translation((int) $type_extension[1], $type_extension[0])) !== null)
{
$query->where($db->quoteName('a.id') . ' IN (' . implode(',', $ids) . ')');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
$query->where($db->quoteName('a.id') . ' IN (' . implode(',',$ids) . ')');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
}
// Filtering "extension"
$filter_extension = $this->state->get("filter.extension");
if ($filter_extension !== null && !empty($filter_extension))
{
// column name, and id
$type_extension = explode('__', $filter_extension);
if (($ids = JCBFilterHelper::translation((string) $type_extension[1], (string) $type_extension[0])) !== null)
{
$query->where($db->quoteName('a.id') . ' IN (' . implode(',', $ids) . ')');
}
else
{
// there is none
$query->where($db->quoteName('a.id') . ' = ' . 0);
}
}
// Implement View Level Access
+1 -1
View File
@@ -615,7 +615,7 @@ class LibraryModel extends AdminModel
/**
* Method to validate the form data.
*
* @param JForm $form The form to validate against.
* @param Form $form The form to validate against.
* @param array $data The data to validate.
* @param string $group The name of the field group to validate.
*
+2 -1
View File
@@ -28,6 +28,7 @@ use VDM\Joomla\Utilities\FormHelper as JCBFormHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\StringHelper;
use Joomla\CMS\Form\Form;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -107,7 +108,7 @@ class PowersModel extends ListModel
* @param array $data data
* @param boolean $loadData load current data
*
* @return \JForm|boolean The \JForm object or false on error
* @return Form|boolean The Form object or false on error
*
* @since JCB 2.12.5
*/
+1 -1
View File
@@ -534,7 +534,7 @@ class ServerModel extends AdminModel
/**
* Method to validate the form data.
*
* @param JForm $form The form to validate against.
* @param Form $form The form to validate against.
* @param array $data The data to validate.
* @param string $group The name of the field group to validate.
*
+2 -1
View File
@@ -28,6 +28,7 @@ use VDM\Joomla\Componentbuilder\Utilities\FilterHelper as JCBFilterHelper;
use VDM\Joomla\Utilities\ArrayHelper as UtilitiesArrayHelper;
use VDM\Joomla\Utilities\ObjectHelper;
use VDM\Joomla\Utilities\StringHelper;
use Joomla\CMS\Form\Form;
// No direct access to this file
\defined('_JEXEC') or die;
@@ -109,7 +110,7 @@ class Site_viewsModel extends ListModel
* @param array $data data
* @param boolean $loadData load current data
*
* @return \JForm|boolean The \JForm object or false on error
* @return Form|boolean The Form object or false on error
*
* @since JCB 2.12.5
*/