From 902d97723b51a16e3a7ab94a9199acb5f5a6e02c Mon Sep 17 00:00:00 2001 From: v0ee <113121361+v0ee@users.noreply.github.com> Date: Tue, 18 Aug 2026 04:28:23 +0300 Subject: [PATCH 1/6] folia compat --- build.gradle | 6 +++--- src/main/java/org/crayne/ptjdnc/NameColorPlugin.java | 12 +++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index bd2faa3..f18f646 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,7 @@ repositories { } maven { // FoliaLib - url = 'https://nexuslite.gcnt.net/repos/other/' + url = 'https://repo.tcoded.com/releases/' content { includeGroup 'com.tcoded' } @@ -50,7 +50,7 @@ dependencies { // Folia API // https://jd.papermc.io/folia/1.20/ - //compileOnly group: 'dev.folia', name: 'folia-api', version: "${project.minecraft_version}-R0.1-SNAPSHOT" + compileOnly group: 'dev.folia', name: 'folia-api', version: "${project.minecraftVersion}-R0.1-SNAPSHOT" // https://www.jetbrains.com/help/idea/annotating-source-code.html compileOnly group: 'org.jetbrains', name: 'annotations', version: "26.0.1" @@ -59,7 +59,7 @@ dependencies { shadow group: 'com.jcabi', name: 'jcabi-aspects', version: '0.25.1' // https://github.com/TechnicallyCoded/FoliaLib - shadow group: 'com.tcoded', name: 'FoliaLib', version: "0.4.2" + shadow group: 'com.tcoded', name: 'FoliaLib', version: "0.5.1" // DonationAPI (from GitHub releases, downloaded at build time) compileOnly files("$rootDir/lib/DonationAPI-${donationApiVersion}.jar") diff --git a/src/main/java/org/crayne/ptjdnc/NameColorPlugin.java b/src/main/java/org/crayne/ptjdnc/NameColorPlugin.java index 3413d35..ff2e6e5 100644 --- a/src/main/java/org/crayne/ptjdnc/NameColorPlugin.java +++ b/src/main/java/org/crayne/ptjdnc/NameColorPlugin.java @@ -93,16 +93,18 @@ private void registerCommands() { } private void registerPlayerOpEventTimerTask() { - // probably not the best solution for a player op event, but atleast it works? spigot or paper, please add an op event :sob: + // poll op status and dispatch per-player work to the players region thread for the actual profile update foliaLib.getScheduler().runTimerAsync(() -> { final Map difference = getUuidBooleanMap(); - difference.forEach((uuid, wasOp) -> { final Player player = Bukkit.getPlayer(uuid); if (player == null) return; - - final PlayerOpStatusChangeEvent opStatusChangeEvent = new PlayerOpStatusChangeEvent(player, wasOp, player.isOp(), true); - Bukkit.getPluginManager().callEvent(opStatusChangeEvent); + // folia: forceUpdate / callEvent must run on the player's region + foliaLib.getScheduler().runAtEntity(player, task -> { + if (!player.isOnline()) return; + final PlayerOpStatusChangeEvent opStatusChangeEvent = new PlayerOpStatusChangeEvent(player, wasOp, player.isOp(), true); + Bukkit.getPluginManager().callEvent(opStatusChangeEvent); + }); }); }, 20L, 20L); } From ae9020f0c68550db39d88f028f7d7d4a0a455333 Mon Sep 17 00:00:00 2001 From: v0ee <113121361+v0ee@users.noreply.github.com> Date: Tue, 18 Aug 2026 04:31:58 +0300 Subject: [PATCH 2/6] auto download donapi --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index f18f646..ac68df8 100644 --- a/build.gradle +++ b/build.gradle @@ -129,5 +129,5 @@ tasks.register('downloadDonationApi') { } } -//tasks.named('compileJava').configure { dependsOn(downloadDonationApi) } -//tasks.named('compileTestJava').configure { dependsOn(downloadDonationApi) } \ No newline at end of file +tasks.named('compileJava').configure { dependsOn(downloadDonationApi) } +tasks.named('compileTestJava').configure { dependsOn(downloadDonationApi) } \ No newline at end of file From 014a69db47232655c784374045b00073464eda74 Mon Sep 17 00:00:00 2001 From: v0ee <113121361+v0ee@users.noreply.github.com> Date: Tue, 18 Aug 2026 04:55:46 +0300 Subject: [PATCH 3/6] fix /ic head and book display --- .../ptjdnc/command/ItemColorCommand.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/crayne/ptjdnc/command/ItemColorCommand.java b/src/main/java/org/crayne/ptjdnc/command/ItemColorCommand.java index 46f96c7..ab6ad02 100644 --- a/src/main/java/org/crayne/ptjdnc/command/ItemColorCommand.java +++ b/src/main/java/org/crayne/ptjdnc/command/ItemColorCommand.java @@ -3,12 +3,15 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.bukkit.Material; +import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.BookMeta; import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.SkullMeta; import org.crayne.ptjdnc.NameColorPlugin; import org.crayne.ptjdnc.api.NameStyle; import org.jetbrains.annotations.NotNull; @@ -40,7 +43,7 @@ public boolean onCommand(@NotNull final CommandSender commandSender, @NotNull fi } final PlainTextComponentSerializer plainText = PlainTextComponentSerializer.plainText(); final ItemMeta meta = mainhandItem.getItemMeta(); - final Component defaultDisplayComponent = Component.translatable(mainhandItem.translationKey()); + final Component defaultDisplayComponent = defaultDisplayFor(mainhandItem, meta); final Component displayName = Optional.ofNullable(meta.displayName()).orElse(defaultDisplayComponent); final String defaultDisplayName = plainText.serialize(defaultDisplayComponent); @@ -66,4 +69,17 @@ public boolean onCommand(@NotNull final CommandSender commandSender, @NotNull fi p.sendMessage(deserialize("ic_success", s -> s)); return true; } + + private static Component defaultDisplayFor(@NotNull final ItemStack item, @NotNull final ItemMeta meta) { + if (meta instanceof SkullMeta skull) { + final OfflinePlayer owner = skull.getOwningPlayer(); + if (owner != null && owner.getName() != null) { + return Component.text(owner.getName() + "'s Head"); + } + } + if (meta instanceof BookMeta book && book.getTitle() != null) { + return Component.text(book.getTitle()); + } + return Component.translatable(item.translationKey()); + } } From ed9a56bfa577892e138a8342243dc258e7c51791 Mon Sep 17 00:00:00 2001 From: v0ee <113121361+v0ee@users.noreply.github.com> Date: Tue, 18 Aug 2026 04:58:27 +0300 Subject: [PATCH 4/6] bump to 1.0.4 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 59c0c5d..19619b5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ # Plugin version -pluginVersion=1.0.3 +pluginVersion=1.0.4 # Java version javaVersion=21 From 0d659038b78bd587a36ff8acd5db784c34f9ca20 Mon Sep 17 00:00:00 2001 From: v0ee <113121361+v0ee@users.noreply.github.com> Date: Tue, 18 Aug 2026 05:12:06 +0300 Subject: [PATCH 5/6] fix ci again --- .github/workflows/release.yml | 2 ++ build.gradle | 12 ++++++++++-- gradle.properties | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e25de89..eb24979 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -36,6 +36,8 @@ jobs: run: chmod +x ./gradlew - name: 'Build plugin' + env: + DONATION_API_TOKEN: ${{ secrets.DONATION_API_TOKEN }} run: ./gradlew --console plain --no-daemon --full-stacktrace check build - name: 'Release plugin' diff --git a/build.gradle b/build.gradle index ac68df8..869301d 100644 --- a/build.gradle +++ b/build.gradle @@ -123,8 +123,16 @@ tasks.register('downloadDonationApi') { def jar = file("$rootDir/lib/DonationAPI-${donationApiVersion}.jar") if (!jar.exists()) { println "Downloading DonationAPI-${donationApiVersion}.jar..." - def url = "https://github.com/zeroBzeroT/DonationAPI/releases/download/${donationApiVersion}/DonationAPI-${donationApiVersion}.jar" - ant.get(src: url, dest: jar, verbose: true) + def url = "https://github.com/zeroBzeroT/DonationAPI/releases/download/v${donationApiVersion}/DonationAPI-${donationApiVersion}.jar" + def token = System.getenv('DONATION_API_TOKEN') + def cmd = token + ? ['curl', '-fsSL', '-H', "Authorization: token ${token}", url, '-o', jar.absolutePath] + : ['curl', '-fsSL', url, '-o', jar.absolutePath] + def proc = cmd.execute() + proc.waitFor() + if (proc.exitValue() != 0) { + throw new GradleException("Failed to download DonationAPI: " + proc.errorStream.text) + } } } } diff --git a/gradle.properties b/gradle.properties index 19619b5..e9ab6f3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,4 +8,4 @@ javaVersion=21 minecraftVersion=1.20.4 # DonationAPI version -donationApiVersion=1.0.2 \ No newline at end of file +donationApiVersion=1.0.3 \ No newline at end of file From f3d61330b177416af5e18d2435515ccbb1fce245 Mon Sep 17 00:00:00 2001 From: v0ee <113121361+v0ee@users.noreply.github.com> Date: Tue, 18 Aug 2026 05:50:51 +0300 Subject: [PATCH 6/6] vendor donapi --- .github/workflows/release.yml | 2 -- .gitignore | 3 +-- build.gradle | 30 ++++-------------------------- gradle.properties | 5 +---- lib/DonationAPI-1.0.3.jar | Bin 0 -> 36900 bytes 5 files changed, 6 insertions(+), 34 deletions(-) create mode 100644 lib/DonationAPI-1.0.3.jar diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index eb24979..e25de89 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -36,8 +36,6 @@ jobs: run: chmod +x ./gradlew - name: 'Build plugin' - env: - DONATION_API_TOKEN: ${{ secrets.DONATION_API_TOKEN }} run: ./gradlew --console plain --no-daemon --full-stacktrace check build - name: 'Release plugin' diff --git a/.gitignore b/.gitignore index 1d7e09c..45c3c94 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,4 @@ /build/ /run/ /devbox.lock -/.idea/ -/lib/ \ No newline at end of file +/.idea/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index 869301d..dd369c4 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,6 @@ ext { minecraftVersion = project.findProperty('minecraftVersion') ?: '1.20.4' javaVersion = JavaVersion.toVersion(project.findProperty('javaVersion') ?: '21') pluginVersion = project.findProperty('pluginVersion') ?: '1.0.0' - donationApiVersion = project.findProperty('donationApiVersion') ?: '1.0.2' } repositories { @@ -61,8 +60,8 @@ dependencies { // https://github.com/TechnicallyCoded/FoliaLib shadow group: 'com.tcoded', name: 'FoliaLib', version: "0.5.1" - // DonationAPI (from GitHub releases, downloaded at build time) - compileOnly files("$rootDir/lib/DonationAPI-${donationApiVersion}.jar") + // DonationAPI (vendored jar) + compileOnly files("$rootDir/lib/DonationAPI-1.0.3.jar") } java { @@ -116,26 +115,5 @@ tasks { } } -tasks.register('downloadDonationApi') { - doLast { - def libDir = file("$rootDir/lib") - if (!libDir.exists()) libDir.mkdirs() - def jar = file("$rootDir/lib/DonationAPI-${donationApiVersion}.jar") - if (!jar.exists()) { - println "Downloading DonationAPI-${donationApiVersion}.jar..." - def url = "https://github.com/zeroBzeroT/DonationAPI/releases/download/v${donationApiVersion}/DonationAPI-${donationApiVersion}.jar" - def token = System.getenv('DONATION_API_TOKEN') - def cmd = token - ? ['curl', '-fsSL', '-H', "Authorization: token ${token}", url, '-o', jar.absolutePath] - : ['curl', '-fsSL', url, '-o', jar.absolutePath] - def proc = cmd.execute() - proc.waitFor() - if (proc.exitValue() != 0) { - throw new GradleException("Failed to download DonationAPI: " + proc.errorStream.text) - } - } - } -} - -tasks.named('compileJava').configure { dependsOn(downloadDonationApi) } -tasks.named('compileTestJava').configure { dependsOn(downloadDonationApi) } \ No newline at end of file +// DonationAPI jar vendored under lib/. Bump the version below and replace the file +// when updating. See https://github.com/zeroBzeroT/DonationAPI for upstream. \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index e9ab6f3..e6a6504 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,4 @@ pluginVersion=1.0.4 javaVersion=21 # Minecraft version -minecraftVersion=1.20.4 - -# DonationAPI version -donationApiVersion=1.0.3 \ No newline at end of file +minecraftVersion=1.20.4 \ No newline at end of file diff --git a/lib/DonationAPI-1.0.3.jar b/lib/DonationAPI-1.0.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..b21cdc77b9993876dedda752d395a66cae180bd0 GIT binary patch literal 36900 zcmb?@1yq~swk_`N?(XjH?pC09fItZDEfjZ$;uJ3wcPLQY-L(`iMT!xf*GS^<#5uS(NKnl!GS0n*)>9atP##gyXHaHk8Xuj|=9uN4 zTpTT)AKd=d<;4H}aw|u$xf}55!3p@cmSXw+QZj!mE2*K#W(hKPbuBVPex);){^;*Y z?@FJfj37xBBtnNl!_F0slmUU22+<`He}Yk-k~yl%#g$IH3kg?IWKdyP5tn~9`JoK= zg9h#qPuG6rij;km$7k@In8%9Y%IAiL&kdF8$$no~g_F{)5_8KszNEWO{9HSB?TLCv z@*1tv!e<#89tT$qRnQ4Da!et$L-Z3snPc}DwXZeM{4wR0?{i0F>fBlSx*-kFHz?7r+2jInSC4}y+b*5tiIx^KFD}GHz9e{1AV1w-LL4aBJ zl7-X16Xl?Wg1ueRzrDTc<>$dsVR%?ZK~gy~Yn{Rk6&34kHflYaP~o7L!LG_98PlLe z%D64ep`kB?D1;9?ZL>w>+!c%h%6&ShGaT9LkIC0CbBDN@40*RRb&d^AFObM1bw_78 zkZFTq-^HLv9&q^H?Z>Ezl0}|cs(vee3{!v=FzO*mHk1Q%Q>_Gt(E;p$qzl`5B)CjW zyrZ(X=G`0!XgYKjA<9oC zt%E~w1#)NNQJnW3u`tZ(#Hk)LYJX7W;@cX8BO`q8cj74y6GjP?1s@JtW9t>j^--Zl zbukLl_F#*O`UtF7)%giVFAA~xpeKnJ)PuaBKGq}y6u8dJ2={en?QJ_<8V@y`#JC#! ze`wU#FoWcxg+%QT1^`0`s!V!VbnjQ_Ns#+*7ZH5kVGi{ml}|fyW*~U8YbLBQ_y7E{--nQsmB_Fr1DexnKcJ8m0k=pxV1`*KX(=x(5jg&#a%1zfI{=n= zteM^Hw%dAip~8{-mCxdP&)&c`<>fpkbo&~$J|9$KC&n)R+K`oKCkYvOlVtueIiBGz zu0Ykr<4mXY$O&LG$vb)#;$$A{i;E0Q(e0{(*fjH`F-&TK1AG2PXDhxKq=DTfl$Wxt zp=i~R6C{%UY)9s#A;v2Pc`n#qLsbHTDokdo+Y+d&IWid$ghLoV^_q*iII4;d_qgXfy%OZ+=3YdO z*Ohu-W!sF&kJ%4f(7+`uaG=7s(7VA%?{K1v+Jta@4;CH9<)TWOMZh^@Ipd|=amY_V z#Rpyw6|25Dm?h1!9J((@g%Ppjp;-R$pD>85H0dy7{nq3UcqDu^yZl%an(LbKT3@A^R+DDVQW>ON6 zOr7B5yd~8qL9HFc@>LlM37))YU6LQ2Q9|K|Gk8}>lONG~it^r6qW6`~sLO<%7uw^X zEIlv&va2ewuLP1lzg~uon&MJ;wRhYGEbe3B#@)3f*N39Uw`B#>3`SdB;Zqi&Mw@w) zi*^ccr~UJYdVLcJ<8Xmk^WOBTn{PC z@^A?7VsQ`&pZJ2#ou%Ybzf!ZQK8C(4^OEf;^J0b8r)mz$a`sWd$<0SumAlJAyvOR$ zI<-fAWMgvMaKccdu2g01*X4w~BS!7$J8n)6yD{5yORily7Tn{SWdLF*ZEv{WOZJe% zLgE|kS`<`afbUbodmibGy$qexDyUmd>GeJhpcqgYC0yfmB?%=?UF)Mh20a24I3<)- zAcq#R67JsUNJ!LFxr9`$VO~Cnqm_&EM_Za72R^wK3NoNZ zX8UEi@SbVp@P6Y<&)=}FxGWRli9ORLs?vm1RoHz?V;!?TYMHgPG->bQ=6auL;l(yw zKEaoj)@++EXERCT-J_bv&N>DqV!St{^k6NdT`;u0Q$1}7mE+pz=7zP&z@ZR0o?ptO zI%6v|Hkby-y>76OmY&Bv!3D~<$S9p=iBan9qhjTfso7zPPJb&X>c%&wS(?0pok9y) z)WV9c!ZL;cc4m03o2N-T2C&vlm|g0xXK4V5%46T~X3&dSd&$hyMB;{Vj4kXLZyscJ zI}7%nD!PF`X_rVru+Q#6K_1ppY1tZ8Xri)O)Mf*rR}5az2%~>d0Y=E-PiY+>WpK&@ z4nhl}Uoo*N`)Sn3rD+WAO-nZVRsG zoHr#@=~AB)HZdWf|Ee(wv?Y9Mbx3-OHm)@5Jhg!|+gsci+S=gbJBYDWKiK-ihlU~N zNZO`cc<}R>Lnv|gykaGx+RH*=<;?z%u=CMS39(=%H=dkwqJ z;I=Usv$pmddcebjlKt_U1!)N=bW+Y45HD=L5S=#~VD9ypG8cY)lYb682f7)RwPnytkrlQuS%=3U%90VB?$bWsyro zOe8~l-98jwGE}^tKT~R`oOXDVzW6>ypQ~5m1qSS5b7R_CO$eg0x$b7EO@D@$L9ddf zmk|e1y?ZHY*jO6ae<+i-!lMY&K5nneX|@Xe(?wGnC#Mz?V(9dX3i%7NAox-gi*YXz zf z>(fsa!YIY$YSVyUCO^Qu5HqySsIg_qzv3gV0dr%x&nz^17?DR%l^#oeGUK_4P*|kh zrZ#1~k-1ILZTaS*2II3K5td?e)~fZM5FP${E<5;}%%>Ky1EiNn*mo(1THILM;afKR zM~zcAN_$b4`=cx@%n$`%RBdUzkF9&bqVYT0DeV0}R-0auGnwI9f^1rEmr=>D7~iKP)jH%HE4K1P>(YAEt>u(U^>+7Tl<&JQBH z#S{H7ZJD1=x+y^%&E441(pSwrcKfM5%fVdk7QuJgHwV==WL&9|my+6W+A70nv%R3H z9z`Z0-_k9NrAa7LCYubY;qggeq` z|3r0?`Uw3~eP%PRtTegQr9~9gcS$@;j*Loy@4fVmb2zo2yUqVeGCp4f;6C z7o$*ja3?JLAimOJ*;bC9?q+p1M|La2P42!qpTq&qploHq9^|2G)w$qT=;4u3^8+zkTxc`PW8K&k-|XRgm_{RGIz5uEIr-B*oVQ+= zyC`P(2dsWo_*9=cn%i#}z^ahSs^HX&w&6n;GL7Z1YNIW8p|4k4%cK~Mb>Ot)ipMIIi4*@)%r4fCaYJYa7_Wi=F1MKFGWmbTPVtV^`KM@|ruMB95 zGH4X zn(=(`YZ_;8pBH9wh&=YSiFl4b*+4e*bsqGbAYPe&BO>CkIOW=7G)1}K8&eK0kMPg_ z7&!w6b9OEIq@Bc@=IQZ^NABd}KQb0rWrZLY0<^{1@YNf;T-#gDILyOLD-p!i6X-p! z{H~cmJdR+lOA-0gcZ!+smH`Jpif0de^6)DLXQS|x+8?qyO%p%1WfzZp;hHT`Ev-@c zkbpzJrM3B0AK|EQ06B4bX#M4wtRYyNcy6i zDw;9i>?ZsA&J9`mW17QfycsVG@UHU6#Cu)Z!c)9pV@8WYZpzKoD$2L*hWluf!`yig ziEWYCinKt5F2-ueHR*b}*=&;VKk}0*<>JA;ctYW1KFPl3Q0*7kpd$SxxDL7KHJPl3 z=(0W0Lnqtj{)9MtQtcDj0g*$u@=mq^A>-q{9@N-OrvgiKu*cy*MQl*>m@`3>a874- ztWC|z>Fd>{L@^tr5?;3Yxg9Xadc((u77G5f(AuR1CkpSaGVd$diq$a4B7FS)#*N`qTnS zz#3ZU@i-`E#R(jK+eSX2f$p-1=E{Q782PUI&@<(zaEq1e<|s&UxV)?#TXgulsl|e_ zk*xaG%i#R{qBFLB9h{aZ*Ly*raL{e;;(e9U>9HjmUKMHi)*OmE1TB5vyCME}y*yvx z1?u)_ip!e6OY4lc8T92Oi5S12r=Oz86KTuYbQ;&x%(bY9w8I_I`3RSmF2l<9Kya?x zR=Al;ZkZRkKzmCVeJ!^88et%eB9uYzG&Z;d2gWJ;E41zWh@@1I@GTVbL5Nnb$*yMM zp!rV*D^YBERyx6!t|&p+%c}Os4%ek5*{17M?t5Q3Z`g&|-C=A{ymX2lx^VB;ND{g; z+R+gb0r4%KhZYi=S9m7Vm~AVHrWVU=Ic6R;E2Ps|;OZ8h`Q$IFiJQw{SJvtlvao#- zi1%EBQyDRSU9)~E{S_2_Pk&=c{V_FaRPS0?Y5N`f>@vTQil8_z=6-lbGA6yO3(LO^ z=^|WRF5r1378^((d8b%*_`aK7Yucb^*3s)HYw^aFh}us{C0(|OGA%9LB`rZswS}qF z7ok8B_665HX01=glLKiLiJRN{VNQ#9$7*s;r^h0ARYfk~z(_0}K%Q$!F5(%k;2rQ1 zBIUe3HTOdouu9>>72V7Yw(tRKWv&0l{;fXaw)ffRw&eJ85M`fQMr;jJQ8Uukc=9IF zO-}brzKR(1&6X$c2kSi z2|=za$)Xvl9^KwO4L_~w)z#w7u_cyg5TS}Qo|qDHW+Ki4R%Y3CQeX)?+6%(^*&(#I z1C*aO;~1v`IcaZ$fjOI*Y|R;1)(Km6$}|s)VC9Rn3w-qx+@EgdQO(e!q`7@)Jmj5T zHwK&%?)L^a!EVlwbXpax^EjARt8}i-<@l3ceg)3+yLDdJg|^DquhGs5C6FwcYFCA> zt&`;WC-n>0`xv{TS|UtFM69a^vDD<6;p8)w8tD7Pvsz<`dsIt>Rf15Q&AwyWttSgh z;g2-PR;CU%P&SAw*>^#D{Ya{{McjC)Mat&oRu^4YHO+e8O0=~HA-&49u(ItFX57KH z(7NptXM8p6-eG*4bnw&VwMHfS(2qq4&aA z5D*}Sf49f}yMYG*;RJHG0fL_mJoi{hyB-b<*(<2e=4=>qW7EMB6q!Mwcu**pvM!Q3#^OroFcIekUQk%ZQCt%dl67pT5If4}a^T z5JXdc)2GxUu>dyq+!p|RU6sMkY|JH2)wka$~>=G>p&}FBotmHya zu5oP&j;1?+=U6#F&*rzuP)*Yle@2cQa%u|-5(2{L$zA-Hu?PVn`DEbz>xTOD^x0Sh zg53Zh5YXaLTBdk?QeXPj?w-in~=BRBCr1;H?o?JcPfoC4tPY z?aA&T9~cHwdm9-&W~KS=*8INsntpnHb9%nw32}`u#?{8&BT0yc2&&JH{d`=jT(#h7 zgce}vIqKMg>%?0xf~~}RFJsnTq-)j8Wg`+U3u^~6zjzvPm8lz0U`%V>`i@jDfD~$_ zvgh{u!U#K>@b?BA`WQx0WehKzZvq#vSVUuhpG}~m`VBd|IXq}G_|P|I)ROew(HFcs z8yqsZOd*;+JU@3o>w z#K7!>%cHZxxe15LBt~CHBTQz^z49I6hn(fgn7XazJy$;I!P$+;#Nlv?_^mKlD&`vxsLb>I_OhCj zQ@_i%d|AX&xydTw3lrBV17X5!t8MeP;|+30$l#Vwb$x3 zO3;!Rud!pw@MZ6CJeU}3RjX@i5wl=K66dY42Q1^<*$>BFQa>0ViBpi{uFhBxJFky* z`a14%-t~M(?nJ>yO7B+K$cnGn=L30xNwL|^^)D^Hu!I2tLed26D++C{--TBe8@A++ z?Kv&%zhHpz-5DBwbdN7732!MoBue7T1qb<4pa^d*r#U^={@i01mo2PLNuzk@uOwTg zg5dc`Uj*B&>%X&b)>i379ef~D#G38bLWu!~DZgj`X6v0;uVPlgU|IMKoXwYKpk!ux zLdTw9ka^OV{|uDeUjn6MWiS2YxVxEy-CSuTt?b;No?3ta>Mp=10DlR~ z?jABifI_ZvxJO^<=*6;uDgpRvK(}k0`4arLtPX1r6HnGVKD51YetVipOrg)%Ye$v# z?U&*qmv`@&(hRec<<6C*34X5o5?jBlEO${8?#>;5MN0#$IV zfT8nQ;w5Cp#FCW35yFp#7&Q{HCuHCey0wFy8lP}r{w-2se-9}sM=up~Z%21GNiU%5 zp9m=ju!y*)>MoV$7>`R$`)7=h| zS#)EdRya;Zu^b z14k`!YkRAKrD;V0jAe0mdp3*O#oDWWY@v|;gH5}n3;-{NTa47G48MCb@oMzk-5kLloO%bC7s;S2s#zuhimk4vMeo* zw)RY#`Tz~cXJBxDOB$KK2h4M8@JCjGfHq)Ja$oX@HC5*G*knLEWbczBW; zFv#i{3)NOJ*o#)URn{AjBFW8Vxp;VJqhb8VW0@;IU0^vRGlN`VNK`}3EbDl*Tpe(v zJzG{LSOnRJTAiul5)1k`8h|W3-hgPe-~=3GMXUA;A^IrCDKqdPkamLaJa3AV6vsPs zO})N>LhIY8!q;TWJsiKPg9C^B{H&=*336%7Px7Htk5#CI1WMj-HDwS}Y%1~-t|0mv zLvO23f9VhYr(>3uCm`s53zg8{gz71;wB5Wx|D=%WlRBe>e3^Y$(-4@`8RNFmy>tPk z#jw{etIjc>SC2-x7ageY`V7$`(;^!xjW-QDx%a2<=n$ONBw5t!XA?)je?geKh6 zU-k5%v40E8-(--2qYKdI2^w>dr;UOWw@(@{!hME%?&7MSFH8X5h zk&F=d6OGNvKzs9z&R1UNYi%v!mHZIc^@0NOy;D}WwOr}R29Uc&1P96@pkS^LhgODbJkMiuXPCqU_ zX2Ywd^S*!4cMRg75D9LsF{#5oO~IXy0nEh<-YtV3$v(44UA&Xz9{CV0xt+76jA81B zQ8{57RP-UrbtBoBDw^n${hRm87B1}m_j8Eg<5=pa!p~0+BULuemtp(lCE)KZv`Z9t zOl4m9|H?c}1FyNRCs??DOEK}k2b?0<$=yxX<4K!T&0X#P)Tbu}mq2-a%HQZWiQSBe z&z2QKoJxg+wAqav?H=DK&6Ev9|N30|Yo1C!fWmu&)|>rTaf^(7gK+|D2;=|G3Ye>( zHx>M_OTdoRs8&;#q_CrutC~jpO)>Pap3|HrW;01=G(ww=4RT^Z|EA#6NAwtkV5J1zWKGGV7Y8Ru7n*9s zwy|yS&&�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�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 T3|KFd1OAi%F=;~&*uVZC!Hf*| literal 0 HcmV?d00001