From 83f209e44a30d2c36365fa87e04cc04f03ad374f Mon Sep 17 00:00:00 2001 From: IMDelewer Date: Tue, 30 Jun 2026 15:01:22 +0300 Subject: [PATCH] chore: bump version to 1.2 --- .bazelrc | 6 +- .gitignore | 4 + .wintergram/icons/README.md | 44 ++ .wintergram/icons/developer/backplate.png | Bin 0 -> 81276 bytes .wintergram/icons/developer/icon.png | Bin 0 -> 149169 bytes .wintergram/icons/manifest.json | 51 +++ .wintergram/icons/manifest.schema.json | 93 +++++ .wintergram/icons/official/backplate.png | Bin 0 -> 81276 bytes .wintergram/icons/official/icon.png | Bin 0 -> 149169 bytes AGENTS.md | 163 ++++++++ Telegram/BUILD | 4 +- .../Sources/NotificationService.swift | 96 +---- Telegram/Telegram-iOS/Info.plist | 2 + .../Telegram-iOS/en.lproj/Localizable.strings | 23 +- Telegram/Tests/Sources/UITests.swift | 10 +- Telegram/prebuilt_watchos.bzl | 4 +- Telegram/prebuilt_watchos_build.sh | 6 +- build-system/Make/BuildEnvironment.py | 4 +- build-system/Make/Make.py | 19 +- build-system/Make/ProjectGeneration.py | 5 +- .../Sources/SwiftTL/CodeGeneration.swift | 4 +- build-system/xcode-wrapper/xcode-select | 9 + docs/superpowers/scratch/reveal-pacing-sim.py | 4 +- scripts/build-wintergram.sh | 233 +++++++++-- scripts/generate-fake-profiles.py | 181 ++++++++ scripts/generate-wintergram-xcodeproj.sh | 98 +++++ scripts/wintergram-badge-tool.py | 394 ++++++++++++++++++ submodules/AuthorizationUI/BUILD | 1 + ...rizationSequencePhoneEntryController.swift | 3 +- ...uthorizationSequenceSplashController.swift | 7 +- .../BrowserUI/Sources/BrowserMarkdown.swift | 2 +- submodules/CountrySelectionUI/BUILD | 1 + ...onSequenceCountrySelectionController.swift | 105 +++-- .../Display/Source/LinkHighlightingNode.swift | 4 +- .../Sources/InstantPageAnchorPath.swift | 24 +- .../Sources/InstantPageAudioNode.swift | 3 +- .../Sources/InstantPageMediaOpen.swift | 4 +- .../Sources/InstantPageMultiTextAdapter.swift | 2 +- .../Sources/InstantPageRenderer.swift | 65 ++- .../Sources/InstantPageTextItem.swift | 8 +- .../InstantPageV2AudioContentNode.swift | 3 +- .../InstantPageV2InlineImageView.swift | 4 +- .../Sources/InstantPageV2Layout.swift | 95 ++--- .../Sources/InstantPageV2MediaViews.swift | 22 +- .../Sources/InstantPageV2RevealCost.swift | 16 +- .../Sources/InstantPageV2SlideshowView.swift | 20 +- .../FFMpegMediaVideoFrameDecoder.swift | 4 +- .../MtProtoKit/Sources/MTTcpConnection.m | 2 +- .../RMIntro/RMIntroViewController.h | 3 + .../platform/ios/RMIntroViewController.m | 21 + submodules/SettingsUI/BUILD | 1 + .../WinterGramDeletedMessagesController.swift | 49 ++- .../WinterGramDeletedMessagesFooterItem.swift | 122 ++++++ .../Themes/ThemeSettingsChatPreviewItem.swift | 17 +- .../Sources/WinterGramBannerItem.swift | 4 - .../WinterGramMainSettingsController.swift | 46 +- .../Sources/WinterGramRadiusItem.swift | 5 - .../WinterGramSettingsController.swift | 49 +-- .../Network/FetchedMediaResource.swift | 2 +- .../State/AccountStateManagementUtils.swift | 49 ++- .../WinterGram/WinterGramLocalEdit.swift | 2 +- .../WinterGramRegistrationDate.swift | 2 +- .../Sources/WinterGramBadge.swift | 69 ++- .../Sources/WinterGramStrings.swift | 5 +- .../Sources/ChatMessageBubbleItemNode.swift | 6 +- ...ChatMessageRichDataBubbleContentNode.swift | 72 ++-- ...tControllerExtractedPresentationNode.swift | 13 +- .../Sources/EmojiStatusComponent.swift | 17 +- .../Sources/InteractiveTextComponent.swift | 8 +- .../Sources/MessageInputPanelComponent.swift | 1 - .../Sources/PeerInfoGiftsCoverComponent.swift | 4 +- .../Sources/PeerInfoHeaderNode.swift | 3 +- .../Sources/PeerInfoProfileItems.swift | 10 +- .../Sources/WinterGramGiftPickerScreen.swift | 6 +- .../Sources/TabBarComponent.swift | 4 +- .../Sources/TextFieldComponent.swift | 3 +- .../IntroLogoDark.imageset/Contents.json | 8 + .../IntroLogoDark@2x.png | Bin 0 -> 59907 bytes .../IntroLogoDark@3x.png | Bin 0 -> 120946 bytes .../IntroLogoLight.imageset/Contents.json | 8 + .../IntroLogoLight@2x.png | Bin 0 -> 65367 bytes .../IntroLogoLight@3x.png | Bin 0 -> 130025 bytes .../Resources/Readability/Readability.js | 2 +- .../Resources/WinterGramBadgesManifest.json | 50 +++ .../TelegramUI/Sources/AppDelegate.swift | 1 + .../Chat/ChatSendMessageRichTextPreview.swift | 4 +- .../TelegramUI/Sources/ChatController.swift | 2 +- .../Sources/ChatControllerNode.swift | 2 +- .../ChatInterfaceStateContextMenus.swift | 12 + .../Sources/ChatMessageTransitionNode.swift | 4 +- .../Sources/MusicListenTracker.swift | 6 +- submodules/TelegramUI/Sources/OpenUrl.swift | 3 +- .../Sources/WinterGramTopBanner.swift | 2 +- .../Sources/WinterGramBadgeManager.swift | 196 +++++++++ .../Sources/WinterGramBadgeManifest.swift | 220 ++++++++++ .../Sources/WinterGramSettings.swift | 38 +- .../Sources/CustomEmojiMarkdownMarker.swift | 4 +- .../Utils/RangeSet/Sources/RangeSet.swift | 2 +- submodules/WebUI/Sources/WebAppUtils.swift | 6 +- third-party/dav1d/build-dav1d-bazel.sh | 10 +- versions.json | 2 +- 101 files changed, 2419 insertions(+), 608 deletions(-) create mode 100644 .wintergram/icons/README.md create mode 100644 .wintergram/icons/developer/backplate.png create mode 100644 .wintergram/icons/developer/icon.png create mode 100644 .wintergram/icons/manifest.json create mode 100644 .wintergram/icons/manifest.schema.json create mode 100644 .wintergram/icons/official/backplate.png create mode 100644 .wintergram/icons/official/icon.png create mode 100644 AGENTS.md create mode 100755 build-system/xcode-wrapper/xcode-select create mode 100644 scripts/generate-fake-profiles.py create mode 100755 scripts/generate-wintergram-xcodeproj.sh create mode 100755 scripts/wintergram-badge-tool.py create mode 100644 submodules/SettingsUI/Sources/Data and Storage/WinterGramDeletedMessagesFooterItem.swift create mode 100644 submodules/TelegramUI/Images.xcassets/IntroLogoDark.imageset/Contents.json create mode 100644 submodules/TelegramUI/Images.xcassets/IntroLogoDark.imageset/IntroLogoDark@2x.png create mode 100644 submodules/TelegramUI/Images.xcassets/IntroLogoDark.imageset/IntroLogoDark@3x.png create mode 100644 submodules/TelegramUI/Images.xcassets/IntroLogoLight.imageset/Contents.json create mode 100644 submodules/TelegramUI/Images.xcassets/IntroLogoLight.imageset/IntroLogoLight@2x.png create mode 100644 submodules/TelegramUI/Images.xcassets/IntroLogoLight.imageset/IntroLogoLight@3x.png create mode 100644 submodules/TelegramUI/Resources/WinterGramBadgesManifest.json create mode 100644 submodules/TelegramUIPreferences/Sources/WinterGramBadgeManager.swift create mode 100644 submodules/TelegramUIPreferences/Sources/WinterGramBadgeManifest.swift diff --git a/.bazelrc b/.bazelrc index 5b12464e70..c291e22ff6 100644 --- a/.bazelrc +++ b/.bazelrc @@ -1,4 +1,3 @@ -build --action_env=ZERO_AR_DATE=1 build --enable_platform_specific_config @@ -39,3 +38,8 @@ common:index_build --noannounce_rc common:index_build --noshow_timestamps common:index_build --curses=no common:index_build --color=no + +# Demote new Xcode 27 / iOS 27 deprecation and implicit-capture diagnostics to warnings. +build --features=-treat_warnings_as_errors +build --@build_bazel_rules_swift//swift:copt=-no-warnings-as-errors +build --copt=-Wno-deprecated-declarations diff --git a/.gitignore b/.gitignore index e7f834374d..4f79b1009d 100644 --- a/.gitignore +++ b/.gitignore @@ -53,6 +53,7 @@ xcuserdata # ----------------------------------------------------------------------------- build-system/wintergram-development-configuration.json build-system/fake-codesigning-wintergram/ +build-system/fake-codesigning-generated/ # ----------------------------------------------------------------------------- # Editor / AI assistant / local tooling @@ -121,3 +122,6 @@ AppBinary.xcworkspace/* Project.xcodeproj/* Watch/Watch.xcodeproj/* AppBundle.xcworkspace/* + +# wintergram badge preview gifs +.wintergram/icons/preview_*.gif diff --git a/.wintergram/icons/README.md b/.wintergram/icons/README.md new file mode 100644 index 0000000000..27ea8718df --- /dev/null +++ b/.wintergram/icons/README.md @@ -0,0 +1,44 @@ +# WinterGram dynamic badges + +Profile badges are data-driven from this folder. The app fetches `manifest.json` +(and the referenced assets) from GitHub on a timer and recomposes badges **without an +app update**. Offline / before the first fetch, a bundled fallback manifest is used. + +## Files +- `manifest.json` - the live manifest (see `manifest.schema.json` for the full schema). +- `manifest.schema.json` - JSON Schema (draft-07). Editors that honour the `$schema` + key in `manifest.json` will autocomplete and validate as you type. +- `/...` — layer assets (`.png`/`.jpg` rasters, or `.tgs`/`.json` Lottie). + +## A badge in one glance +A badge is a stack of layers on a `canvas` (default 1024) coordinate space: + +```json +{ + "name": "backplate", + "source": "developer/backplate.png", + "x": 0, "y": 0, "width": 1024, "height": 1024, + "tint": "theme", + "animation": { "type": "rotate", "duration": 8.0, "direction": "cw", "loop": true } +} +``` + +- `source` — path under `.wintergram/icons/`. `.png/.jpg` → raster layer; `.tgs/.json` + → native Lottie layer (then `animation` is ignored; the Lottie plays itself). +- `tint` — `"theme"` (theme accent), `"#RRGGBB"` (fixed), or `"none"` (original colours). +- `animation.type` — `none | rotate | blink | pulse | bounce | shake | lottie`. +- `peers` — raw int64 ids; for channels use the part after the `-100` prefix + (e.g. `-1003999337820` → `3999337820`). Highest `priority` wins on overlap. + +## Validate / preview before pushing +```sh +# validate structure, tints, animations, asset existence +scripts/wintergram-badge-tool.py .wintergram/icons/manifest.json + +# also render an animated GIF per badge (needs: pip install Pillow) +scripts/wintergram-badge-tool.py .wintergram/icons/manifest.json --preview +``` +Useful flags: `--badge `, `--size 256`, `--fps 30`, `--bg "#1C1C1E"`, +`--accent "#3478F6"` (colour used for `tint: "theme"` in the preview), `--out DIR`. + +Bump `version` on every change so clients pick up the update. diff --git a/.wintergram/icons/developer/backplate.png b/.wintergram/icons/developer/backplate.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2ce3d24a903b7b3f414464d6a64febdb96cbbb GIT binary patch literal 81276 zcmZ5o2|SeR_kU*$4JC%8vP~%}iBxum5-MADOGPM2-HahIwpplKRH$odv5b%eGnnoF4t0O`{y+EAXNEiTzVCCMbH3+$zUMrWy*yl$l~ySM0HD0v z)oDKfz`(aK0ImSO5Oj<#fG?1U{VqFzk|yn+;15nghj*WHcLz3t@8JOC@|pQBK)|0? zf&TzNE*}EOfv*toKOi6a`~Sj#e7XOG=H*V5xrU0b2R}Y5|68RHtOYO z5$t}NyfvOw@sMy1JPx6hs|-_0CP-=0A3r7v# z$F!Y4E$ENXOX@5}B-poDSGt)nL(;Y(Q(zO)VJ~ncax=KX_dI=|mt<5~I&I84k7|5y zVA`UB6O~QD@FLb@=_bE1>$8$-dA-4Tq-G7(SbWz7!bg zk60m$-~l#`Lx`$|!ftCw0xpU$Am7m(K#dJy`NuASh8z>JMEFz8_wBW1A#FTxn^%q27*4al>dD$!jnkHcMy%H( zY;z>0$;*di>;i2K8aOnQAz`qF1iUzxgkTtc$;snM?X7`B8`EP^KeIMaiUs>vW|h4YdU#|bi-b(WlijB z)ZOO3%p-&)z)W$UQE#!$6>Q9~K>XDQg6gahmAl~ulZgrxoj2%}}4(|1!73 z&mpR_zz=7#Z5OBJerc;^C zq55`5)fIHlWTefT_Q_gy{gz)=_BBpOpJC~qNIWP1faS2m&qR`i5Q^f8{>bHW37@Ti zL-%8warF16OdJ^D>=o9VooJ$^KUqPLRY3-@sauSux_p6u=Yv#I5bY&PU(V)AK;wO0 zbM=Iubd~Aa1;nX33Y7;+_@DT1=Dm#lY0`7B^t$01u>^7J5;v|ydia6J^KIelBD7+R z6q@gHWTm(Bk0-$_qZzC}Io$+qs_OSCHDN_|fa{?8U`IsS!ES*Gz{)!}orKeez;V-s zLe~VGIIP<#vB5Y3BG;(*!K%fT2)QvIjEqRN^*~r|{d0`Qf``LZSx!~DfiG{k4!}g- z_0vPr&ofz%>ZRfhJpgcg$fAXI=)MQvqdP7wGRRFQGKT*hmX#fde0X9|x+(Q66eYPRwuzxsg(I;FXbcJb;^+vRA{>JvFvEnnb=#?Y)n9a9N?_*4l}EC;OE>)Qh!=d!)?I_zf=ZpBuQAnoD9Exnlf^0 zbTkLX9B4ou~=zWzJ^t_X37F!N2|>kO>kSbXaF6P4lf4Yp8S2)Y1vh& z^<<3fs_e&#A1b>B?8sTk)i{1$(%LCe8!k}P$Z1=7v_xdY(Umhz=)SV!JL$CVzQbu_ zj4D$mF)eWLaI71V8%C)2y&d7u>7h2*?G>sE^d%}~VWD+B&C7Z+ExZA>1w;8ROMn8J zkyUeL^WaWo96yIzgF(NszsnPRw0`L)$>zXN<8%lR0ad-QKQhGAG!!6S-vpSdZvMcp zLIaF?P3<*9?)-sUPdK(605MpaYt$B@4Sq1!`r zMXQJ8oMiybxWU*hQXh#8NuJh-kDZt$*cY~GHF$PNd#gGn(_;~dpX`$y8u{h=aJb7W zX<@@$u{K=uBr^ijK~Dw*2q3Z7`UHt#_&xIo-vmNHNp5lyp;@ivVrkT#zSaSh7X8Uq zg4XHZxaJFkq>z52${AQ{B5v0UUEf4MPda@>9Z*$O1x%sr+;B)j0h^U4RbJCgVRf#p zK|0dd2H4KR5)w(+7ZR+sA!R}(^krVZ2b@=<>f(H555I)7i<3Z?}3HkA*h zFRXDZ)TkqwtPH3IF`sxoQ&bp%1CRW0-~IErWO60_xyJSSieuifD`ET<)_O^z?JBFMVO61nLfZD2bg2eFLwW3Mf+O5t{c^84&)11vpc7326}ZUDnVysrPx$r z%|2KJeoyByuj9Ik9esv{)cFT@fa$7&?x8XmFtu+1KsYduW}$lE@Wyw%Nh!$kaw@pr z3`NR4{R33Wbl1|1kw93Ex)!VhA=ji;0Oag+mhVm$?@lJn)(l7u54x;8FscWe!xC+@ zsWNVq#Mrsk3t+F-&9pxt3tO#qVQL~F*Ly0v)>DOcT-+dv`k8r9632Oc$83i?PeQjV zY><}=3G@S)Mm7qN)Y&7MJxItv>f~#>i|GzO9_lzI(P1DZgXaqn>}TmZ($9}VEsxz@f_UWptYI`+X1$|96 ztAi3W2fOFSXTnnxj@0^O{pNC%Jr1wd|BeGE=<5t5@U0}6)bZtlXZLWi2F$cZszez6 zs$qJ4v;e~A2sV$SR4Y7H!|;|C{G21>o7at4Xs9Cj)x89&c%rFBS#>7PVIUXx`|^ui z@&U#Lo3*(7d4#e=An#coe?U2?Qe3OsiGw)+3^T*;q7tra!o?28JNtA-UT~A<2|QX3 z(qz><=fhtCe3rIzVnrY21GET;hrXtdCqt17IdRNXaTySOtG>`vhUFkE<>XDH_T>dB*>o)dY|e6pFvqw_Q`E?4zqKb{&EFEl#kje@4o=+O)f0d)uB}*BjzB+G752 z_!QtFsP~+#tc}wA<20W5X5Xs$^Z;%hglOSdEm)w*MKI?jh`kqW3?CkPtv($)<=w45 zGeIzwq=c)_qHo(8GQNJRVJXAi_AO6n-o==$9#G#>+VjJAYr|`+pWW+5?Vt`bi=hv} zY+;tB>MH$~p(fT{S5{hM9bp%LST*4EuVp!dSt45hR$ThL#T)`&Hz{od6Y--yjj>oy z>Bp*!Cmie$wq8I2$R8d8&2xKOzt!+GLb591wVM*`2ubmYxR0~DL^hi8cMtuDlSnUf znp%w~-x2F!lHm;+OOPUY=vN90R~u0AJ1@!beJpmCESSIJ%vwld123&N?!=#$1=$^* zfJ1|Khq_O!ue^Llr}HNVz!BWEU@h3;asK^h?eJP{$iR)s$d57o+M>BCT>@3gd?LO2 zUV5^7{c;FkCr0TQPRT>=4>kH2t|+tr4M$^hiZh7D`2a>jF;@V`H)6?184d#MEJ~KJ z^bAXSR~pt<=^i|>m#PtHG-ph@DxU0n^!F}yq2h>D@S=%WZtfE&+wtZf?$ALJ}FKg3=HF!CbFtGSmt{ZF38#Z@GooBm%At>Q@?tORDMBSuXchM5gWnl zuvs7#?y8n{JkKfB@toa?F;MA~qCRd&A%6U0ap+3P&!BijZ8}JuB z8G@Z6TI+duu?rG`oog1N-Fr{|-Qdz?!8Y?hLSW9da8vaiEFFO@eWft-C*rw?J5I3k z807uHU;M0hZLbwGzmEUdegk(qR3#0lD;4;a+HYy*BZ%~DQIiBy;h+zZG|u>6^9k;Z zGC+vxX8cpM1Wf#PvrN^~FoscGhsOeLUjx21DaKQUPBbD&pH_;Mlg(>TcS|py zkMp49aob{H0lPuU3@+{lqlChL(egqW)rS2Y{L`7 zFwu?J={QW0ALl@8P!pm3!e_aL9BF+7Vfk<7^F$xa1+C>Fp7V8FBIC?CItRPX_fTy}9(%xGhNBB9 za~pf7C6DY00KPpd0PcfP=({SxPAZ7-iP~(#OD2?ju%fm99vPKpT@WP>mY!`ltaPMOD>Z3ozS*p{7^LrFm4bSSOWpi0uKV`M93l%K} zC?B|I|Js*8Ot^7OK0!kQlk&T34s9Y}y4M4bdT~@SYL&ERoR^c8dE10IBP}iZHU%dVKF*G=nwy*9PpR{qr~vWoo9(;0dH0D13ZidST=Vs1 z`f^c!FrGI2!joo0aMxzzk7~_FPcvNA%;<~a9gRsC)zAIqn@VxKi{eZpDilVn(AbG5 zL>=ku+CmR1L{y!J)=zdt26hH+DM`rHzTQDe&9_itC;-0xC7SKG>Y-C2E&2T3(X;;m zXC=5@Ga=5c3+W*k2G^uPh#C{Io0NZQ!q{5COxF*2fE)sTJ~WlF1t^Pw5DOH6suFmd zog}OJ?6pstz}R{sF(H;;2_g0jEc zS$KfSIE4h@#4?~4AXXSVUL4aHe~g&(^^{WTi?;?^edC#kZCf_=wS`Y7-;Q0s2owee zRKrq6wsTgQeITie8t4|GYg3R!`qF2knEH=e0rwo5U@*5OGj%Y?XrdgpaDhZQz%CK> zGJa9du?zEh@{ys@L$%CbCm*)w+bH z`>~Q_oSh^QG9-%bHis(oD+WN}HIkD2oAWs_3FHAy^WKE8G;~N(ReudX?)loseA5wC zb~cA#S`xe;2pGOI)@&Z{&L(OChu47aL?WJbstIv{h8VBO8>IN{=~xVi&WWU2()X6% zN(Wfh2CPWz<$DV^u#}Zp_xIV)3r49h_|otA9?YfH4T;d$4b=c}_jvBPGjwCQ)mIsN zRW1D@YO2lJZxOQrpuDu*zxuOz35Dux80T#^~*UURq%T7$LOgS&Gka<${E*SsCxs>8DELZXE%FMtYDb^+X zAkaxzl|8Rt-E<}UhrIH&rEFdOGQB3<=939+!3#($2SQ3W!*SF|M$sME+p1YtB6nrC zU!~h6U;K-u5Ohfx5fgNg9&|5I4rsuloLs?&tc``17()Q(r!^jhC2z2Ak6kX=eS*b- zXaU!~$!Q2}>4tz^(#sJTRagg+@kjFlJ|0z^srv<$4T{>Y=|WnbW8#T75{e;@_XY;B z<&`cyUT!CuXjtNCzKX#T-_DGWTg~083Od9JI7t6iCs1j=6epXzqem-6ahwvLNl4fU zRt|u&t*$jwms68U%*HTpE!GG4_b*nJ8`P6in71dp3k>uszJ9kr2Fzm@8T>CS<;8hx z8eh}$UV;Q?ZPYu|@zNrx7UwmswnAqVqer$;l4xv@2Nc|vCwRLClx}Sw=6_lIR#9O^ zZUNT6cMK1LEP){6dBy}mA)?Z^c2EXbvMpmg;QtaTG{8b2?9C!d>3q$74G5?0$bHCm zvUBwG4SV^rA`kBo5EfLA7UOe%F(V|jlt?^#7Ka^}3rdWDiTM4)Jr*i}p{!!P$BL{? zsO^!&(+{j$NG)gAfkAULErewRMO2-EZq4!LNY=kghLsHDl^H^laIY>aj}O!%fGp)n ze+pW*U3Or>m_}km#&1jXH=*_768*g#ZfEF~1~VTw77ObmSY9{LV%^2jFALgbA>+Lh z#F|#^2AZpkbs54QAUtQ(7uO>JNU0!=4dVTIk`OGz^Mq(N^FZ{HwQk|yO>DiOaon1y zW3Ni$f=bS|SM9U6c~o>xf04OEKnBBaxWU2{x#Cx{&r}8Nvu;sEDFO^jwgYhtbtU=< z99MFaRVi*;45-Tcukl%9U&>hqx++6%or6eSQi4sB8`GFH;GY+3>6E1_ zsELP+nET|&o$n#S%V3(5u?aBmX#J#S@ml7oe^?95W2ZD3d&19?WQ)M8K}i;Iq+-kP zGP?wWxvf9^O&zLP3XVih5)p5r06O;~4+o6+3Kr_;cbfnpM+w#v0jEJ8$Pkk_1UpG( zx{sl>U|g@E*&nuXfdjLZ;HTLO=pSYWgHP)~%3k58;jz6WwkGV8T-DBm;;qmCLusXQ zrOI&hcLG=fRRPeFgY8dsaqVMGqnIN^&l*o1eW*DwCVnrC&rw_+y_U$fNDgS1I?M-* zuR2&Yx1Zl8+$;;(Jk`VFv=n?wbRug^q6~yMI2=oW*h%r~bH`+HviTPAY^+?2aC;Kr zp5G7+X^I2_P7>>(cw1VtcrmbIWqw|qi_9^>eRj&f)T^QMfwl((njV~8R!Q+(E?ntLCI3nNS@Pq)y)bSo9+(1TKD z!BwaR$U!PMg5N92Ve}fty9)rpRoox%)+1l~-@XBv@b&A_5Id`lpca9j4BgkS6#uO8 zcRXBnWw_h_x}#gbsy5~Um)E5MSZTk(*w$})$LX))J`R?Oa>HXBp~^8#OtqOZA<^M+ zf{84bw7W2#b62rkS`9kz>4ibR&0f7+W)< zbnfAeUp#z_C}Vt#MMY`zaqbkL#S`Yxkc=y0jC0w8k2 z!=Fuh7%yew9J>Ktb-C*8bK#HVC;{xHn8_JcHv;Ky08Le(R0jkZ$Zx|iP&rxH5QH91|7uWAa|G0*5yDkNzA7ZM1jy#n59aZ55dQnl zEz*ejfF9h8@wkG|%$?B2B(^NA9aTruyV(xGqx!{Kuu8fpl3Z;dsLk+e!Reg9> zr_tB#Wr}erq4)4|Fq>t9<_B)z8}eih{RNpr?)0lEeiBlA_r>0O+dvFUV<_m*qmTZ? z@90(+c8lM>$eqE+LHd#9co+GOx3I)Sc^`5Cbd-EM?wh6(bV;s^uQ9aN=0ontAW-(! zG{sLjqy*u9f4G(6)?w80MB39*VYV}Ddx^CEz{b-KBTVOJsghKANKG`MF zLm5g6hl_GHzD7CQu*I|Duc<%la$6n-dP0 zNMd$I-L&X2IekR`a05A9RQUevHg#dcwyYGu^mUd`f2=gE#GXP|Ry!SnDZnl8{+kA6 zf=z60IQJ?Hw)=V3ZQY@AtO4!OPAEjqBxMjn9g;R@w)(cZ>AlRW)~oR)0|l4uQ8<~5098c&7yJ|!%#;(VG{Vm$TBEXF*2 z{9|O6$TkR5ldgIeNB13&UI0^-@u;?!QTu%IPZDSRS%cDzuVe40h?|1{JD=ok}9(m0Jmi`=?BD|0tjJi zkkC8P2$bxC43<1I3F;1%Z*bdO6_idD+UhNXEkt@43ZndR!C~?|iB*0H#_L`rpMME1 zX|(8d?YEMP)F6*{lNi$eAaZ3I*jIar7oc-vg*2a0JMS@1eiONA^Gz8Ijy?wK#@rHq zx?_u#>W^8tA`d<&!Z#*IQbn-ZfJf&Nr6m@G{dGX2jhe%3s&*NQX_Ov{jJ%+FV4-cy z2u6Hjd;l#2;_e&8r|c-{S72R#-)t&?91$QO5NIC@?C*D8Vx#mRrl7J3esYm}0573l zOA3PVga5!K(z-DnnGPXU2=*7v4%rs=_$>c~6bCmI^@BHX@s$ARo1sA)FN6-F)CJ z2<1~h4t8c?UJN(iq=;~*?5Uj+#l#DmlmR$&=4k^=ZfZu)MgHAl=wZ6@(MQc?ye$i$ z@2=V*%!@-tpw{N~==T`)&Gwq~5PEzv5ke@;ZOFbh$cb*PtJi^Z?JO$P3W@g1t$>6hECX-*! z`BH4tSrZiGQb(IqUa_mJ?!qy8Bl*~I`XjSbox-`Nd}DeL*_*7d8O5A^A16BQNL-x` zZapT2s3qg{PV8b;%VdJ`jvYs0Kb%E|ss_kUDxF{BgQwgc$vtw)XLBTp*{9LxpJVoF z57(trDVjHc!`k#U(C~Yx18uF7^n{Dz`2DG1uE?zmZdj(0qc6wZ>);Oy_PXp)jJHYj5;n5)6^g&W2@1|oSdY}>;_xAZ1o z^ZD0nydPCUkLibNU1uWG^9GEcP=>eJ&U(MaR!Opo!@Nsq0`F5oUd|Wg6^Bdnf~Mom z$-K&+>0b={dR=BeHx28wXUbaQVJWa~lOAEWdYZHC;*34*hfZT2=iD+Ndoz5BKA3$r zW*Dt|>7Ake6NH%;2pCF7U_}mL)$_A&<}qnSu|l8Kya;VpJ1w)khm~G9-^{OF2NITE zwV7UXP_Fp{YIMb7J+d{a>kq#R!}i~bmojm#t?9ZH!|v_dDBivHAcH$ed_g`?QnFgS zpC+s*?(32MYQ{!GpmAyTr9*kbBhIeslW}PVWtoaV*u7qH&O@-MihB{+@RgNu8mnj6 zMfpJMP~vkYvi1sa)XU8uaVCAeX@o98&cTJqk`-voZ@o3n?B}YMOCF&{30lZ65jG|^ zoAoBimGOR2G&*M@rstUbXt0*6(bM9Vr2VveKKjknJ-2K3L0(g8&B#Jq|3jfZk0NU@ z!m+$qLFOa<=e4}&K{X*l9Lc@tS6hkV5Wsu2pDdW678&^?c!EU4?64D^1*HWU4Yjh+ zX%OPa<{=xfw_7KSZk|K{!aS|84)G%kRJ)$AD6xn4;6Ptf69^KtDcXw$a(qhz1rJ>y;ib)$F@Yv7SkKpVoadZ%HaC*lS5t2<-Ma3jcB1Q z6OAQ(;n@G6q}n=~1POKcD{+m?cWXXX^Val;!AvPUX8)k3*o=3aa49MD6{hh%|B-J` zUw+61`QG*yJ?;4Zh5YNpRz`&J`bJw`5A7=()d!4*id%%GMR_ay9Y?p6;FgUX_QusE z^b9;WF!d~C^0h5RYI7X*bF?vVk?z(qs@WsKAsQ*LF-ogXh#&a*bnXwPI0u92q~Wj+ zdS~%zK|(A0edg$Eg6!I{)Z-?Is%U6v4!C1s-(Vi!3A=`s+BF_K8SSgt$)v>Z8VNt* zcTC8xNj+_UCA5!pstwI?%RNR$3E2}q^)&2yN!#<(!9(7DI>Yyco#c=!qaR|MQXg@# zxnC;;Oox{x2WYJD3QsviuZw;-i)qc&o?ZW|Ae~n4h$F|1?R)sbrRH*J(y{Sjb;Oj> z5H?$5v~<`XND57WkOKdzZay`!<7bx8cWBOb!UtP{W$~(>j&#TCozkmeiBp9uYX?Sy z+k0+?B46R7#CWnw%F*?3(~}i&UrUIEjKNhcg|6CF-}`6dDkm8A+mr#V@fy+&^pL z<4MLf7`jiCXtOY?tN=sSj@1>UG+~jPu=7O?i&IhiB2hjO zkyVX@|2-2Tte#J&H}`zr6mB#|BlQ4H!_i0e1XHO{3+^`pjKWDvY zOO8g3#<#EBT#XuQc-rCxws*}!ee49n6$ur>542kX8(Nx3K{W{%6EvLHY1>A6Q$z|E zJo;6!!;xVu%qvNr9c+hD32u4Jy*U~{)WwprNsE9(&zc|C;9Q&0g5qx8!_~rukjB~~ z)>u!w!jh*J1n0EMoc=vXS$!uy4_EptC&ZLAsf=9tCjQo=$21n; zC?mE#dZ%9rlFy^~HJ&eX2PH!@qmBHwnnkYIBa)ajApQ^#U{2^t8ut@g^~o=fFHv4P z65J^uE#M!x;y)EfFvTqT^W3;gUcncwkJG-#-z=_aKJ-awyslT4@aE9N%;vV|JmqC0 z!o!A^n0HceKv4^Fg_OdQM?9cbkb+U1ExCVs$|?Jle4wEP-#)BH$`k?24My*>-tR7h z#rk1!FpqRTSF;@%X8b42b=F)>ly791M{#S&#N3V*?d90K#y5h$s`MxbY($@(tx}og z-lY&CGr7Uw=t_k!q)~v|6d~*ch&V1SQxEm3jr84yDdwL0Ju#rBIKsU~8$rdl2cHxrnido4(X6Gq6fFC$pMVdq= zqC*HvcC4>_Ix1|DbP96cB#aH-mc?{VM&((x=9#;Z zM{adp(rNrb5ry_e_(jzOYA`p_F({K4ERLk%*9hn4WFiYi|K_5fC-zhCnHV4^ifcvj zF}s9qtgrT15Q6f$ZdQOpr(eZ3353mKE7QJ{*n(q+W_W{g%$Yphb(X0Lrhf;>A!Q0W z!)Hwy^qVmihXET_Iq;AI#`fw&KMV?`q7(u!yzC-d%X80tCuu#Vw^MNH9fIVMNxg5J zi7lvXlm>6Yl@n(Nx+gOyX^*Wm20)cZ#_sR)!`SkC|MI^EJjhAxp5-LHMpLiV#ZZPFW=#xU2j%Sca)1^?p2Iu z!qr@7uSj$bmPMXw?Xhm;7lwlAqjoJs^Z5L0Lh?~zf_{^7wg26c4`uPFYcT5jIT8G5 z*3p4kadCm0Cmp9MooIl^h0Qx>4H4{vz;5z~VivdcCOGjpNk7>K`Bi9tyUmttDxufL?1%Y$78 zH|OSB2R9iDZd6A;Rg7D6Oht0#+#0`5?|S;y(W3_p)_sz)GdAjXa|7j|6Af*~%(rnH z(np1%o#2#R=VgJH$%4K#uSV>3&w*bg$SH$(buB|=SC^GSU z6p+9sPL-U zSlbhDu=2HicqOI|>Vk=`txojmtlPvoeBOdo$jV{Nz7b{f?iz#cuF-?f@I5e$ ze+E-HG_%)2wM>0lQLPN*dH>pdRd{^wzQ1Bc@<5amk@rl0x!uMyQlp9Icc0}xyGyp) z-f8oVuCo^G-p?=wv*~k?>68=a)#7*G2K?Oawo6PI;U%a(Q$nkj(Uybu7T# zER&W(Q;B3%<9oQZrNyuLTlPTY3gnjvHIb%&GS(B*9;7@NiNBc8SJY+;@!Xe@%%}$^ zd}dapE?;9xH%QYHBGiKTJD+{-cUQ!r+!E!w)3WHCxPc$S_W0K*>BLO?+t$k5vmPgz zG&GNT>-;2E{&$ZRT)Ppn46Xf$zl>>~fw0S-mqRxHwTsy(Gh9 zVw-AN8lXBMSw2=T>%y6VzWY`Yp9Y63g_zcvRmw&zEfMR1Pmfd+gdo$I;5dmQ+La8u zvC&eGp@A4_uABp?@qpvem&MwIsUPjF?`23jzrW!9EXfz*JsU65$*tv={rqaq?y3no z;s5wDX=@OZQ;H^Yw=vBeiIaj_pU-{nPrXQ1h zyGgTI6t}D;@Kz#(zM@@dVj0j=)6&a~fkZ7!_$)tk*iU#`vYlO3+Xr^8tz{$Hqu2R= z<+-re&QY%DrE@Gs_d67+gPGJ@krs(?$)HAyCM( zPQv!L^zD*hPF8gQkRa9bcx09UFo(o~3;HV@L^YRwV0~swp8T5knKz!dgF~}zooB}+ zm&&pNL`FoyA}^1z;c*K!Ha%y5y29f|=?T#yj)6)ylIXzbIi0Xu$Yg+%GZqQXfUjVj z%f#g{lqTIR?znwY=i5vXf@d_{moM?!3wA^iNu1~&x@dFofJn&&7ls2)Xhl{G-g1>OEo#Hy`@lfG~iZz4- zJ0)UQIH2tUjHo1Y&4DtMTLXwS3m^jeg7@A4=F#jfVZWdgm*~g5#`b<-9Q>M?hevM< z&9$z1nkRnBqdi!E_4ge6bU(dyi2$X^2_31=rUg;wVD{4QXO48H0v({MjZso+hu=z! z7rOKd-duWLBNFUivJb~49iH(LSz)qCLcv(?y(b(*J6 zFp6f6+}y?9C>vbA@~Y#erJAMPFhO+pxiN)CpMSEE{89REcr~;A(N*w6h3ta&|!=o?j@N zi|B}AMSXw+r)$Ec6VIfpkbTa0d_>L|MO2V}c32U*Vr76oj84!{RXy!T1f5R>q6v0S z&+4<^Qc*zY;F`MFsbqYje=|*bZ5_YR->z_I15;0ZwqS1qByGJ~ixgLWl9ON-Lmx{5exIQVffmSCTu8Dm&$1sG#Y{oqqS}#36lyqFEJzpPhr&!Cua3>zXYn#Ul{RwM4b}k%)W)$nFY8hNhg}K$Z`TL zC77x>5wN~~4K~wf84gY+NU^>;ch0<_BftU?JiM|w6T+ijE=6q?>Q9?4SgHSr*HQdQ5Rpd_vTZ_rQ2xDr>l=gSe*Ll9BC*lukHIcMvxUx z8~uq11sr(vsKVL%Zc87!kko}RTGM*;C%O(RpTY8!nAE$gJ{0(SA+Itn$j&-A>So!0 zT?w%`HSpMhp@ai_MLjtb0YRRgJ=1Tv&?@@1wQN6V*R`_~PPKpd9LUqNxlLAnfp$lK z)d{x-yDTa)o&QWY&gZ=7Gf<5pr&9_A3MV+Q83^ax%F;K|9I*ZTD(DRBtxd z*~?h#(sT9lsz+*bM*OSfrPuy#gy$e#JMi4``QA*#>_o$}BOehA><=Q5A!~Bq7;ywA zhsKagcj}!8y{2_Ak|TOMqeR##nx*SXE5j#&!%?F{VhgK$tx;vL#z9{$gG!j-?JX)kyOxo<R zX0~7kQHCOd^hee%-&Tz!VXvO!{zsd@pl^3{@JWyQ;-LYIVZVaKA&$F04FXp>+^?(5 zM(G-gT8+U2P8F2BGS$A1RYS-jW*21-^XK+r6%I8EBM8;^t|h-NnVBEf`X8ZacMM=Y zvVQc;aayt!{TW@fD)+H*O=Q|na2zUHD66W)fu9VccQBOyuDN^Vv6?h?&LVQ>I?1kM zng1pYi0E|KvxCnM%-#Wret7gj^j938P=U3Rbdi}&2eWpui)AMW4vn)$vq=Ub_0@eJ zKDJz!=(N#a5-tGDmQqu+ovwqTRzyQ zESpZblpu)0TA=oM4diJR9{;2M^ke$LS^kXVO+%A>!0Akp!jfNI%-^nAtoF&g)w%Uh z>!qGxDZxBO(#}Z)czM3d9CXy>@Ls9`t|u`W;I3F)sj;v@AZL;ZRNNB*hn;$>^e-G>6!2Cn&pwD#LTb34>8`9IIl-k}wcJytsO3210BC^c zvS;o>2owaWprGUTvi&X061k z_YJ)$KN`FiT-d+!)54W)t{n7s3?d7v;wsf4 z7B(fpEUS0ehxF`%frs6uJ(jm$v^`;^ocndoW+5M`Br?cno*z^c>wLi^(anp=#SCH| z0qr+Tardc-3OI?$lG(OVXuv`nSR%MT;?g73&+nXq6Y0~HBQb<~ELUPgIi30O@xKBU z2?8mj{NtVULZY04%+t|3A7r%Q&0=+n$C(1-&O`rUbW zN1$KfA(j;(&6@^uYE%B7oz>OT+`wP+8NWSEcS!=e=+Bx_IDqa%b2heoE_B}n#ulgR zrL*EwghbDcISWQ`nd=_^MIaFhALz6=BPV~u-W_Ni53h40jT1Ok|8EELG(2FqIH%aKl(9{XKjiiVpjq!zjJxLr= zg5DB&4qb}g_8&sEX6!mVBwMfo_(X1n@Of{O3DPA29dti}R3X63;ht2J6DyU6JxiyI zrmmF%QmHJ5d)HUk;jAGRl_^(3hr0DAYxmeH?AkA6@e%D z#JmY-v!0o$DfPJ~t4Be7Ml+Pq8_fxS|BrjYedQr&=D|tkXwSZ~uGb$50O1Ov^$^dz zrPkbpU2rT9)c5`Jz~$ZyZqE{^TPj6cnC_h0W%ZHYY&^`hP|V*42%pj;!u1RH=l$!d zPHZ*Bkhmy0AnQ4nf_`covcnLfM-*D_7{C{I0MbFPZ$58}+X{d53Dn&Y8 zwHuO*SC^Bt&Pcb1syR49f^-$x2Fg=BKySMmh*_koj4LJ0&(qCQ83~Nuk?yfneIQ9( znx>_k->vK=nOVWu)O#EKADZNA20?dm1`o4#-8MI!blsG|BLOp#2x2~vOGbZ}^<^0Y zGL}6#es(xby(2q4qvjhzxQ2Ae3Ot)ozJV1?nv(d~)2-&En*YJ}RfBxvS~5D2dmPQy z(aFCI`nE9o=|12|%Qf8&^7Hd9>Tc#&85oZM&!?>TMsgA(nQ?rEo~?GAp6JK3M_q{@ zPPHii_;1w=%z94@%eelaI{EGhIvCV}>*dMEsFAWKY?J}Nf!2iBd@ou7oWFdbDe zK(cK)^;#VY(En%HkE)+Sd&!l$Vzdnp-ihP;&z6gQRoSOJZnO(_Ee2}s$&_co7KQ_V zcZ%uQJpzn$33{$)9Q&5OZM2hMQQGrBtCR5`Zk)%sg5Tlq*YNBreM^ZBdSXP31=195 ztq(hprT||GqVgG#!1}E^rlku{a0#ogV(gzq?y|z!dli0DoZVx^gO)9 zmJ_7Gn>R=GA?ehu%<=!gCuK*#Wj;^Ps@oRxKnJ}R)CroUTC4L@ik00d?}HIDzF_Kz z-yDyQM}mjMs*Y6eD`sQ!xb9E1+95|ff8!*$3)ySKMqufz`oQO;=QoWpK3x;#l1--& z(N?lWrZPWbB5%#=Ew*?V`JEsKWMlKH&qQ)ofhyuZwTc6*2_B-#Nb1@i!#&LnaU>G9 zp~tvxaU$>!kKir_91222Z;@T=+JWaDu%$0qDX0IUeiL_pDlEN5nEnACZW<@W|Gx|d z4s|>UniL-#)<6=Aau~LF5_uRA+Y{|uuH!>^=Khzq(BcLE1X7?Er zgV~ekGsmx5DXpH|`{PRvV3TuZVQlZ8<%X@v_x1->mZMr-Zc@Dzb>T!Jl&;-A+6$iH zhhVAOt}+&bI^o!kTaV8p*$R=@ypBq8!>LjOD)1Bycuj4~;uklG@AUn{>1oiAjj=yZ zy`khq4*4|w%aGt(FesxY_mL1%U!S=_@*jkrbITJn*M!;D`JKM7vBx%n^Ktk6FCSfB zOakvpdG7CH4)J~sdH)X9Fck>5Ut_i=)~1bI%)L#Rghp=yiS>|CtqBwah3-UyP<<1%+x zaZtk(=A`q{X)cZU{a5A}Jh^rq9Ve(A!d`CVg> zYf^x*Zu$)}j7}z#1u@xiU@d4%0`tbe(Z`Z&M=%!|9G5g*Sq#GC9+KQcZ!s`H@*4O>C$ia3AUlRE|4XT=k(1C9R^y#p@82S1enRktl+Brt~S<6 z0w$*n=Mr`#4I5=8orrR35No5^5QX1{A+F0HFFuZpUfM(G7h zR*m)4_?jRrWlp!m_5awq?zkqhu006}grb0ms7O&1R1{EDkQ!Y@-Br+40cpVkqLg5v zmjo1bbp>4uC{eR50@n#2e7ro@$ zfPb$>f7!G?jmO7-7}H~Y1K9Em1~)U>9+a~pB6at9l^%)1IVq>sKXzm6d$U)2G@#IaGJKSfJgH%}Ar>2Q;9c=K*<}SrpZGN<%0KIo1NDMqZ2T=|z4T z7biMKU=(c^*?RlNRvRs)c0FJ_`K#~zoTB94q;yQw!DrtDTkql5W8L@oMwiP!tpfkE zaV8)Ra#nY7P67=noMLiPk#LaDj0Fqfz(N;Kg#WQ`4IQ`CZ1sx)U7frVzhfcuLOxu@ zc63KS!$yx^oNQ2-bf*Glt-3dSn|{BOkKDMEC_~G;(C_%a z9^UWqA;=j?w=QYbC54Al;&i(L1+E!g1*2GOf|-_O=+xdc?ecTraQsA=HVSDGvS$Zn zngG$ZKW=5-JVji8-vsjS^qkK|?P6_J2AgZke1yEM+}z{l9Kjgw7(+urJ*3Zy8I^{( zT-2p?HGa2&MRB$mI?bF}4gV(A*!)fRaW#`E1|w6-dr84g-87n&T-yAY6IT(5?&#@Y z5|&NdL6@oBNNVb5Ejz)RbBJ789TOvm5uFg}WoVNH?KfxJ2A{~lDU?y0^HZvVejVt` z%N%8B8lScH@5JQ4noPM(E;2Pn75 zN`LKiB#cx0Yr8G}l+Y$m*{n2XP_u2Tr*%V@#}QglYc^AKD&KicZuFQvmBbV-i&7P% zQ4@aJ4RKfG7yR37|L+?pCP7h@(W+O_Xb4@%UQ7PySv*@wpPh=bdt0UcF8)2~w9A)U ziATOA_SRV1eREM>>Zl)Gvij$_CX(YRn^gR+u)naquSbm!K@0Fi8J&spAGQZPH=V3!5?y&rl>chSlnN3J-3Jwuz{AWj(V+C(hFsEm zCSx>b0c9iQrkw~0bqN98KCiQ#f$&*Nr9_ZS6#6eEzA5YTTRfMk1x{5;FZT&lbbuW~ z8V#-O0Pbnb_KH#Gwy4TO*A|C%Gk1|)zBJ}3qx_aj+U++wY1ujTIir4?iIp&jHc{PL z4sO-m_>zDNf1D~lK)Z?G<*%nOGx4pIOqSh+K?i4d<+Uw@i+E=!YL-Pe<%5N{{F~Q@u4`^~x0;94-dK=?eq%LvG)NjS%jkeu7^C*2@ZMVI?X{4*Blq|;!e zo1X$2C3GN%J(=YO=7OwXJf@&Ip!-a(H&X?vBcR~3oqv)$c=tg~hsb(GgwaPeO_N2? z6-F-5`g2Ka;e9k}*l#H?J3QUIPp^f%LlW<3gadP}3o$z>2viX5kTd$~8~>Z|`UOp!0Ohndlm!z>aKMZ=r;KVU^o>2)phy{JumMUD^#I4lt(V zExBICNXhRNus5#{Me;O?`Fm7|I}-_EHR#j)ZzPP30j^wYuW@pn3=-K(NF-WxQI2CaJ0t zF~>Z^v9MY!tI+@67>`+qX<#7s%V0yJgF>yF>iKWGZ)$L6$_xUlT{-;&HA7;p`LT1( zHT)=|ZuTp8`5C=w&^VsHj%H3{O4x za~Cd2rY39B;oor#|BFFqFa?ubzOdhL6j6LHi=@V}snJhmW!`5y$_VXar|z)N;2IZ7 zt(uCfq9e|!^UrQJZGm`-4YURtEI~1g3-pxk+U3 zcCmKKX7O8Fn4hY)koTbM)kJqbEvP<3ivu9vxZwV9LAI00VH& zx@_XD_0D;gE9WZhY;-d=u0Qk4^yHImfYaw{eOh#KqWvD=2K+r_rZ@qyYFxL*$C1OU zNQulFRBal{eJ-Vfb3vhcQpcKLgmbrw^mEW+$d#7W@6)9BOQjnYD6PY}rPlBo&{gjG zR+rB*2<(9wdPvtks<~f};#hiG)#MI<_U9bAa!ELvQPujjpFo`&N)!oC_ZGYgdVdDx z*@l$&QkNrrUe|-d7Q63tc>r`WPb!peW^hWa?3v~{yS877`w3-M?d4@RA^g9?fBp@< z0+iBZ3&sblR0SzWe}S&$S(hO zNq_f&Id>pmyu5$9*zTK(xOxwyFf(luHPpPxR4L~ZDBbQo6v0b&DG7V2)wC*qF|S$`_7^HQtD2+};rc~tKAo^&Q5tp%Zjvc@ zO}wd&Vkwgeaq^f`4ts&;Rn`15^Rs~$=xNtf%m2-4#W2%qqdeN@B2kh7(!qFPomkIQ zt4wRJAo5TG=2qadH~!i#z%-Q<=?K0F0X4FV`T*X||MR}<$k4?@-zPu)>mN*Zk)_)p z$TuzjAcabmUX0<-lr+38c#SXF25^h-o~e)1=U!@Rq1qlHmqE!mNc#+1@FFt5@7e4s z7I9EEE$BQa0z-RCrdr%ngO)0_dhK!#ti-G!sIg1c>dU)NcAL!GuNz8jwr?(E-?9l; z4pno?P=?e(S#GS8<^CE3OBndzyZ=nNnB&C!Zb2J!onEay9vT&yrt$axw|Xt~3yi?H zG=jmaH$o!}&j!e$U6?P~>T@-a6@sysNs@u?QtZ>#e3qj>34SyTj%OfB_B%p_3M&Qy&B)uV<|XM{1xq)u8Sqgpbq-{#9*L zP(`uGkt7)#O5++)dn)ldN#59pJ2H9>*Bd?TmB*s4e24*%T;7_T5l2-UcT3Zsm=4jT zgAtk~UruQmaJoDtMfE3)7s?3;P@FB(`Dgt`B~W*_=PJm~H#O<5iMIhl|5W2;K0Rzm z9JFG3Rlp_{p(l*I=Lc0I{(z(zQbt;SnT}5RyD$4c=hz8>^D*Fen7Xo*AvpiAK)jE- z+3yd0bgKNqaHEdiN*k2IZ}LT;IwqX6P%C*LXyt{FS5US6l`}lviM&u=HKu_ zeKp?DKlBwqdRGD4Gkp`%hJ(~6(Nk+_Q0Wn%5zqJdSxrBmMh4%R?w(M``1{C4s1<%l z0Y*i38}x7Y>i?9(|0j&Sah9$&hdUt;H7+z$&SogTpXI(i)Mg{T7%f^;b9tiD+uTJpl4it;RO>OxybXK?|yGm&T@S;D&Ajai&Y%qq6Bs zes>$*t;cDvnKID^^^IQB$5K98slt+67GrhV9>lA9=FP>m0*6hZ{| zF=%L8d*{^m-laH_-)+;e$F59|=koXG<^KWn7}Lppcsu~(`cmV!iNWi_XReM9E+x1c zL>YXpwG51yn6v*li!JD>chb-`gu4K;D4;X?XBNl;U}J*eL7C-y!GzSGkRU#_8g;ka zaX#Zbi)`=?jSKhqzSMZ1B6O&F0_i5Yt^x-bAN(aH;;);HAuXvKlVdV^@J9Wh-<#)_ zn9W*^@a3q7QGso;?+>8&+W9Eq!Mv>~|BoPu{v)nC|Lb<$0e;O#F*jAdId9_TmjiQ4 z$7ZpWzaa_*bwpj^5AkJsVII+3m9!;92Q%cd0vCT4>@)X+rLfZgf7?_|Cuo0ZxN_ON zj61+RhPznLHhNuGtd8sGi3$Am>D6D{uU@d|v}@A~Q%0*pj^m_?y*C;waj*WFz4o1% zDw1tnPz})n4gB`>1{$Or8t^SvF3zuAldJZ;*UKxm|9s#CRpUjz+E8C)tyRcept*{p z3oukc%pMf)0jcbD-o#r3Uvdg4+{ZoakEer_$99+PfYb)u{xs;B4<-PYj%!pccw?x;x5Fk%gK)9EC2uaeJbQfpzRAuExA|1bE>;t+QQ;zH!43}T;`y=@ z=4uY4{fGW}_O?S|BL4Wf4>v`V7GFuntBd3Q83Ok&k}BR0M#N;ATRk#~efaIulRao` zd(3P^u~Md{I!WGF$4`G``oxwa{R7ShU1fp)jAHsPfZ}gKXPOM)1g|IlihFLM{@XY*U!;a9nJkxS^G~1aXYdQ0~ zI^S$nk2VNH4+xFnv8{_R)U}p!+ z_bIU72^E^YPOjPIzl;X?f%u0qAiHX<$#e&W_E%>qnV+o8v=ARgFY!J}#lM6DCO%G3 zle11rWOD%Hewj9;gg~5|=LA1p{U+>%SF(t9GyC$c&N`l-tas9_v|bqw@w(2vX6`N? zY}KXC+Nb$)tsJ}tV}G@A1<5q0716soMb|^Rg9A~sTL4Znd>5Tr0!^1D9@yO%3M0@9 zpZV(iGcJjaaxbwyuht)8X>RPpW;g>ENmO5fS16l*u>dq=}G}q>ho~eXh~; zSEfC=?f2)N0mYC?WU9KnHz@SfmbydEatkdYrv^Ut?#q|i#R|Tq*;rjR6PMS+++C<# zSUGSFNuD8;MMa(LN|aejp6dj5vF?G{)oEJ?7CK!v7*~X9>SfY8_mZ3M>kHV?(BTwI zFv1$Fwx?_~?);FL@RAZwy2_&(&k$pg#KY?ae;J}&e}|X3UqaoH$n4-M7NId#+2f<< zD#f7)$!tsug8f9KWvyqPC-Fgr-B!5UD{)#KYqVPPmMRpCm+9pk0(rn*Fk*3ZkhurK zKqcH3SNvFrYShA5oi6xz4nvcM?B8@A9qRi!o4WOneK(`mu1#~ZFfgmW zp``~EM82c?&V#+cFjB75hW=Q9RzeutOMgNf;zl^g#gCbfk?YeSTcIiyfh}jq*S*~I z_6n_kLX@f%-kQnSy=_jz#;i26?k!3)Hm%>mSDD%JQJ69H>`>rEP={KibKw&D@ZCyZ z;PSh9$|Z=n*nzOi_sJRa0?&98qg=Ib>C^0&pXVI`a7lZ}E$-D9xgTO}(;YAnPYazz z*IWu5s^SQ_u6iZs06bkd&eUSc*Q_Rk8SbEgEJXdbiQ1#y0W?E?w&MG{M*l-T&<~K` zr){-2ANr&>(H{REaqsMeCTy@A>QXg@VD??xKP)lmFeR(GeYViOak5k)%R-Ow1qaZ(BIhmoEe?YBOk1LW_n4KR6{X2f;KcgS)3sO(9 z7jYTCcr8Ye72g-%`NMM^D8*bX{QL`+8S{*{i|I zmxq0=y=aKKG{Xb-3zvdI#g?mBhoThs$VWWVrripb2heIG-nz1H;e$_4>^kK!N?e0Q z%ErbpNm!6I!Z)Rzd;8y1*6(CS#U`{l8sESAC6$Ei5nXV4{{eae4Wx*F!AC(VSf{Z= zY=NhDk2W-NycsYb;9p#cPSiyOlI|iV~@+a6`#|z zp+J7YPqiZzo;KKl8Dz%vj@9O6tgb&|_QYWn^Gxu-m#C9P>xeJaK1f3t)Gm79BHAQG zb91boIvnVFPD15Oc9L_Brwm$4Lj&rQQo(QASD*?q_FyAT8v+-Sf5X-(42msTD(fjT zg%HhKT9nj9X+v5M_k&&+*mRr%KF9!)zSxsXZ*H~`mD40ra!OIfyWIu_BIOH^5`;%t*`)E%~x8GSr?UJI4$^9&Tdfwsg%`K6$+Sr58ZwG2lDF@43l z&#B>BdS%_=YS-32c(f@RWq_%z=^GxG;7M0;v}IRdEk^T}pH3BfM;X7_j*y1$ zmMQVJBkYu#1AnYs{}=iY;fv2D=m&3S;e{?xSdbsLO}#y}j4tyBCQw={QMB@9AeCC<_0)`-+%7(0@`qL78;|tx$lj*qjuo)t@Xw``A!i zO}!)Dy5dscvbnY&XR#K|SogEqpxF94$pblc@yjMJ4jN245H#Iix8-5$G zh^+*Y5b(rnV?*`v%`#*#*ciDmVe-vG5~w#Tr`;HMk}OsKjdY*1y}@hMBnk}JlvS!Q z=@_~siypB+2kD2-goAesw~EwagxWSnH0)NSt~4-TL~b+r#AGM``kIs)amcR}qRpqO zKnUr#eSEtKgf-XD(c~fXZ_84F;#~?@2U!bH`YG`hBiw@n-z`TVhEw;;CWER+n_Z8U-VOWfLY-~d)vKrftX2t`B!Q0- zBoYQwiRf^~&WLnXX(xGiIY@jVC~NdG=@IF;7nn+}jVD8(B^+n*bCmD>vj+>qkJt}+ zL&JR;6Gtoi*F$yeEZ5Nkn8lFW;Zchr>(kSUZPq7{XE!-?YagL;7j+$CnbU7k$>heB zD{TSGd|ywqkf!i>TX2W_nPKQ+R^5@5hd#}{*U|OT12dj-;hh`Eg_ebSb}5c(?nYJ~ znGk24shSmRAHv__h$r)vp&h!r40m{mp=D>@FJXh zuh~3<%pBiIx*=6${fN|zP7wr>u@lD*pji2rTPFKIA?OGsxUloZ!K1g&#vnx+!&(K+ zh;aE0__%pSH=8HorG{C4`QKB6zi^&mYxed%brSYvC@~4VPQ|1@Pg3(z^v-Y zdXy^G))?KgpFERJ4%l11H~}9P(%HMle<3`n*nR|t+h1%^of<}Jhmc4v)zaGFo5|6q z6p=8qIjmv#_lovp$=a+|y$|%rI3$3ZN`b%5%~i}&=8R%hb;1H5Tw>Ao1bjE)TX{qBY$JHrpfYu_DtT2;==z&CD$R8cRS>Sw&C z*Yo9(GxN?iFzTaCU;1lO_Q?fh_X|6StitE8DkLXR#n!ka6B<)n2ZB0MtGyk{7axR5 z7KhCA!oLZwKEzvN$_576t*Es>)qnKte}@dV%YWs;E9*}m@TR&GP-**{ zqe(I1s^z(d5G_j8MkwoQM!yGTwbhe#kPDQYA*O$Vf79hp+u3vIK7Oc#Th@rrVc&F zH2kqh2aXZL?L(?kf*~qTU+!Y}Vw7k3LQqBcT@q){R2uD(mv^*s8RT0_xl`RT_B_Ci zKHXWTIne1;J=}2&k76mD)0|<#hq-ZE9#JVN{J6|w-xs8>RG4j#bPpY{8$6dyDsu_T zUbi~S_2%FD@_l)$pWLHKQrV-$+4o-7xM2mcLEbdB1JYMo?C37+(mlwou+BTTK2>MB$VEYoad$tCuz0{Dz8JnTj!_}PN^gX zf9!?JHb!Ka&9r%oyZ5Uq_)asaOn{t=?40aEA4H{%jwH(F8ZCyFye{R&{mRzLTz?oj zav1XZM$KhLlenEj5r!W0fbN#O)=zUc2G6R;)OdL0o$1T|=zUmWZKsKMdH=)bT|1*9 zPU5{$Q!b2;A>Iy*EB4Fj@b>cwq(9)VL*h$YYnUfgCId+AN7s5Ww(mrCHqKqs{}(jl z_pPN_4_f>3mbIs1JM_vAY)fP&k8X7R{F3n3rzOy~X%St|v`HY8Is1_Gi26w!(pj_$ zubQ5cX~!p&FQ2tW-**?+`3Qf!%58}^qX0hdvMgJnwG0|HImp;g-cBuqLj5|PxT>(g zk}Z1Hs(-@k&Wd}t+@m%kH=Fa%EZ_HtN=lc5ESc6{M1Dx{;p0w{Yv0DV`{p?^2Yg;w}tV6a+#kLt+68daxiM69;f@<6dH1k5msT95aEQA1I2-Z$$Uw;gHC zVtJ7-^+I=~uW!E=g;em|DqBK0#_;Z&9hc=~ZQD_$;LwI#ZC3v1nJ zsgribQueyxck`jwVMlz8xzwLO?N=O3eSZBAVibcQXSnP4V37vzDMZ-sD{PWO$RSOqf8JNkU_Rt751231V{WX?m+tk}c&Vb~gdRnnm@hT{maW_S zs!~!##erG`#+7y%;TZi1JP8YE!#Ck+yUo*6CINpkpfWbKdoPJGbNV3~k61{YC6(3( zjVOG(&+JGI6EaeLTCb6crMJkZiRDn1uuDGF(UM{j@_AgQOLI5MJt7(lpAqYPk)Mh| zYy@F0o80BlD!j?()1p4>4zoY!It4P#dCA($d+jxTqx8D5Wm6mbk7_6M;Ege6L7J4V z!{y-?)mn8$CgLb!$>$WHYbn=scF(Yi5m zB9FqIq--Suhj@y*4DzV3;h9rd%xLl`A`q2`JFdqnl8)0t^6A|ZQi70$a3vKTeptxh z#ck3NBj-jD@ldva`Lf}8aR;edUd(kn8APCwe#Mcoa<;t*kWVe)gWY?$e=bLv%)&kO5H8=)K|zhmx;&|YD5wHjD{PXsYD z(cza~)yo;`^Ge{RW>S#=DGcqur^sj#cFl-2waP62MAO1QsIc@gQ&Ghez052(7BV&z zBeZJtlsd9{pyIg_clo55x5M1!p(rW2yTfuqMxFC5<`T$BOg-uG{yN&@Z3}9^(HmVC zc)rK%;z-duQ=WN9Ab0ZB{%fh9;1}jGVym{09K{kvs?fqLeZD%rQC{1BPc~yK$64BE zHR&};sFm&JHqt4m!=)yfGPqw}GLFkbhR4RK)0^dCZdCmV(oN2EC-0|lBP~`aVZPO< zNTHp2Rg_P#@AUj|UCLN0EdX71fOY38ryjbh5BV$+CE}@8H=2$h(QvCh(lAs>dC-H5 z7816ewh{GTN~viG{dxY|?$JJ|xj}wgaOVK2GONvJ+;17XltAfzOvWOb$XPBkS=bTo z_wI93D@N1rIPHxpv?TBqbvS4G_!p-Slv@NoB5Y1>DCVLVdj(yk+{Kp7b5^T z)IRHhGoudo1~qS1bx_inFNs;*mCFwZQ+q8vRLZCe7F9gN+;393NjhwD}0u+BPii)@1Un1a8CS#ncgvAh)TePC;Y4iaS_ z^&CuxTDOepEEe{6M^-zrDBZmzmrCYfFy#~5-pFfSutJ8Svhk%Q75vsr`c4v+AdHa5 z)5Tpw;E&2)YoKU3Fp>-q9a~j|+LLJN3R4JG(btA*H_`OJkRMJ}?neX-Iyv`bC4FhEUXGSf!h= z+&jzwx?D8MID!B0RSnLV4z?n%gR*|2SK7o$Y_}1*ufa)*uF}b9(c{zW$N>ZEgYIYO zWi-r8IwcpE7q!lsy6A8ebr_IfM-WO%SaZTUs4nm|;>Ki@otm!+fvXQnXG6KZ8v3WV z)rNaw?wVLTR_=G&mfZgk+vp%;kMnwu&y=#?Vp>?)xiGi?){4NAqb@^-6%ua4+grxF z_h{KyGMna^UNY?fwkDyk{`~1_zS>mn<9e&qV}st)i(&mm7aKfQKI#v8X~goAgZg8T z=;sGG2%`{*&$J6z^NpR=Jsv95NL2i@5b98Ln`atOXyPg(9k|}i@Z`2K0-p^d%kGYq zQnzajC!&U|T`F%Q4MgQvo|y2w2|poGtd9;l3^^`k+!n6aJ$kgNG;{}*;`)sK(q0H` zt|jxORgz$YNbuH}=ixxe=PiGCU2Ouu?S2MdTIDA+C;=7k2F-by&7{)MC}dA&s-Kjp zbxJgz(mqMd9(@kw?#2}We0-0XDlBd(dVnHWTN{XqnJ=9ZCRZjeJ&M0kgMCGdIgD|Ff`i-Kv7F-C@IDXTsSe zQz=#3EjoVmd(D)iYyr0Z}RC=2s3HA^{>&w z(zdYj=o{}~LHUkm=SGU}wTR@MSn?Pbc|X*JFe_CpTU$3=b`(ytzs~~bC}gMqk(aZ3 z-U&us-FQ%X$j#HG0C& z?;**fw!Nv$C9r2=?}ac!uXO!_(k?l;9@?LZrd>uXU53jn=IgQMOPa#ZMA;fjjCfgF zj&@_KR8cY-Upk##6ei!?KZqQ))NQoGextX(3_bdXpbi?SP%>v{|CH@LFG2(=kcsj1 z#BVQR5jLf*!ehyP-t0hf)q=F0uNLFr#@FQO!lkTARj5T>;R#i3C-i9X$fblZQTf%! zXnYL0Asc5D6Fr|60+zN*_HIyZabKG+Dvbd>>~m|`I9+6mAC?v!=e8{HqFNO%%IYfj zo<0Vx{b2H$=^%^<;w};Cv!=I_xJytz=ED%C4X#5wO2mjtZOQodGVqSYE1c7a1ymYg zAq?<&I5#!BJB!RC6$ljR!u$kQXmHS|l{~~)2Hl)+5U=el&UR3KZep&TyPc^(j(IfS z!}?*1jG+!n{Rg-ceUL*j5ina(+st9N$*~AED1FuD>FMb!!>VY5;^D^U(TlpF!2R=t z988=CQJ>Q@%Dv(YJ6`tE#t;uyioOohxw|qSO>_F--uact3fW?J|ba zp@Zkra^^h-6s043_fp2asM;cru9i~oDe5s)mynr_st;$E207vUeZ9NPI2Sj{1?v@K zI`^Si6+I+kxHBff-TH~R^3w|~6;W}2&YSsYP06$XFV*AGHNiRcb!ViI8yjCcoWY?M zrDpASRZgoe?(nOGa&s<3Bb{_>V*1c~W)`fNiIh)9R;LF=LdLEqB={vf>lWIBfsTBF z^s#Kj8Kj8O_+<4NB4fO2Q(8B?N8g!ro?(odUDV*>`V}|F?4B96nQ)QBOi~b+>Lw;S zu-l3jedbR6CE?!uPetYVE-UtNS(vgL5(biOrmbDX4w-6v^OhbmwU`+p{Da6JH)K=Z(wT8LqjyWzX z&FZv7?!<&e@><763*God&T3BV!VKu(yC+sy@@vvz&CoZ==J%AbKM2ZKtnM(+W;rgE zg597W|C_lz-%#IS>9eiIvotQ8T~xjnx)?=S4;@h&ATF7bcty@qtY-vy^F$r=;nAuc z)wY*7n1_dTfcdrmBZbwh9S7#m*9yNR6f00e<=Uz#tNU#_Qs3Q;>I4u1s_AXYgmCo5y=G~;p!B~A=ZbXwZ>{A z>e|F5G&=`ka)qKj@e2McwH-=siX6u5S3W-KM(sL^a`!{69U-wh&07*@I))~>Bn?Tp z@zau$x+;$z=@0q~3kW5t7d)jSc1Ojk3Qp_3>WG*O1Us6Oeq*>Wv8M40@AZ7ZXorKNmwK$ zu|IL>;7WIc@E>&IknG*xYTtWIoIj5xpTB^O@@xR#bfCxQhvhh<9x8L*e2IC4N znp)mnJaph#!VP^$gbNAkInX{QD^pARX$MF{j$ittNjmo^OZ$V;R} z{@jM)arHtsj&8OQ^Iaf?#L#qjJ`io*QYqgx$;=|JUvYF>=;7qnlk@!q&O$e8nb`0r zlg9*GKZXfY6AfDWvB%=G0nPEqH$R5Z4 zYpAf>OZE4%A6+ka@tE441;3l%t(pY2A1(dLNKeG7n8<)`_`EL?!c7s54iUfjIY9$) zf#a%ZIfT*uvb%ArFzoDWWN+J|If(=^?d0MF)cC}B!9+;q2FsYJ_WOmzq^Fdlkg1`d z7#=&S-x+i++rCYKY~Z&9@}XMAkR@FX3jIskD%xT+dR?m8l(S5li|c*A8d5ch6e)_S zb%DQqyz^j3uIMtJNIv-|fa~iSf+D1~NSYcjZ z6RaW!B(u zryR%WYelP*A)IG*SVazwXeOw26!ogW`pf4gC1%4#S|+xp^Ul-SmKYd-=biXhR0ZaC z6&N@+LMD{!7Vf0>MJwS1p32<4AC<;oejxR)g*IR$UbNy0?bN8PFZGu7ZgOd5m4X$W zD>^k|znk2Uy7QF;2?U@AU1=>T{;B#`!?5`5+K#RzjgN)Y zW0f4xea(oDN=BZKf)&N%(Get$bLMmycM0qr^EzET?NW^1vh|UC&gMr@?!4p~h;%s1 z(8hmQf2B5^{z66L+so4ctL99UrfJ!;87MRO?i+|Uzj;{I2SSB_6HIp&C1PYCjMGlOE#9uqRwDpDQ)K1AC zbDYo~qnm@aS15E3APTP?lm<#$&r&u(77>Dr>H`@a2cJH&ZrgHcrgwB&hEP6~+aLjZ zp(s1Ggipxkp!RYOvxnp{vpINKWq;93gk^Y0*clXS1zc=sWY}pbvk`5&n`{qL90CqP zjyQ?OC|MJ=4!T?FjLD@DRg}fCMp%!Bse=eG=ydJ`hsu5x@-e5%iJP+5r!4p14^XUN0R! z=CPaX0H83ts&V<(RBN}GN8K?~%WaT(S;X0ll;1ITPt@JYS{497nubr}s|lHv2O(2C z^#N@9^iJ{ZP|_)2$IPqKA^)T29O?5jWIz=Y=A9a+;#NLxxBZk)1C~Z(T=SmmpBV_7tx+ z+Fm{)&TdxkGWp13tU!z>E5Z|+df_qEf&y|?gcaK$!(EFG+EU#8n+<>g@vrQS5xEtJi{dN$ zC4d>8<%g{qj1ioPK|T(|AXU1#xqxgaJs(b;bSd8eO`X!)Iz&jlhha3lRC7CJnIWlz z)A~lGl_)_p=?Q#?NhtXvUKKJsBV3i-bfa=&w*V_)9+gVeqNM*SzBJv(+Z^U=9*lHC zum=hxEpI?@^AOXm@(lLCx`A`ms^}$i6VtOI)%^!vN8C5FSwNt;H3I3R62#S+LHab3 zv-m8ER!9=W6g8zsH_9QEjY0N?A_ojuMt_lo!*0hPcPtWPkRKLBm z5&@P%?_ebHR%D*AsnEJz9P$3H<`!^#O6dUXUf2DHjo2g;l#4jLLtH&h((o+)4;X3p2QB)td zz|=VE2Jr+fvL$Q z8=*Q`-;6&R19u`v`_c#!Oc*$#Rk`(peLOkHSFhIO8lfB9ZM49PR=^u(yx7q{_4@GQ zgBZu95_=R}i)PRWD0gXY?G*Qz4C~^97$Mbq)Kd6qD2mI@hO?WI9#ODwiavVEQ6g~0 zj1k;z5c!!t0Vsy(Wjcz@Gf5R>>cl`-U5gYR#7VIU!eWEw-Qq;5b} zYA8R2S%)@tJ!9u14~+sK`%SQ4>qm#1s}p4-svT|WNVOmoAx%SC^gF6hk?N&Vl6$&J zT}aWKB=_G?2*&Et?W({Aq}oGm2;+Q=ZEMle)30tMkWP1n7S>_ ze4n!W5uf>M(O_)NxC)%uPMAG#A2rm7W>nd3=m(#+Q1{?~VN)>;>0Ia^Dz6Gv1$Kn- zPA)-Z;TkV^qI~>E<{^40N<;qc*V+jWAtlFcWt#Z#@NevtX-2`X?t0-f71>T{l7>{M zw)Rc@aP1V+MGQ!YbKJw3e?M_H%4n6u@vuzM`O^3qIEI3%*Z|czKo4P3l49FEiTh*H zAtQOnO5^@(WZOWobwtCgc8;_4BVx#7)h)>k!QgY^@{*KYLe z>4g%f1ky)#Y0DsBIa?xKkGt=ZJfN4Dnkf&VT9vfFI*&o2-;MfF<7Jc+ECA%r41gY@ zIL-Bm&vrJx400e+3G?cyW(7w)dn{8xGw(H9TTK^+@ZQGThS4Jz3x*?9Xn~%z{L|vq z68pqk4{Y}aLORkjqzaWSV10R^@Fn8_h|{GKdL_<=45TR?cd&(s+{2Pf_W)|-N7!1e z1d=>8JUY<8l~i$v1>%&Ej(WEA`M}8=pvgGkqD4t17 zXDc~-p=tIVedyu|=X~e~&$)1w(IvqG-n1&29auVdhIJEwrioz!5p?d*)AE?SpEP_ z^D&>FkOjg}trUDFg<644E1vkQ5;v~tx(3{Rj$8$QL3;?!FvN7r5W&=-R{w+gz$z50 z^o|LgAt}SWb)3#2OSA9$VHrul!;bgJ_oEjUlU$k6{JUv|kRcST+B}Wt6;>X=)vra*(kx>*@4@ z3eNh4bMlaXUmUh5_z~_PiWPII|Kw{V#mcO8=lp~B(>Br(n*_^Jf1dyExDi*@QDcY~ z*_9JF`zUjFs}yf6CM1j!P%JyOema_*Um4u-)4WT-t7f3F$PyvKpAf8vMB_ay45?Vg zg%-Sb{%ryc4)Q4`Z3rle1lZ&<5<4xg`a@CxX!DYU=d*}ZGc`vrv4s3O@)7k;YUbjk z2Hqu!hil8nAB!}XVy$O5KqaC6kusK57J-p9S0pbhrF|2$rx>&te{lq@0ST1uE0h5h4*apq7pLAyoB;Ku}bGW65L5Oy6$&S42LOG#K9V*Shk#J2o5b z$6|}VBGbcW`p_4<>}8Nv(llc+Y;KQYRW=JfBw=eC6~7GbZJq^u4MIz+!q@Q8t?r{H zT}bIVbVj~N!q#D8R~Z?j+!9cY5vV55w*=)MP1-q(t|*?XE++X&(=Nl^w!)^cAHv&e z<%IoAUd%GUQIfgecuUALPkSp4I7kSFW--WpdO~#@$anU7L*XSa2gl7bi=9|SM!DPH z8O)ay?cATDUV|z(qR{&lVx6Kzsn1tMib19jl_W&!AyefUiTvHdl}6jET!8y_P%;JS z9{_S0t7tP@)Fp(A1)<}?@i;)wHXHda!40TMA^}zc+E|^no@pYL7KSeJU4rghB3(ph z=*?Fk3~!wgKs*BEf-&U8A$A;*Haq?TJDDV*(%QKMkkKdRQsJwmot}`3rKy&WH2xmi z7;4boHvgDGQH(08X6i6h@{mgkk;i{!t|H6K9C6j1zb_?9Z4GFzK;%L(;h%peZ<)c92%2rQOWN|BYx_d%**#w||QD^e^(l(&m3?&G8GHny42s?`l^#P3) zc%38!l?>ctD(<5x=`bnMm)a;LX#s*W(S6fsM4_8_noFD%53bUO7Efgy7$BP8i!LgB zP3kW$Tqv2G1*L$C)=t@dAUY@R5VhYQ1t%Q^_a_JVT_DloT6?u};O1tK$!`Qzy=)5H z-(M|B^g~eqHn9k9Nd1tJk8~`T>h|EJ0 zZKYcp&{i9i(WV+wJ4EI&su--;s_3M6A^p_e=i3iiqOM`jlN%l3F4@Yc zSQS8>2+>=@+Ij#^h#9RaqY>imb8z1yBUhFAJl_0R7mu}pR2jm+bnvTL{=uZAWl#=H zD|H3BkIcR-bg#rdrLglsrSU)}dnDmjj0zNzBzv|w0L{>$%1ca;C&CC9IFd5R!n||O z?Of$OvDufV3nf$I<)u_rknYOVL_nolH+51X;^s9^f#lsv(DoQkqFCI4PlKBv1DpLG zQWf8Y??YHG@m<}sjmsQV90-?#o(|@%>73Cm69G&jS5kEagI((eXjSmJ#S%O;Y6|(= z{1?D=DMO`yAoPiy03-m+x&)5iSc?TT;F`RB=ARGB$D)`!w#d@4lr$qm$Pk#&1?RcO z5r)Qn&OoX8@^gn$P!J!cP)B91$7&B!%cR6H0pe{st?svrq=HyKF#`%S!Ov1;`tbn z@9b<8U(zuSgUtK@idZ4Sv&$g2>gm6;is|N+5tt!~X#xK$AP*(1m~ULi&7vP7l~cl& z`9vN0W(HT8%hnYT$WaNfxVHyp^t6ooE+hepdHeLt=_QQm5K5fCZuK~tFx3WKxz@15 zxHEDthSIwXo*byh)I`(F{h?E!@J!eXanYE^>w)7FQEsZU@*bmU5LW6$ z>;|xA*G|A@I8eU=&VUbrFTZujXx|$~Wxm|q1)oXQ64RF8BW_{QzY@6N?KGc~KZwf? z^oi^pJ|E1}U}l|JNmVB{K_U*~>dfFjQj(mXXCv(?qVpS>HApHrpqa&$?beC2e5Yq$ zu?0$;p>gu4>zV1hrpTD9T)qeJIogQK=o#)ZRDymY`&aLM=JP3ytO-f;H#U5ct8r#J zn7r@Eojl(~|M*OCOfl5?JVXnZtJPYQ(R=JRnOSlsYfQoYbZWE~7&0_dcGh)IF>7lv z*zbXVQ@|1-F(Pm~_~3u1zSez9aIJHLMwvCog0#Q)77|sE;)aEv;O&~znaOS4w+k3& z8<*Ks8>;zBSJl}VUd!kRH`yb}JcV#=2{zZJd^BL+6*=66r?^>Y8{OA3$_o(mnJGW6 z^4Fn$o7o*HN-5`~xvuqrh-~zi1gnZ{k@_>A&NxEh=MYO(<}Ip*Y>eZGq;VKz$>48T z^GB{b@j4h*tY7pX5;Ih<;=tE?t%Ng$0n6>u!Ctb0B^M`(k2Pc7mKHb=sd`F}tMnqw zqpO%$M!Uy!uyx&DXj@9jpew%D1lseJVX%<<32;Fjp7DL5TWqWDoO8hT+R(w7ACBv z|4gv1^Km4w^(Air-25z0HzQvWCDB1lYJ?+7#EQK&GH90}rw_SG;=hf$8fyOT4y7W5 z9WfQ4-11#RXF+rcB*(1myNYk7K?yK-ub4tZM2R~}roxuTGp<_3oD}jzh4SJEXKaMC zTR3kWzJ6hz2WC<8vjjtU&B2ytJyBGJxlfflL)fmI>6m2~at&tf8=tAbTNFT3U0cUq zK}~t5Dh}}xWr&`#D^wuY%mc!2V_kXfzE?;jWuD~%OensD_7sbID3uHULE7*|^jGFZ z%YqGa-Bb)?lgOahr*zsB?guC$97V6hn$COZ3obn+%VqWW6hJ|74}F3_)IAaC55)wp zpG7Y@mK`L>a`Yfliqhk(iIK4uJ5#tSgZH}7PQ&iHs2@f28NGR~VY||Ne1YRF zFAShR7+z7JMi+$Fsm8Gr&az~p9_B8U#~Cf%Ba=^0f++IYI3vU~C8eD4!W&55exr1v zKKtunN_yiGAQyoLpc2Y#yVxCU-@(D?O8i9@%Oq&R?pTXFI~MFK`j~Zxj&A z%}<+qz`SuYATGX2Ac9~-b zkvvpS)bBiQHO{yOs})w6g`|-2k4x~NGQZ&`6X@1Pb5qDu4%Z-a6*ArBw_!aXV}b5M znp)>lIdi}m%Wy<)A5R=a2MJenIjJ98DW~S3a$PxL1hKd8(t8u zL#@9OO^}5S_|Hq6f#}rkF0BsN#SeNd{n725yrLLzyR)_uR)O(UYda zC*Sq7e2i74CVQAW@vE8GVBF_EuUar5nArQ*82cfD-ngn{l_a{JMfWCu-T}#+x&w|R zg*HHqDFtw9+)fT4i&a4<5V-p&d=0n``j-)`z%|81qB4o;og2H*X9Gh{?JoRvY#pxAS2vNE=WEO3@ zZJ9l*p4f=n9b*0F0XFL`sF<@Ot(v>6$V-2&8nCliwJ7T2JiJ}kSu~xvR}SR$_*+90 ze3|PcXb-6@=mKH)T+DlHUya!BBPblDuRV;99$uo+?0jjp2k)nYOczNg)tM8CvKF#S z1q8@fVc+i?sxp>1$Yoq#Y&^Yi5J-mTA2fQmiqQpCw=aO}PQdPg!?=>Elrvd>P-Tnu z)H}MymR83lz?HX*n+bZMsJ@zL7^aQKim~sBQAL}mMyybQiz5A7qxWjaMYnRNpC7a* z@i~X_8ZJps=HIh*m5DZze*o*k7wU3aTAf9BFZ1ImPbWOwVf;Et@AVAFuQa;fL|b?5 z7xq^aFou!X6%!9+&F=}OA#QgFiQ;3=+-=DirwYAWAb65B5%w`mKe?`PwbfX{;^#gW0Q2JnsZwT+`^!K%WHxvx z&aVNerVI+{FJS;CYXH7qYc`(3FmYvEs|EBue5q={YlN^4Ob#6`>Z$G z)~c5^rj|iFLCSQOKPp|HA;lY7SXXyq6*Bb?yeH1id}FeCE_6{*2lVCq$SL!vRj9@M zn|tK4P1Gsp$yN+9%*B_`xdI!i43a^84p2ABNr~fPnhE0y;b}Drex~fEg;POz$PHJC zwTTn>fwmRIwg8Cy%h}G7Qifjod-eJzAk=1D3GTwAr{yaI@P=|zyX+%qjV!L+boGR6bY;u333q4}@oSKSf$Z$9do z30y03STZAUH07JCyIQD^?)XzWu_WfB+7;pnZb^Se8&tiZ3RhYVQK*c^@h{htXF$1Q z9A1rllbauR%COX!Da#ZOLO!}0jmcv zEuhz$ICsNqW=ft~%Q(6@N~SwN%>;;ep5HL(+)ufmD&gsCp>8J=a+YY3KdRd`R zRD9yRl^%`;q?sj(h5I}A>8pa~GtxI%n5o8=z4HykS1*_3%6M!aCtTUoifjC8(SPKmjsDD9R`cKPfD_E` znkxFw?VMM@y%$|h7T%64GJ)AJqX53atygAVF91#pu8!)0DL3Ql_Q}ld%M;AmsxdKe zYS&=Y;+X|d#RsAB=YSzmW{GnHbGU4_+#wvEqpLvVCm~wQvgTddzX^T*rpNT|wUoPE zYxRIzC1cY;>q*MzNioJS;P*4w06|{ik7w(OM zKO!0o7a)Tkfq2NmxC#(;zmcRSK{jq3vD)(EyrU z{Y$Rn>+N5i3c{VW@A1h-v=YeJ1xKJf+b zRpQJvuMJ}msw#R}pNZZpZcGC*;fZ2Er$LDx0Q&2OD@9)N;}v~&(cg@uR#>yzi^R_6 zo|woYO#lZ}loAl_0;o6Lxlt?Ie;w~Q2brYOVREN{-T7?Ldp9cBM#vzo3Bl} z3l|gGy=4^_)t02P>!kWIvG12$k?ySMm`DenxDF9Y7gk&hkL&0Fy+cI2elK%q{*}h!FGXfOO`w+)3=z?ZTs6v~OUkYZZ%ql!1^j^Yj9er`_ zhn`356~z3)$(7{^()1jry=p6w+X`Lr3JkD48>-7+#Kx%rZ*c>USksz&=2l%J?W%Ul zbkilN`eQ6(s%vV`IT9|DSiM(0;o zhA0d8GoTWlB%2`G{YSK=laJp>%_;<9Ur-5X82A0MBuU`+@XkT0_mA;^lownEq5|)+ z;6?{_s?6!0a=_gjyWDe#AlE(89d*6;^p-EaX9lk$aFH3*bzBY3+C^-mU)P z*VB|A5T0?8e?Tsq@W?*nu6C|c=S+$=;>~GUHbK?aQZ??Qlm1?g0pAzE3L$S0Se3=Y z|CE&XA~Bw%_E_zW_xfMudbW1oC;7y?Ovv9VpbqTp+$DXxD%Is<*1onQ)vvJWf@@in zm~-Z}?d);dT<;Jt8ePyf2J3mSHT+D;%TMF??ZcCgG%~z_G%{-1pSKM4q8|lSYt(S;sRH&*h5x}|e?Jw35?aviq4{T4 zaAGVb@(Zr6Wy{(_F7lBz%|$)Hwp_0H1&x*Y`&Imc)AUz<_*rN)F*5Q+=&>_IW*%-C zo)Q#5D)Y6cOj_rNiyV4~cVF$hbsN6X`&?YPc{Ox9eV-*Vw|QlZ0cJX9&W~2VX&J82 z51f(e!bnG@r6$=7I-!M=Py_Sea8fNmwrG%@&vk^nO;IW1T0+rlK~9g?YEDZ5VP*in z7{I`i`6Cm{C|12X#_>7=LPeCY{5_Ciz-6O5PGB92Fctx}#Dk4t<%6LJ!@t;Hm03>^ zRs3_Uql60-8ni$RQ>!nQPJl_5lv>Ro-;S}67xkM@B(}s)a{AUJz%n$Cj=rEj5Hl zR@%U?{*#UxB~W-R&ks&T^v$~o=dPfLK@RG5Ko{L(yN`kFoDpU(W0Hcid!wc;lX5n> z1;|~KQk*qP=mKeA%E!vQRx8v*4=e7O3%cZ|dq?Ovhn)Pddb9!2`eA_pK zF9un5CRZv@ch|2QG9RT(+WjgE7y>YIA&+m|3?Hkrl%bAR~1g;5EzZeR7y%s{m4>l*5Q7sB!j}KQU z!fT0hn!5I9Sq$-#Hb#Wi|kUAZeIhD z(m+y`r{qR2>=-48EIBbRkkpTX2+#IBjSHd+H-=adESVxNa~tx}u9l20mM6`jVzUl} zRFC3R(cZ;E@eBCiSN|poM4U%zY>(amM8egQkvi$vrW#Lr3x_?36h+h$7`@zo2(Acb z;@ILQsns}uBq@t%?2U{{By}TtpRTjiVU#a6%7%gtn*0BIivZ`(LB$x-pS=|F@!xYX z4AMZ-uEHrIK8JoP?QzNWAmbmHp z#87a*mMWAJy>>z4Ea|D$rQ=fnymnRf4rEMOanM_MX!jM}MByt3=JsC{S zf@w~hN*@@Jj#fzW8%|6exQM`UYI!xfIRVMhE;4YBmDZQa&vx2^z2pQ5;ol}6AppO1{+|KB zS+Zq-|3t=Lbt>=#H$>(262KE=hC9b^12)3@ob|2OWyYJvB$>i7MFW=vdE>wx#1WrGNw@LlV zVc@xFF4Js0U*lacxc3b4RpfZ~a38ug9=sLyZ}uiG1v%2f&YqhD_s7z1Au=DpW$bhr z)0Ge0&cWSeom7Qli5lM>s>cX93>lVN*4CiEk(k~CSP{RyzoaU4NWZ{BHcC%ZIdY`D}%5vdzdt08satC}nS{zK48@gM?4oQSkelO9q3N6?<|fk9e=Y!tK#^lHpZ zDgS>vIB7FLw+eJCX%pmVS!WGub@Uy!u347?{&UAG)l5jD7?PBZ(5LEp3@?kKR%YIpC9lJ232W?(O_|q!P|#+Q18E4lO(4tZvX5EsjppV zEP!VgBg$A&5$R#Ck(e@f(wLm!YYnBU^5B&C6eP=sN>gcNh73{agtxd!u{YxeX5MKd zk`DOBIWAPuxND^|1Pt?xd}ZX^P56w28e9M2qaU;);%>rAGcNtzq`|D+uc2aTpl#9> zSLR<+?geclxbOxT+Jt89(2q_xw2^OkE%acStZ3jA&KC0K9ayB!fq~}{E`qF&F#TPn zN|&|tsG8OJpe(i9pAX~9SwjlhwSvtRM6Vk|;vSIV;0pl(E!rTY?k#o5?&r`p=|7!x zz$s)>Uhm8kqcfsw%6Ih7+#G#g#sVj?1+a8wG@<|}xh-CeSa*5K3%V9xuf_x?gdN`r zfS?K8etgtF>E*J;T;OPYTa*{cn8=V>|HkN;7h%<^K5uA5v?$edC4JcnB%S3u4E1lHy)@#f0knsR~fm=3On??^nRA^tw ziYvPh8K9%9DOpQ{6?dwNy%vKe+?AB-Syild;Y6u)^eJC#=2pBTd>`|`X3=z!SQ$QO zbzOdbG2d!4uEY`%<^?GQAbfc2qX4G-nr63j_LT# z93BY>&bEw_;S7^#AVqI$dR`@5;PcMaW*~xel)|^~EJr6#t2G(O(AD)w0d{6N?Pka} z7GM5B$qJ;ZkLYV;ti*_NW5gH#lSa@x6Z7 zfFl<&>yt5Dd-qES2nYOZ0by%ER@cBcbK8*d>zlzTo4hG5 zpjvZo--tTWYaN>_o?aJ5CrZ;4K@WU|coZB||z31k& zWPbW9er&L+`IiQ@o3~+o?6M+N2{OexG|gk0d#HG>G0Z!|6ThYVrEyB^bZ=}%2en4} zD^`%!{+dZ;ggHuRSuEOAvGS){(b4moQumH#bu5Xj167`W)JG}IZJnWc%-ok61;gw? zj(prb?mI0AqyaciF6?M`O@wqh5D|o=Jzz-Y>7%@wLGlbhBou-ZY#PH9$8SpoQj98|IU5(fAzBb|6*|5G>Vvayh75H z+wn@a+HJ^LhXiGod7VlUp%z|;?=X?xTq0)af8UUU!x(u^Qh~j^(s_rak+0Wj=SgE3 z2xQ61F95%^?MI7>j8_nqh&}Pt5d`GWP#%oWx zXYa5%%jI9E(6a%)JE(qU8YCL0pS(2Qs3XZLtj|DLJb4l-%bnzJDqUZ=Q{ZY|du9#r zsn-#PrDo%+q1=}%#{&zt*NR_zuaP<^1BY=61ucJCvI&lo=mT;+wXFrw-ts|q4;s{h z7xZacN6%NwIG&@VfNdG+Zzh=NthYY?(26TRpFZig1R=bvTrpp%*%^S8{d!a2LY}^U z2(y9U7==qaIX%9PJ{rmgAhVTa*Y<5+I=b(J_Nvcu?RZ;OU~->Ku!`SQsy457IK|1R zz(os}b{hM;JLB6lePMdC0@Cy>-6#pzTQBm>xz1G*qc4iWp>fLDgI^wqAiygI z6PMV?UUOC}jqm(!ZPcA&uL^cn;|%;h(km{*e$r%Jp@ZleAlBaa`H*_anNox9Bz$y- z>{NE5w#B>b3$R7q=DBuQy@*ZGoyjdB^N|?Pbd%GsU>lq3`I=qxbnAav%wI6pw{A;J zzLYdRax$-)i(vsz4!q9!2VDy2Np{>2@KZ0N!0ij_=j#T6gU?P>r2LZ#U zgU!1+56_45^d+@aZ(ZmO)r=`DKo~7ru`k*Y&&rpIc7>tYfAIg3`g3YAYAKTr;1z0i z4g<)%ce7-|ChK~61U*DigOjcChsoNM!BH4tcOd283N=!OYAbbiUv&Emc;KZSYjUw@ zkv77PQ=n43$9w1l2`AtGHGX{h0wA!;os^gDm@(jq^UJmp#VquU!iiXMCUz-E&96Tp zfCp!{FLszgOYq_MOmqk#N$Qrc^UA)_2Re~VL<-C4!%0^AV_z&K3)SwVtMjmxKU)PV zT0n!XydWcs0`NMUIky@*Hv>8s$ETx$Kz{k_l!tukm@W#gSI%w(ZC?Hhlx7JX6qd6$ zz9T3(otF=~54k^ldKY2|obAq2q+t@kP7Dn3e@|>#?3)9LeHudZ1~bIKvCI6K1oV01 zw>N5V5rx;K>u5Lvh`O6H2X6xFkSfi$Mm5bY*(C2Ff>QF8!E6p%`220~ECV zGi!-HwT)K*{JiHAJkdj_2b=?jcPx`q&hy_$T~>y>u6hbG_R`_CWTI{PfJX?Rk~Yu> zCA=?pWmo)3&a@7(vfS|9GMFS0^$cavS3Usn;&>JK2mN3Li~(j8NTx?m`xGvd3|7Cw zSeMtgWje#=;V!%b18mk3JUY=8Ut09`mL5j?>Db)H8wIpGRaT*g0TNpKC8iE>Oo~J-ccT zW?%AP701dz2ESq=gYQGM6V_|zUI$o2#SOinIp{z>x5;AaoA66fd6no6zHB_R+07^Y z>F}ei{$8LZOuKbVv@tM+2X@)H{;x3(s=IGZ4)%zsQN^;9!!Ih2wbPE!V_|2JxoaiE z48hHe){LBe4mv~$V~?73a&meo)lmkgXj5IIHOp!*XR-@D0|C2K%{aUR)Z8nz<)fzT zzct1G2!Y-<^_4?efN2g&wEP|-;~W_<|9qr7*dvf$q^3u3ojR|Aptj8ex?%`=5NA%N zzpGjrA$s4-=2pe7_?~9i(tFr`pgdRr@5f68siKvs2hN7=aQ%Jj1UqF{nglkS{pJ7~ z6L$<>>-op-gzdQ-T!o0a zz@6$Hy_5bFy3X%jxKEX-&?P%%V<>7|%ULY=;e8_%yGEc=0gcX=FxA+I@|%|oJf|nf zbCr#;xD zDd_3Z6XOx_C57~mibI46xjhat3_t2SKt$FNR8`%FqYm!0tW;uB3h7lX-0Bc7&CV)l z$4>_H%Z;_k~Erh|lFPweV8UaMN9shxF0(h^cQd?WZ^EcB`oNB$t0x_MC2oQXBB9eXuGex?j&4UktvGsZI5Gd z*v|_QoT~OO3jZT66Pm8Xi4;!Ko*&3y5 z5wWT6^2Uo*j+iQ?)*G^IB&c$_pfQ8rHNx3oFU^Qjc@5AdT5UcSf60Bn-8u4I{q4y4 zYW{g3oWf$sPa%!A3*@cR2Cxq~@;;Xbglz^zc3=rPi`A2W<_}1pTis}Wt^Q8xi*pU~ zjH#ym=5iJWrwqQY2EB)PdVtN@^#%g(Run-%1hb?Z z5oZC)WN-%_RQaQg`EUuJTk2R}Wzf1^VScEcydGS(w*e=NfM3K+lGhx9*^w0K?&ObmH|Iue9;Q~ zP`M>-oAYgqm7nI8t$pebF}4KO6wDsKGv&ybvP~a4t2Ob>?OmTJzqz^MjNeH8!tZ&K zrVo#vA~?G|{(k=#60x%^VeD(58q|OQZ=C2W{UGy@p+AOMpZvk~n|WZ6;0IB>t2I;_ z-HS?}qd-JM>Ru>_{GoEI*8e;+`hOk@;|P?`$CBGtvL^BK3|n|M<{vdpY_fHat5fDp zh*c@>7gBZTO4y(~O#=#^cO-hmIK*XAZ@0M`t~t z94)aYy2nJ#K9++LrmCqrh+7xDuc*Sxkf$)%9#TiMvM!b_Hf>urr4LGLG&5a|U4{2_ zpl_32LdH1=?l>75<3K|x>+`pah+E(f`n{P1O2mc@%ZjqT|CPWfO9k(*YU59pzSoX7iXmMAEs)KfBtG4!GAu1{?xJVHb zzIn&N)63^^6FE2Yd%KWj&^}`|+kyVG63=)P8#UW42NkEPe)y;h8SX4hVD~`oc8l~J z)kIVU#RFBhvh9tdB(L7Kk7dE zU=A_G>Te(@FKgilG$H?O(O{Y3I5`p-{tv>ZxpEYw6WJ3PJt6V`a9Nwx%$!nv8ey`Mr_0u`4vzIhY-CXP90mCwVe!Db$^zZ3=f1Hn zFCXu+{Qj93ThJDs@wgm3+>$OHYpPd59`I!`Qer+KAS_2m-t(}NHjBPG`N-XY)wku+ zkQZr>5(VkgzyI$C)&KX@n&rR4Gs6ACn1gXyx31}pz=KWh;gZ-UBLj%Dwd3x$c}7#D z8E!gUp!VU&odJ0rv85d5)CcFXr%0n{UBfFUF9RDZWktAt4Ns9}9Jd8IZVmFMevf-U=3c2MssJXKa ztDvb>){iz~T+|F)Ns;HwE+_ zdV&5iYp}aspAct|o_uL3GwV3t==d z^$?ZxK=$)7^82VQ6w41SHCEZj)uzrZx`IUvx(I7z(!LVH8H0Xg@P1GyvGk#!RYCM{%WCU^J%2c$ zZ5E=Pic}4iaNb0;-8I;>Tzm>=Pn6px`j@wtmkt>DUM1%!r$N3+ls~Z)Atvir_8B*T0Dpps8H1sIVWF4Q95I znY^}iq&%3{rjR`@2>TRMDMtb?!!|Tvt=R*Jq^`7L$Dk`J z^W_$#jGyQL2kWszO2Y){E)U&8~BA_GPi-Ae>xnlCwH^D%^mskf45c%UfsP zgOKXcH8bH3VhtxVl~E&vcsIm?Dd>ePdh@FThO%AT?++na6h&mzAYcPb7a#o#X~Elo(w(A zRMYyh0;=!JU7Ty00>Y#nkil@^gDMpCJYpjXa{T(I!76#rzmJYP&e74@t2OnRi}>%< z|8j%hQ{s?Y<(Y!Hjz7DEfxPG6?xe%I;3;E>dUW6uP3@-DAB4DdozCABhDW2bX2_>W3~jkUq;tG~`fZx8ey^U)WapJtTNR2%3`|wbCP&_}Mbp9*uck5V(I# z!8&@ZGsp^mS3@dpfDoiHF$6Ulc#xoH%k0?SsFdWPE>0IF&L6j0pgf+#qZ`d|L1j&` z;MLKoRl+NgNtConBd5gKE^`C%r;pQvKUzJtX{T@z^*86!oX9(Yl2vY_>{(u`)T$^N z>FfPa|1d7}6F*rp25z)7^c@fh60Q5Q0za#~^mr{Y)r-5y^*$l?mO42t;hniLhn+A3#rt@uuZ|@dz>|pFC%-Nqvc-s0wrV}sj9$4o{wR0-YVI-{UkpPo z?ocO>Eyh?#ey@8BZ-qEkRb@6e!&}?Jqfd4*lDC2xUV63o`Iyz3(9O@*;>MMQ8cCAj zoM>HN^pRI<-r&i5?N*OWcJY%Wqc1|C z$7*%6N2?!VZoTA(hkkvnF)MFLV?~`9ui`p7rMOqBuM!fGX$`B z#kU2(5qWG4-jo=GJ_^g(AQSg-CY3pP zAg0>VwJ1FE_)$mR?gjWxPF$4tdM){&R)*DxL6S!bc#FJ!a_VQAn*TZ#@}pI&f-D1{ z-yi(5QW;tOYOvJIGkDqZZnL2Locy=P*ZB@%N}v{%5FTSr`>l8BP4?@=i0Re0p+HZH z^O)maRouk}l}(12A_LqYG@+QfH(U0?iMS@ef5B@sd9K6%55H4$8T;gj8WlK*u{|8)nRRMx4$%T`<@B+`bse|PIx*|A`7mxVG5oUA3YC`kP$X@?#G^Z*X&k>z=blcvY> zA!<57F4s@a%}$$ft-iZy8}>2S8}nnFoW|Px!M_6s_(@-{Uk2@^=92@*bQJc?!mi0H zMS*6d+WQh2j}n0dv1xi#yTm+sHtn0xMd1eu;ken0K)uE+SKr#3v(J>k<>PFa@x3l> zwxC>{sMq&c+iKQv-WtZ*HqT&Rwx57DX>vw#yfyYnyLhIFmW68n&vtqAw{d>RHQcJW z{*Gixi`Tfv=MP8)LStjp$sR_pyS5x3VLQ8^ii`;^wm4ne0{|>D339LoJAti z)WCFqw7_jSw)uZW{{NHwhC37QpojQw?RJfsIVC$P1X-b5! z0bB%h3npz$w`ZX@ukK+iTJA%WuCPq=9|L-GI*ea0p85z+j>aA1T%Pt*R8m?kkJ&7} z$n>pV{wcx^SbL@s;SOBzOX;eeKV7S+;>Vr67qe#H{69*w3f)Srb8$F+V7X2dH~^ zLjA*-*?Y>s;@%N6B$XD~_ewpWIM$98)%UVbx|JjLAoKeW*EO%7$lESG<4qi#GRJ%W zY|K*>^sNK|l|Y44m#1$lQtE{#nw#{t0OzgtR=gtbGp2Qg=FBJKZR>t|@pP?R!u_c6cC#%R0q|GKqV6tmW@O+S_!v!TADJ-DoiwhfFM zunOkDMIW!oN1OX4+B*y_rtQMn4&EmIC^Az5dl-4u9$GDPGD26TPQPt3Y7SW_x$}F7 zpvTO7WV#atednjY{1&ie$@{Jn<_Q4}30djaw04=W=<6UIL=61m^zKAK!Q43_Rz+Zr z&ksc!=P~SxNBor2Z^*_%s;g3SD0^G?PtSHAh2hZSBf`DC{=%s8YEs;=hm*b+9x8F%iwb_?>sj>&RNM1+D(}IY7JEW_`ti2)L9ojq(+e(tezbPI9 zQMLwxaU4941B8zkZfW~05CtEb1;``eQ5KSiYl2Njtc zNCl|}G?03S>*BobJbbKCW`C?+aU^-on1^}C4Bw`F3~ttsYjhUwX_DIv%!=gwU@lna ztk<3ZmjkTK&C}lN65DQYc^2(2!^d+LPgd%aG6qc2_iiCpxJltIJWj-!4 zG)5!T=ZK{5q`F-^){Qtv;lph{J{;<+SzCV7HjSnGJU&Rmy(30W9i4p$Yq=A+enhG}Em z+YZ;?uueikP%}JkjJ-Qd$tLwd?MIqGLk-qIliVh-qzLa{Tb$13JapMVc^i2-hrjO6 ztCDEeKY%fTT=y&>Evnp+9n%|9dJj^Y5WFo! z`r5^wzAQL6?D&S2AfVA0yEb6g^2_6*UEX>hr_-Mz^a=LF#Qy8)w-WH_lNn0LH8WL? z&=U{;?~t}J2Q9B1wv*dCYa$IIQa2j~g-*pjd15`KXYoxC!m}3mAedOU(7C+;E6mQ^ zpYky7>MZcuP=vhhSXIp7L}xeLNgK7ZOzP|OBjc?rJFC6%Ns`-2`VwpLZTYO#@}3Wv zlfOyZdGb%x^jIF6fb*3gu_TQKVHWzrW9&if?e@k8{YFkOCZhF6h^gg$@L|PfyP0*F z_X-+rE*u&DoNYaq9;Qw{b;-kOuPHS+oxmsFQdPCN=c12=aC@Y#Do%t_E7sy-$19KT zAC4!EhRh08+^5Cxb4SxRvCAH>=8D2jq12w>si93*mFf6mE?ZLW#=WzIIx9vLbfc5^J0gFckF zSm$M(YXE;?J>UFkdi`n2NkTih&IFE2JmHf;L}(w@T%ieNhku%fA4ce#H13Q%EMKfP zDKDoJ>-8-VfpDo+czGdhJ@vVVksF51Z_D|N?0kVjPUc-Oe;HmDz8U5lY#Nt#gUq2- zxR&y1p@QFvv}O=QOTGe>;pTY0SfI_znVnM;te?}it6tcWX9s=@oP|FULg5_xx=hEm zNP>xx1+}3UxA#{5UZ^{kd*-_!ZMOV9^cOF-?}cmT`J8z3YYTePoDHi8Hsv-AC8YROwt@0H%5Bb@!h4bZx(C_d39@%*=rUELEK zE1#}6#28XM9REbB_-RXn#8leW(ucwc;^3s@FFP$!oI07*AVmE520>lFnVdPd`cd9t z;0xW~JTnmQ4EeVAqK1-helKzl&v|U-keYgXwS)$^yNVEwK87lbkaRN$C|v5hwAgD3z%-HLPmPy(V_YwtFykPuPGrBdx>2oadP(vj9N+jKdV-$d(Zx@ zbmfK9o`}S=*Is9)@}{3fD|yNhbLt_|5zG=TsT6}?!5YaRt<+Ilt)IO?U4%ktsIvYL zVNnS6U!~#+ED^Ge&Y5+wRLmF-{40(}eo9Uc;~mV)^foVP-zSP-!0}G30bBDdB88bA zqwtl`1aD^1~n1`eeQ$O ztay@*$c-eYp-R)Igk;Ht1$EnyH=>Sx&&Fe1n=4shrwB3b!o*2cXtC{Mmi~xd=}<;T z%_w&K5XsN8+PC*8dJJsUe%GQ{P{A{E`*hzRv@11E)vH zh0HS0MnIxx-|<)zTc5%1nsE9f=S)+C%ej>Z4LJ=|*~1uh%FoXge>HJ9qpq#= zr9@tUfwfgCjQtAHp6bA!t3nd>0$)wdaUr@K>C5x$jNEtv^2B!@0BjS zj#GWZ^X7Py+Qq=~|Rg+5wNHlRxo<5<6YAD(Ewk zs)z)b>LAQ3{3m*hw`?BfB@7VLW2j;w!Q6U_Wo z)##OIR)zyCIhn&t4@)`_FCoKX?~{(+$PH<6z3@e zN-3cjfBP|wXE^gf3o@KF#eZYGyKJd+*ksV-7OUT3^ptcZk9wDSBhW>3BfuWw?cJM^ zb#opCefiw%x8jE8^kuA#*f#6UFCj)+)ghnWYLZ+R-V+%SZs|{v(Z{ zH`O3xy_qWUy1S>OKEV)at`yX7&5QOYAc)rD^w=;S68dpry5oaH;VZ~YsClcdC{Xj} zu1++r@;vqN&M%kD*JQVgFK_>}!RIz|KFY9>Y1^19c2yX?ZQg)(~U`fma8K7y+$pbV0+{O_LF{WJIvkRI2B`*c9>bd zWd42oD|+MQc|mE9D2lyE#Ah{5(CmY+172tq?!l5Dx82y2MLx0qdS#(l9(0K|EoraUnWvp1H12O~ z9}#RpWqvc$T3ql~PzSu4M+iG^J+JWY*GYhQl;gXxeY?`eOI)7X z+{+<|eTf;2;Bb2)?GHK#x0zL|m_b{$1g-K1a7kYna{gLQ>cUgv^e_@){P~BcRer?X z@z_0GcdomLQv$i;ts6YEajY-!99mVnXiT*=qVD_a#%Xm?Iv<7FKVKd_P47dGWa;ni z0i8cop`$3oWNpZf)96M5uL|^ePlp{gMs5YC!$;Y}c5{#_a&qGyV^!z{Hgm2XM~r_Q zpJL+pSE6WQ$bvUn^taZ64zF@)Tsj(`nL9!8H4evDo=##io2?YW5?5_0gUx5L~F)*|8d1rlQCij08Ot_joQeN9+*=22=+nVb#Vnf2yH=k(Ug%R%_ z4mb>d;GXp@8uS1AbGwo5>(mwCAl8KpKQUT#@Wok;J#KSplC3?T8*_yvakkf+!e$he zgTm4k6;gUTINaSA8_8z5yMGSq#}26+2|mbq^424u;JIhhYyH9i)|o17#3M;=!Id+Y zSU75Vca*wt#cq5G2up0__?SMp0~oJaQn5ZmutG@tOxtPQ^!gW54Oh4FR%myH&ci(& znf~ax^RBFj#!s|?p}?aw=JMZ|dlVJ33l$$Uv)TU}17MQzJ2~~j zMzaFql^*z0pGMO2xTat}%dUt?YT7w$X3JJTutt{Ly-ezA65}VAx#bJGF3m@ioiMx% z5~Pe)^?iKp5oNv$BYEV!Gs^|udsEDZkk!3nBC5(z@80kXkG5|RMF)28p zQp;B3Ii5ZRISl1}x?duC*cjHR2-%K-C-z`Osj^Y0b%cDo6Hf76*waQDZk(4)k;T^k z#U7Z>)QuQZUx?bV(}oXXXzRxSY?sw5Le}rG0r*`347;wvbC=AOxFegT7uo;e8^eu8 zi)QYee59PA%(&1u+ODm3M3az1r7D}9$3IA!7^Ri^^=`c*+IQ2gW;)keRRH~5eIlFD zau>dwYx;0J?zz*#;~OEiOUE*(=;&}$Su@(PM%%G$wN|u5E?&}SDW}VgpwaeFb;%H| zELOvdh8R6|7lG?&@K;1H+o6ccHm0^B-uJ)m+=+<4w)RJY$~(^v+Ew(~_Yl2+H`3F% zd*Q**>0XRPKjkol8vxcxBOPR<%9M-g9OWfTw|;sf?ylP1vo!?M_W=?J%)*A&3Gx4T z^T`<+q~Raq1|t#L3y*Y+kc8UcMu4BfgRvJX?Rsg&%vX62hIT6K3fku;do&040ns;- zi%4+xI@ninUqEWJ_fwU8srDW){{$Wd901Uc9v0s@oYlv26>LL#XEDM?oQ6J@Dte)i z)9J9cTc<*cwPZtaA-hmsp}rWy2H)D_pq zba4|sOhn*5)1E$nzP=U;;LAR>RZ(eBd~8xB>2u$1MTN#$BlFclc=e^t8XzA`R~`=) z>uQylj9pU}=6Fo+n|eo2;C}2%I7r{Tx^{VAJZk!yU8HAePt+!1`bhi#AaK#2P%YG; zUnAED8GgJ!dtU9v$Wj`xl2B#_-_c`DCLHTk<5PLSO&6~g` zQ$#A(gRLpff{*e?hcNdthKd)rB(x;>q<4=ZM($TA7v{ie zm!Or71Zb!Ij4g~&Ro?ClfP=4I*t?ckDBJtdo8$YS8DbkyB+u6Apzd_MoDABva%=`2 z5`G=+unSq-41LZXwGUbXrr3rFFz`4fWHQhdR7i-DnBCd8RXKe@^r3bDSxYN2`BXjV(f?^lY)wP+{wj}JD_;CP zJzc&KF|F@PHkld14hR7WH=8l%=?~ZAI~xNP;-RDfdC#$0(L?f6HElNY77Lp?6Sn4KW~0uoQ3>f=r`%%cSDAZEno-!qGhF8hQmixYl8A zJGuGdlZk^6&R**m!5HxwTXCsd6Me(l{Ifsh#_UuR_8GqhJ@&CTzz8RGw-Zy~Wzat2 z)mM%MBHKA`H!zg$azklKxhRQ0&$dGwQkCaizF?%wW&7(1ZjMt0)JZJs;Xsiu8;hAG z8g|6fOyi;|EBuXrM(%vg5!3BWJ8gdF{aLn2kmZKMi76fXCE0!x(y?rjbmK@?(gd?p zrizk-%UQdDi*KkXA{FS<+J2|)T3NY##AV!uj;AM8rC4On7({bf4CO}49RPduUD&dN zh1V-d=e&j5!uR|SO47VrunZzp-+g+j5XNFpXK=FN0l4>dTcsXdiDoNHRb;OTcbp2U z#8dvxeHh>gUc62I;+MBbH{4f%pe>q>H=Nun9e>xX_x7c5r~&J+-qsi*lzC7LFRQ!A zmhEYI=^pX(d0wWH-}QOU`~>ION81^fsVkr0VULKRLZhzzZHCnc78`^Zbi_Ph)y`s< zTn}&puPP{cOWKLzCUhjgm3^zibEStIMnSr%Gomx+lgo-0p4mxNjk@i zev=Zg9R3^?NcY8;U8eTKCm=x!WgMKs5CG<8_^d#(b`m^3ZNIg*zxi&+q#`QZA|C0l zls$18y4EE|MlBV(GZhk@f2hGs5Nbr@v2OUW+dJ1COMdpo`XOMdJ?4hO4#4oTC**~P z7(84lqJyFOYUzVt-p_N+9L0Yp3^*Q^<<60L%>tfAApU2=P4-=`&lym{L zToDWT8qJMWiTSAmP* z!?6pFU9VNpPfYle&m-K5;#T9%7bKn53Oe<(!kk9s6)j196Nm`fsIYNpQ|+3vfi6SI z@WbIqIn$NR(FE?ya^K@iY*WpW%WD|Hb~+7`i`U4i@9%6JYj$PDdIcPRL~T|o*Uq4~ z5;krCg6TYZLafG`J3ZGMK9Hy$&fjq;==$iNkO_H10A{(EvAOA`vN1PkdwnD({fH zZ-+k`jUL+acD@$jE-#lf^u5@Kv_TecL2OXZzF|2Wlw{BGz1vMh+#@dk&GaEW*JqP- zrizV$r&k~mKb&K<8_E_WpGk9RQPU~cq*$z&VzgyobZQq3v5v#YbJL{R$wqy~M)&Pl zIi@Fpth5-!dHxO zZHb?^9^qI(a4oj&w3VXU^d@L*FpaYII{KV7P#j17tm#W^Ls}h5H_6I`YQ;2pZ+Z8T zzcaq<-aX3j(b>2z z%4t>|yBwsg^lyL+S{NQc? zvVrwc3jTDaRKMQa-@LvqLCr)IZ9Sgn&);LcgNW23Zo=f%4U-W9n+?%yN1=pIyyllN3a;&cN%eCzrB#JNhY$eTXiXv08>Z-F!<1_jD}=4cZsTQzvm-VYb(SE+ zia7m)e8#@9!b0+A#R~{>rC6<1M5;Z|{SsidQ&9n>qV`CW(|Jl&*72p!9pz{vf4=@v zWfy@WtwHOlXY561FTs*V{aGF8-G}hgc)RsGLcl(7W&gwdFx^J5*0K*kKvqZ;!WND@ zF}@5c36mvXS#2R_O){^6IG`C_;JIC}oE8ynhgk_(Y-zeO(DHe1ciobZBg~&c6CjHw z?aeb){W|D7hQE~UsP+A8;RU&@I+uX85ibP^Nh2uj-Vd!8e~;rZ`dWHGNNJ6LPFzMD z)+abof2#YjGuIeH>`u#4;)^bOsXt65-aeEHZGJtS_rQMJ(ZD&E)cAz9k z=&x407t+mC^}3bR0r*q4+o;gBV$GPuHR8hf2bF_gEt2t9tsYyek{?{ofdTWN^r1f@ z{|ZV`?ZOTlv+L61l%nf?a>dxP7%0X)T4X7@9o@%vW?mT^Wbf&3z8^Xkakk5Tz#EY` zr@EkpXI%gp$k*~;%*b)0?yauTf}%(JG?LG}0Bx`bBwYir(k^R19Aq5V2M)kksT?-$ zaJI*z)Dfx*zS_vfi&}>Irg#EDYt)=k{s*E$0uN_S=TzHke#gU>Z$(%yY^zxdsL2Z; zUCq`7FjAq`U-7N)*|*A1rzvY!X+ZkM-_JYjEYoX?OnR9z&;buk_{ zW2P(HesJ8z9-u?|T5W?23lMAVFFe24*JV`p+7Vc-vH!Rc_9Wn=wbjOUQQfXiV6{|i z6uI`H+SOVrcq-0*OBeyb*gs-DcESpF&HbU<3r~j3T^T6|Zn4#$^5)D2s6M+m;xgwh z_ZmcbDYzJVNztO|(;|}W>rnI5P-3bAWT?6wczIJ{(EX)AJmU;mS(@-{+(fqttF zDkF{50L#~UqL%w?G>yUm5jxw)7?|XZxDmXwz=c51%sJySTOo4C%(%>KT(H)B*``8U zW9f&DM>T)u-j4xZNDpRiNWTsckeO?pf2C!MNd0VW)~ZRJ&~FGV{XYmOBMX;ZIJO7UCxYLF+~Y7vi6)t%>{l$!xZ)46n3MnpNTV$XK{f>DLU z+o4QJS7nadTl3`h2en*9-^lrKa!>p}Xh zLO~o4Z!9QPqLM_a2yn@z#dS0QufZ~>miEEeIAk$i=^bX%uF5~8Z&4XY$nLi(--Q|e z=%G75A0eL=z&I0JAp1Y=jSxS7@f}my`+PA zC(!6z>Qdu<8N-_(0xNd|HRP$;4<-okpOQ!=`~O?`x3#4L4#Jh5vs$77YK0o|RQP=C z3GorFXf4a;i+O%q1}F<5!0<*}_@==~DAQxve_1wLXSFdDvJjcSwPj7`uyAtJkTTo4 z2GHf?*^k2#@OjH?Z}x>b1jxY8K~$^=*4(*r3@4{J80-9%tc5`38TKd}oy#zpBGV5+X<+o9 z+W`o7{z<~pi00RPZoiF!U|A^k-yfTQZWGc#ws$rFzqVkjn)BRbUve_o2(0zxVG5=2 zl$+e)FGmBXr_uB4q~*#nOH|&qC>j+r!{3;NcP-=29LKxW{Y3N!(q?O~c)zYK;p}8i zKe(M>wCSJR;Ind&W$dbanLE5Qd5dVtiw?TR?QQNqD`V301W=(H^$?WQzw{@ftpMDb zwmaXxNcT&SCf8B_xPn&L40HO@Ir*mHLF5!7f_?z?Y~c!aC4mxD%JN>^x(aJw8U-sVyxsqTfujy%V0nmgeitwk+W^HY z4_)4ei+JRt%D&*(^lVu_WfTyH%ZVWOdn__T;O&0O9C*8_R=g@WH?s>{`#Ot^z|n8Q ziptg|RMOx6t%+Zwfb%Z$=a#J`rGulG_HUS+yxVwp6Pj@ORP@SWyB4^+&pU|>ctpqy zZM2tAhy*_Sn{$s*K|^z?nOM64Q`lDQ)#0zW18m=Mye+&DLT?9ama`+P%Qul8quaIK z(JC(>+9R?DtSj8Io>XsXVvKl0+A-LlTGM8JMOmY(K94P1c{3|W>$K4>$5*oy#9u6} z=xm^(4vl6F!b|Kc?58Fbaf}g^Limfcb5@ACA@xJTpw!aseZ}aELMVF*aUkj^_IC76 zLed<)F7)(Xk+848EOD~HvOIQ2Z|lmS>v%(-69}rO+zXtSbJ@04+L4OTb88Uv@u@TV_qdMDW(QW;e0W^~y-tz|%S2YnxKyvvkT?FGIjMPL|cz z!{Y}I{2;I*P%TT+WQ^roE)Yst&mlH28o8Np8z?>4%95Tjyz=GElgm}W;YsfKb;{C& z%0A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�WGWsq<}nCZ9Q`&O^vkJ>wRPx93J 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 literal 0 HcmV?d00001 diff --git a/.wintergram/icons/manifest.json b/.wintergram/icons/manifest.json new file mode 100644 index 0000000000..e34aa45067 --- /dev/null +++ b/.wintergram/icons/manifest.json @@ -0,0 +1,51 @@ +{ + "$schema": "manifest.schema.json", + "version": 1, + "canvas": 1024, + "badges": [ + { + "id": "developer", + "description": "WinterGram developer", + "peers": { "users": [885166226, 5665997196], "channels": [] }, + "priority": 100, + "layers": [ + { + "name": "backplate", + "source": "developer/backplate.png", + "x": 0, "y": 0, "width": 1024, "height": 1024, + "tint": "theme", + "animation": { "type": "rotate", "duration": 8.0, "direction": "cw", "loop": true } + }, + { + "name": "icon", + "source": "developer/icon.png", + "x": 134, "y": 134, "width": 756, "height": 756, + "tint": "#FFFFFF", + "animation": { "type": "none" } + } + ] + }, + { + "id": "official", + "description": "Official WinterGram channel", + "peers": { "users": [], "channels": [3943351959, 4316373875, 3999337820, 4348385636] }, + "priority": 50, + "layers": [ + { + "name": "backplate", + "source": "official/backplate.png", + "x": 0, "y": 0, "width": 1024, "height": 1024, + "tint": "theme", + "animation": { "type": "rotate", "duration": 8.0, "direction": "cw", "loop": true } + }, + { + "name": "icon", + "source": "official/icon.png", + "x": 134, "y": 134, "width": 756, "height": 756, + "tint": "#FFFFFF", + "animation": { "type": "none" } + } + ] + } + ] +} diff --git a/.wintergram/icons/manifest.schema.json b/.wintergram/icons/manifest.schema.json new file mode 100644 index 0000000000..ac7b6625ee --- /dev/null +++ b/.wintergram/icons/manifest.schema.json @@ -0,0 +1,93 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://raw.githubusercontent.com/reekeer/WinterGram/master/.wintergram/icons/manifest.schema.json", + "title": "WinterGram dynamic badge manifest", + "description": "Layered, GitHub-driven WinterGram profile badges. Geometry is in canvas units (default 1024) and scaled to the render size.", + "type": "object", + "required": ["version", "badges"], + "additionalProperties": false, + "properties": { + "$schema": { "type": "string" }, + "version": { + "type": "integer", + "minimum": 0, + "description": "Bump on every change so clients pick up the new manifest." + }, + "canvas": { + "type": "number", + "exclusiveMinimum": 0, + "default": 1024, + "description": "Coordinate space for all layer x/y/width/height." + }, + "badges": { + "type": "array", + "maxItems": 64, + "items": { "$ref": "#/definitions/badge" } + } + }, + "definitions": { + "badge": { + "type": "object", + "required": ["id", "peers", "layers"], + "additionalProperties": false, + "properties": { + "id": { "type": "string", "minLength": 1, "description": "Stable identifier; \"developer\" is treated specially (developer badge)." }, + "priority": { "type": "integer", "default": 0, "description": "On a peer matching several badges, the highest priority wins." }, + "description": { "type": "string", "description": "Text shown when the badge is pressed." }, + "peers": { "$ref": "#/definitions/peers" }, + "layers": { + "type": "array", + "minItems": 1, + "maxItems": 16, + "items": { "$ref": "#/definitions/layer" } + } + } + }, + "peers": { + "type": "object", + "additionalProperties": false, + "description": "Raw int64 ids. For channels use the part after the -100 marker (e.g. -1003999337820 -> 3999337820).", + "properties": { + "users": { "type": "array", "items": { "type": "integer" } }, + "channels": { "type": "array", "items": { "type": "integer" } } + } + }, + "layer": { + "type": "object", + "required": ["source"], + "additionalProperties": false, + "properties": { + "name": { "type": "string" }, + "source": { + "type": "string", + "minLength": 1, + "description": "Path under .wintergram/icons/. .png/.jpg -> raster layer; .tgs/.json -> native Lottie layer (then 'animation' is ignored)." + }, + "x": { "type": "number" }, + "y": { "type": "number" }, + "width": { "type": "number", "exclusiveMinimum": 0 }, + "height": { "type": "number", "exclusiveMinimum": 0 }, + "tint": { + "type": "string", + "pattern": "^(theme|none|#[0-9a-fA-F]{6})$", + "description": "\"theme\" (accent), \"#RRGGBB\" (fixed), or \"none\" (original colours)." + }, + "animation": { "$ref": "#/definitions/animation" } + } + }, + "animation": { + "type": "object", + "additionalProperties": false, + "properties": { + "type": { + "enum": ["none", "rotate", "blink", "pulse", "bounce", "shake", "lottie"], + "description": "Procedural animation applied to a raster layer. Ignored for Lottie sources." + }, + "duration": { "type": "number", "exclusiveMinimum": 0, "description": "Seconds per cycle." }, + "loop": { "type": "boolean" }, + "direction": { "enum": ["cw", "ccw"], "description": "Rotation direction (rotate only)." }, + "amplitude": { "type": "number", "minimum": 0, "description": "Strength for pulse/bounce/shake (fraction of layer size)." } + } + } + } +} diff --git a/.wintergram/icons/official/backplate.png b/.wintergram/icons/official/backplate.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2ce3d24a903b7b3f414464d6a64febdb96cbbb GIT binary patch literal 81276 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 z%0A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�WGWsq<}nCZ9Q`&O^vkJ>wRPx93J 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 literal 0 HcmV?d00001 diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000000..8595afc783 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,163 @@ +# AGENTS.md + +This file provides guidance to AI assistants when working with code in this repository. + +## Build + +The app is built using Bazel via the `Make.py` wrapper. There is no selective per-module build — the only supported invocation builds the full `Telegram/Telegram` target. + +**Convenience wrapper:** `scripts/build-wintergram.sh` wraps the Make.py invocations for the WinterGram dev config and emits WinterGram-named IPAs in `build/`: `sim` (simulator), `sideload` / `livecontainer` (device), `all`, plus `--install`/`--run` (simulator-only: build + install into the booted Simulator), `--clean`, `--open-build-dir`. It sources `~/.zshrc` itself. App icons are regenerated from `branding/wnt-app-icon-*.png` by `scripts/generate-app-icons.sh`. + +**Raw command (canonical):** + +```sh +python3 build-system/Make/Make.py --overrideXcodeVersion \ + --cacheDir ~/telegram-bazel-cache \ + build \ + --configurationPath build-system/appstore-configuration.json \ + --gitCodesigningRepository \ + --gitCodesigningType development --gitCodesigningUseCurrent --buildNumber=1 --configuration=debug_sim_arm64 +``` + +Add `--continueOnError` after `build` (forwards to bazel's `--keep_going`) when verifying changes that may surface errors in many files at once — it lets the full set of errors land in one pass instead of stopping at the first failing target. + +The build needs `TELEGRAM_CODESIGNING_GIT_PASSWORD` in the environment. It is set in `~/.zshrc` but Codex's bash tool does NOT source shell config by default. Prefix build commands with `source ~/.zshrc 2>/dev/null;` to pick it up. + +## Code Style Guidelines +- **Naming**: PascalCase for types, camelCase for variables/methods +- **Imports**: Group and sort imports at the top of files +- **Error Handling**: Properly handle errors with appropriate redaction of sensitive data +- **Formatting**: Use standard Swift/Objective-C formatting and spacing +- **Types**: Prefer strong typing and explicit type annotations where needed +- **Documentation**: Document public APIs with comments + +## Project Structure +- Core launch and application extensions code is in `Telegram/` directory +- Most code is organized into libraries in `submodules/` +- External code is located in `third-party/` +- No tests are used at the moment + +## Embedded watch app (`Telegram/WatchApp`) + +A standalone watchOS Telegram client (developed in the separate `~/build/tgwatch` repo) is vendored into this repo at `Telegram/WatchApp/` and can be embedded into the **device** IPA under `Telegram.app/Watch/`. It is built by `xcodebuild` (not Bazel) and codesigned by the Bazel build. + +**Build it:** add `--embedWatchApp` to a Make.py **device** build (`--configuration=debug_arm64` or `release_arm64`) together with `--watchApiId`, `--watchApiHash`, `--watchSigningIdentity`, `--watchProvisioningProfile`. Off by default (it adds a ~4-min xcodebuild step); simulator builds never embed, and the default `debug_sim_arm64` build is unaffected. + +**`Telegram/WatchApp/` is a synced snapshot — do not hand-edit it.** The source of truth and dev tooling live in the `tgwatch` repo. To change the watch app, edit it there, then re-sync with `tgwatch/tools/export-sources.sh /abs/path/to/telegram-ios/Telegram/WatchApp` and commit the result. The committed `tgwatch.xcodeproj` is generated (kept via a `!tgwatch.xcodeproj` negation in `Telegram/WatchApp/.gitignore`, since the root `.gitignore` ignores `*.xcodeproj`); `.build`/`.swiftpm`/`xcuserdata` are excluded. + +**How it's wired:** `//Telegram:TelegramWatchApp` (rule in `Telegram/prebuilt_watchos.bzl`) runs in **two actions**: `PrebuiltWatchosCompile` (`Telegram/prebuilt_watchos_compile.sh`) runs xcodebuild on the snapshot in a writable temp copy with PLACEHOLDER version/api values (the bundle ids are baked from the snapshot's pbxproj/Info.plist — `ph.telegra.Telegraph.watchkitapp` / `ph.telegra.Telegraph`), emitting an unsigned `.app`; `PrebuiltWatchosPatchSign` (`Telegram/prebuilt_watchos_patch.sh`) then rewrites **six** per-build Info.plist keys (`CFBundleShortVersionString`, `CFBundleVersion`, `TG_API_ID`, `TG_API_HASH`, `CFBundleIdentifier`, `WKCompanionAppBundleIdentifier`) and codesigns the `.app` + nested `TDLibFramework.framework` (identity + the watchkitapp profile from `--define`s). The result feeds the `Telegram` `ios_application`'s `watch_application` slot (gated by the `//Telegram:embedWatchApp` flag). The rule takes `bundle_id` (set to `"{telegram_bundle_id}.watchkitapp"` in `Telegram/BUILD`) and derives the host bundle id by stripping the `.watchkitapp` suffix; both are passed to the patch worker as args (not action inputs), so the patch action re-runs when the host bundle id changes but the (expensive) compile stays cached. **The compile action's only inputs are the snapshot (+ its worker)** — so changing the version, build number, api id/hash, host bundle id, or signing identity re-runs only the cheap patch+sign action, not xcodebuild; xcodebuild re-runs only when the snapshot changes. This is correct because none of those values reach the compiled binary: each lands only in the Info.plist (via `$(...)` substitution and a runtime `Bundle.main.object(forInfoDictionaryKey:)` lookup in `Secrets.swift`, except for the bundle-id keys which only Info.plist consumers read). + +**Non-obvious invariants** (also in the `.bzl` comments): `AppleBundleInfo`'s public init is banned — use the internal `new_applebundleinfo`; `watch_application` requires BOTH `AppleBundleInfo` (with a non-None `infoplist` File) AND `WatchosApplicationBundleInfo`; the embedded watch app's `CFBundleShortVersionString`/`CFBundleVersion` must exactly equal the host's (sourced from `versions.json['app']` + `--define=buildNumber`); the host does NOT re-sign the embedded watch app, so the worker must sign it; the watch bundle id `ph.telegra.Telegraph.watchkitapp` must track the host `telegram_bundle_id`. + +**Status:** verified with **development** signing on `debug_arm64` only. Open follow-ups before App Store shipping: secure timestamp (drop `codesign --timestamp=none`), distribution profile (`get-task-allow=false`), `release_arm64` + `altool --validate-app`, and committing a `Package.resolved` for hermetic remote-SwiftPM resolution. + +## View frame ownership + +A view does not control its own `frame`. The parent (or a layout system) sets the frame; the view positions its own subviews against `self.bounds` in response. + +This matters in two places specifically: + +- **Reusable components (`UIView`/`ASDisplayNode` subclasses).** Public methods like `update(...)` / `apply(...)` rebuild internal state, mutate child frames, and read `self.bounds` to lay them out — but they do not write `self.frame`. The caller has already chosen the frame; mutating it from inside the component overrides that choice and fights the parent's next layout pass. +- **`asyncLayout`-style content nodes.** The measure pass runs off-main and returns a size; the apply step runs on main and the chat layout system positions the node. A child view that writes `self.frame` from `update()` corrupts the size the parent just measured. + +Rare exceptions: top-level view-controller views integrating with the system's first-responder/inset model. If you find yourself wanting `self.frame = …` from inside a child view, refactor so the parent positions it instead. + +## InstantPage V2 & rich-text messages + +Typed markdown with structure the regular message-entity set can't represent (headings, lists, tables, formulas, nested blockquotes) is sent as a **rich message** — a `RichTextMessageAttribute` carrying an `InstantPage`, drawn by `ChatMessageRichDataBubbleContentNode` via the **InstantPage V2** renderer (with AI-streaming progressive reveal, inline custom emoji, and entity cases). The detailed architecture and non-obvious invariants — streaming reveal, V2 table/text-box layout, custom-emoji & entity round-trips, task-list checkboxes, nested blockquotes, thinking blocks, the markdown send / edit / copy / paste paths, and surfacing rich-message media through the shared-media/gallery/preview pipelines via `Message.effectiveMedia` — live in [`docs/instantpage-richtext.md`](docs/instantpage-richtext.md). + +## Postbox → TelegramEngine refactor (in progress) + +A gradual migration is underway to eliminate direct `import Postbox` from consumer submodules in favor of `TelegramEngine`. + +**Historical record:** Wave-by-wave outcomes, the running tally of Postbox-free modules, the full wave-selection guidance, and the `TelegramEngine.Resources` facade inventory (also authoritatively defined in `submodules/TelegramCore/Sources/TelegramEngine/Resources/TelegramEngineResources.swift`) live in [`docs/superpowers/postbox-refactor-log.md`](docs/superpowers/postbox-refactor-log.md). Read that file when you need wave-specific context, a full worked example of a pattern, or the history of a particular module's migration. + +See the log for per-wave detail; the current wave count and the list of still-open migration opportunities live in the `project_postbox_refactor_next_wave.md` memory file. + +### Rules that apply to every wave + +1. `TelegramCore` does **not** `@_exported import Postbox`. Once a consumer drops `import Postbox`, every remaining Postbox-type reference must use an engine-typealiased equivalent. +2. **Never typealias `Postbox`, `Account`, or `MediaBox`.** These umbrella types rename without encapsulating. Narrow utility typealiases (`MemoryBuffer`, `PostboxDecoder`, `PostboxEncoder`, `AdaptedPostboxDecoder`, `MediaResource`, …) remain allowed and expected. +3. No new engine wrapper **structs** unless the wave's spec explicitly allows — only typealiases and thin forwarding methods. +4. **Discovery first:** before adding any new engine wrapper/typealias, grep `submodules/TelegramCore/Sources/TelegramEngine/` for existing equivalents. Record the search result in the commit message. +5. **Abandonment protocol:** if a module can only be refactored by violating rule 2 or by editing a module outside the current wave's list, mark the task Abandoned with a recorded reason. Do NOT substitute a new module mid-wave. +6. Full project build per module. No unit tests exist in this project. +7. **TelegramCore never imports UIKit/Display.** `TelegramCore` is shared with the Telegram-Mac codebase; its Bazel `deps` and source files must not reference UIKit, Display, or any Apple-UI framework. UIKit-needing helpers (image scaling, rendering, etc.) stay in consumer-side submodules. +8. **Never substitute Postbox protocols (`Media`, `Peer`, `Message`) with `Any` / `AnyObject`** in code that previously used them. Type erasure throws away the domain semantics that the next reader expects. Use the matching engine wrapper (`EngineMedia`, `EnginePeer`, `EngineMessage`) — extending it as needed (e.g. add a missing case-init or convenience). If neither typealias nor wrapper covers the use site, restore the original Postbox import + type for now and flag the case for a future facade. Existing `Any`/`AnyObject` parameters predating the refactor are not in scope for this rule. + +### Engine typealias cheat sheet (existing aliases) + +``` +PeerId → EnginePeer.Id +MessageId → EngineMessage.Id +MessageIndex → EngineMessage.Index +MessageTags → EngineMessage.Tags +MessageAttribute → EngineMessage.Attribute +MessageFlags → EngineMessage.Flags +MessageForwardInfo → EngineMessage.ForwardInfo +MediaId → EngineMedia.Id +PreferencesEntry → EnginePreferencesEntry +TempBox → EngineTempBox +PinnedItemId → EngineChatList.PinnedItem.Id +MemoryBuffer → EngineMemoryBuffer (added 2026-04) +PostboxDecoder → EnginePostboxDecoder (added 2026-04) +PostboxEncoder → EnginePostboxEncoder (added 2026-04) +AdaptedPostboxDecoder → EngineAdaptedPostboxDecoder (added 2026-04) +ItemCollectionId → EngineItemCollectionId (added 2026-04-20) +FetchResourceSourceType → EngineFetchResourceSourceType (added 2026-04-20) +FetchResourceError → EngineFetchResourceError (added 2026-04-20) +StoryId → EngineStoryId (added 2026-05-02) +ChatListIndex → EngineChatListIndex (added 2026-05-03) +TempBoxFile → EngineTempBoxFile (added 2026-05-03) +ItemCollectionItemIndex → EngineItemCollectionItemIndex (added 2026-05-03) +ItemCollectionViewEntryIndex → EngineItemCollectionViewEntryIndex (added 2026-05-03) +ValueBoxEncryptionParameters → EngineValueBoxEncryptionParameters (added 2026-05-03) +MessageAndThreadId → EngineMessageAndThreadId (added 2026-05-03) +PeerStoryStats → EnginePeerStoryStats (added 2026-05-03) +MessageHistoryAnchorIndex → EngineMessageHistoryAnchorIndex (added 2026-05-03) +ChatListTotalUnreadStateCategory → EngineChatListTotalUnreadStateCategory (added 2026-05-03) +ChatListTotalUnreadStateStats → EngineChatListTotalUnreadStateStats (added 2026-05-03) +PeerSummaryCounterTags → EnginePeerSummaryCounterTags (added 2026-05-03) +ChatListTotalUnreadState → EngineChatListTotalUnreadState (added 2026-05-04) +ItemCacheEntryId → EngineItemCacheEntryId (added 2026-05-04) +HashFunctions → EngineHashFunctions (added 2026-05-04 wave 251) +CachedMediaResourceRepresentationResult → EngineCachedMediaResourceRepresentationResult (added 2026-05-04 wave 265) +MediaResourceDataFetchResult → EngineMediaResourceDataFetchResult (added 2026-05-04 wave 266) +MediaResourceDataFetchError → EngineMediaResourceDataFetchError (added 2026-05-04 wave 266) +MediaResourceStatus → EngineMediaResourceStatus (added 2026-05-04 wave 272) +``` + +**Free-function thin forwarders in TelegramCore** (rule 3 allows): +- `engineFileSize(_ path:, useTotalFileAllocatedSize: Bool = false)` — forwards to Postbox's `fileSize(...)` (added 2026-05-04 wave 268) + +**TelegramEngineUnauthorized.resources facade**: `UnauthorizedResources.storeResourceData(id: EngineMediaResource.Id, data:, synchronous:)` — bridges to `account.postbox.mediaBox.storeResourceData` (added 2026-05-04 wave 271) + +For the `MediaResource` Postbox protocol, prefer the TelegramCore subtype `TelegramMediaResource` when the consumer's usage allows (note: `EngineMediaResource` is a wrapper **class**, not a typealias, so it is not interchangeable with the protocol). + +### MediaResource → EngineMediaResource consumer migration + +`EngineMediaResource` is a `final class` in `TelegramCore` wrapping a `MediaResource` value. Unlike the typealiases above it is **not** interchangeable with the protocol, but it does provide wrap/unwrap helpers: + +- `EngineMediaResource(rawResource)` — wrap a raw `MediaResource`. +- `engineResource._asResource()` — unwrap to the raw `MediaResource`. +- `EngineMediaResource.ResourceData(rawResourceData)` — wrap `MediaResourceData`. +- `EngineMediaResource.Id(rawMediaResourceId)` — wrap `MediaResourceId`. + +**Pattern for facade functions:** when a `TelegramEngine.` method leaks raw `MediaResource` in its public signature, **change the facade signature in place** to `EngineMediaResource` (and change any closure parameter types the same way). Bridge inside the facade body by calling the existing `_internal_*` function with `engineResource._asResource()` / wrapping raw inputs from inner closures with `EngineMediaResource(rawResource)`. Update all call sites in the same commit. The `_internal_*` function stays on raw `MediaResource` — it is the Postbox-facing layer. + +Do **not** add opt-in `EngineMediaResource` overloads alongside raw-`MediaResource` overloads. Duplicate signatures fragment the public API and leave the leak in place forever. + +For consumer modules, prefer `EngineMediaResource` as the type in properties, locals, generic arguments and function parameters when the usage is a pure type reference. Do **not** try to use `EngineMediaResource` where a class must conform to `TelegramMediaResource` (Postbox protocol) or override `isEqual(to: MediaResource)` — those remain `import Postbox`. + +## tgcalls Testbench + +This repo includes a tgcalls testbench (CLI tool, Go/Pion SFU, Docker build) layered on top of the iOS source. All testbench code, build instructions, and architecture docs live inside the tgcalls submodule: + +- `submodules/TgVoipWebrtc/tgcalls/AGENTS.md` — top-level testbench overview, build/run commands +- `submodules/TgVoipWebrtc/tgcalls/tools/cli/AGENTS.md` — CLI test tool architecture +- `submodules/TgVoipWebrtc/tgcalls/tools/go_sfu/AGENTS.md` — Go SFU internals +- `submodules/TgVoipWebrtc/AGENTS.md` — tgcalls library internals + macOS/Linux build patches + +Build the test binary from this directory with: + +`./build-input/bazel-8.4.2 build //submodules/TgVoipWebrtc/tgcalls/tools/cli:tgcalls_cli` diff --git a/Telegram/BUILD b/Telegram/BUILD index 4231b24d96..c4797fe958 100644 --- a/Telegram/BUILD +++ b/Telegram/BUILD @@ -160,7 +160,7 @@ genrule( ], ) -minimum_os_version = "13.0" +minimum_os_version = "26.5" notificationServiceExtensionVersion = "v1" @@ -1850,7 +1850,7 @@ ios_application( xcodeproj( name = "Telegram_xcodeproj", bazel_path = telegram_bazel_path, - project_name = "Telegram", + project_name = "WinterGram", tags = ["manual"], top_level_targets = [ top_level_target(":Telegram", target_environments = ["device", "simulator"]), diff --git a/Telegram/NotificationService/Sources/NotificationService.swift b/Telegram/NotificationService/Sources/NotificationService.swift index 66f39d8a5b..256e08c9ce 100644 --- a/Telegram/NotificationService/Sources/NotificationService.swift +++ b/Telegram/NotificationService/Sources/NotificationService.swift @@ -2612,60 +2612,36 @@ typealias CMJImage = UIImage // MARK: - Public Namespace -/// A lightweight utility for turning ordinary bitmap images into ``NSAdaptiveImageGlyph`` (Apple “Genmoji”) objects. -/// -/// ## Overview -/// The public API is minimal — a single call to generate a glyph and helper utilities for -/// de/serialising attributed strings. -/// -/// ```swift -/// // Synchronous usage -/// let glyph = try Customoji.makeGlyph( -/// from: image, -/// description: "alt text", -/// cropToSquare: true -/// ) -/// let attr = NSAttributedString(adaptiveImageGlyph: glyph, attributes: [:]) -/// ``` -/// -/// ## Requirements -/// * iOS 18 / macOS 15 -/// * Swift 5.10+ -/// -/// ## Topics -/// - Generating glyphs: ``makeGlyph(from:description:identifier:tileSizes:cropToSquare:heicQuality:)`` -/// - Generating glyphs asynchronously: ``makeGlyphAsync(from:description:identifier:tileSizes:cropToSquare:heicQuality:)`` -/// - Serialising: ``decompose(_:)`` / ``recompose(plain:ranges:blobs:)`` -/// +/// Utility for converting bitmaps into ``NSAdaptiveImageGlyph`` (Genmoji). public struct Customoji { // MARK: Library-scoped Errors - /// Errors that can be thrown by ``Customoji``. + /// Errors thrown by ``Customoji``. public enum Error: Swift.Error, LocalizedError { - /// The input image is not square and ``makeGlyph(from:description:identifier:tileSizes:cropToSquare:heicQuality:)`` was called with `cropToSquare == false`. + /// Input image is not square and cropping is disabled. case nonSquare - /// The longest side of the input image exceeds ``maxSide`` pixels (defaults to 4096). + /// Input image exceeds ``maxSide`` pixels. case imageTooLarge - /// Failed to create an in-memory HEIC container via *Image I/O*. + /// Failed to create the in-memory HEIC container. case heicDestinationCreationFailed - /// Failed to finalise the HEIC container after writing all tiles. + /// Failed to finalize the HEIC container. case heicFinalizeFailed - /// Internal resize operation failed when generating a tile. + /// Resizing a tile failed. case imageScaleFailed - /// A `CGImage` representation could not be extracted from the source image. + /// Could not extract a `CGImage` from the source image. case cgImageUnavailable - /// The `tileSizes` parameter was empty, not strictly ascending, contained duplicates, or exceeded the source size. + /// `tileSizes` was empty, not strictly ascending, contained duplicates, or exceeded the source size. case invalidTileSizes - /// No tiles were generated — normally unreachable unless all requested sizes were invalid. + /// No tiles were generated; normally unreachable unless all requested sizes were invalid. case noTilesGenerated - /// The current platform is neither UIKit- nor AppKit-based (unlikely in practice). + /// Unsupported platform. case unsupportedPlatform - /// The `heicQuality` parameter was outside the 0.0 … 1.0 range. + /// `heicQuality` was outside the 0.0...1.0 range. case invalidHeicQuality /// Cropping or scaling to a square failed. case squareCropFailed - /// Textual description suitable for presenting to users. + /// Localized error description. public var errorDescription: String? { switch self { case .nonSquare: return "Input image must be square." @@ -2694,26 +2670,16 @@ public struct Customoji { } } - /// Default tile sizes (in pixels) officially used by Apple for Genmoji. + /// Default Genmoji tile sizes. public static let defaultTileSizes = [40, 64, 96, 160, 320] - /// Maximum allowed side length (in pixels) to guard against excessive memory consumption. + /// Maximum allowed side length, in pixels. private static let maxSide = 4_096 // MARK: - Synchronous Builder #if swift(>=5.10) @available(iOS 18.0, macCatalyst 18.0, macOS 15.0, *) - /// Generates an ``NSAdaptiveImageGlyph`` synchronously on the **current** thread. - /// - /// - Parameters: - /// - image: Source image. Can be rectangular; see `cropToSquare`. - /// - description: A human-readable accessibility description (VoiceOver/Narrator). - /// - identifier: A globally unique content identifier. Defaults to a fresh UUID. - /// - tileSizes: Desired tile sizes, in pixels. Must be strictly ascending. Defaults to ``defaultTileSizes``. - /// - cropToSquare: When `true`, the central square area is cropped if the input image is not square. - /// - heicQuality: Lossy compression quality between `0.0` and `1.0`. Defaults to `0.8`. - /// - Throws: ``Customoji/Error`` if validation or encoding fails. - /// - Returns: A fully-formed glyph ready for attribution. + /// Generate an ``NSAdaptiveImageGlyph`` from a bitmap. static func makeGlyph( from image: CMJImage, description: String, @@ -2739,19 +2705,7 @@ public struct Customoji { // MARK: - AttributedString Utilities #if swift(>=5.10) @available(iOS 18.0, macCatalyst 18.0, macOS 15.0, *) - /// Breaks an ``NSAttributedString`` that may contain adaptive-image glyphs into three parts. - /// - /// This is handy when you need to **serialise** rich text for network transport or persistent - /// storage, because `NSAdaptiveImageGlyph` itself is not `Codable`. - /// - /// ```swift - /// let (plain, ranges, blobs) = Customoji.decompose(attrString) - /// ``` - /// - /// - Returns: A tuple where: - /// - plain: UTF-16 plain text. - /// - ranges: An array mapping text ranges to glyph identifiers. - /// - blobs: A dictionary mapping identifier → raw HEIC data. + /// Split an attributed string into plain text, glyph ranges, and HEIC data. @inlinable public static func decompose(_ attr: NSAttributedString) -> ( plain: String, ranges: [(NSRange, String)], blobs: [String: Data] @@ -2773,13 +2727,7 @@ public struct Customoji { } @available(iOS 18.0, macCatalyst 18.0, macOS 15.0, *) - /// Reassembles an attributed string previously produced by ``decompose(_:)``. - /// - /// - Parameters: - /// - plain: The plain UTF-16 text. - /// - ranges: An array of `(NSRange, identifier)` pairs. - /// - blobs: A dictionary of identifier → HEIC data. *Must* contain every identifier referenced by `ranges`. - /// - Returns: A fully restored `NSAttributedString` with adaptive-image glyphs reinstated. + /// Reassemble an attributed string from ``decompose(_:)`` output. public static func recompose( plain: String, ranges: [(NSRange, String)], @@ -2805,8 +2753,7 @@ public struct Customoji { #endif // MARK: - Helper: Pixel-Side Validation - /// Ensures that the image’s **longer edge** does not exceed ``maxSide`` pixels, guarding against - /// excessive memory usage during HEIC encoding. + /// Reject images whose longer edge exceeds ``maxSide``. private static func validatePixelSide(of image: CMJImage) throws { #if canImport(UIKit) let scale = image.scale == 0 ? 1 : image.scale @@ -2821,11 +2768,6 @@ public struct Customoji { } } -// ============================================================= -// Below this line lies the internal implementation. -// Public-facing symbols have already been documented above. -// ============================================================= - // MARK: - Core Builder @available(iOS 18.0, macCatalyst 18.0, macOS 15.0, *) extension Customoji { diff --git a/Telegram/Telegram-iOS/Info.plist b/Telegram/Telegram-iOS/Info.plist index e603c8d817..111a0f4e25 100644 --- a/Telegram/Telegram-iOS/Info.plist +++ b/Telegram/Telegram-iOS/Info.plist @@ -353,6 +353,8 @@ remote-notification voip + UIDesignRequiresCompatibility + UIDeviceFamily 1 diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index 9a92601e2f..a2ce03feab 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -402,22 +402,22 @@ // Tour "Tour.Title1" = "WinterGram"; -"Tour.Text1" = "The world's **fastest** messaging app.\nIt is **free** and **secure**."; +"Tour.Text1" = "A native **AyuGram** port for iPhone.\nAn open-source **Telegram** fork."; -"Tour.Title2" = "Fast"; -"Tour.Text2" = "**WinterGram** delivers messages\nfaster than any other application."; +"Tour.Title2" = "Telegram Fork"; +"Tour.Text2" = "Fully compatible with **Telegram**.\nYour chats, channels and accounts."; -"Tour.Title3" = "Powerful"; -"Tour.Text3" = "**WinterGram** has no limits on\nthe size of your media and chats."; +"Tour.Title3" = "Power Tools"; +"Tour.Text3" = "Saved **deleted messages**, full **edit\nhistory** and a **hidden archive**."; -"Tour.Title4" = "Secure"; -"Tour.Text4" = "**WinterGram** keeps your messages\nsafe from hacker attacks."; +"Tour.Title4" = "Make It Yours"; +"Tour.Text4" = "Deep **customization**, **Liquid Glass**,\nlocal **Premium** and a device **spoofer**."; -"Tour.Title5" = "Cloud-Based"; -"Tour.Text5" = "**WinterGram** lets you access your\nmessages from multiple devices."; +"Tour.Title5" = "Open Source"; +"Tour.Text5" = "Free and fully **open-source**.\nInspect and build it yourself."; -"Tour.Title6" = "Free"; -"Tour.Text6" = "**WinterGram** provides free unlimited\ncloud storage for chats and media."; +"Tour.Title6" = "Ghost Mode"; +"Tour.Text6" = "Read messages without sending\nread receipts, online or typing status."; "Tour.StartButton" = "Start Messaging"; @@ -16509,6 +16509,7 @@ Error: %8$@"; "WinterGram.ShowMessageSeconds" = "Show Message Seconds"; "WinterGram.ShowPeerID" = "Show Peer ID"; "WinterGram.ShowRegistrationDate" = "Show Registration Date"; +"WinterGram.RegistrationDate" = "Registration date"; "WinterGram.SingleCornerRadius" = "Single Corner Radius"; "WinterGram.SomeSettingsWillTakeEffectAfterRestart" = "Some settings will take effect after restart."; "WinterGram.SpoofAppVersion" = "App Version"; diff --git a/Telegram/Tests/Sources/UITests.swift b/Telegram/Tests/Sources/UITests.swift index 6df5294fe7..4210be8018 100644 --- a/Telegram/Tests/Sources/UITests.swift +++ b/Telegram/Tests/Sources/UITests.swift @@ -34,12 +34,12 @@ class UITests: XCTestCase { deleteTestAccount(phone: "9996625296") app.launch() - // Welcome screen — tap Start Messaging + // Start messaging. let startButton = app.buttons["Auth.Welcome.StartButton"] XCTAssert(startButton.waitForExistence(timeout: 5.0)) startButton.tap() - // Phone entry screen — enter test phone number + // Enter the test phone number. let countryCodeField = app.textFields["Auth.PhoneEntry.CountryCodeField"] XCTAssert(countryCodeField.waitForExistence(timeout: 10.0)) countryCodeField.tap() @@ -57,12 +57,12 @@ class UITests: XCTestCase { XCTAssert(continueButton.isEnabled) continueButton.tap() - // Confirmation dialog — tap Continue + // Confirm. let confirmButton = app.buttons["Auth.PhoneConfirm.ContinueButton"] XCTAssert(confirmButton.waitForExistence(timeout: 5.0)) confirmButton.tap() - // Code entry screen — enter verification code + // Enter the verification code. let codeEntryTitle = app.staticTexts["Auth.CodeEntry.Title"] XCTAssert(codeEntryTitle.waitForExistence(timeout: 15.0)) @@ -70,7 +70,7 @@ class UITests: XCTestCase { XCTAssert(codeField.waitForExistence(timeout: 3.0)) codeField.typeText("22222") - // Set name screen — enter name and submit + // Set the name. let firstNameField = app.textFields["Auth.SetName.FirstNameField"] XCTAssert(firstNameField.waitForExistence(timeout: 15.0)) firstNameField.tap() diff --git a/Telegram/prebuilt_watchos.bzl b/Telegram/prebuilt_watchos.bzl index 3002c45892..386b0a3b6d 100644 --- a/Telegram/prebuilt_watchos.bzl +++ b/Telegram/prebuilt_watchos.bzl @@ -4,8 +4,8 @@ against an exported tgwatch source tree, optionally codesigns the result, and exposes it through the providers that `ios_application(watch_application = ...)` consumes: - * AppleBundleInfo — bundle metadata (the host reads only `.product_type`). - * AppleEmbeddableInfo — `watch_bundles` (the zipped .app placed under Watch/). + * AppleBundleInfo: bundle metadata (the host reads only `.product_type`). + * AppleEmbeddableInfo: `watch_bundles` (the zipped .app placed under Watch/). The watch source tree is the committed in-repo snapshot at `Telegram/WatchApp/` (tracked inputs). To update it, re-sync from the standalone tgwatch repo via diff --git a/Telegram/prebuilt_watchos_build.sh b/Telegram/prebuilt_watchos_build.sh index 9acc2fd93e..9b460f8c95 100755 --- a/Telegram/prebuilt_watchos_build.sh +++ b/Telegram/prebuilt_watchos_build.sh @@ -2,7 +2,7 @@ # Worker for the apple_prebuilt_watchos_application Bazel rule. # # Builds the tgwatch watch app via xcodebuild (device, Release, UNSIGNED), then -# — if a provisioning profile is supplied — codesigns the app and its nested +# If a provisioning profile is supplied, codesigns the app and its nested # frameworks with the watchkitapp provisioning profile and a matching identity, # and finally zips the .app into the rule's output archive. # @@ -45,7 +45,7 @@ DD="$(mktemp -d)" trap 'rm -rf "$DD"' EXIT # Build from a writable copy so xcodebuild/SwiftPM never write into the (possibly -# in-repo, read-only) source tree — e.g. SwiftPM's Package.resolved or the workspace. +# in-repo, read-only) source tree, such as SwiftPM's Package.resolved or the workspace. # The tree is small (~12M); a plain cp on each (uncached) build is acceptable. WORKSRC="$DD/src" mkdir -p "$WORKSRC" @@ -84,7 +84,7 @@ fi # Sign the watch app whenever a provisioning profile is available. When no explicit # identity is supplied, derive it from the certificate embedded in that profile, so # the watch app is signed with the same distribution/development identity as the host -# app (resolved from the shared codesigning material) — required for App Store, where +# app (resolved from the shared codesigning material), as required for App Store, where # every nested bundle must carry the Apple submission certificate. Without a profile # the app is left unsigned (the host does not re-sign it). if [ -n "$PROFILE" ]; then diff --git a/build-system/Make/BuildEnvironment.py b/build-system/Make/BuildEnvironment.py index 2cb64aae7b..287bbb46c0 100644 --- a/build-system/Make/BuildEnvironment.py +++ b/build-system/Make/BuildEnvironment.py @@ -14,7 +14,9 @@ def is_apple_silicon(): def get_clean_env(use_clean_env=True): clean_env = os.environ.copy() if use_clean_env: - clean_env['PATH'] = '/usr/bin:/bin:/usr/sbin:/sbin' + # Force xcode-select to return the Xcode-beta path instead of CommandLineTools. + wrapper_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), 'build-system', 'xcode-wrapper') + clean_env['PATH'] = wrapper_dir + ':/usr/bin:/bin:/usr/sbin:/sbin' return clean_env diff --git a/build-system/Make/Make.py b/build-system/Make/Make.py index 66071f8186..476bd24210 100644 --- a/build-system/Make/Make.py +++ b/build-system/Make/Make.py @@ -533,13 +533,10 @@ def resolve_configuration(base_path, bazel_command_line: BazelCommandLine, argum ) aps_environment = codesigning_data.aps_environment if aps_environment is None: - # WinterGram: for unsigned sideload builds (provisioning disabled), the fake profiles - # don't match the custom bundle id, so no aps-environment is found. Push won't work - # until AltStore / SideStore / LiveContainer re-signs with the user's profile, so we - # fall back to a placeholder instead of failing the build. - if getattr(arguments, 'disableProvisioningProfiles', False): - print('No aps-environment found; defaulting to "development" for unsigned sideload build.') - aps_environment = 'development' + # Unsigned builds use a placeholder aps-environment instead of failing. + if getattr(arguments, 'disableProvisioningProfiles', False) or getattr(arguments, 'disableExtensions', False): + print('No aps-environment found; disabling APNs entitlement for unsigned sideload build.') + aps_environment = '' else: print('Could not find a valid aps-environment entitlement in the provided provisioning profiles') sys.exit(1) @@ -636,7 +633,7 @@ def resolve_watch_provisioning_profile(arguments, base_path): Returns the absolute path of the profile to sign the embedded watch app with, or None to build the watch app UNSIGNED. None is only returned (with a warning) for - non-distribution codesigning — a distribution build (appstore/adhoc/enterprise) raises + non-distribution codesigning. A distribution build (appstore/adhoc/enterprise) raises instead, because the host ios_application does NOT re-sign the embedded watch app, so an unsigned Watch/ payload ships as-is and is silently rejected at install time. Failing here turns that silent "won't install" into a build error that names the missing profile. @@ -664,11 +661,11 @@ def resolve_watch_provisioning_profile(arguments, base_path): '--embedWatchApp is set for a distribution build (--gitCodesigningType={ct}), but no watchkitapp ' 'provisioning profile resolved (looked for {p}).\n' 'The {ct} codesigning material does not contain a `.watchkitapp` profile, so the embedded watch app ' - 'would be UNSIGNED — the host app is not re-signed over it, so it ships unsigned and is silently ' + 'would be UNSIGNED. The host app is not re-signed over it, so it ships unsigned and is silently ' 'rejected when installing on a watch.\n' - 'Fix: fetch the latest codesigning material so the watchkitapp profile is present — drop ' + 'Fix: fetch the latest codesigning material so the watchkitapp profile is present. Drop ' '--gitCodesigningUseCurrent (it skips the fetch), or run ' - '`git -C build-input/configuration-repository-workdir/encrypted pull` — or create/register the {ct} ' + '`git -C build-input/configuration-repository-workdir/encrypted pull`, or create/register the {ct} ' 'watchkitapp provisioning profile, or pass an explicit --watchProvisioningProfile.'.format( ct=arguments.gitCodesigningType, p=resolved_watch_profile ) diff --git a/build-system/Make/ProjectGeneration.py b/build-system/Make/ProjectGeneration.py index 93579210bd..fa33e1e8c2 100644 --- a/build-system/Make/ProjectGeneration.py +++ b/build-system/Make/ProjectGeneration.py @@ -49,7 +49,10 @@ def generate_xcodeproj(build_environment: BuildEnvironment, disable_extensions, call_executable(bazel_generate_arguments) - xcodeproj_path = '{}.xcodeproj'.format(app_target_spec.replace(':', '/')) + if target_name == 'Telegram': + xcodeproj_path = 'Telegram/WinterGram.xcodeproj' + else: + xcodeproj_path = '{}.xcodeproj'.format(app_target_spec.replace(':', '/')) return xcodeproj_path diff --git a/build-system/SwiftTL/Sources/SwiftTL/CodeGeneration.swift b/build-system/SwiftTL/Sources/SwiftTL/CodeGeneration.swift index 8437591b40..d220e98f95 100644 --- a/build-system/SwiftTL/Sources/SwiftTL/CodeGeneration.swift +++ b/build-system/SwiftTL/Sources/SwiftTL/CodeGeneration.swift @@ -207,8 +207,8 @@ enum CodeGenerator { let structName = "\(apiPrefix)\(layerNumber)" let filename = "\(apiPrefix)Layer\(layerNumber).swift" - // All nested type refs (inside the struct) use `structName` as their prefix — - // `apiPrefix` is used only to compute `structName` and `filename`. Helpers like + // Nested type refs use `structName` as their prefix. + // `apiPrefix` only computes `structName` and `filename`. Helpers like // typeReferenceRepresentation and generateFieldParsing get `structName`, not // `apiPrefix`, so e.g. fields render as `media: SecretApi8.DecryptedMessageMedia`. diff --git a/build-system/xcode-wrapper/xcode-select b/build-system/xcode-wrapper/xcode-select new file mode 100755 index 0000000000..f486ae170d --- /dev/null +++ b/build-system/xcode-wrapper/xcode-select @@ -0,0 +1,9 @@ +#!/bin/bash +# Wrapper to force xcode-select -p to return Xcode-beta path, +# since the global xcode-select points to CommandLineTools which lacks iOS SDKs. +if [ "$1" = "-p" ]; then + echo "/Applications/Xcode-beta.app/Contents/Developer" + exit 0 +fi +# For all other invocations, delegate to the real xcode-select. +exec /usr/bin/xcode-select "$@" diff --git a/docs/superpowers/scratch/reveal-pacing-sim.py b/docs/superpowers/scratch/reveal-pacing-sim.py index ed4454b48e..0f07632a25 100644 --- a/docs/superpowers/scratch/reveal-pacing-sim.py +++ b/docs/superpowers/scratch/reveal-pacing-sim.py @@ -23,7 +23,7 @@ from typing import List, Optional, Tuple # --------------------------------------------------------------------------- -# Controller — must stay byte-for-byte equivalent to the Swift implementation. +# Keep the controller byte-for-byte equivalent to the Swift implementation. # --------------------------------------------------------------------------- CONTROLLER_NAME = "v1" # set by --algo flag in main() @@ -130,7 +130,7 @@ class TextRevealControllerV2: FRAME_DT_CAP = 0.05 INITIAL_INPUT_RATE = 40.0 # fallback velocity for the first chunk # When predicted_next_arrival has passed (stream stalled), don't speed up - # further — clamp time_to_next at this minimum. + # Clamp time_to_next at this minimum. STALL_FLOOR = 0.10 def __init__(self, initial_revealed_count: int, initial_length: int) -> None: diff --git a/scripts/build-wintergram.sh b/scripts/build-wintergram.sh index 18f1f1cf2b..c2e2c7f96c 100755 --- a/scripts/build-wintergram.sh +++ b/scripts/build-wintergram.sh @@ -1,26 +1,9 @@ #!/bin/bash -# WinterGram build wrapper — produces WinterGram-named IPAs for every install target. -# Lives in scripts/; all paths are resolved relative to the repo root (the script cd's there). -# -# Usage: -# ./scripts/build-wintergram.sh -# ./scripts/build-wintergram.sh all -# ./scripts/build-wintergram.sh sideload -# ./scripts/build-wintergram.sh livecontainer -# ./scripts/build-wintergram.sh sim -# -# Convenience: -# ./scripts/build-wintergram.sh --install # build the simulator IPA and install it into the active Simulator (sim mode only) -# ./scripts/build-wintergram.sh --install --run # also launch the app in the active Simulator -# ./scripts/build-wintergram.sh --clean # remove ./build before building -# ./scripts/build-wintergram.sh --open-build-dir # open ./build in Finder after build -# ./scripts/build-wintergram.sh --help +# WinterGram build wrapper. set -euo pipefail -# Resolve to the repo root regardless of where the script is invoked from (it lives in scripts/). cd "$(dirname "$0")/.." REPO="$(pwd)" -source ~/.zshrc 2>/dev/null || true OUT_DIR="build" SIDELOAD_NAME="WinterGram.ipa" @@ -29,12 +12,19 @@ SIM_NAME="WinterGram-Simulator.ipa" WNT_BUNDLE_ID="dev.reekeer.wintergram" BAZEL="./build-input/bazel-8.4.2-darwin-arm64" DEVICE_SRC="bazel-bin/Telegram/Telegram.ipa" +_XCODE_DEV_DIR="${DEVELOPER_DIR:-$(xcode-select -p 2>/dev/null)}" +BAZEL_XCODE_ACTION_ENV="--action_env=DEVELOPER_DIR=${_XCODE_DEV_DIR} --host_action_env=DEVELOPER_DIR=${_XCODE_DEV_DIR}" +# Xcode 27 compatibility +BAZEL_SDK_COMPAT_ARGS="--features=-treat_warnings_as_errors --@build_bazel_rules_swift//swift:copt=-no-warnings-as-errors --copt=-Wno-deprecated-declarations" MODE="all" +INSTALL_REQUESTED=0 +INSTALL_DEVICE=0 INSTALL_SIM=0 -RUN_SIM=0 +RUN_APP=0 CLEAN=0 OPEN_BUILD_DIR=0 +DEVICE_SELECTOR="" usage() { cat < build/$SIDELOAD_NAME + sideload, device, + ios Build device sideload IPA -> build/$SIDELOAD_NAME livecontainer, lc Build unsigned LiveContainer IPA -> build/$LC_NAME sim, simulator Build simulator IPA -> build/$SIM_NAME Options: - --install Build the simulator IPA and install it into the active booted Simulator. - This forces "sim" mode (install only makes sense for the simulator). + --install Install after build. With ios/device/sideload mode, installs on a connected + iPhone/iPad via xcrun devicectl. With sim mode, installs into the active + booted Simulator. With no explicit mode, keeps the old simulator shortcut. + --device Device selector for devicectl. Optional if exactly one iPhone/iPad is connected. --run Launch the app after --install (implies --install). --clean Remove ./build before building. --open-build-dir Open ./build in Finder after build. -h, --help Show this help. Examples: + $0 ios --install + $0 ios --install --run + $0 ios --install --device "Del's iPhone" $0 --install $0 --install --run $0 sideload --clean @@ -83,16 +79,21 @@ MODE_WAS_EXPLICIT=0 while [ "$#" -gt 0 ]; do case "$1" in - all|sideload|device|livecontainer|lc|sim|simulator) + all|sideload|device|ios|livecontainer|lc|sim|simulator) MODE="$1" MODE_WAS_EXPLICIT=1 ;; --install) - INSTALL_SIM=1 + INSTALL_REQUESTED=1 ;; --run) - RUN_SIM=1 - INSTALL_SIM=1 + RUN_APP=1 + INSTALL_REQUESTED=1 + ;; + --device) + shift + [ "$#" -gt 0 ] || die "--device requires a value" + DEVICE_SELECTOR="$1" ;; --clean) CLEAN=1 @@ -111,13 +112,26 @@ while [ "$#" -gt 0 ]; do shift done -# --install is simulator-only: installing a device/livecontainer IPA into a Simulator makes no -# sense, so --install always forces "sim" mode (warning if a conflicting mode was given). -if [ "$INSTALL_SIM" -eq 1 ]; then - if [ "$MODE_WAS_EXPLICIT" -eq 1 ] && [ "$MODE" != "sim" ] && [ "$MODE" != "simulator" ]; then - echo "==> --install is simulator-only; ignoring mode '$MODE' and building 'sim'." >&2 - fi - MODE="sim" +if [ "$INSTALL_REQUESTED" -eq 1 ]; then + case "$MODE" in + sim|simulator) + INSTALL_SIM=1 + ;; + sideload|device|ios) + INSTALL_DEVICE=1 + ;; + all) + if [ "$MODE_WAS_EXPLICIT" -eq 1 ]; then + die "--install with 'all' is ambiguous. Use 'ios --install' for a device or 'sim --install' for Simulator." + fi + + MODE="sim" + INSTALL_SIM=1 + ;; + livecontainer|lc) + die "--install does not support LiveContainer IPA. Use 'ios --install' for direct device install." + ;; + esac fi if [ "$CLEAN" -eq 1 ]; then @@ -135,8 +149,10 @@ build_sim() { --cacheDir "$HOME/telegram-bazel-cache" \ build \ --configurationPath build-system/wintergram-development-configuration.json \ - --codesigningInformationPath build-system/fake-codesigning-wintergram \ + --codesigningInformationPath build-system/fake-codesigning \ + --disableProvisioningProfiles \ --disableExtensions \ + --bazelArguments="$BAZEL_XCODE_ACTION_ENV $BAZEL_SDK_COMPAT_ARGS" \ --buildNumber=1 --configuration=debug_sim_arm64 [ -f "$DEVICE_SRC" ] || die "simulator artifact not found at $DEVICE_SRC" @@ -181,7 +197,7 @@ install_sim() { echo "==> [Simulator] installed: $(basename "$APP_PATH")" - if [ "$RUN_SIM" -eq 1 ]; then + if [ "$RUN_APP" -eq 1 ]; then [ -n "$INSTALLED_BUNDLE_ID" ] || { rm -rf "$TMP_DIR" die "could not read CFBundleIdentifier from app Info.plist" @@ -194,6 +210,135 @@ install_sim() { rm -rf "$TMP_DIR" } +select_ios_device() { + require_cmd xcrun + + if [ -n "$DEVICE_SELECTOR" ]; then + echo "$DEVICE_SELECTOR" + return 0 + fi + + local JSON_PATH + JSON_PATH="$(mktemp)" + + if ! xcrun devicectl list devices --timeout 20 --json-output "$JSON_PATH" >/dev/null; then + rm -f "$JSON_PATH" + die "could not list connected devices via xcrun devicectl. Unlock the phone, trust this Mac, and try again." + fi + + local SELECTED + if ! SELECTED="$(python3 - "$JSON_PATH" 2>&1 <<'PY' +import json +import sys + +path = sys.argv[1] + +with open(path, "r", encoding="utf-8") as f: + data = json.load(f) + +devices = data.get("result", {}).get("devices", []) + +def get(obj, dotted, default=""): + current = obj + for part in dotted.split("."): + if not isinstance(current, dict): + return default + current = current.get(part) + return current if current is not None else default + +candidates = [] +for device in devices: + platform = str(get(device, "hardwareProperties.platform")).lower() + if platform not in ("ios", "ipados"): + continue + + identifier = ( + device.get("identifier") + or get(device, "hardwareProperties.udid") + or get(device, "hardwareProperties.serialNumber") + ) + if not identifier: + continue + + name = ( + get(device, "deviceProperties.name") + or device.get("name") + or get(device, "hardwareProperties.marketingName") + or identifier + ) + transport = get(device, "connectionProperties.transportType") + pair_state = get(device, "connectionProperties.pairingState") + candidates.append((str(identifier), str(name), str(transport), str(pair_state))) + +if len(candidates) == 1: + print(candidates[0][0]) + sys.exit(0) + +if not candidates: + print("no connected iPhone/iPad found by devicectl", file=sys.stderr) +else: + print("multiple iPhone/iPad devices found; pass --device with one of these:", file=sys.stderr) + for identifier, name, transport, pair_state in candidates: + details = ", ".join(part for part in (transport, pair_state) if part) + suffix = f" ({details})" if details else "" + print(f" {identifier} {name}{suffix}", file=sys.stderr) + +sys.exit(2) +PY +)"; then + rm -f "$JSON_PATH" + die "$SELECTED" + fi + + rm -f "$JSON_PATH" + echo "$SELECTED" +} + +install_device() { + require_cmd xcrun + + local IPA="$OUT_DIR/$SIDELOAD_NAME" + [ -f "$IPA" ] || die "device IPA not found at $IPA" + + echo "==> [Device] preparing app for install ..." + + local TMP_DIR + TMP_DIR="$(mktemp -d)" + + unzip -q "$IPA" -d "$TMP_DIR" + + local APP_PATH + APP_PATH="$(find "$TMP_DIR/Payload" -maxdepth 1 -type d -name "*.app" | head -n 1)" + + [ -n "${APP_PATH:-}" ] || { + rm -rf "$TMP_DIR" + die "no .app found inside $IPA" + } + + local INSTALLED_BUNDLE_ID + INSTALLED_BUNDLE_ID="$(/usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' "$APP_PATH/Info.plist" 2>/dev/null || true)" + + local DEVICE + DEVICE="$(select_ios_device)" + + echo "==> [Device] installing $(basename "$APP_PATH") on $DEVICE ..." + xcrun devicectl device install app --device "$DEVICE" "$APP_PATH" + + echo "==> [Device] installed: $(basename "$APP_PATH")" + + if [ "$RUN_APP" -eq 1 ]; then + [ -n "$INSTALLED_BUNDLE_ID" ] || { + rm -rf "$TMP_DIR" + die "could not read CFBundleIdentifier from app Info.plist" + } + + echo "==> [Device] launching $INSTALLED_BUNDLE_ID on $DEVICE ..." + xcrun devicectl device process launch --device "$DEVICE" --terminate-existing "$INSTALLED_BUNDLE_ID" || true + fi + + rm -rf "$TMP_DIR" +} + # --- device build shared by sideload + livecontainer ----------------------- ensure_cert() { @@ -207,13 +352,17 @@ ensure_cert() { build_device() { ensure_cert + echo "==> [Device] generating fake provisioning profiles for ${WNT_BUNDLE_ID} ..." + python3 scripts/generate-fake-profiles.py build-system/fake-codesigning-generated + echo "==> [Device] build (debug_arm64, ${WNT_BUNDLE_ID}, extensions disabled) ..." python3 build-system/Make/Make.py --overrideXcodeVersion \ --cacheDir "$HOME/telegram-bazel-cache" \ build \ --configurationPath build-system/wintergram-development-configuration.json \ - --codesigningInformationPath build-system/fake-codesigning-wintergram \ + --codesigningInformationPath build-system/fake-codesigning-generated \ --disableExtensions \ + --bazelArguments="$BAZEL_XCODE_ACTION_ENV $BAZEL_SDK_COMPAT_ARGS" \ --buildNumber=1 --configuration=debug_arm64 [ -f "$DEVICE_SRC" ] || die "device artifact not found at $DEVICE_SRC" @@ -265,7 +414,7 @@ case "$MODE" in sim|simulator) build_sim ;; - sideload|device) + sideload|device|ios) build_device make_sideload ;; @@ -274,8 +423,7 @@ case "$MODE" in make_livecontainer ;; all) - # One device build feeds BOTH device deliverables; derive them before the sim build - # overwrites bazel-bin/Telegram/Telegram.ipa with the simulator artifact. + # Derive device deliverables before the simulator build overwrites the artifact. build_device make_sideload make_livecontainer @@ -287,14 +435,17 @@ case "$MODE" in esac if [ "$INSTALL_SIM" -eq 1 ]; then - # --install forced MODE=sim above, so the simulator IPA was just built — install it. install_sim fi +if [ "$INSTALL_DEVICE" -eq 1 ]; then + install_device +fi + echo echo "==> WinterGram deliverables in ./$OUT_DIR/:" ls -1 "$OUT_DIR"/WinterGram*.ipa 2>/dev/null | sed 's#^# #' || true if [ "$OPEN_BUILD_DIR" -eq 1 ]; then open "$OUT_DIR" -fi \ No newline at end of file +fi diff --git a/scripts/generate-fake-profiles.py b/scripts/generate-fake-profiles.py new file mode 100644 index 0000000000..9ee6f7dba9 --- /dev/null +++ b/scripts/generate-fake-profiles.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python3 +"""Generate fake provisioning profiles for the WinterGram dev bundle id.""" + +import datetime +import json +import os +import plistlib +import subprocess +import sys +import uuid +from pathlib import Path + +from cryptography import x509 +from cryptography.hazmat.primitives import hashes, serialization +from cryptography.hazmat.primitives.serialization import pkcs12, pkcs7 + +REPO_ROOT = Path(__file__).resolve().parent.parent +CONFIG_PATH = REPO_ROOT / "build-system/wintergram-development-configuration.json" +SOURCE_PROFILES_DIR = REPO_ROOT / "build-system/fake-codesigning/profiles" +SOURCE_CERTS_DIR = REPO_ROOT / "build-system/fake-codesigning/certs" +SELF_SIGNED_P12 = SOURCE_CERTS_DIR / "SelfSigned.p12" + +# mapping from application-identifier suffix -> output file name (without .mobileprovision) +PROFILE_NAME_MAPPING = { + ".SiriIntents": "Intents", + ".NotificationContent": "NotificationContent", + ".NotificationService": "NotificationService", + ".Share": "Share", + "": "Telegram", + ".watchkitapp": "WatchApp", + ".watchkitapp.watchkitextension": "WatchExtension", + ".Widget": "Widget", + ".BroadcastUpload": "BroadcastUpload", +} + + +def load_self_signed_cert_and_key(): + with open(SELF_SIGNED_P12, "rb") as f: + key, cert, _ = pkcs12.load_key_and_certificates(f.read(), password=b"") + if key is None or cert is None: + raise RuntimeError("Could not load key/cert from SelfSigned.p12") + return key, cert + + +def extract_plist(profile_path: Path) -> dict: + result = subprocess.run( + ["openssl", "smime", "-inform", "der", "-verify", "-noverify", "-in", str(profile_path)], + capture_output=True, + check=True, + ) + return plistlib.loads(result.stdout) + + +def replace_in_string(s: str, old_team: str, new_team: str, old_bundle: str, new_bundle: str) -> str: + s = s.replace(old_team + "." + old_bundle, new_team + "." + new_bundle) + s = s.replace(old_bundle, new_bundle) + s = s.replace(old_team, new_team) + return s + + +def replace_in_value(value, old_team: str, new_team: str, old_bundle: str, new_bundle: str): + if isinstance(value, str): + return replace_in_string(value, old_team, new_team, old_bundle, new_bundle) + if isinstance(value, list): + return [replace_in_value(v, old_team, new_team, old_bundle, new_bundle) for v in value] + if isinstance(value, dict): + return {k: replace_in_value(v, old_team, new_team, old_bundle, new_bundle) for k, v in value.items()} + if isinstance(value, bytes): + try: + text = value.decode("utf-8") + replaced = replace_in_string(text, old_team, new_team, old_bundle, new_bundle) + return replaced.encode("utf-8") + except UnicodeDecodeError: + return value + return value + + +def profile_suffix_for(plist_data: dict) -> str: + app_id = plist_data["Entitlements"]["application-identifier"] + # We expect . + return app_id.split(".", 2)[2] if "." in app_id else "" + + +def generate_profile(source_path: Path, new_team: str, new_bundle: str, key, cert) -> tuple[str, bytes]: + plist_data = extract_plist(source_path) + + old_team = plist_data["TeamIdentifier"][0] + old_bundle = plist_data["Entitlements"]["application-identifier"][len(old_team) + 1 :] + # strip known suffixes to find the base bundle id + old_bundle_base = old_bundle + for suffix in sorted(PROFILE_NAME_MAPPING.keys(), key=len, reverse=True): + if suffix and old_bundle.endswith(suffix): + old_bundle_base = old_bundle[: -len(suffix)] + break + + new_bundle_base = new_bundle + + plist_data = replace_in_value(plist_data, old_team, new_team, old_bundle_base, new_bundle_base) + + # Some fields can't be string-replaced blindly; set them explicitly. + plist_data["ApplicationIdentifierPrefix"] = [new_team] + plist_data["TeamIdentifier"] = [new_team] + plist_data["UUID"] = str(uuid.uuid4()).upper() + plist_data["Name"] = f"WinterGram {source_path.stem}" + plist_data["TeamName"] = "WinterGram Self-Signed" + plist_data["IsXcodeManaged"] = False + + now = datetime.datetime.now(datetime.timezone.utc) + plist_data["CreationDate"] = now + plist_data["ExpirationDate"] = now + datetime.timedelta(days=365) + + # Replace embedded developer certificate with the self-signed one. + cert_der = cert.public_bytes(serialization.Encoding.DER) + plist_data["DeveloperCertificates"] = [cert_der] + + # Strip capabilities we don't want/need for a sideload dev build. + entitlements = plist_data.get("Entitlements", {}) + entitlements["get-task-allow"] = True + entitlements.pop("beta-reports-active", None) + entitlements["aps-environment"] = "development" + plist_data["Entitlements"] = entitlements + + # Determine output name from the original suffix. + original_suffix = "" + for suffix in sorted(PROFILE_NAME_MAPPING.keys(), key=len, reverse=True): + if suffix and old_bundle.endswith(suffix): + original_suffix = suffix + break + output_name = PROFILE_NAME_MAPPING.get(original_suffix, source_path.stem) + ".mobileprovision" + + # Re-sign as CMS SignedData (DER) using the self-signed certificate. + plist_bytes = plistlib.dumps(plist_data) + builder = pkcs7.PKCS7SignatureBuilder( + data=plist_bytes, + signers=[(cert, key, hashes.SHA256(), None)], + additional_certs=[cert], + ) + signed = builder.sign(serialization.Encoding.DER, [pkcs7.PKCS7Options.Binary]) + + return output_name, signed + + +def main(): + if len(sys.argv) > 1: + output_dir = Path(sys.argv[1]) + else: + output_dir = REPO_ROOT / "build-system/fake-codesigning-generated" + + output_profiles_dir = output_dir / "profiles" + output_certs_dir = output_dir / "certs" + output_profiles_dir.mkdir(parents=True, exist_ok=True) + output_certs_dir.mkdir(parents=True, exist_ok=True) + + with open(CONFIG_PATH, "r", encoding="utf-8") as f: + config = json.load(f) + + new_team = config["team_id"] + new_bundle = config["bundle_id"] + + print(f"Generating fake profiles for team={new_team} bundle={new_bundle} ...") + + key, cert = load_self_signed_cert_and_key() + + # Copy the self-signed cert material so the output dir is self-contained. + for src in SOURCE_CERTS_DIR.iterdir(): + if src.is_file(): + (output_certs_dir / src.name).write_bytes(src.read_bytes()) + + generated = [] + for source_path in sorted(SOURCE_PROFILES_DIR.glob("*.mobileprovision")): + output_name, signed = generate_profile(source_path, new_team, new_bundle, key, cert) + out_path = output_profiles_dir / output_name + out_path.write_bytes(signed) + generated.append(output_name) + print(f" {source_path.name} -> {output_name}") + + print(f"Wrote {len(generated)} profiles to {output_profiles_dir}") + + +if __name__ == "__main__": + main() diff --git a/scripts/generate-wintergram-xcodeproj.sh b/scripts/generate-wintergram-xcodeproj.sh new file mode 100755 index 0000000000..9b39cb2d74 --- /dev/null +++ b/scripts/generate-wintergram-xcodeproj.sh @@ -0,0 +1,98 @@ +#!/bin/bash +# Generate a WinterGram Xcode project configured for your Apple Developer Team. + +set -euo pipefail + +cd "$(dirname "$0")/.." + +CONFIG="build-system/wintergram-development-configuration.json" +BUNDLE_ID="${WINTERGRAM_BUNDLE_ID:-com.reekeer.wintergram}" +TEAM_ID="${WINTERGRAM_TEAM_ID:-}" +API_ID="${WINTERGRAM_API_ID:-2040}" +API_HASH="${WINTERGRAM_API_HASH:-b18441a1ff607e10a989891a5462e627}" + +usage() { + cat <&2 + usage >&2 + exit 1 + ;; + esac +done + +if [ -z "$TEAM_ID" ]; then + echo "ERROR: --team-id is required." >&2 + echo "Find it in Xcode -> Settings -> Accounts -> your Apple ID -> Team ID." >&2 + exit 1 +fi + +python3 - "$CONFIG" "$BUNDLE_ID" "$TEAM_ID" "$API_ID" "$API_HASH" <<'PY' +import json +import sys + +path, bundle_id, team_id, api_id, api_hash = sys.argv[1:] + +with open(path) as f: + data = json.load(f) + +data["bundle_id"] = bundle_id +data["team_id"] = team_id +data["api_id"] = api_id +data["api_hash"] = api_hash +data["app_specific_url_scheme"] = "wnt" +data["enable_siri"] = False +data["enable_icloud"] = False + +with open(path, "w") as f: + json.dump(data, f, indent="\t") + f.write("\n") +PY + +echo "==> Wrote $CONFIG" +echo " bundle_id: $BUNDLE_ID" +echo " team_id: $TEAM_ID" + +python3 build-system/Make/Make.py --overrideXcodeVersion \ + --cacheDir "$HOME/telegram-bazel-cache" \ + generateProject \ + --configurationPath "$CONFIG" \ + --xcodeManagedCodesigning + +echo +echo "==> Generated WinterGram.xcodeproj" diff --git a/scripts/wintergram-badge-tool.py b/scripts/wintergram-badge-tool.py new file mode 100755 index 0000000000..08ef85d884 --- /dev/null +++ b/scripts/wintergram-badge-tool.py @@ -0,0 +1,394 @@ +#!/usr/bin/env python3 +"""Validate and optionally preview a WinterGram badge manifest.""" + +import argparse +import json +import math +import os +import re +import sys + +ANIMATION_TYPES = {"none", "rotate", "blink", "pulse", "bounce", "shake", "lottie"} +DIRECTIONS = {"cw", "ccw"} +TINT_RE = re.compile(r"^(theme|none|#[0-9a-fA-F]{6})$") +MAX_BADGES = 64 +MAX_LAYERS = 16 +LOTTIE_EXTS = (".tgs", ".json") +RASTER_EXTS = (".png", ".jpg", ".jpeg") + + +class Report: + def __init__(self): + self.errors = [] + self.warnings = [] + + def error(self, path, msg): + self.errors.append(f"{path}: {msg}") + + def warn(self, path, msg): + self.warnings.append(f"{path}: {msg}") + + def ok(self): + return not self.errors + + +def is_number(v): + return isinstance(v, (int, float)) and not isinstance(v, bool) + + +def is_int(v): + return isinstance(v, int) and not isinstance(v, bool) + + +def validate(manifest, manifest_dir, report): + if not isinstance(manifest, dict): + report.error("$", "manifest must be a JSON object") + return + + if "version" not in manifest: + report.error("$", 'missing required "version"') + elif not is_int(manifest["version"]) or manifest["version"] < 0: + report.error("$.version", "must be an integer >= 0") + + canvas = manifest.get("canvas", 1024) + if not is_number(canvas) or canvas <= 0: + report.error("$.canvas", "must be a positive number") + canvas = 1024 + + badges = manifest.get("badges") + if badges is None: + report.error("$", 'missing required "badges"') + return + if not isinstance(badges, list): + report.error("$.badges", "must be an array") + return + if len(badges) > MAX_BADGES: + report.warn("$.badges", f"{len(badges)} badges; client caps at {MAX_BADGES}") + + seen_ids = set() + for i, badge in enumerate(badges): + bpath = f"$.badges[{i}]" + if not isinstance(badge, dict): + report.error(bpath, "must be an object") + continue + + bid = badge.get("id") + if not isinstance(bid, str) or not bid: + report.error(f"{bpath}.id", "must be a non-empty string") + else: + if bid in seen_ids: + report.error(f"{bpath}.id", f'duplicate badge id "{bid}"') + seen_ids.add(bid) + + if "priority" in badge and not is_int(badge["priority"]): + report.error(f"{bpath}.priority", "must be an integer") + + if "description" in badge and not isinstance(badge.get("description"), str): + report.error(f"{bpath}.description", "must be a string") + + peers = badge.get("peers") + if not isinstance(peers, dict): + report.error(f"{bpath}.peers", "must be an object") + else: + for key in ("users", "channels"): + vals = peers.get(key, []) + if not isinstance(vals, list) or not all(is_int(v) for v in vals): + report.error(f"{bpath}.peers.{key}", "must be an array of integers") + if not peers.get("users") and not peers.get("channels"): + report.warn(f"{bpath}.peers", "no users or channels; badge will never match") + + layers = badge.get("layers") + if not isinstance(layers, list) or not layers: + report.error(f"{bpath}.layers", "must be a non-empty array") + continue + if len(layers) > MAX_LAYERS: + report.warn(f"{bpath}.layers", f"{len(layers)} layers; client caps at {MAX_LAYERS}") + + for j, layer in enumerate(layers): + validate_layer(layer, f"{bpath}.layers[{j}]", canvas, manifest_dir, report) + + +def validate_layer(layer, path, canvas, manifest_dir, report): + if not isinstance(layer, dict): + report.error(path, "must be an object") + return + + source = layer.get("source") + if not isinstance(source, str) or not source: + report.error(f"{path}.source", "must be a non-empty string") + source = "" + + lowered = source.lower() + is_lottie = lowered.endswith(LOTTIE_EXTS) + if source and not is_lottie and not lowered.endswith(RASTER_EXTS): + report.warn(f"{path}.source", "unrecognised extension (expected .png/.jpg or .tgs/.json)") + + for key in ("x", "y", "width", "height"): + if key in layer and not is_number(layer[key]): + report.error(f"{path}.{key}", "must be a number") + for key in ("width", "height"): + if is_number(layer.get(key)) and layer[key] <= 0: + report.error(f"{path}.{key}", "must be > 0") + + x, y = layer.get("x", 0), layer.get("y", 0) + w, h = layer.get("width", 0), layer.get("height", 0) + if all(is_number(v) for v in (x, y, w, h)): + if x < 0 or y < 0 or x + w > canvas or y + h > canvas: + report.warn(path, f"layer rect ({x},{y},{w},{h}) extends outside the {canvas} canvas") + + tint = layer.get("tint") + if tint is not None and (not isinstance(tint, str) or not TINT_RE.match(tint)): + report.error(f"{path}.tint", 'must be "theme", "none", or "#RRGGBB"') + + anim = layer.get("animation") + if anim is not None: + validate_animation(anim, f"{path}.animation", is_lottie, report) + + # Asset existence (best-effort, for path-style sources). + if source and ("/" in source or "." in source): + asset_path = os.path.join(manifest_dir, source) + if not os.path.isfile(asset_path): + report.warn(f"{path}.source", f'asset not found: "{source}"') + + +def validate_animation(anim, path, is_lottie, report): + if not isinstance(anim, dict): + report.error(path, "must be an object") + return + atype = anim.get("type") + if atype is not None and atype not in ANIMATION_TYPES: + report.warn(f"{path}.type", f'unknown type "{atype}"; client treats it as "none"') + if is_lottie and atype not in (None, "lottie", "none"): + report.warn(path, "ignored for Lottie sources (the .tgs/.json plays itself)") + if "duration" in anim and (not is_number(anim["duration"]) or anim["duration"] <= 0): + report.error(f"{path}.duration", "must be a positive number") + if "loop" in anim and not isinstance(anim["loop"], bool): + report.error(f"{path}.loop", "must be a boolean") + if "direction" in anim and anim["direction"] not in DIRECTIONS: + report.error(f"{path}.direction", 'must be "cw" or "ccw"') + if "amplitude" in anim and (not is_number(anim["amplitude"]) or anim["amplitude"] < 0): + report.error(f"{path}.amplitude", "must be a number >= 0") + + +def try_jsonschema(manifest, schema_path, report): + try: + import jsonschema + except ImportError: + return + try: + with open(schema_path, "r", encoding="utf-8") as f: + schema = json.load(f) + except OSError: + return + validator = jsonschema.Draft7Validator(schema) + for err in sorted(validator.iter_errors(manifest), key=lambda e: list(e.path)): + loc = "$" + "".join(f"[{p}]" if isinstance(p, int) else f".{p}" for p in err.path) + report.error(loc, f"[schema] {err.message}") + + +# --------------------------------------------------------------------------- +# Preview (GIF) generation +# --------------------------------------------------------------------------- + +def parse_hex(color): + color = color.lstrip("#") + return (int(color[0:2], 16), int(color[2:4], 16), int(color[4:6], 16)) + + +def tint_layer(img, tint, accent_rgb): + from PIL import Image + img = img.convert("RGBA") + if tint in (None, "none"): + return img + rgb = accent_rgb if tint == "theme" else parse_hex(tint) + solid = Image.new("RGBA", img.size, rgb + (0,)) + solid.putalpha(img.split()[3]) + solid.paste(Image.new("RGBA", img.size, rgb + (255,)), (0, 0), img.split()[3]) + return solid + + +def render_badge_gif(badge, canvas, manifest_dir, out_path, size, fps, bg, accent_rgb): + from PIL import Image + + layers = [] + for layer in badge["layers"]: + source = layer.get("source", "") + if source.lower().endswith(LOTTIE_EXTS): + print(f" note: Lottie layer '{source}' shown as a static frame in the preview") + asset = os.path.join(manifest_dir, source) + if not os.path.isfile(asset): + print(f" skip: missing asset '{source}'") + continue + try: + base = Image.open(asset).convert("RGBA") + except Exception as exc: # noqa: BLE001 + print(f" skip: cannot open '{source}': {exc}") + continue + lw = max(1, int(round(layer.get("width", canvas) / canvas * size))) + lh = max(1, int(round(layer.get("height", canvas) / canvas * size))) + base = base.resize((lw, lh), Image.LANCZOS) + base = tint_layer(base, layer.get("tint"), accent_rgb) + anim = layer.get("animation", {}) or {} + layers.append({ + "img": base, + "x": layer.get("x", 0) / canvas * size, + "y": layer.get("y", 0) / canvas * size, + "w": lw, + "h": lh, + "type": anim.get("type", "none"), + "duration": anim.get("duration", 1.0) or 1.0, + "cw": anim.get("direction", "cw") != "ccw", + "amplitude": anim.get("amplitude", 0.1), + "is_lottie": source.lower().endswith(LOTTIE_EXTS), + }) + + if not layers: + print(" skip: no renderable layers") + return False + + durations = [l["duration"] for l in layers if l["type"] in ("rotate", "blink", "pulse", "bounce", "shake") and not l["is_lottie"]] + loop_seconds = max(durations) if durations else 2.0 + frame_count = max(1, min(120, int(round(loop_seconds * fps)))) + + transparent = (bg == "none") + bg_rgba = (0, 0, 0, 0) if transparent else (parse_hex(bg) + (255,)) + + frames = [] + for f in range(frame_count): + t = (f / frame_count) * loop_seconds + canvas_img = Image.new("RGBA", (size, size), bg_rgba) + for l in layers: + frame_img = l["img"] + ox, oy = l["x"], l["y"] + cycles = max(1, round(loop_seconds / l["duration"])) if l["duration"] else 1 + phase = (t / loop_seconds) * cycles # whole cycles per loop -> seamless + angle = 2.0 * math.pi * phase + + if l["is_lottie"] or l["type"] in ("none",): + pass + elif l["type"] == "rotate": + deg = (phase * 360.0) % 360.0 + frame_img = frame_img.rotate(-deg if l["cw"] else deg, resample=Image.BICUBIC, expand=False) + elif l["type"] == "blink": + factor = 0.35 + 0.65 * (0.5 + 0.5 * math.cos(angle)) + frame_img = apply_alpha(frame_img, factor) + elif l["type"] == "pulse": + scale = 1.0 + l["amplitude"] * math.sin(angle) + frame_img, ox, oy = scaled(frame_img, scale, ox, oy, l["w"], l["h"]) + elif l["type"] == "bounce": + oy = oy - l["amplitude"] * l["h"] * abs(math.sin(angle)) + elif l["type"] == "shake": + ox = ox + l["amplitude"] * l["w"] * math.sin(2.0 * angle) + + canvas_img.alpha_composite(frame_img, (int(round(ox)), int(round(oy)))) + frames.append(canvas_img) + + save_gif(frames, out_path, fps, transparent) + print(f" wrote {out_path} ({frame_count} frames @ {fps}fps, loop {loop_seconds:.1f}s)") + return True + + +def apply_alpha(img, factor): + from PIL import Image + alpha = img.split()[3].point(lambda a: int(a * max(0.0, min(1.0, factor)))) + out = img.copy() + out.putalpha(alpha) + return out + + +def scaled(img, scale, ox, oy, w, h): + from PIL import Image + nw = max(1, int(round(w * scale))) + nh = max(1, int(round(h * scale))) + resized = img.resize((nw, nh), Image.LANCZOS) + return resized, ox - (nw - w) / 2.0, oy - (nh - h) / 2.0 + + +def save_gif(frames, out_path, fps, transparent): + from PIL import Image + duration_ms = int(round(1000.0 / fps)) + if transparent: + conv = [f.convert("P", palette=Image.ADAPTIVE, colors=255) for f in frames] + conv[0].save(out_path, save_all=True, append_images=conv[1:], loop=0, + duration=duration_ms, disposal=2, transparency=255) + else: + conv = [f.convert("RGB") for f in frames] + conv[0].save(out_path, save_all=True, append_images=conv[1:], loop=0, + duration=duration_ms, disposal=2) + + +def run_preview(manifest, manifest_dir, args): + try: + import PIL # noqa: F401 + except ImportError: + print("\n--preview needs Pillow. Install it with: pip install Pillow", file=sys.stderr) + return 1 + out_dir = args.out or manifest_dir + os.makedirs(out_dir, exist_ok=True) + canvas = manifest.get("canvas", 1024) + accent_rgb = parse_hex(args.accent) + any_done = False + print("\nGenerating previews:") + for badge in manifest.get("badges", []): + bid = badge.get("id", "badge") + if args.badge and bid != args.badge: + continue + out_path = os.path.join(out_dir, f"preview_{bid}.gif") + print(f" badge '{bid}':") + if render_badge_gif(badge, canvas, manifest_dir, out_path, args.size, args.fps, args.bg, accent_rgb): + any_done = True + if args.badge and not any_done: + print(f" no badge with id '{args.badge}'", file=sys.stderr) + return 1 + return 0 + + +def main(): + parser = argparse.ArgumentParser(description="Validate (and optionally preview) a WinterGram badge manifest.") + parser.add_argument("manifest", nargs="?", default=".wintergram/icons/manifest.json") + parser.add_argument("--schema", default=None) + parser.add_argument("--preview", action="store_true") + parser.add_argument("--badge", default=None) + parser.add_argument("--size", type=int, default=256) + parser.add_argument("--fps", type=int, default=30) + parser.add_argument("--bg", default="#1C1C1E") + parser.add_argument("--accent", default="#3478F6") + parser.add_argument("--out", default=None) + args = parser.parse_args() + + try: + with open(args.manifest, "r", encoding="utf-8") as f: + manifest = json.load(f) + except OSError as exc: + print(f"error: cannot read manifest: {exc}", file=sys.stderr) + return 2 + except json.JSONDecodeError as exc: + print(f"error: invalid JSON: {exc}", file=sys.stderr) + return 2 + + manifest_dir = os.path.dirname(os.path.abspath(args.manifest)) + schema_path = args.schema or os.path.join(manifest_dir, "manifest.schema.json") + + report = Report() + validate(manifest, manifest_dir, report) + try_jsonschema(manifest, schema_path, report) + + for w in report.warnings: + print(f"warning {w}") + for e in report.errors: + print(f"error {e}") + + if report.ok(): + n = len(manifest.get("badges", [])) + print(f"OK: manifest valid ({n} badge(s)).") + else: + print(f"\nFAILED: {len(report.errors)} error(s), {len(report.warnings)} warning(s).") + return 1 + + if args.preview: + return run_preview(manifest, manifest_dir, args) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/submodules/AuthorizationUI/BUILD b/submodules/AuthorizationUI/BUILD index 4757af3b84..305e89dbc2 100644 --- a/submodules/AuthorizationUI/BUILD +++ b/submodules/AuthorizationUI/BUILD @@ -31,6 +31,7 @@ swift_library( "//submodules/SolidRoundedButtonNode:SolidRoundedButtonNode", "//submodules/ImageCompression:ImageCompression", "//submodules/RMIntro:RMIntro", + "//submodules/AppBundle:AppBundle", "//submodules/QrCode:QrCode", "//submodules/PhoneInputNode:PhoneInputNode", "//submodules/CodeInputView:CodeInputView", diff --git a/submodules/AuthorizationUI/Sources/AuthorizationSequencePhoneEntryController.swift b/submodules/AuthorizationUI/Sources/AuthorizationSequencePhoneEntryController.swift index 9f9d886649..2cc1c3d69a 100644 --- a/submodules/AuthorizationUI/Sources/AuthorizationSequencePhoneEntryController.swift +++ b/submodules/AuthorizationUI/Sources/AuthorizationSequencePhoneEntryController.swift @@ -94,7 +94,8 @@ public final class AuthorizationSequencePhoneEntryController: ViewController, MF self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "___close", style: .plain, target: self, action: #selector(self.cancelPressed)) } - if let countriesConfiguration { + if let countriesConfiguration, !countriesConfiguration.countries.isEmpty { + // Keep the bundled fallback when the server config is empty. AuthorizationSequenceCountrySelectionController.setupCountryCodes(countries: countriesConfiguration.countries, codesByPrefix: countriesConfiguration.countriesByPrefix) } } diff --git a/submodules/AuthorizationUI/Sources/AuthorizationSequenceSplashController.swift b/submodules/AuthorizationUI/Sources/AuthorizationSequenceSplashController.swift index 9056e2daab..c368c02b1a 100644 --- a/submodules/AuthorizationUI/Sources/AuthorizationSequenceSplashController.swift +++ b/submodules/AuthorizationUI/Sources/AuthorizationSequenceSplashController.swift @@ -9,6 +9,7 @@ import TelegramPresentationData import LegacyComponents import SolidRoundedButtonNode import RMIntro +import AppBundle public final class AuthorizationSequenceSplashController: ViewController { private var controllerNode: AuthorizationSequenceSplashControllerNode { @@ -78,7 +79,11 @@ public final class AuthorizationSequenceSplashController: ViewController { super.init(navigationBarPresentationData: nil) self._hasGlassStyle = true - + + // Brand icon for the first intro page, matching the theme. + let iconName = theme.overallDarkAppearance ? "IntroLogoDark" : "IntroLogoLight" + self.controller.firstPageIcon = UIImage(bundleImageName: iconName) + self.supportedOrientations = ViewControllerSupportedOrientations(regularSize: .all, compactSize: .portrait) self.statusBar.statusBarStyle = theme.intro.statusBarStyle.style diff --git a/submodules/BrowserUI/Sources/BrowserMarkdown.swift b/submodules/BrowserUI/Sources/BrowserMarkdown.swift index cd2de7521f..8dc27064ce 100644 --- a/submodules/BrowserUI/Sources/BrowserMarkdown.swift +++ b/submodules/BrowserUI/Sources/BrowserMarkdown.swift @@ -1173,7 +1173,7 @@ public func richMarkdownAttributeIfNeeded(context: AccountContext, attributedTex // .textCustomEmoji in markdownInlineContent. A link is entity-expressible, // so an emoji-only message still classifies as not-rich (and falls through // to the entity path, where its untouched attribute makes a .CustomEmoji - // entity) — custom emoji alone never forces a rich message. + // entity). Custom emoji alone never forces a rich message. let text = markdownSourceInjectingCustomEmojiMarkers(attributedText) guard markdownMightNeedRichLayout(text) else { return nil diff --git a/submodules/CountrySelectionUI/BUILD b/submodules/CountrySelectionUI/BUILD index fe0f0049ad..ba4f11a089 100644 --- a/submodules/CountrySelectionUI/BUILD +++ b/submodules/CountrySelectionUI/BUILD @@ -16,6 +16,7 @@ swift_library( "//submodules/TelegramCore:TelegramCore", "//submodules/TelegramPresentationData:TelegramPresentationData", "//submodules/TelegramStringFormatting:TelegramStringFormatting", + "//submodules/libphonenumber:libphonenumber", "//submodules/SearchBarNode:SearchBarNode", "//submodules/AppBundle:AppBundle", "//submodules/ComponentFlow", diff --git a/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift b/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift index 3b3cdc1fc2..d8023a9fce 100644 --- a/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift +++ b/submodules/CountrySelectionUI/Sources/AuthorizationSequenceCountrySelectionController.swift @@ -11,6 +11,9 @@ import TelegramCore import ComponentFlow import BundleIconComponent import GlassBarButtonComponent +import libphonenumber + +private let countryPhoneNumberUtil = NBPhoneNumberUtil() private func loadCountryCodes() -> [Country] { guard let filePath = getAppBundle().path(forResource: "PhoneCountries", ofType: "txt") else { @@ -56,10 +59,38 @@ private func loadCountryCodes() -> [Country] { let countryName = locale.localizedString(forIdentifier: countryId) ?? "" if let _ = Int(countryCode) { - let code = Country.CountryCode(code: countryCode, prefixes: [], patterns: !pattern.isEmpty ? [pattern] : []) + let prefixes: [String] + if countryCode == "7" { + switch countryId { + case "RU": + prefixes = ["3", "4", "8", "9"] + case "KZ": + prefixes = ["6", "7"] + default: + prefixes = [] + } + } else if countryCode == "599" { + switch countryId { + case "BQ": + prefixes = ["3", "4", "7"] + case "CW": + prefixes = ["1", "6", "9"] + default: + prefixes = [] + } + } else { + prefixes = [] + } + let code = Country.CountryCode(code: countryCode, prefixes: prefixes, patterns: !pattern.isEmpty ? [pattern] : []) let country = Country(id: countryId, name: countryName, localizedName: nil, countryCodes: [code], hidden: false) result.append(country) - countriesByPrefix["\(code.code)"] = (country, code) + if !prefixes.isEmpty { + for prefix in prefixes { + countriesByPrefix["\(code.code)\(prefix)"] = (country, code) + } + } else if countriesByPrefix[code.code] == nil { + countriesByPrefix[code.code] = (country, code) + } } if let maybeNameRange = maybeNameRange { @@ -74,28 +105,36 @@ private func loadCountryCodes() -> [Country] { return result } -private var countryCodes: [Country] = loadCountryCodes() private var countryCodesByPrefix: [String: (Country, Country.CountryCode)] = [:] +private var countryCodes: [Country] = loadCountryCodes() + +private func updateCountryCodes(_ countries: [Country]) { + guard !countries.isEmpty else { + return + } + + countryCodes = countries + + var updatedCodesByPrefix: [String: (Country, Country.CountryCode)] = [:] + for country in countries { + for code in country.countryCodes { + if !code.prefixes.isEmpty { + for prefix in code.prefixes { + updatedCodesByPrefix["\(code.code)\(prefix)"] = (country, code) + } + } else { + updatedCodesByPrefix[code.code] = (country, code) + } + } + } + countryCodesByPrefix = updatedCodesByPrefix +} public func loadServerCountryCodes(accountManager: AccountManager, engine: TelegramEngineUnauthorized, completion: @escaping () -> Void) { let _ = (engine.localization.getCountriesList(accountManager: accountManager, langCode: nil) |> deliverOnMainQueue).start(next: { countries in - countryCodes = countries - - var countriesByPrefix: [String: (Country, Country.CountryCode)] = [:] - for country in countries { - for code in country.countryCodes { - if !code.prefixes.isEmpty { - for prefix in code.prefixes { - countriesByPrefix["\(code.code)\(prefix)"] = (country, code) - } - } else { - countriesByPrefix[code.code] = (country, code) - } - } - } - countryCodesByPrefix = countriesByPrefix - + updateCountryCodes(countries) + Queue.mainQueue().async { completion() } @@ -105,21 +144,8 @@ public func loadServerCountryCodes(accountManager: AccountManager, engine: TelegramEngine, completion: @escaping () -> Void) { let _ = (engine.localization.getCountriesList(accountManager: accountManager, langCode: nil) |> deliverOnMainQueue).start(next: { countries in - countryCodes = countries + updateCountryCodes(countries) - var countriesByPrefix: [String: (Country, Country.CountryCode)] = [:] - for country in countries { - for code in country.countryCodes { - if !code.prefixes.isEmpty { - for prefix in code.prefixes { - countriesByPrefix["\(code.code)\(prefix)"] = (country, code) - } - } else { - countriesByPrefix[code.code] = (country, code) - } - } - } - countryCodesByPrefix = countriesByPrefix Queue.mainQueue().async { completion() } @@ -204,6 +230,9 @@ public final class AuthorizationSequenceCountrySelectionController: ViewControll } public static func setupCountryCodes(countries: [Country], codesByPrefix: [String: (Country, Country.CountryCode)]) { + guard !countries.isEmpty else { + return + } countryCodes = countries countryCodesByPrefix = codesByPrefix } @@ -229,6 +258,7 @@ public final class AuthorizationSequenceCountrySelectionController: ViewControll public static func lookupCountryIdByNumber(_ number: String, preferredCountries: [String: String]) -> (Country, Country.CountryCode)? { let number = removePlus(number) var results: [(Country, Country.CountryCode)]? = nil + var matchedPrefixLength = 0 if number.count == 1, let preferredCountryId = preferredCountries[number], let country = lookupCountryById(preferredCountryId), let code = country.countryCodes.first { return (country, code) } @@ -244,10 +274,19 @@ public final class AuthorizationSequenceCountrySelectionController: ViewControll } } else { results = [country] + matchedPrefixLength = prefix.count } } } if let results = results { + if let firstResult = results.first, + matchedPrefixLength <= firstResult.1.code.count, + let parsedNumber = try? countryPhoneNumberUtil.parse("+\(number)", defaultRegion: nil), + let regionCode = countryPhoneNumberUtil.getRegionCode(for: parsedNumber), + let matchedCountry = countryCodes.first(where: { $0.id == regionCode }), + let matchedCode = matchedCountry.countryCodes.first(where: { number.hasPrefix($0.code) }) { + return (matchedCountry, matchedCode) + } if !preferredCountries.isEmpty, let (_, code) = results.first { if let preferredCountry = preferredCountries[code.code] { for (country, code) in results { diff --git a/submodules/Display/Source/LinkHighlightingNode.swift b/submodules/Display/Source/LinkHighlightingNode.swift index 7f4dbfffa3..5fd2994e82 100644 --- a/submodules/Display/Source/LinkHighlightingNode.swift +++ b/submodules/Display/Source/LinkHighlightingNode.swift @@ -62,8 +62,8 @@ private func drawRectsImageContent(size: CGSize, context: CGContext, color: UICo } else { // The path-stitching loop below assumes consecutive rects in a group // are adjacent (overlapping or sharing an edge). When they're disjoint - // — vertical gap, vertical inversion, or horizontal gap on the same - // line — it bridges them with a polygon perimeter that renders as a + // with a vertical gap, vertical inversion, or horizontal gap on the same + // line, it bridges them with a polygon perimeter that renders as a // diagonal bridge across empty space. Split groups whenever the next // rect doesn't intersect the last one (1pt slop in both axes matches // the snap loop's adjacency test). diff --git a/submodules/InstantPageUI/Sources/InstantPageAnchorPath.swift b/submodules/InstantPageUI/Sources/InstantPageAnchorPath.swift index ccb453ae50..1da6c31fba 100644 --- a/submodules/InstantPageUI/Sources/InstantPageAnchorPath.swift +++ b/submodules/InstantPageUI/Sources/InstantPageAnchorPath.swift @@ -4,9 +4,9 @@ import TelegramCore /// Recurses the `InstantPage` block tree to locate the anchor `name`, returning the /// details-sibling-ordinal path of enclosing `
` blocks (outermost first). /// -/// - `nil` — the anchor exists nowhere. -/// - `[]` — the anchor exists outside any `
` (top level, a table cell, a quote, etc.). -/// - `[2,0]`— inside the 3rd top-level `
`, then that details' 1st nested `
`. +/// - `nil`: the anchor does not exist. +/// - `[]`: the anchor is outside any `
`. +/// - `[2, 0]`: the third top-level `
`, then its first nested `
`. /// /// Ordinals (not layout indices) because the layout's details index counter is /// expansion-dependent. Consumers map ordinals to live indices via @@ -71,23 +71,7 @@ private func instantPageAnchorPathSearch( } } default: - // .unsupported/.divider/.formula/.image/.video/.audio/.webEmbed/.channelBanner/.map — - // leaf/media blocks with no anchor-bearing text. (.relatedArticles also lands here: the - // V2 layout discards its title and lays out only the article media, so its title text is - // never rendered.) - // - // CRITICAL — the recursion set here must match the containers the V2 layout recurses - // through layoutBlock (and thus counts
in via detailsIndexCounter). Those are - // exactly .blockQuote, .cover, and .list's .blocks items — all handled above, sharing - // detailsOrdinal. The following carry [InstantPageBlock] children but are deliberately - // NOT recursed because the V2 layout does NOT lay their children out as blocks, so it - // never counts a nested
in them — recursing here while sharing detailsOrdinal - // would desync our ordinals from the layout: - // • .collage/.slideshow — layoutCollage/layoutSlideshow lay out only .image/.video children. - // • .postEmbed — layoutMediaWithCaption lays out only its caption (a real .text item, - // so a caption anchor is found by anchorFrame directly); its `blocks` are ignored. - // Any anchor inside a non-laid-out child is unresolvable by anchorFrame anyway, so - // skipping it here is a no-op either way. + // Keep recursion aligned with the V2 block layout. break } } diff --git a/submodules/InstantPageUI/Sources/InstantPageAudioNode.swift b/submodules/InstantPageUI/Sources/InstantPageAudioNode.swift index 573281233d..271eccd540 100644 --- a/submodules/InstantPageUI/Sources/InstantPageAudioNode.swift +++ b/submodules/InstantPageUI/Sources/InstantPageAudioNode.swift @@ -206,7 +206,7 @@ final class InstantPageAudioNode: ASDisplayNode, InstantPageNode { // button. An ASControl's `.touchUpInside` is cancelled by the chat ListView's gesture // system (the control highlights on touch-down, but the action never fires), so an // embedded audio control in a rich-message bubble could never start playback. A gesture - // recognizer coordinates with the list's gestures and fires reliably — matching the V2 + // recognizer coordinates with the list's gestures and fires reliably, matching the V2 // image node, the details-title hit view, and the regular file/music message. The plain // view sits above `statusNode` and is positioned over the icon in `layout()`. (Works in // V1's full-page Instant View too; gesture recognizers fire inside its scroll view.) @@ -281,4 +281,3 @@ final class InstantPageAudioNode: ASDisplayNode, InstantPageNode { self.scrubbingNode.frame = CGRect(origin: CGPoint(x: leftScrubberInset, y: 26.0 + topOffset), size: CGSize(width: size.width - leftScrubberInset - rightScrubberInset, height: 15.0)) } } - diff --git a/submodules/InstantPageUI/Sources/InstantPageMediaOpen.swift b/submodules/InstantPageUI/Sources/InstantPageMediaOpen.swift index 22ec793857..d5e078e606 100644 --- a/submodules/InstantPageUI/Sources/InstantPageMediaOpen.swift +++ b/submodules/InstantPageUI/Sources/InstantPageMediaOpen.swift @@ -14,7 +14,7 @@ import LocationUI /// - `.webpage(webPage)` cover → single-entry `InstantPageGalleryController`. /// - `.file(file)` with `isAnimated` → single-entry gallery in "playing video" mode. /// - Default → multi-entry gallery built from `allMedias` (filtered to `.image` and non-audio -/// `.file` — audio/music siblings are excluded), centered on the tapped media; "playing +/// `.file`; audio and music siblings are excluded), centered on the tapped media; "playing /// video" mode is on. /// /// Behavior matches V1's `InstantPageControllerNode.openMedia(_:)` bit-for-bit. @@ -23,7 +23,7 @@ import LocationUI /// - allMedias: every laid-out media on the page, in laid-out order. Used to build sibling /// entries when the gallery needs them. Callers may pass `[]` for paths that don't need /// siblings (e.g. webpage-cover single-entry gallery), but it's safer to always pass the -/// full list — the helper filters/uses it only on the default branch. +/// full list. The helper filters it only on the default branch. /// - transitionArgsForMedia: invoked by the gallery presentation to find the source rect for /// the swipe-back animation; return `nil` if the source view is not on screen. /// - hiddenMediaCallback: invoked while the gallery is foregrounded so callers can hide the diff --git a/submodules/InstantPageUI/Sources/InstantPageMultiTextAdapter.swift b/submodules/InstantPageUI/Sources/InstantPageMultiTextAdapter.swift index b394f154ea..b5d83c494f 100644 --- a/submodules/InstantPageUI/Sources/InstantPageMultiTextAdapter.swift +++ b/submodules/InstantPageUI/Sources/InstantPageMultiTextAdapter.swift @@ -181,7 +181,7 @@ public final class InstantPageMultiTextAdapter: ASDisplayNode, TextNodeProtocol // A blockquote is exploded by the layout into one text item per child line, // each stamped with quoteDepth > 0. Re-coalesce a run of consecutive quoted // segments into a single block whose lines are joined by `\n` (each carrying - // its own `> ` depth), matching the whole-message converter — otherwise every + // its own `> ` depth), matching the whole-message converter. Otherwise every // quote line would become its own block and be separated by a blank line. if depth > 0 { var lines: [String] = [] diff --git a/submodules/InstantPageUI/Sources/InstantPageRenderer.swift b/submodules/InstantPageUI/Sources/InstantPageRenderer.swift index 23d8d00a07..4b0dde4524 100644 --- a/submodules/InstantPageUI/Sources/InstantPageRenderer.swift +++ b/submodules/InstantPageUI/Sources/InstantPageRenderer.swift @@ -21,7 +21,7 @@ import ShimmeringMask /// Stable identity for an `InstantPageV2LaidOutItem` across `update()` calls. The renderer /// uses this to harvest existing item views and reuse them when the new layout still has -/// an item with the same id — preventing the media wrappers from torching their fetch +/// an item with the same id, preserving media fetch /// signals + image content on every chat-bubble re-apply. /// /// Media items use their `media.index` (already unique within a page and used as the @@ -42,7 +42,7 @@ public enum InstantPageV2ItemKind: Hashable { // MARK: - Render context /// Bundle of render-time dependencies required to display real media inside an InstantPage V2 -/// view. Tied to an `InstantPageV2View` for the view's lifetime — if any field would change +/// view. Tied to an `InstantPageV2View` for the view's lifetime. If any field would change /// (typically because the bubble was recycled with a different webpage), the caller must /// rebuild the V2View with a fresh render context. /// @@ -93,7 +93,7 @@ public final class InstantPageV2RenderContext { /// streaming bubble to reuse one V2View across `stableVersion` bumps instead of rebuilding. /// Only `webpage` changes across chunks; the `imageReference`/`fileReference` closures keep /// their construction-time `MessageReference` snapshot, which is acceptable because the message - /// id is stable across chunks (media resolves by id) and streamed AI content carries no media. + /// id is stable across chunks and streamed content carries no media. public func updateContent(webpage: TelegramMediaWebpage) { self.webpage = webpage } @@ -152,7 +152,7 @@ public final class InstantPageV2View: UIView { private var emojiEnableLooping: Bool = true /// Scroll-visibility rect in this view's coordinate space; gates emoji animation looping. - /// `nil` means "not visible" → emoji don't animate. The root rect is set by the bubble and + /// `nil` means not visible, so emoji do not animate. The root rect is set by the bubble and /// propagated down the nested tree (details/table) by `propagateVisibilityRect`. public var visibilityRect: CGRect? { didSet { @@ -179,7 +179,7 @@ public final class InstantPageV2View: UIView { /// Walks the `rootMediaRegistryHost` chain transitively until it finds a self-referencing /// host (the true root). Necessary because nested details blocks can leave an inner body's - /// `rootMediaRegistryHost` pointing at an intermediate body rather than the outer root — + /// `rootMediaRegistryHost` pointing at an intermediate body rather than the outer root. /// `propagateRegistryHost(to:)` only walks one hop, so the chain must be followed at lookup. var trueRegistryRoot: InstantPageV2View { var host: InstantPageV2View = self @@ -251,7 +251,7 @@ public final class InstantPageV2View: UIView { let newFrame = InstantPageV2View.actualFrame(forItem: item) // parent positions child if animation.isAnimated && reusedView.frame != newFrame { // A collapsing details view keeps its body alive; remove it once this - // frame-shrink (the clip that hides it) finishes — see finalizePendingCollapse(). + // frame shrink finishes. See finalizePendingCollapse(). let detailsView = reusedView as? InstantPageV2DetailsView animation.animator.updateFrame(layer: reusedView.layer, frame: newFrame, completion: { [weak detailsView] _ in detailsView?.finalizePendingCollapse() @@ -316,7 +316,7 @@ public final class InstantPageV2View: UIView { for view in self.itemViews { // Top-level `.text` items host their emoji directly. The thinking block hosts emoji on - // its shimmer-wrapped inner text view, which the page never sees as a top-level item — + // its shimmer-wrapped inner text view, which is not a top-level item, // so without this it is skipped and the emoji never get layers (invisible). Nested V2 // sub-layouts (details bodies, table cells) instead run their own updateInlineEmoji. let textView: InstantPageV2TextView @@ -574,7 +574,7 @@ public final class InstantPageV2View: UIView { // Pushes this view's `visibilityRect` down into every nested V2 view (details body, table // title + cells), converted into each child's coordinate space. Each child's `visibilityRect` - // didSet re-runs `updateEmojiVisibility`, which propagates one level further — so a single + // didSet re-runs `updateEmojiVisibility`, which propagates one level further, so a single // root assignment fans out across the whole tree. private func propagateVisibilityRect() { for view in self.itemViews { @@ -829,8 +829,7 @@ public final class InstantPageV2View: UIView { /// /// For most item types this is `item.frame`. `InstantPageV2TextView` widens its backing store /// by `v2TextViewClippingInset` on every side to accommodate glyph overhang and underline - /// rendering past the text's logical `maxY` — the same inset its `init` applies when - /// constructing the view. The reuse path must apply the same expansion so that re-layout + /// rendering past the text's logical `maxY`. The reuse path applies the same expansion so re-layout /// (theme change, bubble resize, etc.) does not clip italic glyphs or underlines. /// /// Keep this helper aligned with each view class's init-time frame computation. @@ -924,7 +923,7 @@ final class InstantPageV2TextView: UIView, InstantPageItemView { } } - // Reveal mask state — populated in Task 5. + // Reveal mask state. private var maxCharacterDrawCount: Int? private var previousMaxCharacterDrawCount: Int = 0 private var revealMaskLayer: SimpleLayer? @@ -962,7 +961,7 @@ final class InstantPageV2TextView: UIView, InstantPageItemView { self.item = item // Lay every container out from the item's own (clipping-inset-expanded) frame rather than // self.bounds, so the single path is correct regardless of when the parent assigns our - // frame — and so a reused text view that changed size (e.g. AI streaming) re-frames its + // frame. A reused text view that changes size also updates its // renderContainer/renderView too, which the old update path skipped. let containerBounds = CGRect(origin: .zero, size: item.frame.insetBy(dx: -v2TextViewClippingInset, dy: -v2TextViewClippingInset).size) self.renderContainer.frame = containerBounds @@ -1165,7 +1164,7 @@ final class InstantPageV2TextView: UIView, InstantPageItemView { let currentLineInfos = self.computeRevealedLines(characterLimit: effectiveCharacterDrawCount) - // Snippet spawn pass — animate newly-revealed characters. + // Animate newly revealed characters. if self.previousMaxCharacterDrawCount < effectiveCharacterDrawCount, let contents = self.renderView.layer.contents, animateNewSegments { @@ -1235,9 +1234,9 @@ final class InstantPageV2TextView: UIView, InstantPageItemView { } } - // Mask rebuild — when snippets are in flight, clamp to the lowest animating one + // Clamp the mask to the lowest animating snippet // (so the mask never exposes a char a snippet is still flying for). With no animations - // in flight, snap directly to the current target — `previousMaxCharacterDrawCount` + // in flight, snap directly to the current target. `previousMaxCharacterDrawCount` // would lag by one call (it's updated at the end of this function) and is 0 on a fresh // view, which would hide every char until the next tick. let maskCharacterLimit: Int @@ -1257,7 +1256,7 @@ final class InstantPageV2TextView: UIView, InstantPageItemView { // Per-glyph rect captures descenders, italic overhang, accents exactly. Per // line we accumulate the union of revealed glyphs into one mask rect (one // CALayer sublayer per line), and consecutive fully-revealed lines collapse - // further into a single rect — so a fully-revealed prefix is always one + // further into a single rect, so a fully revealed prefix is always one // sublayer regardless of line count. // // Lines without per-character data (computeRevealCharacterRects == false on @@ -1298,7 +1297,7 @@ final class InstantPageV2TextView: UIView, InstantPageItemView { lineUnion = union remainingChars -= characterRects.count } else { - // No per-character data — expose the whole line. + // Expose the whole line without character data. lineUnion = line.range.length > 0 ? renderLocalLineFrame : nil isFullLine = remainingChars >= line.range.length remainingChars -= line.range.length @@ -1705,10 +1704,10 @@ final class InstantPageV2DetailsView: UIView, InstantPageItemView { var bodyView: InstantPageV2View? private let titleHitView: UIView - // The expanded chevron is the collapsed one rotated 180° (down → up). + // Rotate the collapsed chevron for the expanded state. private static let expandedChevronTransform = CATransform3DMakeRotation(CGFloat.pi, 0.0, 0.0, 1.0) // On an animated collapse the body is kept until the toggle animation finishes (so the - // shrinking clip can hide it), then removed in finalizePendingCollapse() — which the parent + // shrinking clip can hide it), then removed in finalizePendingCollapse(). The parent // (InstantPageV2View.update) calls from the completion of the frame-shrink (clip) animation. private var bodyPendingRemoval = false @@ -1744,7 +1743,7 @@ final class InstantPageV2DetailsView: UIView, InstantPageItemView { super.init(frame: item.frame) self.backgroundColor = .clear // structural - self.clipsToBounds = true // structural — the parent's frame-height animation clips the body + self.clipsToBounds = true self.addSubview(self.titleTextView) self.addSubview(self.chevronView) @@ -1755,7 +1754,7 @@ final class InstantPageV2DetailsView: UIView, InstantPageItemView { self.titleHitView.addGestureRecognizer(tap) // All content (title, chevron tint/position, separator, titleHit frame, body) flows through - // update — its expanded branch lazily creates the body, so init no longer builds it itself. + // update. Its expanded branch creates the body lazily. self.update(item: item, theme: theme, renderContext: renderContext, animation: .None) } @@ -1786,7 +1785,7 @@ final class InstantPageV2DetailsView: UIView, InstantPageItemView { self.titleHitView.frame = item.titleFrame // Body lifecycle. The reveal/hide of the body is produced by the parent animating this - // view's own frame height (clipsToBounds = true), not by the body itself — see + // view's own frame height (clipsToBounds = true), not by the body itself. See // InstantPageV2View.update. The body's internal layout is forwarded `animation` so a // *nested* details block inside the body can also animate its own toggle. let blockHeight: CGFloat @@ -1842,7 +1841,7 @@ final class InstantPageV2DetailsView: UIView, InstantPageItemView { height: UIScreenPixel ), completion: nil) - // Chevron rotation. The body teardown on collapse is NOT tied to this completion — see + // Body teardown is not tied to chevron rotation. See // finalizePendingCollapse(), which the parent calls from the frame-shrink (clip) animation. let targetTransform = item.isExpanded ? InstantPageV2DetailsView.expandedChevronTransform : CATransform3DIdentity animation.animator.updateTransform(layer: self.chevronView.layer, transform: targetTransform, completion: nil) @@ -1851,7 +1850,7 @@ final class InstantPageV2DetailsView: UIView, InstantPageItemView { /// Removes the body kept alive across an animated collapse. The parent (InstantPageV2View.update) /// calls this from the completion of the frame-shrink animation that clips the body away, so the /// body is torn down exactly when it finishes being hidden. The guard makes a re-expand that - /// interrupts the collapse safe — the re-expand clears `bodyPendingRemoval` first. + /// interrupts the collapse safely because re-expanding clears `bodyPendingRemoval`. func finalizePendingCollapse() { if !self.item.isExpanded, self.bodyPendingRemoval { self.bodyView?.removeFromSuperview() @@ -1938,8 +1937,8 @@ final class InstantPageV2ThinkingView: UIView, InstantPageItemView { /// Parent positions self at the item frame (the bare line box). The shimmer and its gradient /// mask are sized to the text view's clipping-inset-EXPANDED frame and shifted to /// `(-inset, -inset)`, so the mask doesn't crop the glyph overhang the inset reserves (tall - /// ascenders, descenders, the last line's underline) — the symptom of sizing the mask to the - /// bare line box. The inner text view fills the shimmer; its `+inset` render translate lands the + /// ascenders, descenders, and the last line's underline). The inner text view fills the shimmer; + /// its `+inset` render translate lands the /// glyphs back at self's origin, so the text position is unchanged. Mirrors how a `.text` view's /// frame is inset-expanded (`actualFrame` / `InstantPageV2TextView.init`). private func layoutContents() { @@ -2026,7 +2025,7 @@ final class InstantPageV2TableView: UIView, InstantPageItemView { // every frame / colour / sub-layout below. Insertion order matches the original interleaved // build so the layer/subview z-order is unchanged (stripes at the bottom, then the title and // cell sub-views, then the inner grid lines). Cell-count changes on later reuse are not - // reconciled here (pre-existing limitation) — update's index-guarded loops refresh in place. + // reconciled here; update's index-guarded loops refresh in place. if item.titleSubLayout != nil { let v = InstantPageV2View(renderContext: renderContext) self.contentView.addSubview(v) @@ -2090,7 +2089,7 @@ final class InstantPageV2TableView: UIView, InstantPageItemView { } } - // Stripe layers (cell backgrounds) — update color + frame + corner rounding in original order. + // Update cell background layers in their original order. let effectiveBorderWidth = item.bordered ? v2TableBorderWidth : 0.0 let gridHeight = item.contentSize.height - gridOffsetY var stripeIndex = 0 @@ -2111,7 +2110,7 @@ final class InstantPageV2TableView: UIView, InstantPageItemView { } } - // Inner line layers — refresh colour AND frame in place. (`lineLayers` holds only inner grid + // Refresh inner grid line colors and frames. // lines; the outer border is the contentView layer's own rounded border, refreshed below.) // Frames are set here (not in init) so reuse with a different grid re-positions the lines. let lineRects = item.horizontalLines + item.verticalLines @@ -2122,7 +2121,7 @@ final class InstantPageV2TableView: UIView, InstantPageItemView { } } - // Rounded outer border — refresh radius/color/width (theme or `bordered` flag may change). + // Refresh the rounded outer border. self.contentView.layer.cornerRadius = v2TableCornerRadius self.contentView.layer.borderColor = item.borderColor.cgColor self.contentView.layer.borderWidth = item.bordered ? v2TableBorderWidth : 0.0 @@ -2168,7 +2167,7 @@ public extension InstantPageV2View { } /// The frame (pageView-space) of the anchor `name` in the *currently laid-out* layout. - /// Returns nil if the anchor isn't present — e.g. it's inside a collapsed `
` + /// Returns nil if the anchor is missing or inside collapsed `
` /// (whose inner blocks aren't laid out) or doesn't exist. Mirrors `findTextItem`. func anchorFrame(name: String) -> CGRect? { guard let layout = self.currentLayout else { return nil } @@ -2178,7 +2177,7 @@ public extension InstantPageV2View { /// Given a details-sibling-ordinal path (from `instantPageAnchorPath`), walk the live layout /// and return the `currentExpandedDetails` index of the FIRST not-yet-expanded `
` on /// the path. Returns nil if every details on the path is already expanded, or the path doesn't - /// match the live layout. Reads indices from the laid-out items — never reproduces them. + /// match the live layout. Reads indices from the laid-out items. func firstCollapsedDetails(forOrdinalPath path: [Int]) -> Int? { guard let layout = self.currentLayout else { return nil } var currentItems = layout.items @@ -2403,7 +2402,7 @@ private func collectSelectableTextItems( /// For block formulas wider than the bubble's available width, the layout sets /// `isScrollable = true`; this view then wraps the image in a horizontal `UIScrollView` /// matching V1's `InstantPageScrollableNode` (no bounce on non-overflowing content, -/// scroll indicator hidden — appropriate for content embedded inside a chat bubble). +/// scroll indicator hidden, for content embedded inside a chat bubble). final class InstantPageV2FormulaView: UIView, InstantPageItemView { private(set) var item: InstantPageV2FormulaItem var itemFrame: CGRect { return self.item.frame } diff --git a/submodules/InstantPageUI/Sources/InstantPageTextItem.swift b/submodules/InstantPageUI/Sources/InstantPageTextItem.swift index b11e0b988a..ff0676ddef 100644 --- a/submodules/InstantPageUI/Sources/InstantPageTextItem.swift +++ b/submodules/InstantPageUI/Sources/InstantPageTextItem.swift @@ -364,8 +364,7 @@ public final class InstantPageTextItem: InstantPageItem { } public func attributesAtPoint(_ point: CGPoint, orNearest: Bool) -> (Int, [NSAttributedString.Key: Any])? { - // Hit-testing (taps on links/entities) wants the character under the finger — keep the - // strict, clamping behavior. + // Clamp taps to the character under the finger. if !orNearest { return self.attributesAtPoint(point) } @@ -402,8 +401,7 @@ public final class InstantPageTextItem: InstantPageItem { } else if point.x >= lineFrame.maxX { // Trailing edge: return the line's upper bound (one past its last character) so a // right-handle drag can include the last character/item of the line. The selection - // upper bound is exclusive, so clamping to the last character's index — as the strict - // path does — would always leave it unselected. Mirrors Display.TextNode. + // upper bound is exclusive, so use the line end. Mirrors Display.TextNode. index = lineRange.location + lineRange.length } else { index = CTLineGetStringIndexForPosition(line.line, CGPoint(x: point.x - lineFrame.minX, y: 0.0)) @@ -964,7 +962,7 @@ func attributedStringForRichText(_ text: RichText, styleStack: InstantPageTextSt // Size the inline emoji to the font's line height (A + D) plus a 4pt bump at the 17pt // body font (scaled proportionally). Must match the V2 layout's emoji cell size // (InstantPageV2Layout.swift). The run delegate still reports the font's own - // ascent/descent (below), so the line height is unchanged — only the emoji width changes. + // ascent/descent, so only the emoji width changes. let itemSize = font.ascender - font.descender + 4.0 * font.pointSize / 17.0 let extentBuffer = UnsafeMutablePointer.allocate(capacity: 1) extentBuffer.initialize(to: RunStruct(ascent: font.ascender, descent: font.descender, width: itemSize)) diff --git a/submodules/InstantPageUI/Sources/InstantPageV2AudioContentNode.swift b/submodules/InstantPageUI/Sources/InstantPageV2AudioContentNode.swift index a3b0dd0db5..019ac3e50b 100644 --- a/submodules/InstantPageUI/Sources/InstantPageV2AudioContentNode.swift +++ b/submodules/InstantPageUI/Sources/InstantPageV2AudioContentNode.swift @@ -195,8 +195,7 @@ final class InstantPageV2AudioContentNode: ASDisplayNode { self.descriptionAttributedString = InstantPageV2AudioContentNode.descriptionString(file: self.file, incoming: incoming, presentationData: presentationData) let messageTheme = incoming ? presentationData.theme.chat.message.incoming : presentationData.theme.chat.message.outgoing self.statusNode.backgroundNodeColor = messageTheme.mediaActiveControlColor - // foreground/overlay also depend on incoming + theme (set at construction) — refresh them - // too so the play glyph isn't miscolored after an in-place theme/direction change. + // Refresh colors after an in-place theme or direction change. self.statusNode.foregroundNodeColor = (incoming && messageTheme.mediaActiveControlColor.rgb != 0xffffff) ? .white : .clear self.statusNode.overlayForegroundNodeColor = presentationData.theme.chat.message.mediaOverlayControlColors.foregroundColor diff --git a/submodules/InstantPageUI/Sources/InstantPageV2InlineImageView.swift b/submodules/InstantPageUI/Sources/InstantPageV2InlineImageView.swift index d0cffb82ee..4e269db559 100644 --- a/submodules/InstantPageUI/Sources/InstantPageV2InlineImageView.swift +++ b/submodules/InstantPageUI/Sources/InstantPageV2InlineImageView.swift @@ -9,14 +9,14 @@ import AccountContext import PhotoResources import MediaResources -/// Lightweight inline image view for InstantPage V2 — wraps a `TransformImageNode` +/// Inline InstantPage V2 image backed by `TransformImageNode`. /// to render a single `RichText.image` cell inside a text view. /// /// Owned by `InstantPageV2View` (not an `InstantPageItemView` conformer; not in /// the view-factory switch). Hosted inside the parent text view's /// `imageContainerView` (sibling of `renderContainer`, above the reveal mask, /// below `emojiContainerView`), so the streaming reveal can wipe text glyphs -/// while the image pops in independently. Non-interactive — taps pass through +/// while the image pops in independently. Taps pass through /// to the text view, so a URL-wrapping `RichText.url(text: .image(...))` /// continues to route taps to the URL handler. final class InstantPageV2InlineImageView: UIView { diff --git a/submodules/InstantPageUI/Sources/InstantPageV2Layout.swift b/submodules/InstantPageUI/Sources/InstantPageV2Layout.swift index 2f20740493..eb962bc380 100644 --- a/submodules/InstantPageUI/Sources/InstantPageV2Layout.swift +++ b/submodules/InstantPageUI/Sources/InstantPageV2Layout.swift @@ -20,7 +20,7 @@ public struct InstantPageV2Layout { /// `line.imageItems` MediaIds at update time. Nested layouts (details body, /// table cells, table title) carry the parent's same map. public let media: [EngineMedia.Id: EngineMedia] - /// Webpage carried for the same reason — `updateInlineImages()` needs it to + /// Webpage carried because `updateInlineImages()` needs it to /// form the `WebpageReference` for `ImageMediaReference.webPage(...)`. May /// be nil for non-webpage-anchored layouts; in that case the lookup proceeds /// but no fetch signal can be bound (image view simply isn't created). @@ -121,7 +121,7 @@ public enum InstantPageV2LaidOutItem { } /// Returns a copy of `self` with its top-level frame translated by `delta`. - /// Sub-layouts inside details/table cells are not re-translated — they're already + /// Sub-layouts inside details and table cells are already /// expressed in their parent's local coordinates. public func offsetBy(_ delta: CGPoint) -> InstantPageV2LaidOutItem { switch self { @@ -470,7 +470,7 @@ public func lastTextLineFrame(in layout: InstantPageV2Layout) -> CGRect? { } case let .table(table): // Walk cells in reverse row-major order (last cell of last row first). - // The renderer shifts cells down by gridOffsetY (title height) — match that here. + // Match the renderer's title offset. let gridOffsetY = table.titleFrame?.height ?? 0.0 for cell in table.cells.reversed() { if let subLayout = cell.subLayout, let frame = lastTextLineFrame(in: subLayout) { @@ -497,7 +497,7 @@ public func lastTextLineFrame(in layout: InstantPageV2Layout) -> CGRect? { /// anchor at `maxY + trailingBottomPadding` to align with where the text actually renders. The pad /// is 0 when the line is taller than its font line height (a tall inline attachment, e.g. a formula, /// already pushes maxY down to the right spot). Callers should NOT apply the pad when the status -/// wraps onto its own line below the text — there it should sit at the bare maxY. +/// wraps onto its own line below the text, where it sits at the bare maxY. public func lastTextLineFrameIfLastItemIsText(in layout: InstantPageV2Layout) -> (frame: CGRect, trailingBottomPadding: CGFloat)? { guard let bottomItem = layout.items.max(by: { $0.frame.maxY < $1.frame.maxY }), case let .text(text) = bottomItem, @@ -505,11 +505,9 @@ public func lastTextLineFrameIfLastItemIsText(in layout: InstantPageV2Layout) -> else { return nil } - // The stored line frame always has minX = 0 — alignment (center / right / natural-RTL) is - // applied at render time by `v2FrameForLine`. Apply the same correction here so the returned + // Alignment is applied at render time by `v2FrameForLine`. Apply the same correction here so the returned // frame's `maxX` reflects the line's actual on-screen right edge, not just its width anchored - // at the textItem's left. Without this, a right-aligned or RTL last line — whose visible right - // edge sits at `textItem.width`, all the way at the right text inset — would feed the status + // at the text item's left. Without this, a right-aligned or RTL last line would feed the status // node a `contentWidth` equal to just `lineWidth`. The trail/wrap decision would then think // the date fits trailing the line, and place it directly on top of the line at the right text // inset where the line itself ends. The width is unchanged; only `origin.x` shifts. @@ -602,8 +600,8 @@ private func layoutBlockSequence( var contentSize = CGSize(width: boundingWidth, height: contentHeight) if context.fitToWidth { - // Match V1 InstantPageLayout.swift:1114 — include `+ horizontalInset` so the contentSize - // reserves a right margin equal to the left inset. Without this, the longest text item's + // Match V1 and include `horizontalInset` in the content size. This + // reserves a right margin equal to the left inset. Without it, the longest text item's // right edge equals contentSize.width, and the bubble's containerNode (sized to // boundingSize.width - 2) clips the last 2pt of text. var maxX: CGFloat = 0.0 @@ -755,7 +753,7 @@ private func layoutBlock( context: &context ) } else { - // Fallback when the image is not present in the page's media dict — preserve V1 + // Preserve the V1 fallback when the image is missing. // behavior, which returns an empty layout for unknown image IDs (V1 // InstantPageLayout.swift:623). The existing layoutMediaWithCaption would emit a // grey rectangle; matching V1 instead. @@ -923,10 +921,8 @@ private func layoutBlock( horizontalInset: horizontalInset, context: &context) case let .map(latitude, longitude, zoom, dimensions, caption): - // AI/server-sent `.map` blocks can arrive with zero `dimensions` (the wire `w`/`h` are - // required, but the sender may put 0). A zero `naturalSize.height` collapses the media - // frame to height 0 (`instantPageV2MediaFrame`'s else branch) — the map takes no space, - // the caption slides up into it, and the pin floats over the caption — and a zero-sized + // `.map` blocks can arrive with zero dimensions. A zero `naturalSize.height` collapses the media + // frame to height 0 (`instantPageV2MediaFrame`'s else branch). A zero-sized // `MapSnapshotMediaResource` makes `MKMapSnapshotter` render nothing. Substitute a sensible // default (a 2:1 map strip) for BOTH the layout size and the snapshot resource. Real web // articles (the V1 renderer) always carry real dimensions, so only the rich-message path @@ -1757,15 +1753,12 @@ private let instantPageV2MediaEdgeBleed: CGFloat = 4.0 // `boundingWidth`) with corner radius forced to 0, relying on the bubble's rounded clipping // container to round media that meets the bubble's top/bottom edge. A media item that fills the // full width is widened by `instantPageV2MediaEdgeBleed` on the trailing edge (see the constant). -// A media item narrower than the full width (a small image — NOT upscaled, the `min(_, 1.0)` +// A media item narrower than the full width (a small image that is not upscaled; the `min(_, 1.0)` // scale cap is kept) stays at its natural size, flush-left at x = 0, with no bleed. -// (The `cornerRadius` argument is ignored when `flush == true` — flush media is always -// un-rounded; callers may still pass their legacy radius, it has no effect.) +// The `cornerRadius` argument is ignored when `flush == true`; flush media is unrounded. // -// `flush == false`: DEAD as of the V2 audio port — audio was its last caller and now has its -// own `layoutAudio` arm (in `layoutBlock`), so this branch is currently unreachable (follow-up: -// drop the `flush` parameter and this branch). Legacy behavior was: inset by `horizontalInset` -// on each side with the caller-supplied corner radius. +// `flush == false` is unused after the V2 audio port. +// Legacy behavior inset media by `horizontalInset` with the caller-supplied corner radius. // // Returns the frame, the un-bled scaled content size (the caption is offset by // `scaledSize.height`), and the effective corner radius to stamp on the item. @@ -1862,7 +1855,7 @@ private func layoutCollage( horizontalInset: CGFloat, context: inout LayoutContext ) -> [InstantPageV2LaidOutItem] { - // 1. One size per inner block (zero for unresolved — V1 still reserves a mosaic slot). + // One size per inner block; V1 reserves a slot for unresolved media. var itemSizes: [CGSize] = [] for block in innerBlocks { switch block { @@ -1883,7 +1876,7 @@ private func layoutCollage( } } - // 2. Mosaic geometry — the same engine V1 uses. + // Use the V1 mosaic geometry. let (mosaic, mosaicSize) = chatMessageBubbleMosaicLayout(maxSize: CGSize(width: boundingWidth, height: boundingWidth), itemSizes: itemSizes) // 3. One typed media item per resolvable cell, at its mosaic frame. @@ -2009,7 +2002,7 @@ private func layoutMediaWithCaption( ) result.append(contentsOf: captionItems) - // isCover adds extra 14pt bottom padding — but only when caption/credit text was actually + // Covers add 14pt bottom padding when caption or credit text was // rendered (matches V1 lines 204-206: `contentSize.height > 0 && isCover`). For an // empty-caption cover image no padding is added. // Implemented by extending the last text item's frame rather than emitting an invisible shape @@ -2236,12 +2229,12 @@ private func layoutCodeBlock( // Top-level (and
) code blocks span the full boundingWidth flush (x=0), matching V1 // (line 348). Inside a blockquote the child inset is raised above the page inset (by - // lineInset), so honor it here — otherwise the full-width background bleeds out under the + // lineInset), so honor it here. Otherwise the full-width background bleeds under the // quote bar instead of insetting to the quote's content gutter like the quote's text does. let blockHeight = textSize.height + backgroundInset * 2.0 let isNestedInQuote = horizontalInset > context.pageHorizontalInset // Inset (quote-nested) code blocks get an 8pt rounded background; flush (top-level / details) - // ones stay square — the bubble's own rounded clip handles their edges. + // ones stay square. The bubble clip handles their edges. let cornerRadius: CGFloat = isNestedInQuote ? 8.0 : 0.0 let blockFrame = CGRect( x: isNestedInQuote ? horizontalInset : 0.0, @@ -2364,9 +2357,9 @@ private func layoutBlockQuote( attributedCaption, boundingWidth: innerBoundingWidth, alignment: context.rtl ? .right : .natural, - // The caption is single-inset (band [H+lineInset, B-H]), unlike the double-inset + // The caption uses a single inset, unlike the double-inset // child band, so it needs its own RTL mirror delta of -lineInset (→ [H, B-H-lineInset], - // tucked under the trailing bar) — NOT the children's bandOffsetX. + // tucked under the trailing bar), not the children's bandOffsetX. offset: CGPoint(x: innerHorizontalInset + (context.rtl ? -lineInset : 0.0), y: contentHeight), fitToWidth: context.fitToWidth, computeRevealCharacterRects: context.computeRevealCharacterRects @@ -2477,7 +2470,7 @@ private func layoutQuoteText( kind: .line(thickness: 1.0), color: context.theme.textCategories.caption.color ) - // Insert bottom rule before caption trailing space is consumed — append after final verticalInset. + // Insert the bottom rule before caption trailing space. result.append(.shape(bottomLine)) } else { // blockQuote: vertical bar on the leading edge (V1 lines 547–549). @@ -2494,7 +2487,7 @@ private func layoutQuoteText( // Tag this quote's produced text items at quote depth 1 so the markdown // converter renders them with a `> ` prefix. Applies to BOTH block quotes - // (single-paragraph fast path) and pull quotes — the whole-message markdown + // (single-paragraph fast path) and pull quotes. The whole-message markdown // converter renders both flavors as `> `. Nested quotes are lifted further // by the outer multi-block path's own bumpQuoteDepth(result) call. bumpQuoteDepth(result) @@ -2514,12 +2507,10 @@ private func layoutList( ) -> [InstantPageV2LaidOutItem] { // Determine marker characteristics. var maxIndexWidth: CGFloat = 0.0 - // hasNums: at least one ordered item carries an explicit `num` — in which case items - // without one fall back to a blank " " (preserves the source's numbering gaps) rather + // hasNums means at least one ordered item carries an explicit `num`. Items + // without one fall back to a blank " " rather // than auto-generated `(i + 1).`. Unordered lists never auto-generate numbers, so this - // flag is only meaningful when `ordered` is true. (`hasTaskMarkers` is no longer derived - // — the uniform 8pt gap below replaced the per-list `indexSpacing` ternary that consumed - // it; column right-alignment handles mixed bullet/checkbox lists without flagging.) + // flag is only meaningful when `ordered` is true. var hasNums = false if ordered { for item in listItems { @@ -2542,10 +2533,8 @@ private func layoutList( stroke: context.theme.pageBackgroundColor, border: context.theme.controlColor ) - // Track maxIndexWidth for ALL marker kinds (ordered + unordered, all three shapes), not - // just ordered as V1/older V2 did. With every kind contributing to the marker column width - // we can right-align every marker to a single shared column edge — so in a mixed unordered - // list (bullets + checkboxes) both right-align flush to the same x, and the same uniform + // Track every marker kind and align them to one shared column edge. + // Bullets and checkboxes align to the same x, and the same uniform // gap separates them from the text. The column width simply equals the widest marker; for // a pure bullet list `maxIndexWidth == 6` and the bullet sits at `horizontalInset` (visually // identical to the pre-change formula), and for a pure checkbox list `maxIndexWidth == 18` @@ -2594,12 +2583,8 @@ private func layoutList( // Uniform 8pt marker→text gap across all four cases (ordered/unordered × bullet/number/ // checkbox). With markers right-aligned to a shared column of width `maxIndexWidth`, text - // starts at `horizontalInset + maxIndexWidth + indexSpacing` — so `indexSpacing` IS the - // gap, regardless of marker shape. V1 used 12/16/20/24 (a mix of marker-area-width and - // gap-after-marker, depending on alignment); the four gaps came out to 12/16/14/6 — far - // from uniform, and a 14pt bullet gap looked especially loose. 8pt is a standard iOS list - // gap; it tightens bullets (14→8), numbers (12→8) and ordered-checkbox (16→8), and only - // loosens unordered-checkbox very slightly (6→8) so all four kinds match. + // starts at `horizontalInset + maxIndexWidth + indexSpacing`, so `indexSpacing` is the + // gap, regardless of marker shape. let indexSpacing: CGFloat = 8.0 // Layout each item. @@ -2722,7 +2707,7 @@ private func layoutList( // Nil-guard in stampMarkdownContext preserves any richer kind (e.g. .heading) // already stamped by a child block's own layout. So a heading nested inside a - // .blocks list item keeps .heading, not .listItem — multi-block list items are + // Multi-block list items keep `.heading`. // a documented best-effort case for markdown reconstruction. stampMarkdownContext(translatedItems, kind: .listItem(ordered: ordered, marker: markdownMarker, checked: markdownChecked)) result.append(contentsOf: translatedItems) @@ -2732,7 +2717,7 @@ private func layoutList( // Mirror the .text case above (and what .checklist already does here): use the // first text line's midY for centering. `originY` is the sub-block's TOP, NOT a - // line midpoint — `markerFrameFor` then subtracts `size.height / 2`, so feeding + // line midpoint. `markerFrameFor` subtracts `size.height / 2`, so feeding // `originY` placed the marker straddling the sub-block boundary, ½·marker-height // ABOVE the first text line. V1 hid the same arithmetic under a 6×12 shape with a // 3pt internal offset (matching ½·fontLineHeight for 17pt paragraph text), which @@ -2773,7 +2758,7 @@ private func layoutList( /// For a pure-kind list `maxIndexWidth == markerWidth`, so the marker lands at `horizontalInset` /// exactly as before; for mixed unordered lists, bullets and checkboxes align flush at the /// column's inner edge. Column right-alignment is the single rule across every marker shape -/// — no `ordered` / `indexSpacing` split — which is why those parameters dropped. +/// without separate `ordered` or `indexSpacing` parameters. private func markerFrameFor( kind: InstantPageV2ListMarkerKind, naturalWidth: CGFloat, @@ -2802,7 +2787,7 @@ private func markerFrameFor( return CGRect(x: x, y: floorToScreenPixels(lineMidY - size.height / 2.0), width: size.width, height: size.height) } -/// Leading/trailing geometry helpers — the single source of truth for "which side is the +/// Leading and trailing geometry helpers. /// block gutter on", gated on the page's explicit `rtl` flag. The `rtl == false` branch returns /// the pre-existing literal so non-RTL pages are byte-identical. @@ -2969,7 +2954,7 @@ func v2FrameForLine(_ line: InstantPageTextLine, boundingWidth: CGFloat, alignme // Returns the leading-edge x offset (line-origin-relative) for an inline-attachment's string // `range`, correct for both LTR and RTL runs. `CTLineGetOffsetForStringIndex` at the start index // gives the glyph's LEFT edge in LTR text, but its RIGHT edge in RTL text (increasing string index -// moves leftward) — so using the start-index offset alone as the left edge shoves an RTL attachment +// moves leftward), so using the start-index offset alone shifts an RTL attachment // ~one advance too far right. Taking the min of the start- and end-index offsets yields the true // leading (left) edge in both directions. Mirrors `Display.TextNode`'s `addEmbeddedItem`, including // the directional-boundary secondary-offset handling. For a pure-LTR line this returns exactly the @@ -3195,7 +3180,7 @@ func layoutTextItem( // Inline emoji and images do NOT inflate the line: they are centered on the font // line box and allowed to bleed above/below (mirroring V1 `layoutTextItemWithString` // and the chat `InteractiveTextComponent`). Their run delegates already report the - // font's own ascent/descent, so CoreText lays the line out at the normal height — the + // font's own ascent/descent, so CoreText keeps the normal line height. // old `lineAscent = emoji.size` inflation both doubled the line height and (because the // baseline sits at the bottom of the box) shoved the text baseline down. Only formulas, // which carry their own typographic metrics, are allowed to grow the line. @@ -3335,9 +3320,7 @@ func layoutTextItem( } } } - // Per-character rects use each glyph's actual ink bounds via - // CTFontGetBoundingRectsForGlyphs — caret-position advance-width - // math (CTLineGetOffsetForStringIndex) is too tight for italics, + // Caret advance width is too tight for italics, // accented marks, and any glyph with side bearings, which causes // the reveal mask to visibly clip the glyph edges. Mirrors // InteractiveTextComponent.computeCharacterRectsForLine. @@ -3406,7 +3389,7 @@ func layoutTextItem( // Image cell is centered on the font line box (see frame loop). Baseline-relative // cell spans [fontLineHeight/2 − height/2, fontLineHeight/2 + height/2]; the full // width feeds the reveal cost map so the streaming cursor is charged the image's - // width when crossing it — same as an emoji cell. + // width when crossing it, like an emoji cell. rects[localIndex] = CGRect(x: x, y: fontLineHeight / 2.0 - image.size.height / 2.0, width: image.size.width, height: image.size.height) } } diff --git a/submodules/InstantPageUI/Sources/InstantPageV2MediaViews.swift b/submodules/InstantPageUI/Sources/InstantPageV2MediaViews.swift index 89ec1c04f3..9e5ebbf877 100644 --- a/submodules/InstantPageUI/Sources/InstantPageV2MediaViews.swift +++ b/submodules/InstantPageUI/Sources/InstantPageV2MediaViews.swift @@ -9,17 +9,14 @@ import TelegramPresentationData import GalleryUI import UniversalMediaPlayer -// Mutable weak box: lets a wrapper hand its `openMedia` closure a back-reference to itself, -// filled in after `super.init` (when `self` becomes usable). SwiftSignalKit's `Weak` requires -// a non-optional value at init time, so it can't be used here. +// Mutable weak reference filled after `super.init`. private final class WrapperRef { weak var view: UIView? } // MARK: - Shared media node factory -// Hosts a V1 `InstantPageImageNode` inside a V2 UIView wrapper. The caller sizes its own -// frame from `item.frame` and adds the returned node's view as a subview. +// Creates an image node for a V2 media wrapper. func makeMediaWrapper( frame: CGRect, media: InstantPageMedia, @@ -52,7 +49,7 @@ func makeMediaWrapper( return imageNode } -// Walks up the superview chain from `start` to find the nearest enclosing `InstantPageV2View`. +// Find the nearest enclosing V2 view. private func findEnclosingV2View(from start: UIView?) -> InstantPageV2View? { var view: UIView? = start while view != nil { @@ -64,18 +61,13 @@ private func findEnclosingV2View(from start: UIView?) -> InstantPageV2View? { return nil } -// Registers `wrapper` in the root V2View's `mediaRegistry` under `mediaIndex`. The root is -// reached by walking up the superview chain to the nearest `InstantPageV2View`, then walking -// its `rootMediaRegistryHost` chain transitively (nested details blocks can leave an inner -// body's host pointing at an intermediate body — see `trueRegistryRoot`). No-op if the wrapper -// isn't yet attached to a V2View ancestor. +// Register media at the root V2 view. func registerInRootRegistry(wrapper: UIView, mediaIndex: Int) { guard let v2 = findEnclosingV2View(from: wrapper.superview) else { return } v2.trueRegistryRoot.mediaRegistry[mediaIndex] = Weak(wrapper) } -// Routes a tap on `tapped` through `openInstantPageMedia`, sourcing sibling medias from the -// root V2View's `currentLayout`. No-op if the wrapper isn't currently in a V2View tree. +// Open media with siblings from the root layout. func handleOpenMediaTap( tapped: InstantPageMedia, wrapper: UIView, @@ -446,9 +438,7 @@ final class InstantPageV2MediaAudioView: UIView, InstantPageItemView { let fetchMedia = item.media self.audioNode.fetch = { guard case let .file(file) = fetchMedia.media, let message = fetchMessage, let messageId = message.id else { return } - // Route through the fetch manager (not freeMediaFileInteractiveFetched) so the - // messageMediaFileStatus signal — which keys progress off the fetch manager's - // `hasEntry` — surfaces .Fetching, letting the overlay show the animated ring. + // Use the fetch manager so status reports `.Fetching`. let _ = messageMediaFileInteractiveFetched(fetchManager: fetchContext.fetchManager, messageId: messageId, messageReference: message, file: file, userInitiated: true, priority: .userInitiated).startStandalone() } diff --git a/submodules/InstantPageUI/Sources/InstantPageV2RevealCost.swift b/submodules/InstantPageUI/Sources/InstantPageV2RevealCost.swift index caae5152be..b9f33a5410 100644 --- a/submodules/InstantPageUI/Sources/InstantPageV2RevealCost.swift +++ b/submodules/InstantPageUI/Sources/InstantPageV2RevealCost.swift @@ -28,7 +28,7 @@ extension InstantPageV2RevealCostMap { // Reveal cost is in width units (points along the reading direction). The unit is uniform // across all item kinds, so the streaming reveal pace ("points per second") is visually -// consistent — wide tables and media take proportionally longer than narrow inline text. +// consistent. Wide tables and media take longer than narrow inline text. // // For text items, the cost is the sum of glyph ink widths across all lines (the total ink // extent in reading direction). For non-text items, the cost is `item.frame.width`. Zero-width @@ -112,7 +112,7 @@ public extension InstantPageV2RevealCostMap { /// * `details` / `codeBlock`: the whole container appears as soon as revealedCount > entry.start /// (background and chrome pop in atomically, then inner text reveals char-by-char). /// - /// Used by the rich-data bubble to size itself to the revealed prefix during AI streaming, + /// Used by the rich-data bubble to size itself to the revealed prefix during streaming, /// mirroring TextBubble's `clippedGlyphCountLayout = textLayout.layoutForCharacterCount(...)`. func revealedContentSize(revealedCount: Int, layout: InstantPageV2Layout) -> CGSize { let bounds = computeRevealedBounds(items: layout.items, entries: self.topLevelEntries, revealedCount: revealedCount) @@ -121,7 +121,7 @@ public extension InstantPageV2RevealCostMap { } // The full layout reserves a closing spacing after the last top-level block (see // `closingSpacing` in layoutBlockSequence). Mirror that so a partially-revealed - // bubble has the same bottom padding as a fully-revealed one — otherwise the last + // bubble has the same bottom padding as a fully revealed one. Otherwise the last // revealed line sits flush against the bubble's bottom edge. let lastItemMaxY = layout.items.map { $0.frame.maxY }.max() ?? 0.0 let closingPad = max(0.0, layout.contentSize.height - lastItemMaxY) @@ -130,7 +130,7 @@ public extension InstantPageV2RevealCostMap { /// Returns the maxY of revealed items in `layout` coords (no closing pad). Use this to /// size the InstantPageV2View itself so its content never overflows past the revealed - /// extent — the bubble's closing pad sits in containerNode space *outside* the pageView, + /// extent. The bubble's closing pad sits in containerNode space outside the pageView, /// not inside it (where unrevealed items would otherwise draw). func revealedItemsMaxY(revealedCount: Int, layout: InstantPageV2Layout) -> CGFloat { let bounds = computeRevealedBounds(items: layout.items, entries: self.topLevelEntries, revealedCount: revealedCount) @@ -308,7 +308,7 @@ private func computeEntries(items: [InstantPageV2LaidOutItem], cursor: inout Int // Each cell consumes at least its frame.width worth of cursor advance, // even if its inner text ink width is smaller (or it has no subLayout // at all). Without this floor, narrow- or empty-cell tables ran through - // the cursor much faster than their visual width warrants — a 3-column + // the cursor much faster than their visual width warrants. A 3-column // table of "1"/"2"/"3" costs ~30pt while occupying ~200pt visually. // Text inside a cell still char-reveals against its own ink widths; the // "extra" cost (cell width − inner ink) is filler time during which the @@ -330,7 +330,7 @@ private func computeEntries(items: [InstantPageV2LaidOutItem], cursor: inout Int } entries.append(.table(start: start, end: cursor, rows: rows, title: titleMap)) case .thinking: - // Zero cost: do NOT advance the cursor. This is the linchpin — answer-content cursor + // Do not advance the cursor for thinking blocks. // positions are identical whether or not thinking blocks are present, so adding/ // removing a thinking block never jumps the answer's reveal position. entries.append(.thinking(start: cursor)) @@ -432,7 +432,7 @@ private func applyRevealEntry(view: InstantPageItemView, entry: InstantPageV2Rev let _ = start case let .thinking(start): // Whole-block 0.12s alpha fade-in at the index position; inner text is drawn fully - // (never char-reveal-masked) — the shimmer is the only ongoing animation. + // (never character-masked). The shimmer is the only ongoing animation. let visible = revealedCount >= start applyVisibility(view: view, visible: visible, animated: animated) } @@ -520,7 +520,7 @@ private func applyTableReveal(tableView: InstantPageV2TableView, start: Int, end let rowMaxY = cellsInRow.map { $0.frame.maxY }.max() ?? 0.0 maskHeight = gridOffsetY + rowMaxY } else { - // No rows revealed yet — but the title (if any) is still visible above the grid. + // Keep the title visible before the first row. maskHeight = (title != nil) ? gridOffsetY : 0.0 } diff --git a/submodules/InstantPageUI/Sources/InstantPageV2SlideshowView.swift b/submodules/InstantPageUI/Sources/InstantPageV2SlideshowView.swift index 25b963c0f4..1ddc731699 100644 --- a/submodules/InstantPageUI/Sources/InstantPageV2SlideshowView.swift +++ b/submodules/InstantPageUI/Sources/InstantPageV2SlideshowView.swift @@ -6,11 +6,7 @@ import AccountContext import TelegramCore import TelegramPresentationData -// A paged carousel for an `InstantPageBlock.slideshow`. Ports V1's InstantPageSlideshowNode / -// InstantPageSlideshowPagerNode (InstantPageSlideshowItemNode.swift), simplified to create all pages -// eagerly (slideshows are short; this avoids V1's central±1 index bookkeeping and makes the gallery -// transition source available for every page). Each image page hosts an `InstantPageImageNode` exactly -// like the static media views; non-image medias render an empty page (matches V1). +// Paged slideshow backed by `InstantPageImageNode`. final class InstantPageV2SlideshowView: UIView, InstantPageItemView, UIScrollViewDelegate { private(set) var item: InstantPageV2SlideshowItem var itemFrame: CGRect { return self.item.frame } @@ -21,9 +17,7 @@ final class InstantPageV2SlideshowView: UIView, InstantPageItemView, UIScrollVie private let scrollView: UIScrollView private let pageControlNode: PageControlNode - // One wrapper view per media (so page count stays aligned with the page control). `pageImageNodes` - // holds only the real image nodes; it may be shorter than `pageViews` if a non-image media appears - // (which `layoutSlideshow` currently filters out). Nothing relies on positional correspondence. + // Keep one page per media so the page control stays aligned. private var pageViews: [UIView] = [] private var pageImageNodes: [InstantPageImageNode] = [] @@ -68,7 +62,7 @@ final class InstantPageV2SlideshowView: UIView, InstantPageItemView, UIScrollVie self.pageImageNodes = [] let renderContext = self.renderContext - // The image node owns this closure, and is owned (transitively) by self — capture weakly. + // The image node retains this closure. let openMedia: (InstantPageMedia) -> Void = { [weak self] tapped in guard let self else { return } handleOpenMediaTap(tapped: tapped, wrapper: self, renderContext: renderContext) @@ -91,23 +85,21 @@ final class InstantPageV2SlideshowView: UIView, InstantPageItemView, UIScrollVie pageView.addSubview(node.view) self.pageImageNodes.append(node) } - // Non-image medias (none in practice — layoutSlideshow filters to images) get an empty page - // to keep page indices aligned with the page control. + // Keep an empty page for unexpected non-image media. self.scrollView.addSubview(pageView) self.pageViews.append(pageView) } self.pageControlNode.pagesCount = self.item.medias.count self.pageControlNode.setPage(0.0) - // Re-register media indices when rebuilding while already on-window (positional reuse with - // changed content); no-ops before the view is attached, where didMoveToWindow handles it. + // Re-register reused pages already attached to a window. self.registerMedias() self.setNeedsLayout() } private func registerMedias() { guard self.window != nil else { return } - // Register under every contained media index so transitionArgsFor(media) can find this view. + // Register every media index for gallery transitions. for media in self.item.medias { registerInRootRegistry(wrapper: self, mediaIndex: media.index) } diff --git a/submodules/MediaPlayer/Sources/FFMpegMediaVideoFrameDecoder.swift b/submodules/MediaPlayer/Sources/FFMpegMediaVideoFrameDecoder.swift index efad3a182f..448dd50518 100644 --- a/submodules/MediaPlayer/Sources/FFMpegMediaVideoFrameDecoder.swift +++ b/submodules/MediaPlayer/Sources/FFMpegMediaVideoFrameDecoder.swift @@ -248,8 +248,8 @@ public final class FFMpegMediaVideoFrameDecoder: MediaTrackFrameDecoder { guard format == .YUV || format == .YUVA else { return false } - // Reject bottom-up / negative-stride frames before any row-copy loop — ffmpeg - // rawdec flips linesize[0] for codec_tag WRAW/cyuv/BottomUp, and other decoders + // Reject bottom-up and negative-stride frames before copying rows. + // ffmpeg rawdec flips linesize[0] for WRAW, cyuv, and BottomUp. // (dxtory, mimic, mjpegdec, scpr) flip the chroma planes too. if frame.lineSize[0] < 0 || frame.lineSize[1] < 0 || frame.lineSize[2] < 0 { return false diff --git a/submodules/MtProtoKit/Sources/MTTcpConnection.m b/submodules/MtProtoKit/Sources/MTTcpConnection.m index 407748aa3a..464944f88f 100644 --- a/submodules/MtProtoKit/Sources/MTTcpConnection.m +++ b/submodules/MtProtoKit/Sources/MTTcpConnection.m @@ -460,7 +460,7 @@ static bool executeGenerationCodeRecursive(NSString *code, HelloParseState *stat break; } case HelloGenerationCommandEndAlternative: { - // signals end of current alternative — return to caller + // End the current alternative. return true; } case HelloGenerationCommandBeginAlternative: diff --git a/submodules/RMIntro/PublicHeaders/RMIntro/RMIntroViewController.h b/submodules/RMIntro/PublicHeaders/RMIntro/RMIntroViewController.h index 0ae475af14..4279cf1d7f 100644 --- a/submodules/RMIntro/PublicHeaders/RMIntro/RMIntroViewController.h +++ b/submodules/RMIntro/PublicHeaders/RMIntro/RMIntroViewController.h @@ -62,6 +62,9 @@ @property (nonatomic) CGRect defaultFrame; +// Brand icon overlaid on the first intro page animation. +@property (nonatomic, strong) UIImage *firstPageIcon; + - (instancetype)initWithBackgroundColor:(UIColor *)backgroundColor primaryColor:(UIColor *)primaryColor buttonColor:(UIColor *)buttonColor accentColor:(UIColor *)accentColor regularDotColor:(UIColor *)regularDotColor highlightedDotColor:(UIColor *)highlightedDotColor suggestedLocalizationSignal:(SSignal *)suggestedLocalizationSignal; @property (nonatomic, copy) void (^startMessaging)(void); diff --git a/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.m b/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.m index 9a8550ad84..03bce7513f 100644 --- a/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.m +++ b/submodules/RMIntro/Sources/platform/ios/RMIntroViewController.m @@ -107,6 +107,8 @@ typedef enum { UIView *_wrapperView; UIView *_startButton; + UIImageView *_firstPageIconView; + bool _loadedView; } @end @@ -379,6 +381,14 @@ typedef enum { p.clearsContextBeforeDrawing = false; [_pageViews addObject:p]; [_pageScrollView addSubview:p]; + + // Brand icon on the first intro page; frame is set in -updateLayout. + if (i == 0 && _firstPageIcon != nil) { + p.clipsToBounds = false; + _firstPageIconView = [[UIImageView alloc] initWithImage:_firstPageIcon]; + _firstPageIconView.contentMode = UIViewContentModeScaleAspectFit; + [p addSubview:_firstPageIconView]; + } } [_pageScrollView setPage:0]; @@ -574,6 +584,17 @@ typedef enum { [_pageViews enumerateObjectsUsingBlock:^(UIView *pageView, NSUInteger index, __unused BOOL *stop) { pageView.frame = CGRectMake(index * self.view.bounds.size.width, (pageY - statusBarHeight), self.view.bounds.size.width, 150); }]; + + if (_firstPageIconView != nil) { + bool isIpad = ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad); + CGFloat glSize = isIpad ? 200.0f * 1.2f : 200.0f; + CGFloat iconSize = floor(glSize * 0.6f); + // Center the icon on the GL animation square, in page-local coordinates. + CGFloat glCenterY = (_glkView.frame.origin.y + glSize / 2.0f); + CGFloat pageTopAbsolute = _pageScrollView.frame.origin.y + (pageY - statusBarHeight); + CGFloat iconCenterYLocal = glCenterY - pageTopAbsolute; + _firstPageIconView.frame = CGRectMake(floor((self.view.bounds.size.width - iconSize) / 2.0f), iconCenterYLocal - iconSize / 2.0f, iconSize, iconSize); + } } - (void)viewWillAppear:(BOOL)animated diff --git a/submodules/SettingsUI/BUILD b/submodules/SettingsUI/BUILD index ade087b2b1..410876b8ec 100644 --- a/submodules/SettingsUI/BUILD +++ b/submodules/SettingsUI/BUILD @@ -56,6 +56,7 @@ swift_library( "//submodules/PhoneInputNode:PhoneInputNode", "//submodules/PhotoResources:PhotoResources", "//submodules/StickerResources:StickerResources", + "//submodules/SolidRoundedButtonNode:SolidRoundedButtonNode", "//submodules/ProgressNavigationButtonNode:ProgressNavigationButtonNode", "//submodules/RadialStatusNode:RadialStatusNode", "//submodules/SearchBarNode:SearchBarNode", diff --git a/submodules/SettingsUI/Sources/Data and Storage/WinterGramDeletedMessagesController.swift b/submodules/SettingsUI/Sources/Data and Storage/WinterGramDeletedMessagesController.swift index e01cd40e4e..5434e137bb 100644 --- a/submodules/SettingsUI/Sources/Data and Storage/WinterGramDeletedMessagesController.swift +++ b/submodules/SettingsUI/Sources/Data and Storage/WinterGramDeletedMessagesController.swift @@ -393,7 +393,9 @@ private enum WinterGramDeletedMessagesControllerEntry: ItemListNodeEntry { case let .topChat(_, peer, count, size, _): let sizeFormatting = DataSizeStringFormatting(strings: presentationData.strings, decimalSeparator: presentationData.dateTimeFormat.decimalSeparator) let subtitle = "\(count) • \(dataSizeString(size, formatting: sizeFormatting))" - return ItemListPeerItem(presentationData: presentationData, dateTimeFormat: presentationData.dateTimeFormat, nameDisplayOrder: presentationData.nameDisplayOrder, context: arguments.context, peer: peer, presence: nil, text: .text(subtitle, .secondary), label: .none, editing: ItemListPeerItemEditing(editable: false, editing: false, revealed: nil), switchValue: nil, enabled: true, selectable: false, sectionId: self.section, action: nil, setPeerIdWithRevealedOptions: { _, _ in }, removePeer: { _ in }) + return ItemListPeerItem(presentationData: presentationData, dateTimeFormat: presentationData.dateTimeFormat, nameDisplayOrder: presentationData.nameDisplayOrder, context: arguments.context, peer: peer, presence: nil, text: .text(subtitle, .secondary), label: .none, editing: ItemListPeerItemEditing(editable: false, editing: false, revealed: nil), switchValue: nil, enabled: true, selectable: true, sectionId: self.section, action: { + arguments.openChat(peer) + }, setPeerIdWithRevealedOptions: { _, _ in }, removePeer: { _ in }) case let .delete(_, text, enabled): return ItemListPeerActionItem(presentationData: presentationData, style: .blocks, icon: PresentationResourcesItemList.deleteIconImage(presentationData.theme), title: text, sectionId: self.section, color: enabled ? .destructive : .disabled, editing: false, action: enabled ? { arguments.deleteSelected() @@ -414,11 +416,13 @@ private final class WinterGramDeletedMessagesControllerArguments { let context: AccountContext let toggleCategory: (WinterGramDeletedMessageCategory) -> Void let deleteSelected: () -> Void - - init(context: AccountContext, toggleCategory: @escaping (WinterGramDeletedMessageCategory) -> Void, deleteSelected: @escaping () -> Void) { + let openChat: (EnginePeer) -> Void + + init(context: AccountContext, toggleCategory: @escaping (WinterGramDeletedMessageCategory) -> Void, deleteSelected: @escaping () -> Void, openChat: @escaping (EnginePeer) -> Void) { self.context = context self.toggleCategory = toggleCategory self.deleteSelected = deleteSelected + self.openChat = openChat } } @@ -426,10 +430,19 @@ private func winterGramDeletedMessagesControllerEntries(stats: WinterGramDeleted let sizeFormatting = DataSizeStringFormatting(strings: strings, decimalSeparator: dateTimeFormat.decimalSeparator) var entries: [WinterGramDeletedMessagesControllerEntry] = [] - + entries.append(.overviewHeader(theme, strings.WinterGram_DeletedMessages_Title.uppercased())) + + // Empty state: when nothing has been saved yet, drop the (otherwise empty) pie chart, the category + // checklist and the delete action — they read as a "cheap" empty ring — and just explain where saved + // deletions come from, matching the calm empty states of the native Storage Usage screen. + if stats.totalCount == 0 { + entries.append(.overviewInfo(theme, strings.WinterGram_DeletedAndEditedMessagesAreKeptLocallyOnThisDeviceOnly)) + return entries + } + entries.append(.overviewInfo(theme, "\(strings.WinterGram_DeletedMessages_Total): \(stats.totalCount) • \(dataSizeString(stats.totalSize, formatting: sizeFormatting))")) - + let chartTotal = stats.categories.reduce(Int64(0)) { $0 + max(0, $1.size) } var chartItems: [PieChartComponent.ChartData.Item] = [] for stat in stats.categories where stat.size > 0 { @@ -468,9 +481,6 @@ private func winterGramDeletedMessagesControllerEntries(stats: WinterGramDeleted } } - let canDelete = !selectedCategories.isEmpty - entries.append(.delete(theme, strings.WinterGram_DeletedMessages_DeleteSelected, canDelete)) - return entries } @@ -517,8 +527,12 @@ public func winterGramDeletedMessagesController(context: AccountContext) -> View }) ])]) presentControllerImpl?(actionSheet, nil) + }, openChat: { peer in + if let navigationController = context.sharedContext.mainWindow?.viewController as? NavigationController { + context.sharedContext.navigateToChatController(NavigateToChatControllerParams(navigationController: navigationController, context: context, chatLocation: .peer(peer))) + } }) - + let statsSignal = winterGramDeletedMessagesStats(postbox: context.account.postbox) let topPeersSignal = statsSignal |> map { stats -> [EnginePeer.Id] in @@ -545,7 +559,22 @@ public func winterGramDeletedMessagesController(context: AccountContext) -> View ) |> map { presentationData, stats, selectedCategories, topPeers -> (ItemListControllerState, (ItemListNodeState, Any)) in let controllerState = ItemListControllerState(presentationData: ItemListPresentationData(presentationData), title: .text(presentationData.strings.WinterGram_DeletedMessages_Title), leftNavigationButton: nil, rightNavigationButton: nil, backNavigationButton: ItemListBackButton(title: presentationData.strings.Common_Back)) - let listState = ItemListNodeState(presentationData: ItemListPresentationData(presentationData), entries: winterGramDeletedMessagesControllerEntries(stats: stats, topPeers: topPeers, selectedCategories: selectedCategories, strings: presentationData.strings, dateTimeFormat: presentationData.dateTimeFormat, theme: presentationData.theme), style: .blocks, animateChanges: true) + + let canDelete = !selectedCategories.isEmpty + let sizeFormatting = DataSizeStringFormatting(strings: presentationData.strings, decimalSeparator: presentationData.dateTimeFormat.decimalSeparator) + let selectedSize = stats.categories.reduce(Int64(0)) { partial, stat in + return selectedCategories.contains(stat.category) ? partial + max(0, stat.size) : partial + } + var footerTitle = presentationData.strings.WinterGram_DeletedMessages_DeleteSelected + if canDelete && selectedSize > 0 { + footerTitle += " " + dataSizeString(selectedSize, formatting: sizeFormatting) + } + // No saved deletions → no destructive footer (matches the empty state from the entries builder). + let footerItem: WinterGramDeletedMessagesFooterItem? = stats.totalCount == 0 ? nil : WinterGramDeletedMessagesFooterItem(theme: presentationData.theme, title: footerTitle, isEnabled: canDelete, action: { + arguments.deleteSelected() + }) + + let listState = ItemListNodeState(presentationData: ItemListPresentationData(presentationData), entries: winterGramDeletedMessagesControllerEntries(stats: stats, topPeers: topPeers, selectedCategories: selectedCategories, strings: presentationData.strings, dateTimeFormat: presentationData.dateTimeFormat, theme: presentationData.theme), style: .blocks, footerItem: footerItem, animateChanges: true) return (controllerState, (listState, arguments)) } diff --git a/submodules/SettingsUI/Sources/Data and Storage/WinterGramDeletedMessagesFooterItem.swift b/submodules/SettingsUI/Sources/Data and Storage/WinterGramDeletedMessagesFooterItem.swift new file mode 100644 index 0000000000..85de1d431e --- /dev/null +++ b/submodules/SettingsUI/Sources/Data and Storage/WinterGramDeletedMessagesFooterItem.swift @@ -0,0 +1,122 @@ +import Foundation +import UIKit +import AsyncDisplayKit +import Display +import TelegramPresentationData +import ItemListUI +import PresentationDataUtils +import SolidRoundedButtonNode + +final class WinterGramDeletedMessagesFooterItem: ItemListControllerFooterItem { + let theme: PresentationTheme + let title: String + let isEnabled: Bool + let action: () -> Void + + init(theme: PresentationTheme, title: String, isEnabled: Bool, action: @escaping () -> Void) { + self.theme = theme + self.title = title + self.isEnabled = isEnabled + self.action = action + } + + func isEqual(to: ItemListControllerFooterItem) -> Bool { + if let item = to as? WinterGramDeletedMessagesFooterItem { + return self.theme === item.theme && self.title == item.title && self.isEnabled == item.isEnabled + } else { + return false + } + } + + func node(current: ItemListControllerFooterItemNode?) -> ItemListControllerFooterItemNode { + if let current = current as? WinterGramDeletedMessagesFooterItemNode { + current.item = self + return current + } else { + return WinterGramDeletedMessagesFooterItemNode(item: self) + } + } +} + +final class WinterGramDeletedMessagesFooterItemNode: ItemListControllerFooterItemNode { + private let backgroundNode: NavigationBackgroundNode + private let separatorNode: ASDisplayNode + private let buttonNode: SolidRoundedButtonNode + + private var validLayout: ContainerViewLayout? + + var item: WinterGramDeletedMessagesFooterItem { + didSet { + self.updateItem() + if let layout = self.validLayout { + let _ = self.updateLayout(layout: layout, transition: .immediate) + } + } + } + + init(item: WinterGramDeletedMessagesFooterItem) { + self.item = item + + self.backgroundNode = NavigationBackgroundNode(color: item.theme.rootController.tabBar.backgroundColor) + self.separatorNode = ASDisplayNode() + self.buttonNode = SolidRoundedButtonNode(theme: SolidRoundedButtonTheme(backgroundColor: .black, foregroundColor: .white), height: 50.0, cornerRadius: 11.0) + + super.init() + + self.addSubnode(self.backgroundNode) + self.addSubnode(self.separatorNode) + self.addSubnode(self.buttonNode) + + self.updateItem() + } + + private func updateItem() { + self.backgroundNode.updateColor(color: self.item.theme.rootController.tabBar.backgroundColor, transition: .immediate) + self.separatorNode.backgroundColor = self.item.theme.rootController.tabBar.separatorColor + + let backgroundColor = self.item.theme.list.itemDestructiveColor + let textColor = self.item.theme.list.itemCheckColors.foregroundColor + + self.buttonNode.updateTheme(SolidRoundedButtonTheme(backgroundColor: backgroundColor, foregroundColor: textColor), animated: false) + self.buttonNode.title = self.item.title + self.buttonNode.isUserInteractionEnabled = self.item.isEnabled + self.buttonNode.alpha = self.item.isEnabled ? 1.0 : 0.5 + + self.buttonNode.pressed = { [weak self] in + self?.item.action() + } + } + + override func updateBackgroundAlpha(_ alpha: CGFloat, transition: ContainedViewLayoutTransition) { + transition.updateAlpha(node: self.backgroundNode, alpha: alpha) + transition.updateAlpha(node: self.separatorNode, alpha: alpha) + } + + override func updateLayout(layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) -> CGFloat { + self.validLayout = layout + + let buttonInset: CGFloat = 16.0 + let buttonWidth = layout.size.width - layout.safeInsets.left - layout.safeInsets.right - buttonInset * 2.0 + let buttonHeight = self.buttonNode.updateLayout(width: buttonWidth, transition: transition) + let topInset: CGFloat = 12.0 + let bottomInset: CGFloat = layout.size.width > 320.0 ? 16.0 : 12.0 + + let insets = layout.insets(options: []) + let panelHeight = buttonHeight + topInset + bottomInset + insets.bottom + + let panelFrame = CGRect(origin: CGPoint(x: 0.0, y: layout.size.height - panelHeight), size: CGSize(width: layout.size.width, height: panelHeight)) + + transition.updateFrame(node: self.backgroundNode, frame: panelFrame) + self.backgroundNode.update(size: panelFrame.size, transition: transition) + + transition.updateFrame(node: self.buttonNode, frame: CGRect(origin: CGPoint(x: layout.safeInsets.left + buttonInset, y: panelFrame.minY + topInset), size: CGSize(width: buttonWidth, height: buttonHeight))) + + transition.updateFrame(node: self.separatorNode, frame: CGRect(origin: panelFrame.origin, size: CGSize(width: panelFrame.width, height: UIScreenPixel))) + + return panelHeight + } + + override func point(inside point: CGPoint, with event: UIEvent?) -> Bool { + return self.backgroundNode.frame.contains(point) + } +} diff --git a/submodules/SettingsUI/Sources/Themes/ThemeSettingsChatPreviewItem.swift b/submodules/SettingsUI/Sources/Themes/ThemeSettingsChatPreviewItem.swift index 64ac5ee99d..bd77d35c9f 100644 --- a/submodules/SettingsUI/Sources/Themes/ThemeSettingsChatPreviewItem.swift +++ b/submodules/SettingsUI/Sources/Themes/ThemeSettingsChatPreviewItem.swift @@ -276,10 +276,17 @@ class ThemeSettingsChatPreviewItemNode: ListViewItemNode { } node.updateFrame(CGRect(origin: CGPoint(x: 0.0, y: topOffset), size: node.frame.size), within: layoutSize) if avatarFrame == nil, nodeIndex < displayedMessageItems.count, !displayedMessageItems[nodeIndex].outgoing { - let avatarSize: CGFloat = 40.0 + // The message nodes live in `containerNode`, which is flipped 180° (π about Z), + // so a node placed at container-space top `topOffset` is drawn with its visual + // bottom at `contentSize.height - topOffset`. The avatar is a direct subnode of + // `self` (un-flipped), so compute its position in screen space and snap its + // bottom to the incoming bubble's tail — matching a real Telegram message row. + let avatarSize: CGFloat = 37.0 + let tailBottomInset: CGFloat = -2.0 + let visualBottom = contentSize.height - topOffset avatarFrame = CGRect( x: params.leftInset + 9.0, - y: topOffset + max(6.0, node.frame.height - avatarSize - 8.0), + y: visualBottom - avatarSize - tailBottomInset, width: avatarSize, height: avatarSize ) @@ -292,7 +299,11 @@ class ThemeSettingsChatPreviewItemNode: ListViewItemNode { let avatarRadius = min(avatarFrame.width, avatarFrame.height) * CGFloat(max(0, min(50, item.avatarCornerRadius))) / 100.0 strongSelf.avatarNode.layer.cornerRadius = avatarRadius strongSelf.avatarNode.layer.masksToBounds = true - strongSelf.avatarNode.setPeer(context: item.context, theme: item.componentTheme, peer: avatarPeer, synchronousLoad: false, displayDimensions: avatarFrame.size) + // Generate a SQUARE avatar image (clipStyle .none) and let this node's own + // cornerRadius define the shape. Otherwise AvatarNode bakes the *global* + // avatarCornerRadius into the image and early-returns on re-`setPeer`, so the + // live preview value (dragged slider) never takes effect. + strongSelf.avatarNode.setPeer(context: item.context, theme: item.componentTheme, peer: avatarPeer, clipStyle: .none, synchronousLoad: false, displayDimensions: avatarFrame.size) strongSelf.avatarNode.updateSize(size: avatarFrame.size) } else { strongSelf.avatarNode.isHidden = true diff --git a/submodules/SettingsUI/Sources/WinterGramBannerItem.swift b/submodules/SettingsUI/Sources/WinterGramBannerItem.swift index 755d47714d..db62d58f89 100644 --- a/submodules/SettingsUI/Sources/WinterGramBannerItem.swift +++ b/submodules/SettingsUI/Sources/WinterGramBannerItem.swift @@ -7,8 +7,6 @@ import TelegramPresentationData import ItemListUI import PresentationDataUtils -// A hero banner shown at the very top of the WinterGram settings menu, just under the navigation -// bar / Dynamic Island: a snowflake app-tile, the WinterGram name and a short tagline. private func winterGramBannerIcon(size: CGSize) -> UIImage { let renderer = UIGraphicsImageRenderer(size: size) return renderer.image { rendererContext in @@ -28,7 +26,6 @@ private func winterGramBannerIcon(size: CGSize) -> UIImage { } } -// Renders the user's current app icon as a rounded-rect tile for the banner. private func winterGramBannerRoundedIcon(image: UIImage, size: CGSize) -> UIImage { let renderer = UIGraphicsImageRenderer(size: size) return renderer.image { _ in @@ -137,7 +134,6 @@ class WinterGramBannerItemNode: ListViewItemNode { strongSelf.item = item let width = params.width - // No grey backplate behind the banner — it sits flat on the grouped background. strongSelf.backgroundNode.backgroundColor = .clear strongSelf.backgroundNode.frame = CGRect(origin: CGPoint(x: 0.0, y: 0.0), size: CGSize(width: width, height: contentHeight)) diff --git a/submodules/SettingsUI/Sources/WinterGramMainSettingsController.swift b/submodules/SettingsUI/Sources/WinterGramMainSettingsController.swift index 2388216ac6..34f28aaacc 100644 --- a/submodules/SettingsUI/Sources/WinterGramMainSettingsController.swift +++ b/submodules/SettingsUI/Sources/WinterGramMainSettingsController.swift @@ -35,28 +35,29 @@ private enum WinterGramMainSettingsSection: Int32 { case links } -// A link row shown in the "Links" section: SF Symbol, label, accent-coloured value and target URL. private struct WinterGramLink { let symbol: String let imageName: String? let title: String let value: String let url: String + let color: UIColor - init(symbol: String, imageName: String? = nil, title: String, value: String, url: String) { + init(symbol: String, imageName: String? = nil, title: String, value: String, url: String, color: UIColor = UIColor(rgb: 0x8E8E93)) { self.symbol = symbol self.imageName = imageName self.title = title self.value = value self.url = url + self.color = color } } private let winterGramLinks: [WinterGramLink] = [ - WinterGramLink(symbol: "paperplane.fill", title: "Channel", value: "@wntgram", url: "https://t.me/wntgram"), - WinterGramLink(symbol: "sparkles", title: "Beta", value: "@wntbeta", url: "https://t.me/wntbeta"), - WinterGramLink(symbol: "bubble.left.and.bubble.right.fill", title: "Chat", value: "@wntForum", url: "https://t.me/wntForum"), - WinterGramLink(symbol: "puzzlepiece.extension.fill", title: "Plugins", value: "@wntPlugins", url: "https://t.me/wntPlugins"), + WinterGramLink(symbol: "paperplane.fill", title: "Channel", value: "@wntgram", url: "https://t.me/wntgram", color: UIColor(rgb: 0x2AABEE)), + WinterGramLink(symbol: "sparkles", title: "Beta", value: "@wntbeta", url: "https://t.me/wntbeta", color: UIColor(rgb: 0xFF9F0A)), + WinterGramLink(symbol: "bubble.left.and.bubble.right.fill", title: "Chat", value: "@wntForum", url: "https://t.me/wntForum", color: UIColor(rgb: 0x34C759)), + WinterGramLink(symbol: "puzzlepiece.extension.fill", title: "Plugins", value: "@wntPlugins", url: "https://t.me/wntPlugins", color: UIColor(rgb: 0xBF5AF2)), WinterGramLink(symbol: "link", imageName: "Item List/Icons/GitHub", title: "GitHub", value: "reekeer/WinterGram", url: "https://github.com/reekeer/WinterGram") ] @@ -150,7 +151,7 @@ private enum WinterGramMainSettingsEntry: ItemListNodeEntry { case let .link(_, link): return ItemListDisclosureItem( presentationData: presentationData, - icon: winterGramCategoryIcon(symbolName: link.symbol, imageName: link.imageName, backgroundColor: UIColor(rgb: 0x8E8E93)), + icon: winterGramCategoryIcon(symbolName: link.symbol, imageName: link.imageName, backgroundColor: link.color), title: wntOption(link.title, presentationData.strings), label: link.value, labelStyle: .coloredText(accent), @@ -162,15 +163,15 @@ private enum WinterGramMainSettingsEntry: ItemListNodeEntry { } ) case .ayugram: - category = .ayugram; title = "Core"; iconName = "shield.fill"; iconColor = UIColor(rgb: 0x5856D6) + category = .ayugram; title = "Core"; iconName = "shield.fill"; iconColor = UIColor(rgb: 0x0A84FF) case .features: - category = .antiFeatures; title = "Features"; iconName = "sparkles"; iconColor = UIColor(rgb: 0xFF9500) + category = .antiFeatures; title = "Features"; iconName = "sparkles"; iconColor = UIColor(rgb: 0xFF9F0A) case .other: category = .other; title = "Other"; iconName = "ellipsis.circle"; iconColor = UIColor(rgb: 0x8E8E93) case .spoofing: - category = .spoofing; title = "Spoofing"; iconName = "theatermasks"; iconColor = UIColor(rgb: 0xFF3B30) + category = .spoofing; title = "Spoofing"; iconName = "theatermasks.fill"; iconColor = UIColor(rgb: 0xBF5AF2) case .hiddenArchive: - category = .stash; title = "Hidden Archive"; iconName = "tray.full.fill"; iconColor = UIColor(rgb: 0x34C759) + category = .stash; title = "Hidden Archive"; iconName = "tray.full.fill"; iconColor = UIColor(rgb: 0x30D158) } return ItemListDisclosureItem( presentationData: presentationData, @@ -187,38 +188,38 @@ private enum WinterGramMainSettingsEntry: ItemListNodeEntry { } } -/// Renders a rounded-rect backplate filled with `backgroundColor` and a white SF Symbol centred on -/// top — a clean settings tile look. private func winterGramCategoryIcon(_ symbolName: String, _ backgroundColor: UIColor) -> UIImage? { return winterGramCategoryIcon(symbolName: symbolName, imageName: nil, backgroundColor: backgroundColor) } private func winterGramCategoryIcon(symbolName: String, imageName: String?, backgroundColor: UIColor) -> UIImage? { - let size = CGSize(width: 44.0, height: 44.0) + // Match the iOS-Settings-style colored icons Telegram uses for settings rows: the image *is* the + // rounded colored backplate (~30pt), centered by ItemListDisclosureItem in its icon column, with a + // white glyph that has comfortable padding. The previous 44pt image held a small 34pt backplate, so + // icons looked oversized/off-centre next to standard rows and the backplate looked too small. + let size = CGSize(width: 32.0, height: 32.0) let renderer = UIGraphicsImageRenderer(size: size) return renderer.image { _ in let bounds = CGRect(origin: .zero, size: size) - // Smaller colored backplate with a transparent margin so the white icon dominates. - let backplateInset: CGFloat = 5.0 - let backplateRect = bounds.insetBy(dx: backplateInset, dy: backplateInset) - let backplate = UIBezierPath(roundedRect: backplateRect, cornerRadius: 9.0) + // ~0.225 of the side gives the iOS app-icon "squircle" feel at this size. + let backplate = UIBezierPath(roundedRect: bounds, cornerRadius: 7.5) backgroundColor.setFill() backplate.fill() let icon: UIImage? if let imageName = imageName { icon = UIImage(bundleImageName: imageName)?.withRenderingMode(.alwaysTemplate) } else { - icon = UIImage(systemName: symbolName, withConfiguration: UIImage.SymbolConfiguration(pointSize: 28.0, weight: .medium))?.withRenderingMode(.alwaysTemplate) + icon = UIImage(systemName: symbolName, withConfiguration: UIImage.SymbolConfiguration(pointSize: 20.0, weight: .bold))?.withRenderingMode(.alwaysTemplate) } guard let symbol = icon?.withTintColor(.white, renderingMode: .alwaysOriginal) else { return } - let maxIconSide: CGFloat = 30.0 + let maxIconSide: CGFloat = 21.0 let symbolScale = min(maxIconSide / max(symbol.size.width, 1.0), maxIconSide / max(symbol.size.height, 1.0), 1.0) let symbolSize = CGSize(width: symbol.size.width * symbolScale, height: symbol.size.height * symbolScale) symbol.draw(in: CGRect( - x: floor((size.width - symbolSize.width) / 2.0), - y: floor((size.height - symbolSize.height) / 2.0), + x: (size.width - symbolSize.width) / 2.0, + y: (size.height - symbolSize.height) / 2.0, width: symbolSize.width, height: symbolSize.height )) @@ -263,7 +264,6 @@ public func winterGramMainSettingsController(context: AccountContext) -> ViewCon pushControllerImpl?(winterGramSettingsController(context: context, category: category)) }, openUrl: { url in - // Open WinterGram channels in-app (resolve t.me links) rather than bouncing to the browser. let presentationData = context.sharedContext.currentPresentationData.with { $0 } context.sharedContext.openExternalUrl(context: context, urlContext: .generic, url: url, forceExternal: false, presentationData: presentationData, navigationController: getNavigationControllerImpl?(), dismissInput: {}) }, diff --git a/submodules/SettingsUI/Sources/WinterGramRadiusItem.swift b/submodules/SettingsUI/Sources/WinterGramRadiusItem.swift index 42f86f7ece..babaa9afa0 100644 --- a/submodules/SettingsUI/Sources/WinterGramRadiusItem.swift +++ b/submodules/SettingsUI/Sources/WinterGramRadiusItem.swift @@ -13,9 +13,6 @@ enum WinterGramRadiusPreviewKind { case bubble } -// Draws a small live preview that reflects the chosen corner radius: a sample avatar -// (the user's actual avatar when available, otherwise a gradient rounded square with a person glyph) -// or a sample chat bubble. private func winterGramRadiusPreviewImage(kind: WinterGramRadiusPreviewKind, value: Int32, minValue: Int32, maxValue: Int32, size: CGSize, theme: PresentationTheme, avatarImage: UIImage? = nil) -> UIImage { let renderer = UIGraphicsImageRenderer(size: size) return renderer.image { rendererContext in @@ -148,8 +145,6 @@ class WinterGramRadiusItemNode: ListViewItemNode { self.addSubnode(self.titleNode) self.addSubnode(self.valueNode) - // WinterGram: the inline radius preview next to the slider is intentionally NOT shown — the - // rounding is previewed in the chat preview instead. The slider spans the full width. } deinit { diff --git a/submodules/SettingsUI/Sources/WinterGramSettingsController.swift b/submodules/SettingsUI/Sources/WinterGramSettingsController.swift index 863ae1f440..462097db7b 100644 --- a/submodules/SettingsUI/Sources/WinterGramSettingsController.swift +++ b/submodules/SettingsUI/Sources/WinterGramSettingsController.swift @@ -76,9 +76,8 @@ public enum WinterGramSettingsSection: Int32, CaseIterable { case chat case liquidGlass case spoofing - // Combined "super-categories" shown in the redesigned main menu. - case ayugram // Ghost Mode + History + Hidden Archive - case other // Chat tweaks + Spoofing (show id, registration date, spoofer, …) + case ayugram + case other public var title: String { switch self { @@ -106,7 +105,6 @@ public enum WinterGramSettingsSection: Int32, CaseIterable { } public var iconName: String { - // SF Symbols used for the main menu cells. switch self { case .banner: return "" @@ -131,7 +129,6 @@ public enum WinterGramSettingsSection: Int32, CaseIterable { } } - // Maps a deep-link path/section name (wnt://wintergram/) to a settings subtab. public init?(deepLinkName: String) { switch deepLinkName.lowercased() { case "ghost", "ghostmode": self = .ghost @@ -156,8 +153,6 @@ private enum WinterGramDropdown: Equatable { case stashPrivacy } -// Single source of truth for each inline dropdown's options: display title (English; localized at -// render time), whether it is the current selection, and how to apply it. private func winterGramDropdownOptions(_ dropdown: WinterGramDropdown, settings: WinterGramSettings) -> [(title: String, selected: Bool, apply: (WinterGramSettings) -> WinterGramSettings)] { switch dropdown { case .stashPrivacy: @@ -209,8 +204,6 @@ private func winterGramDropdownOptions(_ dropdown: WinterGramDropdown, settings: } } -// Built-in device-model spoof presets shown as tappable cards in the Spoofing section. -// `model` is the string reported to Telegram (nil = the device's real model). `subtitle` describes it. private let winterGramDevicePresets: [(name: String, subtitle: String, model: String?)] = [ ("Real device", "Report this device's real model", nil), ("iPhone 16 Pro Max", "iPhone17,2 · A18 Pro", "iPhone 16 Pro Max"), @@ -309,7 +302,6 @@ private enum WinterGramSettingsEntry: ItemListNodeEntry { case spoofingApiHash(String) case spoofingFooter - // Expandable single-select row: dropdown key, title, expanded flag, options. case expandableSelection(WinterGramDropdown, String, Bool, [ItemListExpandableSelectionItem.Option]) var section: ItemListSectionId { @@ -349,7 +341,6 @@ private enum WinterGramSettingsEntry: ItemListNodeEntry { } var stableId: Int32 { - // Device preset cards nest between spoofingDevice (30000) and WebView platform (40000). if case let .spoofingDevicePreset(index, _) = self { return 30100 + Int32(index) } @@ -684,12 +675,15 @@ private enum WinterGramSettingsEntry: ItemListNodeEntry { case .spoofPresetsHeader: return ItemListSectionHeaderItem(presentationData: presentationData, text: lang.WinterGram_Templates, sectionId: self.section) case let .spoofPreset(index, name, subtitle, editing, selected): - if editing { - return ItemListCheckboxItem(presentationData: presentationData, systemStyle: .glass, title: name, subtitle: subtitle, style: .left, checked: selected, zeroSeparatorInsets: false, sectionId: self.section, action: { + // Always an ItemListCheckboxItem so the row never swaps node *type* between display and + // editing. ItemList updates a row in place by stableId and cannot re-type a node (the cast + // in updateNode fails silently), which previously left the disclosure row in place in edit + // mode and made selection unresponsive. In display mode tapping applies the template; in + // edit mode it toggles selection. Bonus: templates now match the device-preset rows below. + return ItemListCheckboxItem(presentationData: presentationData, title: name, subtitle: subtitle, style: .left, checked: editing ? selected : false, zeroSeparatorInsets: false, sectionId: self.section, action: { + if editing { arguments.toggleSpoofTemplateSelected(index) - }) - } else { - return ItemListDisclosureItem(presentationData: presentationData, title: name, label: subtitle, labelStyle: .detailText, sectionId: self.section, style: .blocks, disclosureStyle: .none, action: { + } else { arguments.updateSettings { settings in var settings = settings if index < settings.spoofPresets.count { @@ -699,8 +693,8 @@ private enum WinterGramSettingsEntry: ItemListNodeEntry { } return settings } - }) - } + } + }) case .spoofAddTemplate: return ItemListPeerActionItem(presentationData: presentationData, icon: PresentationResourcesItemList.plusIconImage(presentationData.theme), title: lang.WinterGram_AddTemplate, sectionId: self.section, height: .generic, color: .accent, editing: false, action: { arguments.addSpoofTemplate() @@ -787,7 +781,6 @@ private func winterGramSettingsEntries(presentationData: PresentationData, setti let lang = presentationData.strings var entries: [WinterGramSettingsEntry] = [] - // Appends an expandable single-select row with checkbox options shown inline. func appendDropdown(_ dropdown: WinterGramDropdown, _ title: String, _ section: WinterGramSettingsSection) { let options = winterGramDropdownOptions(dropdown, settings: settings).enumerated().map { index, option in ItemListExpandableSelectionItem.Option(id: "\(dropdown)_\(index)", title: wntOption(option.title, lang), isSelected: option.selected, index: index) @@ -797,7 +790,6 @@ private func winterGramSettingsEntries(presentationData: PresentationData, setti func appendGhost() { entries.append(.ghostHeader) - // Expandable Ghost Mode switch with checkbox sub-items for each suppressed signal. let subItems: [ItemListExpandableSwitchItem.SubItem] = [ .init(id: "readMessages", title: lang.WinterGram_DontReadMessages, isSelected: settings.suppressesReadReceipts, isEnabled: true), .init(id: "readStories", title: lang.WinterGram_DontReadStories, isSelected: settings.suppressesStoryViews, isEnabled: true), @@ -839,7 +831,6 @@ private func winterGramSettingsEntries(presentationData: PresentationData, setti entries.append(.stashMute(settings.stashMuteNotifications)) entries.append(.stashAutoRead(settings.stashAutoMarkRead)) entries.append(.stashPasscodeRow(settings.stashPasscode.isEmpty ? "None" : "••••")) - // All auto-privacy toggles combined into one expandable multi-select checkbox row. appendDropdown(.stashPrivacy, lang.WinterGram_AutoPrivacy, .stash) entries.append(.stashFooter) } @@ -868,7 +859,6 @@ private func winterGramSettingsEntries(presentationData: PresentationData, setti entries.append(.confirmStickers(settings.stickerConfirmation)) entries.append(.confirmGif(settings.gifConfirmation)) entries.append(.confirmVoice(settings.voiceConfirmation)) - // Footer last (stableId 67) so the section stays in ascending stableId order. entries.append(.chatFooter) } @@ -885,7 +875,6 @@ private func winterGramSettingsEntries(presentationData: PresentationData, setti func appendSpoofing() { entries.append(.spoofingHeader) - // Saved spoof templates at the top of the Spoofing section. entries.append(.spoofPresetsHeader) for (index, preset) in settings.spoofPresets.enumerated() { let subtitle = [preset.deviceModel, preset.appVersion].filter { !$0.isEmpty }.joined(separator: " · ") @@ -895,7 +884,6 @@ private func winterGramSettingsEntries(presentationData: PresentationData, setti if spoofTemplatesEditing && !selectedTemplates.isEmpty { entries.append(.spoofDeleteSelected) } - // Device model is chosen via the preset cards below (incl. "Real device") — no separate prompt row. for (i, preset) in winterGramDevicePresets.enumerated() { entries.append(.spoofingDevicePreset(i, preset.model == settings.spoofDeviceModel)) } @@ -950,8 +938,6 @@ public func winterGramSettingsController(context: AccountContext, category: Wint var pushControllerImpl: ((ViewController) -> Void)? var refreshDeletedCount: (() -> Void)? - // The combined super-categories (.ayugram/.other) are not standalone tabs in the legacy - // no-category segmented view. let sectionTabs: [WinterGramSettingsSection] = WinterGramSettingsSection.allCases.filter { $0 != .ayugram && $0 != .other } let selectedCategoryPromise = ValuePromise(category ?? .ghost, ignoreRepeated: true) @@ -968,13 +954,12 @@ public func winterGramSettingsController(context: AccountContext, category: Wint newSettings.customApiHash != initialSettings.customApiHash || newSettings.materialDesign != initialSettings.materialDesign || newSettings.customFont != initialSettings.customFont || - newSettings.monoFont != initialSettings.monoFont + newSettings.monoFont != initialSettings.monoFont || + newSettings.liquidGlass != initialSettings.liquidGlass requiresRestartPromise.set(needsRestart) }) } - // Applies a change to the stashed-peer privacy settings and re-syncs exceptions for every - // currently stashed peer when the rules change. let updateStashPrivacy: (@escaping (WinterGramStashPrivacySettings) -> WinterGramStashPrivacySettings) -> Void = { f in let previous = currentWinterGramSettings.stashPrivacy updateSettings { settings in @@ -991,12 +976,9 @@ public func winterGramSettingsController(context: AccountContext, category: Wint } } - // Which inline dropdown (if any) is currently expanded. Atomic mirror for synchronous reads in the - // toggle/select closures; promise drives the list rebuild. let expandedDropdownValue = Atomic(value: nil) let expandedDropdownPromise = ValuePromise(nil, ignoreRepeated: true) - // Whether the Ghost Mode expandable section in the Core menu is open. let ghostExpandedValue = Atomic(value: false) let ghostExpandedPromise = ValuePromise(false, ignoreRepeated: true) let spoofTemplatesEditingValue = Atomic(value: false) @@ -1025,7 +1007,6 @@ public func winterGramSettingsController(context: AccountContext, category: Wint updateSettings { options[index].apply($0) } } } - // Multi-select dropdowns stay open so the user can toggle more options. if dropdown != .stashPrivacy { let _ = expandedDropdownValue.swap(nil) expandedDropdownPromise.set(nil) @@ -1290,8 +1271,6 @@ public func winterGramSettingsController(context: AccountContext, category: Wint controller?.present(c, in: .window(.root), with: a) } pushControllerImpl = { [weak controller] c in - // Keep the restart-banner subscription alive for the controller's lifetime: this - // closure is retained by `arguments`, which the ItemListController holds via its state. let _ = restartBannerDisposable (controller?.navigationController as? NavigationController)?.pushViewController(c) } diff --git a/submodules/TelegramCore/Sources/Network/FetchedMediaResource.swift b/submodules/TelegramCore/Sources/Network/FetchedMediaResource.swift index 1f6b2e0832..87c55d28bc 100644 --- a/submodules/TelegramCore/Sources/Network/FetchedMediaResource.swift +++ b/submodules/TelegramCore/Sources/Network/FetchedMediaResource.swift @@ -902,7 +902,7 @@ func revalidateMediaResourceReference(accountPeerId: PeerId, postbox: Postbox, n } } // Rich-text messages (`RichTextMessageAttribute`) embed their media in the - // attribute's `InstantPage`, not in `message.media` — search there too so a + // attribute's `InstantPage`, not in `message.media`. Search there so a // stale instant-page audio/image file reference can revalidate. for attribute in message.attributes { if let attribute = attribute as? RichTextMessageAttribute { diff --git a/submodules/TelegramCore/Sources/State/AccountStateManagementUtils.swift b/submodules/TelegramCore/Sources/State/AccountStateManagementUtils.swift index 840a50e907..3e32284476 100644 --- a/submodules/TelegramCore/Sources/State/AccountStateManagementUtils.swift +++ b/submodules/TelegramCore/Sources/State/AccountStateManagementUtils.swift @@ -4462,17 +4462,50 @@ func replayFinalState( } } case let .DeleteMessagesWithGlobalIds(ids): + // WinterGram: ordinary cloud deletions (private chats, basic groups) arrive here via + // updateDeleteMessages → deleteMessagesWithGlobalIds, NOT via .DeleteMessages (which only + // covers channels/supergroups). Resolve the global ids to message ids and preserve + mark + // them exactly like the .DeleteMessages path, otherwise these deletions stay unmarked. + var winterGramPreservedGlobalIds = false if currentWinterGramCoreSettings.saveDeletedMessages { - break + let resolvedIds = transaction.messageIdsForGlobalIds(ids) + var winterGramShouldSave = !resolvedIds.isEmpty + // When "save for bots" is off, skip preserving deletions in bot chats. + if winterGramShouldSave && !currentWinterGramCoreSettings.saveForBots { + if let firstPeerId = resolvedIds.first?.peerId, let peer = transaction.getPeer(firstPeerId) as? TelegramUser, peer.botInfo != nil { + winterGramShouldSave = false + } + } + if winterGramShouldSave { + let markDate = Int32(Date().timeIntervalSince1970) + winterGramRecordDeletedMessages(transaction: transaction, ids: resolvedIds) + for id in resolvedIds { + transaction.updateMessage(id, update: { currentMessage in + if currentMessage.attributes.contains(where: { $0 is WinterGramDeletedMessageAttribute }) { + return .skip + } + var storeForwardInfo: StoreMessageForwardInfo? + if let forwardInfo = currentMessage.forwardInfo { + storeForwardInfo = StoreMessageForwardInfo(authorId: forwardInfo.author?.id, sourceId: forwardInfo.source?.id, sourceMessageId: forwardInfo.sourceMessageId, date: forwardInfo.date, authorSignature: forwardInfo.authorSignature, psaType: forwardInfo.psaType, flags: forwardInfo.flags) + } + var attributes = currentMessage.attributes + attributes.append(WinterGramDeletedMessageAttribute(date: markDate)) + return .update(StoreMessage(id: currentMessage.id, customStableId: nil, globallyUniqueId: currentMessage.globallyUniqueId, groupingKey: currentMessage.groupingKey, threadId: currentMessage.threadId, timestamp: currentMessage.timestamp, flags: StoreMessageFlags(currentMessage.flags), tags: currentMessage.tags, globalTags: currentMessage.globalTags, localTags: currentMessage.localTags, forwardInfo: storeForwardInfo, authorId: currentMessage.author?.id, text: currentMessage.text, attributes: attributes, media: currentMessage.media)) + }) + } + winterGramPreservedGlobalIds = true + } } - var resourceIds: [MediaResourceId] = [] - transaction.deleteMessagesWithGlobalIds(ids, forEachMedia: { media in - addMessageMediaResourceIdsToRemove(media: media, resourceIds: &resourceIds) - }) - if !resourceIds.isEmpty { - let _ = mediaBox.removeCachedResources(Array(Set(resourceIds)), force: true).start() + if !winterGramPreservedGlobalIds { + var resourceIds: [MediaResourceId] = [] + transaction.deleteMessagesWithGlobalIds(ids, forEachMedia: { media in + addMessageMediaResourceIdsToRemove(media: media, resourceIds: &resourceIds) + }) + if !resourceIds.isEmpty { + let _ = mediaBox.removeCachedResources(Array(Set(resourceIds)), force: true).start() + } + deletedMessageIds.append(contentsOf: ids.map { .global($0) }) } - deletedMessageIds.append(contentsOf: ids.map { .global($0) }) case let .DeleteMessages(ids): var winterGramShouldSave = currentWinterGramCoreSettings.saveDeletedMessages // When "save for bots" is off, skip preserving deletions in bot chats. diff --git a/submodules/TelegramCore/Sources/WinterGram/WinterGramLocalEdit.swift b/submodules/TelegramCore/Sources/WinterGram/WinterGramLocalEdit.swift index a2a04942d6..bd0b51dbc5 100644 --- a/submodules/TelegramCore/Sources/WinterGram/WinterGramLocalEdit.swift +++ b/submodules/TelegramCore/Sources/WinterGram/WinterGramLocalEdit.swift @@ -2,7 +2,7 @@ import Foundation import Postbox import SwiftSignalKit -// Replaces a message's text locally only — no network edit is performed, so the +// Replaces a message's text locally without a network edit, so the // server never learns about the change and no "edited" mark is added. The change // persists in the local database until the message is re-fetched from the server. public func winterGramEditMessageLocally(postbox: Postbox, messageId: MessageId, text: String) -> Signal { diff --git a/submodules/TelegramCore/Sources/WinterGram/WinterGramRegistrationDate.swift b/submodules/TelegramCore/Sources/WinterGram/WinterGramRegistrationDate.swift index e55aa52df4..a52b6d63ae 100644 --- a/submodules/TelegramCore/Sources/WinterGram/WinterGramRegistrationDate.swift +++ b/submodules/TelegramCore/Sources/WinterGram/WinterGramRegistrationDate.swift @@ -3,7 +3,7 @@ import Foundation // Estimates the approximate registration date of a Telegram account from its user ID. // Telegram user IDs are allocated roughly monotonically over time, so a piecewise-linear // interpolation between known (id, date) anchor points yields a usable estimate. This is an -// approximation only — it is never exact and is meant for display with an "≈" prefix. +// approximation only and is meant for display with an "≈" prefix. public func winterGramEstimatedRegistrationDate(userId: Int64) -> Date? { guard userId > 0 else { return nil diff --git a/submodules/TelegramPresentationData/Sources/WinterGramBadge.swift b/submodules/TelegramPresentationData/Sources/WinterGramBadge.swift index c713fa15f4..f3ef2f725b 100644 --- a/submodules/TelegramPresentationData/Sources/WinterGramBadge.swift +++ b/submodules/TelegramPresentationData/Sources/WinterGramBadge.swift @@ -5,14 +5,6 @@ import AppBundle import TelegramCore import TelegramUIPreferences -// Runtime-composed WinterGram badge. -// -// Instead of shipping a fixed-colour PNG, the badge is composed on demand from two white-on-transparent -// shape assets (a scalloped backplate + a snowflake) so the backplate can follow the current theme -// colour. Per the design spec (1024² canvas): the backplate fills 1024@(0,0), the snowflake is 756² -// at (134,134). Results are cached per backplate colour; because every badge view re-renders when the -// presentation theme changes, this naturally recomposes the badge for the new theme. - private let winterGramBadgeCacheLock = NSLock() private var winterGramComposedBadgeCache: [UInt32: UIImage] = [:] @@ -23,8 +15,6 @@ private func winterGramColorKey(_ color: UIColor) -> UInt32 { return (channel(r) << 16) | (channel(g) << 8) | channel(b) } -/// Composes the badge image: a scalloped backplate filled with `backplateColor` and a white snowflake -/// on top, following the 1024 spec. Cached per colour. public func winterGramComposedBadge(backplateColor: UIColor) -> UIImage? { let key = winterGramColorKey(backplateColor) winterGramBadgeCacheLock.lock() @@ -51,16 +41,65 @@ public func winterGramComposedBadge(backplateColor: UIColor) -> UIImage? { return image } -/// The backplate colour for the current theme: the accent colour, slightly darkened. public func winterGramBadgeBackplateColor(theme: PresentationTheme) -> UIColor { return theme.list.itemAccentColor.withMultipliedBrightnessBy(0.82) } -/// The themed badge image for a peer, or nil if the peer carries no WinterGram badge. -/// Every official peer (developers and official channels) gets the composed backplate badge. +private var winterGramComposedBadgeCacheV2: [String: UIImage] = [:] + +private func winterGramLayerImage(source: String) -> UIImage? { + if let url = WinterGramBadgeManager.shared.localAssetFileURL(forSource: source), let image = UIImage(contentsOfFile: url.path) { + return image + } + return UIImage(bundleImageName: source) +} + +public func winterGramComposedBadge(for badge: WinterGramBadgeDef, canvas: Double, themeColor: UIColor, size: CGSize) -> UIImage? { + let canvasValue = canvas > 0.0 ? canvas : 1024.0 + let version = WinterGramBadgeManager.shared.manifest.version + let key = "\(badge.id)|\(version)|\(winterGramColorKey(themeColor))|\(Int(size.width))x\(Int(size.height))" + winterGramBadgeCacheLock.lock() + if let cached = winterGramComposedBadgeCacheV2[key] { + winterGramBadgeCacheLock.unlock() + return cached + } + winterGramBadgeCacheLock.unlock() + + let renderer = UIGraphicsImageRenderer(size: size) + let image = renderer.image { _ in + for layer in badge.layers { + if layer.isLottie { + continue + } + guard let layerImage = winterGramLayerImage(source: layer.source) else { + continue + } + let rect = CGRect( + x: layer.x / canvasValue * size.width, + y: layer.y / canvasValue * size.height, + width: layer.width / canvasValue * size.width, + height: layer.height / canvasValue * size.height + ) + switch layer.tint { + case .theme: + layerImage.withTintColor(themeColor, renderingMode: .alwaysOriginal).draw(in: rect) + case let .hex(value): + layerImage.withTintColor(UIColor(rgb: value), renderingMode: .alwaysOriginal).draw(in: rect) + case .original: + layerImage.draw(in: rect) + } + } + } + winterGramBadgeCacheLock.lock() + winterGramComposedBadgeCacheV2[key] = image + winterGramBadgeCacheLock.unlock() + return image +} + public func winterGramBadgeImage(for peer: EnginePeer, theme: PresentationTheme) -> UIImage? { - guard isWinterGramOfficialPeer(peer) else { + guard let badge = WinterGramBadgeManager.shared.badge(for: peer) else { return nil } - return winterGramComposedBadge(backplateColor: winterGramBadgeBackplateColor(theme: theme)) + let manifest = WinterGramBadgeManager.shared.manifest + return winterGramComposedBadge(for: badge, canvas: manifest.canvas, themeColor: winterGramBadgeBackplateColor(theme: theme), size: CGSize(width: 36.0, height: 36.0)) } diff --git a/submodules/TelegramPresentationData/Sources/WinterGramStrings.swift b/submodules/TelegramPresentationData/Sources/WinterGramStrings.swift index 16a0da798a..f757022fad 100644 --- a/submodules/TelegramPresentationData/Sources/WinterGramStrings.swift +++ b/submodules/TelegramPresentationData/Sources/WinterGramStrings.swift @@ -139,6 +139,7 @@ private let winterGramRussianSeed: [String: String] = [ "WinterGram.ShowMessageSeconds": "Секунды в сообщениях", "WinterGram.ShowPeerID": "Показывать ID", "WinterGram.ShowRegistrationDate": "Показывать дату регистрации", + "WinterGram.RegistrationDate": "Дата регистрации", "WinterGram.SingleCornerRadius": "Одиночное скругление", "WinterGram.SomeSettingsWillTakeEffectAfterRestart": "Некоторые настройки вступят в силу после перезапуска.", "WinterGram.SpoofAppVersion": "Версия приложения", @@ -195,8 +196,8 @@ public func winterGramSeedStrings(languageCode: String) -> [String: String] { } /// Localizes a WinterGram option/section label chosen at runtime (dropdown selections, section -/// titles) by routing the known English value to its generated accessor. Unknown values — user -/// input such as custom fonts, reactions or spoofed identifiers — are returned unchanged. +/// titles) by routing the known English value to its generated accessor. Unknown user input +/// such as custom fonts, reactions, or spoofed identifiers is returned unchanged. public func wntOption(_ english: String, _ strings: PresentationStrings) -> String { switch english { case "Off": return strings.WinterGram_Off diff --git a/submodules/TelegramUI/Components/Chat/ChatMessageBubbleItemNode/Sources/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/Components/Chat/ChatMessageBubbleItemNode/Sources/ChatMessageBubbleItemNode.swift index 485bb24547..ff696d82fe 100644 --- a/submodules/TelegramUI/Components/Chat/ChatMessageBubbleItemNode/Sources/ChatMessageBubbleItemNode.swift +++ b/submodules/TelegramUI/Components/Chat/ChatMessageBubbleItemNode/Sources/ChatMessageBubbleItemNode.swift @@ -3897,7 +3897,7 @@ public class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePreviewI let targetAlpha: CGFloat = isDeleted ? 0.45 : 1.0 animation.animator.updateAlpha(layer: strongSelf.mainContextSourceNode.contentNode.layer, alpha: targetAlpha, completion: nil) - if hasDeletedMark, let winterGramDeletedAttribute = winterGramDeletedAttribute { + if hasDeletedMark { let deletedIconNode: ASImageNode if let current = strongSelf.winterGramDeletedIconNode { deletedIconNode = current @@ -3909,7 +3909,9 @@ public class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePreviewI strongSelf.insertSubnode(newNode, belowSubnode: strongSelf.messageAccessibilityArea) deletedIconNode = newNode } - deletedIconNode.image = winterGramDeletedBadgeImage(emoji: currentWinterGramSettings.deletedMark, pillColor: item.presentationData.theme.theme.list.itemDestructiveColor, timeText: currentWinterGramSettings.showDeletedTime ? winterGramDeletedBadgeTimeText(winterGramDeletedAttribute.date) : nil) + // A small, unobtrusive mark (the chosen emoji, default 🧹) — NOT a coloured time pill. + // The deletion time lives in the long-press context menu instead (see ChatInterfaceStateContextMenus). + deletedIconNode.image = winterGramDeletedBadgeImage(emoji: currentWinterGramSettings.deletedMark, pillColor: item.presentationData.theme.theme.list.itemDestructiveColor, timeText: nil) let iconSize = deletedIconNode.image?.size ?? CGSize(width: 16.0, height: 16.0) let spacing: CGFloat = 5.0 let iconY = backgroundFrame.maxY - iconSize.height - 2.0 diff --git a/submodules/TelegramUI/Components/Chat/ChatMessageRichDataBubbleContentNode/Sources/ChatMessageRichDataBubbleContentNode.swift b/submodules/TelegramUI/Components/Chat/ChatMessageRichDataBubbleContentNode/Sources/ChatMessageRichDataBubbleContentNode.swift index 74839546bd..516084629b 100644 --- a/submodules/TelegramUI/Components/Chat/ChatMessageRichDataBubbleContentNode/Sources/ChatMessageRichDataBubbleContentNode.swift +++ b/submodules/TelegramUI/Components/Chat/ChatMessageRichDataBubbleContentNode/Sources/ChatMessageRichDataBubbleContentNode.swift @@ -22,17 +22,12 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode private let containerNode: ContainerNode public var statusNode: ChatMessageDateAndStatusNode? - // `init()` may run off the main thread; UIView construction must happen on the main thread. - // The page view is built lazily inside the apply closure (always main-thread) via ensurePageView(). + // `init()` may run off the main thread, so build the page view lazily on the main thread. private var pageView: InstantPageV2View? - // Tracks the message (id + stableVersion) baked into the current pageView's render context. - // The synthesized webpage uses a sentinel id (namespace 0, id 0) shared across all richText - // messages, so we key cache invalidation on the message itself. When the bubble is recycled - // with a different message we must discard pageView (render context is constructor-fixed). + // The synthesized webpage has a sentinel id shared across all richText messages, so key the + // page view on the message id and stableVersion and rebuild when the bubble is recycled. private var pageViewMessageKey: (id: EngineMessage.Id, stableVersion: UInt32, showMoreExpanded: Bool)? - // messageStableVersion is in the cache key because the synthesized instantPage content - // mutates between streamed AI message chunks (each chunk bumps stableVersion); without - // this, the cached layout would shadow newly-arrived content during streaming. + // Include stableVersion in the layout cache key so streamed chunks do not reuse stale layouts. private var currentPageLayout: (boundingWidth: CGFloat, presentationThemeIdentity: ObjectIdentifier, expandedDetails: [Int: Bool], @@ -40,9 +35,9 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode showMoreExpanded: Bool, layout: InstantPageV2Layout)? private var currentExpandedDetails: [Int: Bool] = [:] - // Intra-message anchor scroll that is waiting on a collapsed
to expand + relayout. + // Anchor scroll waiting on a collapsed
to expand and relayout. private var pendingScrollAnchor: String? - // Progress guard: the details index expanded on the previous pending pass. + // Details index expanded on the previous pending pass, used to avoid looping. private var lastExpandedPendingDetailsIndex: Int? private var linkProgressDisposable: Disposable? private var linkProgressRects: [CGRect]? @@ -54,16 +49,13 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode private var textRevealController: TextRevealController? private var textRevealLink: SharedDisplayLinkDriver.Link? private var currentRevealCostMap: InstantPageV2RevealCostMap? - // Cursor value pushed into pageView.applyReveal on the prior tick. The display-link tick - // compares the revealed prefix's height at this cursor vs the new cursor to decide when - // to request a full bubble re-layout (so the bubble grows with the reveal). + // Cursor from the previous display-link tick, used to detect when the revealed height + // changes and request a full bubble relayout. private var lastAppliedRevealedCount: Int = 0 private var displayContentsUnderSpoilers: Bool = false private var relativeDateTimer: (timer: SwiftSignalKit.Timer, period: Int32)? - // "Show more" affordance for partial rich messages (instantPage.isComplete == false). - // Managed inline, mirroring the statusNode pattern: a bubble-owned TextNode below the page - // content, with a TextLoadingEffectView shimmer while the full-text request is in flight. + // "Show more" link for partial rich messages, with a shimmer while the full text loads. private var showMoreTextNode: TextNode? private var showMoreLoadingView: TextLoadingEffectView? private var requestFullRichTextDisposable: Disposable? @@ -115,7 +107,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode self.addSubnode(self.containerNode) } - /// Builds (or reuses) the V2View. Same-message stableVersion bumps (streamed AI chunks) reuse + /// Builds or reuses the V2View. Same-message stableVersion bumps reuse /// the existing view, updating only the webpage content in place. The view is rebuilt only when /// the bubble is recycled with a different message/webpage (different message id). private func ensurePageView(item: ChatMessageBubbleContentItem, webpage: TelegramMediaWebpage, showMoreExpanded: Bool) -> InstantPageV2View { @@ -136,7 +128,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode self.pageView?.removeFromSuperview() self.pageView = nil - // Capture only the MessageReference (value type) — the closures are retained on the + // Capture only the value-type MessageReference. // render context which is owned by the V2View, so we must avoid making them retain // the bubble (`self`) or the message indirectly via `item`. let messageReference = MessageReference(item.message) @@ -402,7 +394,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode current.layout.formattedDateUpdatePeriod == nil { // Reuse the cached layout only when it has no relative `textDate`. A relative // date's formatted string ("N minutes ago") is baked into the laid-out text at - // layout time, and none of the cache-key inputs change as wall-clock advances — + // layout time, and the cache key does not change as wall-clock time advances, // so reusing it would freeze the date and defeat the refresh timer (which fires // `requestFullUpdate` precisely to re-run `layoutInstantPageV2` → `formatDate`). // Forcing a recompute for relative-date pages keeps the timer's tick visible. @@ -456,7 +448,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode if hasDraft { // The bubble's bottom inset is supplied by the `statusBottomEdge + 6.0` - // max() in the measure closure below — but that branch is gated by + // max() in the measure closure below, but that branch is gated by // `!hasDraft`, so during streaming the bubble has only its 1pt bottom rim // past `revealedContentSize.height` (= bounds.maxY + closingPad). Without // this, descenders of the last revealed line sit cramped against the @@ -591,7 +583,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode let frame = CGRect(origin: CGPoint(x: pageHorizontalInset, y: pageLayout.contentSize.height + showMoreTopSpacing), size: layout.0.size) showMoreLayoutResult = layout showMoreFramePageLocal = frame - // Date trails the link line (or wraps below it if it doesn't fit) — reuse the + // Date trails the link line or wraps below it. Reuse the // status machinery by substituting the link frame for the last-text-line frame. lastTextLineFrame = frame lastTextLineTrailingPadding = 0.0 @@ -608,11 +600,11 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode } // Measure trailing extent from the line's actual visible RIGHT EDGE (after - // alignment, in page coords) — not just its intrinsic width. A right-aligned + // alignment, in page coordinates), not just its intrinsic width. A right-aligned // or RTL last line has `lineWidth` worth of glyphs but sits all the way at // the right text inset (lineFrame.maxX == text.frame.minX + textItem.width). // Feeding the status node just `lineWidth` would let the trail/wrap decision - // place the date inline with the line — on top of it. `pageHorizontalInset` + // place the date inline with the line, on top of it. `pageHorizontalInset` // is the offset between page-coords and status-node-local coords (the status // node sits at x=pageHorizontalInset in self, and pageView sits at self-x 0). let trailingWidthToMeasure: CGFloat = lastTextLineFrame.map { $0.maxX - pageHorizontalInset } ?? 10000.0 @@ -657,7 +649,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode // lands at the right text inset rather than past the bubble's right edge. let statusSizeAndApply = statusSuggestedWidthAndContinue?.1(boundingWidth - pageHorizontalInset * 2.0) if let statusSizeAndApply, !hasDraft { - // Status node anchor Y in the content node's space — mirrors the apply + // Status node anchor Y in the content node's space mirrors the apply // closure below. let statusAnchorY: CGFloat if let lastTextLineFrame { @@ -698,7 +690,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode // On the collapse→expand transition (tapping "Show more"), grow the bubble // downward in screen space (inverted list offset direction) instead of pushing - // earlier messages up — matching the audio-transcription expand. The ListView + // earlier messages up, matching audio transcription expansion. The ListView // clamps this to what fits, so "if possible" is handled for us. Only fires on a // change, and never on the first apply (appliedShowMoreExpanded is nil). if let appliedShowMoreExpanded = self.appliedShowMoreExpanded, appliedShowMoreExpanded != showMoreExpanded { @@ -791,7 +783,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode // Continue an in-flight anchor scroll that is waiting on a
// expansion to re-lay-out. This runs on EVERY apply pass (not only the // expand-triggered one), but only does anything while a scroll is pending - // — and scrollToAnchor is idempotent: each invocation either resolves and + // scrollToAnchor is idempotent: each invocation resolves and // scrolls (clearing pending) or expands the next collapsed level, and the // progress guard guarantees termination. So an unrelated relayout (theme, // width, reactions) that lands mid-expand simply advances/no-ops the loop. @@ -839,7 +831,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode } if let formattedDateUpdatePeriod = pageLayout?.formattedDateUpdatePeriod { - // Recreate the timer only when the period changes — unlike the TextBubble + // Recreate the timer only when the period changes. // reference (ChatMessageTextBubbleContentNode), which rebuilds it every apply. // The timer fires `requestFullUpdate`, which relays out and re-enters here; at // a steady period this guard is false, so the running timer keeps its schedule @@ -862,7 +854,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode // 1. Compute / cache the cost map. // Reuse the cost map computed in the layout pass (the bubble's - // size depended on it) — don't recompute. Keep the previous map + // size depended on it). Keep the previous map // alive while a reveal/finalize is still in flight: on a post- // streaming pass (hasDraft && hadDraft both false) revealCostMap is // nil, and clobbering it would strand the display-link tick (whose @@ -882,8 +874,8 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode } // Seed the (possibly freshly rebuilt) V2 view to the reveal cursor's // current position so we don't flash full text. Use the live controller - // count rather than `previousAnimateGlyphCount`, which is nil — and would - // reset the reveal to 0 — on post-streaming finalize passes where the + // count rather than nil `previousAnimateGlyphCount`, which would + // reset the reveal to 0 on final passes where the // controller is still animating. let seedCount = self.textRevealController?.currentGlyphCount ?? previousAnimateGlyphCount ?? 0 self.pageView?.applyReveal(revealedCount: seedCount, @@ -1061,7 +1053,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode // "attribute substring with displayed range" API, so we cannot compare // displayed text to the resolved URL the way the chat text bubble does. // The chat URL handler will show a confirmation when concealed is true - // and the visible text differs from the destination — safer default. + // and the visible text differs from the destination. let concealed = true let url = ChatMessageBubbleContentTapAction.Url(url: urlHit.urlItem.url, concealed: concealed, allowInlineWebpageResolution: urlHit.urlItem.webpageId != nil) let rects = self.computeHighlightRects(item: urlHit.item, parentOffset: urlHit.parentOffset, localPoint: urlHit.localPoint) @@ -1122,21 +1114,17 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode } else if let botCommand = attributes[NSAttributedString.Key(rawValue: TelegramTextAttributes.BotCommand)] as? String { return .botCommand(botCommand) } else if let hashtag = attributes[NSAttributedString.Key(rawValue: TelegramTextAttributes.Hashtag)] as? TelegramHashtag { - // Cashtags are carried as a Hashtag attribute (no dedicated cashtag key/tap-action exists); - // the leading "$" in the string distinguishes them, and the chat hashtag handler searches both. + // Cashtags use the hashtag attribute and retain their leading "$". return .hashtag(hashtag.peerName, hashtag.hashtag) } else if let bankCard = attributes[NSAttributedString.Key(rawValue: TelegramTextAttributes.BankCard)] as? String { return .bankCard(bankCard) } else if let date = attributes[NSAttributedString.Key(rawValue: TelegramTextAttributes.Date)] as? Int32 { - // The displayed string is unused downstream (ChatMessageBubbleItemNode matches `.date(date, _)`). return .date(date, "") } return nil } - /// Bridges an InstantPageUrlItem (used by the gallery's caption URL handler) to the - /// chat layer's URL handler. `concealed: true` matches `tapActionAtPoint` for the same - /// reason: V2 cannot reliably compare displayed link text to the resolved URL. + // Open gallery caption links through the chat URL handler. private func openInstantPageUrl(_ url: InstantPageUrlItem) { guard let item = self.item else { return } item.controllerInteraction.openUrl(ChatControllerInteraction.OpenUrl( @@ -1147,9 +1135,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode } private func computeHighlightRects(item: InstantPageTextItem, parentOffset: CGPoint, localPoint: CGPoint) -> [CGRect] { - // Text item returns rects in its local coords; translate back into containerNode-local coords. - // containerNode is offset by (1, 1) from the bubble-content-node, but the highlight overlay lives - // *inside* containerNode, so we use layout-coords (= containerNode-local) for the rects. + // Translate text-local rects into container coordinates. let originX = parentOffset.x let originY = parentOffset.y return item.linkSelectionRects(at: localPoint).map { rect in @@ -1443,7 +1429,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode item.controllerInteraction.scrollToMessageIdWithAnchor(item.message.index, anchor) return } - // 2. Not laid out — it may be buried in a collapsed
. Find the path and expand + // If hidden in collapsed details, find the path and expand // the first collapsed details on it, then retry after the relayout (post-relayout hook). let anchorExpanded = (self.showMoreExpanded?.messageId == item.message.id) ? (self.showMoreExpanded?.value ?? false) : false guard let instantPage = item.message.richText.map({ (anchorExpanded ? $0.fullInstantPage : nil) ?? $0.instantPage }), @@ -1482,7 +1468,7 @@ public class ChatMessageRichDataBubbleContentNode: ChatMessageBubbleContentNode if let state = self.showMoreExpanded, state.messageId == messageId, state.value { return } - // Full page already cached on the attribute — expand immediately, no network, no shimmer. + // Expand a cached full page immediately. if attribute.fullInstantPage != nil { self.showMoreExpanded = (messageId, true) item.controllerInteraction.requestMessageUpdate(messageId, false, nil) diff --git a/submodules/TelegramUI/Components/ContextControllerImpl/Sources/ContextControllerExtractedPresentationNode.swift b/submodules/TelegramUI/Components/ContextControllerImpl/Sources/ContextControllerExtractedPresentationNode.swift index 0f656f4597..c4b5b14f2d 100644 --- a/submodules/TelegramUI/Components/ContextControllerImpl/Sources/ContextControllerExtractedPresentationNode.swift +++ b/submodules/TelegramUI/Components/ContextControllerImpl/Sources/ContextControllerExtractedPresentationNode.swift @@ -199,7 +199,7 @@ private final class PortalTransitionStaging { /// Tears down staging. Reparents contentNode into the requested destination, /// removes clone from its overlay host, removes wrapper from surface. /// All operations are explicit; we rely on Telegram's manual-animation policy - /// (no implicit CALayer actions) — no CATransaction wrapping needed. + /// without implicit CALayer actions. /// /// `presentationScale` re-application is intentionally not handled here: the /// portal path is gated on `contentNode.presentationScale == 1.0` in CCEPN's @@ -223,7 +223,7 @@ private final class PortalTransitionStaging { // ContentContainingNode/View added contentNode at init). Capturing // contentNode.supernode at staging-enter time was overengineered: during // animateOut staging that's offsetContainerNode (CCEPN's transient host), - // which gets torn down with CCEPN — leaving the bubble parentless. + // which gets torn down with CCEPN, leaving the bubble parentless. switch containingItem { case let .node(containingNode): containingNode.addSubnode(containingNode.contentNode) @@ -761,7 +761,7 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo contentNodeValue.sourceTransitionSurface = takeInfo.sourceTransitionSurface // Mirror any ancestor scale on the source (e.g. a sheet's container transform) onto the offset - // container so the extracted contents render at the same visual size as in-place — without this + // container so the extracted contents keep the same visual size. // they pop to 1:1 when reparented into the unscaled overlay window. let sourceView = takeInfo.containingItem.view let modeledWidth = sourceView.bounds.width @@ -1425,7 +1425,7 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo // Use ItemContentNode.frame (already includes contentVerticalOffset and // additionalVisibleOffsetY from the layout pass) plus // containingItem.contentRect.origin to derive the bubble's actual rest - // window rect. Using bare `contentRect` skips those offsets — when reactions + // window rect. Using bare `contentRect` skips those offsets, so reactions // are visible (additionalVisibleOffsetY = reactionContextNode.visibleExtensionDistance) // the wrapper would sit ~10pt above the bubble's true rest, visibly offsetting // the portal mirror until staging.settle reparents into offsetContainerNode. @@ -1451,7 +1451,7 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo // is visible at the chat-bubble slot; final (overlay clone, above // chrome) is visible at the menu position. Final fade-in begins // `crossfadeOverlap` seconds before source fade-out, so the final - // is already on screen before the source starts dropping out — no + // is already on screen before the source starts dropping out. // single-frame seam at the handoff. Each fade runs for a fixed 0.1s. if let wrapper = staging.wrapper, let clone = staging.clone { let sourceFadeDelay = 0.12 * duration @@ -1759,7 +1759,7 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo // Mid-dismiss crossfade: clone (overlay portal target, above chrome) // is visible at the menu position; final (chat-tree wrapper, behind // chrome) is visible once the bubble settles at the chat-bubble - // slot. Late handoff — clone carries the bubble through most of the + // slot. The clone carries the bubble through most of the // dismiss; final picks up only as the bubble lands. Source fade-out // is anchored at 80% of the spring duration; final fade-in starts // `crossfadeOverlap` seconds earlier. Each fade runs for 0.1s. @@ -2138,4 +2138,3 @@ final class ContextControllerExtractedPresentationNode: ASDisplayNode, ContextCo } } - diff --git a/submodules/TelegramUI/Components/EmojiStatusComponent/Sources/EmojiStatusComponent.swift b/submodules/TelegramUI/Components/EmojiStatusComponent/Sources/EmojiStatusComponent.swift index 10509a6085..132b647e13 100644 --- a/submodules/TelegramUI/Components/EmojiStatusComponent/Sources/EmojiStatusComponent.swift +++ b/submodules/TelegramUI/Components/EmojiStatusComponent/Sources/EmojiStatusComponent.swift @@ -16,9 +16,8 @@ import GZip import HierarchyTrackingLayer import TelegramUIPreferences -// WinterGram: bakes a white-on-transparent shape asset, tinted to `color`, into a CGImage usable as -// layer contents. Drawing into a renderer context is required because `UIImage.withTintColor(...).cgImage` -// returns the original (untinted) pixels. Cached per (shape, colour). +// WinterGram: bake the tinted shape into a CGImage; `UIImage.withTintColor(...).cgImage` returns the +// original (untinted) pixels, so drawing into a renderer context is required. Cached per (shape, color). private var winterGramTintedShapeCache: [String: CGImage] = [:] func winterGramBakeTintedShape(_ name: String, color: UIColor) -> CGImage? { var r: CGFloat = 0.0, g: CGFloat = 0.0, b: CGFloat = 0.0, a: CGFloat = 0.0 @@ -266,9 +265,8 @@ public final class EmojiStatusComponent: Component { private var winterGramBackplateLayer: SimpleLayer? private var winterGramSnowflakeLayer: SimpleLayer? - // Whether the badge backplate should be spinning. Tracked separately so the rotation can be - // re-applied when the layer re-enters the hierarchy (Core Animation drops detached animations - // when a layer leaves the window — e.g. cell reuse / scrolling / backgrounding). + // Track whether the badge backplate should spin so the animation can be restored when the + // layer re-enters the hierarchy. private var winterGramBadgeAnimating: Bool = false private var animationLayer: InlineStickerItemLayer? @@ -300,9 +298,7 @@ public final class EmojiStatusComponent: Component { } } - // (Re)applies the infinite backplate-rotation animation for the WinterGram badge. Safe to call - // repeatedly: it removes any existing animation first and only re-adds it when animation is - // enabled, so re-entering the hierarchy resumes the spin instead of leaving it frozen. + // Restore or update the infinite backplate rotation for the WinterGram badge. private func applyWinterGramBadgeRotation() { guard let backplateLayer = self.winterGramBackplateLayer else { return @@ -605,8 +601,7 @@ public final class EmojiStatusComponent: Component { if case let .winterGramBadge(backplateColor) = component.content { size = availableSize - // The tint must be BAKED into the bitmap: `UIImage.withTintColor(...).cgImage` returns the - // original (white) pixels, which would render the backplate white instead of the theme colour. + // Bake the tint into the bitmap; `UIImage.withTintColor(...).cgImage` would keep the white pixels. let backplateImage = winterGramBakeTintedShape("WntGramBackplateShape", color: backplateColor) let snowflakeImage = winterGramBakeTintedShape("WntGramSnowflakeShape", color: .white) diff --git a/submodules/TelegramUI/Components/InteractiveTextComponent/Sources/InteractiveTextComponent.swift b/submodules/TelegramUI/Components/InteractiveTextComponent/Sources/InteractiveTextComponent.swift index 75006283d1..13962d423c 100644 --- a/submodules/TelegramUI/Components/InteractiveTextComponent/Sources/InteractiveTextComponent.swift +++ b/submodules/TelegramUI/Components/InteractiveTextComponent/Sources/InteractiveTextComponent.swift @@ -2917,8 +2917,7 @@ final class TextContentItemLayer: SimpleLayer { effectiveCharacterDrawCount = maxCharacterDrawCount } else { if self.previousMaxCharacterDrawCount > 0 || !self.animatingSnippetLayers.isEmpty { - // Reveal finished — compute total character count so mask and snippets - // can continue updating until all snippet animations complete + // Keep mask active until all snippet animations finish. var totalCharCount = 0 for line in lines { if let characterRects = line.characterRects { @@ -2932,7 +2931,7 @@ final class TextContentItemLayer: SimpleLayer { } effectiveCharacterDrawCount = totalCharCount } else { - // Nothing left to animate — remove the mask + // Remove mask when nothing remains to animate. if let _ = self.revealMaskLayer { self.renderNodeContainer.mask = nil self.revealMaskLayer = nil @@ -3036,8 +3035,7 @@ final class TextContentItemLayer: SimpleLayer { } } - // Build mask rects — use the lowest animating snippet index as the mask limit - // so the mask never extends past any character still being animated + // Limit mask to the lowest animating snippet index. let maskCharacterLimit: Int if let lowestAnimating = self.animatingSnippetLayers.min(by: { $0.characterIndex < $1.characterIndex })?.characterIndex { maskCharacterLimit = lowestAnimating diff --git a/submodules/TelegramUI/Components/MessageInputPanelComponent/Sources/MessageInputPanelComponent.swift b/submodules/TelegramUI/Components/MessageInputPanelComponent/Sources/MessageInputPanelComponent.swift index 5ad64b0bbb..63f3a6fcaa 100644 --- a/submodules/TelegramUI/Components/MessageInputPanelComponent/Sources/MessageInputPanelComponent.swift +++ b/submodules/TelegramUI/Components/MessageInputPanelComponent/Sources/MessageInputPanelComponent.swift @@ -1693,7 +1693,6 @@ public final class MessageInputPanelComponent: Component { } } - // AI Button do { let isTallPanel = textFieldSize.height >= 70.0 let textLength = self.textFieldExternalState.textLength diff --git a/submodules/TelegramUI/Components/PeerInfo/PeerInfoCoverComponent/Sources/PeerInfoGiftsCoverComponent.swift b/submodules/TelegramUI/Components/PeerInfo/PeerInfoCoverComponent/Sources/PeerInfoGiftsCoverComponent.swift index b3dc98d22a..a665281e0d 100644 --- a/submodules/TelegramUI/Components/PeerInfo/PeerInfoCoverComponent/Sources/PeerInfoGiftsCoverComponent.swift +++ b/submodules/TelegramUI/Components/PeerInfo/PeerInfoCoverComponent/Sources/PeerInfoGiftsCoverComponent.swift @@ -195,9 +195,7 @@ public final class PeerInfoGiftsCoverComponent: Component { } private func recomputeGifts() { - // WinterGram: visual (fake NFT) gifts are merged via `additionalGifts`, so we must render - // them even before the real gifts state has loaded (e.g. a profile with no pinned gifts). - // Don't bail when `currentGiftsState` is nil — just treat the pinned set as empty. + // WinterGram: merge visual gifts from `additionalGifts` even before the real gifts state loads. let giftStatusId = self.currentGiftStatusId let pinnedGifts = (self.currentGiftsState?.gifts ?? []).filter { gift in if gift.pinnedToTop { diff --git a/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoHeaderNode.swift b/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoHeaderNode.swift index 51987bc4af..0a4ae2b24a 100644 --- a/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoHeaderNode.swift +++ b/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoHeaderNode.swift @@ -1642,8 +1642,7 @@ final class PeerInfoHeaderNode: ASDisplayNode { } } - // WinterGram: render the snowflake/developer badge last, to the right of the premium emoji - // status, the verified mark and any credibility icon — mirroring the chat-list ordering. + // WinterGram: render the snowflake/developer badge last, mirroring the chat-list ordering. if let winterGramIconSize = self.winterGramIconSize, let titleExpandedWinterGramIconSize = self.titleExpandedWinterGramIconSize, winterGramIconSize.width > 0.0 { // Extra leading gap (vs the 4pt used between other icons) so the badge sits ~symmetrically // after the premium emoji status, which carries its own internal transparent padding. diff --git a/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoProfileItems.swift b/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoProfileItems.swift index 70c02362ca..abf39a2ee1 100644 --- a/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoProfileItems.swift +++ b/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoProfileItems.swift @@ -171,7 +171,7 @@ func infoItems( } var displayId = "\(rawId)" if let winterGramDcId = winterGramDcId { - displayId += " (DC: \(winterGramDcId))" + displayId += " (dc: \(winterGramDcId))" } let copyId: () -> Void = { [weak interaction] in UIPasteboard.general.string = "\(rawId)" @@ -179,7 +179,7 @@ func infoItems( controller.present(UndoOverlayController(presentationData: presentationData, content: .copy(text: presentationData.strings.Conversation_TextCopied), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), in: .current) } } - items[.winterGramInfo]!.append(PeerInfoScreenLabeledValueItem(id: 3099, label: "ID", text: displayId, textColor: .primary, action: { _, _ in + items[.winterGramInfo]!.append(PeerInfoScreenLabeledValueItem(id: 3099, label: "id", text: displayId, textColor: .primary, action: { _, _ in copyId() }, longTapAction: nil, contextAction: { _, gesture, _ in copyId() @@ -192,9 +192,9 @@ func infoItems( if currentWinterGramSettings.showRegistrationDate, !user.isDeleted, let date = winterGramEstimatedRegistrationDate(userId: user.id.id._internalGetInt64Value()) { let formatter = DateFormatter() formatter.locale = Locale(identifier: presentationData.strings.baseLanguageCode) - formatter.dateFormat = "MMMM yyyy" - let dateText = "≈ " + formatter.string(from: date) - items[.winterGramInfo]!.append(PeerInfoScreenLabeledValueItem(id: 3098, label: "Registered", text: dateText, textColor: .primary, action: nil, longTapAction: nil, contextAction: { _, gesture, _ in + formatter.setLocalizedDateFormatFromTemplate("MMMM yyyy") + let dateText = formatter.string(from: date) + items[.winterGramInfo]!.append(PeerInfoScreenLabeledValueItem(id: 3098, label: presentationData.strings.WinterGram_RegistrationDate, text: dateText, textColor: .primary, action: nil, longTapAction: nil, contextAction: { _, gesture, _ in UIPasteboard.general.string = dateText gesture?.cancel() }, requestLayout: { animated in diff --git a/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/WinterGramGiftPickerScreen.swift b/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/WinterGramGiftPickerScreen.swift index f6b2c4f5f9..938bc2acbf 100644 --- a/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/WinterGramGiftPickerScreen.swift +++ b/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/WinterGramGiftPickerScreen.swift @@ -9,8 +9,7 @@ import AccountContext import TelegramPresentationData import GiftItemComponent -// WinterGram: a simple grid picker of all regular (generic) star gifts — including sold-out ones still -// present in the cached catalog — used to add a NON-unique gift "visually" to the profile. +// WinterGram: grid picker of regular star gifts for adding a non-unique gift to the profile. public final class WinterGramGiftPickerScreen: ViewController { private final class Node: ViewControllerTracingNode { private weak var controller: WinterGramGiftPickerScreen? @@ -36,8 +35,7 @@ public final class WinterGramGiftPickerScreen: ViewController { self.scrollNode.view.alwaysBounceVertical = true self.addSubnode(self.scrollNode) - // Make sure the gift catalog is fetched/cached — otherwise the picker would be empty if the - // user never opened a gift screen before. + // Ensure the gift catalog is cached so the picker is not empty on first open. self.keepUpdatedDisposable = context.engine.payments.keepStarGiftsUpdated().startStrict() self.disposable = (context.engine.payments.cachedStarGifts() diff --git a/submodules/TelegramUI/Components/TabBarComponent/Sources/TabBarComponent.swift b/submodules/TelegramUI/Components/TabBarComponent/Sources/TabBarComponent.swift index d2ad61f9a6..d0e9e40d86 100644 --- a/submodules/TelegramUI/Components/TabBarComponent/Sources/TabBarComponent.swift +++ b/submodules/TelegramUI/Components/TabBarComponent/Sources/TabBarComponent.swift @@ -707,11 +707,11 @@ public final class TabBarComponent: Component { let equalWidth = floorToScreenPixels(availableItemsWidth / CGFloat(component.items.count)) if unboundItemWidths.allSatisfy({ $0 <= equalWidth }) { - // All items fit in equal width — use equal widths for optical alignment + // Use equal widths when all items fit. itemWidths = Array(repeating: equalWidth, count: component.items.count) totalItemsWidth = equalWidth * CGFloat(component.items.count) } else { - // Some items need more space — use weighted fit + // Use weighted widths when some items need more space. let itemWeightNorm: CGFloat = availableItemsWidth / unboundItemWidthSum var widths: [CGFloat] = [] var total: CGFloat = 0.0 diff --git a/submodules/TelegramUI/Components/TextFieldComponent/Sources/TextFieldComponent.swift b/submodules/TelegramUI/Components/TextFieldComponent/Sources/TextFieldComponent.swift index 591b0f708c..dda853877f 100644 --- a/submodules/TelegramUI/Components/TextFieldComponent/Sources/TextFieldComponent.swift +++ b/submodules/TelegramUI/Components/TextFieldComponent/Sources/TextFieldComponent.swift @@ -17,7 +17,8 @@ import TextInputMenu import ObjCRuntimeUtils import MultilineTextComponent -public final class EmptyInputView: UIView, UIInputViewAudioFeedback { +// Internal to avoid collision with ChatEntityKeyboardInputNode.EmptyInputView. +final class EmptyInputView: UIView, UIInputViewAudioFeedback { public var enableInputClicksWhenVisible: Bool { return true } diff --git a/submodules/TelegramUI/Images.xcassets/IntroLogoDark.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/IntroLogoDark.imageset/Contents.json new file mode 100644 index 0000000000..babd065c89 --- /dev/null +++ b/submodules/TelegramUI/Images.xcassets/IntroLogoDark.imageset/Contents.json @@ -0,0 +1,8 @@ +{ + "images" : [ + { "idiom" : "universal", "scale" : "1x" }, + { "filename" : "IntroLogoDark@2x.png", "idiom" : "universal", "scale" : "2x" }, + { "filename" : "IntroLogoDark@3x.png", "idiom" : "universal", "scale" : "3x" } + ], + "info" : { "author" : "xcode", "version" : 1 } +} diff --git a/submodules/TelegramUI/Images.xcassets/IntroLogoDark.imageset/IntroLogoDark@2x.png b/submodules/TelegramUI/Images.xcassets/IntroLogoDark.imageset/IntroLogoDark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e0a7e8b901b35a3207e6f18ac9399b206606e96b GIT binary patch literal 59907 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%0DYuFOBA@zWh3qB*Z?Q#kwgf^pyVND2 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 t)sBZN=i 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

IK;_)Lgx{gEP+;l9KAOsCY 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 deliverOnMainQueue).start(next: { settings in let glass = settings.liquidGlass diff --git a/submodules/TelegramUI/Sources/Chat/ChatSendMessageRichTextPreview.swift b/submodules/TelegramUI/Sources/Chat/ChatSendMessageRichTextPreview.swift index 4a12867f5a..4e602cbdb9 100644 --- a/submodules/TelegramUI/Sources/Chat/ChatSendMessageRichTextPreview.swift +++ b/submodules/TelegramUI/Sources/Chat/ChatSendMessageRichTextPreview.swift @@ -140,9 +140,7 @@ final class ChatSendMessageRichTextPreview: ChatSendMessageContextScreenRichText fitToWidth: true ) self.pageView.update(layout: layout, theme: pageTheme, animation: .None) - // The parent (MessageItemView) owns and sets `pageView`'s frame; `update` only - // rebuilds content and reports the size. Rendering is static (.None) — the screen - // drives the size/crossfade transition. + // The parent owns the page frame and transition. self.cachedBoundingWidth = boundingWidth self.cachedThemeIdentity = themeIdentity diff --git a/submodules/TelegramUI/Sources/ChatController.swift b/submodules/TelegramUI/Sources/ChatController.swift index fd2ef6f449..0fe8a60d11 100644 --- a/submodules/TelegramUI/Sources/ChatController.swift +++ b/submodules/TelegramUI/Sources/ChatController.swift @@ -5494,7 +5494,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G return } // Find the bubble for this message (it must be at least partially - // visible — we got here from a tap inside it) and compute the + // visible because the tap came from it) and compute the // anchor's y in item-local coords. .bottom(anchorY) places the item // so the anchor lands at the visual top of the rotated chat list's // content area; .center(.custom) is bypassed for short items, so it diff --git a/submodules/TelegramUI/Sources/ChatControllerNode.swift b/submodules/TelegramUI/Sources/ChatControllerNode.swift index 049bd55562..59846965ba 100644 --- a/submodules/TelegramUI/Sources/ChatControllerNode.swift +++ b/submodules/TelegramUI/Sources/ChatControllerNode.swift @@ -4051,7 +4051,7 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate { // In overlay chat mode (self.containerNode != nil) historyNodeContainer is // reparented out of contentContainerNode (see line ~1299), making the // `aboveSubview: historyNodeContainer.view` insertion invalid. Return nil - // so callers fall back to CCEPN's clipping path — portal-style transitions + // so callers fall back to CCEPN's clipping path. Portal-style transitions // are not supported in overlay mode. guard self.containerNode == nil else { return nil } let parent = self.contentContainerNode.contentNode.view diff --git a/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift b/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift index 6400b57974..85bf785d87 100644 --- a/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift +++ b/submodules/TelegramUI/Sources/ChatInterfaceStateContextMenus.swift @@ -1434,6 +1434,18 @@ func contextMenuForChatPresentationInterfaceState(chatPresentationInterfaceState }))) } + if let deletedAttribute = message.attributes.first(where: { $0 is WinterGramDeletedMessageAttribute }) as? WinterGramDeletedMessageAttribute { + // WinterGram: surface WHEN a preserved message was deleted, in the long-press menu, + // instead of stamping a coloured time pill onto the bubble. + let deletedDateText = humanReadableStringForTimestamp(strings: chatPresentationInterfaceState.strings, dateTimeFormat: chatPresentationInterfaceState.dateTimeFormat, timestamp: deletedAttribute.date, alwaysShowTime: true, allowYesterday: true, format: nil).string + let deletedMark = currentWinterGramSettings.deletedMark.isEmpty ? "🧹" : currentWinterGramSettings.deletedMark + actions.append(.action(ContextMenuActionItem(text: "\(deletedMark) \(deletedDateText)", textColor: .primary, icon: { theme in + return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Delete"), color: theme.actionSheet.primaryTextColor) + }, action: { _, f in + f(.default) + }))) + } + if currentWinterGramSettings.showPeerId != .hidden { actions.append(.action(ContextMenuActionItem(text: "Copy Message ID", icon: { theme in return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Copy"), color: theme.actionSheet.primaryTextColor) diff --git a/submodules/TelegramUI/Sources/ChatMessageTransitionNode.swift b/submodules/TelegramUI/Sources/ChatMessageTransitionNode.swift index 2074c849b6..b4cbd0d330 100644 --- a/submodules/TelegramUI/Sources/ChatMessageTransitionNode.swift +++ b/submodules/TelegramUI/Sources/ChatMessageTransitionNode.swift @@ -64,8 +64,8 @@ private func pendingAdditiveSublayerTranslation(_ layer: CALayer) -> CGPoint { /// `convert(_:to:)` into the child. Applying the correction at the right level /// (rather than flat-summing the translations in the destination space) lets /// `CALayer.convert` propagate each correction through any remaining -/// transforms — child `transform`, further ancestors' own model -/// `sublayerTransform`, etc. — so the result is correct even when the chain +/// transforms, including child `transform` and ancestor model +/// `sublayerTransform`, so the result is correct even when the chain /// contains non-translation transforms (rotations, scales). private func convertAnimatingSourceRectFromWindow(_ windowRect: CGRect, toView: UIView) -> CGRect { var chain: [CALayer] = [] diff --git a/submodules/TelegramUI/Sources/MusicListenTracker.swift b/submodules/TelegramUI/Sources/MusicListenTracker.swift index e1786cec62..e5d68fec6d 100644 --- a/submodules/TelegramUI/Sources/MusicListenTracker.swift +++ b/submodules/TelegramUI/Sources/MusicListenTracker.swift @@ -43,7 +43,7 @@ final class MusicListenTracker { func update(with stateAndType: (Account, SharedMediaPlayerItemPlaybackStateOrLoading, MediaManagerPlayerType)?) { assert(Queue.mainQueue().isCurrent()) guard let (_, stateOrLoading, type) = stateAndType, type == .music else { - // Player closed or switched to non-music — report and clear + // Report when the player closes or switches away from music. self.reportAndReset() return } @@ -135,7 +135,7 @@ final class MusicListenTracker { self.pauseTimer?.invalidate() self.pauseTimer = nil } else if !nowPlaying && wasPlaying { - // Just paused — start pause timer + // Start the pause timer. self.startPauseTimer() } @@ -154,7 +154,7 @@ final class MusicListenTracker { } private func pauseTimerFired() { - // Paused > 60s — report current session + // Report after a 60-second pause. self.reportAndReset() } diff --git a/submodules/TelegramUI/Sources/OpenUrl.swift b/submodules/TelegramUI/Sources/OpenUrl.swift index f0c199859d..25aee11084 100644 --- a/submodules/TelegramUI/Sources/OpenUrl.swift +++ b/submodules/TelegramUI/Sources/OpenUrl.swift @@ -443,8 +443,7 @@ func openExternalUrlImpl(context: AccountContext, urlContext: OpenURLContext, ur navigationController?.pushViewController(controller) return } - // WinterGram: wnt://profile opens the current account's own profile; wnt://profile?id= - // opens that user's profile (resolved from the local cache — works for known peers). + // Open the current or requested cached profile. if host == "profile" { let targetPeerId: EnginePeer.Id if let idString = parsedUrl.query.flatMap({ QueryParameters($0)?["id"] }), let idValue = Int64(idString) { diff --git a/submodules/TelegramUI/Sources/WinterGramTopBanner.swift b/submodules/TelegramUI/Sources/WinterGramTopBanner.swift index 39b6b2fef8..1f457e6464 100644 --- a/submodules/TelegramUI/Sources/WinterGramTopBanner.swift +++ b/submodules/TelegramUI/Sources/WinterGramTopBanner.swift @@ -3,7 +3,7 @@ import Display import TelegramUIPreferences // WinterGram: a persistent branding banner shown at the very top, centred in the Dynamic Island / -// notch band. It is a purely decorative overlay added to the key window — `isUserInteractionEnabled` +// notch band. It is a decorative overlay added to the key window. `isUserInteractionEnabled` // is false so it never intercepts touches. For now there is a single banner type (the bundled // `WntGramBanner` image); `WinterGramTopBannerStyle.off` hides it, any other value shows it. public final class WinterGramTopBannerView: UIView { diff --git a/submodules/TelegramUIPreferences/Sources/WinterGramBadgeManager.swift b/submodules/TelegramUIPreferences/Sources/WinterGramBadgeManager.swift new file mode 100644 index 0000000000..09b180115b --- /dev/null +++ b/submodules/TelegramUIPreferences/Sources/WinterGramBadgeManager.swift @@ -0,0 +1,196 @@ +import Foundation +import TelegramCore + +public let winterGramBadgeManifestBaseURL = "https://raw.githubusercontent.com/reekeer/WinterGram/master/.wintergram/icons/" + +public extension Notification.Name { + static let winterGramBadgesChanged = Notification.Name("winterGramBadgesChanged") +} + +public final class WinterGramBadgeManager { + public static let shared = WinterGramBadgeManager() + + private let queue = DispatchQueue(label: "org.wintergram.badges", qos: .utility) + private let lock = NSLock() + private var _manifest: WinterGramBadgeManifest + + private let cacheDirectory: URL + private let manifestCacheURL: URL + private let refreshInterval: TimeInterval = 6.0 * 60.0 * 60.0 + private let requestTimeout: TimeInterval = 15.0 + private var timer: Timer? + private var isRefreshing = false + private var didStart = false + + private init() { + let caches = (FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first) ?? URL(fileURLWithPath: NSTemporaryDirectory()) + let directory = caches.appendingPathComponent("wintergram-badges", isDirectory: true) + try? FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true, attributes: nil) + self.cacheDirectory = directory + self.manifestCacheURL = directory.appendingPathComponent("manifest.json") + + if let data = try? Data(contentsOf: self.manifestCacheURL), let manifest = WinterGramBadgeManifest.decode(from: data) { + self._manifest = manifest + } else if let bundled = WinterGramBadgeManager.loadBundledManifest() { + self._manifest = bundled + } else { + self._manifest = .empty + } + } + + private static func loadBundledManifest() -> WinterGramBadgeManifest? { + guard let url = Bundle.main.url(forResource: "WinterGramBadgesManifest", withExtension: "json"), let data = try? Data(contentsOf: url) else { + return nil + } + return WinterGramBadgeManifest.decode(from: data) + } + + public var manifest: WinterGramBadgeManifest { + self.lock.lock() + defer { self.lock.unlock() } + return self._manifest + } + + public func badge(for peer: EnginePeer) -> WinterGramBadgeDef? { + let rawId = peer.id.id._internalGetInt64Value() + let manifest = self.manifest + var best: WinterGramBadgeDef? + for badge in manifest.badges { + let matches: Bool + switch peer { + case .user: + matches = badge.peers.users.contains(rawId) + case .channel: + matches = badge.peers.channels.contains(rawId) + default: + matches = false + } + if matches && (best == nil || badge.priority > best!.priority) { + best = badge + } + } + return best + } + + public func localAssetFileURL(forSource source: String) -> URL? { + let url = self.cacheDirectory.appendingPathComponent(WinterGramBadgeManager.sanitize(source)) + if FileManager.default.fileExists(atPath: url.path) { + return url + } + return nil + } + + private static func sanitize(_ source: String) -> String { + let allowed = CharacterSet(charactersIn: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.") + let mapped = String(source.unicodeScalars.map { allowed.contains($0) ? Character($0) : "_" }) + return mapped.replacingOccurrences(of: "..", with: "_") + } + + public func start() { + self.queue.async { + if self.didStart { + return + } + self.didStart = true + self.refreshLocked() + } + DispatchQueue.main.async { + if self.timer == nil { + self.timer = Timer.scheduledTimer(withTimeInterval: self.refreshInterval, repeats: true, block: { [weak self] _ in + self?.refresh() + }) + } + } + } + + public func refresh() { + self.queue.async { + self.refreshLocked() + } + } + + private func refreshLocked() { + if self.isRefreshing { + return + } + guard let manifestURL = URL(string: winterGramBadgeManifestBaseURL + "manifest.json"), manifestURL.scheme?.lowercased() == "https" else { + return + } + self.isRefreshing = true + + var request = URLRequest(url: manifestURL, cachePolicy: .reloadIgnoringLocalCacheData, timeoutInterval: self.requestTimeout) + if let etag = UserDefaults.standard.string(forKey: "wnt_badge_etag") { + request.setValue(etag, forHTTPHeaderField: "If-None-Match") + } + + URLSession.shared.dataTask(with: request) { [weak self] data, response, _ in + guard let strongSelf = self else { + return + } + strongSelf.queue.async { + defer { strongSelf.isRefreshing = false } + + guard let http = response as? HTTPURLResponse else { + return + } + if http.statusCode == 304 { + return + } + guard http.statusCode == 200, let data = data, data.count <= WinterGramBadgeLimits.maxAssetBytes, let newManifest = WinterGramBadgeManifest.decode(from: data) else { + return + } + + if newManifest.version <= strongSelf.manifest.version && newManifest == strongSelf.manifest { + return + } + + strongSelf.downloadAssets(for: newManifest) { + try? data.write(to: strongSelf.manifestCacheURL, options: .atomic) + if let etag = http.value(forHTTPHeaderField: "Etag") { + UserDefaults.standard.set(etag, forKey: "wnt_badge_etag") + } + strongSelf.apply(newManifest) + } + } + }.resume() + } + + private func downloadAssets(for manifest: WinterGramBadgeManifest, completion: @escaping () -> Void) { + let sources = manifest.assetSources.filter { self.localAssetFileURL(forSource: $0) == nil } + guard !sources.isEmpty else { + completion() + return + } + let group = DispatchGroup() + for source in sources { + guard let url = URL(string: winterGramBadgeManifestBaseURL + source), url.scheme?.lowercased() == "https" else { + continue + } + group.enter() + let request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalCacheData, timeoutInterval: self.requestTimeout) + URLSession.shared.dataTask(with: request) { [weak self] data, response, _ in + defer { group.leave() } + guard let strongSelf = self else { + return + } + guard let http = response as? HTTPURLResponse, http.statusCode == 200, let data = data, data.count <= WinterGramBadgeLimits.maxAssetBytes else { + return + } + let destination = strongSelf.cacheDirectory.appendingPathComponent(WinterGramBadgeManager.sanitize(source)) + try? data.write(to: destination, options: .atomic) + }.resume() + } + group.notify(queue: self.queue) { + completion() + } + } + + private func apply(_ manifest: WinterGramBadgeManifest) { + self.lock.lock() + self._manifest = manifest + self.lock.unlock() + DispatchQueue.main.async { + NotificationCenter.default.post(name: .winterGramBadgesChanged, object: nil) + } + } +} diff --git a/submodules/TelegramUIPreferences/Sources/WinterGramBadgeManifest.swift b/submodules/TelegramUIPreferences/Sources/WinterGramBadgeManifest.swift new file mode 100644 index 0000000000..e589662e7f --- /dev/null +++ b/submodules/TelegramUIPreferences/Sources/WinterGramBadgeManifest.swift @@ -0,0 +1,220 @@ +import Foundation + +public enum WinterGramBadgeLimits { + public static let maxBadges = 64 + public static let maxLayers = 16 + public static let maxAssetBytes = 512 * 1024 +} + +public enum WinterGramBadgeTint: Equatable { + case theme + case hex(UInt32) + case original + + public init(parsing raw: String?) { + guard var s = raw?.trimmingCharacters(in: .whitespacesAndNewlines).lowercased(), !s.isEmpty else { + self = .theme + return + } + if s == "theme" { + self = .theme + } else if s == "none" || s == "original" { + self = .original + } else { + if s.hasPrefix("#") { + s.removeFirst() + } + if s.count == 6, let value = UInt32(s, radix: 16) { + self = .hex(value) + } else { + self = .theme + } + } + } +} + +public enum WinterGramBadgeAnimationType: String, Equatable { + case none + case rotate + case blink + case pulse + case bounce + case shake + case lottie + + public init(parsing raw: String?) { + guard let raw = raw?.trimmingCharacters(in: .whitespacesAndNewlines).lowercased(), let value = WinterGramBadgeAnimationType(rawValue: raw) else { + self = .none + return + } + self = value + } +} + +public struct WinterGramBadgeAnimation: Equatable, Decodable { + public let type: WinterGramBadgeAnimationType + public let duration: Double + public let loop: Bool + public let directionClockwise: Bool + public let amplitude: Double + + public static let none = WinterGramBadgeAnimation(type: .none, duration: 0.0, loop: false, directionClockwise: true, amplitude: 0.0) + + public init(type: WinterGramBadgeAnimationType, duration: Double, loop: Bool, directionClockwise: Bool, amplitude: Double) { + self.type = type + self.duration = duration + self.loop = loop + self.directionClockwise = directionClockwise + self.amplitude = amplitude + } + + private enum CodingKeys: String, CodingKey { + case type, duration, loop, direction, amplitude + } + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + self.type = WinterGramBadgeAnimationType(parsing: try container.decodeIfPresent(String.self, forKey: .type)) + self.duration = (try container.decodeIfPresent(Double.self, forKey: .duration)) ?? 1.0 + self.loop = (try container.decodeIfPresent(Bool.self, forKey: .loop)) ?? true + let direction = (try container.decodeIfPresent(String.self, forKey: .direction))?.lowercased() + self.directionClockwise = (direction != "ccw") + self.amplitude = (try container.decodeIfPresent(Double.self, forKey: .amplitude)) ?? 0.1 + } +} + +public struct WinterGramBadgeLayer: Equatable, Decodable { + public let name: String + public let source: String + public let x: Double + public let y: Double + public let width: Double + public let height: Double + public let tint: WinterGramBadgeTint + public let animation: WinterGramBadgeAnimation + + public var isLottie: Bool { + let lowered = self.source.lowercased() + return lowered.hasSuffix(".tgs") || lowered.hasSuffix(".json") + } + + public init(name: String, source: String, x: Double, y: Double, width: Double, height: Double, tint: WinterGramBadgeTint, animation: WinterGramBadgeAnimation) { + self.name = name + self.source = source + self.x = x + self.y = y + self.width = width + self.height = height + self.tint = tint + self.animation = animation + } + + private enum CodingKeys: String, CodingKey { + case name, source, x, y, width, height, tint, animation + } + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + self.name = (try container.decodeIfPresent(String.self, forKey: .name)) ?? "" + self.source = (try container.decodeIfPresent(String.self, forKey: .source)) ?? "" + self.x = (try container.decodeIfPresent(Double.self, forKey: .x)) ?? 0.0 + self.y = (try container.decodeIfPresent(Double.self, forKey: .y)) ?? 0.0 + self.width = (try container.decodeIfPresent(Double.self, forKey: .width)) ?? 0.0 + self.height = (try container.decodeIfPresent(Double.self, forKey: .height)) ?? 0.0 + self.tint = WinterGramBadgeTint(parsing: try container.decodeIfPresent(String.self, forKey: .tint)) + self.animation = (try container.decodeIfPresent(WinterGramBadgeAnimation.self, forKey: .animation)) ?? .none + } +} + +public struct WinterGramBadgePeers: Equatable, Decodable { + public let users: [Int64] + public let channels: [Int64] + + public init(users: [Int64], channels: [Int64]) { + self.users = users + self.channels = channels + } + + private enum CodingKeys: String, CodingKey { + case users, channels + } + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + self.users = (try container.decodeIfPresent([Int64].self, forKey: .users)) ?? [] + self.channels = (try container.decodeIfPresent([Int64].self, forKey: .channels)) ?? [] + } +} + +public struct WinterGramBadgeDef: Equatable, Decodable { + public let id: String + public let peers: WinterGramBadgePeers + public let priority: Int + public let layers: [WinterGramBadgeLayer] + public let description: String + + public init(id: String, peers: WinterGramBadgePeers, priority: Int, layers: [WinterGramBadgeLayer], description: String) { + self.id = id + self.peers = peers + self.priority = priority + self.layers = layers + self.description = description + } + + private enum CodingKeys: String, CodingKey { + case id, peers, priority, layers, description + } + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + self.id = (try container.decodeIfPresent(String.self, forKey: .id)) ?? "" + self.peers = (try container.decodeIfPresent(WinterGramBadgePeers.self, forKey: .peers)) ?? WinterGramBadgePeers(users: [], channels: []) + self.priority = (try container.decodeIfPresent(Int.self, forKey: .priority)) ?? 0 + let rawLayers = (try container.decodeIfPresent([WinterGramBadgeLayer].self, forKey: .layers)) ?? [] + self.layers = Array(rawLayers.prefix(WinterGramBadgeLimits.maxLayers)) + self.description = (try container.decodeIfPresent(String.self, forKey: .description)) ?? "" + } +} + +public struct WinterGramBadgeManifest: Equatable, Decodable { + public let version: Int + public let canvas: Double + public let badges: [WinterGramBadgeDef] + + public init(version: Int, canvas: Double, badges: [WinterGramBadgeDef]) { + self.version = version + self.canvas = canvas + self.badges = badges + } + + private enum CodingKeys: String, CodingKey { + case version, canvas, badges + } + + public init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + self.version = (try container.decodeIfPresent(Int.self, forKey: .version)) ?? 0 + self.canvas = (try container.decodeIfPresent(Double.self, forKey: .canvas)) ?? 1024.0 + let rawBadges = (try container.decodeIfPresent([WinterGramBadgeDef].self, forKey: .badges)) ?? [] + self.badges = Array(rawBadges.prefix(WinterGramBadgeLimits.maxBadges)) + } + + public static let empty = WinterGramBadgeManifest(version: 0, canvas: 1024.0, badges: []) + + public static func decode(from data: Data) -> WinterGramBadgeManifest? { + return try? JSONDecoder().decode(WinterGramBadgeManifest.self, from: data) + } + + public var assetSources: [String] { + var seen = Set() + var result: [String] = [] + for badge in self.badges { + for layer in badge.layers where !layer.source.isEmpty { + if seen.insert(layer.source).inserted { + result.append(layer.source) + } + } + } + return result + } +} diff --git a/submodules/TelegramUIPreferences/Sources/WinterGramSettings.swift b/submodules/TelegramUIPreferences/Sources/WinterGramSettings.swift index 1b83bdb7c4..0e8f53d72c 100644 --- a/submodules/TelegramUIPreferences/Sources/WinterGramSettings.swift +++ b/submodules/TelegramUIPreferences/Sources/WinterGramSettings.swift @@ -197,8 +197,8 @@ public struct WinterGramVisualGift: Codable, Equatable { let container = try decoder.container(keyedBy: CodingKeys.self) self.id = try container.decode(String.self, forKey: .id) self.gift = try container.decode(StarGift.self, forKey: .gift) - // `EnginePeer` isn't `Codable` and can't be rebuilt without a postbox, so — like - // TelegramCore's own `StarGift` — only the peer id is persisted and `fromPeer` is left + // `EnginePeer` isn't `Codable` and can't be rebuilt without a postbox. + // Like TelegramCore's `StarGift`, only the peer id is persisted and `fromPeer` is left // nil on decode, to be resolved lazily by the consumer when a peer is actually needed. self.fromPeer = nil } @@ -816,40 +816,16 @@ public func observeWinterGramSettings(accountManager: AccountManager Bool { - let peerIdValue = peer.id.id._internalGetInt64Value() - switch peer { - case .user: - return peerIdValue == 885166226 || peerIdValue == 5665997196 - case .channel: - // Raw channel ids (the part after the -100 marker): @wntgram/@wntbeta plus -1003999337820 / -1004348385636. - return peerIdValue == 3943351959 || peerIdValue == 4316373875 || peerIdValue == 3999337820 || peerIdValue == 4348385636 - default: - return false - } + return WinterGramBadgeManager.shared.badge(for: peer) != nil } -// Developer accounts get a distinct backplated badge; other official peers keep the plain snowflake. public func isWinterGramDeveloperPeer(_ peer: EnginePeer) -> Bool { - let peerIdValue = peer.id.id._internalGetInt64Value() - switch peer { - case .user: - return peerIdValue == 885166226 || peerIdValue == 5665997196 - default: - return false - } + return WinterGramBadgeManager.shared.badge(for: peer)?.id == "developer" } -// Name of the bundled badge image for a peer, or nil if the peer carries no WinterGram badge. -// Developers and official channels get the backplated badge; other official peers get the plain snowflake. public func winterGramBadgeImageName(for peer: EnginePeer) -> String? { - if isWinterGramDeveloperPeer(peer) { - return "WntGramDeveloperBadge" + guard let badge = WinterGramBadgeManager.shared.badge(for: peer) else { + return nil } - if isWinterGramOfficialPeer(peer) { - if case .channel = peer { - return "WntGramDeveloperBadge" - } - return "WinterGramSnowflake" - } - return nil + return badge.id == "developer" ? "WntGramDeveloperBadge" : "WinterGramSnowflake" } diff --git a/submodules/TextFormat/Sources/CustomEmojiMarkdownMarker.swift b/submodules/TextFormat/Sources/CustomEmojiMarkdownMarker.swift index 18b0800c30..07efd33961 100644 --- a/submodules/TextFormat/Sources/CustomEmojiMarkdownMarker.swift +++ b/submodules/TextFormat/Sources/CustomEmojiMarkdownMarker.swift @@ -10,7 +10,7 @@ public func customEmojiMarkdownURL(fileId: Int64) -> String { /// Backslash-escapes only the characters that would break a marker link's /// display text (the `alt`): backslash, the link-text brackets, and newline. -/// Minimal by design — the forward CommonMark parser unescapes these, so the +/// The CommonMark parser unescapes these, so the /// alt round-trips. Shared by every site that emits a `[](tg://emoji?id=…)` /// marker so the escaping cannot drift between encoders. public func escapeCustomEmojiMarkdownAlt(_ string: String) -> String { @@ -53,7 +53,7 @@ private let customEmojiMarkerRegex = try? NSRegularExpression( /// markdown text. Used to populate the edit compose field so it shows the /// animated emoji; on re-save the forward path reads the attribute's fileId back. /// -/// `file` is left nil — the renderer resolves the emoji lazily from `fileId`, +/// `file` is nil because the renderer resolves the emoji lazily from `fileId`, /// and the send path only needs the fileId. Known limitation: an alt containing /// a literal `]` is not matched (emoji alts do not contain brackets). public func chatInputTextWithReattachedCustomEmoji(_ markdown: String) -> NSAttributedString { diff --git a/submodules/Utils/RangeSet/Sources/RangeSet.swift b/submodules/Utils/RangeSet/Sources/RangeSet.swift index 1456b139d8..2905ac3989 100644 --- a/submodules/Utils/RangeSet/Sources/RangeSet.swift +++ b/submodules/Utils/RangeSet/Sources/RangeSet.swift @@ -59,7 +59,7 @@ public struct RangeSet { /// The ranges stored by a range set are never empty, never overlap, /// and are always stored in ascending order when comparing their lower /// or upper bounds. In addition to not overlapping, no two consecutive - /// ranges share an upper and lower bound — `[0..<5, 5..<10]` is ill-formed, + /// ranges share an upper and lower bound. `[0..<5, 5..<10]` is ill-formed, /// and would instead be represented as `[0..<10]`. internal func _checkInvariants() { for (a, b) in zip(ranges, ranges.dropFirst()) { diff --git a/submodules/WebUI/Sources/WebAppUtils.swift b/submodules/WebUI/Sources/WebAppUtils.swift index 38ddd92cf6..368a0b7fc2 100644 --- a/submodules/WebUI/Sources/WebAppUtils.swift +++ b/submodules/WebUI/Sources/WebAppUtils.swift @@ -51,12 +51,12 @@ func isAllowedBotMediaUrl(_ urlString: String) -> Bool { // Strict canonical dotted-decimal IPv4 (4 octets, no leading zeros, each 0-255). // Do NOT use inet_pton here: Darwin's inet_pton accepts "0177.0.0.1" as // decimal 177.0.0.1, but getaddrinfo (used by URLSession) interprets the - // same string as octal 127.0.0.1 — the divergence is a loopback bypass. + // same string as octal 127.0.0.1. The divergence is a loopback bypass. if let v4Bytes = parseCanonicalIPv4(host) { return isPublicIPv4(v4Bytes) } - // IPv6 only — host must contain ":" so we don't accidentally hand a + // IPv6 only. Require ":" to avoid handing a // numeric-looking hostname to inet_pton. if host.contains(":") { var v6 = in6_addr() @@ -70,7 +70,7 @@ func isAllowedBotMediaUrl(_ urlString: String) -> Bool { } // Strict DNS-name validation. Anything that doesn't look like a real - // FQDN is rejected — this catches non-canonical numeric IP forms + // FQDN is rejected. This catches non-canonical numeric IP forms // (decimal-32 like "2130706433", octal like "0177.0.0.1", hex like // "0x7f.0.0.1", short forms like "127.1") that the OS resolver may // still treat as 127.0.0.1 even when inet_pton would accept them as diff --git a/third-party/dav1d/build-dav1d-bazel.sh b/third-party/dav1d/build-dav1d-bazel.sh index 7bdb31cb5a..f3d237d745 100644 --- a/third-party/dav1d/build-dav1d-bazel.sh +++ b/third-party/dav1d/build-dav1d-bazel.sh @@ -10,7 +10,15 @@ MESON_OPTIONS="--buildtype=release --default-library=static -Denable_tools=false CROSSFILE="" if [ "$ARCH" = "arm64" ]; then - CROSSFILE="../package/crossfiles/arm64-iPhoneOS.meson" + # Rewrite the hardcoded /Applications/Xcode.app sysroot to the active developer dir + # (e.g. Xcode-beta.app), mirroring the sim_arm64 branch — otherwise the meson cross + # build can't find the iPhoneOS SDK headers when Xcode lives at a non-default path. + TARGET_CROSSFILE="$BUILD_DIR/dav1d/package/crossfiles/arm64-iPhoneOS-custom.meson" + rm -f "$TARGET_CROSSFILE" + cp "$BUILD_DIR/dav1d/package/crossfiles/arm64-iPhoneOS.meson" "$TARGET_CROSSFILE" + custom_xcode_path="$(xcode-select -p)/" + sed -i '' "s|/Applications/Xcode.app/Contents/Developer/|$custom_xcode_path|g" "$TARGET_CROSSFILE" + CROSSFILE="../package/crossfiles/arm64-iPhoneOS-custom.meson" elif [ "$ARCH" = "sim_arm64" ]; then rm -f "arm64-iPhoneSimulator-custom.meson" TARGET_CROSSFILE="$BUILD_DIR/dav1d/package/crossfiles/arm64-iPhoneSimulator-custom.meson" diff --git a/versions.json b/versions.json index 555ec09321..c711d6795a 100644 --- a/versions.json +++ b/versions.json @@ -1,5 +1,5 @@ { - "app": "1.1", + "app": "1.2", "xcode": "26.5", "deploy_xcode": "26.5", "bazel": "8.4.2:45e9388abf21d1107e146ea366ad080eb93cb6a5f3a4a3b048f78de0bc3faffa",