2
argsPrefixmainChannelNamewindowWidthwindowHeight_childChannel_windows
_lastState_hwnds_initialRects	isClosing
_lastRects
_lastPrune_pruning_ready_pendingSetup_sending_queued_lastSendErrorLog_handlerSet_busy_counterisOpen
knownHwndsopenIdssendTileFromChildonTileActionsendDialogAnsweronDialogAnsweronWindowClosedopen	_sanitize	pushState
_lastThumb_closing_sendCoalesced_maxSendRounds_sendhwndOfcaptureRects	applyRectupdateTitle_applySetupWhenReadyonClosedselftestChildclose	pruneDeadstop_ensureHandler_onCall	parseArgsCardWindowService\WindowMethodChannelmodeChannelModeunidirectionalMapStringWindowControllerdynamicint
WindowRectboolcontainsDateTimefromMillisecondsSinceEpochSetcontainsKeyvaluestoSetListkeystoListgrowableFuturevoidPaletteTileRequestinvokeMethodtoJsontimeoutDurationseconds
debugPrinteObjectinitialRectforceremoveisUsableshowNativeBridgelistChildWindowscreateWindowConfigurationhiddenAtLaunch	argumentsiwherehreversedconfirmCardWindowdelayedmillisecondshwndtitle	unawaited_lateSetupRetrywindowIdlength
replaceAlltrim
isNotEmptyofroundnow
differenceentriesentryvaluegetCardWindowRectkeyapplyCardWindowRectsetCardWindowTitlesetupCardWindowwidthheightcalladdcloseCardWindowhideisEmptycardWindowAliveclearsetMethodCallHandler
MethodCallmethodhandleridstatefromJsonsplitfirst
instanceIdtryParse 5„€�¹™0L£&`å³    „B   
dart:async  „Z   6package:desktop_multi_window/desktop_multi_window.dart  „œ   package:flutter/foundation.dart  „Ç   package:flutter/services.dart  „ò   native_bridge.dart  …   palette_tile.dart  …-   window_rect.dartÀ FÆ À ¤bƒž K€�€”€×��`�e�´‚‚J‚š‚Á‚Æƒƒ`ƒ¬ƒø„5„?„A„W„Y„›„Æ„ï„ñ……,…H…J…e……�…Ì…ñ…ó†,†e†g†¸†¿‡‡W‡Ž‡±‡Õ‡×ˆˆeˆšˆ°ˆ×ˆÝˆß‰‰J‰L‰•‰Ø‰ÚŠ'ŠUŠWŠžŠ¥Ší‹:‹ˆ‹ÆŒŒŒGŒLŒ™ŒÑ���c�j�´�øŽDŽ�ŽÙ�(�X�_�¬�õ�8�?�Œ�Û‘+‘d‘¬‘Í‘Ï’!’(’v’¿’ë““Z“¡“í”>”Š”©”°”û•D•u•w•¿•ô–<–k–m–ª–±–ü—H—–—å˜3˜n˜­˜é™™™`™¯™Ó™ñšššBš�š’šÛ›››_›®›øœ8œtœvœ«œøœú�=�D���Üž+žyžÂžÍžèŸŸHŸ[Ÿ•ŸœŸ¡Ÿ£Ÿö = ? Š ‘ Ü¡*¡w¡Æ¢¢¢U¢¡¢ê£0£Y£q£‡£�£ª£µ£Ð¤¤3¤W¤{¤‰¤º¤Í¥¥¥¥¥r¥“¥«¥Á¥×¥Ý¥ð¥ò¦2¦9¦€¦Ì§§J§†§ˆ§Ö¨¨^¨`¨Œ¨“¨á©)©0©x©½ªªª7ªLªjªxª·ªÚ«'«k«³«Õ¬"¬*¬v¬Á­­M­†­°­Ù­ç®®®6®~®Ï¯¯¯m¯¼°°Z°ˆ°•°¶°ü±±±4±m±v±š±À±Ç²²`²r²…²Ù²ã²ø²ÿ³³³<³y³Œ³Å³ã´´J´�´ß´ëµµCµEµ…µÉµËµïµù¶H¶–¶Ü·+·t·~·Î¸¸k¸º¹¹X¹§¹ç¹üº6º�º¨º²»»N»Ÿ»í¼>¼~¼ˆ¼Ú½+½c½–½à¾¾+¾q¾‰¾´¾î¿¿¿&¿1¿K¿•¿Ï¿Ú¿ã¿úÀ @À @jÀ @“À @ŸÀ @ïÀ AAÀ A‘À AÚÀ B&À BvÀ BÅÀ CÀ C<À CLÀ CaÀ C«À C·À DÀ DWÀ D«À E À EQÀ E‘À EšÀ E­À EùÀ F&À F0À FxÀ FÂÀ G
À GJÀ G^À GqÀ G±À GÕÀ G÷À H À H5À HFÀ H\À HcÀ HhÀ HjÀ H¾À IÀ IÀ I@À IGÀ I”À I»À IÂÀ JÀ JZÀ J¡À JðÀ K7À K|À KƒÀ KÎÀ LÀ LGÀ LiÀ L�À L¢À L¯À LÔÀ LûÀ MÀ MBÀ M�À MÚÀ MéÀ MðÀ N'À N/À NxÀ N¿À O	À OTÀ O�À OäÀ PÀ PÀ PXÀ P¤À P×À QÀ QMÀ QpÀ Q›À QËÀ QùÀ RJÀ R…À RÉÀ RÙÀ SÀ SÀ SÀ SGÀ SLÀ SNÀ S’À SÇÀ SÉÀ TÀ TÀ T]À TšÀ TéÀ U0À U~À U±À U³À UíÀ UôÀ VBÀ V�À VáÀ W4À WlÀ WsÀ WÂÀ XÀ XHÀ XoÀ XŠÀ X¢À XÃÀ XÐÀ YÀ Y_À Y¦À YÖÀ YÿÀ Z#À Z2À Z9À Z[À ZrÀ Z}À ZÌÀ ZÖÀ [(À [zÀ [ÅÀ \À \dÀ \nÀ \·À ] À ]=À ]{À ]¨À ]îÀ ^7À ^eÀ ^ŒÀ ^ŸÀ ^ªÀ ^ÞÀ _À _À _#À _4À _YÀ _`À _eÀ _gÀ _žÀ _¥À _ïÀ `<À `ŠÀ `ÕÀ aÀ a-À a/À aMÀ ahÀ a€À a¡À a®À aýÀ bLÀ b‹À b»À bÆÀ b×À c À c8À cKÀ c‹À c•À càÀ d+À drÀ d•À dãÀ eÀ eNÀ eWÀ e^À ecÀ eeÀ e¹À eÀÀ fÀ fcÀ f�À fÔÀ fÖÀ gÀ gÀ gjÀ g¼À göÀ gýÀ hFÀ hŽÀ hÚÀ i#À i>À iEÀ i|À iÄÀ jÀ j.À j`À jxÀ j£À jÄÀ jäÀ k$À kPÀ kpÀ k»À kìÀ lÀ lÀ l#À l4À l9À l;À lŒÀ l“À lÚÀ m%À msÀ m¤À mÏÀ mëÀ n/À nzÀ nÀ n�À nÈÀ nÏÀ oÀ ogÀ o©À oÅÀ oÌÀ pÀ p^À pªÀ pÕÀ pñÀ q:À q€À q·À qÊÀ qûÀ rÀ rQÀ rVÀ rXÀ r˜À rŸÀ rîÀ s:À s…À sÌÀ tÀ taÀ t“À tšÀ tæÀ uÀ ucÀ u©À u÷À vÀ vdÀ v“À vÙÀ vàÀ wÀ w9À wmÀ wxÀ w®À wËÀ wûÀ xÀ x7À xAÀ x�À xÚÀ y&À yoÀ y¦À yÜÀ zÀ z+À zjÀ zqÀ z°À zÛÀ {À {À {À {\À {—À {×À {ßÀ |.À |VÀ |^À |­À } À }KÀ }eÀ }mÀ }¹À ~À ~GÀ ~rÀ ~®À ~»À ~ýÀ HÀ ]À ¥À ®À µÀ ×À ÷À €À €?À €fÀ €�À €­À €ÎÀ €ðÀ �9À �À �ÊÀ ‚À ‚CÀ ‚jÀ ‚oÀ ‚qÀ ‚½À ƒÀ ƒNÀ ƒuÀ ƒ“À ƒžÀ ƒ¯À ƒÚÀ „À „À „bÀ „iÀ „nÀ „pÀ „°À „·À …	À …[À …“À …ÊÀ …ÒÀ †À †ZÀ †¢À †áÀ ‡À ‡>À ‡FÀ ‡‘À ‡ÛÀ ˆ&À ˆJÀ ˆiÀ ˆ¯À ˆøÀ ‰AÀ ‰�À ‰±À ‰ÕÀ ŠÀ ŠaÀ Š„À Š´À ŠúÀ ‹À ‹,À ‹eÀ ‹mÀ ‹¼À ŒÀ ŒTÀ Œ\À Œ¦À ŒñÀ �5À �=À �ŒÀ �ÒÀ �çÀ �ôÀ Ž6À Ž�À Ž–À ŽÚÀ ŽãÀ ŽêÀ �À �IÀ �]À �†À � À �¯À �÷À �À �À �À �@À �‚À �¤À �©À �«À �ùÀ ‘3À ‘rÀ ‘ŸÀ ‘ÀÀ ‘ÓÀ ’À ’.À ’5À ’LÀ ’bÀ ’mÀ ’«À ’èÀ “
À “À “À “/À “HÀ “OÀ “TÀ “VÀ “�À “™À “°À “ÅÀ “ÞÀ “÷À ”À ”_À ”°À ”õÀ •À •)À •EÀ •[À •rÀ •‰À •ŽÀ •�À •ÞÀ –À –`À –bÀ –’À –°À –÷À —?À —ŒÀ —ÇÀ —ÿÀ ˜À ˜À ˜À ˜ZÀ ˜vÀ ˜ŠÀ ˜ À ˜¼À ™À ™À ™^À ™­À ™÷À šFÀ šoÀ š�À š´À šÏÀ šùÀ ›À ›CÀ ›À ›ªÀ ›¹À ›ÆÀ ›ÑÀ ›çÀ ›üÀ œHÀ œbÀ œnÀ œ¼À �À �TÀ �œÀ �ÊÀ žÀ ž@À žYÀ ž€À ž¸À žÎÀ žâÀ Ÿ.À ŸUÀ ŸuÀ Ÿ¹À ŸéÀ ŸôÀ  
À  &À  kÀ  ½À  ÓÀ  éÀ ¡À ¡IÀ ¡UÀ ¡kÀ ¡rÀ ¡„À ¡‰À ¡‹À ¡ÙÀ ¢À ¢dÀ ¢fÀ ¢ŸÀ ¢íÀ £À £GÀ £}À £„À £’À £ÒÀ ¤À ¤RÀ ¤ZÀ ¤_À ¤b   „v/// ðŸªŸ KART PENCERESÄ° â€” bir CATIA kartÄ±nÄ± baÄŸÄ±msÄ±z, taÅŸÄ±nabilir pencereye
/// "aktarÄ±r" (kullanÄ±cÄ± isteÄŸi: kartÄ±n saÄŸ Ã¼stÃ¼ndeki ðŸ—– dÃ¼ÄŸmesi).
///
/// MÄ°MARÄ° (palette_service.dart ile AYNI kalÄ±p, iki fark yerde):
///   ana â†’ alt : `state` (gÃ¶rÃ¼necek kartÄ±n tam verisi, JSON)
///   alt â†’ ana : `ready`, `tile` (kart aksiyonu â€” `PaletteTileRequest`)
///
/// ðŸ“Œ NEDEN AYRI PENCERE: kart penceresi `desktop_multi_window` ile aÃ§Ä±lÄ±r â†’
///   kendi engine/isolate'Ä± vardÄ±r. BÃ¶ylece (a) kartta CATIA meÅŸgulken ana
///   pencere kilitlenmez, (b) kart baÅŸka bir sanal masaÃ¼stÃ¼nde aÃ§Ä±kken
///   `provider` nesnesi PAYLAÅžILMAZ (bunun iÃ§in kartÄ±n verisi JSON kanalÄ±ndan
///   akar â€” bkz. `PaletteTileView`).
///
/// ðŸ“Œ TEK YAZICI KURALI: alt pencere KARAR VERMEZ; `ðŸ‘� Ã¶ne getir`, `ðŸ’¾ kaydet`,
///   `â–¶ makro` gibi her ÅŸey istek olarak ana pencereye gider ve orada
///   `CatiaProvider.handlePaletteTileAction` ile YÃœRÃœTÃœLÃœR. BÃ¶ylece "aynÄ±
///   fonksiyonlarla kontrol" isteÄŸi birebir karÅŸÄ±lanÄ±r: alt pencere kendi
///   iÅŸ kodu YAZMAZ, ana pencerenin aynÄ± kapÄ±larÄ±nÄ± Ã§alar.„A  „Y  „›  „Æ  „ñ  …  …,      …g…x…z    …g…g…y  …è…Û…ƒk…ÛM/// `multi_window` argÃ¼manÄ±nÄ±n Ã¶neki (main.dart bu Ã¶nekle yÃ¶nlendirir).†M†;…õm†;6/// Alt pencerenin ana pencereye haber verdiÄŸi kanal.‡«‡�†i�E‡��1/// Pencere boyutu (FÄ°ZÄ°KSEL px, mantÄ±ksal px DEÄžÄ°L â€” native bÃ¶yle bekliyor).
///
/// ðŸ“Œ ORAN 16:10 â€” `CatiaListTile`'daki TV kartÄ±nÄ±n `AspectRatio`'si ile
///   AYNI. Pencere kart gibi gÃ¶rÃ¼nsÃ¼n diye oran birebir eÅŸitlenmiÅŸtir;
///   farklÄ± olursa iÃ§erik kÄ±rpÄ±lÄ±r / boÅŸluk kalÄ±r.‡Ï‡À‡³‡À 	ˆ„ˆ—ˆÙˆžˆ¸ˆ´ˆºˆÅˆÆˆt‡Ù�ˆt€‡/// Alt pencere -> ana pencere kanali (ayri kanal adli: ayni pencere
/// hem iki yonu kullanir ama `WindowMethodChannel` tek yonludur).‰E‰F‰:ˆáf‰:./// ðŸªŸ instanceId â†’ pencere denetleyicisi.‰Ó‰Ô‰Æ‰N€‡‰ÆP/// ðŸªŸ instanceId â†’ o kartÄ±n son gÃ¶nderilen Ã¶zeti (yeniden aÃ§Ä±lÄ±ÅŸta).ŠPŠQŠG‰ÜvŠGK/// instanceId â†’ kart penceresinin HWND'si (kapatma / canlilik kontrolu).‹ý‹þ‹íŠY�¦‹í�t/// ðŸªŸ instanceId â†’ geri yÃ¼klemede uygulanacak kayÄ±tlÄ± konum/boyut.
///
/// ðŸ“Œ NEDEN AYRI HARÄ°TA: `open()` Ã§aÄŸrÄ±ldÄ±ÄŸÄ± anda HWND henÃ¼z YOKTUR
///   (pencere `show()` olmadan listede bulunamÄ±yor). KayÄ±tlÄ± konum ancak
///   `_applySetupWhenReady` iÃ§inde, HWND bulunduktan SONRA uygulanabilir.
///   Harita `open` sÄ±rasÄ±nda doldurulur, orada tÃ¼ketilir.‘_‘`‘R�!„@‘R„3/// ðŸªŸ instanceId â†’ o kartÄ±n PENCERESÄ°NÄ°N SON KONUMU (HAFIZADA).
///
/// ðŸ”´ 29.09.2026 â€” KULLANICI: "kartÄ± dÄ±ÅŸarÄ± aktardÄ±m, boyutlandÄ±rdÄ±m,
///   taÅŸÄ±dÄ±m, kapattÄ±m, TEKRAR AÃ‡ dedim â†’ aynÄ± yerde aÃ§Ä±lmadÄ±".
///   KÃ–K NEDEN: `open()` konumu yalnÄ±z `initialRect` ile alÄ±yordu; o da
///   sadece oturum GERÄ° YÃœKLEME'de doluydu. Elle kapatÄ±p aÃ§Ä±nca hafÄ±za
///   boÅŸ kalÄ±yordu â†’ pencere imlecin yanÄ±nda (varsayÄ±lan) aÃ§Ä±lÄ±yordu.
///   Ã‡Ã–ZÃœM: pencere kapanÄ±rken son konumu buraya yazÄ±lÄ±r, sonraki `open()`
///   bu deÄŸeri `initialRect` gibi kullanÄ±r.
///
/// ðŸ“Œ BU AYRI BÄ°R HARÄ°TADIR (`_initialRects` DEÄžÄ°L): `_initialRects` bir
///   kezlik iÅŸ bayraÄŸÄ±dÄ±r ve tÃ¼ketilince SÄ°LÄ°NÄ°R; buradaki konum ise
///   kullanÄ±cÄ± yeni bir konum verene kadar SÃœREKLÄ° hatÄ±rlanÄ±r.
///
/// ðŸ“Œ OTURUMDAN BAÄžIMSIZ: bu ayarlanÄ±ÅŸ, uygulama yeniden baÅŸlatÄ±lsa bile
///   kaybolur (yalnÄ±z `session.json` kalÄ±cÄ±dÄ±r). Ä°stenirse oturum kaydÄ±yla
///   da saklanÄ±r (`CatiaProvider._snapshotLiveSession` â†’ `cardWindowRect`).‘ƒ‘‹‘Œ‘¦‘¨‘§‘v‘fC‘v ‘Å‘º‘®‘º •p•q•h•o•i•_‘Ñƒ¡•_ƒ…/// ðŸªŸ Alt pencerenin kanala `setWindowMethodHandler` kaydÄ±nÄ± YAPTIGI kartlar.
///
/// ðŸ”´ KÃ–K NEDEN (ikinci pencere aÃ§Ä±lÄ±nca donma/Ã§Ã¶kme): `WindowController`
///   oluÅŸturulurken alt motor HENÃœZ baÅŸlamamÄ±ÅŸtÄ±r. `open()` bu arada
///   `pushState` Ã§aÄŸÄ±rÄ±rsa native taraf
///   `CHANNEL_UNREGISTERED` dÃ¶ndÃ¼rÃ¼r:
///   `Channel "mixin.one/window_controller/<id>" not accessible`
///   (bkz. `window_channel_plugin.cc` â†’ `GetTarget`; pencere henÃ¼z
///   `registerMethodHandler` Ã§aÄŸÄ±rmamÄ±ÅŸ). Her baÅŸarÄ±sÄ±z gÃ¶nderim 700 ms
///   `timeout` + gÃ¼nlÃ¼k satÄ±rÄ± demek; `open()` 8 kez denediÄŸi ve her pencere
///   iÃ§in ayrÄ± Ã§alÄ±ÅŸtÄ±ÄŸÄ± iÃ§in yÃ¼k pencere sayÄ±sÄ±yla KATLANARAK bÃ¼yÃ¼r ve
///   UI thread'i kilitler.
///
///   Ã‡Ã–ZÃœM: alt pencere `ready` gÃ¶nderene kadar veri gÃ¶nderilMEZ; veri
///   `_lastState`'te bekler, `ready` gelince tek seferde gÃ¶nderilir.–f–g–B–e–C–K–d–L–c–Q–M–^–W–+•y€ï–+y/// instanceId -> `ready` geldikten sonra uygulanacak biÃ§imlendirme.
/// (HWND + baÅŸlÄ±k). Bkz. [_applySetupWhenReady].˜¨˜©˜š˜§˜›˜£˜�–o‚;˜�‚	/// AynÄ± pencereye aynÄ± anda TEK gÃ¶nderim (backpressure).
///
/// ðŸ“Œ NEDEN: `desktop_multi_window`Ä±n `invokeMethod` Ã§aÄŸrÄ±sÄ± **senkron
///   beklemelidir** (native'de `channel_->InvokeMethod` hedef engine'in
///   yanÄ±tÄ±nÄ± bekler). Alt pencere meÅŸgulse (PNG decode, kart Ã§izimi) ana
///   pencere bloklanÄ±r. `unawaited` Ã§aÄŸrÄ±lar birikince kanal kuyruÄŸu ÅŸiÅŸer
///   ve uygulama kilitlenir. Burada pencere baÅŸÄ±na tek uÃ§uÅŸ sÄ±nÄ±rÄ± koyup,
///   sÄ±rada kalan veriyi EN YENÄ°SÄ°YLE birleÅŸtiriyoruz.
™™˜ï™˜ð˜ø˜û™˜ü™˜Þ˜¯`˜Þ ™†™Ž™�™©™«™ª™r™€–™rS/// Kanal hatasÄ± gÃ¼nlÃ¼ÄŸÃ¼ iÃ§in son yazma zamanÄ± (hata fÄ±rtinasÄ±nÄ± kÄ±sar).™Ë™½™±™½ ™é™á™Õ™á š	™þ™ó™þ   .Ÿ¥€• .T/// ðŸ—‚ Alt pencereden gelen kart aksiyonu. `CatiaProvider` baÄŸlar (tek yazÄ±cÄ±). ¥ß¥ €Í¥ßZ/// ðŸ’¬âž¡ï¸� Alt pencereden gelen cevap isteÄŸi. `CatiaProvider` baÄŸlar (tek yazÄ±cÄ±). §u¥ô��§u�k/// ðŸªŸâœ–ï¸� Kart penceresi kapandÄ± (X, Alt+F4, Ã¶lÃ¼m temizliÄŸi).
///
/// ðŸ“Œ AMAÃ‡: `CatiaProvider` bu olayla kart baÅŸÄ±na tuttuÄŸu GÃ–NDERÄ°M
/// imzalarÄ±nÄ±/parmak izlerini temizler. Temizlenmezse aynÄ± kart yeniden
/// pencereye aktarÄ±ldÄ±ÄŸÄ±nda ESKÄ° imza durur, ilk state "deÄŸiÅŸmemiÅŸ" sayÄ±lÄ±p
/// elenir ve pencere boÅŸ/karÄ±ÅŸÄ±k gÃ¶rÃ¼nÃ¼r.À SÂÀ SÃÀ SµÀ SPtÀ SµK/// Son gÃ¶nderilen gÃ¶rÃ¼ntÃ¼ (kart baÅŸÄ±na) â€” deÄŸiÅŸim tespiti iÃ§in.À U¬À U­À U¤À U«À U¥À U™À SË�ãÀ U™�Í/// ðŸªŸ KapanÄ±ÅŸ sÃ¼recindeki pencereler â€” bunlara GÃ–NDERÄ°M YAPILMAZ.
///
/// ðŸ”´ Ã‡Ã–KMENÄ°N KÃ–KÃœ (29.09.2026): `invokeMethod` SENKRON beklidir;
/// pencere motoru yok edilirken uÃ§an bir Ã§aÄŸrÄ± native'da
/// **use-after-free** yapÄ±p uygulamayÄ± dÃ¼ÅŸÃ¼rÃ¼yordu. KullanÄ±cÄ± "iki pencere
/// aÃ§tÄ±m, birini kapatÄ±rken program Ã§Ã¶ktÃ¼" diyordu â€” Ã§Ã¼nkÃ¼ kapanan
/// pencere hÃ¢lÃ¢ `_pushAllCardWindows` sÄ±rasÄ±ndaki gÃ¶nderim kuyruÄŸundaydÄ±.À a)À aÀ _i�ÁÀ a�®/// ðŸ”´ Tek Ã§aÄŸrÄ±da en fazla bu kadar gÃ¶nderim turu.
///
/// ðŸ“Œ NEDEN: 30+ canlÄ± kartta alt pencereler PNG decode + kart Ã§izimi
///   yaparken ana pencere bloke olur. SÄ±nÄ±rsÄ±z "kuyruÄŸu boÅŸaltana kadar"
///   dÃ¶ngÃ¼, `close()`'nin 700 ms penceresini aÅŸÄ±p motoru Ã¶lÃ¼ yakalÄ±yordu.
///   2 tur, arayÃ¼zÃ¼n canlÄ±lÄ±ÄŸÄ±nÄ± korur (en gÃ¼ncel kare yine ulaÅŸÄ±r) ve
///   kuyruÄŸun sÄ±nÄ±rsÄ±z bÃ¼yÃ¼mesini engeller.   š”š”�ÞœN�©/// ðŸªŸ KayÄ±tlÄ± KART penceresi HWND'leri (palet/ayarlar gibi diÄŸer alt
/// pencereler BÄ°LEREK dahil deÄŸildir).
///
/// ðŸ“Œ NEDEN: `PaletteService.ensure()` HWND'yi bulamayÄ±nca `listChildWindows`
///   listesinden bir pencere seÃ§iyordu ve `.last` alÄ±yordu. Kart penceresi
///   aÃ§Ä±ldÄ±ÄŸÄ±nda liste sonunda O bulunduÄŸu iÃ§in `setupPalette` yanlÄ±ÅŸ
///   pencereye uygulanÄ±yordu. Bu liste onlarÄ± ayÄ±rmak iÃ§in.   œxœx~œÅ3/// AÃ§Ä±k kart pencerelerinin instance id listesi.    ŒçŒçŒî  ŒŒ�ŒÝ€Ó/// ðŸªŸ Bu kart penceresi ÅŸu an KAPANIYOR mu? GÃ¶nderim yapÄ±lmaz.
///
/// ðŸ“Œ `CatiaProvider._pushAllCardWindows` turunda boÅŸa iÅŸ + 700 ms bekleme
///   olmasÄ±n diye dÄ±ÅŸarÄ±dan okunur (bkz. `_closing`).   šWšWš^  šš}šP3/// Bu kart iÃ§in zaten aÃ§Ä±k bir pencere var mÄ±?   ž¡ž¡ž´  œüœü‚£ž��ˆ/// ðŸ—‚ Kart aksiyonu â†’ ANA PENCERE (alt pencereden gÃ¶nderilir).
///
/// ðŸ“Œ NEDEN BURADA: `onTileAction` geri Ã§aÄŸÄ±rmasÄ± yalnÄ±z ANA pencerede
///   baÄŸlanÄ±r (bkz. `CatiaProvider` constructor). Alt pencerede o statik
///   NULL'dur ve `?.call` sessizce hiÃ§bir ÅŸey yapmaz â€” kullanÄ±cÄ± "dÃ¼ÄŸmeler
///   Ã§alÄ±ÅŸmÄ±yor" der. Bu metot alt pencereye Ã¶zel, doÄŸrudan kanala yazar.   £]£]£d   £u£u£y   £‹£‹£�   A A„Ù£Fƒ/// ðŸ’¬âž¡ï¸� Kart penceresindeki sorunun [buttonIndex]. dÃ¼ÄŸmesine tÄ±klanÄ±r.
///
/// ðŸ�› 29.09.2026 â€” KULLANICI: soru pencerede gÃ¶rÃ¼ndÃ¼ ama cevap dÃ¼ÄŸmesi
///   Ã§alÄ±ÅŸmÄ±yordu. NEDEN: alt pencere `cardWindowMode`'da native snapshot
///   dinlemez; `realWindowPid` boÅŸ olduÄŸu iÃ§in `answerDialog` `pid <= 0`
///   kontrolÃ¼nde `false` dÃ¶nÃ¼yor, tÄ±klama hiÃ§ native'e gitmiyordu. TÄ±klama
///   "tek yazÄ±cÄ±" kuralÄ± gereÄŸi ANA pencerede yapÄ±lmalÄ±dÄ±r.
///
/// ðŸ“Œ NOT: Pencere modu DIÅžINDA bu yol kullanÄ±lmaz; `CatiaProvider`
///   doÄŸrudan `NativeBridge.answerCatiaDialog` Ã§aÄŸÄ±rÄ±r. Alt pencere her
///   zaman kendi `CatiaProvider`'Ä±na sahip olduÄŸu iÃ§in buradaki geri
///   Ã§aÄŸÄ±rma yalnÄ±z ana pencerede baÄŸlÄ±dÄ±r (bkz. `onTileAction`).   ª#ª#ª*   ª;ª;ªB   ªPªPª\  ¨b¨b ª�§/// ðŸªŸ KartÄ± baÄŸÄ±msÄ±z pencereye aktarÄ±r.
///
/// AynÄ± kart iÃ§in zaten pencere varsa **yenisi aÃ§Ä±lmaz**, mevcut olan Ã¶ne
/// getirilir (kullanÄ±cÄ± dÃ¼ÄŸmeye iki kez basÄ±p iki pencere istemez).
///
/// ðŸªŸ [initialRect] verilirse (oturum geri yÃ¼kleme) pencere kayÄ±tlÄ±
/// KONUM/BOYUTTA aÃ§Ä±lÄ±r. Konum, HWND bulunduktan SONRA uygulanÄ±r
/// (bkz. [_applySetupWhenReady]) Ã§Ã¼nkÃ¼ HWND o anda henÃ¼z yoktur.   À HØÀ HØÀ Hß  À HlÀ Hl€—À HÎ[/// BaÅŸlÄ±ktaki `|` karakterini temizler (argÃ¼man ayrÄ±ÅŸtÄ±rÄ±cÄ±sÄ±nÄ± bozmamak iÃ§in).   À LmÀ LmÀ Lt   À L…À L…À Lš  À I	À I	ŠAÀ L]ƒQ/// ðŸ“¤ KartÄ±n gÃ¼ncel verisini alt pencereye gÃ¶nderir.
///
/// Pencere henÃ¼z hazÄ±r deÄŸilse veri kaybolmaz: [_lastState]'a yazÄ±lÄ±r ve
/// `open` tamamlanÄ±nca gÃ¶nderilir.
///
/// ðŸ“Œ Ä°MZA FÄ°LTRESÄ°: `thumb` alanÄ± base64 PNG'dir (yÃ¼zlerce KB). Her turda
///   aynÄ± kareyi yeniden gÃ¶ndermek kanalÄ± boÄŸardÄ±; bu yÃ¼zden gÃ¶rÃ¼ntÃ¼
///   deÄŸiÅŸmedikÃ§e ATLANIR â€” alt pencerede o kare zaten duruyordur.
/// ðŸ“Œ Ä°MZA FÄ°LTRESÄ°: `thumb` alanÄ± base64 PNG'dir (yÃ¼zlerce KB). Her turda
/// aynÄ± kareyi yeniden gÃ¶ndermek kanalÄ± boÄŸardÄ±; bu yÃ¼zden gÃ¶rÃ¼ntÃ¼
/// deÄŸiÅŸmedikÃ§e ATLANIR â€” alt pencerede o kare zaten duruyordur.
///
/// ðŸ”´ HAZIR KAPISI: alt pencere `ready` gÃ¶ndermeden gÃ¶nderim yapÄ±lmaz.
///   Aksi halde native `CHANNEL_UNREGISTERED` dÃ¶ner ve her deneme 700 ms
///   bekler (bkz. [_ready] aÃ§Ä±klamasÄ±).   À XsÀ XsÀ X„   À XŽÀ XŽÀ X•   À X¦À X¦À X»  À UµÀ Uµ‰®À X^‚˜/// ðŸ”´ BACKPRESSURE: pencereye aynÄ± anda TEK gÃ¶nderim.
///
/// `desktop_multi_window`Ä±n `invokeMethod`'Ä± senkron beklemelidir (native
/// `channel_->InvokeMethod` hedef engine'in cevabÄ±nÄ± bekler). Alt pencere
/// meÅŸgulken (PNG decode + kartÄ±n tam yeniden Ã§izimi) ana pencere bloklanÄ±r;
/// `unawaited` Ã§aÄŸrÄ±lar birikince kanal kuyruÄŸu ÅŸiÅŸer ve uygulama kilitlenir â€”
/// pencereler arttÄ±kÃ§a bu "kasma" katlanarak bÃ¼yÃ¼r.
///
/// Burada pencere baÅŸÄ±na tek uÃ§uÅŸ izni verilir; sÄ±radaki veri [_queued]'ta
/// TUTULUR ve en gÃ¼ncel haliyle birleÅŸtirilerek gÃ¶nderilir (eski kareleri
/// atarÄ±z â€” arayÃ¼z zaten en son durumu gÃ¶stermeli).   À aQÀ aQÀ ab   À alÀ alÀ as   À a„À a„À a™  À a1À a1„0À aE    À f¤À f¤À f«  À egÀ eg�kÀ f��9/// ðŸªŸ KartÄ±n ÃœST pencere HWND'si (0 ise kayÄ±t yok / pencere henÃ¼z hazÄ±r deÄŸil).
///
/// ðŸ“Œ TAÅžIMA Ä°Ã‡Ä°N: Alt pencere bu deÄŸeri `state` ile alÄ±r. `GetForegroundWindow()`
///   Flutter'Ä±n Ã‡OCUK HWND'sini dÃ¶ndÃ¼rÃ¼r; o pencereye kurulan sÃ¼rÃ¼kleme
///   dÃ¶ngÃ¼sÃ¼ gÃ¶rÃ¼nmez pencereyi taÅŸÄ±maz.   À fØÀ fØ…_À ií‚û/// ðŸªŸ KayÄ±t anÄ±ndaki AÃ‡IK kart pencerelerinin konum/boyutu.
///
/// DÃ¶nen anahtar = `instanceId`, deÄŸer = `WindowRect` (FÄ°ZÄ°KSEL piksel).
/// HWND'si olmayan / kÃ¼Ã§Ã¼ltÃ¼lmÃ¼ÅŸ pencereler **bilinÃ§li olarak boÅŸ bÄ±rakÄ±lÄ±r**
/// (konumlarÄ± anlamsÄ±z â€” bkz. `WindowRect.isUsable`).
///
/// ðŸ“Œ NEDEN ANA PENCEREDEN: alt pencere kendi engine'inde Ã§alÄ±ÅŸÄ±r ve
///   `window_manager`/native kÃ¶prÃ¼sÃ¼ orada gÃ¼venilir DEÄžÄ°LDÄ°R (bkz.
///   `DetailWindowService` notlarÄ±). HWND'leri `_hwnds`'te tutan da ana
///   penceredir; `GetWindowRect` saf Win32 Ã§aÄŸrÄ±sÄ± olduÄŸu iÃ§in motor
///   farkÄ± Ã¶nemsizdir.
///
/// ðŸ“Œ YALNIZ "OTURUM KAYDEDÄ°LÄ°RKEN" Ã§aÄŸrÄ±lÄ±r (bkz.
///   `CatiaProvider._snapshotLiveSession`): her taÅŸÄ±mada dinlenmez.   À mEÀ mEÀ mL   À mXÀ mXÀ md  À l=À l=‚@À m;€ù/// ðŸªŸ Pencereyi kayÄ±tlÄ± [rect]'e taÅŸÄ±r (HWND hazÄ±r olduktan sonra Ã§aÄŸrÄ±lÄ±r).
///
/// BaÅŸarÄ±sÄ±z olursa sessizce geÃ§ilir â€” pencere zaten aÃ§Ä±ldÄ±, konum
/// uygulanamamasÄ± kullanÄ±cÄ±yÄ± KAYBETMÄ°Z (varsayÄ±lan yerleÅŸimde kalÄ±r).   À p€À p€À p‡   À p“À p“À pš  À nƒÀ nƒƒÑÀ pt�ý/// ðŸªŸâœ�ï¸� Kart PENCERESÄ° baÅŸlÄ±ÄŸÄ±nÄ± gÃ¼nceller (konum/boyut deÄŸiÅŸmez).
///
/// ðŸ“Œ NEDEN: `SetupCardWindow` baÅŸlÄ±ÄŸÄ± yalnÄ±z AÃ‡ILIÅžTA bir kez yazÄ±lÄ±yor.
/// Kart baÅŸlÄ±ÄŸÄ± deÄŸiÅŸince (kullanÄ±cÄ± pencerede Ã§ift tÄ±klayÄ±p yazÄ±nca)
/// Alt+Tab/gÃ¶rev Ã§ubuÄŸu ipucu ESKÄ° adÄ± gÃ¶steriyordu â†’ "baÅŸlÄ±k
/// deÄŸiÅŸmedi" izlenimi.
///
/// HWND yoksa (pencere henÃ¼z biÃ§imlenmedi/yok) sessizce geÃ§ilir; gÃ¶rev
/// `open` sÄ±rasÄ±nda zaten `pending.title` ile yeni baÅŸlÄ±k yazÄ±lÄ±r.   À uGÀ uGÀ uN  À rZÀ rZˆÀÀ u2‚Ð/// ðŸª— `ready` geldikten SONRA pencerenin biÃ§imlendirilmesi.
///
/// ðŸ”´ NEDEN GECÄ°KLETÄ°LDÄ°: `SetupCardWindow`, Flutter Ã‡OCUK HWND'sini bulup
///   onu `CardChildProc` ile alt sÄ±nÄ±flar (sÃ¼rÃ¼kleme + boyutlandÄ±rma bu
///   alt sÄ±nÄ±flamaya baÄŸlÄ±dÄ±r). O Ã§ocuk pencere alt motorun `OnCreate`
///   â†’ `SetChildContent` adÄ±mÄ±nda oluÅŸur. Motor henÃ¼z baÅŸlamadÄ±ysa
///   `GetWindow(hwnd, GW_CHILD)` NULL dÃ¶ner, alt sÄ±nÄ±flama sessizce
///   atlanÄ±r ve pencere taÅŸÄ±namaz/kasÄ±lÄ± kalÄ±r. Log kanÄ±tÄ±: `setup=true`
///   24.397'de, alt motor 24.472'de baÅŸlÄ±yor.
///
/// `ready` mesajÄ± `setWindowMethodHandler` kaydÄ±ndan SONRA gÃ¶nderildiÄŸi
/// iÃ§in o noktada Ã§ocuk HWND kesinlikle hazÄ±rdÄ±r.   À {{À {{À {‚  À { À { ‡MÀ {r>/// âœ• ile pencere kapandÄ±: kaydÄ± sil (kart listede KALIR).   À ƒ2À ƒ2À ƒ9  À ‚sÀ ‚s�ùÀ ƒ$€£/// ðŸ§ª Selftest: alt pencereye "kendi provider'Ä±ndan dÃ¼ÄŸmelere bas" der.
/// BÃ¶ylece zincir GERÃ‡EK yoldan sÄ±nanÄ±r: alt provider â†’ kanal â†’ ana pencere.   À …wÀ …wÀ …~  À „rÀ „rŒ5À …q€Þ/// Kart penceresini GERCEKTEN kapatir (kart listede KALIR).
///
/// Onceki hata: `onClosed` yalniz kaydi siliyordu, pencere ekranda kaliyordu.
/// Simdi native WM_CLOSE gonderilir; HWND yoksa/basarisizsa pencere gizlenir.   À ‘TÀ ‘TÀ ‘Y À ‘aÀ �­À �­‚¥À ‘I€�/// Yikilmis (ornegin Alt+F4) pencerelerin kaydini temizler. Sik cagrilir,
/// bu yuzden [force] olmadikca 1.5 sn'de bir calisir.   À “XÀ “X‚4À “�+/// Uygulama kapanÄ±ÅŸÄ± / test temizliÄŸi.   À –dÀ –d�·À –x    À ˜@À ˜@À ˜K  À ˜!À ˜!‰fÀ ˜8    À ¢ÞÀ ¢Þ
À ¢å  À ¢hÀ ¢h�õÀ ¢Ô:/// `multi_window` argÃ¼manÄ±ndan kart kimliÄŸini Ã§Ã¶zer. …J…JÀ Ÿ…P              ƒž K€�€”€×��`�e�´‚‚J‚š‚Á‚Æƒƒ`ƒ¬ƒø„5„?„A„W„Y„›„Æ„ï„ñ……,…H…J…e……�…Ì…ñ…ó†,†e†g†¸†¿‡‡W‡Ž‡±‡Õ‡×ˆˆeˆšˆ°ˆ×ˆÝˆß‰‰J‰L‰•‰Ø‰ÚŠ'ŠUŠWŠžŠ¥Ší‹:‹ˆ‹ÆŒŒŒGŒLŒ™ŒÑ���c�j�´�øŽDŽ�ŽÙ�(�X�_�¬�õ�8�?�Œ�Û‘+‘d‘¬‘Í‘Ï’!’(’v’¿’ë““Z“¡“í”>”Š”©”°”û•D•u•w•¿•ô–<–k–m–ª–±–ü—H—–—å˜3˜n˜­˜é™™™`™¯™Ó™ñšššBš�š’šÛ›››_›®›øœ8œtœvœ«œøœú�=�D���Üž+žyžÂžÍžèŸŸHŸ[Ÿ•ŸœŸ¡Ÿ£Ÿö = ? Š ‘ Ü¡*¡w¡Æ¢¢¢U¢¡¢ê£0£Y£q£‡£�£ª£µ£Ð¤¤3¤W¤{¤‰¤º¤Í¥¥¥¥¥r¥“¥«¥Á¥×¥Ý¥ð¥ò¦2¦9¦€¦Ì§§J§†§ˆ§Ö¨¨^¨`¨Œ¨“¨á©)©0©x©½ªªª7ªLªjªxª·ªÚ«'«k«³«Õ¬"¬*¬v¬Á­­M­†­°­Ù­ç®®®6®~®Ï¯¯¯m¯¼°°Z°ˆ°•°¶°ü±±±4±m±v±š±À±Ç²²`²r²…²Ù²ã²ø²ÿ³³³<³y³Œ³Å³ã´´J´�´ß´ëµµCµEµ…µÉµËµïµù¶H¶–¶Ü·+·t·~·Î¸¸k¸º¹¹X¹§¹ç¹üº6º�º¨º²»»N»Ÿ»í¼>¼~¼ˆ¼Ú½+½c½–½à¾¾+¾q¾‰¾´¾î¿¿¿&¿1¿K¿•¿Ï¿Ú¿ã¿úÀ @À @jÀ @“À @ŸÀ @ïÀ AAÀ A‘À AÚÀ B&À BvÀ BÅÀ CÀ C<À CLÀ CaÀ C«À C·À DÀ DWÀ D«À E À EQÀ E‘À EšÀ E­À EùÀ F&À F0À FxÀ FÂÀ G
À GJÀ G^À GqÀ G±À GÕÀ G÷À H À H5À HFÀ H\À HcÀ HhÀ HjÀ H¾À IÀ IÀ I@À IGÀ I”À I»À IÂÀ JÀ JZÀ J¡À JðÀ K7À K|À KƒÀ KÎÀ LÀ LGÀ LiÀ L�À L¢À L¯À LÔÀ LûÀ MÀ MBÀ M�À MÚÀ MéÀ MðÀ N'À N/À NxÀ N¿À O	À OTÀ O�À OäÀ PÀ PÀ PXÀ P¤À P×À QÀ QMÀ QpÀ Q›À QËÀ QùÀ RJÀ R…À RÉÀ RÙÀ SÀ SÀ SÀ SGÀ SLÀ SNÀ S’À SÇÀ SÉÀ TÀ TÀ T]À TšÀ TéÀ U0À U~À U±À U³À UíÀ UôÀ VBÀ V�À VáÀ W4À WlÀ WsÀ WÂÀ XÀ XHÀ XoÀ XŠÀ X¢À XÃÀ XÐÀ YÀ Y_À Y¦À YÖÀ YÿÀ Z#À Z2À Z9À Z[À ZrÀ Z}À ZÌÀ ZÖÀ [(À [zÀ [ÅÀ \À \dÀ \nÀ \·À ] À ]=À ]{À ]¨À ]îÀ ^7À ^eÀ ^ŒÀ ^ŸÀ ^ªÀ ^ÞÀ _À _À _#À _4À _YÀ _`À _eÀ _gÀ _žÀ _¥À _ïÀ `<À `ŠÀ `ÕÀ aÀ a-À a/À aMÀ ahÀ a€À a¡À a®À aýÀ bLÀ b‹À b»À bÆÀ b×À c À c8À cKÀ c‹À c•À càÀ d+À drÀ d•À dãÀ eÀ eNÀ eWÀ e^À ecÀ eeÀ e¹À eÀÀ fÀ fcÀ f�À fÔÀ fÖÀ gÀ gÀ gjÀ g¼À göÀ gýÀ hFÀ hŽÀ hÚÀ i#À i>À iEÀ i|À iÄÀ jÀ j.À j`À jxÀ j£À jÄÀ jäÀ k$À kPÀ kpÀ k»À kìÀ lÀ lÀ l#À l4À l9À l;À lŒÀ l“À lÚÀ m%À msÀ m¤À mÏÀ mëÀ n/À nzÀ nÀ n�À nÈÀ nÏÀ oÀ ogÀ o©À oÅÀ oÌÀ pÀ p^À pªÀ pÕÀ pñÀ q:À q€À q·À qÊÀ qûÀ rÀ rQÀ rVÀ rXÀ r˜À rŸÀ rîÀ s:À s…À sÌÀ tÀ taÀ t“À tšÀ tæÀ uÀ ucÀ u©À u÷À vÀ vdÀ v“À vÙÀ vàÀ wÀ w9À wmÀ wxÀ w®À wËÀ wûÀ xÀ x7À xAÀ x�À xÚÀ y&À yoÀ y¦À yÜÀ zÀ z+À zjÀ zqÀ z°À zÛÀ {À {À {À {\À {—À {×À {ßÀ |.À |VÀ |^À |­À } À }KÀ }eÀ }mÀ }¹À ~À ~GÀ ~rÀ ~®À ~»À ~ýÀ HÀ ]À ¥À ®À µÀ ×À ÷À €À €?À €fÀ €�À €­À €ÎÀ €ðÀ �9À �À �ÊÀ ‚À ‚CÀ ‚jÀ ‚oÀ ‚qÀ ‚½À ƒÀ ƒNÀ ƒuÀ ƒ“À ƒžÀ ƒ¯À ƒÚÀ „À „À „bÀ „iÀ „nÀ „pÀ „°À „·À …	À …[À …“À …ÊÀ …ÒÀ †À †ZÀ †¢À †áÀ ‡À ‡>À ‡FÀ ‡‘À ‡ÛÀ ˆ&À ˆJÀ ˆiÀ ˆ¯À ˆøÀ ‰AÀ ‰�À ‰±À ‰ÕÀ ŠÀ ŠaÀ Š„À Š´À ŠúÀ ‹À ‹,À ‹eÀ ‹mÀ ‹¼À ŒÀ ŒTÀ Œ\À Œ¦À ŒñÀ �5À �=À �ŒÀ �ÒÀ �çÀ �ôÀ Ž6À Ž�À Ž–À ŽÚÀ ŽãÀ ŽêÀ �À �IÀ �]À �†À � À �¯À �÷À �À �À �À �@À �‚À �¤À �©À �«À �ùÀ ‘3À ‘rÀ ‘ŸÀ ‘ÀÀ ‘ÓÀ ’À ’.À ’5À ’LÀ ’bÀ ’mÀ ’«À ’èÀ “
À “À “À “/À “HÀ “OÀ “TÀ “VÀ “�À “™À “°À “ÅÀ “ÞÀ “÷À ”À ”_À ”°À ”õÀ •À •)À •EÀ •[À •rÀ •‰À •ŽÀ •�À •ÞÀ –À –`À –bÀ –’À –°À –÷À —?À —ŒÀ —ÇÀ —ÿÀ ˜À ˜À ˜À ˜ZÀ ˜vÀ ˜ŠÀ ˜ À ˜¼À ™À ™À ™^À ™­À ™÷À šFÀ šoÀ š�À š´À šÏÀ šùÀ ›À ›CÀ ›À ›ªÀ ›¹À ›ÆÀ ›ÑÀ ›çÀ ›üÀ œHÀ œbÀ œnÀ œ¼À �À �TÀ �œÀ �ÊÀ žÀ ž@À žYÀ ž€À ž¸À žÎÀ žâÀ Ÿ.À ŸUÀ ŸuÀ Ÿ¹À ŸéÀ ŸôÀ  
À  &À  kÀ  ½À  ÓÀ  éÀ ¡À ¡IÀ ¡UÀ ¡kÀ ¡rÀ ¡„À ¡‰À ¡‹À ¡ÙÀ ¢À ¢dÀ ¢fÀ ¢ŸÀ ¢íÀ £À £GÀ £}À £„À £’À £ÒÀ ¤À ¤RÀ ¤ZÀ ¤_À ¤b   CardWindowService  •C