usr/local/cpanel/scripts/quotacheck000075500000054564147204255640013504 0ustar00#!/usr/local/cpanel/3rdparty/bin/perl # cpanel - scripts/quotacheck Copyright 2022 cPanel, L.L.C. # All rights reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited package scripts::quotacheck; use strict; use warnings; use Cpanel::Config::LoadCpConf (); use Cpanel::Debug (); use Cpanel::AccessIds::ReducedPrivileges (); exit main(@ARGV) unless caller; my $debug; my $cpconf_ref; my $force_disk_emails = 0; # devel aid, MUST be 0 for production sub main { my (@args) = @_; $debug = @args && grep( /debug/, @args ) ? 1 : 0; $cpconf_ref = Cpanel::Config::LoadCpConf::loadcpconf_not_copy(); if ( exists $cpconf_ref->{'skipdiskcheck'} && $cpconf_ref->{'skipdiskcheck'} eq '1' && exists $cpconf_ref->{'skipboxcheck'} && $cpconf_ref->{'skipboxcheck'} eq '1' ) { Cpanel::Debug::log_info('Quota checks and notifications disabled for mail accounts and disk usage per Tweak Settings.'); return 0; } require Cpanel::IONice; if ( Cpanel::IONice::ionice( 'best-effort', exists $cpconf_ref->{'ionice_quotacheck'} ? $cpconf_ref->{'ionice_quotacheck'} : 6 ) ) { print "[quotacheck] Setting I/O priority to reduce system load: " . Cpanel::IONice::get_ionice() . "\n"; } require Cpanel::OSSys; Cpanel::OSSys::nice(10); require Cpanel::Hostname; require Cpanel::ContactInfo; require Cpanel::Config::LoadUserDomains; require Cpanel::Email::DiskUsage; require Cpanel::Config::LoadCpUserFile; require Cpanel::Config::HasCpUserFile; require Cpanel::Config::LoadConfig; require Cpanel::Config::FlushConfig; require Cpanel::PwCache::Helpers; require Cpanel::PwCache::Build; Cpanel::PwCache::Helpers::no_uid_cache(); #uid cache only needed if we are going to make lots of getpwuid calls Cpanel::PwCache::Build::init_passwdless_pwcache(); require Cpanel::Unix::PID::Tiny; my $pidfile = '/var/run/quotacheck.pid'; my $upid = Cpanel::Unix::PID::Tiny->new(); if ( !$upid->pid_file($pidfile) ) { my $pid = $upid->get_pid_from_pidfile($pidfile); print "Another instance of quotacheck appears to be running at PID '$pid'.\n"; return 0; } my $quotawarnedfile = '/var/cpanel/quotawarned'; my $hostname = Cpanel::Hostname::gethostname(); my %ALL_ACCOUNTS; my %TRUE_USER_DOMAINS; Cpanel::Config::LoadUserDomains::loadtrueuserdomains( \%TRUE_USER_DOMAINS, 1 ); my $do_disk_check = ( !exists $cpconf_ref->{'skipdiskcheck'} || $cpconf_ref->{'skipdiskcheck'} ne '1' ) ? 1 : 0; my ( $user_info, %CPD ) = load_user_info( \%TRUE_USER_DOMAINS ); my ( $warned_ref, $rCONTACT_INFO, $rUSED, $rLIMIT, $quota_version, $inodes_used, $inodes_limit ); require Cpanel::SysQuota; $TRUE_USER_DOMAINS{'root'} = '(system)'; # required because we check root for notification fallback $user_info->{'root'}{'cpuser'} = { 'DOMAINS' => [] }; ( $rUSED, $rLIMIT, $quota_version, $inodes_used, $inodes_limit ) = Cpanel::SysQuota::analyzerepquotadata(); print "Fetching contact info...." if $debug; $rCONTACT_INFO = Cpanel::ContactInfo::fetch_contactinfo( \%TRUE_USER_DOMAINS, \%CPD, 1, 1 ); print "Done\n" if $debug; $warned_ref = Cpanel::Config::LoadConfig::loadConfig( $quotawarnedfile, -1, ':' ); delete $warned_ref->{''}; # remove empty entries foreach my $user ( sort keys %TRUE_USER_DOMAINS ) { print "Checking user $user\n" if $debug; my $domain = $TRUE_USER_DOMAINS{$user}; my $homedir = $user_info->{$user}{'homedir'}; my $cpuser = $user_info->{$user}{'cpuser'}; { no warnings 'once'; $Cpanel::homedir = $homedir; #for email disk usage } my @warned_email_users; Cpanel::Debug::log_warn("contact info could not be loaded for: $user") if ( !exists $rCONTACT_INFO->{$user} ); my $should_notify_this_user_about_mailbox_quota = should_notify_user( $rCONTACT_INFO->{$user} ); # # Here we check to see if each mailbox is approching its disk space limits # foreach my $domain ( exists $user_info->{$user}{'domains'} ? @{ $user_info->{$user}{'domains'} } : () ) { print "\tDomain: $domain\n" if $debug; next if ( !$homedir || !$domain || !-e "$homedir/etc/$domain/quota" || -z _ ); if ( -B _ ) { # binary file check Cpanel::Debug::log_warn("WARNING $homedir/etc/$domain/quota is a binary file. Expected standard mail quota format."); next; } print "\t\thas quota file\n" if $debug; process_domain( user => $user, domain => $domain, homedir => $homedir, cpuser => $cpuser, should_notify_user => $should_notify_this_user_about_mailbox_quota, warned_email_users => \@warned_email_users, warned_ref => $warned_ref, ALL_ACCOUNTS => \%ALL_ACCOUNTS, ); } # # Email the main account for each user if they have email users who are near or reaching quota # if (@warned_email_users) { dispatchmessagetomainacct( $user, [ sort @warned_email_users ] ); } # # Here we check to see if they are approching their disk space limits # if ($do_disk_check) { process_disk_check( user => $user, domain => $domain, homedir => $homedir, cpuser => $cpuser, warned_ref => $warned_ref, inodes_used => $inodes_used, inodes_limit => $inodes_limit, rCONTACT_INFO => $rCONTACT_INFO, rLIMIT => $rLIMIT, rUSED => $rUSED, ALL_ACCOUNTS => \%ALL_ACCOUNTS, ); } } delete @{$warned_ref}{ grep { !exists $ALL_ACCOUNTS{$_} } keys %{$warned_ref} }; # remove accounts that no longer exist or are not being check Cpanel::Config::FlushConfig::flushConfig( $quotawarnedfile, $warned_ref, ':' ); return 0; } # End of main routine. sub load_user_info { my ($TRUE_USER_DOMAINS) = @_; print "Loading user info...." if $debug; my $pwcache_ref = Cpanel::PwCache::Build::fetch_pwcache(); my $user_info = { map { my $cpuser = Cpanel::Config::LoadCpUserFile::loadcpuserfile( $_->[0] ); ( $cpuser ? ( $_->[0] => { homedir => $_->[7], cpuser => $cpuser, domains => [ $cpuser->{'DOMAIN'}, ( ref $cpuser->{'DOMAINS'} eq 'ARRAY' ? @{ $cpuser->{'DOMAINS'} } : () ) ] } ) : () ) } grep { exists $TRUE_USER_DOMAINS->{ $_->[0] } && Cpanel::Config::HasCpUserFile::has_cpuser_file( $_->[0] ) } @$pwcache_ref }; my %CPD = ( map { $_ => $user_info->{$_}{'cpuser'} } keys %$user_info ); print "Done\n" if $debug; return ( $user_info, %CPD ); } sub should_notify_user { my ($user_contact) = @_; # Tweak Setting skipboxcheck disables all mail box quota warnings. The cPanel # user setting 'notify_email_quota_limit' is set on a per user basis and on # unless specifically disabled return ( ( exists $cpconf_ref->{'skipboxcheck'} && $cpconf_ref->{'skipboxcheck'} ne '1' ) && ( !exists $user_contact->{'notify_email_quota_limit'} || $user_contact->{'notify_email_quota_limit'} ne '0' ) ) ? 1 : 0; } sub is_at_threshold { my ( $percent, $check_type, $type ) = @_; my $var = "emailusers_${check_type}_${type}_percent"; return 0 unless $cpconf_ref->{$var}; # unless defined and non-zero return $percent >= $cpconf_ref->{$var}; } sub _int { my ($val) = @_; return defined $val && $val ? int $val : 0; } sub process_disk_check { my (%args) = @_; my ( $user, $domain, $homedir, $cpuser, $warned_ref, $inodes_used, $inodes_limit, $rCONTACT_INFO, $rLIMIT, $rUSED, $ALL_ACCOUNTS ) = @args{qw/user domain homedir cpuser warned_ref inodes_used inodes_limit rCONTACT_INFO rLIMIT rUSED ALL_ACCOUNTS/}; my $owner = $cpuser->{'OWNER'}; my $used = _int( $rUSED->{$user} ); my $limit = _int( $rLIMIT->{$user} ); my $user_inodes_used = _int( $inodes_used->{$user} ); my $user_inodes_limit = _int( $inodes_limit->{$user} ); my $mpercent = $limit ? sprintf( "%.2f", ( ( $used / $limit ) * 100 ) ) : 0; my $inodes_mpercent = $user_inodes_limit ? sprintf( "%.2f", ( ( $user_inodes_used / $user_inodes_limit ) * 100 ) ) : 0; $ALL_ACCOUNTS->{$user} = undef; print "\tDisk Info for $user: BLOCKS USED: $used BLOCKS LIMIT: $limit ($mpercent\%) INODES USED: $user_inodes_used INODES LIMIT: $user_inodes_limit ($inodes_mpercent\%)\n\n" if $debug; require Cpanel::Hooks; my $has_hook = Cpanel::Hooks::hooks_exist_for_category('DiskQuota') || Cpanel::Debug::debug_hooks_value(); my $did_warning = 0; foreach my $type (qw{full critical warn}) { if ( $force_disk_emails || is_at_threshold( $mpercent, 'diskusage', $type ) || is_at_threshold( $inodes_mpercent, 'diskusage', $type ) ) { if ($has_hook) { my ( $result, $message ) = Cpanel::Hooks::hook( { 'category' => 'DiskQuota', 'event' => $type, 'stage' => 'pre', }, { 'details' => { 'cpuser' => $cpuser, 'contact_info' => $rCONTACT_INFO->{$user}, 'inodes_used' => _int( $inodes_used->{$user} ), 'inodes_limit' => _int( $inodes_limit->{$user} ), 'blocks_limit' => _int( $rLIMIT->{$user} ), 'blocks_used' => _int( $rUSED->{$user} ), } }, ); Cpanel::Debug::log_info("DiskQuota hook failed during quotacheck for $cpuser: $message") if !$result && $message; } if ( $force_disk_emails || ( !exists $warned_ref->{$user} || $warned_ref->{$user} ne $type ) ) { my $notify = $force_disk_emails || !defined $rCONTACT_INFO->{$owner}->{'notify_disk_limit'} || $rCONTACT_INFO->{$owner}->{'notify_disk_limit'} ne '0'; # The below block contacts the owner (reseller or root) of the account # to let them know that the user is about to exceed their disk space if ( $force_disk_emails || ( $cpconf_ref->{ 'emailusers_diskusage_' . $type . '_contact_admin' } ) ) { if ( $force_disk_emails || $owner ne $user ) { if ($notify) { dispatchdisk( $owner, $type, $limit, $used, $mpercent, $user, $domain, $user_inodes_limit, $user_inodes_used, $inodes_mpercent ); } } else { if ($notify) { dispatchdisk( 'root', $type, $limit, $used, $mpercent, $user, $domain, $user_inodes_limit, $user_inodes_used, $inodes_mpercent ); } } } if ($notify) { dispatchdisk_user( $user, $type, $limit, $used, $mpercent, $domain, $user_inodes_limit, $user_inodes_used, $inodes_mpercent ); } } print "\t\tWarning: $type\n" if $debug; $warned_ref->{$user} = $type; $did_warning = 1; last; } } delete $warned_ref->{$user} if !$did_warning; return; } sub process_domain { my (%args) = @_; my ( $user, $domain, $homedir, $should_notify, $ALL_ACCOUNTS ) = @args{qw/user domain homedir should_notify_user ALL_ACCOUNTS/}; my %domain_quota; if ( open my $quota_fh, '<', "$homedir/etc/$domain/quota" ) { my $buffer; read( $quota_fh, $buffer, 4194304 ); #max 4meg %domain_quota = ( map { my $d = [ split( /:/, $_ ) ]; $d->[0] =~ s{/}{}g; ( $d->[0] && $d->[1] && $d->[0] !~ tr/\0// && $d->[1] !~ /unlimited/i ) ? ( $d->[0], int $d->[1] ) : () } grep { /.+:.+/ } split( /\n/, $buffer ) ); close $quota_fh; } else { Cpanel::Debug::log_warn("Unable to open $homedir/etc/$domain/quota: $!"); next; } foreach my $mailbox_user ( keys %domain_quota ) { next if ( !$should_notify || !-e "$homedir/mail/$domain/$mailbox_user" ); my $quota = $domain_quota{$mailbox_user}; $ALL_ACCOUNTS->{ $mailbox_user . '@' . $domain } = undef; process_mailbox_user( %args, mailbox_user => $mailbox_user, quota => $quota, ); } return; } sub process_mailbox_user { my (%args) = @_; my ( $user, $mailbox_user, $domain, $cpuser, $homedir, $quota, $warned_email_users, $warned_ref ) = @args{qw/user mailbox_user domain cpuser homedir quota warned_email_users warned_ref/}; # Determine mail box size # Run get_disk_used as the user my ( $size, $percent, $error_during_get_disk_used ); Cpanel::AccessIds::ReducedPrivileges::call_as_user( $user, sub { local $@; eval { $size = Cpanel::Email::DiskUsage::get_disk_used( $mailbox_user, $domain, $homedir ) || 0; $percent = ( $quota == 0 ) ? 0 : sprintf( "%.2f", ( ( $size / $quota ) * 100 ) ); }; if ($@) { $error_during_get_disk_used = $@; warn; } print "\t\tMail User: $mailbox_user QUOTA: $quota SIZE: $size $percent%\n" if $debug; } ); next if $error_during_get_disk_used; my $did_warning = 0; foreach my $type ( 'full', 'critical', 'warn' ) { if ( is_at_threshold( $percent, 'mailbox', $type ) ) { if ( !exists $warned_ref->{ $mailbox_user . '@' . $domain } || $warned_ref->{ $mailbox_user . '@' . $domain } ne $type ) { push @$warned_email_users, $mailbox_user . '@' . $domain; if ( $type eq 'full' ) { dispatchbox_mainacct( $mailbox_user . '@' . $domain, $user, $type, $quota, $size, $percent, $cpuser->{'RS'}, $domain ); } else { dispatchbox( $mailbox_user . '@' . $domain, $user, $type, $quota, $size, $percent ); } } print "\t\t\tWarning: $type\n" if $debug; $warned_ref->{ $mailbox_user . '@' . $domain } = $type; $did_warning = 1; last; } } delete $warned_ref->{ $mailbox_user . '@' . $domain } if !$did_warning; return; } # # To test this code: # 1.) Create a user ‘notifyme’ with domain ‘notifyme.tld’ # 2.) log into cPanel as notifyme and set the contact email for notifyme to something other than your root user’s contact address (I created another user and set that user’s email address as notifyme’s address). # 3.) Uncomment the following lines, one by one, to /scripts/quotacheck at line 274. After adding each line run /scripts/quotacheck then remove the line and add the next # #dispatchdisk( 'notifyme', 'critical', 1024, .9*1024, 90, 'notifyme', 'notifyme.tld' ); #dispatchdisk( 'root', 'critical', 1024, .9*1024, 90, 'notifyme', 'notifyme.tld' ); #dispatchdisk_user( 'notifyme', 'critical', 1024, .9*1024, 90, 'notifyme.tld' ); #dispatchmessagetomainacct( 'notifyme', [ 'any@email.tld', 'all@emails.tld', 'moar@emails.tld' ] ); #dispatchbox( 'other@notifyme.tld', 'notifyme', 'critical', 1024*2, .9*1024*2, 90 ); #dispatchbox_mainacct( 'other@notifyme.tld', 'notifyme', 'critical', 1024*2, .9*1024*2, 90, 'x3', 'notifyme.tld' ); # # sub dispatchbox_mainacct { ##no critic qw( RequireArgUnpacking ) return if $debug; my ( $box, $icontact_user, $status, $limit, $used, $percentused, $theme, $domain ) = @_; $box =~ s/\n//g; require Cpanel::Encoder::URI; require Cpanel::iContact::Class::Quota::MailboxWarning; my $mailbox_user = ( split( /\@/, $box ) )[0]; require Cpanel::Notify::Deferred; Cpanel::Notify::Deferred::notify( 'class' => 'Quota::MailboxWarning', 'application' => 'Quota::MailboxWarning', 'constructor_args' => [ 'to' => $icontact_user, 'box' => $box, 'diskused' => $used, 'disklimit' => $limit, 'status' => $status, 'adjusturl' => 'https://mail.' . $domain . ':2083/frontend/' . $theme . '/mail/editquota.html?email=' . Cpanel::Encoder::URI::uri_encode_str($mailbox_user) . '&domain=' . Cpanel::Encoder::URI::uri_encode_str($domain) . '&redirectdomain=' . Cpanel::Encoder::URI::uri_encode_str($domain), 'percentused' => $percentused, 'username' => $icontact_user, 'notification_targets_user_account' => 1, ] ); print "MailBox ($box) [$status]\n"; return; } sub dispatchbox { ##no critic qw( RequireArgUnpacking ) return if $debug; my ( $box, $icontact_user, $status, $limit, $used, $percentused ) = @_; $box =~ s/\n//g; require Cpanel::iContact::Class::Quota::MailboxWarning; my %notifyopts = ( 'box' => $box, 'diskused' => $used, 'disklimit' => $limit, 'status' => $status, 'percentused' => $percentused, ); require Cpanel::Notify::Deferred; Cpanel::Notify::Deferred::notify( 'class' => 'Quota::MailboxWarning', 'application' => 'Quota::MailboxWarning', 'constructor_args' => [ %notifyopts, 'to' => $icontact_user, 'username' => $icontact_user, 'notification_targets_user_account' => 1, ] ); Cpanel::Notify::Deferred::notify( 'class' => 'Quota::MailboxWarning', 'application' => 'Quota::MailboxWarning', 'constructor_args' => [ %notifyopts, 'to' => $box, 'username' => $icontact_user, 'notification_targets_user_account' => 1, ] ); print "MailBox ($box) [$status]\n"; return; } sub dispatchmessagetomainacct { ##no critic qw( RequireArgUnpacking ) return if $debug; my ( $icontact_user, $user_list_ar ) = @_; require Cpanel::iContact::Class::Quota::List; require Cpanel::Notify::Deferred; Cpanel::Notify::Deferred::notify( 'class' => 'Quota::List', 'application' => 'Quota::List', 'constructor_args' => [ 'to' => $icontact_user, 'username' => $icontact_user, 'user' => $icontact_user, 'mail_account_list' => $user_list_ar, 'notification_targets_user_account' => 1, ] ); return; } sub dispatchdisk_user { ##no critic qw( RequireArgUnpacking ) return if $debug; my ( $icontact_user, $status, $limit, $used, $percentused, $domain, $user_inodes_limit, $user_inodes_used, $inodes_mpercent ) = @_; require Cpanel::iContact::Class::Quota::DiskWarning; require Cpanel::Notify::Deferred; Cpanel::Notify::Deferred::notify( 'class' => 'Quota::DiskWarning', 'application' => 'Quota::DiskWarning', 'constructor_args' => [ 'to' => $icontact_user, 'username' => $icontact_user, 'user' => $icontact_user, 'user_domain' => $domain, 'status' => $status, 'diskused' => sprintf( "%.2f", $used / 1024 ), 'disklimit' => sprintf( "%.2f", $limit / 1024 ), 'inodesused' => $user_inodes_used, 'inodeslimit' => $user_inodes_limit, 'inodespercentused' => $inodes_mpercent, 'percentused' => $percentused, 'sent_to_owner' => 0, 'notification_targets_user_account' => 1, ] ); return; } sub dispatchdisk { ##no critic qw( RequireArgUnpacking ) return if $debug; my ( $icontact_user, $status, $limit, $used, $percentused, $user, $domain, $user_inodes_limit, $user_inodes_used, $inodes_mpercent ) = @_; require Cpanel::iContact::Class::Quota::DiskWarning; require Cpanel::Notify::Deferred; Cpanel::Notify::Deferred::notify( 'class' => 'Quota::DiskWarning', 'application' => 'Quota::DiskWarning', 'constructor_args' => [ $icontact_user eq 'root' ? () : ( 'to' => $icontact_user, 'username' => $icontact_user ), 'user' => $user, 'user_domain' => $domain, 'status' => $status, 'diskused' => sprintf( "%.2f", $used / 1024 ), 'disklimit' => sprintf( "%.2f", $limit / 1024 ), 'percentused' => $percentused, 'inodesused' => $user_inodes_used, 'inodeslimit' => $user_inodes_limit, 'inodespercentused' => $inodes_mpercent, 'sent_to_owner' => 1, ] ); return; } usr/sbin/quotacheck000075500000347400147204275770010414 0ustar00ELF>=@@@8 @@@@hh ШШ!Ш!t  !!   DDStd PtdpppQtdRtdШШ!Ш!00/lib64/ld-linux-x86-64.so.2GNUGNUGNU5#ɂ;,K@ BE|qXq.a{h(jl"LG?W.xUb\[Xop+%0Gw9;N|sN55pdl@<(S   iAJv, ; 6'H!D!49(D!libext2fs.so.2_ITM_deregisterTMCloneTable__gmon_start___ITM_registerTMCloneTableext2fs_open_inode_scanext2fs_freeext2fs_free_inode_bitmapunix_io_managerext2fs_get_next_inodeext2fs_allocate_inode_bitmapext2fs_openext2fs_close_inode_scanlibcom_err.so.2libtirpc.so.3xdr_enumxdr_boolauthunix_create_defaultclnt_create__rpc_createerrxdr_intxdr_stringxdr_u_intlibc.so.6setuidfflushstrcpy__printf_chksetgrentexitreaddirsetlocalefopenstrncmpftruncateoptindgetpwentdcgettextgetpwuidclosedirgetgrgidstrncpyforksigprocmasktimegetgrent__stack_chk_fail__lxstatreallocstdinstrtollstrdupchmodflockendpwentstrtolsetmntentfgetsgetpwnamcallocstrlensigemptysetopenlogmemset__errno_locationfseekchdirreadmemcmp__syslog_chkendgrent__fprintf_chksigaddsetgetgrnamstdoutfputcfputslseekfclosegetmntent__vsnprintf_chkstrtoulmallocstrcasecmpgetgidhasmntoptopendir__ctype_b_locgetenvsscanf__open_2optargstderrioctl__snprintf_chkgetgroupsgetuidgetopt_longexecvp__fxstatstrncat__realpath_chkfwriterenamesigactiongeteuidstatfsquotactlsetlinebufwaitpidstrchrendmntent__vfprintf_chkfdopen__strcpy_chk__cxa_finalize__sprintf_chk__xstatmountunamebindtextdomainsetgidstrcmpstrerror__libc_start_mainsetpwentbasenamesysconf_edata__bss_start_endTIRPC_0.3.0GLIBC_2.4GLIBC_2.3GLIBC_2.7GLIBC_2.3.4GLIBC_2.2.5 P{ 9yii Eii Oii Yti cui oШ!`>ب! >!!!h!h!h !h(!i0!i8!i@!,L`!eih!eLp!eLx!Q!Q!Q! 9 !K@!K`!K!K!K!K!K!K !K@!K`!K!K!K! L!L!"L!Ȳ!Pв!0!!`!@!` !д(!0!@!H!P!P`!h!@p!!!!!!`ȳ!!p!(!@!H!P!X!`!!!!!!!!!!/!X![ȯ!`Я!tد!y!~!ȫ!Ы!ث!!!!!! ! ! ! ! (!0!8!@!H!P!X!`!h!p!x!!!!!!!! !!!"Ȭ!#Ь!$ج!%!&!'!(!)!*!+!,!- !.(!00!18!2@!3H!4P!5X!6`!7h!8p!9x!:!;!<!=!>!?!@!A!B!Cȭ!DЭ!Eح!F!G!H!I!J!K!L!M!N !O(!P0!Q8!R@!SH!TP!UX!V`!Wh!Yp!Zx!\!]!^!_!a!b!c!d!e!fȮ!gЮ!hخ!i!j!k!l!m!n!o!p!q !r(!s0!u8!v@!wH!xP!zX!{`!|h!}p!x!!!HH!HtH5!%!hhhhhhhhqhah Qh Ah 1h !h hhhhhhhhhhqhahQhAh1h!hhhh h!h"h#h$h%h&h'qh(ah)Qh*Ah+1h,!h-h.h/h0h1h2h3h4h5h6h7qh8ah9Qh:Ah;1h<!h=h>h?h@hAhBhChDhEhFhGqhHahIQhJAhK1hL!hMhNhOhPhQhRhShThUhVhWqhXahYQhZAh[1h\!h]h^h_h`hahbhchdhehfhgqhhahiQhjAhk1hl!hmhnhohphqhrhshthuhvhwqhxa% z!D%z!D%y!D%y!D%y!D%y!D%y!D%y!D%y!D%y!D%y!D%y!D%y!D%y!D%y!D%y!D%y!D%y!D%}y!D%uy!D%my!D%ey!D%]y!D%Uy!D%My!D%Ey!D%=y!D%5y!D%-y!D%%y!D%y!D%y!D% y!D%y!D%x!D%x!D%x!D%x!D%x!D%x!D%x!D%x!D%x!D%x!D%x!D%x!D%x!D%x!D%x!D%x!D%}x!D%ux!D%mx!D%ex!D%]x!D%Ux!D%Mx!D%Ex!D%=x!D%5x!D%-x!D%%x!D%x!D%x!D% x!D%x!D%w!D%w!D%w!D%w!D%w!D%w!D%w!D%w!D%w!D%w!D%w!D%w!D%w!D%w!D%w!D%w!D%}w!D%uw!D%mw!D%ew!D%]w!D%Uw!D%Mw!D%Ew!D%=w!D%5w!D%-w!D%%w!D%w!D%w!D% w!D%w!D%v!D%v!D%v!D%v!D%v!D%v!D%v!D%v!D%v!D%v!D%v!D%v!D%v!D%v!D%v!D%v!D%}v!D%uv!D%mv!D%ev!D%]v!D%Uv!D%Mv!DAWAVAUATUSHHtH;H9HމHhH91H5|9@11E1DKIH]%=uIw0H=tM7H=3LEHx!LD(+Ls…LH=At1H5LT$ AT$ kHx!L5n9D {9D(E.EEG8Ez95z9t AG<z9ALA' IHEu%=1H[]A\A]A^A_Mw0Mo 1H5-uLLH1P +z9=z98AO<,y9A6LA谺1H5ILH1 IH5XHIH5?H=;y!M/H5LtPH5Lt=H5lLt*H5%LntH5L[Bx!D.x9Io H5 1HH1DŧH5 1H1蠧H5D 1H1Y;f.D1I^HHPTLfH H=*r!H=w!Hw!H9tHr!Ht H=aw!H5Zw!H)HHH?HHtHq!HtfD=5w!u+UH=bq!Ht H=j!id w!]wSH~91H5HRHH1 H5 1-H H1ff.fAUDIH5/q!ATAUSHH8dH%(H$(1HHHfDE1HH: LDrF0)HcH>H 99։ЃDƉ*v9@H 9@H~9vfDH~9afu9IH~99H~9Ho!H8wfH~9 Hy~9fDHa~9fD軦1$@H9~9fDH!~9@fH o!H8QHq!wt9 t9u t9Hn!H }9HcD9t>}OudƃtJIDHt9H$(dH3%(uhH8[]A\A]t(ƃt1ʼnƃut1HSn!H5 1HmHHr8AVAUATUSHH $HdH%(H$1HHH=Z H€[H=5 H€<HƹH= H{BH5 FH=Hs8=HcL$HHo!LL4H AVL PLK01Ll$LL}Y^85AVLH&Lt PLK01wLL'XZt4u!11s@fH$dH3%(HĠ[]A\A]A^fH5HH{H5H"HH{H5ȽHHtXx=uRL`,LHL)H@w/HuH$HH蠢HŃ2DH[01H5QHH1蟠f.1LÅL5߉fH{H5HH{H5$׼HtHH[0H5x1 HH1מLL;USHdH%(H$1H\$HH=;Ht%H$dH3%(HĨ[]@Hl$H H~uMH|$?.uH HbH|$?.u~H HB tf1H5H1ӞIfD8,1H5:HHH1虞off.@ATUSHHdH%(HD$1t@t)HH HL$dH3 %(H[]A\D11IDŃtwH1`TLt@H$f.HH =rn!H$uHh!1H57Pn!HHHv8H5,1HtHLH1?ff.@HHtHH51!H1fUSHHHT$0HL$8LD$@LL$Ht7)D$P)L$`)T$p)$)$)$)$)$dH%(HD$1HZv98tbH-_g!Ht9HWHH}1H}HHH$$HD$HD$ D$0HD$HD$dH3%(u H[]DAVAUATUSHH $HH-t9HdH%(H$1}H\$IA1H5qH1U1IDL*H4$HT$R8H5+1?H$H1H4$HH5=HߺH4$HH<$H|$H<$t911ÅHT$1f@H<$1H$dH3 %(Hİ[]A\A]A^fH<$l$(11AąyR-8H5v1H$H11ifLl$Ǿf1L*JD$DH$Hps9H$H51HHH$1dH4$HH5jH/Hڋ H!%tDHJHDщHH)ڀ~H<$Hy1H5H1@8,H,$1H5ILHH1蒘Ds81H5cHfHڿH1D1L4$H51HL11Lf@DHd$W88cH,$1H5ILHH1ɗH<$0D!H,$1IH5LHH1聗H<$H,$1IH5OLH28H,$1IH5!LHHH1H<$uk8_H$H5H1HH?8.H$H5vHI\$0H5{1HH1Ze8H,$1IH5TLHH.H5r13HH1ff.fAWAVAUATUSH8H|$t$dH%(HD$(1ҟ1HH51HHڿH1H-m9Ut$H|$QHHTH7o9Lcd$ IL5f1L-f-K&MA HD$DM}Mt;}I_?LADA43H LDP0M?MuIL;l$uH TH51H1U1Dt$H\$DHULD$ DHLt$H"n9D|$;Iv E11D cHt$H|$;'HD$|$1HL$ Hp $H|$ b1HL$(dH3 %(%H8[]A\A]A^A_LHH5^!HH HFH EK)t$H|$tDt$H|$DXIHHMc?8DIn I)1H*H5>H1LHHH1}H\$ HL$|$Hq HHD$|$Hh 諜1HH51HHHH1膒1H C/Y8|$IHD$Hh =1H>H5H8H5H1HH18UH5H88H5$Hf1iHcƁHHHFb-HHt;xu fD9xtHHuÐAUATAUHSHdH%(H$1!1H"1H5I LH1Hi91ɉLD$H耹Hl$Ht$Ht$(H|$HU@'H|$H E|$0DD|$,HHh(H51H)X@aHڿH1?1H$dH3 %( Hĸ[]A\A] 1H H51HHڿH11fD8Hf9D$IE@1L=>HD$(LhH'HXLHtչHH=tHf9zLH޿Qt$H%=@H\9H9D$0i1H5HT$HٿH1H|$IHHD$HT$H|\LD$IH FIHǾ1HInLLEH@LL-vH5-1FH1'HtaLe1LH]LLH1H}H}[9AZHRE;HHuH5t11HT$H1H$dH3%(H[]A\A]A^A_DHT$(HD50[9ECD [9LD$@L$PDT$LLt$8EHD$`1L$ H5DT$$LD$HD$ L$ HڿH1QDT$,ARLD$(HL$ EEXZ9Z1umZ!dZ! iL5\T!HcIZ!HR<I6I6I>Z!Z!Ѓ)ЉY! @HLDҿjIL$`DT$\LD$PLt$H^_DHI1jLD$PL$`T$\Ht$HHD$ qAZA[HD$8DH5 1IHt$HLH1H覈LHt%fH;HkHHHuf.HIٿjLD$PL$`T$\Ht$HA_X;HI1jLD$PL$`T$\Ht$HXZ8bH5>H1Ht$HH1ʇDL|$LH\R! HH31LH5fFIH H51)9HD<0HL|$81H>9H5 HD4RH131H5]0HT$H1 HU>9Dt0A^HH1H\$HD1IAWEDZYH=69D$<,HE?9L1H5iH1_ef.H51=Ht$H1.eH>9>1H5 1HL$DLE1mYHH =9HD@L$@HHH~/!HL$DDp0HH@H1H5uH1kdfD1H5*MH1.fH.! H0ܵ8{H51HHt$HH1cH51農Ht$H1ceH5wH5c1L$ 耲L$ H1KbV8ϰH5s1HIHT$HٿH1bfFHGHDUSHt1+11ȶH舵u$H5>HH[]fDH5Hu萯8 H51H胱HHڿ1Qa\8կH5H1O88豯H5-H8蔯H5H8wH51Hiff.SHHdH%(HD$1H謱HS8HtHC@HH H9|XHCHHC HtH;C(|!HCPHD$dH3%(uEH[H{PuHSH$H HCP@H{HuHSH$H HCHAWAVAUATUSL$HH $L9uHxT$dH%(H$h1HHH$ IE11Lt$ HL$W@uNfDI?H P(HMHEHHIIHtN u辮9ttH$ HDnH51!HH1`E1H$hdH3 %(LAHx[]A\A]A^A_Ie軬D(AUAou D$CIHT$ߋ oD1H5HD$ILhpLD$LHT$H1W_fMH=LKA;]tqHHfHA9\tUH9uM9t LD$t$It$D$91H$ H7mH5~1@M9DHcHD$HoHL$HI9H$ HL$HlB8軫H51I5HL$MHH1E1^1!M9tLrH$ Hpl۪8TH51IάLHH1E1]菮ff.@AWAVAUATUSHHHE1A DHHtdHCHH P0u;8贪Ds1IHCH5{L`"LLDH1E ]HHuHD[]A\A]A^A_fE1ff.AWAVAUIATUSH8dH%(H$(1H$Hl$ HpHSHFH9HH޿艪褩 uz1ҿHkƬ߯bKAƅ 8脩H5o1HHٿHlH1ZDHt$1҉21H1H$(dH3 %(H8[]A\A]A^A_H= 4HHs]HD$HI1L$  LDsͨHtxHMZYHH1芬f.HC@LK8LHLHCss I s(HH1s0GHH HuHH1[]A\A]A^A_fAWAVAUATUSL$HH $L9uHdH%(H$1I1SH$ HHIHD$HHHL$;HL H"HH$HD$ H$`HD$H$@HD$fHT$HH|$ ܪHL$HH5r1L$LAUH$SH$ULL$@LD$8HL$0H|$(趦H H|$Ht$PoH9H|$Ht$XoHiH|$ Ht$`zoHqHt$hHrH{Ht$pHqHHt$xLqHHD$xLl$`Lt$XHD$(HD$pHD$0HD$hHD$8HD$PHD$@MLHuL4HD$0M HLu8HE HD$(Lm0HEHE@HH H9D$@t(HEH51HXVHH1IVHD$8H;E(t(HEH51HX#HH1VHmHI@H|$H6Mu1FIG8IG0IG IGM?MtAG tЃAG M?Mu1H$dH3 %(sHĘ[]A\A]A^A_H51]Ht$H1NUH|$H脥DH51I"Ht$Lf.H1UH|$H1HL$XdH3 %(u H`[]A\A]A^躝f.AWAVAUATUSL$HH $L9uHXdH%(H$H@1H?I1\IIEHt/IU@HHHǀ : Hǀ : HBHuL$@ L LHL LHL LHHD$Lt$,H$HD$HD$$@HEHT$ H HT$HH H\$@L L苞HHHMLHl$>H5>1ULL$HL$臚ZYHc|$HT$ LaxNHc|$HT$Hax8IuLHuHw@HHuHuSfDH51H1JLH$H@dH3 %(ukHX@[]A\A]A^A_fLؚ1@H5!1}LH1pJL訚듺H5d+ff.HtSfDH蘛HHu[fDAWAVAUAATAUSH8!H8dH%(HD$(1HD$ JIIcHHD$@8M Hs L~DAFAtANE Hs M~L"KH3I KHs0IJH;RH5AH!Adž I DI Idž HIdž0!)8!1HLRH\$(dH3%(LH8[]A\A]A^A_Ðt[HH=ȯHu~tH5mu8AH!Adž Bf.H5@1H1HH|$ HtpLE1e9H=*HdH=HFH5t\xH;LQAAFEHL$y8AtEADE؃DLD$ DHDT$oDT$H5AFADT$AA H|$ LHD$ H!I I DIdž Idž0!H)8!1HI H@HLЅS8̓1H5nHFHLH16F! @I( 1Idž Idž HI)AHJH5LAA @EH4!I DHcwANH9L8EA 11 RHJAFDT$H|$ DDD訒Å1AF@ƃAA HS!I LD$ DٺDHDT$D\$LD$;mD\$DT$uLD$DٺDH߽ mD\$DT$FLD$1DDHDT$1lDT$H5; 8脑H\$ 1H5߬HHHH1C返ʐ8CH51H轒HLH1BAWAVAUATUSHH $H(dH%(H$1HABAԃ!H}MIcƃ|8zLD$1DDH1k)L|$Ht$LDH5LDH|$NL1AŅO8!CHu D(HxH@VDHuH ADHu0H,DH D HD Hǃ )8!1Hǃ0!HEH!H DH H@Ht HЅH$dH3 %(HH([]A\A]A^A_fDH]0H5 1衐H1H1AHi!i@A$D[8Ԏ1H5HNHLH1>AOfRH5eHmDDH1iDAǑSGHH tHJ HtхxFCH CHBHt HЅx$;t舔;єH1[ø[ff.H`nAHxHHHHH@X1H)`HBHH@SH_H H9G0w:H;G8r4H H9Gw'H;G r!H H9G(wDH H9G@w71[H51譎HsH1?[H5ĻfAWAVAUATUSHH $HH $H(E11H|$ILl$H4$dH%(H$(111HxHHHHH@X1H)`HLsA>E1跒fHcHIDDX DPDD@HxHp HPDD D ID I L tHDH HsP1HCDHC DHC0DHC8HHC(H$HK@HSHDsADžxdAD9dHD$(L8萐HADžxfHcHHIIKHH9uBtL1 @HXH$(dH3%(Du"H(([]A\A]A^A_HA"苎ff.ATUSH0HodH%(HD$(1UAAHH!98d ;B0AHCSHHu D$ HC D ljD$HC0$HC8D$HC(D$HC@HH D$HCPHD$ HCHHD$HHL$(dH3 %(D)H0[]A\fDHC}1E1D$ HC D$HC0$HC8D$HC(D$HC@H D$HCPHD$ HCHHD$CH4H}H(覉H(AAPfDADAD6Aˈ"AH5N1A豊HuH1;莈~aATAUHSH0dH%(HD$(1HD`HhEH98 HHuD8HxwD$ HCD$HC $HC0D$HC8D$HC(D$H HC@HD$ HCPHD$HCHHT$(dH3%(HH0[]A\fDH3yH1‹}K41HN}H(ΌHtH(LH1ŋfHCXCC(C8CHa f.AUATUSHH8WdH%(HD$(1Ճ"H98Lg I1LL׊HH 1LL HD$H HD$ 蜊HHL$(dH3 %(H8[]A\A]f1?11I;(L{H(uu(HH>uH9u@1D1Ҹw ÐAWIAVIAUAATUSHH8HT$dH%(HD$(1w%A6IąH!ŅI|$LA1HI$IDŽ$H)HD$fDHŅ&LFuD$$T$t>HD$LHߋ0 AD$A$1fAD$K LtH\$(dH3%(,H8[]A\A]A^A_HHD$AwD)D$@A,l$$"AH H$$ IƅH‰H}EnH A(A9oIFfAFE1HD$$Ht$H<$u HD$AH<$A9|H<$A9RLH߉,$D$L1D D HIDIGXsD$DD$$AGL$LHEHD$0vfDAAMHT$$LHJL$ŅD<I~L1IIdžHH)H KAMHT$$LHŅDD$$,LHcrH51&pH1H51pH1AWAAVIAUIATIUSD)H(dH%(HD$1!AuLHHBAv$@Ƌ\\$AtNHT$AOLLzT$HqHD$dH3%(H([]A\A]A^A_F!INXIljH H9LLfAoI~XA$ 1L+nAGI$ D$%9D$LL;IFXL qD$AF $HDH fHH9t8tAuHLAutA$ HLEE1fEAL$A$ AELL1LA$ fAOLAGAAL$A$ NLLHD$A$ AGAA$ uH|$oA$ AL$HT$LHT$A$ LZoH5Q1H $mH $ڿH1fAWAVIAUATAUSHHDHHIlAF)EdEH 1H$DHHHD$Lx"fH LLPu IH<$9|H<$9tZH|$A n I\,f.HߍMDLHLdnHH[]A\A]A^A_f1A^H5<1kHƉ1@AWAVAUATIUSHHHL$LD$I|$HHD$8HD$8tzIHE1L|$LA@ut'I|$; jLD$LDLmAHH9uDt$4H|$8rmD$4HH[]A\A]A^A_IHD$4HD$IL9|$tMl$A/A; t܉HT$uÿL$0M HT$ HT$ L$0HƸI|$HHt$ Ht$ L|$(L|$FHnD$0;HLEuI HLP1LAׅxA HLP9|H|$ L|$(MlL$0L$4LAUATUSHHHodH%(HD$1 HsXIHtdHC1ҋ8GnH HLHC L8gLIk L9uKHD$dH3%(u6H[]A\A]H{1HT$HD$uxRHsXtjfM~8Lg[H5H1hHڿH1f8g[H54Hff.@HdH%(HD$1HXD$tHHHT$1VHD$dH3%(uH jff.AUAATUHSH !If1ɺDhHHHHhH@X@@(@8@HH~@HCX}1Hzl }LjIŋ L9u&H LHPLiHH[]A\A]PeHM~Li}e[1H5H)gHڿH1DAUIATIUSHHL`A$ x1HA$ HPfHMH1A$ 1A$!t(1DЉD9uA$!HhHhH1[]A\A]f.HH H H 1H ff.USHHo]u*H [ŅxBH[]fDH5D1eHuH1cxcݻ(ff.fATAUHSD`HHHhVxH[]A\fD!cH1ۉ(gېATAUHSHĀdH%(HD$x1 HD`Hh u5HT$xdH3%(HH[]A\u t@HHuDXfHxHD$HCHD$ HC HD$HHC0HD$HHC8HD$0HC(HD$(H HC@HcD$8HCPHcD$A @u1`LHH1^ uGH HEH D!H K fuTtuJH!HD!H!H5ԑ1%`EHHHƿ1][1]A\fDH51_I nH51_HiRH51_Iĺ tfDH51u_H1F][1]A\9@ /H5;1)_Iă-H51_H f.H51^If. H5ɏ1^Iĺ +f.@teH51w^IăVvH5d1R^If.H5D12^Iyf.H5'1^IDH51]IfH HdH%(HD$x1 u)HL$xdH3 %(u~HĈÐui t`I1HLHH L1ҁXD$[f.@wATAUHSfD`HHHhH@X@@(@8@Hx H[]A\fH1V[@"fUHHw1SHHX dH%(HD$H1H Zy|Vt"HHHT$HdH3%(uHX[]HyHH'ZHGtAH88uHDH51XH1HúH5fSHGG(G8GHHGXօx/1H{0u&H{8uH{uH{ uH{(u 1H{@[fAT1UHoSHHH  dH%(HD$1HcYHx2H$H HD$H 1HT$dH3%(uSH []A\T8pU IH5F1HVLHHH1Xff.fAT1UHoSHH dH%(HD$1H t$HHH$H  HD$xXHx1HT$dH3%(uSH []A\#T8T IH51HVLHHH1WfAUATUSHHXWdH%(HD$H1HGH HpWHxdHD$HCHD$ HC H$HC0HD$HC8HD$(HC(HD$HC@HD$8HCPHD$0HCH1HT$HdH3%(uaHX[]A\A]!S8SHkDcIŋ H51HTHMMDHH1Vff.AUATUSHHXWdH%(HD$H1HGt$@HHD$HG HD$ HG0H$HG8HD$HG(HD$(HG@HD$HGPHD$8HGHHD$0HG HpdVHx1HT$HdH3%(uaHX[]A\A] R8RHkDcIŋ H5 1HSHMMDHH1UAVIAUIATUSHFHX HŅt%tg1HU[]A\A]A^fUcUIHt+AD$LHEhÅxuI4$HA։Åy[Uf+1fIHt+A$LHEÅxuIt$HA։Åy#IfDT1ېSIHt+AD$LHEÅxuI4$HA։Åy3Qff.AWAVIAUATUHSLmHXdH%(HD$H1I1HHhjHD$1HHCHD$ HC H$HC0HD$HC8HD$(HC(HD$HC@HD$8HCPHD$0HCHD$DCAADžx/D$DPtg LL SADžtOHHT}DDHL$HdH3 %(Du$HX[]A\A]A^A_DKOH+Sf.AUIIѹATAUH-vSHdH%(H$1ILQ$1ɄtQ@AH tl@ATHt u tNLH1DiRHcHcuH$dH3%(u$H[]A\A]f.HcÃ?Rff.@HHa81H8P(8HATUHSHHT$0HL$8LD$@LL$Ht7)D$P)L$`)T$p)$)$)$)$)$dH%(HD$1H$$HD$HD$ HD$8D$0t1HH-H1QQL% H^8H hHI<$1SI<$HH`Mff.USHHHt$(HT$0HL$8LD$@LL$Ht7)D$P)L$`)T$p)$)$)$)$)$dH%(HD$1H$$HD$HD$ HD$h8D$0t,HH޿ HD$dH3%(uJH[]fH- HB8HfHH}1hRH}HHھDLOff.fHPHtHH H=xfHR?Pff.@HQHtHHB H=(fHROff.@SHsLD[ff.SHMD[ff.HQHtHH=CPsOHH501LH?H1JH5)1LH-H1VJH5c1cLHcHH1)JfHH9|HNH9O|fUHSHdH%(H$1uKKۉHH߁ MHH$dH3%(uH[]MtM@UHSHdH%(H$1uKJۉHH߁nMHH$dH3%(uH[]LL@AWAVAUATUSHH $HT$dH%(H$188u41H$dH3%(}H[]A\A]A^A_fHcHHH8HEL$LdD$Ll$ H-9~D$fLHLtLH=~L8IHLHƿ5K%LELD$8Hc 81HH 8Iρ@@Ɖ1%= Ht$H=8HqOH 8H;qKHAH1HHHH;p29uD$HL9 n8VD$H=H8sK7fLD$HT$ HD$(MIWLLIGLL$LH#LH8IGL9Obf.LLƿISF8FL;1H5~HD$AHHT$LH1/H m8Hq(LHc Q8HH :8ICfL;H5~1HGLH1L9EH8FHs1HD$Ht$H5}GHT$Ht$H1sLIL9"5DL;H5)}c@=8~8H58HT$ H;VtdHFHwH4H<HHHH9PtCH9uT$1LD$H5_}FLD$H1LHFLN(HD$(ML;H5I}wD8D1H5hzIjFLL$LH1LU1H5R}=FH13 HfATIUH,SHDHt"H)HcH[HHH9L]HLA\fHDHcH[HL]A\H9HF{ff.IH=yL€tH=yL€uDH=wyLfHH=Myff.fHcH HHfHH=a8HtFH5\H=x$GH=8HH=%8Ht HEH 8Hff.@H8HUSH8HH2HHHr8 H!%tDHJHDщ@Hz ug;#tb:HuBHtPHh:H\BHtH 1H8B8HH8[]f.H 85@H1[]1ff.fUHSHHdH%(HD$1Htu1HHAH$:tHCHt@HL$dH3 %(uH[]@Ht1DH5w1BHH1REfUHSHHdH%(HD$1Htu1HH@H$:tHsCHt@HL$dH3 %(uH[]@Ht1 DH5kv1BHH1 DfATIUHSHdH%(HD$1Htu1HL"@H$:t9fHsLDt@+HHuHt7E1HL$dH3 %(uH[]A\2CH5u1?ALH12CHʅtt KUHSHCHtH0H@H1[]fDAH@L"uH%@H[]fUHSHDHtH0H@H1[]fDAH@LtH?H[]fATIUS@;+tDHHu2ALLQtH@1M?[]A\HsL@Z[1]A\tHtkHxATH5@WH=sUSHdH%(H$1AHHHL%sHHBHt;HLu@H0HC@HHDN uu51H?H$dH3%(H[]A\fDH@tHH:D~ tHƻH=r€tH=rH€oHƹH=rQJ1F?ff.AUH5rL- ATIULS1ۉH@tHHt'ItL@uH[]A\A]H5t1x=LH1kH[]A\A]ff.HcH Hff.fSHH=qHtYH=qHtAH=qHt7H5t18HD$8HHEH$HEHD$HE H88HE(HD$THC0HC8D$\C@fI]1H5fcy)HH1lH|$V'D$t'D$LIlH;H+H9uL+1H$x!dH3 %(HĈ![]A\A]A^A_@L$@9L$9I}'HcT$HxIIAHIuH)HH'/H|$Dt$f*H5o@H=])HD$HIH5N@H=]u)HD$H(H5a14(H1*f1H5jb (H\$H1HHc*>%8R&ImH5zbH1'HHH1H|$*D$LHcD$@HIr%8%ImH5saHQ%8%H5\1HD'HHt$(uHc8A9nHp8AQ$8w%1H5)aH&HH\$H1HHD)D$DHcT$DHH4H%H8qHL$8H;HHPXHHH9JAA9uhH?x=L@H$IcMO0H$L>HHH{ HH PIc4º1$XZt@H8H88H5YH1HڿH1_j8H5YH= H8H5YH8tA~*;=8t%H~8H DH98tH9u1øf.1SH1XH`dH4%(Ht$X1HHHt'tZ1t3HT$XdH3%(ujH`[DL$ȃfƒ ΐL$ffƒ @L$ffƒ @@AUATUSHdH%(HD$1HcƋ\8IAtg~t5H~88tujwYI} D1HL$dH3 %(H[]A\A]tuI} DrfD뵐Hw A1HL$FHxًD$wHXw빐H DYUSHQH8 889H+WD8HcHHˡ8EDHz1H ¡8I9HHD9HLIEuI9uHRHP0H[]HcHHHo8HHxHK8;R8<8|H1[]fHRH1HHH18P;88f.Hjf.LYL9Z 'DHc8;8cHH8HHP(HP0H[]H8ff.n8ATL%]8US~CLHIlHH;HHTH{KH{BH{9H9uL,8H88t6L%֟8~%I\$HIl8H;H H9uLH8[8]A\ff.fATIUSxL x1[]A\DAWAVAUATUSH(T$8|$DD$ 1D$tDȃ ADDȋ\$Dʉ][AE1E1fJIHEIaHH=}0€tHH=\0€tHH=F0€kHLD$.LD$Q8El$Hޙ8A9}1L$ t$LH~HHMcM DHLD$8HcH4LD$Hx8fDHH=/€aHH=h/€BHƹH=N/tHLD$+LD$NfHԘ8HD;d$tEuDH([]A\A]A^A_ÐDL$Ht$DL$Ht$8H8H5R1IH1H5,1'H1HH53H=uKH5 RDH=bKH@UHSH_HhCu C7DH[]ff.fAWAVAUATUSHdH%(H$1H=l8t2H$dH3%( H[]A\A]A^A_fH5-H=TQ}HHtHD$@AH$H$HD$tL-FQHD$11HHdHH71HL$8HT$4HL Q8LD$uINHDH^nnH$@HL sPHD$(HL-AWI1X1ZL1#Aƅ1ҾH=11DHIL$xDLLD$LD$HxH=OLt8H=OLtH=OLfo$ LD$()L$>LD$( HIIplDMH|$ L58HMu~IIHu(HT$ HT$ IfoD$HHP Lx@EuHfDE11ҾD1H=DhH$@DHHD$(H=Q$y$x=S1o$)T$Ht$(IHxHDH4$tDHtQHt$ H=N1o$)\$H4$IHd놿(HD$ rHT$ HN8ff.AWAVAUATUHH=DSHH8dH%(HD$(1H=DHt;HHHT$(dH3%(H8[]A\A]A^A_H8LeHuFfDHH4HsLuH{ S놐H]H$H$} -}-}-}-Ll$HIEMHD$f;@-u{HHDAt|HCH $DAItiAHIAAH $A EgL9|$uH8HtIIMIuH3HH3pH u[Hx bDH5K1EHH18H5K1%HH11OHHu?[SHt/H>:z Ht9x(t3HH[fDHGH]G Htx:t 1[x(tHH[fAVfAUATUSHHPdH%(HD$H1HGHGXGG(G8GHHxHD$0HD$8 Hx9IHCLHpHT$Ht$LLCHT$A@t>I H=Au :/uHBDHD$HHx/tCH|$HT$ H :JD$,A D$(HH{HT$0HHEHEP(H|$ H IHt~8H}HG8P HEHP A$uHC L^A$NHL$HdH3 %(HP[]A\A]A^H}HG8P HEHP HC tMLfDs E18HCAƋ tLElE1HD$H|$H HHD$ CD$(HHtY$HT$0HHEHEP(H|$ HIH8H}HG8P HEHP L8G HIHHcP@ H|$HHH HC0AD$HHH HC8AD$HCAD$HC AD$ HC(AD$HHC@ IcD$$1҅tHD$HIcD$(HSH1҅tHD$HHSPHcP@ H|$HHH HC0AD$HHH HC8AD$HCAD$HC AD$ HC(AD$HHC@v IcD$$1҅tHD$HIcD$(HSH1҅tHD$HHSPL hH}HG8P HEHP  AWAVAUAHATUSHHxdH%(HD$h1HD$ HD$(zRHCHxHxIHCLHp HT$Ht$L=LCHT$A@gCLt$Dl$0LHT$8D$@A D$DF HC0H{HD$HHC8D$LHCD$THC D$XHC@HH D$PHC(D$\HD$`H{PHrD$dH|$H E HHs HT$ HHEHEP(H|$0HqIH8H}HG8P HEHP AuHC >L A=HL$hdH3 %(Hx[]A\A]A^A_I H=<w:/nHBfHD$HHx/tJfH}HG8P HEHP HC t}L IHt$.D$dDHt$D$`VDS18HC@ŋ tL @1HD$LDl$0HD$8CD$@HC0H{HD$DHC8D$HHCD$PHC D$THC@HH D$LHC(D$XHD$\H{PHTD$`H|$H 6C1 IH= HT$ LIEIEP(H|$0LIH8&I}HG8P IELP LAHBHt$D$\4DHcP@ LHHH HC0AGHHH HC8AGHCAGHC AG HC(AGHHC@uIcG$1҅tHD$HIcG(HSH1҅tHD$HHSP@Ht$D$`D3L8HcP@ LHHH HC0AGHHH HC8AGHCAGHC AG HC(AGHHC@IcG$1҅tHD$HIcG(HSH1҅tHD$HHSPN8f.I}HG8P IELP Lf.DfHH8H)8HHeL ތ8)8L8HF5@5@H8HEHfHHY8H)/8HHL 8)'8L`.8HF5?@51@H8HEHfHH8H)o8HHL ^8)g8L@n8HF5?5?H!8HEHfHHي8H)8HH%L 8)8L8HF5??51?Ha8HEHfHH8H)8HHL މ8)8L8HF5>5>H8HEHfHHY8H)/8HHL 8)'8L`.8HF5?>51>H8HEHfHH8H)o8HHuL ^8)g8L@n8HF5=5=H!8HEHfHHه8H)8HHL 8)8L8HF5?=51=Ha8HEHUHSHHubHG P0HtiʉSʉPSʉPS ʉP SʉPSʉPSʉPSʉPH[]uHG P0Hu2fHHetHsHUuaH1[]ʉPʉSPʉSP ʉS PʉSPʉSPʉS@ȉCH[]fDHsHtHs H{HsHgHsHSHsH?HsHUHSHHtHsHH[]UHSHHuH1[]fDHsH7tHsHtHsHH[]UHSHHuH1[]fHsH$tHs HH[]DUHSHHu1H[]fDHsHgtHsHtHsHtHsHff.fUHSHHurHG(P0HtyʉSʉPSʉPS ʉP SʉPSʉPSʉPSʉPS ʉP S$ʉP$H[]uHG(P0Hu2fHHtHsHuqH1[]ʉPʉSPʉSP ʉS PʉSPʉSPʉSPʉSP ʉS @$ȉC$H[]fDHsH{Hs HgHsH|SHsHh?HsHT+HsH@Hs H,Hs$Hff.H3HfDUHSHHtt1t1H[]HsHH[]ff.fUHSHHktt1t1H[]HsH\H[]f.AWIAVIAUAATL%$o UH-$o SL)H/Ht1LLDAHH9uH[]A\A]A^A_ff.HHUtility for checking and repairing quota files. %s [-gucbfinvdmMR] [-F ] filesystem|-a -u, --user check user files -g, --group check group files -c, --create-files create new quota files -b, --backup create backups of old quota files -f, --force force check even if quotas are enabled -i, --interactive interactive mode -n, --use-first-dquot use the first copy of duplicated structure -v, --verbose print more information -d, --debug print even more messages -m, --no-remount do not remount filesystem read-only -M, --try-remount try remounting filesystem read-only, continue even if it fails -R, --exclude-root exclude root when checking all filesystems -F, --format=formatname check quota files of specific format -a, --all check all filesystems -h, --help display this message and exit -V, --version display version information and exit Cannot find quota option on filesystem %s with quotas! Cannot detect quota format for journalled quota on %s Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown. Cannot get exact used space... Results might be inaccurate. Renaming new files to proper names. Cannot get name of old quotafile on %s. Error while searching for old quota file %s: %s Old file found removed during check! Error while opening old quota file %s: %s Quota file %s has IMMUTABLE flag set. Clearing. Failed to remove IMMUTABLE flag from quota file %s: %s Renaming old quotafile to %s~ Name of quota file too long. Contact %s. Cannot rename old quotafile %s to %s: %s Cannot rename new quotafile %s to name %s: %s Cannot change permission of %s: %s Cannot open new quota file %s: %s Warning: Cannot set EXT2 flags on %s: %s Dumping gathered data for %ss. Cannot initialize IO on xfs/gfs2 quotafile: %s Cannot initialize IO on new quotafile: %s Cannot finish IO on new quotafile: %s Cannot find checked quota file for %ss on %s! Cannot turn %s quotas off on %s: %s Kernel won't know about changes quotacheck did. Cannot turn %s quotas on on %s: %s Kernel won't know about changes quotacheck did. Substracting space used by old %s quota file. Old %s file name could not been determined. Usage will not be subtracted. Cannot stat old %s quota file %s: %s. Usage will not be subtracted. Quota structure for %s owning quota file not present! Something is really wrong... Adding dquot structure type %s for %d Adding hardlink for inode %llu Cannot open directory %s: %s lstat: Cannot stat `%s/%s': %s Guess you'd better run fsck first ! exiting... Adding %s size %lld ino %d links %d uid %u gid %u Scanning stored directories from directory stack popd %s Entering directory %s Illegal answer. Please answer y/n: Going to check %s quota file of %s Quota for %ss is enabled on mountpoint %s so quotacheck might damage the file. As you wish... Canceling check of this file. Quota for %ss is enabled on mountpoint %s so quotacheck might damage the file. Please turn quotas off or use -f to force checking. Error while syncing quotas on %s: %s Cannot get quotafile name for %s Cannot stat mountpoint %s: %s Mountpoint %s is not a directory?! Cannot remount filesystem mounted on %s read-only. Counted values might not be right. Cannot remount filesystem mounted on %s read-only so counted values might not be right. Please stop all programs writing to filesystem or use -m flag to force checking. Filesystem remounted read-only error (%d) while allocating file inode bitmap errstr (%d) while allocating directory inode bitmap error (%d) while opening inode scan error (%d) while starting inode scan Something weird happened while scanning. Error %d Checked %d directories and %d files Cannot remount filesystem %s read-write. cannot write new quota files. Cannot initialize mountpoint scan. Cannot guess format from filename on %s. Please specify format on commandline. Cannot find filesystem to check or filesystem not mounted with quota option. Bugs to %s jack@suse.czVhbcvugidnfF:mMRaBad number of arguments. versionhelpbackupcreate-filesverbosedebugusergroupinteractiveuse-first-dquotforceformatno-remounttry-remountexclude-rootallgfs2exfsusrquotausrjquotagrpquotagrpjquotajqfmt%s/%s.%saquotaCannot get system info: %s LinuxCannot open file %s: %s Not enough memory. %s: Old file not found. EXT2_IOC_GETFLAGS failed: %s ~Renaming new quotafile .newData dumped. Substracted %lu bytes. Cannot stat directory %s: %s Cannot chdir to %s: %s %.70s...%*spushd %s/%s %s/%sLeaving %s %s [%c]: y n Should I continue?Cannot open quotafile %s: %s Scanning %s [%s] ext2next3ext4error (%d) while opening %s in-use inode mapdirectory inode mapFound i_num %ld, blocks %ld High uid detected. done Filesystem remounted RW. /Skipping %s [%s] Detected quota format %s ext4devreiserfshP@ |/-\Loading first quota entry with grace times. Cannot read first entry from quotafile %s: %s WARNING - Quotafile %s was probably truncated. Cannot save quota settings... Cannot read entry for id %u from quotafile %s: %s Entry for id %u is truncated. First entry loaded. Cannot read block %u: %s Block %u is truncated. Block %u: Corrupted blocks: , %uReference to illegal block %uDuplicated entries.Should I use new values?Headers checked. Checking quotafile info... File info done. Block %u in tree referenced twiceIllegal free block reference to block %uCorrupted number of used entries (%u)Found more structures for ID %u. Using values: BHARD: %lld BSOFT: %lld IHARD: %lld ISOFT: %lld Found more structures for ID %u. Values: BHARD: %lld/%lld BSOFT: %lld/%lld IHARD: %lld/%lld ISOFT: %lld/%lld ID %u has more structures. User intervention needed (use -i for interactive mode or -n for automatic answer). Quota file %s has corrupted headers. You have to specify quota format on command line. Do not know how to buffer format %d Checking quotafile headers... Cannot read header from quotafile %s: %s WARNING - Quotafile %s was probably truncated. Cannot save quota settings... WARNING - Quota file %s has corrupted headers Continue checking assuming format from command line?Quota file format version %d does not match the one specified on command line (%d). Quota file header may be corrupted. Continue checking assuming version from command line?Cannot read info from quota file %s: %s WARNING - Quota file %s was probably truncated. Cannot save quota settings... WARNING - Quota file info was corrupted. Size of file: %lu Blocks: %u Free block: %u Block with free entry: %u Flags: %x Setting grace times and other flags to default values. Assuming number of blocks is %u. Headers of file %s checked. Going to load data... Cannot gather quota data. Tree root node corrupted. WARNING - Some data might be changed due to corruption. Not found any corrupted blocks. Congratulations. 'Cannot truncate a file: %s /usr/bin/viCannot fork(): %s %s failed: %s setgidsetuidVISUALEDITORCannot exec %s %s %s %s %s %s %s %sBad format: %s Bad block usage: %s: %s Bad block soft limit: %s: %s Bad block hard limit: %s: %s Bad inode usage: %s: %s Bad inode soft limit: %s: %s Bad inode hard limit: %s: %s unset0seconds%useconds %-24s %22s %22s bad format: %s %d%s %-12s %22s %22s %s %d %s %d %sCannot reset a file offset: %s Cannot duplicate a file descriptor: %s Cannot open a stream to read from: %s Cannot open a stream to write to: %s %s (uid %d): Permission denied %s (gid %d): gid set allocation (%d): %s %s (gid %d): error while trying getgroups(): %s %s (gid %d): Permission denied error while getting quota from %s for %s (id %u): %s Cannot write quota for %u on %s: %s Too many parameters to editor. Disk quotas for %s %s (%cid %d): Filesystem blocks soft hard inodes soft hard %-24s %10llu %10llu %10llu %10llu %8llu %8llu Bad format: two title lines assumed WARNING - %s: cannot change current block allocation WARNING - %s: cannot change current inode allocation Times to enforce softlimit for %s %s (%cid %d): Time units may be: days, hours, minutes, or seconds Filesystem block grace inode grace Bad format: three title lines assumed Bad time units. Units are 'second', 'minute', 'hour', and 'day'. Grace period before enforcing soft limits for %ss: Filesystem Block grace period Inode grace period Only RPC quota format is allowed on NFS filesystem. RPC quota format specified for non-NFS filesystem. Only XFS quota format is allowed on XFS filesystem. XFS quota allowed only on XFS filesystem. Quota not supported by the filesystem. Cannot find any quota file to work on. Quota file not found or has wrong format. Cannot sync quotas on device %s: %s Cannot initialize quota on %s: %s Creation of %s quota format is not supported. Quota on %s is stored in system files and must be manipulated by fs tools. Cannot create new quotafile %s: %s Trying to set quota limits out of range supported by quota format on %s. Trying to set quota usage out of range supported by quota format on %s. Trying to write quota to readonly quotafile on %s Trying to write info to readonly quotafile on %s. Trying to write info to readonly quotafile on %s Statistics: Total blocks: %u Data blocks: %u Entries: %u Used average: %f Your quota file is stored in wrong endianity. Please use convertquota(8) to convert it. Cannot write block (%u): %s Cannot allocate new quota block (out of disk space). Illegal reference (%u >= %u) in %s quota file on %s. Quota file is probably corrupted. Please run quotacheck(8) and try again. Inserting already present quota entry (block %u). find_free_dqentry(): Data block full but it shouldn't. Quota structure has offset to other block (%u) than it should (%u). Quota for id %u referenced but not present. Cannot write quota (id %u): %s Quota write failed (id %u): %s Cannot read quota structure for id %u: %s ONOFFInode: none *** Status for %s quotas on device %s Accounting: %s; Enforcement: %s Accounting [ondisk]: %s; Enforcement [ondisk]: %s Inode: #%llu (%llu blocks, %u extents) Metadata init_io called when kernel support is not enabled. Metadata init_io called when kernel does not support generic quota interface! Cannot get info for %s quota file from kernel on %s: %s Cannot set info for %s quota file from kernel on %s: %s Cannot get quota for %s %d from kernel on %s: %s Cannot set quota for %s %d from kernel on %s: %s Exiting with status %dNot enough memory.Quota utilities version %s. 4.04Compiled with:%s USE_LDAP_MAIL_LOOKUP EXT2_DIRECT RPC RPC_SETQUOTA BSD_BEHAVIOURUUID=LABEL=Cannot resolve path %s: %s nfsnfs4mpfsocfs2/etc/projiduser %s does not exist. group %s does not exist. project %s does not exist. #%u/etc/nsswitch.confpasswd:dbnisnis+vfsolddefaultcsvxml%ddays%02d:%02d%uminutes%uhours%udaysnonesecondminutehourday%lldK%lld%c%lldMGTkm/proc/mounts/etc/mtab/etc/fstabautofsnoquotabindloopCannot statfs() %s: %s /proc/sys/fs/quota/proc/fs/xfs/stat/proc/fs/exfs/stat/dev/root/dev/nullnoautovfsv0vfsv1rpcCannot find a device with %s. Skipping... Cannot stat() a mountpoint with %s: %s Skipping... Cannot stat() given mountpoint %s: %s Skipping... Cannot find a filesystem mountpoint for directory %s Cannot find mountpoint for device %s Specified path %s is not directory nor device. No correct mountpoint specified. Unknown quota format: %s Supported formats are: vfsold - original quota format vfsv0 - standard quota format vfsv1 - quota format with 64-bit limits rpc - use RPC calls xfs - XFS quota format Unknown output format: %s Supported formats are: default - default csv - comma-separated values xml - simple XML Integer overflow while parsing space number.Unknown space binary unit. Valid units are K, M, G, T.Integer overflow while interpreting space unit.Integer overflow while parsing number.Unknown decimal unit. Valid units are k, m, g, t.Integer overflow while interpreting decimal unit.Cannot open any file with mount points. Cannot get device name for %s Cannot resolve mountpoint path %s: %s Cannot stat() mounted device %s: %s Device (%s) filesystem is mounted on unsupported device type. Skipping. Cannot stat() mountpoint %s: %s Cannot stat quota file %s: %s Error while releasing file on %s Cannot create set for sigaction(): %s Cannot set signal handler: %s Cannot reset signal handler: %s Mountpoint (or device) %s not found or has no quota enabled. Not all specified mountpoints are using quota. /usr/share/locale/proc/partitions %d %d %d %[^ ]md/devXFSBBSFXEXFSReIsEr2FsFound an invalid UUID: %s Error checking device name: %s udp;@0Xp p@4`(`t L 0 0| 8 ` P @ p @ X p 0  p0d0P "%D@')*p0d03344p6p89;<8`=T0>@> @AC0DXDtD0EpEGH00IdIJKL 0MDMN0OpOO S\V`WPY@Z|Z\\]$]P]_a ee0fTgxii0j@jjH0khk`l0m@n(Podpqr,rDth0uuuuv@v v8wPw|x|`}0}D~X ~l`~~` , ` t !(! \!!!!! " "@|""P"@"#8#d## # $d$$$0 %8%Фx%0%%0%4&Щ`& &&@&'x'''8((`((`()`()H)`h))p)) (*\****`+P+0+zRx /D$4FJ w?:*3$"\t(cA<BQD A(N (A ABBA hBBB A(A0G L!!H!a!A!X!a!^!A!X 0A(A BBBC (8AAAG` AAE 0d(!BGA G0E  AABF $>HS A (HEAJ AAA HBBB A(A0G L! 0A(A BBBJ H,^BBB B(A0A8Dp* 8A0A(B BBBA xO< :BBD F(I (A ABBI 4 FBD C(X0m(A ABBH BEE E(D0D8F@t 8A0A(B BBBC PLBEB B(A0A8G 8A0A(B BBBF }GVHM\ANG^BJYALGXA@ FMI A(A0DP 0A(A BBBF H4ZBBB B(A0D8FP 8A0A(B BBBC l BBB B(A0A8JD 8A0A(B BBBF EYBXE_AH|1FBB B(A0C8GP 8A0A(B BBBA L<BFBB B(A0A8NpL 8A0A(B BBBF 8BGC n ABC  ABE DBEB D(D0I 0A(A BBBK 0<BDD F0n  AABF pDrBEE B(A0D8IODIgJ\Ba 8A0A(B BBBE 0FDE J0j  AABI lPFBB E(D0A8D 8A0A(B BBBA OVDJQA\ (tx4ACF U AAG EG g AD T(qFBB B(A0A8H Q D 8A0A(B BBBD HPFBB B(A0A8D@ 8D0A(B BBBC LhFBB E(A0A8G % 8A0A(B BBBI `t FBB E(D0A8N@IHHPpHF@xHCPGXI`L@Q8C0A(B BBBp 0 FBB B(A0A8H Q GЁ؁VII]Ё 8A0A(B BBBH \ lFBB B(D0C8QWHpF 8A0A(B BBBA T 1FBB B(A0A8H Q D 8A0A(B BBBE DH fFBB A(A0GE 0A(A BBBA h FBB B(A0A8H Q DXPA 8A0A(B BBBJ  )JWGH hFBB E(D0C8LpR 8A0A(B BBBB Ph FBB B(A0A8G I  8A0A(B BBBG  p!rEe A F !LHC$ "EG D g I T p"FBB B(A0A8G L@LP 8A0A(B BBBA 0t #FAA DP  AABG 0 %VFDD DP  AABG 8 'FBA A(G` (A ABBC  d(KEG@ AC < )Kr A (X *ESGP AAA  * 0 *FAA D`  AABE 8 P,FBA A(GP (A ABBG (-EAG`X AAI $4/=EDG hCA\/uEo$x0=EDG hCA0iEc$p04AHF _DA 0EG@ AE (2yRMA SCB042FDD D`  AABF h3EP` AA `4HP H ($5ECG@p AAG 85BGD l ABD X ABE 46BFF m DBG M FBA HH6BEB B(A0I8G@@ 8A0A(B BBBJ ,X7BAA B ABG $8RBBA C(G0@8;l8Hh8BEE E(A0A8Lp  8A0A(B BBBD H`;BEE E(I0A8L` 8A0A(B BBBD H`>LBBE B(D0C8LP 8D0A(B BBBC Hd?BBB B(I0C8F 8A0A(B BBBA 8DA1FBA A(G@ (A ABBD  BTH F A 8PB FEA D(D0 (D ABBA 8$CFED A(D0(C ABBC2((CEAD k CAG ,THDOFDD ` ABG 0hDFDD DR  AABH TEEIM AD 80GRAA  CBG  CBH KKC B 4KEQp AA XtLEL AD L|0MFDE B(E0G8GZ 8A0A(B BBBH N (N\FDD | ABC   O( OEJGpW AAA LO]HV J f A lOWEQ0PFCE J@W  AABA 0PFCE G@^  AABA 8 >!hhhhiii,LeieLeLQQQy ) :Ш!ب!o0` { !X  oooooE! *0*@*P*`*p*********++ +0+@+P+`+p+++++++++,, ,0,@,P,`,p,,,,,,,,,-- -0-@-P-`-p---------.. .0.@.P.`.p.........// /0/@/P/`/p/////////00 000@0P0`0p00000000011 101@1P1`1p1111 9KVKhKbKcKvKdKuKgKiKnKfKFKm LMLR"LausergroupprojectundefinedP0`@`дP@`pusergroupprojectundefinedGA$3a1)=GA*@99GA$annobin gcc 8.4.1 20200928GA$running gcc 8.5.0 20210514GA*GA*GA! GA*FORTIFYGA+GLIBCXX_ASSERTIONS GA*GOW*GA*cf_protectionGA+omit_frame_pointerGA+stack_clashGA!stack_realign GA$3s950@9q=GA$3a1=: GA$3p950p>9 GA$3p950m:GA*GA$annobin gcc 8.4.1 20200928GA*GA*GA! GA*FORTIFYGA+GLIBCXX_ASSERTIONSGA*cf_protectionGA+omit_frame_pointerGA+stack_clashGA!stack_realignGA$running gcc 8.5.0 20210514m3 GA*GOW*GA$running gcc 8.4.1 202009289: GA*GOW*E GA*FORTIFYp>9GA+GLIBCXX_ASSERTIONS GA*FORTIFY:GA+GLIBCXX_ASSERTIONSquotacheck-4.04-14.el8.x86_64.debug"h7zXZִF!t/* ]?Eh=ڊ2NX vL^hUG RI̙]< Mh6KpO}rփL}&WQG%vO~/V7}Y(+ x2 eFSX4l4~PN@y( f r4+"泌(O|~ EsNuAPה$fLmfEbl5JW ~OA}zZuZHI(2˟1L`=BmgzM*/^SNl·eYZKլbU7MfPv?%EHguK,RFQuаr!g(^Ż{9|W4UA K;:oE#.&̙g9%xyx(|RObIp`\_PЎ:YGB\RًLAf46q('9AƸ/}::.4J~  6L*OOv2"D_1̵o22-pz7*Tnc_2TmimeݱO?b>+ְ]w+|:`87 IC7hU>"]LKGgv2^EЩjAkF<4CkJ) (UT_JH˴ epY N}#8q%FOwlƈ/ KU:bMfя:؟Q6LU_ohy%2YK)PS3ᓻiЈxF*AO->3`W'8.$hd#~Zhٜ/8-x]mժ-0;y" / NA fwE0^gK Ќ $W b؂NUJYгەHA yXO8q?UmarGFz8}0U3ziE 9@Z \[%J=mtG1qų1߄ڣZ}ٟ#USV5Z*L˟|8>N'TO>B~b(h^Y(Uʿ|vMbZcǡZ⼎9 O^ ђV~{Lkp>;^]eBA,CaNUb)gxaZo B@7Y0k4vN LI˒kR:Dk?A#a [ B!qB}Y<]G3Lx|i:~M7\0z'@A  rX $b4gQuqsP&$7u!D%G(P&"{RpB ME¤obj7o 5;r1Ʃb_`H?M-7YS!M$=ZdlgVgYgK],=0L3庁E#3ێ\F@1&qSkSR0#嶢`yȍ <51')^s2{[;SLֆ t+V7 LAjtUyJNOoڃ? +bWIKδjFCF#NH$ߩ^4pמnaP%=6Nj{"Ro@poV#.z/oFfE9Mt!2%㘺RSB-| ^ǝS@6%Ҟ,},I.WP"U +G*VwԹGڗ=劲\S䫌fU{pM;['j{f=D̨1.ag ".T:aЇR[TzB°q\ӫ'OV<#U29 0vq#bHc#>TaMq&IY7zncGfSޏLnbIyxO?E*!PzʉP)FL淤4V]~ ݆:xD=тSȾy+~#Ir8ӲD a} V0GwܭyTqPkrP'.!)qDs:as(2m\+b)йԮ8cNl <;H`=lYh P%vmDž/LPS ,ZNNAt\ 4<慆2t2pk7UTh(͏ 歊qCu_(BLIeo27PHI Ec,',}~3G,hSn^Փ'\y"qU{k/Lc\g n"\GVod=b!ݞ|afDl!!'WeNdX)eyݽP#ZFm`I;=BLI l@bM؂߲g^Z\kj7W9,NCP@wcM[zO'&IFG#5)Le! r'`uBqUu̍w]vNAYN EIQ,О^|_yb7Nlz7N1c韯6Oz2-Cb iڎm^s"n,"`@NsvPr P9 +)b(Hw%:±m Ӱhn48U<ڱgYZ.shstrtab.interp.note.gnu.property.note.ABI-tag.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.plt.sec.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.data.rel.ro.dynamic.got.data.bss.gnu.build.attributes.gnu_debuglink.gnu_debugdata  & 4$Go000Q `` Y{aono}BX ))**11@9@9::  : :6ppvv%Ш!Шب!ب! ! !@!D `!DH  yD (/@ >