-[](https://discord.com/invite/26vT9wt3n3) [](https://github.com/DJj123dj/open-ticket/releases/tag/v3.4.0) []() [](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) [](https://docs.openticket.dj-dj.be)
+[](https://discord.com/invite/26vT9wt3n3) [](https://github.com/DJj123dj/open-ticket/releases/tag/v3.4.1) []() [](https://github.com/DJj123dj/open-ticket/blob/main/LICENSE) [](https://docs.openticket.dj-dj.be)
### Open Ticket
-Open Ticket is of the most customisable discord ticket bots of all time!
-You have more than +100 options to customise in the config! This includes html transcripts, unlimited tickets, custom embeds & more!
-We also have a great support service, we can solve every question you have about open ticket! We even provide free 24/7 hosting if you want!
+Open Ticket is the most customisable discord ticket bot that you will ever find! There are more than 150 options to customise in the config! This includes html transcripts, unlimited amount of tickets, custom embeds & more! Did you know that even the html transcripts are highly customisable? Don't wait and check it out! If you're having trouble setting the bot up, feel free to join our support server and we will help you further!
Take a look at all the features and discover the possibilities!
### [Documentation](https://docs.openticket.dj-dj.be/quick-start)
@@ -13,7 +11,7 @@ Take a look at all the features and discover the possibilities!
## Features
- **🎉 NEW! html transcripts V2!**
- 🔒 close, ❌ delete & ✅ re-open tickets
-- 🇬🇧 translation in 18 different languages
+- 🇬🇧 translation in 19 different languages
- 📄 very advanced customisation
- 🆗 buttons or 🔽 dropdowns!
- 🆒 plugins
@@ -39,33 +37,34 @@ You can already see some images at our [documentation!](https://docs.openticket.
## credits
DJdj Development Team
-|Main Developer|Developer|Support Team|Designer|
-|--------------|---------|-----------|---------|
-|DJj123dj |Sanke |DJ-Lite |vuur_draak|
+|Main Developer|Developer |Support Team|Designer|
+|--------------|------------|-----------|---------|
+|djj123dj |sankedev |DJ-Lite |vuur_draak|
Translators
|Language |Translator |
|--------------|-------------------------|
-|Dutch |DJj123dj#1706 |
-|Romanian |Sanke#6086 |
-|French |Sanke#6086 |
-|Spanish |Redactado#1673 & josuens14#5267|
-|German |david.#8276 |
-|Italian |Maurizio#0268 |
+|Dutch |djj123dj |
+|Romanian |sankedev |
+|French |sankedev |
+|Spanish |redactado & josuens |
+|German |david.3 |
+|Italian |maurizio26 |
|Czech |t0miiis#3022 |
-|Arabic |ChilledBroke#9986 & M4#5882|
-|Danish |the_gamer#5095 |
-|Portuguese |QuirAddon#9778 |
-|Russian |Apexo#0723 |
-|Turkish |Hydrâelčhâvø#1575 |
-|Polish |MKevas#8311 |
-|Slovenian |n1kkec#5341 |
-|Thai |Mods HD#0661 |
-|Norwegian |NoOneNook#0266 |
-|Greek |ꙅoᴎɒᎸɘƚꙅ#3744 |
+|Arabic |Sarcastic#9318 |
+|Danish |.the_gamer |
+|Portuguese |quiradon |
+|Russian |apexo |
+|Turkish |Hydra#0009 |
+|Polish |mkevas |
+|Slovenian |n1kkec |
+|Thai |modshd |
+|Norwegian |noonenook |
+|Greek |stefanos#5739 |
+|Ukrainian |anderskiy |
## links
-current version: _v3.4.0_
+current version: _v3.4.1_
changelog: [click here](https://docs.openticket.dj-dj.be/other/changelog)
documentation: [click here](https://docs.openticket.dj-dj.be/quick-start)
diff --git a/commands/add.js b/commands/add.js
index f69e223..643ccb3 100644
--- a/commands/add.js
+++ b/commands/add.js
@@ -31,8 +31,8 @@ module.exports = () => {
msg.channel.send({embeds:[bot.embeds.commands.addEmbed(user,msg.author)]})
var loguser = msg.mentions.users.first()
- log("command","someone used the 'add' command",[{key:"user",value:msg.author.tag}])
- log("system","user added to ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"added_user",value:loguser.tag}])
+ log("command","someone used the 'add' command",[{key:"user",value:msg.author.username}])
+ log("system","user added to ticket",[{key:"user",value:msg.author.username},{key:"ticket",value:msg.channel.name},{key:"added_user",value:loguser.username}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketAdd(msg.author,loguser,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData})
@@ -61,8 +61,8 @@ module.exports = () => {
interaction.editReply({embeds:[bot.embeds.commands.addEmbed(user,interaction.user)]})
var loguser = user
- log("command","someone used the 'add' command",[{key:"user",value:interaction.user.tag}])
- log("system","user added to ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"added_user",value:loguser.tag}])
+ log("command","someone used the 'add' command",[{key:"user",value:interaction.user.username}])
+ log("system","user added to ticket",[{key:"user",value:interaction.user.username},{key:"ticket",value:interaction.channel.name},{key:"added_user",value:loguser.username}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketAdd(interaction.user,loguser,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
diff --git a/commands/change.js b/commands/change.js
index a4619e8..e85f586 100644
--- a/commands/change.js
+++ b/commands/change.js
@@ -48,8 +48,8 @@ module.exports = () => {
msg.channel.setName(newTicket.channelprefix+name)
msg.channel.send({embeds:[bot.embeds.commands.changeEmbed(msg.author,newtype)]})
- log("command","someone used the 'change' command",[{key:"user",value:msg.author.tag}])
- log("system","ticket type changed",[{key:"user",value:msg.author.tag},{key:"ticket",value:name},{key:"newtype",value:newtype}])
+ log("command","someone used the 'change' command",[{key:"user",value:msg.author.username}])
+ log("system","ticket type changed",[{key:"user",value:msg.author.username},{key:"ticket",value:name},{key:"newtype",value:newtype}])
APIEvents.onCommand("change",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
})
@@ -111,8 +111,8 @@ module.exports = () => {
interaction.editReply({embeds:[bot.embeds.commands.changeEmbed(interaction.user,newtype)]})
- log("command","someone used the 'change' command",[{key:"user",value:interaction.user.tag}])
- log("system","ticket type changed",[{key:"user",value:interaction.user.tag},{key:"ticket",value:name},{key:"newtype",value:newtype}])
+ log("command","someone used the 'change' command",[{key:"user",value:interaction.user.username}])
+ log("system","ticket type changed",[{key:"user",value:interaction.user.username},{key:"ticket",value:name},{key:"newtype",value:newtype}])
APIEvents.onCommand("change",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
})
}
\ No newline at end of file
diff --git a/commands/claim.js b/commands/claim.js
index f7984f8..21c35dd 100644
--- a/commands/claim.js
+++ b/commands/claim.js
@@ -35,7 +35,7 @@ module.exports = () => {
storage.set("claimData",msg.channel.id,claimingUser.id)
const newEmbed = new embed(firstmsg.embeds[0].data)
- .setFooter({text:"claimed by: "+msg.author.tag,iconURL:msg.author.displayAvatarURL()})
+ .setFooter({text:"claimed by: "+msg.author.username,iconURL:msg.author.displayAvatarURL()})
if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){
firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]})
@@ -45,8 +45,8 @@ module.exports = () => {
msg.channel.send({embeds:[bot.embeds.commands.claimEmbed(claimingUser,msg.author)]})
- log("command","someone used the 'claim' command",[{key:"user",value:msg.author.tag}])
- log("system","user claimed to ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"claimed_user",value:claimingUser.tag}])
+ log("command","someone used the 'claim' command",[{key:"user",value:msg.author.username}])
+ log("system","user claimed to ticket",[{key:"user",value:msg.author.username},{key:"ticket",value:msg.channel.name},{key:"claimed_user",value:claimingUser.username}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketClaim(msg.author,loguser,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData})
@@ -79,7 +79,7 @@ module.exports = () => {
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return msg.channel.send({embeds:[bot.errorLog.notInATicket]})
const newEmbed = new embed(firstmsg.embeds[0].data)
- .setFooter({text:"claimed by: "+user.tag,iconURL:user.displayAvatarURL()})
+ .setFooter({text:"claimed by: "+user.username,iconURL:user.displayAvatarURL()})
if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){
firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]})
@@ -90,8 +90,8 @@ module.exports = () => {
interaction.editReply({embeds:[bot.embeds.commands.claimEmbed(user,interaction.user)]})
- log("command","someone used the 'claim' command",[{key:"user",value:interaction.user.tag}])
- log("system","user claimed to ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"claimed_user",value:user.tag}])
+ log("command","someone used the 'claim' command",[{key:"user",value:interaction.user.username}])
+ log("system","user claimed to ticket",[{key:"user",value:interaction.user.username},{key:"ticket",value:interaction.channel.name},{key:"claimed_user",value:user.username}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketClaim(interaction.user,user,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
diff --git a/commands/close.js b/commands/close.js
index 5c13fe3..d4a5750 100644
--- a/commands/close.js
+++ b/commands/close.js
@@ -44,7 +44,7 @@ module.exports = () => {
require("../core/ticketActions/ticketCloser").closeManager(msg.member,msg.channel,prefix,"close",reason,true)
- log("command","someone used the 'close' command",[{key:"user",value:msg.author.tag}])
+ log("command","someone used the 'close' command",[{key:"user",value:msg.author.username}])
APIEvents.onCommand("close",true,msg.author,msg.channel,msg.guild,new Date())
})
@@ -79,7 +79,7 @@ module.exports = () => {
require("../core/ticketActions/ticketCloser").closeManager(interaction.member,interaction.channel,prefix,"close",false,true)
- log("command","someone used the 'close' command",[{key:"user",value:interaction.user.tag}])
+ log("command","someone used the 'close' command",[{key:"user",value:interaction.user.username}])
APIEvents.onCommand("close",true,interaction.user,interaction.channel,interaction.guild,new Date())
})
}
\ No newline at end of file
diff --git a/commands/delete.js b/commands/delete.js
index 00dbe8b..6606317 100644
--- a/commands/delete.js
+++ b/commands/delete.js
@@ -38,7 +38,7 @@ module.exports = () => {
require("../core/ticketActions/ticketCloser").closeManager(msg.member,msg.channel,prefix,"delete",false,true)
- log("command","someone used the 'delete' command",[{key:"user",value:msg.author.tag}])
+ log("command","someone used the 'delete' command",[{key:"user",value:msg.author.username}])
APIEvents.onCommand("delete",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
})
@@ -72,7 +72,7 @@ module.exports = () => {
require("../core/ticketActions/ticketCloser").closeManager(interaction.member,interaction.channel,prefix,"delete",false,true)
- log("command","someone used the 'delete' command",[{key:"user",value:interaction.user.tag}])
+ log("command","someone used the 'delete' command",[{key:"user",value:interaction.user.username}])
APIEvents.onCommand("delete",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
})
}
\ No newline at end of file
diff --git a/commands/help.js b/commands/help.js
index cf31a32..e0ac3b8 100644
--- a/commands/help.js
+++ b/commands/help.js
@@ -32,7 +32,7 @@ module.exports = () => {
if (msg.content == config.prefix || msg.content == config.prefix+" " || msg.content == otherprefix){
msg.channel.send({embeds:[helpEmbed]})
- log("command","someone used the 'help' command",[{key:"user",value:msg.author.tag}])
+ log("command","someone used the 'help' command",[{key:"user",value:msg.author.username}])
APIEvents.onCommand("help",true,msg.author,msg.channel,msg.guild,new Date())
return
}
@@ -40,7 +40,7 @@ module.exports = () => {
if (args[1]){
if (!args[1].startsWith("close") && !args[1].startsWith("delete") && !args[1].startsWith("remove") && !args[1].startsWith("add") && !args[1].startsWith("msg") && !args[1].startsWith("remove") && !args[1].startsWith("rename") && !args[1].startsWith("reopen")){
msg.channel.send({embeds:[helpEmbed]})
- log("command","someone used the 'help' command",[{key:"user",value:msg.author.tag}])
+ log("command","someone used the 'help' command",[{key:"user",value:msg.author.username}])
APIEvents.onCommand("help",true,msg.author,msg.channel,msg.guild,new Date())
}
}
@@ -51,7 +51,7 @@ module.exports = () => {
if (interaction.commandName != "help") return
interaction.reply({embeds:[helpEmbed]})
- log("command","someone used the 'help' command",[{key:"user",value:interaction.user.tag}])
+ log("command","someone used the 'help' command",[{key:"user",value:interaction.user.username}])
APIEvents.onCommand("help",true,interaction.user,interaction.channel,interaction.guild,new Date())
})
}
\ No newline at end of file
diff --git a/commands/remove.js b/commands/remove.js
index 7fc6ef2..357ea25 100644
--- a/commands/remove.js
+++ b/commands/remove.js
@@ -32,8 +32,8 @@ module.exports = () => {
var loguser = msg.mentions.users.first()
- log("command","someone used the 'remove' command",[{key:"user",value:msg.author.tag}])
- log("system","user removed from ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"removed_user",value:loguser.tag}])
+ log("command","someone used the 'remove' command",[{key:"user",value:msg.author.username}])
+ log("system","user removed from ticket",[{key:"user",value:msg.author.username},{key:"ticket",value:msg.channel.name},{key:"removed_user",value:loguser.username}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketRemove(msg.author,loguser,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData})
@@ -62,8 +62,8 @@ module.exports = () => {
var loguser = user
- log("command","someone used the 'remove' command",[{key:"user",value:interaction.user.tag}])
- log("system","user removed from ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"removed_user",value:loguser.tag}])
+ log("command","someone used the 'remove' command",[{key:"user",value:interaction.user.username}])
+ log("system","user removed from ticket",[{key:"user",value:interaction.user.username},{key:"ticket",value:interaction.channel.name},{key:"removed_user",value:loguser.username}])
const ticketData = require("../core/utils/configParser").getTicketById(ticketId,true)
APIEvents.onTicketRemove(interaction.user,loguser,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
diff --git a/commands/rename.js b/commands/rename.js
index db14eb8..516644b 100644
--- a/commands/rename.js
+++ b/commands/rename.js
@@ -39,12 +39,11 @@ module.exports = () => {
})
if (!prefix) prefix = "noprefix-"
-
msg.channel.setName(prefix+newname)
msg.channel.send({embeds:[bot.embeds.commands.renameEmbed(msg.author,prefix+newname)]})
- log("command","someone used the 'rename' command",[{key:"user",value:msg.author.tag}])
- log("system","ticket renamed",[{key:"user",value:msg.author.tag},{key:"ticket",value:name},{key:"newname",value:newname}])
+ log("command","someone used the 'rename' command",[{key:"user",value:msg.author.username}])
+ log("system","ticket renamed",[{key:"user",value:msg.author.username},{key:"ticket",value:name},{key:"newname",value:newname}])
APIEvents.onCommand("rename",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
})
@@ -79,8 +78,8 @@ module.exports = () => {
interaction.channel.setName(prefix+newname)
interaction.editReply({embeds:[bot.embeds.commands.renameEmbed(interaction.user,prefix+newname)]})
- log("command","someone used the 'rename' command",[{key:"user",value:interaction.user.tag}])
- log("system","ticket renamed",[{key:"user",value:interaction.user.tag},{key:"ticket",value:name},{key:"newname",value:newname}])
+ log("command","someone used the 'rename' command",[{key:"user",value:interaction.user.username}])
+ log("system","ticket renamed",[{key:"user",value:interaction.user.username},{key:"ticket",value:name},{key:"newname",value:newname}])
APIEvents.onCommand("rename",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
})
diff --git a/commands/reopen.js b/commands/reopen.js
index 09d4678..d43082b 100644
--- a/commands/reopen.js
+++ b/commands/reopen.js
@@ -25,7 +25,7 @@ module.exports = () => {
require("../core/ticketActions/ticketReopener").reopenTicket(msg.guild,msg.channel,msg.author)
- log("command","someone used the 'reopen' command",[{key:"user",value:msg.author.tag}])
+ log("command","someone used the 'reopen' command",[{key:"user",value:msg.author.username}])
APIEvents.onCommand("reopen",true,msg.author,msg.channel,msg.guild,new Date())
})
@@ -45,7 +45,7 @@ module.exports = () => {
require("../core/ticketActions/ticketReopener").reopenTicket(interaction.guild,interaction.channel,interaction.user)
- log("command","someone used the 'reopen' command",[{key:"user",value:interaction.user.tag}])
+ log("command","someone used the 'reopen' command",[{key:"user",value:interaction.user.username}])
APIEvents.onCommand("reopen",true,interaction.user,interaction.channel,interaction.guild,new Date())
})
}
\ No newline at end of file
diff --git a/commands/ticket.js b/commands/ticket.js
index dc9b57b..2809c4c 100644
--- a/commands/ticket.js
+++ b/commands/ticket.js
@@ -38,7 +38,7 @@ module.exports = () => {
msg.channel.send({embeds:[embed],components:componentRows})
- log("command","someone used the 'message' command",[{key:"user",value:msg.author.tag},{key:"id",value:id}])
+ log("command","someone used the 'message' command",[{key:"user",value:msg.author.username},{key:"id",value:id}])
APIEvents.onCommand("message",permsChecker.command(msg.author.id,msg.guild.id),msg.author,msg.channel,msg.guild,new Date())
}
})
@@ -62,7 +62,7 @@ module.exports = () => {
interaction.reply({content:l.commands.ticketWarning})
interaction.channel.send({embeds:[embed],components:componentRows})
- log("command","someone used the 'message' command",[{key:"user",value:interaction.user.tag},{key:"id",value:id}])
+ log("command","someone used the 'message' command",[{key:"user",value:interaction.user.username},{key:"id",value:id}])
APIEvents.onCommand("message",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
diff --git a/commands/unclaim.js b/commands/unclaim.js
index f591b35..c254238 100644
--- a/commands/unclaim.js
+++ b/commands/unclaim.js
@@ -57,8 +57,8 @@ module.exports = () => {
msg.channel.send({embeds:[bot.embeds.commands.unclaimEmbed(msg.author)]})
- log("command","someone used the 'unclaim' command",[{key:"user",value:msg.author.tag}])
- log("system","user unclaimed from ticket",[{key:"user",value:msg.author.tag},{key:"ticket",value:msg.channel.name},{key:"unclaimed_user",value:unclaimuser}])
+ log("command","someone used the 'unclaim' command",[{key:"user",value:msg.author.username}])
+ log("system","user unclaimed from ticket",[{key:"user",value:msg.author.username},{key:"ticket",value:msg.channel.name},{key:"unclaimed_user",value:unclaimuser}])
APIEvents.onTicketUnclaim(msg.author,msg.channel,msg.guild,new Date(),{status:"open",name:msg.channel.name,ticketOptions:ticketData})
@@ -113,8 +113,8 @@ module.exports = () => {
interaction.editReply({embeds:[bot.embeds.commands.unclaimEmbed(interaction.user)]})
- log("command","someone used the 'unclaim' command",[{key:"user",value:interaction.user.tag}])
- log("system","user unclaimed from ticket",[{key:"user",value:interaction.user.tag},{key:"ticket",value:interaction.channel.name},{key:"unclaimed_user",value:unclaimuser}])
+ log("command","someone used the 'unclaim' command",[{key:"user",value:interaction.user.username}])
+ log("system","user unclaimed from ticket",[{key:"user",value:interaction.user.username},{key:"ticket",value:interaction.channel.name},{key:"unclaimed_user",value:unclaimuser}])
APIEvents.onTicketUnclaim(interaction.user,interaction.channel,interaction.guild,new Date(),{status:"open",name:interaction.channel.name,ticketOptions:ticketData})
APIEvents.onCommand("unclaim",permsChecker.command(interaction.user.id,interaction.guild.id),interaction.user,interaction.channel,interaction.guild,new Date())
diff --git a/config.json b/config.json
index 9b69ccb..9bd9b82 100644
--- a/config.json
+++ b/config.json
@@ -111,7 +111,7 @@
"dropdown":false,
"enableFooter":false,
- "footer":"Open Ticket v3.4.0 - I'm a footer!",
+ "footer":"Open Ticket v3.4.1 - I'm a footer!",
"enableFooterImage":false,
"footerImage":"https://www.example.com/catmemes/cat.png",
diff --git a/core/checker.js b/core/checker.js
index e44198c..cffeb44 100644
--- a/core/checker.js
+++ b/core/checker.js
@@ -179,7 +179,7 @@ exports.checker = async () => {
checkType(option.description,"string",path+"/description")
//icon
- const emojiRegex = /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/gi;
+ const emojiRegex = /(?:\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])|(?:)/gi
if (option.icon.length > 0){
const isEmoji = emojiRegex.test(option.icon)
@@ -427,7 +427,7 @@ exports.checker = async () => {
checkType(config.languageFile,"string","languagefile")
const lf = config.languageFile
- if (!lf.startsWith("custom") && !lf.startsWith("english") && !lf.startsWith("dutch") && !lf.startsWith("romanian") && !lf.startsWith("german") && !lf.startsWith("arabic") && !lf.startsWith("spanish") && !lf.startsWith("portuguese") && !lf.startsWith("french") && !lf.startsWith("italian") && !lf.startsWith("czech") && !lf.startsWith("danish") && !lf.startsWith("russian") && !lf.startsWith("turkish") && !lf.startsWith("polish") && !lf.startsWith("slovenian") && !lf.startsWith("thai") && !lf.startsWith("norwegian") && !lf.startsWith("greek")){
+ if (!lf.startsWith("custom") && !lf.startsWith("english") && !lf.startsWith("dutch") && !lf.startsWith("romanian") && !lf.startsWith("german") && !lf.startsWith("arabic") && !lf.startsWith("spanish") && !lf.startsWith("portuguese") && !lf.startsWith("french") && !lf.startsWith("italian") && !lf.startsWith("czech") && !lf.startsWith("danish") && !lf.startsWith("russian") && !lf.startsWith("turkish") && !lf.startsWith("polish") && !lf.startsWith("slovenian") && !lf.startsWith("thai") && !lf.startsWith("norwegian") && !lf.startsWith("greek") && !lf.startsWith("ukrainian")){
createError("'languagefile' | invalid language, more info in the wiki")
}
diff --git a/core/errorLogSystem.js b/core/errorLogSystem.js
index d224156..f36b159 100644
--- a/core/errorLogSystem.js
+++ b/core/errorLogSystem.js
@@ -16,7 +16,7 @@ exports.noPermsMessage = (user) => {
.setColor(c.Red)
.setTitle(":x: "+l.errors.noPermsTitle)
.setDescription(l.errors.noPermsDescription)
- .setFooter({iconURL:user.displayAvatarURL(),text:user.tag})
+ .setFooter({iconURL:user.displayAvatarURL(),text:user.username})
}
/**@param {discord.User} user*/
@@ -25,7 +25,7 @@ exports.noPermsDelete = (user) => {
.setColor(c.Red)
.setTitle(":x: "+l.errors.noPermsTitle)
.setDescription(l.errors.noPermsDelete)
- .setFooter({iconURL:user.displayAvatarURL(),text:user.tag})
+ .setFooter({iconURL:user.displayAvatarURL(),text:user.username})
}
/**@param {String} message */
diff --git a/core/interactionHandlers/embeds/commands.js b/core/interactionHandlers/embeds/commands.js
index 9b8c5ec..01985b8 100644
--- a/core/interactionHandlers/embeds/commands.js
+++ b/core/interactionHandlers/embeds/commands.js
@@ -19,7 +19,7 @@ exports.addEmbed = (addedUser,adder) => {
return new embed()
.setTitle("⬆️ "+l.commands.userAddedTitle.replace("{0}",addedUser.username))
.setColor(mc)
- .setFooter({text:adder.tag,iconURL:adder.displayAvatarURL()})
+ .setFooter({text:adder.username,iconURL:adder.displayAvatarURL()})
.setThumbnail(addedUser.displayAvatarURL({extension:"png"}))
}
@@ -33,7 +33,7 @@ exports.removeEmbed = (removedUser,remover) => {
return new embed()
.setTitle("⬇️ "+l.commands.userRemovedTitle.replace("{0}",removedUser.username))
.setColor(mc)
- .setFooter({text:remover.tag,iconURL:remover.displayAvatarURL()})
+ .setFooter({text:remover.username,iconURL:remover.displayAvatarURL()})
.setThumbnail(removedUser.displayAvatarURL({extension:"png"}))
}
@@ -47,7 +47,7 @@ exports.closeEmbed = (closer,description) => {
const embd = new embed()
.setTitle("🔒 "+l.commands.closeTitle)
.setColor(mc)
- .setFooter({text:closer.tag,iconURL:closer.displayAvatarURL()})
+ .setFooter({text:closer.username,iconURL:closer.displayAvatarURL()})
if (description) embd.setDescription(description)
return embd
@@ -63,7 +63,7 @@ exports.autocloseSignalEmbed = (closer,time) => {
const embd = new embed()
.setTitle("⏰ This ticket got closed by Autoclose!")
.setColor(mc)
- .setFooter({text:closer.tag,iconURL:closer.displayAvatarURL()})
+ .setFooter({text:closer.username,iconURL:closer.displayAvatarURL()})
.setDescription("This ticket has been inactive for `"+time+"h`!")
return embd
}
@@ -77,7 +77,7 @@ exports.deleteEmbed = (deleter) => {
return new embed()
.setTitle("❌ "+l.commands.deleteTitle)
.setColor(mc)
- .setFooter({text:deleter.tag,iconURL:deleter.displayAvatarURL()})
+ .setFooter({text:deleter.username,iconURL:deleter.displayAvatarURL()})
}
/**
@@ -90,7 +90,7 @@ exports.renameEmbed = (renamer,newname) => {
return new embed()
.setTitle("🔄 "+l.commands.renameTitle.replace("{0}",newname))
.setColor(mc)
- .setFooter({text:renamer.tag,iconURL:renamer.displayAvatarURL()})
+ .setFooter({text:renamer.username,iconURL:renamer.displayAvatarURL()})
}
/**
@@ -102,7 +102,7 @@ exports.renameEmbed = (renamer,newname) => {
return new embed()
.setTitle("🔓 "+l.commands.reopenTitle)
.setColor(mc)
- .setFooter({text:reopener.tag,iconURL:reopener.displayAvatarURL()})
+ .setFooter({text:reopener.username,iconURL:reopener.displayAvatarURL()})
}
/**
@@ -115,7 +115,7 @@ exports.renameEmbed = (renamer,newname) => {
return new embed()
.setTitle("📌 "+l.commands.claimTitle.replace("{0}",claimer.username))
.setColor(mc)
- .setFooter({text:user.tag,iconURL:user.displayAvatarURL()})
+ .setFooter({text:user.username,iconURL:user.displayAvatarURL()})
}
/**
@@ -127,7 +127,7 @@ exports.renameEmbed = (renamer,newname) => {
return new embed()
.setTitle("🆓 "+l.commands.unclaimTitle)
.setColor(mc)
- .setFooter({text:unclaimer.tag,iconURL:unclaimer.displayAvatarURL()})
+ .setFooter({text:unclaimer.username,iconURL:unclaimer.displayAvatarURL()})
}
/**
@@ -140,5 +140,5 @@ exports.changeEmbed = (changer,newtype) => {
return new embed()
.setTitle("🔄 "+l.commands.changeTitle.replace("{0}",newtype))
.setColor(mc)
- .setFooter({text:changer.tag,iconURL:changer.displayAvatarURL()})
+ .setFooter({text:changer.username,iconURL:changer.displayAvatarURL()})
}
\ No newline at end of file
diff --git a/core/interactionHandlers/handlers/accepted/claiming.js b/core/interactionHandlers/handlers/accepted/claiming.js
index 0f9bcb1..e8fe982 100644
--- a/core/interactionHandlers/handlers/accepted/claiming.js
+++ b/core/interactionHandlers/handlers/accepted/claiming.js
@@ -45,7 +45,7 @@ module.exports = () => {
if (firstmsg == undefined || firstmsg.author.id != client.user.id) return interaction.editReply({embeds:[bot.errorLog.notInATicket]})
const newEmbed = new embed(firstmsg.embeds[0].data)
- .setFooter({text:"claimed by: "+interaction.user.tag,iconURL:interaction.user.displayAvatarURL()})
+ .setFooter({text:"claimed by: "+interaction.user.username,iconURL:interaction.user.displayAvatarURL()})
if (firstmsg.components[0].components[1] && firstmsg.components[0].components[1].disabled){
firstmsg.edit({components:[bot.buttons.firstmsg.firstmsgRowDisabledNoClaim],embeds:[newEmbed]})
diff --git a/core/reactionRoles.js b/core/reactionRoles.js
index c901154..56864bf 100644
--- a/core/reactionRoles.js
+++ b/core/reactionRoles.js
@@ -53,7 +53,7 @@ module.exports = async () => {
option.roles.forEach((role) => {
interaction.guild.members.cache.find(u => u.id == user.id).roles.add(role)
- log("system","added role (reaction roles)",[{key:"user",value:interaction.user.tag},{key:"role",value:role}])
+ log("system","added role (reaction roles)",[{key:"user",value:interaction.user.username},{key:"role",value:role}])
const apirole = interaction.guild.roles.cache.find(r => r.id == role)
APIEvents.onReactionRole("add","add",apirole,interaction.user,interaction.channel,interaction.guild,new Date())
})
@@ -68,7 +68,7 @@ module.exports = async () => {
option.roles.forEach((role) => {
interaction.guild.members.cache.find(u => u.id == user.id).roles.remove(role)
- log("system","removed role (reaction roles)",[{key:"user",value:interaction.user.tag},{key:"role",value:role}])
+ log("system","removed role (reaction roles)",[{key:"user",value:interaction.user.username},{key:"role",value:role}])
const apirole = interaction.guild.roles.cache.find(r => r.id == role)
APIEvents.onReactionRole("remove","remove",apirole,interaction.user,interaction.channel,interaction.guild,new Date())
})
@@ -84,13 +84,13 @@ module.exports = async () => {
if (!interaction.guild.members.cache.find(u => u.id == user.id).roles.cache.has(role)){
interaction.guild.members.cache.find(u => u.id == user.id).roles.add(role)
- log("system","added role (reaction roles)",[{key:"user",value:interaction.user.tag},{key:"role",value:role}])
+ log("system","added role (reaction roles)",[{key:"user",value:interaction.user.username},{key:"role",value:role}])
const apirole = interaction.guild.roles.cache.find(r => r.id == role)
APIEvents.onReactionRole("add","add&remove",apirole,interaction.user,interaction.channel,interaction.guild,new Date())
}else {
interaction.guild.members.cache.find(u => u.id == user.id).roles.remove(role)
- log("system","removed role (reaction roles)",[{key:"user",value:interaction.user.tag},{key:"role",value:role}])
+ log("system","removed role (reaction roles)",[{key:"user",value:interaction.user.username},{key:"role",value:role}])
const apirole = interaction.guild.roles.cache.find(r => r.id == role)
APIEvents.onReactionRole("remove","add&remove",apirole,interaction.user,interaction.channel,interaction.guild,new Date())
}
diff --git a/core/slashSystem/slashEnable.js b/core/slashSystem/slashEnable.js
index 85ab3c4..20e6f7d 100644
--- a/core/slashSystem/slashEnable.js
+++ b/core/slashSystem/slashEnable.js
@@ -33,7 +33,7 @@ module.exports = async (invisible) => {
//process.stdout.write("[status] there are "+chalk.blue("0 out of 10")+" commands ready! (this can take up to 40 seconds)")
if (!invisible){
setInterval(() => {
- process.stdout.cursorTo(0)
+ if (process.stdout && process.stdout.cursorTo) process.stdout.cursorTo(0)
process.stdout.write("[status] there are "+chalk.blue(readystats+" out of 13")+" commands ready! (this can take up to 40 seconds)")
if (readystats >= 13){
console.log(chalk.green("\nready!"))
diff --git a/core/ticketActions/ticketCloser.js b/core/ticketActions/ticketCloser.js
index de4cbc0..8780c7b 100755
--- a/core/ticketActions/ticketCloser.js
+++ b/core/ticketActions/ticketCloser.js
@@ -63,7 +63,7 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => {
if (!nomessage){
await channel.send({content:"**"+l.messages.gettingdeleted+"**"})
}
- log("system","deleted a ticket",[{key:"user",value:user.tag},{key:"ticket",value:channel.name}])
+ log("system","deleted a ticket",[{key:"user",value:user.username},{key:"ticket",value:channel.name}])
pendingDelete.push(channel.id)
if (!isDatabaseError) storage.set("amountOfUserTickets",getuserID,Number(storage.get("amountOfUserTickets",getuserID)) - 1)
@@ -179,7 +179,7 @@ exports.closeManager = async (member,channel,prefix,mode,reason,nomessage) => {
channel.send({embeds:[embed],components:[bot.buttons.close.closeCommandRow]})
}
- log("system","closed a ticket",[{key:"user",value:user.tag},{key:"ticket",value:channel.name}])
+ log("system","closed a ticket",[{key:"user",value:user.username},{key:"ticket",value:channel.name}])
//send api event
diff --git a/core/ticketActions/ticketOpener.js b/core/ticketActions/ticketOpener.js
index 33e47b7..afe058b 100755
--- a/core/ticketActions/ticketOpener.js
+++ b/core/ticketActions/ticketOpener.js
@@ -54,7 +54,9 @@ module.exports = () => {
await interaction.deferReply({ephemeral:config.system.answerInEphemeralOnOpen})
} catch{}
}else if (interaction.isChatInputCommand()){
- await interaction.deferReply({ephemeral:config.system.answerInEphemeralOnOpen})
+ try {
+ await interaction.deferReply({ephemeral:config.system.answerInEphemeralOnOpen})
+ } catch{}
}else if (interaction.isStringSelectMenu()){
try {
await interaction.deferUpdate()
@@ -209,7 +211,7 @@ module.exports = () => {
firstmsg.pin()
})
- log("system","created new ticket",[{key:"ticket",value:ticketName},{key:"user",value:interaction.user.tag}])
+ log("system","created new ticket",[{key:"ticket",value:ticketName},{key:"user",value:interaction.user.username}])
require("../api/modules/events").onTicketOpen(interaction.user,ticketChannel,interaction.guild,new Date(),{name:ticketName,status:"open",ticketOptions:currentTicketOptions})
const channelbutton = new discord.ActionRowBuilder()
@@ -227,7 +229,13 @@ module.exports = () => {
}
catch{log("system","failed to send DM")}
- if ((interaction.isButton() && config.system.answerInEphemeralOnOpen) || interaction.isChatInputCommand()) interaction.editReply({embeds:[bot.errorLog.success(l.messages.createdTitle,l.messages.createdDescription)],components:[channelbutton]})
+ if ((interaction.isButton() && config.system.answerInEphemeralOnOpen) || interaction.isChatInputCommand()){
+ if (interaction.deferred){
+ interaction.editReply({embeds:[bot.errorLog.success(l.messages.createdTitle,l.messages.createdDescription)],components:[channelbutton]})
+ }else{
+ interaction.reply({embeds:[bot.errorLog.success(l.messages.createdTitle,l.messages.createdDescription)],components:[channelbutton]})
+ }
+ }
})
}else{
diff --git a/core/ticketActions/ticketReopener.js b/core/ticketActions/ticketReopener.js
index ee552f2..4e809fa 100755
--- a/core/ticketActions/ticketReopener.js
+++ b/core/ticketActions/ticketReopener.js
@@ -15,7 +15,7 @@ const pfb = discord.PermissionFlagsBits
* @returns
*/
const reopenTicket = (guild,channel,user) => {
- log("system","re-opened a ticket",[{key:"ticket",value:channel.name},{key:"user",value:user.tag}])
+ log("system","re-opened a ticket",[{key:"ticket",value:channel.name},{key:"user",value:user.username}])
var permissionsArray = []
diff --git a/core/transcriptSystem/communication/compileJsonV1.js b/core/transcriptSystem/communication/compileJsonV1.js
index d2be2cd..5d27012 100644
--- a/core/transcriptSystem/communication/compileJsonV1.js
+++ b/core/transcriptSystem/communication/compileJsonV1.js
@@ -71,7 +71,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
const memberColor = msg.member ? msg.member.displayHexColor : "#ffffff"
messagesArray.push({
author:{
- name:msg.author.tag,
+ name:msg.author.username,
id:Number(msg.author.id),
color:memberColor,
pfp:msg.author.displayAvatarURL()
@@ -106,7 +106,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
creatorname:data.ticket.creatorname,
creatorid:Number(data.ticket.creatorid),
- closedbyname:user.tag,
+ closedbyname:user.username,
closedbyid:Number(user.id),
closedtime:data.ticket.closedtime,
diff --git a/core/transcriptSystem/communication/compileJsonV2.js b/core/transcriptSystem/communication/compileJsonV2.js
index 2a2acff..950b035 100644
--- a/core/transcriptSystem/communication/compileJsonV2.js
+++ b/core/transcriptSystem/communication/compileJsonV2.js
@@ -264,7 +264,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
const authorColor = msg.member ? msg.member.displayHexColor.replace("#000000","#ffffff") : "#ffffff"
messagesArray.push({
author:{
- name:msg.author.tag,
+ name:msg.author.username,
id:msg.author.id,
color:authorColor,
pfp:msg.author.displayAvatarURL(),
@@ -331,7 +331,7 @@ exports.compile = (guild,channel,user,messagesInv,data) => {
creatorid:data.ticket.creatorid,
creatorpfp:data.ticket.creatorpfp,
- closedbyname:user.tag,
+ closedbyname:user.username,
closedbyid:user.id,
closedbypfp:user.displayAvatarURL(),
diff --git a/core/transcriptSystem/embeds.js b/core/transcriptSystem/embeds.js
index 02e15ec..48f0b54 100644
--- a/core/transcriptSystem/embeds.js
+++ b/core/transcriptSystem/embeds.js
@@ -23,7 +23,7 @@ exports.beingprocessed = (name,id,rawprocesstime,user) => {
const embed = new discord.EmbedBuilder()
.setTitle("🧾 "+l.transcripts.title)
.setColor(config.color)
- .setAuthor({name:user.tag,iconURL:user.displayAvatarURL()})
+ .setAuthor({name:user.username,iconURL:user.displayAvatarURL()})
.setFooter({text:name})
.setDescription("`"+l.transcripts.processed+"...`\n"+l.transcripts.wait+"\n\n"+l.transcripts.estimated+": "+processtime)
@@ -43,7 +43,7 @@ exports.tsready = (name,id,url,user) => {
const embed = new discord.EmbedBuilder()
.setTitle("🧾 "+l.transcripts.title)
.setColor(config.color)
- .setAuthor({name:user.tag,iconURL:user.displayAvatarURL()})
+ .setAuthor({name:user.username,iconURL:user.displayAvatarURL()})
.setFooter({text:name})
if (url){
@@ -67,7 +67,7 @@ exports.tserror = (name,id,user,err) => {
const embed = new discord.EmbedBuilder()
.setTitle("❌ "+l.transcripts.title)
.setColor(discord.Colors.Red)
- .setAuthor({name:user.tag,iconURL:user.displayAvatarURL()})
+ .setAuthor({name:user.username,iconURL:user.displayAvatarURL()})
.setFooter({text:name})
const errDesc = (typeof err == "string") ? "\n"+err : ""
diff --git a/core/transcriptSystem/manager.js b/core/transcriptSystem/manager.js
index 10cc01a..386b3cf 100644
--- a/core/transcriptSystem/manager.js
+++ b/core/transcriptSystem/manager.js
@@ -85,7 +85,7 @@ module.exports = async (messages,guild,channel,user,reason) => {
},
ticket:{
creatorid:ticketopener.id,
- creatorname:ticketopener.tag,
+ creatorname:ticketopener.username,
creatorpfp:ticketopener.displayAvatarURL(),
openedtime:opentime.getTime(),
diff --git a/core/transcriptSystem/oldTranscript.js b/core/transcriptSystem/oldTranscript.js
index 1d1861e..a6b02a2 100755
--- a/core/transcriptSystem/oldTranscript.js
+++ b/core/transcriptSystem/oldTranscript.js
@@ -47,7 +47,7 @@ exports.createTranscript = async (messagecollection,channel,backup) => {
})
const filestring = fileurls.length > 0 ? fileurls.join("\n")+"\n" : ""
const msgstats = "files: "+msg.attachments.size+", embeds: "+msg.embeds.length
- filearray.push("["+timestamp.getDate()+"/"+timestamp.getMonth()+"/"+timestamp.getFullYear()+", "+timestamp.getHours()+":"+timestamp.getMinutes()+":"+timestamp.getSeconds()+"|"+msg.author.tag+"] ["+msgstats+"]\n"+content+"\n"+filestring)
+ filearray.push("["+timestamp.getDate()+"/"+timestamp.getMonth()+"/"+timestamp.getFullYear()+", "+timestamp.getHours()+":"+timestamp.getMinutes()+":"+timestamp.getSeconds()+"|"+msg.author.username+"] ["+msgstats+"]\n"+content+"\n"+filestring)
})
if (filearray.length < 2) filearray.push("transcript is empty")
diff --git a/core/utils/liveStatus.js b/core/utils/liveStatus.js
index 472ab98..5bf3d4a 100644
--- a/core/utils/liveStatus.js
+++ b/core/utils/liveStatus.js
@@ -176,28 +176,30 @@ exports.liveStatusUploadManager = async (err) => {
const result = await uploadLiveStatus({
bot:{
id:client.user.id,
- name:client.user.tag,
+ name:client.user.username,
pfp:client.user.displayAvatarURL()
},
error:err,
openticket:{
config:{
- messages:config.messages,
- options:config.options,
- transcripts:bot.tsconfig,
- system:config.system
+ //TEMPORARY SOLUTION => AXIOS 414 ERROR!
+ //messages:config.messages,
+ //options:config.options,
+ //transcripts:bot.tsconfig,
+ //system:config.system
},
language:config.languageFile,
- version:"3.4.0",
+ version:"3.4.1",
slashcmds:slashMode,
transcripts:transcriptMode,
plugins:fs.readdirSync("./plugins"),
pluginload:globalPluginData
},
details:{
- errortime:new Date().getTime(),
- actions:this.actionRecorder,
- database:fs.readFileSync("./storage/database.json").toString()
+ errortime:new Date().getTime()
+ //TEMPORARY SOLUTION => AXIOS 414 ERROR!
+ //actions:this.actionRecorder,
+ //database:fs.readFileSync("./storage/database.json").toString()
}
})
if (!result){
diff --git a/index.js b/index.js
index fffbb54..0906a58 100644
--- a/index.js
+++ b/index.js
@@ -28,7 +28,7 @@
INFORMATION:
============
- Open Ticket v3.4.0 - © DJdj Development
+ Open Ticket v3.4.1 - © DJdj Development
discord: https://discord.dj-dj.be
website: https://www.dj-dj.be
@@ -370,7 +370,9 @@ process.on("uncaughtException",async (error,origin) => {
APIEvents.onError(error.name+": "+error.message,new Date())
//TEMPORARY INTEGRATION FOR LIVESTATUS ERROR UPLOADER:
- await require("./core/utils/liveStatus").liveStatusUploadManager(error.name+": "+error.message+" | origin: "+origin+"\n"+error.stack)
+ try {
+ await require("./core/utils/liveStatus").liveStatusUploadManager(error.name+": "+error.message+" | origin: "+origin+"\n"+error.stack)
+ } catch {this.errorLog.log("info","FAILED TO AUTO-REPORT ERROR! (you can ignore this error)")}
})
this.actionRecorder.push({
diff --git a/language/arabic.json b/language/arabic.json
index 8b90660..558fa49 100644
--- a/language/arabic.json
+++ b/language/arabic.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"ChilledBroke#9986 & M4#5882",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors": {
"missingArgsTitle": "قيمة غير صالحة!",
diff --git a/language/custom.json b/language/custom.json
index 9fcaf16..3e57402 100644
--- a/language/custom.json
+++ b/language/custom.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"DJdj Development",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Invalid Arguments!",
diff --git a/language/czech.json b/language/czech.json
index d9978ff..d3dea15 100644
--- a/language/czech.json
+++ b/language/czech.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"t0miiis#3022",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Neplatny Argument!",
diff --git a/language/danish.json b/language/danish.json
index 820bfb9..b4edef5 100644
--- a/language/danish.json
+++ b/language/danish.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"the_gamer#5095",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors": {
"missingArgsTitle": "Ugyldigt Argument!",
diff --git a/language/dutch.json b/language/dutch.json
index decf929..8e7d98d 100644
--- a/language/dutch.json
+++ b/language/dutch.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"DJj123dj#1706",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Onjuiste parameters!",
diff --git a/language/english.json b/language/english.json
index de9eebc..16ff621 100644
--- a/language/english.json
+++ b/language/english.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"DJdj Development",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Invalid Arguments!",
diff --git a/language/french.json b/language/french.json
index 177a69f..cfa0a98 100644
--- a/language/french.json
+++ b/language/french.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"Sanke#6086",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Arguments invalides!",
diff --git a/language/german.json b/language/german.json
index 3f61a12..a43045e 100644
--- a/language/german.json
+++ b/language/german.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"david.#8276 ",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Ungültiges Argument!",
diff --git a/language/greek.json b/language/greek.json
index f21ef18..4cf2b4e 100644
--- a/language/greek.json
+++ b/language/greek.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"ꙅoᴎɒᎸɘƚꙅ#3744",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Invalid Arguments!",
@@ -88,7 +88,7 @@
"deletedby":"Διεγράφη απο",
"closedby":"Έκλεισε από",
- "modalreason":"Ποιός είναι ο λόγος για να κλείσει το εισιτήριο?",
+ "modalreason":"Γιατι να κλείσει το εισιτήριο?",
"chooseATicket": "Δίαλεξε ενα εισιτήριο"
},
"transcripts":{
diff --git a/language/italian.json b/language/italian.json
index 4e4e9cf..acf89ec 100644
--- a/language/italian.json
+++ b/language/italian.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"Maurizio#0268",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Argomenti non validi!",
diff --git a/language/norwegian.json b/language/norwegian.json
index 410e2d5..dfbb52c 100644
--- a/language/norwegian.json
+++ b/language/norwegian.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"NoOneNook#0266",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Ugyldige argumenter!",
diff --git a/language/polish.json b/language/polish.json
index 8d76c99..e9853c8 100644
--- a/language/polish.json
+++ b/language/polish.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"MKevas#8311",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Nieprawidłowe argumenty!",
diff --git a/language/portuguese.json b/language/portuguese.json
index 6168019..c906a64 100644
--- a/language/portuguese.json
+++ b/language/portuguese.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"QuirAddon#9778",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Argumentos inválidos!",
diff --git a/language/romanian.json b/language/romanian.json
index 20734b6..5d2e799 100644
--- a/language/romanian.json
+++ b/language/romanian.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"Sanke#6086",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Argumente Invalide",
diff --git a/language/russian.json b/language/russian.json
index e123f4b..884853a 100644
--- a/language/russian.json
+++ b/language/russian.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"Apexo#0723",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Неверные аргументы!",
diff --git a/language/slovenian.json b/language/slovenian.json
index 9fae12a..3dcb218 100644
--- a/language/slovenian.json
+++ b/language/slovenian.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"n1kkec#5341",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Napačen argument!",
diff --git a/language/spanish.json b/language/spanish.json
index 6bc1357..baa51f5 100644
--- a/language/spanish.json
+++ b/language/spanish.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"Redactado#1673 & josuens14#5267",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"¡Argumentos inválidos!",
diff --git a/language/thai.json b/language/thai.json
index 0c11f54..9985af3 100644
--- a/language/thai.json
+++ b/language/thai.json
@@ -1,101 +1,101 @@
{
"_CREDITS":"Mods HD#0661",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"อาร์กิวเมนต์ไม่ถูกต้อง!",
- "missingArgsDescription":"อาร์กิวเมนต์ไม่ครบ",
+ "missingArgsDescription":"ขาดอาร์กิวเมนต์",
"noPermsTitle":"ไม่มีสิทธิ์!",
- "noPermsDescription":"คุณต้องมีสิทธิ์ ADMINISTRATOR หรืออยู่ในรายชื่อบทบาทที่อนุญาต!",
+ "noPermsDescription":"คุณต้องมีสิทธิ์ `ADMINISTRATOR` หรืออยู่ในรายการบทบาทที่ได้รับอนุญาต!",
"noPermsDelete":"เฉพาะผู้ดูแลระบบเท่านั้นที่สามารถลบตั๋วได้!",
"chooseFromListTitle":"ID ไม่ถูกต้อง",
"chooseFromListDescription":"เลือกหนึ่งใน ID ด้านล่าง:",
"boterror":"ข้อผิดพลาดของบอท!",
"notInTicketTitle":"คุณไม่ได้อยู่ในตั๋ว!",
- "notInTicketDescription":"คำสั่งนี้ไม่สามารถทำงานนอกตั๋วได้!",
- "ticketDoesntExist":"ตั๋วนี้ไม่มีอยู่แล้ว!",
- "roleDoesntExist":"บทบาทนี้ไม่มีอยู่แล้ว!",
- "anotherOption":"ตัวเลือกนี้ไม่ใช่ตั๋วแต่เป็นประเภทอื่น!",
- "maxAmountTitle":"จำนวนสูงสุดแล้ว!",
- "maxAmountDescription":"คุณได้สร้างตั๋วครบจำนวนที่เราให้สร้างไว้แล้ว\nดังนั้นคุณไม่สามารถสร้างตั๋วใหม่ได้!",
- "somethingWentWrong":"เกิดข้อผิดพลาดบางอย่าง!\nโปรดลองอีกครั้งในครั้งถัดไป!"
+ "notInTicketDescription":"คำสั่งนี้ไม่ทำงานนอกตั๋ว!",
+ "ticketDoesntExist":"ตั๋วนี้ไม่มีอีกแล้ว!",
+ "roleDoesntExist":"บทบาทนี้ไม่มีอีกแล้ว!",
+ "anotherOption":"ตัวเลือกนี้ไม่ใช่ตั๋ว แต่เป็นประเภทอื่น!",
+ "maxAmountTitle":"ถึงจำนวนสูงสุดแล้ว!",
+ "maxAmountDescription":"คุณได้ถึงจำนวนสูงสุดของตั๋วที่อนุญาต!\nดังนั้นคุณไม่สามารถสร้างใหม่ได้!",
+ "somethingWentWrong":"**มีบางอย่างผิดพลาด!**\nกรุณาลองอีกครั้งในภายหลัง!"
},
"commands":{
- "userAddedTitle":"เพิ่ม {0} เข้าสู่ตั๋วนี้แล้ว!",
- "userRemovedTitle":"นำ {0} ออกจากตั๋วนี้แล้ว!",
+ "userAddedTitle":"เพิ่ม {0} ในตั๋วนี้!",
+ "userRemovedTitle":"ลบ {0} ออกจากตั๋วนี้!",
"renameTitle":"เปลี่ยนชื่อเป็น {0}!",
"closeTitle":"ปิดตั๋วนี้!",
"deleteTitle":"กำลังลบตั๋วนี้...",
- "reopenTitle":"เปิดตั๋วนี้ใหม่!",
-
- "claimTitle":"ตั๋วนี้ถูกเรียกเก็บโดย {0}",
- "unclaimTitle":"ไม่มีการเรียกเก็บตั๋วนี้อีกต่อไป!",
+ "reopenTitle":"เปิดตั๋วนี้อีกครั้ง!",
+
+ "claimTitle":"ตั๋วนี้ถูกเรียกขึ้นโดย {0}",
+ "unclaimTitle":"ตั๋วนี้ไม่ได้ถูกเรียกขึ้นแล้ว!",
"changeTitle":"เปลี่ยนประเภทตั๋วเป็น {0}!",
-
+
"statsTitle":"นี่คือสถิติสำหรับ {0}!",
"autocloseTitle":"ตั๋วนี้จะถูกปิดอัตโนมัติหลังจาก {0}!",
"autocloseRejectTitle":"ตั๋วนี้จะไม่ถูกปิดอัตโนมัติอีกต่อไป!",
- "autocloseWarn":"สิ่งนี้มีผลต่อตั๋วที่ไม่มีการเคลื่อนไหว!",
-
- "goToTicket":"ไปยังตั๋ว",
- "ticketWarning":"Embed อยู่ในข้อความข้างล่าง",
- "maxTicketWarning":"**คำเตือน:** _คุณสามารถสร้างตั๋วได้สูงสุด {0} ตั๋วต่อครั้ง!_"
+ "autocloseWarn":"ส่วนนี้มีผลกับตั๋วที่ไม่ได้ใช้งาน!",
+
+ "goToTicket":"ไปที่ตั๋ว",
+ "ticketWarning":"Embed อยู่ในข้อความด้านล่าง!",
+ "maxTicketWarning":"**คำเตือน:** _คุณสามารถสร้างได้ {0} ตั๋วในครั้งเดียว!_"
},
"helpMenu":{
- "title":"คำสั่งที่มีอยู่:",
+ "title":"คำสั่งที่ใช้ได้:",
"header1":"**ไปที่ {0} เพื่อสร้างตั๋ว!**\n\n",
"header2":"**ใช้คำสั่ง `/new` หรือ `/ticket` เพื่อสร้างตั๋ว!**\n\n",
-
- "msgCmd":"แสดง Embed พร้อมปุ่ม (สำหรับแอดมินเท่านั้น)",
- "renameCmd":"เปลี่ยนชื่อตั๋ว (ห้ามมีช่องว่าง)",
+
+ "msgCmd":"สร้าง embed พร้อมปุ่ม (เฉพาะผู้ดูแลระบบ)",
+ "renameCmd":"เปลี่ยนชื่อตั๋ว (ไม่มีช่องว่าง)",
"closeCmd":"ปิดตั๋ว",
"deleteCmd":"ลบตั๋ว",
- "addCmd":"เพิ่มผู้ใช้เข้าสู่ตั๋ว",
- "removeCmd":"นำผู้ใช้ออกจากตั๋ว",
- "reopenCmd":"เปิดตั๋วใหม่หลังจากถูกปิด",
+ "addCmd":"เพิ่มผู้ใช้ในตั๋ว",
+ "removeCmd":"ลบผู้ใช้ออกจากตั๋ว",
+ "reopenCmd":"เปิดตั๋วอีกครั้งหลังจากถูกปิด",
"changeCmd":"เปลี่ยนประเภทตั๋ว",
- "claimCmd":"เรียกเก็บตั๋ว",
- "unclaimCmd":"ยกเลิกการเรียกเก็บตั๋ว",
- "statsCmd":"ดูสถิติของตั๋ว",
- "autocloseCmd":"ตั้งเวลาปิดตั๋วโดยอัตโนมัติ"
+ "claimCmd":"เรียกขึ้นตั๋ว",
+ "unclaimCmd":"ยกเลิกการเรียกขึ้นตั๋ว",
+ "statsCmd":"ดูสถิติตั๋ว",
+ "autocloseCmd":"ตั้งค่าการปิดตั๋วอัตโนมัติ"
},
"buttons":{
"close":"ปิดตั๋ว",
"delete":"ลบตั๋ว",
- "reopen":"เปิดตั๋วใหม่",
- "closeWithReason":"ปิดตั๋วพร้อมเหตุผล"
+ "reopen":"เปิดตั๋วอีกครั้ง",
+ "closeWithReason":"ปิดด้วยเหตุผล"
},
"messages":{
- "closedDescription":"ตอนนี้เฉพาะผู้ดูแลเท่านั้นที่สามารถพูดได้ในตั๋วนี้!\n\n*คลิกที่ปุ่มด้านล่างเพื่อลบหรือเปิดตั๋วใหม่!*",
+ "closedDescription":"เฉพาะผู้ดูแลระบบเท่านั้นที่สามารถพูดคุยในตั๋วนี้ได้!\n\n*คลิกที่ปุ่มด้านล่างเพื่อลบหรือเปิดตั๋วนี้อีกครั้ง!*",
"createdTitle":"สร้างตั๋วแล้ว!",
- "createdDescription":"ตั๋วของคุณถูกสร้างเรียบร้อยแล้ว คุณจะได้รับการแจ้งเตือนด้วยการพิมพ์ข้อความด้วย @ ตามตั๋วของคุณ!",
-
+ "createdDescription":"ตั๋วของคุณถูกสร้างแล้ว คุณสามารถตรวจสอบได้จากการแจ้งเตือน!",
+
"newTicketDmTitle":"ตั๋วใหม่!",
- "closedTicketDmTitle":"ตั๋วถูกปิด!",
- "deletedTicketDmTitle":"ตั๋วถูกลบ!",
+ "closedTicketDmTitle":"ปิดตั๋ว!",
+ "deletedTicketDmTitle":"ลบตั๋ว!",
"closedTicketDmDescription":"ตั๋วของคุณถูกปิด!",
"deletedTicketDmDescription":"ตั๋วของคุณถูกลบ!",
- "reopenTicketDmTitle":"ตั๋วถูกเปิดใหม่!",
- "reopenTicketDmDescription":"ตั๋วของคุณถูกเปิดใหม่!",
-
+ "reopenTicketDmTitle":"เปิดตั๋วอีกครั้ง!",
+ "reopenTicketDmDescription":"ตั๋วของคุณถูกเปิดอีกครั้ง!",
+
"chooseCategory":"เลือกหมวดหมู่:",
"gettingdeleted":"กำลังลบตั๋ว...",
-
+
"none":"ไม่มี",
"reason":"เหตุผล",
"createdat":"สร้างเมื่อ",
"openedby":"เปิดโดย",
- "deletedby":"ลบโดย",
- "closedby":"ปิดโดย",
-
- "modalreason":"เหตุผลที่ต้องการปิดตั๋ว?",
- "chooseATicket": "เลือกตั๋ว"
+ "deletedby":"ถูกลบโดย",
+ "closedby":"ถูกปิดโดย",
+
+ "modalreason":"เหตุผลในการปิดตั๋วนี้คืออะไร?",
+ "chooseATicket": "เลือกตั๋ว"
},
"transcripts":{
- "title":"บันทึกข้อความ",
- "processed":"กำลังประมวลผลบันทึกข้อความ",
- "wait":"โปรดรอสักครู่!",
+ "title":"บันทึกการสนทนา",
+ "processed":"บันทึกการสนทนากำลังดำเนินการ",
+ "wait":"กรุณารอ!",
"estimated":"เวลาโดยประมาณ",
- "available":"บันทึกข้อความพร้อมใช้งานที่นี่"
+ "available":"บันทึกการสนทนาสามารถใช้งานได้ที่นี่"
}
}
\ No newline at end of file
diff --git a/language/turkish.json b/language/turkish.json
index 459b42f..27718bf 100644
--- a/language/turkish.json
+++ b/language/turkish.json
@@ -1,6 +1,6 @@
{
"_CREDITS":"Hydrâelčhâvø#1575",
- "_INFO":"This file is a translation for open ticket 3.4.0",
+ "_INFO":"This file is a translation for open ticket 3.4.1",
"errors":{
"missingArgsTitle":"Geçersiz argümanlar!",
diff --git a/language/ukrainian.json b/language/ukrainian.json
new file mode 100644
index 0000000..1ff55c2
--- /dev/null
+++ b/language/ukrainian.json
@@ -0,0 +1,101 @@
+{
+ "_CREDITS":"Anderskiy#4093",
+ "_INFO":"Цей файл є перекладом для open ticket 3.4.1",
+
+ "errors":{
+ "missingArgsTitle":"Невірні аргументи!",
+ "missingArgsDescription":"Відсутні аргументи!",
+ "noPermsTitle":"Відсутні права!",
+ "noPermsDescription":"Вам потрібно право `ADMINISTRATOR` або бути в списку дозволених ролей!",
+ "noPermsDelete":"Тільки адміни можуть видаляти тікети!",
+ "chooseFromListTitle":"Недійсний ID",
+ "chooseFromListDescription":"Виберіть один із наведених нижче id:",
+ "boterror":"Помилка боту!",
+ "notInTicketTitle":"Вас немає в тікеті!",
+ "notInTicketDescription":"Ця команда не працює поза тікетами!",
+ "ticketDoesntExist":"Цей тікет більше не існує!",
+ "roleDoesntExist":"Ця роль більше не існує!",
+ "anotherOption":"Це не є тікетом, а є іншим типом!",
+ "maxAmountTitle":"Досягнуто максимальної кількості!",
+ "maxAmountDescription":"Ви досягли максимально дозволеної кількості тікетів!\nТож ви не можете створити новий!",
+ "somethingWentWrong":"**Щось пішло не так!**\nБудь ласка, спробуйте ще раз!"
+ },
+ "commands":{
+ "userAddedTitle":"Додано {0} до цього тікету!",
+ "userRemovedTitle":"Видалено {0} з цього тікету!",
+ "renameTitle":"Змінено ім'я на {0}!",
+ "closeTitle":"Тікет закритий!",
+ "deleteTitle":"Видаляємо тікет",
+ "reopenTitle":"Знову відкриваємо тікет!",
+
+ "claimTitle":"Цей тікет узяв {0}",
+ "unclaimTitle":"Цей тікет ніким не зайнятий!",
+ "changeTitle":"Тип тікету змінено на {0}!",
+
+ "statsTitle":"Ось статистика для {0}!",
+ "autocloseTitle":"Цей тікет буде автоматично закрито після {0}!",
+ "autocloseRejectTitle":"Цей тікет більше не закриватиметься автоматично!",
+ "autocloseWarn":"Це стосується лише неактивних тікетів!",
+
+ "goToTicket":"перейти до тікету",
+ "ticketWarning":"Ембед знаходиться в повідомленні нижче!",
+ "maxTicketWarning":"**Попередження:** _Ви можете створити лише стільки квитків за раз: {0}!_"
+ },
+ "helpMenu":{
+ "title":"Доступні команди:",
+ "header1":"**Перейдіть до {0}, щоб створити тікет!**\n\n",
+ "header2":"**Виконайте команду `/new` або `/ticket`, щоб створити тікет!**\n\n",
+
+ "msgCmd":"Створити ембед з кнопками. (тільки адміністратори)",
+ "renameCmd":"Перейменувати тікет. (без пробілів)",
+ "closeCmd":"Закрити тікет.",
+ "deleteCmd":"Видалити тікет.",
+ "addCmd":"Додати користувача до тікету.",
+ "removeCmd":"Видалити користувача з тікету.",
+ "reopenCmd":"Повторне відкриття тікету після його закриття.",
+ "changeCmd":"Змінити тіп тикету.",
+ "claimCmd":"Узяти тікет.",
+ "unclaimCmd":"Відмовитися від тікету.",
+ "statsCmd":"Переглянути статистику тікету.",
+ "autocloseCmd":"Встановіть таймер для автоматичного закриття квитка"
+ },
+ "buttons":{
+ "close":"Закрити тікет",
+ "delete":"Видалити тікет",
+ "reopen":"Відкрити тікет",
+ "closeWithReason":"Закрити з причиною"
+ },
+ "messages":{
+ "closedDescription":"Зараз лише адміністратори можуть говорити в цьому тікеті!\n\n*Натисніть кнопку нижче, щоб видалити або повторно відкрити цей тікет!*",
+ "createdTitle":"Тікет створено!",
+ "createdDescription":"Ваш тікет створено, ви можете визначити його за допомогою пінгу!",
+
+ "newTicketDmTitle":"Новий тікет!",
+ "closedTicketDmTitle":"Тікет закрито!",
+ "deletedTicketDmTitle":"Тікет видалено!",
+ "closedTicketDmDescription":"Твій тікет закрито!",
+ "deletedTicketDmDescription":"Твій тікет видалено!",
+ "reopenTicketDmTitle":"Тікет відкритий!",
+ "reopenTicketDmDescription":"Твій тікет відкритий!",
+
+ "chooseCategory":"виберіть категорію:",
+ "gettingdeleted":"Тікет видаляється...",
+
+ "none":"пусто",
+ "reason":"причина",
+ "createdat":"створений",
+ "openedby":"відкритий",
+ "deletedby":"видалений",
+ "closedby":"закритий",
+
+ "modalreason":"Яка причина закриття цього тікету?",
+ "chooseATicket": "Виберіть тікет"
+ },
+ "transcripts":{
+ "title":"Транскрипція",
+ "processed":"Ця транскрипція обробляється",
+ "wait":"Будь-ласка почекайте!",
+ "estimated":"Розрахунковий час",
+ "available":"Транскрипція доступна тут"
+ }
+}
\ No newline at end of file
diff --git a/otWIKI.png b/otWIKI.png
deleted file mode 100644
index eb0815a2e5086f3d07b3dd996bd38966e314b4fe..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 66560
zcmYg%2{=^W|Njt$5Q^+VDoZ5$HY%YASq6oaN!GFN4BEy%${tEg24mkD3?)YPon|cA
z_brTNEdT49&+qxq^9=X7bI!T%^WNXD_qkz@bu}62IO#wj5W~X<_YFWG8W#|VvVrC-
zaA(8oGH?S#>+;}(t@hPrH&J?_sg=YTwx(T~!+*&g8)X@ilK5Lq_!OuqfO)f6N0{)S9o
zUyiMiTRiR;&9ACWD-2_#>piZRYv09#=w-uJsABFEcg=eT$T>|sD0ruE%Dwu?CpplTTl^OHm@MA18b0c? zu5MkuJURa&jgq_i2bV>z?lirDM^5WUhh((1{nJ4-UZx|fOL<@S!oLN?%!U|O!Hs@p zpTu__3tEUcd3?HNGK{jvV(s3^D?UAOAd6hu49=0vBlA+x=mlU4+f~?wtUTN)8^kPE zkt^aaUKccGlzlqxUccWLKo}c;#jDe1R+$$;?@HrRRu;3aQNVAAK!~Gh0*&erGLXr6 z@@bTL9tc+~$7k2}cqM(P_#Pt8A6~s$h;^P{7lqCB&61uauul$$fbjhjQNkFfN2~|7 zWX{E-0{=%tLkfI0O=bX9V)-AWur~!Dt4`*7&;Nfe>bdP$CKghG;d(0V{!?Rh)}|| zm#&?fMew#g@t4ZCH)<*T_mfxGF3#K1xqH+(V?Jp9mbO4U0HPrJnQ4VWnJJJejLv0s zg?cW6Hq_DBA(L`?;9)A7eK6ScZ~~R;sh$L=DdmPJ h~6u&u6KHZDP!ngHVTE3KzRCzC=4;Ya*p1aKL4vEX~naxf2Mp; z$50lQa-70$aO&;6%o251`1?q-3|kB`TRBCNGb=iU?!x?x6v({uA0!$iJ?7&^CZfP< z=>E|$+3t@hH_cIK@-t1>WNiHsuc5cuK$#&E uzVuia63ro4q+gq# z7o$N8)*Q0uzQ-+ 1VzohEJEUPhsMQ+j;Ry8wmgyGe{TnrPPDe0H@4j*M*!S{O^0zxMO)!|!5z#2V z#lix$NJ87C{NRHc&t?1NLpFs|3KmJY38V<+Y06y`sHRw%qIgK8qFF?*vCOlVwrUuD zKrKzxh`SHC$B$a>cn@q@ADfI0wx#kTe^YY*;Cg$H6aI!vEf+8zoa~NCN1;6dgD>}u zEILiUmqWnua> 1H%)Od{xM58h3*7EiGpDD&KO^24d8)KcQ# GrV zAxHELbfBUt`sh6VJ*}a{bD?Eb36>bn2;((@yw0%atrmF|DWfy+*E{D*?<}sw*F?ue zW({qpX!sgcr_jjd84bILzEP7eV$>s--7_PpQ#p_y&Hn;fV%Lf;OmT|5f^a!4G#{aI zZmU^(^6V2K0{sNolPWM78X~l^{iDwyuThRzto=nuUw_>o#;#%xVs2@@^eyL} zrmJt;s;IwCY53$N!w~sv3@$J8a6P+5JZQV*3bD`+O0|;GNs=$WG vwEC6`-DUw;EupcWhXv! zX{`P(I`4<%6KW)LuCoV&bD6KBVK)@H-aLGqrh?az8}%4X89$ii3)pM3Jc3^qH{Zqa z?Wgnk4U`W(Bk!M-`B;a7>RIg8kF!r}o;g&Ej}aRlq|v@$436I$ti)|!*GkykYiw+E zZsrRK2^m*ZRz4`)@TV o9NYH>c#4<1~q__p%Vejg+7PX$VBC zRmACA43j#98d *`vwF>49r*-8vgY$H9#a|r2!Q<6@XP-u{BSPCVQb}62sR`(g#wm>A!TbWL2VXQi z{>yjpHfX(D?Sje{*@TxM^hnYs8?{hjbQ|`2tzzeLmIFD+hLT&TbYVAW!xgYW>m3 UeKm7Rl`p}JMiwfaR&?z4fa1d3qC)BVg(RnL7P?>iqfJ0G;wZ&w}-);n@c zvrpl`$B8P}WZucUUC1mUh;XCM$r~HMQ6jbawW<&*k=9wMmq~FLGNaNvWk%FwbM)bG z^dS!bd?baO0zGPFG;SWWPW_Pa7K=}U DF%coxiguv) zJQ(RZ9I^E8aCo+<%EQb1CD&8})Nucl8!ZbtSzr8iN7n*(>e3FTucy`BCW?QLDsgH4 zz=YovN)N*>82&ocsmzKYdRNflUqsmXwHd)t*=x#6yhF0nKzMfWK`r92>&-88T%eoo zyIIFuY2dxf$CH)^KLG39@_r|G>J+@X01N&bk+%Eudf?vQnYQCYuOQcnHJzZ%7kJ#9 zQLm-Nz?=msNPm>(GNdmnhP)Im6{llTsT?6|PmQF8jL-i)I|RG0*2onfFQs)Pe%>wa z=uk>^Q%d#k|DHw-$ikG3^&g1G-sXHvaz4&I(Sc)49rY-jY7Vpsi9R+|pNYbz8zp00 zE*%$OVGxMCMs7oK(IS`Uro9$9j#@E!R!O>6KR(>=*Z9tedzU5K*eUtL5{2*;hvUUq zJ@B61IH{uYa~b IkR=^i^;72-yM~Ny$k_M6yQre6zkvUFk*_eipijF=yJKJ=Qj>nEaxZ2F?PN{t~ zF;eYbcwBi*8b3OSXVM&)XS6=-uEw~P4fOM+*&pe?pDQRm(Q+#JSKMIh2Y^yCWUl(w zAQTploHo;a^=G2kmQINa=BZ?zlou9e`yfKe1LPh#udvu|bwkU5K55vhWqhXbANEZh z+frtuQIqo5GO)4`hM-CY=WiDR*WXssI-e3$l+XWDpKX5r;^Ym{ciloid&=oF^@-0l zU5|2$68Mc~3vfNJ8W*4XP8Cg)2 !6AXZpI3`$G{I`aUz|W21Xt<*x)7OgQ zYPC?ofvv>KoHBhh#^s*KUcDX&+TY3}7^PK`48m9NJL{%A)+81^NMtB?nu6`Sq>dhE z9rdSS*E_v&n`yj&DJ*U5pBB% PZf3^?$WO-pLy@j_2IcG34{xz)em? zR6^`TRv*7&g~*qjlfQjc$BjywQ2WWVYpColYnFo<9JLf; kJMt9f=IULaW9@UrtpUim~*hFq!l^8Q29kWB^*=!hqlw1qF z^;vHqAVoH&gdxZ2ZQg!O$Km*1(E%!GEBc7=>({TQ0*TY&EBMd@&*Oa%n|AOkP1%md zwM_W_ho{Qd;t%TbF%n>yj;a?c663pdyZM%g_Ia1cVuK~hE3h+MIy>c~cb498hFDkD zP4TSxY)8qB?cxwar#KF1+||RwV|Dx>C1~?|4D*#%j03%}!3Qm;!W6yV$3!fZLh`f- zyJT1%1(KQNn#HV1VxHaRSvlA(m}~{6J_QWQoQT>zR$24yssm!~oMPU8Ap3)VOg>+~ zeqL3dc{2N^Y&R R8`NNtd5Y0 z!?mE}n?n}fqtV{xx~IIA2kd`Sicf4QTAWIDQ3O_Y)Aq3}9Fv4wJ~sNBggK7bggNv; z qVc&=
uylpTbdN_HslovA z(3ZVDWY8&)V@} z{c&Q!i3WK6AC*2I&77)doNH%pIxAQjyu31S>B<8k_*fHh5uGp6&|N{N`5T(+v}72C za>A9iu>EQIEGFEEn}NY+e`oD$B-Tf4=AHKlm}^`YRQ)R$ qQ(3%0&ttDYU&?)aq- zN3}J74(CIj?5of#;6JzXc;SD{!-Gl1l?hvh7Z}_D7w#QoX5BZmeJoK?qG9Hc-OvO4 zAGceKQHDHBFTs0^hPHvJLV{Mi4y#SlQd4WoU%^j>d&kDvx6LdNWA!bxck;|la $ly%hTW6ynZ~LrW~|VK7=cnDmksg?}$1FOmPL3WT^U+y$!1b;}0xr z^9$%SMU>I@fu6G>Y#Y7jUU8Pc45L6+B){RZcJ_P1Bskz`>KU|?gL8c>mC*g&a!)j9 zCg0cizXnXL5k1O)TR3Cd+n&a^pIXjff`qLnBV^nzy)`v2N6MU&M_{y8ji?opF>cb3 z@!=zj{kuNfxt51hZKg8+`72Bisq5%>2TbFmZ8q+smXpMou?#_7 csGw#QJ5*_I46OF`y
yRaf@Z=sZoM` l$mm8XFOPeSLS^O10Ipr?Y4ES+4-l!7#3HyNft}MB-~HIyhz4 hbjY9K%m_1VQ6%w<$k86*3Ou}Gxm@~>}q{B z?lTpo|FmF0?-8Hs#%^@r7Rm;ib!Iu2opZWw4epFR+F!CPxex_+T)qzIc}t@Ld(C`; znUjJYbMO4qC_$O6n#u)-!oIBRMtg1v+q)?Svd~2NoD|K0X6bK>8WvADK*68afdVC! zT6U63E|53qVB@ZYgOskHYwZ@0(R`s+ntZvZ )+3v3z1vA|8=T2Q+r`H#TlGCzw!D)z@I$Axgw>Ezq&+w6^G-nJ5S?>@y&;x3?W2b z_*PHp0z?d;ZN5{1-9Mw_v9M0PVbfGAuURcTv^e~Jd&1i!cbfPSjIm#eJ!jK#idM~5 zPKCZ~^xA=W(BZb~tx*gms6~SEqN~h3sv81j%-8eWL%+5h?u@57VHeP)7iY6UltrRe z^@E 4+RDA=H&oMkPpFxndQcqm zVT%FZgj2v=1SH*!biYOVZp^nmyE73i!fk!HY;pd2KcK)tuKNQiq76OeR1b;0*VGcA z4@7MJlPhRZCDIo`4fc-B$0I $ p+5)hLK?=V$;->TXwHCr|Fpr8!?D+!#xI`tI5y zonrqsJ}Vr&SFuQU&*Sr)7<{+JU@v_!>ISi8k(X%1@$x}$_Tq-k+G~CzP_RsBcjHRs zc%ZD EN25JK+{K%93}=AJJ{ EXf#d3W1eSr1`>D0Hy9wwCBkoU|4`jB3uKVKJJb7qe+FxFxzPTNS6T}roa&yy)R zbXZj|vqNP)38Ua?PY~$5*Qn>vN;~o5l&8i_l#Iz}w%goi?=N-WyNn>y`l=tUEfA#S zeRIG&k-rx=y7@>vH|{ZkKkZEezJ;IZcFOlG0?dCahhv-ydp-B{)g>bVH}|YfN;4Sc zoEcdWz4TNo)Beb_a!%_K+{RBW8`QA+J07G-#U(IZ)W#dI{(Y_1IM~8#V^V!hLg^;1 zO~L}(PZk<;?^0P9^It3f2x|D^vRuSnv;R!~9CU$>RlfBem-Xw2e$*OHtVo{~^zc2o zM#LXEFt74XOG8c6UK-MN<26nba6{qX3Eh0Kb!y1(N--9h^7E`7@8# z(Q VE 3NGiPC<( fd%q95ptfN?-KG_&ypqY$6i2 ziZ9$`?~%C^Gg?3;kIk#X#6M#l8$PO8(feJSBJ0P`2zo9F-u%>+`Z;?QMdKQ<+sIcT zNg1&T_>t$`0_qE6l|Zx`GX;Ty*#H?|s6ae^$n%Cfr`u*sBTZk5RB{{uqd<-{=9k@U z>aE<;N-SdmH3%qgwoBQVoKq$*m->?tBk-M38`cM)gsaW&fm2-L!wzASt&$Vcz?vjr zP0dA&S=qvrlOfd$vlKesCNgn247@W1zMv>CpS0NI%^>e_v$R*buwp=Qu~!2o=K%^< z56wM);>#Yg&Bzq`cKnW~k>s@ &D8+0;JPn3SXRKC zjoc !Z))S|qcB?SKifUc{3G4)HAvH**)!xkXGfd+My z+~ Xp ( zDk>@+`xnXI(pLfSXt`~mY&`7n`SKa)9+Z#W#G7>#0B06npW~I!z4~ne=xTmd1yr;| zRQ+r+LL!IDRlsw8r=X@@TOR?5^y=|8inYjV(9hC&{%xsB5r)tgPI0pJp$1*aWlxmC z=uWe-%2|yuV_R C 7l6CBa7EidW(<;cJBV8FbM58BNoDg_Y8IN9o|Q> z@903cva)f^{1GFQi*Kv`K95{)uAp)I$-1;N>TOB#)yx(;ZJ#UU74&LACf>-x=ZOS1 z!=zI7A9;r)2RfH&bA6cHJK3(^XoAMT3PO(p#Kw=1_9gwcDHYeE7iF3eLbXpDO?oQ- zZ4u1O6blKZ`&SYxW!u@t8TDL$COb-kS=YCr?Xdaw1pdC8gHJ_WJbd305w{jsbIHOf zdMQRRCyrV@bdig>tVOu_AXRjWX)01f2ARsw2mt~epbR_^)_z;FvMa2-#BVUmy-U=* zY&O4ujM>^aJlc+P^4sznnoLl3-dH2>8yZc3KnVf}-Cs}Of(S`ppbk=6%H ~K<`_WQx5)I6igaWNF$H06XZC*T>pHMp z(xc8+7Vi;P{O?=Ww3+yksf8;&ntVEGd+j!C8-)KYioo`2S{S>cIzEV4?|AoQrQv*n zhOB7e;SU}y`tY|&HqqJFZ1iWk6X^ST(Q%QBT!2HkA0N)ndo^UJc2*`L*T9v$Qkezh z)uN+8$A?d5FBdx7spZ_yzKUoF+qr#IfI+jYbpbVe(%1 X*Rv0OAzTvlLzb0+u#9Y|?b0ucY1@ zT6$BO$L5>L{#aPo&sXrDYrCp%aGsM=EO?8QsiNH{oBPF<<2PZ^5>o+Io4m98k$89K zimcrlCo=*#?Mb6|)SAJZxcl$CwcW6tuM1?Q``f*yI~x|(mUUd*g>j{pA|?i}QLAga zaO}3fKVgN4L2JJ!w;f6NKN<*F-12P~xIYup+2-ov(k F<@vIz(f2ojH zwdS(qEplLa05|;`w1Mk@X`1cCA04`@?zjhSqEnpqbG|IGf=s{e)Xu3y1esZ7#{$^> zt+rZTzxj0aFMse4?Nc3RXfXFt8tsJ a&o?>2!T# cKl;m5z0IZU0o;Fak I z8G_QBsHIzv^xgvv;jEZo&EI8^<4QMzU}TRkO+51tE<*<{fgDbj%p7}-p;j&oa8k1L zmnRFy^=<7sMM2JY?w;BA)mlaxvwzasq)Lzb&V7EXChR)7U*KK0 X;2laK-=$d3L|b5F3Q&8CC4w>Yu98L?u6HdM*<=YF!wrj2%hMTY)y zRvB8))K!e=TGIedig*~$&^r&0m)ukg&Ts{fRr(wwyg*H^TG9>p11p?`T9G!>=PShw zc!w(TYE3CTp)Y=7uR`^@cJAMV QZF`BvE8npSnttP~*Fy2rDg zAJfL8Oyv}Y+R#%DH^^q;lS>Z?MHJp| zfpPv86S$5I))aZv*MA-S%?+ Y8*tu3Wpo%teJ>u9!S&!-z%_Q?qgslU z6^1&_Tu{CxU;83RTR)%+PnPsN_mX=^Y@_CS!Bw6qkq)pGht(6bxgKe$28Nkx^Fdk( zA%`oHG49g=N0PZ}`{HonlbyUnB&_qW!Y*nbijSWIG_e vT=W?q6?7pB;TtjM2nSb6I`!yS_;;4m3nGrg_XN3a1`iuqt8no^<@BgY^1Ddtn zYfk~$$WBC6a~`9lydRo4HvfI3|NdJ<2M!jFbS7_)%5HC1zxyt?Hu}m^YQ{$N*%CXx z0;g@+THUrQo0eYP=xM#2l~uWh7ljQ=Y#Xu*WjNeG<*3%$Cu8OoZ;wxUDD{ow`azn= zUSUXIr4F@BN1^siR7IE&DEQa3txq`Ooy;$w>zL8V{{^}VoR^JIFcw16WQpZZ@LT-W zm{r_BZY!Hyu@{cIDK>sdsGA&mXMzQ>8Gfi)u$JrsK
n#H}W1zgFvCzS#y_{p^W^b@mS!J)spJrCGE zb86dOiL`FvnM^7zc@XPU*TbaPv@WUM^HJ8s=BYFtmh;Os?Zah_>z0o7Y9Z_#A|$Tj z %;ZcI)zG~6(9x#Nl8RRWJ0CYcvGa?>Wpi?}Pe-*DU CA3e8qBNNjAn$A5wIM6`kwv7+di=x^7-?JOrefB3CZL zVRVq=XHI;qDe~LY8}scvsEDze(`Rrn+wX9DDC;Ckc{^9?Y?Abo)} @Z z&f85KhkLEdp!2V^(RtG+_k09@I8}509^Y-2V?26902t1hkQlH%8#g)pis3UqSGAJ* z@(>4c piS#;>8 hVT$ ze0^qnjB3pV<@Gy*{M!4i3f$__{rIEn_d?*m#|>U}mh@_0#7jHSm;Br?MPevPOUrL} zpYa+f^ms3ntTa|@bDwV}V-ZZ6M(6qK;i}J`r0@_V23Q5MfoIZHR^I$_>#BT7Dbo9p z+N*z#p-a*u{MI?ptsL&_m-GofQ34I=jy|fcGn?q!pufnX)^M{yh|s3bCFB)+lZT zMS~qz<#AJQ@@=&A$_zK#)vWnxvwJokoh%#0K@nXOAJ#QW>ND?|vsP^xEE|TxU>$c8 zIyQ!Z3~<<=7oap^{?4+$df8g<3^Bw#Q72T8v}aL?A0}BTA!R>Iz87PDOmGZRKr&>| zX*vd};Zl4g@uEv*e-8~He eQ5qdV;b~w5jZHlyw3_tsNC9Uf3^@1}0`Sg&p7ZNWP zdXE=yy0R*(D}ZaDrdro6^U} `y@Tb=wgfJjl0Md362=4 zniEmv@(fGFLz-F?; +^8(Sr^CrKx*l?|so1WoI-m}D;&{>jWAN#pd>!vc{Jz9LaEq_kQE z?Y^y;*lq(v(?Q4lw6_5Af}PL}uVg)T67hPx9rRf;T-rm@zy8o1z?=hO-KYc*k1Wey z%Vx$t^Dt`)IRgrA_sR@_O0U9N(-Yze(Xq|8RPFFyJ`;V%f=N5kdwgmI++m1sV3Sx_ zfl>I`9GrF7lvYKD@@%h>m%^Y yMlgjb%!|yDL ze9+@$cZEs1QE`S9h?j2=*JlHmBHAjMKmOWDI{SGE6w%ot$=OBZj`-OX^QI75TbZ)` zxO@d!&TGZj?^*w%zEfjhW9C)R$6Tz@XP>pU)+M~RV<&$ambXpGo8#5PIq@2= EVy_yyU{+F-v z5rFZoszm!7m`8opVR)R<+qMxna#BKlF${him1_L~73c1ltCN=5vAa^Nb6M$N-z#*Q zt<7Z6Wy~a?)7{+HDM&khKC k$|sA$4;=_)%b2RSM!fF+n|?8u{&H6H9h&=5WEI!%A`C+T9^ zCmer 150>un!YQv<@JeYneCuNpId|?{ z4YzCybGz+DUS^=QOwu2kP)!ghU=J;}L*3163wth2>C|k@`!vQ|kkj2N5JtZu-P)7Q z7iF&2`n?nKSE``JnaFgRp~HLB( &VA^i4)Vdm$ue>lv?x1#$P^Oe5o# @SP&*22vfLn vvcbHR$=}Y59+>Js*bEQ++Pf z#R%#CKuHP>(fSY(pZKGaTs@yj>(1QzrZ39rngym n zB2AzqNCB)H{YNbY{FfiTZh`)N-jG^;@LLtXETlb~XiId8lzjkt?&(qVNU#87=O6zx zwxg;Q&IPR~U!V$&9pukcb(hs>+UNR<&8m&Lnc)5a-}0D}d)i(;QuGTVp*0HTC;T~} zSg)0JEEMrQmCQ;u!%SDP$RgDd$lUs31-39>U17Xexx%$Jz&M{N45|^Kx5?XwgFCyo z=XTW6M2n`BtTEk*YrTP~HSIP)-nZ{{aNdRfB!j6Qmay)-*4~pje7A4QVooOUSzC{1 z+(ioH{?%@FuD8JJV7F?xukS-6LzLf_Q|nDG=9-(hW#+rahuHU3DQr=x> 7@!D~4{mCSjD+hQ!Pn3BDzzOD6#w9tol@}S_~(~6(WrgqT^oR^wwd##Bda?dW_ zpRz)}c%H1Q74oHQc6o$bv0hlOAw-&Pn;z@$_(ImrUmddj|hDP#Qm(Ro3tk1d;;i z{G9IsUI4~0T41FT$^0zTmvMzVO{Ae%o4gH|p5DE!8SK!qc|oND<}U;UUx2k@dXAgL zM~-e_n&PSnv^M z8EdVFvmOsOw?2)3AnpXJQGw9$xvs*x;zJ%*7a2GdTF3QR|FEMPU;2-!X;EddMWw58 z@hKW#<{mI&(C_(k+k+ggLE^UV{cWkHTH_i|G9v#Hp5~MlvaqXafAZ@&!1>}q8;^rX zA$;)zF4x+Ut!)>ekw6LzFlvejb{h>G3WV1)sNmW+#x5*8;__Q1ko-ry?YuiJ68Ldv z1YEd@F5C`^2~V%%MSTH%xoqi__5PDAtJJXaD{`^*CI_ZX8SitX&v8#EO_rAbE(7Q} zvzsSxK5*i n# dVE+eTb=uZ;;gG++bzHrNqx|M1~*#7d>5RWP(5eqgH>9^$0GPYp8t z#tr2tyxH*4p>|tXch=2Zru*e`b9dDbtHeh=Oz~4HJ;M!;0Y+-QsP6}`c{weGDF(7x zGZS8*I)v&*vKxCmZZgTYeVb{M*Ux;cpWmt;H;&-7WP~3)Me4v4y?~tCujlMV@^p$b zPT>T@i^!|s4^@h`kbm~;d!Str_Gn4=1>Jjw+xo9jzfCFV)c}aMwAIz%Vw8FHJ!Zp} z@;pOxYS|`QRP*i(M-7S|{gwYHGoa#AV>e@*Fu2W-+mL~QTW@2J2U~z&Wh%C`tV|~s zt=+;5%c4s;aHK&q=g%*9CDC&}LKn!H`qJC6J2!*7=Z=Ier}73l|Fo0~EXiVJyLxO0 zy<}ZIz4t(Y@^Hrf*716XYHhgODvIyWHX#>-#u|96T>tEl+eumb+%{ybJN=UvB(92g z$^Jgze(3A={lZ ZON`A7+h__#DJ&dH2^&~qVP)b=)HfbM#81NUI}gi<;8=S1c!k^DyV3_p^q-nhyQ z7oN#8;Z_|3_&;{{xd?!)m^WS6r^lC=c*!(K&ZS`c|4M*B5-d^0k`=y;uGSkdP2IxL z;C ?E^2^OkU`D zvQ82Td%s`|Xg>^f!_ATDn1maMiB^8j3HJ_%6JvYi>R5@G`Yb%yn8Z&@_OzX?iOUR| zQlDVJnvyr@B8H6kp}*d<8vkMvnX*;#&??w?3j+Cti7L81vA5gxU#pW-0eT`&W@RAT zQMa0kq?`TDHWwjYlw-pgyZu+Iuea3-7-et73XcGN{ k6#&3 zQgv(mm1hG~^yFMJuji3MWF4>7m|DobgJ0pwP`xOAqnv5X>90kr!B0t>)kRGJdVU0C zBSTNF?4^hB`u*w>j8={TRIq+CR nUmrpy|N1 z!p vBJ=>q5|OV}ws^#tWG_hX~!89E9HQP*7{qCNJSezchNkf9ZS+bl%3h z9X>ST#t_63mDVGl7IAnJ%0V`LNv8njJ8>*L0;Hw!c)^BrfnO&CvfRJ!Taa#e0tIhv zL pVn+2&Dsq{_YJ-ij2c$}Bx6s}AdaRKr4dxV!eV3mY7~O8<*I+yhed zYE>x#iM=MBhfriiT-EMX5&NI6ujtPZJtmsOpKN-^PqEH=`1vV%_{2_*L;AXVd(QwZ zS~S6wBDg6u_NRPK*FvY#8u#|k;!gI7DEY9?CmpE#8?O~K<}{=gFWh{>D`c8NZ$}li z PIPC?|x#Gs|;9(x1hf 1V0M_Q~ zc_MMIk+NN-n}^GY#}uGHc`v{_N%e{17K-N)kt$yM6+S!wFzQa)u$rSoIet-^lP7Kj zPSc>u6!v&I={a*_w51mxRa^WZOxv1A cQVlKpp7!a8c*=++ZOJ^*eUXK>li) zC-Y9o%jqXQ1#*ouw@iC SyWiZ5 zc9+mZS+old8X|Mg5~am{dJUirG~=so%k5N@E=Y&37@#i2MRYkueo`?qf^zP2AdyoF zJKrI0jF~JZr3{CR74;o9tr#Z5mL5}HyugM+yRTS`k|Xh|X2^q8Xi1U@a=V+9 *5x0{pCsbJYlJKiKISdUJ#J9L za>l0ZyibaC2F0WWaBAcU6u!EVftrxv6h1kv(xcm-=#u#&uaRBUqh+7?&K!|Y_sHbl zO;}+dHz71GxA6wdle0-N)RS}I>1 zkxwc%d<}E6B(_yt70IArI`u?f7u# z!s=Eru$e^Qg`#~iyuU)(8CR)x3ncVofg3e@LIrO|Y4wWF-x@#=%zx$$4{bMb#YA8S zLo7%hw-wZ6d7f`}whSL$;n|D3$#hJSkb^rxd#p9U;Yk&7-NdNPuQR|g!iY=P!=VXO z$l#{`9U *}lg29 tvmM$kii~8k2!flEh-0+WC!h(y#TCKqrl!>?f(iVFYEd*P?~s; zO!wRsuyCi!Y&Lh})_>ciPbs!jH7zaY!vokCUBp*Ce+r~YS)Mgl``y_W4;cO0rFMW< zmP*6U=ANJn{g3ab-q%1mAKVuTu?-G?tZDIBAm-SWg`+-8B !EowiU07PxqQ9YT z<+9dK+sDz{tc}CdgEQ0qQp$SLvZV5AzpI>GWN8B4FZ66Era5F7ZN)Vr-FZfWegF5( zz)pd8Y~;ZXT&@qR@$%f1yJ`72Awce?-FPjBmJr^LV9q?YqoqJ5227e-_bH6d+8-x5 z^$pkEFE&?*K8HO44Gda8;r%&Hf@hz8ne@vhpz%*Hq#W8^24oz~NaB7G-T@W{3vL{- zR!;eh4+aV;j_!(Q77B4I{ZtNVmzevI>;9DNnhN+b7e7Bjx#dCGdeHB2>pn(^T>VIw zOs))Iws&aGfQEhbc?3D5&{g+t>*mQZR917wx`#CrxP_AOK%11?q?jZO=ZN}RY{6h> zJ8rJRLV>EvKzH1}f5u4JIR)lmI57 ~hi%NPt#-z)dO%Dyk)Tu$nB# zW?U4)gB50rpRB=$$I*^6pQh?UebwK(A6$y2os_|E^rF+1-Y9Fcw(&*HRV%%mRb=B3 zs8|?2awFu0 DKZO4Turl3@CrS&^XS~66_BP5K~KuB zQUj&I4_#Z}&9d`vrfL2kV_zK>W%n%#f*?wWC^@u oP9?md6p{XD?)Fthi&_UgU%TI)5oIA0|ouSg6B$~>LF@gsRF zf5)47#Ij?TumD_R4UWmYxQbSs!yL2&{CI57+x{`?57+|4`@QoyvLZ661tA%S0%Ro6 zvQ862`0Dk}+VdC5pQd7!b}5> -1l5rk4Dex5*+~Dawx!@RsN)*%W3mgeHhT*t%epgA7rV%N?0;W1OmaX^DNLd zIMl7JnY^UbMC8F!!?3yH>oSfp4%^97Byq(6DyQ!B{%cfTB=3%yX!m~Tg|1Jn6zn2- zH61z4s+5L!CBuh9Rp0H6!LLC=)i4VfS=W)7g&utMc4w`8Q%PMafO`Es{iamMHxu`L zMGQ0ec@0k~tiutP^o@BzJe!{y&d_4r_zzo5a(08)dD@dDU56XP`R8StXEzP@aK_C^ z%K6^37Zsm)gZArXDQYd83;L~zq)C`NY-XMA1+Ab=u|1ZtXR)~ixW0#V1l|JIHKnTN zv_DDYSbIBq&VLWb;XeL;St#@-vT<8`Ut{#eEo)qsr(;Hil_X*(*ZQfx^!ii84@xL2 zqOm2!@2=K0CeAka`0J$Dcq8+YvxN!z#Ps>LO-gyJ2WT6JY 63VJ*KC{BrJ5;H1I^#uaj*- zV?{tm8{s(@?l03;*L$l5D-%KWKl8X-1MhX5-2h(R?^J#i z%cxy8ELA`Rq%XhtP7{6+0Q}z=1s%vmEEf3ww5wRFifB1s0LWztYN^*B@JlkO3_Ry6 zegL!ViP26UqU6Esbe=19ya&t}t{=uq%G~n0kY$?(y0-w0CY(z)sd~Jjosd?9l zfQBfEyW;GEEDd{Bd%E^8)sH>-i=|TZ>y~d=i|;&b_R7g)ZFipTuO>qm%4D%1XMJrp zv(kT areTp!YXO0)}RP++F#cby~OuP63#8tRoA aI)+XJq^R|4 z$alHc_FkX9Jh5Z(MiS@cQbF?mDyu#?=yiJ>gkvizVx4>;t}puLsJI_^%GsFCP~I~v zQ5%}&(Gaeo3vgHU^AZTL-h@KL!&sx@!Ot3!oLRG~>F<1YIR^PSOvn(`Epu;f8QQg( zsslG3fe>K*5w^+|vD?}u?pU@5EjHKSD(8XPa<15q#gshbwYp)JW;+a#`cqokeSUUv zbJdyp{*P>AKG;xJuhRH(bAh^I>>7UtT%GxEix1v6oAMS~GO* MTgzzmTyRh|D-p=hTf6~<1vZ-3GHM_^F8HQUW1<+^aEq)SOVSmrEmOhF& zil`PP0hXx^XKOK3Nz6yPa5*=c&7M@;AC}$5H{Xz@1u2_~P4T?itgxh06}etJ{VdF1 z#yr6uja}HLmO5u|Xp$3e+~+2VDBuFBGHrpXK?~AAL}km|o=MR1x8#rA;IqjXhO~^R zm-7`HeMH24A*au}7|i#qgHLh0qRQr0z-QC=$I}8v+Mgz!EfJ^j;!2T0yG|SBorsFf zObz{qg4xTnhE7bIlOG!%n1vb!?%G#a7JVdN2N%x+s*rUSXwvn*<0mLNC8b&?-N(mA zD@zfZ9;k c8tiU`u}%WV~$H0rLGbPL>e$*Ps{K{D?d9+jcMKu5F$3dZ!bu z7Nph(P3!#oQ-~TGSfe<#S@KGUycUGdul6woF)3AHStZ{7t^aQp6CRx~v^cdIn|H9a z^(o_2CMXv% ? zEtCr1B2E#vfg&=E(%|3Kya`G1|Q#5Vow-{M^0iT_{gqWlBx z|7b WJ`aoV*0Y9VacL0mq^&R;&q94A#4 zZg=6oNx>i2?BdGIkJ!C?#ecd>E;R`C4D0{ (O(*{ zQUaZ{)V%kxy^hB0ZBGn%AXlGwAh$*Kr)~OCEVE%+h~rJ1)CNla+am5MAo==!yrKf2 z#+%0UvR&NhvA^8_9yJt)j^)K3OU`>9v{^8CZM7MeDp=<7_v K-j99)oS%1N3HE;9DskFRtqz zg5k^MyZF%Ikpi76LFZH2;S!H!mdtfh=D(AI<-#zLD(&N&V*m;;K}FS;U;iZ5l_LoC zV$k+D;N`7*9EOu3;k9(}WV6Q#Ug@3n7XkNe0+9}$4dxsJbdPG!8SXh$9qt*z+g!Og zJSq1X%=GcO(a`i-%J2G@SMQ-~CF5;kzwS|F0g!M#X1{n4v^k57=@r?F)s-qwH&;)> z^0%vrUK=oL@`) fgHmDt;0dsC-lX=4a-k_w zaJTD@6Axf5xYJlkP8_M{ILTbQGP Qx-&CZ@>kvMm`AV!Su^uWA zg*{SJ_?z_k3#ET?(@EWm{I-bj_T^XNb^VQ~<&sR`S%4(|!DH#tS@%6##NBR_oO%3H zBN!|Okc(rcJyq2Bre_h)PjHb}E)*5${CPh*U$!EbI(@o`GS+=$2J+z42D|<|pnbyw z@tl?V3mjnt5_; >uUgTaGW+j8|UqXq+F zq=&BMaL~26a*$_#dyxmwjbZb8F>cs*87`wr>fSaZjn5W5aJgKPmD6%##_;?PD0-*> z78q>9Q>53!Jh`FCK As;hqUwgOfnMspD(upt$>j5H{WQxT_B8w zLI@wMUIU`=^N?V;E@Lpe{lvkFsG`>T !|<-OIYx4sbNvAV!hS^0Tr< 8V(h2e^U`D(J}vAVl>cr&`rW#V(@GJ~6a0;_saMhNLHsiN%m>ANxg% zizwQWOJG)WJitR{JW{$f8dG#|0grcAUbhQYPyQ*y4;J-C`Qe-4W0f71Q36#S1w#N0 z1G!fCSMRBi^X{L#$&&ZDvC1)SzM;3``imP005{bZeu9BNIxjOyvY&|S0;F==7rYs| zOKv{W)os}?K=zKgI>`})3LFN?XNI}2P;WYUt~==*Q2|vv=UJ(Dm#ODx_w;AwMaI^X zx5W9Ybz=a{+W}BibtG+3eu207y8n*yW?j&;;>Cl9R$hpiL7s0l@6fI7QA^bAKewD! zm3Z_pfI}4co>X-j8WGD2-q^d|A>gUEr!BV=RfDSdTS(c)Uf97jp)<=DP2IONEC?I# z!^y6np12E0j`Qar_hr~`T6tjiw8NLc55RMh_w18|!`Xa08 c&pfSqYhW(M7<)L*qK$NU~U-qgDC z0)QE@%Yp09l@TX>eD>2{;3TaAdo~^D@j`ji)N+14@Hxbc=uoiK&GXFIt6JHa`ftyV zQVRchOg#_4Bm(T}ai^RrE$F&SJL2WGcPC@jau7BmKX))O(h+q>Gv_`hC@1LNFFw*+ za@F#U`$vxMUHcsyKVp`lNC2NjN LY5mdY_Ltq|K!Nd N3BbI zx~f7R%CE2{T%#5e@g({Cg7V@AY%6yN*(Dfo# OIVL&Fv_s|$ukt}VY^ z3ySBgmjI}<&2 z{i{7ZG?VQzIjNrYYs2xR-rXRLUDO=;G_fx8_q$PN{j0W3dm{d&?#ceU*bz6ATnhXg z6`se5s}>f$xwvfJJ^}R6;uYltQH|TI+y}2iEp@((Ot<*jb!vUBsq`Z5s&q%GNb>Z? zXm%UQY<#369%v@QSA$gYGIV{2N}T>hBc)F{`&=NZq0-TNCb(v^yUSvOnbn#uQ0VKM znk4yEd=xDrNL?f#*OjnUC?s@(f~uT&hLnmb|3#w_Zo~*H@ccKIS~kJQ7OgUOaBHPw z`o_Fn$K;Vqy5yllE4A4x!# ^_b{QK<+J;QCMf^D2a1skIhSK5p!ZZjQMbXbB=kSiAXMsdU A!8=sFnP+EABSi4E=97g`^!s&A2CL0IGti&^0PF;UqYh)H4F&Qte=i$@jZau z3jYvGazg_6$K=%FZ4d$?=O8Rv64Bk?-f4jI#22(K?{%fPn6Y-XT~cBei%IpL!3$tG zx6?&i#6L%1D$sGzv9g{!qyL7gvDlKYQuIxJ^RI;N_WrL_U3EZ#pAz>bASSQf|6$zw zKU-MGS$JcQ5^gj5n@~pFKiH$+1> 5S;-rd+ur>U6#RxqwAQ zFO3h~kSFW-N!2w~VT_|vtd&=<9_it8n^jVR!#!(_63eLmAg=ecevrsG`NKt>3Rjev z0wV(*UXg8Ny>Yd1ii? >6$t9E0Y!c6EBmd4Tpj;VRG5;(@W?aJ&j)o$SU znNmXvPgY3THl$wX&Ce!w1V%u9d(7Z^uTH7-0GEfKm;ClVwb$P8g?1baE`DoKDbHs8 zj_AxyDp1h>PG%dPC9wAqZWDIV^s^<7N%L$`y}}6E<0|K$EjZ=xcs|fRl4|iT$rvvY za)W`JV4-*<%x8DNhj0Eu+kWVsLxa`WODNZoH}~*nPU;_hhCA~bC!3nQ6u1@-m1b$G zq=%E_O}c3Jh&0Ra+VyizL~F&_Gj}hvNvsNRbfeVmWQ?~)r+AR|o6IoIygbdD9dMr# zn3Bu*4)ut^9PX)KC5+*H7e3?>=lxn8Zc;c&z<(l`a@%`#y3H`%x%5N4j)#}`$?AJK zNSMLcA*V1*WO_%6x43AsdPt(Kr;O2QCM%`ek)YzOB!XdgPC{chYv{}YT(zBPkvh7r z&{vO^CN+_!(TIjcYe?ykKU=M^XPzm?q*Z(1Ajpy7A@UGmF;-`x(qQCp8J`AztuC3w zaqXU0*)IgG;#H}c%CHQ=+YgemfkCiI&lQGMU|ij)M%KekS~M^Sx_Ox;qwTa!#8K=n zom1;npR1WN$@1vB36sjG)jWf0b;($MLDg*RSUC_eop%Q6s7@YqV<8NbZ=wEIgHj$x z)Sj`bmkraY9d{@?2(Jte)}{6Lm%L(^UMAPY)9~Kdl7&~^MBo66D1W%a(`7yq+%rL+ zj6~JNmFiV+&T)mac~{Fvo9(z#iVF{!!#hCKbBG#+M6+kY-93!iBJfQ37i_npMOI|V zt3rK;y4#!WTf38_$DEIyDhH4-n#-;h)vMp}fazWE6nTOK8Q@4rf8P C|-$(qpnY;T%1M=F`XdY6W$6b@TOLE10V-!?a+N!B4XWf-dyGCbbC07<@%;pbI4od7Ha`kc4#$<7emX0)*B}AvAl9s`w zgF~m8^ZPMV@^1~W05zrFx-F$w=!PeJ+p^rfCb*P2&U<(^P;gj15Vn+Ay>vn=$Rgvl zw0J@*YVgIG`KxxqCZn0{%OdnvF`R|hj<1M3e#ab*jU>F6${Ro;vWOT!s+dn?h>MP! z7Yh4Cw0W5VqRueXl<6vni|}xoZUzgnkrooInu>|X5OqxiEWNE7YD-@7R3rNJ!9qM_ z)EwgHI_>YeFuEN+H$efR4X(6{X`C~AMGNh9tT7)`ut0=h{(O%9ki_O~Um=%f>_?@0 zEpP||+SwBlfgGosK#=3wNp*SXXy@c1NSlRtQ77RBRdoC#5_&|SRyTe&f5O&w$JbWf z(%RK^aD_h6z+NpOZH*VUI43-y^e%^R{f48lSeDV1s=PmT^i%GjftUe{OR3T}DEefn z>S8=gUCd20U7>?JwvQ0g`qKd#HckN1E@ok-NSe}m^{B3-5L3c4e=n6nwX}pY)zGl{ zn(|)$Y7J9qXeEnd!5iqYNoEGjM4gboS Lhh zWQYU2^UDolyJk~Xkit_GQg-zpwO81IgiWP=^yoE$bqMiz?G1mZZ+}Zi-Y&eIx0A6g zZ&y|CL+=C|Z7C?qz2K=*I;-h4GZoc{g``6TYfnTakBnJfdo!^V)=sxbjRtMuwPpdH z3R&^0(45J883+{F%nqUXafO6Z0lz@C#8cZ?IPXo`s^hEYy+TEH@7A LHZn-4Rp_m8Zqj$x(<1z7h$+NUPfjI)L#y0Pl#>&@d-s}v3 | zvkLRgW|Nn+&}FmL5(mtzSt&!E!j}|XdFQrc3QsJlLGD^RxjAwc`i1VH#otD@otoeb zn(C_NSxnUVT!0*fq=RoHYguo4$gN?EoAUG1WvH~3p14oG*61aA(M-?E3%5}OMFoIZ zB9i=@5+wQFuSjT+&V_(lDWT*Vbl}x5N<8XgJReu#9deV4IK#t~n)_`e?LD{ny?QHW z62@Qcxg^k|i8m!))86D^E`;pZhqJ%tRO3ztG0>GnbiId7cF#y>ooU||IqE {Sk4b!18o&8NDT#VF zl9Z?~`G?Y_`kc|kl}7|#$wUSer33j`0f6drrCy{)ZJfDim917`evaH{{X*x^VuBFs zl0MG|RNH_TyHN`0m=S}ksD)IUp8=clp^P$KM;yWT3P)+#F*9uOgl w4vOxMH!8#)SV6Pg#&5g%=McYd76`Io>oUM>KK3>lF0W9etZ08AJ1AOv;{s$vd?L z^zXI<%?$fA8_2SCaP! 1b2zt(bJ8l{NmJ)VVx^?JH{oS5|vkO^MC^OWG zttocgr;u;d+#%Y84m+4oIiKUl#j7&Kd4&ln@q95J)ylPN=66Lt?_nB)Go!XzV?1{! z_QEO}f|cXT-#p3^M=h(kbH7^+s!H)JRhC0HERRn>x;f!jZ;rGIjQpW0yk=*Ig{pE5 z*keCAbCZv!3-kJR49@DbdUvO-Z3lA4km*>8APdrY_STu>J*TQg*E=Q^Bsb07J9drW zDy6K-&@|L26Rf8bKby3u^L>{;8S*>WlIV8;t;0>exvh$|kUg97MFuH#9hoSc>3_|^ zsYps`{khg~5L>NjJrFN#qk*6;%Uv~(C$9||Nqrje`I4`6SNS2%b-(|9A?89Pi4XXe zU9hvU-8VxZwjI5h?VHst`xj;Tmj_4L&r>`)ZUb1S)}RTS)mG>cv0^Fo??T2kKf9tK z^|5Lgzpb;9RTnDI|M9%4MoWDAT5;Qi^{BdVJb5`LJoGt#S6kpc!wgUtJ#WjP8=w=6 z9A)AsRdx+4iBf}@6e+Lw38b9DBmoDh4vkX*W?eC`>S{9ay)v{V0x8B7<1?Lq)U?Gs zL4sS;ILGVI520z}mun|(bz;g-x;pk;x4v<8=C5zK4m~=DH3CTR0gym2Tl|uTU-Rja zU=a5kcu XepDcIJy99M4sbU5SiYbT{@4OhW*6=A~aLONt>zg_}<1*uU zSLLt9PfBl;o3(&tV*fZ;tmrmo%Q>=~@X}7*FJd|4j4OEBRch$?Rj}fD2euisPyt(P ztH$0sfitc#WqGE%a(c)NH0Zh#y&aBMBBWu(0&^* JJkR?Ex&c6lQ1Ddg#gYxX0U@z z`8D+0uN_P+twf{~i^-ul%d(cLOSx+#zgO=tI$iEiQwvhj;{s$Hrku1de)ZeTdOCr^ z3MD_Cf3bKM6n3V1h8Qd5 _k{V;+oM8gGNW0l}A> zBPdWlZd4@sG0M@pJ=%(#ClXn%A;4ig@U3@s_*zXFy$~RCC*1^Pj*gF%gHG>dsmW0K z&m3o+(Z{?1#W4bg%|`l7SaxdfDiT#Lr-qCsjy)ns*K3Ko-UChIs(2Ki06HKS&;c>` zIsg*|44VK*zC%k<9_DW-Kk#xS74){D9M3X^)Wpt8Jjs|tV{XtcACIbB)~P#$6K#)1 zUsExF_R9}=v&Upof)N}R2&2HcJtDe%IvYT$uYptI*!U%HjA&s6a$Q7-slY2X+(t<{ zKc=Qy*QGPq%nMk7Y=`-TA&eXct(DpQOupndzv)(K=p3LtVD0|4RxxLid0=z2x;_SG zPcVjmQ_X14o&i4h?J;lpt{icA4MM9p4hg%+t~2{2N!7q@`oi9Kn=FXi}M17TUGn zT_OJ7D)9#<5JAIsp5ip2oVjMRSgop&AaaBU5Hko}umj5JD=_pMlYTGG2RIJ$82zT8 z>I(c8LQ@P|{X%fnqz2};oGISzm#eg#6J3pzOOBwE52DK>+59NC9rA*gN2!u$v}*Vl z&zBc7hN~o0F^z4R#&Bpoi^|9}7spoAc%7!H3wSkIv)mwXdEKLA?a bxz3L8hy&UPb3?;R6 |`Qg6X_{Xlm67OlgAsQqJ=ui(HOoYLQf`Z{O~x; z*d^Ik0DMFI61ogHPvfV4cfJHVY99{#6Sfw$ieG>*Is7cE1wvdyk97tToV9Yv4s{X& z@&l1U20_?^T*>2}q-*G(MH<#^lqi><;YMt($#9UhmVJ)$=%VpuHaO-QfD0?Va=}wB z%FyH?CyKBd)Wn$3vJ2UAZw4n9M?oJbu~ec>fywt yL(1Z9CwC=JY!^b=-;anmk zYNUsRuKqdFiB!()=G8T IidD^^(+Xl5 z&;>C84N`Wayc`cU;q69_3_Q8**`h4&3d243Dm(41uu5E8_bikT0&?+3`H5W>xDOsf z?Md@v%)>1*M!g^e<0ZOxgUG`}-F1eB>#jx6-YVhkWVQ@XuAd&UQPVpbEiAUvkk4W_ zWA$gjd@7A`cG((WW|eV80k<*#d*0BdDaSzpcPrpEl`Pbb8y?i6sU3)(@YI1yJsGUe z^*y!Dk16KwPATROK9F}d;ei+N=-jV0C1 Fy#zRfA%0yZ;pu`JLQ7il8yX7d^mDD&j1Vk+J9E?WIh(<@6 z3DZuq^N7}=DlX&03%QkT)Gs)2z-8@4iMzQ_pFEX^Vc=aJCG!aiQ~B>GnZtBU>wy~H zW)Wk^AZo}Zz+M_Cw5Ly7KfY^N&g5zs-w#T544vU;4dtngD>!W(0ygY8p=d;%$A9mx z)k_(WqgjU=K7e^LnyF(yq{HXIrA$F3a~<&4yyFh=x|2hq)n4qXbz<0PCam2MjJ%kZ zU#{Jb0FPTrQ6?z@@3gzRc`9&vL-EE_>&4th{kQ=v6gm)L`T7OzkvqdTGk?C9`3}r5 zpPWYi-;eUAda~jgKT>Tjj#U@o`hY8WILyj?s#4B69&H{dxJAK&k3X-%VoDG#8bF9u z&a&!?g48#rc~K1q`H@+dA`ZXd$FaA?BgG -Aruh)YbDf2q>ZHqeW>Qp2y^Qw5o za*(54Eme|G&}(?*0N4MrxjXQW;%36j(17Oox K zxax0!xw(5jsetjU4qtOzIy0`ZEPuR*8mcNC%gENGm9;ERW&%B;phpy+y~?pi15*Zw z>`r$3G)BQnr&lg=V?>zbP8H=5pQ5Kpj%){rhzMhCl@OkJHHT0!%Z0Z*nG8^JU30xW zjY7T@SEcC`>8S)rxaN1jl|Qw{ibPVbay3;xkSt08nB1KBZB_82RgHT4ygax46~`_* zOGhU7{TVv$O8 dupIe1 !Q&m z*BMaJ7hbw!jl}%7MPwTZ$8%d}Rij$JT{lPrIJdF*3wWiW&ZPPN=HV)?=KS 0Vn z)wKyK2Z&6$Pm)`X_?u8_swVfqS^dSU2&$ZvWml8~X;P7*<9@nxTR8#r-CDWvpZwLz zrvRD944q2BTN^r4n+{_pejKJ=TFk18)a!yiQ9Y7?MT?DJ^1xsw$dRMWM}I~=)S}%+ zo^r5!b%(Kp0)Moy5r#Ne*vkHXR^0QXFU3rU!pGq7qGlg8f-{yvUx{BEqrEraOx1~` zD)Tsol$we*-2Y?GuQV~93IZk#12DAEzOuVr{{vf<0cW|plGGWzkn!aaDTj}a!GUCf zV(X3rBtc{Shdt^>kzmJLs=OH$oX{~q0Z=+<7DY)}osrX_R}Ik7S@EOLJARl^;YaBb zn-`vF?{j=k6KV{p%vO2r zQ6qT`oU|3-nqNr*yIsGW=;F`QK=a2jFPpD2z@Enwl#Qj7zFvhT?sxSfpB101=HUD) zTgiT_>;rz~_&|Rq*wX1uET^R#eMJ9E)TK}N>rK=NR}y(LzST5&o+|p? nQ>BGhHWNh_IZMvMLH*7``%L-=9cVf;LG3@UPQWeHy9Nnc|UZ5id zeGyg3mM#V?OTN-ssx2I!zFJ-brAlMHS}_lcxmQ4C_-y)6MG>-_JG89MTx6~enbA{C z+FAj8;bNhV8@ll@+xf^?_=f`VjQ)v|7YiRYlcuU%nZr5@kJx-L?M*DhW;H{JII^v^ zl?%{2%!?Z_%sL$^@MlPikO+AJ+tbKmdj!$xOII5x7w7fMm=lMr>J04J{g$+(Hd`T^ z$#;brvn(gSZy{OKnZj@w+tDw2AwfISx%si1?w(5@)uXHZ7R8R0LAg^aSs(z8o4Zh< z#^YmT`zE*#^*l P3MjkYKA2UkFMx_ZpDm nS+gCq$rE&Rco{Yx zO3a_KI$R&x<3ck-VR_bVR|pQ!Td$;$YsQ{(!J@AYYJai)UBkHgI`z7FoGYe&kWPUY zJ!qsgq>xub(Q5Rlj*plF)>XLsJJE~Gza&P%YlZK1_Aaw$W%*~5EE95BrfObW9p1El zu@E4@cms+vBq$*<+or3I$qG%=iW4*EfZDRGf3y2d2he2W|D{QvzIHy#?_dNv6-VvS zi(rbn6-nXLMfk`SqC2(Wjpszx(RqX*$*v-%)(5|v6osY1MZu9Pr@Sz?NvBzA&ys_E z!`@gA=kY>y<8kvMPw5%2^tt0)lGIwIp4;0!+%y3eU-ttasHMq8@hFn@?ahMuN^?wpy zl33;A==NzDPkNjYlY=W(?UMN^XTf^7r`Gdk!!$e7?uQcb@RHuI1AV3$9ZdS+#1i+@ zt+7O_r1-l1_Ng)!Ben*a{GqjIyMc`FT@#Orj @=;cNSwZ4xWFFOM@Sq-KVIWV28T%Hd{KzS9oO zstwv41@3)Rr@w-c)#!{NugrWPtI 0@JACMi zt<|{LO 7~bxu!}ttj%tibfcG?3VGC{9yWyWY-5*&>se8gWZWNJB{7yRJ%V6VdSt5 zry0I{h5shPcZI#w==jdojNi?kdVePI(eK92yCODTJaz%?)Q}}RJ#qI9gPBs=*{@tJt z!}#%2WJ=SE`)?HR&ALADtbHGO5Uj$Ii8&hkVV4`VztDe}Ew4t0(1Sy1U~njVIu|WR z*T1kCt%vQml%zIY9?mMWv=zQzgxRGQa|fX2q-~H&l6UAe`UpjHI~;*vwKxpkUDb&H z$H$buOmMg%CGr*^rk(Ab^1$XPviv5pU$&bMSP=G3y3+>0g6tL-7?Eu&oEwSl%>?xQ z0^BZ9c2&*IFM(z~%|4IGf?Tb;@{x*bX#x}lm)kRspZ8t8#a{O`eWZJ}_|)?zj#5;g z?&ZjsTLoK8kN#XXjF}-VP`&bv^1i}LWP0*?W;GkV9+UcZqV`@jyyN(W4~Eut`EN=v zBRW>nEYJ7mve7BJj|}SMb{2jv`fC!QvetWatST)7ndfU&JOo9sluxt}E+hNtZrc^Y zDK-gScakkb-QdXTHj@Q4o2MnQKHRK~-Lh8d(OclkProOE&q~yCLM(jd+tj8$^TN^W zt{l3z%)^rh#lpmG@ d%o_AnlC(Fy zz4BH^VIC191BXj4dIl|7{W0Yu74nYoKNu{t{DuNx@ZJUw4@&;UU?G4(bBOBL*+&C3 zTq<55*2>5hPtyMN75nQLNOaYr>K#FAoF`#xovy{t9UN!2!V!U9comi-&AO2?tI z)nf#<1}~@hhsr_Sp?!wOtb!{=Yp)iI#g{G?%8?>Xk7K7uVQ WWop3yDvdu;W#)VhwE$I)cCS zE!8Q1=G6gpbLu}Ge*F(Kx= O8bAe6`$qm0*blzMNrBj(O+9aDYeK9fN0!?X)?Vm^lv z-MfcZkUUTBpH1aZhp|F^ZOlpHX2!ZR$f8S7ZnttzvI=wD-Xgs!kr(-819QlJozktq zk#UB{_b&{vQn;ejHRRe@ bcyD1#|gtp 3Y2 ziyHAFue9lVdd1j%y7~Og&5(D?tZ8l?(grj@v1(lOBXLDu@$)FBzZ(#_G0qaW#1-r< zxYphsT)IOpxoH^^AUw3oy(Z1L7JTEWx(gU$)!!dmk+9LM)zaH5u&h2KWSaKKA}9}E z9vmZl)J9m^h}8>sfXFLgh8Cw;2BKdD5?sWLTrSxIW%e_2z z46 +zICN3{I$ H!!CO{stKGGcVb5zQPZLQ1V;3guPpI25%iH}c_rACI4T zM8{L#{%XLI{d=>eX|iVw4hed&?yc+3&mwU7>| kg4_evFUGkeh+7Ea`NvcV3@dCXLT+BX8VOJ%Y^5}qj^Zde(QC)n@7=^E z!Kn=Fy!MOx0Gtnh51-=x84)%erVsoJvgj=TWTxc01Ib#wJA-~|lcL1+BAw+Buw<4H zhW?DVq<&-Up3q(B^MP7e(4^x{T$=>g)S1^+e_Y281(w3@8T2=`B{>~Dh>!qQxraDk z{?Br~a==;CG+^|@+Q_`8Y6m=!Fga8-EQEI$d`w@nM-i&7Xm{Yo0H0V)FDuMLyh;4Q zuD5yhcRAvr6n;1BP9o!6IS++A8tK@^JrXDsTD$P|iCWE{uWUU9qCD*A>{0h1yKcP} zlC3N`l9qOwRHOK&lY}-5UY6p%s#Zxs{ 4GkYeL2)zu zJs&d3_0VHx*4e>}4Bg+mjgle)Mm>pI`B2*g }-vL{9ctS%P##q__3?fn%w zwIN?UA3ia1#@$pnSj(Wl^OWySLBcL`F(x+FT5Z4Kri
iAy6WB~ABnQtXgM$X`dSc8=z8(j*TbY+=-_dE zBxZ^^-R$=nZ7K}+J51*RZkx;d^r}(R?SF>wGuoH;oz1b!`jQWMa=RjqeCZf;rjv#E zC>2$e1Ux!c%E%gb!Q=xx0%0Qr*pwUG#_~ooed&-N3k%^@L`3viuUiXy1niyY0=~Vl z_qW~Hl%n9HLw_f^rSth^a+!JD yJ`K72O=71ni|P9| kdbKhC{!Ls6^Vms{>DXsq3TmB3|u;t}>OBu@TKHldCf4G(`3qc-^;$^Vey z47{S`2@&`N%_N$tjRc4~V{JdX|L6mB`8|*N)?3GCPm*C&iqboiD58kO$0MnQfvb r$K)l2KOva7F8>l=b)yVw%F<=gt`$odktgkECW z`&R^fi}K46WD7zqog{6gblj0#E>d-|hKC3+K8l%7k<_;(9NFsJL%BkMq?c`xokw&! zParw7AjM^E)BM4m8R|0w%8^V)^>S38^fq{rKQ>P#mPJ=b?bV;nj0pmf&n#?%uJTq% zWiAGkDKftK?T!p{?=H6y-%TlR(f;R?ttpK2H(89Hu9isaEvC6k`-4!ky=zK5o;h&Y zOb{M5bMkY^MJ$ergIXGjHpoaNCbv_f-Gj$yXGRADEY63cyRDO4yKuX@_m2Wxjvn41 zgSNRexjnugG+g~I+-Yyq^8YVbpFbgB{ uJTkPHXV8dA(mw^>vGr$`#^mrqX+)@Mtw2Q+Ik(j@c5 z7}K@KQaG;lk@0+7PvUwL>E8G0b>1eK9uK^kKYb^7d(i)KI;o0) h7zWIk&2fJl& zv(NXmO(%NJ&I%%Q#lLEKSbF~3;CfMirkH5e`k$=CZ!$$xFB$w%9djeRu`p)Cxx~J{ z{iE!14}l9mMj9)3<0HHU8?4d=jE1wi!({}+pwgm!o($RkjVrMei}_DY;LSij-Ia%s zN^XWpr}uYnZ|B=Ua+>kqy0qO^@i9pDk )Z>OpMEf2OlN4}!$Ho7M(db6Jq|YBHU}>e%-5SiG?g8TjMIm{xdd 9+T(D*NpVsC3U;5gdwa7U z5q?<6*2HF>6PB>yMvMd}{L5Z{c#O*S8NfxWXNEcDzw`8jX<3V#Jn@isr{mgaxVh3I z`(P2JhoeM8YL;l$7kum?-^(oFb=+a-pJ95pn07wk6b~BTisD24^V %>(nd(;gceTx#U$HxQYPzQx-lb~QcQr}y{AOGT<~rRH$+JKb^a=Jo~P z7?*UGr6qnbq0#);mi^rq)o>@EDrcK_Q1N+g6rE~slhRmjov^3aquww+B1sLUo;G&I ztp@J>it4yynGN_7ep3p8Oc@^~ko+pkW&t*J_HliF!l;jx*m-y+wfMDS5K;C;3X-13 z!lOUZ_s_4qf_+tZPsEvV*Kun+V+!h3bv^FPR_E0&nFU$*^4nS8Hc`Mj9(Av3J-YaC zA+urs5e8leC~IxpH0?`@@SC_OB&~l}A1p7pXkTVYH+w9KH}9eFX_P6%J_~bS_KlHl zf|T}&>yHMxQ$kEV$kV}(%iic5uZ&omslyOfGRuVpHygY1#2S0nLu!w$nx_2`pZlIa zcxUarmE@l?($d%Dqi!+3`m^$I{GH7kI+jmgjZx6p(K3wwu-HGpx&arCqBrYE=-T5z z!=C#N&2yrc4~fSD^!{LdOn|RUrESZBsIivKS4$3UcU4gx$$N17C!3u+_=XT?KrQ;0 z%`v-go^0VTsaY@t?QZ+LwLzZv=A0+-OWtzRWFtqBn>LA4rnTN96RZuLU%BNj6xGT? zZ`MTKtTCg8bf3_8Xey|k%CgAui^0#F{6o-7PdcCX#XE28Kl^0^m+cWA51x-dG$bh6 zm0v6Z^etSLPG%>%6>m9#(N$kShQvzeha|-4LX`t>PyaKzDS?<{^<+HHvzcMLGKvf1 zZ|;H>Z}fhsoOaHt9fp(NAxzM=xq9B7Y)pY*_i|-mReqp;#zFCB$p0L=*Csw6+j@dA zma3D+8%+=LD#!^Vq?^oqz7|a^qhy>)?kVsEits+%&A2Nzuw#AJ8o>*~EOq_@L4Lxn z-JK{L?nltXrb?-{?2BdkD+)5^O1OKzfxQqffNX+A?<+&>+H*Cib6w&Q$KG<+`JDOM z43BJ|bG;Fl#X@E=xWL_cA^SO%k&Fl4@j~HpA=X0tP7C?%#gxQa5|cK|e`mfXGQbVw z+H}XewK>>TOH~U_X{DDrnd|jo`}zLy#i{Psi;{*4=e-w1lOd`e&>LQbi!~O7+D%pF z#`S0 9Hd7otNXB^DTDD?@7PNu4WZsMlW =Dx~vCLhy);vU)P2 zr#FUIl#FL1iBcMJ#)f`fOB;@BeInKTeG8ALDF^>PlK_WJTbm7)&+m;vfAy-dudka9 zt^$=}FzyVX{J# sRkjo9~ZIK21$o2m_^ezs?WWNPk_ zB;F4 >zwABNHRB(HKts#7f%v9Bu-&e1dQ^=UqhXfA>59s6{ryRl{E^i}qn z^gtD$W^HTjOmli>gq$o$=6vXV);>|SUj!QTB~c_dw*RU@1oAGh0-v<$&j?H~b?Z(3 z8r~f*p!oNFHuy($ha5)wZFcGl;}rkLa<|f8c0dTr&dV4f&f;kL1qTi0X%Y*ZJNu3= zgY_Yx6z}bU58e`hadk~PPSp4DN+kb6N+bfwqEb?ulStxUhjz-QTk~1X@1HHHskb5B zZ&rL-*?;6ffE;-4=%`pBo<#FiBN{63;>R|>cL59(yZOGnnS!%AQN(L-D2MR|OCVd1 zjOew*`vI9!uk9v2e(3&<-eJE^r~+ZSC(Pj}Bf=i@Xm)R#>+gZwqfxN_;pDuHNDf-Q zLw`=R<7p@d{*)<0*6yUd1Ld;r*Sa-w;q%fQlixHo&WqY{$Ci9Sm_Nc4h^}zIWPoj7 zaY^ZMOI0Wx`XFYqDO8%ZuSnL`!n}@i -0kS|I_n!u;)1WC`WCND zKTSuz*3P(ZhWIDm`nNk5^-JLHkQWr4$gUP%mbgrfYP=`8o=3xnK}X}&3$!ZZqT>en z-1PzwRDl-rb~}+^-fzSqolUft=$F{B%rX-#%Ug*Ln&(B{MM-q0GG$9>P2qp=!t66e z_EQ^mLrgKen()Y6vUc P-bh-hc2R8^(t z$35Yd(HoO53@RD&(f628f(KZ|A3DC_@NUA}PpRhJ@fV }0p8;9RA R0Y@UMeFz7g!;U?IRb>(53}d)>{Y%wYEO{P4hCD2#V8pm O_iZY&(BfN3(# zC2709Dpl3fFJ1GCVmEI>Ek5{51jFHg`3f5YTotp?1V)SBSQsyB3#u$}H^ppz!>NLU zGwY=S<4KQ+xbIVlWO&}5G@RXI^*U~Z=hb#Cb=$btw|y7PiB5qPbGFBwG%?}RO`Z2i z42?_ZoNXzSb=qYzwkph8IIu?pX@+qJ(`Sq^HXx}$%*GVxUn~Ise#Qj?qXIfSmvpG@ zIR~)mr*I;O9j9{H?@3ES`aWgDQ`gmMfukwqlf1?ie7d>N*S$vqN)zQ%P~7NT0i<58 z`j1b-I`yiqJfuZ4pJYC ++53u(X9h`r`CeUcC1DHjXRu5Lw%Op(Ltfx_;0#Z&*c z1Qw0#i5O)Z>3$v4346?&K~CD{Y+EPKCNo4H_h{S;BZOVum@ee~!Tc+puYtI+d`(pb zAP)5sVZROd_k=@lo TaY5ud_z-P`9~5I?dZ(RcgSqZDVp}d zDF;c7A2;&76-3V|3=+{UAO6BZcy}it2Qf?~<@WD0^*a&$DU*At{zJjunFU){o+eW- z?dYD?!6eElX{Rh~2|l`|4k>DLh9W&;j><3(Mz@_G#`VlKXK0{A2JJ=5 --rmhWPxjxzH)J+dyI<`Ioev(M{x(i)*7&9jmEWLJi#)_c zi@J&N?iis%gv87wv4PKGQ(S`G;t>gHZq(r?wi|bOjJAwOBo3F#%wOyaXi;G|2d` G?dntyMr81~ Fk zx#uH;sZ@CI%nC_8IsPK~s*=g<9{6;&CTmgtA%Vg8r*q6;(pdll{zA>7rkrE#n;Mt+ za_raP6j(#f`jEg(^;H~L?ReUnd;0;|U(v{j1W-ZT_d&Kp`;elSn9F02=SSH&N7J(W zJyUxP+1P8+V2OdS%9s~rP+5}B-X~eycLV85Nk_-OlO9b)T$$djAv~0fZS8Ly!CyJ* zEv9SOhg?VX#b1|FY;J8EV9-5Gk*?0a0xq|+Z&=^8xAh)5+T)a}Jbg`=z%>5rR)Jr$ zD%&d@0_xz#@Zjn2;N2CHWpaEDzTD@HFuI$o&&qa6PiQDm>MWUIo40xKYif_*LG*4c zkPrqzM(L;R1#gX<;%xN!;0M+6A2<;GHL9oSK#9P}H=5AdNRmSfl|5`rc|Cdv69jD- zJ8hZcFSgg)ahKtd;s{)&>?Y))9V2N#9Wghcpj|wmY3x@f!{eunrMCQxX?)X#n98I6 zcel@wEb%B0Rx`<-$KU4CRyho2NV(2^$>vVnuA;w)ExL@B$E%W4;-`A+buT*A6AUG~ z(p(j$del16TBVZtG3e^LK-Z&(@Z2IXN4_vsiJK~!pPCGAzJc(>& 996Q#t1=YzCd zvYdtNuYmlV?XDsv_DJt~Q_V}|u{s@?%(IM%-prNeAF}h{aNNfPEamRdh+C$hLD6oh zd%P^Eco}Q^MvI2NN9aa;qMY7aW&Vdx;?46{USDB%h4N|SsBk_mmc1UajM;`W&bM!J zMW<)VH(RQ2|8R84r6ZhwkR=V}_kC0TiLxsgJ=236ugS(gl(yUS{A@l0znvRh>AptI zZMVr$ej7qM&^h4z{{Z0q3jiwre)ZFP+XOt}6Nhv+ABmH;rRQ_FttY_ZbKG`C&&?S8 zPV6l^+4hyDqlZ@wkDma7kN3oZ<1L7tZpU2FbDGtdm`j%EgO>Hw^(|g^1k+vxW*K{M z$?yZ5K^WI)y8uA8>8lTx)DIC~U&fDxhz(8WUUxk5C9t@K=t#3Fd1w)}sX-E3!dk~# z8ET?x^pNdgoZz;no}&3qT_R8d$&kk@1mkwD!~WjIZ$R$)Nq(<7d8s&R=Z+XQEr6v| zgkWXh{jM}sIm-~s?7y|O22|>PyI8gYBlfF$&joY0+dj)X^AX7k4l&pa-k z>&(WKc4YLDM^B3U?Tx%z02Zbci0`g G_XWxnF%J$I{o~(xbL8h2psWCbJIHxnu&dncW!w*fF%`2+QS s`jLSq< z^T#4vW!SOi#K-k7j57V+n#akCp%KAuk9;G^Y(H$Uvp-(cDU$dNPm#v1M;@f6s^$pa zn0C>p*g9=sQrF@SXPMk80+9gQ!qa|w5i(AkiveM&TQl`v omrQpylcLsxH(lfr`dM1W@X2>5C z;Od`X4ad%Sv6(14j~`IbLx;@WH&?pZ=oBMYPy@FucQ&hW1Lh19+wo`4tWhFfrdC4& zh@`INwN3`zrWgzJm|c
k*S9O!?rk~ll$cbV;PS{VlMh(9+x zz-@$K-!fmMh|FJ-7O4R) o>3yGIecm91m8?C&llAqpp{M z!QEN@VdzhvVp+rG1f0^wXSCu!Nd1$H5R5Yu=Hy+7vLjmf+ph^Q0BG&6+4eb2|Iv~* zkJG3vwaH5aW*DK@+D7?Ti$LYBVVnCBQz;c=yOx}`G+QeCo9cT~R9HsXTNvh=?u5Ij z3Avw6zG>cjYarJ%F7zG_3;I4Wol4$ZA)=jr@G0m0Tb4jk`2x!JK?avie!_b;PR>(( zuidtsn@9i0Dd7Q}Ff);v9zfg`VLMaYBx%#1@7Cd|N;_uX{rTQOF3S*fjG-@C$$W%z z5if` zo;5 zb9@$aJe2 @ods7b?fW7|nQ#BR;D z!`3%x4BSz9&Y^#p0no=C-KEd07= vlb%LedbrdqQ>B_Ytz`MFRQX(n-dj%z2`@ISV+DdT`ttn^$h->{2PE;v448O zw%ezZ2~Fg#uX0Od@SXY z0&+dG{U}z=jQFgZc+s3a#HKgt#-d zIyI}89Y>v>XeLhG5@1xMjGBlWWlh8xb-3<#{+hA`<4HDlUa@mBJY-%Zy?2mG8Lp+Y zi?|&fH)mu(rr^+oe!zFXrW`Ng73^JYVAz%MDU1IxA_2=~OAdkg_;wRl;Thsmo79|+ znp}0Y`$!!47KGWd`+#;oOHdz}H2H|BH_bn0)ibDl)XH jGyA3jBqmnF`i^tO HbnJ;-&4%}b(fOnE zA>JCtu8Bpgy~kHv`JyY|aBuqT*~*l7&XI}h7A7tlAAHj@RsxRl^S>?U;7@RTnic4t z9r~=95PSAeJLYxMn^~CTXDsK&IE(pv$ Z4@&ZMRkLvVR@XdkX$f><1lC!f%DbCje*_T0k zCIaO@u!#Oz9QAj?p@I&8Zb`8^I4n8PusKS$$9*@R8=lDTS%gO^k 7ej~_@t7XfMHUxMw#NC^?14q4PY#&BU5~PSMH@91)e1UKfqmRG-;hXZThixI zVK6*%dcUfEQpFh#_gO)`AfOXwt%Tp7diG;+Po0u7it}P*b6X?~1B?_=p4|BJWU?}j zV-?r>G0!L&y*3TqUb4SQ79WgI{1KGF^TOCVO%W0^G4yP^Zl6gv&q_N3C?ht6E2AUI zd7SR-q!mZ~&6He3^PlPxdPPl@*T5==*zSs%X(1z@GS4&Dt_4IShy a Bg#=<>q?_!p4)({eZZ1Z~bui zY4}0UR@a=1PCc{l5p5EK#t_5qd_!Chsm^PMe&fk&yduOa1MTFf>Vp6vdV^&&b2r(w z?%`8>{MfdU&w0(Kg0%lfiKZ$6F2BrCX3}qO#sNl2CSb0z=3)8oK_C~SQ2~yIDDd`u zi{vJrhZsG482ZGtFFCY>tFvF2QAMCkG^pj;&tF0(TXp&r?F$`(yz2uyM!}t^hpZcI z=-nBehTB0%8Z+{YkD)#0bItWC#ewI7RYb{~zoQ&L2D86;%)Y!=p&itr9y}w$1=hlJ z;*MGA3w`b-DgLnI3dkNfF}jVvpmXA9X&IMar8dw8b-~P)^B?mx2)Po3I-~X*+y1r^ zTp$mzHapvEw$YOYY`j4xY* oLOw0&Tme$dikjJiEEVwSXe(Q zA)^c(@IebcEih8(U{gT0!b*3q`zA0qKd>vcDDxHNvx?OBR<++~KW( pq)N z`~lT?te!|J%JcN+P<(TZJEs=qQgwM3IWi!cTJ(TKyvTV4Sfp>n8h|CLPdT4@wZaEx zIzRhS9_s=3L;pD!pkbNH(p=l>k!p7Yq+(ITcG}m5Sq3Qd`0vlH)>umG8~HwD^}q67 zRupmv?o_J0o)FY2E*>ha?0~xPL$v%R09(hq$2!!k8=Wvu+!j%her?b-tl@hTOV|^T z0-J?;PwVoahy8aUPKY~ t%isRa zBi{qk$ik7RRk4tK20b{EOv&0t1omcMH(gX!p6A6xKs~)fNFdb=Gby8&nm 0^yn&8R$deAZKI@f~ zM8IByJTLCwA+Y~HZ+=vA9aG5xRMbMBdx!~jK|!6Nfke2J0{cOnsb=pUbwfc4l}#1E z=^JGXq*9i)>4Qmm_E#Z5y-G}==H9^z#-!cV-O8ht34=$iFC(quw$@2EnK9q%tI>D= z4v2`e%lN*=5}8qJ`8u>I&>G5%q;}4YiQV J9R64S%Z7TB6}j5?riX9&Rz z1@pA3B9F6#sA%2`k_C~YN^K{p^CE(8+Je7E*`@znm1q4e>oFdc;YbqeNMD&}K1e^m z$Km?*mi=zSyT;@$F5 t_30gB(X*qE zl~tT8FZldJX{3y=&**zTdKi}LO*hBfBDjC^f!vby3wI-4AWQfcb6x{tSeD7mWbF|U ziD%*Ik7P#4qsa1rFk7CO=P?*3^wfu3yHo>z-&tt)2RceA$J%?O?MV_NA^W `~_zeGOBd_hN*GNR;~ z1r0+Aea^@h%Sc|!4mkoIzf?NiFNW-drxQke@1SieR`&Op^3w%X`O} LRKAGT$5zHLj4{580rP)u4_oxyJ5pG4Jd|KqXM}e4^zU>tEs)j|AA*@xYQ@ z+c!}?@^^qCgJJ) a@1Hv5AajH@A zev!>#fv0QdVVqBRu+$1Z&J2R<4uZ-;t*a%QuM+pUdZ8tba^l~F!v_epjjlJU@Pw!7 zc!l{|DpfnBSX<9Y3{yS2-XW>t<;}R;fvMVebGg=kXM8K!0v2iUVjh|9Q#KD$K&WiV zr*cd6fK{JbO{tI~U~nWe`eLqO&tBUrt#-eEX!hvmzNDn$9UPgS*uP#%53JXHMSy#& zXs%M~!6_wP6C4EyQlB^-n#zSHy3NgnZg+C{LcGiOgVz0_cLMSZ`Cz1#xhFq`U(Ov2 z0Gpb0uT 9eJ=E3celwK$UQkhD zdTk;^D%o1y_VHh6`VEx3eF}|>J8azD{rTIgyrAB%AD?F$n FUA8Z*EJ?^P-C9AaPCiubQWSdNaHY)Gu0V$<^Y&epbNHjNXhx z9&Hp8kPy+4(vKfl<0k4cH9I5{x0v=vva@wjpHF#Q9d8(d9sn0Y4t)rPG2zz(>6CK2 zaQHOjyV_MqzYN>k;~{Lg>mr}GHNAmoo^;ma$kJ>}_MgIvKLQ|D*Wsg5`7PO{=RH!L zFAQqf`o=z#;Bmgj?6a0&WPFln{bA96HSEgtewkPcLtX=OKuH%|K=x59e7XMRkf99P z8o(8gk1_?Jh2nN7j!5{A0Fgs&>OaLrf6PZ%5(snXpA+;YY#e{^pzV?5|8=nsZBZ02 zw)h#Df(W6Wn>QJ-as{-%ka9?u3D4#*^SPHeD~*)B{m2ZaJ#e4v`Cn%7hlL7Ud5pR; zlyidxsZ$a| foYKy7*f+$C)=bK+@(3;UQJuw25vf(Zk9SWY`?Sa*Z(wDD^y*u9 zBwip{?D1)dG*o}-demPQPCjxEumHL4-`E7y!I(@+V9)R0q=(Y!&8^B(HS5Mr2+rpR zx3spSGVz>#v++n)z^5ab4bO~bKl+lY_I}Rk(s9{efUArMB$CDQ_iajX$^K8LFCg}@ zvTTh>_ Z^BtO{P~aO3fnrLcz31ZK=wb%$y90a fO`x5$bpq_gM zRciR5wNd>Ztx6IDD|3dY*jrKqJYb5&m9f?KmYilu)x%gtmp+}F=Zm1{#x2(@|9U)L zJKPLE{s_ylocAiJsdlC{O95{j^b`2pl4Hvl{JjUq1wQjLS*R~+-Fu{leBPT{_jmC9 zRU62*(8u*m)(Sn0bFSI^1(g1qf3;qRkPRSOEGeMdbj5Rg91QYeF!#4iL-5r4(ivl9 z50KYEPRI3))87$@BV59({vVytt7SbTej+=%Gjnz{6$TVZ_GT(|SoKRw2lUKZ`F&CX z^2RRm-v&OaGT({IaRv&a{}P2Yw6|H7_=(d?nW)g7>!&LzRI|`pJYA2GWg$lWxW=QF z5xEdwVO>@|Pu$qifH%j?OkS-7cMy`%shz8u;c2f8-LJ+F{?!{{$qRt&)P1PhIQU&I zcDht(kmhGjf;RJ2rTaO!06*vHF;cN{OOPqKb+LAisvj!FBu^3dCNIc&jO*VR4iDB_ z*;F!te*sgm7F5bUGJ6+Po6VQBZf5*fR^n+JkY5*OW$Mjb$kqdv1s3pLV73DtzPvAt zqm52rzuu&~1fRAVNl#&?aF%mgB*(8Oy>1h{6Yk2!@8Ct^=deg89{$4*`&N@xfjs8g z|K0n07`qwNu9_O6bL P!wUP}cojsjd6GgCL8B#8*rne?v3>Iuw_3 )~wFXr2G*AtixwApO(0iq3;Z*f#f*)5Us56-M29CoM{e8R)hyftp{Cu;#BLT4#AJ zQDDV)D~L%RSDI1le^hf3OXLDa@3AXv9Jkh5Njkd#iy-zuwo1!l5G=!3FC39=!Owt8 z{#^czXvVDu`g#FD9p}GT`%xHw0P?)jW2-zt|Il}QESaVw%#5Tf8DV-iLau8xE=Oh3 z9z0P_CGeV2DM-YO{?lvY=GzQ> ?jO I-aWs))7Gn;lQlyz|Li=E&hx~A_)N+Q&t^QkSFFjC=W3$V?o69(Q(=G=FnC}NL zOV*ODWA1}=md35Hwnhi8KJ!dT7^U soR~ABIXRe^1T0?sm=!vzP2GT#^htZ%5&@%CI{W2fzkM_WvsXIp6+yP z&+G=VK?)mZ4}uh0dC$@fj=H>I)wX%KT(z{*(A5R?FqyNnn6Q>@`f9>|PSL&1+}r}& z4aJ#zHK}|yaNc^@igOsYZFrtN7IKb>n=^bP=+(z9<9PRUrpXg>T6}&q;&?PKkVanC z8`{Q#IPI50Owacr;!#XQbE|W7Rk)&^^wOIQ|1|yJ`W2FcbW!lh(lf)IV$qQ8f%E#U zFqtEduvY)w`*^K+O^#N^%g#GGM0Q}3n6r_s5C(%W!*NegkBv9fa(w07aU48NE`nPf z64in(n`mO&2xi%&|I;+#Rq%#{1LTO~zEhX~K{|H(tv^}o`M&p9XcMMq3OI3CunE-h zHXE;v_tY}1&42$z6B7y3bjFlZ;GzgP)X{i(1|fm1hH1Yv-G)2*ImXrhIUk(wI?%3Q z+jgiNZ&5GXp%?S%zRaQZQO~*Yji$3M7DT3h5smaga)fc2Al5X!X4Mh8tw0iT{yPsB z5s2XpVF|+>lDSbPaMGruiYzv^aTKuKb0F5mni`uf>x?rRth4_)Y`Ql9goo)S#_JEU z@iH{1RfZj;kew}MHc 9&>(> zhV>F0#98%0t9pZ}M8j?g>gRfX)fJ3t+S>2a`Ps6OCP7;wd(zY(q_L?ZS3}({4!``; z<>~K9lz>v=Q%Rc|b`rgZ)(s20(PQV+He0;*VcV@^B%!6))!6NQhr`y|-NtRKvIJrw zhpa@5qIG|aq>XrNuQjT4E2Q2Y6;^NGL}l-VRa@ET;W>F0Aogx3Qx6Q2vfWb;iAtYp z)joeTP75a04N7g}1H0b;M`<8xm4G1M#iJ~mu}$YvF>tHI7JabC?EV@>8gbcc{;y6} zN26u@HTP|aHfgU5SGn7hEaQoWpb+cRz#JU-31DMuZjlxs>WofvYYY57$OI>#cOXm+ zl4!L!uX_48s;{No(F&TLO7zduWhU1k z@NxhOaI%L3#D7l5*1-Yv&rof!dtH=4$J*&6E~2eEw67f4!-v}`|6Di}@hSDs!Q5qV zpmmN=!~sjDdu3owxdgTgKHuLX8wJ63p@Ci$r~Y#d1gMM@-?5CheO0qWX8WZmLsGpg zgud!zi%2(Us`WS>nV2Ud#>lgA8nCMVPp3gO4*?M&`p2-b48*;|j!;&;aZk%}a09OOgJWla`TY1@tzwUUXY*b6JaiPDYEm3rsa@)Eq z`=9P;0uoPQ2-Pgbh}sKi+*k8=_FL8m8n+y$on{nK01mz(UG}gS!v4AW0OSIY$twxJ zm7ML+piK9;z*q!duyPw9lGL`*`Gdhd4u&Aw(VC7ujz6t)eH^?uI!UUJaT29H$X9OD zG|oO>Dif<=u_aLp-o*l6>hH^y`7=@@PC$@V_F{V@jy(v=X(Jt%AV(qF{W)?G54F&~ zGdp7!t>;K+4WwbV_>YE+%x^fB<%S|qV`tH+gf^@|-vO&Pw%HB>j6!#OE%OG0L}%-9 z%OF|nmFhpN5)jW0^uKO@n-G!P#^mB+{8%5HL6C~A4(@9~WnX}R1Ay968D(@$&Yuw! zu>tZ|<0Wd9D8;ymQfoKc3}rS50^JYo1LT?Qf5(<2I{EAm6ast|0)oEpE{*w$Pdjc4 z+H-Nm%GNNaZOu{kcjl|RM~6k70hA$x?TY%(nCAeRD@wH?wGC#1ZTfo{8q0>Zk- EG_2HydY!snPsl#pbJk#&*;gk9}(Px0_s9vRc(36g)(m z#Hm;b019Y;r $sH zT^PP2m) fo;Pm+7PjWA0<+QL_>>P-U4vw`T9BZU*-%jHyZvB zUnLCL#I5M;NUsi#YRNAXhR}(ebha(^1M!0l`z2|DxVW>Ei@xnjh=%$>s7XQ`YGW}P z4Trke>X1I#VcKbcpgY?D%c>D-uy69X#QTLi(Q#^Ygq@E%BAKs5ySba6#GR$K!uv0D zV*;2hAU=hGKcfRR7f{X{E!q)n5{Y_!7;AN;ZOt(T^xp?iC+77@TvR$GK(-P8>H2qz zM<3&9^7@VTZArI?mhtjhmjLljGzni2VN?tMQ08U3m=A!`9SZ%YRrO5% vhjP3L@eZ&-2LLo59 z7*cl4^3vKKya2=)wY4_~j=pu4{=GIM-BE6w9&ic=bF@{s)uB;mXaMDs08yMgHTvV0 zK>_=K in5Rg))EB4{@K%!- z!-3Ue&m7ld=XAQ2-^oS+Axl^k?eGQ1900+mglNng`XGd`vSa8ah`8PXLR)m1!}K5$ z+6F@8fEmeN#f3=vT66)3n2m?aMxB)dArhA@Y3Y9RC78;>F22>;ABEUBZo28W5qi$Q z=ap#TXC;A9gviv0+V1=F0a52IRo@DJ2(`h?aUfaiyS~Ls$v3wGB;*b&$I2mUchBvP zV#m&rj(k2g_Y!IHWIWxD4gl%j6mhpF)WuR}e}a$BC-4#BNj ^-Fe$PFM#beUMn*>5*S>dS9g0I}5fn}w!6&g+(KgL3}- z)1JRw5KD6BhBasNOkqI?^|sq!(z&@>mWDdOxj8H^0hD43Sn?8JqN4wypMYAxp`y~) z=lD F@!! 1e|#Z|{|{tRK(ycMbHnkE zB0wO3C^}CS*)DYldI?;DbNNH~-)qv!jQ-zz?D!qgfRX#p9d0@nE~J`Vt#_`1F`rHU zeUB0 a{zXU=qy*G%@j)40cYx7`6*q`YNaIc!BVRR4Se|tRcN9_3Z^S>>b zN0tu+5`cFR#+N)3&{d2&!ieKRg4r*d4~YMC_0oBRHUt|D)Sm{k0oN#9{ D)FQ1%y-%J^S}AJ00`Y znrf$Ql53DU^!8=@WzlQ!rl_ca_n^)NXxZh5I`Z&Jng;= =79B_1O1 z 0L9n@@kffy!=|(z@OW4F8+(u&LWddbkSQ|e{}%rtkcfZaJ%%D0p_FT@^4E74L^b{ zQJoWG R<$V;z#KC+uk{q!65NY%97l_D2y1^GB=GiowX60g_T^1HuuxGCVDwW9o$Or zoPk++P&_zMG(^cePHTf~_VRB=$wYa4#7bQsIoOcP7%vsy=Q!Y@IxGF$N6Fvp-1SSx zC^!FoGB%|ZoD=Eq@#(5U<;xtu-2M4W=`;%oN5!cNxICWPudHxI?)T8n>x`xj?O)M4 z_}5RG3!|*mBf~ttT Fxi-sLk~Q3j=BT5hJ=NYr!8?4jvOSi(G* znp^r>W3L#I&E|vefF%CZ0*tDfXk#uqrDNUpq6y67yR%uShEBmd#QJ9jeWy5wBj-*^ z+78q4@$9{tRWst;PSf;rZFYQc%9fOH7~DdL)~W_jP5HiE72hk~-Go?h`#PpD4%dYh z?Oi!E{I@$g-wNg*r8;dt38J?f9Z=5Or6ma~u1b9oU>ckLN_6pw{#34;9V0875zr6q zpNUPUi;gFItApyLV?Ae*Co9?6`xkqlb%~l=HyU<&zlt|^2sRFG9Wky&W+clr_!nm+ zyEU+bl5)y9wUiz*WEuC?_t5&JieMfVa%!1~f1x>FANIPJJo?4HF1}!YRp90Y4ifZ; z%p{M0$7KU+TjTcA3Nj~y+do)hg0mH3>iR&vkJEk`V>W_bkbK9S{qQy*YP3 =WT$)Zz*rHuaxrXVbD713ZlvA81y42kOp zaD%Dj$twM{V#n=H?BSfuckGo1x^2BiBEv5`E#Y%lKvbOR@;S=m+1ANubma5GW`1J3 zU*dL!ULRRwwPChEBDGmu%wtpUVyC>qh^X_$EyRQ0?ppSzz155`*xy}<;Ef)Y+WRRt zVK PkZSfXp;_rC z8rk1aMes2iY5OLkE76ZVHd#qkhU6x+