Category Archives: Recent Activity

ThinkBook Hybrid Fails 24H2 Upgrade

I can’t say I’m surprised, but I can confess to mild bepuzzlement. Over the weekend, WU decided that a new test laptop — a Lenovo ThinkBook Plus G5  — was ready for 24H2. Alas, for a variety of good reasons that ThinkBook hybrid fails 24H2 upgrade and goes down in flames. Indeed, I had to use the WinRE “Uninstall upgrade” option for the first time ever to bring that machine back to life.

Why ThinkBook Hybrid Fails 24H2 Upgrade

Of course, when I checked the machine this morning, I hadn’t interfered with WU, so it was already attempting this doomed upgrade again. You can see it’s at 25% complete in the lead-in graphic. I foiled that by restarting the PC, then pausing updates for 7 days in the WU controls, as you can see here:

While I’m troubleshooting, I suspended updates.

What the Panther Logs Have to Say

There are two primary logs worth checking into if an upgrade fails to complete successfully — namely:


C:\$Windows.~BT\Sources\panther\setupact.log
C:\$Windows.~BT\Sources\panther\miglog.xml

These are liberally bestrewn with errors of all kinds including device drivers and storage items. The ThinkBook’s “hybrid drive” bridges between native Windows storage on the deck and native Android storage on the tablet. It takes the form of something called a Hybrid Tab in File Explorer (see next screencap). I believe it’s very likely involved in my snafu.

Because it uses a special driver and customized software, I’m betting that the Hybrid Tab is the source of storage and driver issues.

Copilot tells me that if I upgrade from bootable media, the ThinkBook may survive the upgrade process intact. Right now, I think it’s losing the Hybrid Tab scaffolding amidst the post-GUI reboots during the serious parts of OS install. That sounds like it’s worth a try. But first, I’ll make a fresh image backup and be ready to restore same should things go south again.

Stay tuned! This could get interesting…

Facebooklinkedin
Facebooklinkedin

Eliciting Windows Store App Version Info

Here’s an interesting thing. For conventional Windows applications, a quick trip to Help > About is all it usually takes to see their version info. Alas, by and large, Windows apps lack such facilities. In reading about a recent update to the Phone Link app at WinAero this morning, I went looking at my various installations to see what I could see. Turns out that eliciting Windows Store app version info is doable, but may take a little finesse. I found two can’t-fail methods, which I will share here.

Why I’m Eliciting Windows Store App Version Info

The afore-linked WinAero study avers, and my own checks confirm, that only Insider versions of Windows 11 currently get the required version of Phone Link. Indeed, Phone Link’s version number must be 1.24112.73.0 or higher on the PC for the new pop-up share file menu to pop up. This raised the question: how to check Phone App version number in particular, and Store app numbers in general.

I found two relatively easy ways, neither of them glaringly obvious:

[Method 1] Use the WinGet list command, e.g. WinGet list “Phone Link” in this case (because the name includes an interior space, it must be enclosed in single or double quote marks).

The version on this Canary PC is 1.24112.89.0.

[Method 2] Visit the Microsoft Store, and look it up on its product page there. Some scrolling (look for the “Additional information” subheading) is required. Using the Phone Link entry as an example, here’s what you see:

Version number is at lower right.

Store Lookup Gets Weird

I wasn’t able to look Phone Link up using Windows Store search. I had to go to the Downloads icon in the left-hand column and look for the most recent update to Phone Link  there. That took me to the product page where I grabbed for foregoing information, including version number.  And when I asked Copilot to give a link it gave me something different instead “Sync your PC and phone easily with Phone link.” It includes a link to open the Phone Link app (Open-URL:ms-phone) which seems to indicate that while the Phone Link app gets updates from the Store, it comes pre-installed through some other means. Go figure!

What an interesting ride this one turned out to be…

Concluding Hilarious and Unscientific Postscript

Just for grins I asked Copilot “What version of Phone Link is running?” It gave the right answer too. So there’s a third possible method. But when asked what version of Copilot was running Copilot sez: “While I don’t have specific version details, I am always here to provide accurate information and support.” I have to laugh!

Facebooklinkedin
Facebooklinkedin

MS PC Manager Keeps Improving

When I first came across it a little over two years ago, Microsoft PC Manager was kind of an awkward curiosity. It had just been translated from Chinese into English, and it showed. The very first version had been out since February 2022, with the latter following in October that same year. In the 25+ months since then, the program has matured, improved and gotten much faster. You can see its MS Store info line in the lead-in graphic, which shows a new release a couple of days ago (12/10/2024).

Why Say: MS PC Manager Keeps Improving

I just used that latest version to clean up 3.2 GB from the ThinkPad P16 Gen 1 Mobile Workstation. It took under a minute to scan for stuff to clean, and less than that to do the actual clean-up. It’s much faster than Disk Cleanup (or the GitHub version, Managed Disk Clean) and does lots of other stuff, too. A recent clean-up shows a nice overview of those other capabilities in the left-hand column:

PMC quickly recovered 3.2 or 3.6 “cleanable” space.

The left-hand headings lead to general functionality that I’ll also list briefly:

  • Home: PC boost cleans memory, kills temp files; further links to Health Check, Process and Startup tabs in Task Manager, Deep Cleanup
  • Protection: Virus & threat protection, Windows update, Default browser settings, Taskbar repair, Restore default apps, Pop-up management
  • Storage: Deep cleanup, Downloaded files, Large Files, Duplicate files, Storage Sense
  • App management: Process management, Startup apps, Uninstall apps, Microsoft Store
  • Toolbox: Windows tools (e.g. screenshot, recorder, captions, …); Web tools (e.g. Edge Quick Links, Bing translator, currency converter…); Custom links (e.g. MSN)
  • Restore:Restore default settings throughout
  • Settings: PCM settings for boost, shortcus, general
  • Feedback: PCM feedback a la Feedback Hub

Sure, there’s some duplication in there. But the fractured English of yore is now as polished as help messages ever get. The tool could be an admirable clearinghouse for all kinds of Windows management, as you can see in the preceding annotated list. At any rate, I find it increasingly useful and helpful. If you try it out, you may find it does more — and faster — that you think it could.

Facebooklinkedin
Facebooklinkedin

ThinkBook Plus G5 External Storage

I’ve been messing about with an interesting (and covetable) Lenovo hybrid laptop lately. it’s got an x86 PC for the keyboard deck, and a plug-in 15″ Android tablet that also doubles as a laptop display when docked with that deck. I plugged my fastest external USB storage devices into the free TB4/USB4 rated USB-C port and ran CrystalDiskMark. That gives me some basis to talk about ThinkBook Plus G5 external storage. I’m checking outUSB4 NVMe, TB4 NVMe, USB3.0 Msata, and USB 3.0 HDD storage devices.

ThinkBook Plus G5 External Storage Capability

I’m running CrystalDiskMark version 8.0.6 through its standard testing paces to see how these various devices all compare, in the same USB-C port and using the same USB4 rated cable. So far, what I’ve seeing is not bad, but not on par with other high-end Lenovo laptops or mini-desktops. (FWIW, I’ve also noticed that Snapdragon X Copilot+ PCs offer excellent USB-C USB4/TB performance, but only 5 Gbps capability on their built-in USB-A 3.2 Gen 1 ports.)

The internal SSD in the ThinkBook Plus G5 (I’ll abbreviate that as TB5 for brevity) gets reasonable performance. It’s a Samsung OEM NVMe MZAL81T0HDLB-00BL2 (vintage 2022, Gen4x4 M.2, middling performance). It does pretty well on large data transfers (~6GB read/4.7GB write queue depth 8; 3GB read/2.9GB write queue depth 1). On Random 4K reads, it’s somewhat less thrilling: 337.7MB read/264.5MB write queue depth 32; 60 MB read/113MB write queue depth 1). Those CrystalDiskMark (CDM) results provide the lead-in graphic for this story.

When I shift to external storage via USB, the story gets darker quickly:


Type   1TibRWQ8  1TibRWQ1   4KRWQ32  4KRWQ1
USB4   3062/447  1692/521   337/8    11/4
TB4    2615/530  2211/491   345/14   62/10
mSATA  465/331   436/121    138/20   23/2
HDD    118/117   117/52     1/1      0.4/0.4

On the whole, I’d have to say that I/O performance with external storage is NOT a strong suit for the otherwise interesting and occasionally excellent/amazing TB5. I see at least 15% better performance across the board for all those devices on the 2022 vintage Lenovo ThinkPad P16 Gen 1 Mobile Workstation and the 2023 vintage Lenovo ThinkStation P3 Ultra mini-Workstation. For example, here are the internal drive results from the 2022 vintage P16:

The Internal NVMe on the P16 is mostly 15+% faster across the board. Only 4KR/QD=1 is slightly less.

Note: the P16’s internal drive is a WD SN810 2TB NVMe (PCIe Gen4 x4 drive with performance nearly equal to the TB5’s Samsung OEM drive).

Space and Cost Are at a Premium, So…

In a hybrid device like the TB5, I have to believe that space and device costs are important elements to control. My best guess is that Lenovo went with more compact and possibly lower-cost USB circuitry than they put into those other two devices. Then again, the internal SSD could be slower than those used in the other devices as well. Both will impact overall I/O performance.

On the other hand, as I use the TB5 for surfing the web, doing workaday tasks, installing and running all kinds of software and tests, and more, I’ve not really noticed I/O as a bottleneck. Perception is vital to user experience, so these numbers I’ve shared may paint this fascinating two-in-one less positively than they should. Bear that in mind as you consider “buying this dream.” I’m reading that MSRP will be right around $2K for a 22-core Ultra 7-155H, 32GB, 1TB SSD model. It just may be worth it.

Next up: I’m going to take the Android tablet for a ride on its own, to see how it does as a detached tablet. Stay tuned!

Facebooklinkedin
Facebooklinkedin

OMP Changes Update Handling

I should have seen this one coming. Jan De Dobbeleer’s excellent Oh My Posh (OMP) prompt glyph handling (for PowerShell on Windows Terminal in my case) is going through lots of changes lately. Among those is an “upgrade” option in its configuration file. I’d seen prompts about it awhile back (September, perhaps?) but hadn’t take the time to investigate. But when OMP changes updated handling, I did so. Turns out it’s dead easy and I should’ve done it right away. Live and learn, right? The lead-in graphic shows how easy: a one-liner OMP instruction: oh-my-posh enable upgrade. Done!

Avoiding How OMP Changes Update Handling Brings Trouble

The next screencap shows the pickle I put myself in yesterday. The latest OMG update (v24.12.0) uses a different install technology from the previous version, so handling it via WinGet meant an uninstall/install manuever. You can see what happened when I did that.

After uninstalling OMP, the Terminal startup can’t initialize it.

After uninstalling OMP, Windows Terminal can’t execute its initialization (’cause there’s nothing to initialize). And when I install it, it won’t run in that Terminal window (or pane). It must be invoked. That’s why I opened a second terminal session (right-hand pane) so OMP would actually load and run. Simply enabling OMP to update itself via the aforementioned command is a heck of a lot easier, and far less disconcerting.

Now, I need to go through and do this on all of my Windows PCs with OMP installed (the vast majority, in fact). Again: I should’ve done it right away. Maybe that’s the moral of the story…

Facebooklinkedin
Facebooklinkedin

Identify Spurious Windows Reclaimables

OK, then: thanks to some excellent detective work by ElevenForum stalwart @Bree, it looks like DISM can tell curious Windows users which packages are “stuck.” That is, you run the DISM command sequence: Analyze-Clean-Analyze, with a positive number of reclaimable packages still showing. (You can find all the details in my 11/2023 blog post on this topic.) This time around, I’ll show you how to list out the actual items that identify spurious Windows reclaimables. Warning: some PowerShell hacking is involved!

How-to: Identify Spurious Windows Reclaimables

@Bree shows the source for the data needed to identify these strange offenders. It’s based on analyzing data within a DISM generated text file. Here’s the specific command that creates that data:

DISM /ONLINE /GET-PACKAGES /FORMAT:TABLE > KB.txt

What this does is to inspect the current running Windows image (/online), grab all packages it finds with some related data (/get-packages),  and format it into a table (/format:table). That last bit (> KB.txt) redirects command output into that named file. The column headings in that output read: Package Identity, State, Release Type, and Install Time with vertical bars (‘|’) used to separate entries.

Bree’s analysis concurs with my own prior inspection of this same kind of output. We both agree that only lines with the strings “Staged” and “Feature Pack” in them point to spurious Windows packages. His analysis depends on sucking the output into a text file, converting to Excel format, sorting by State, and counting groups of lines to match the spurious reclaimable count to what’s reported by DISM /AnalyzeCompontentStore. Remember: those are packages that stay in the component store even after a DISM /cleanup-image operation has completed successfully. I simply write the output from the /Get-Packages DISM command to a file named KB.txt and filter its results.

Automating Analysis of KB.txt Contents

Next, my PowerShell script comes into play (such as it is, it’s pretty primitive). Unzip kbfilt.zip and then move kbfilt.ps1 to the directory where you created kb.txt (to run this file type .\kbfilt.ps1 inside an administrative PS Terminal window: screenshot follows later).

# Path to the input text file
$inputFilePath = "kb.txt"

# Path to the output text file
$outputFilePath = "kbfilt.txt"

# Read the file line by line and filter the lines
Get-Content $inputFilePath | ForEach-Object {
# Check if the line contains both "Staged" and "Feature Pack"
if ($_ -match "Staged" -and $_ -match "Feature Pack") {
# Output the line to the output file
$_ | Out-File -FilePath $outputFilePath -Append}}

# Confirm the script has finished
Write-Host "Lines w/ 'Staged' and 'Feature Pack' written to $outputFilePath"
Write-Host "Remember to delete kb.txt, kbfilt.txt before next use"

I used the -Append directive for Out-file which means the script appends text to the file and doesn’t over-write (“clobber” in PS-speak) other content. That’s why you’ll want to delete these files if you want to run the script again.

My Copilot+ PC (an Intel Aura Yoga Slim 7 model from Lenovo), running Windows 11 24H2 Build 26100.2134, has 2 spurious packages as shown here:

2 packages with LONG names (typical for Windows)
[Click image to view full-sized.]

This investigation is simply to show you which packages are stuck. You can get rid ofthem with DISM /Remove-Package. But if you do, they’ll most likely pop back up again after you install the next Cumulative Update (CU). Windows images are funny that way. But at least, now you can identify the packages involved.

Facebooklinkedin
Facebooklinkedin

Intake: Lenovo ThinkBook Plus G5

OK then, I’ve gotten far enough past my holiday backlog to take a first look at an odd but intriguing new hybrid laptop PC. On intake, Lenovo ThinkBook Plus G5 shows itself to be an interesting and powerful performer. The unit is actually two PCs: an Intel x86 PC embedded inside the keyboard deck, with a detachable Android tablet that serves as a Windows monitor when docked with the deck. Good stuff! You can see the tablet in position for docking above the deck in the lead-in graphic (image courtesy of Lenovo).

Observations During Intake:
Lenovo ThinkBook Plus G5

I knew this was going to be interesting when I opened the shipping carton and saw it contained two boxes. As you might guess: one for the Android tablet, the other for the x86 Intel deck. What you might not guess is the Matrioshka-like box within a box for those inner boxes themselves — one each for tablet and deck. Indeed, everything used for shipping these units (and other new items from Lenovo since 2012, believe it or not) is made of paper. Over the past dozen years in fact, I’ve watched the plastic content drop to zero. They even use paper-covered twist ties (when they use them at all). So kudos to Lenovo for easy-to-unpack, sustainable packaging.

Deck spes

Here are the specifications for the deck in this paired hybrid laptop whose full official product name is ThinkBook Plus Gen 5 Hybrid (14″ Intel) Station & Tablet:

CPU: Intel Core Ultra 7 155H (16 Cores, 22 logical processors)
Memory: 32 GB dual-channel LPDDRX5 7467 MHz RAM
Storage: 1 TB M.2 PCIe Gen4 NVMe SSD (Samsung OEM)
Ports: 2xUSB4 Thunderbolt4 USB-C ports on deck,
1 RCA audio mini-jack
Network: Intel Wi-Fi 6E AX211 160MHz

Tablet Specs

Here are the specs for the tablet side of this duo:

CPU: Qualcomm Snapdragon 8+ Gen 1 (8 Cores)
Graphics: Qualcomm Adreno GPU
Display: 14″ 2.8K (2880×1800) OLED multi-touch
Memory: 128GB LPDDR5x (soldered, no upgrade)
Storage: 256GB UFS 3.1 on tablet motherboard
Sensors: Accelerometer, ambient light, color, gyroscope, hall, ToF, and e-compass

I can’t say much about battery life just yet. The tablet has a built-in Li-polymer 38.7Wh battery with life estimates from 6.83 hours (web browsing) to 52.14 hours (local audio playback). Thurrott sez it gets 4.5 hours using it as a normal Windows laptop. He also says the 100W brick charges the deck’s 75 Wh battery to “almost full capacity in about an hour.” For now, it tells me the combo unit is intended as a desktop replacement, while the tablet is more prepared for extended untethered use. I’ll learn more later…

Initial Start-up and Setup

I had to wait for the deck and tablet to garner minimal charges before I was able to start the hybrid pair up into Windows for the first time. No biggie, but Lenovo usually sends units out fully charged. It took patience, but was easily overcome.

Lenovo Vantage hit a new update record when I used it to check for outstanding items: 11 on the first try, 2 on the second try. I was pleased the unit shipped with Windows 11 Pro installed, and amused to see it running Version 23H2 (Build 22631.4541 after all updates were applied). This process took the better part of an hour to work through, with a handful of restarts along the way.

As Windows laptops go, this one’s pretty peachy. It runs nearly as fast as the P16 Gen 1 Mobile Workstation (with its 24 core i9-12950HX CPU and double the RAM). I’m still in the process of getting all the apps installed, Windows Terminal customized, and working through the usual intake and setup drill. But so far, you can color me impressed!

Tablet Remains Terra Incognito

Last night, I pulled the tablet off the laptop to show my wife it displayed an Android screen when disconnected. Pretty colorful, too. But that’s as far as I’ve gotten with that half of this dynamic device duo. I plan to read some manuals, and fool around, over the weekend. More to follow on that front next week.

Pros and Cons So Far

There’s a lot to like about this dual unit. It’s sturdy (made of machined aluminum throughout with a matte grey silver finish), attractive, and a pleasure to use. The tablet display pops with color and text is rendered crisply and legibly. So far, I love the concept of running the tablet separately but I haven’t put that to the test yet, so I can say if I love the execution or the actual use.

There are a few cons about the ThinkBook Plus G5, though, but nothing too onerous or serious:

1. The combined weight of the units is ~3.9 lbs (2.14 deck & 1.73 tablet). That’s heavier than I’m used to for a modern laptop.
2. This sucker is kinda costly, with an MSRP of US$1,999 for the current configuration. It also included a US$38 accessory called the Lenovo Tab Pen Plus.
3. Despite its 160MHz rated Wi-Fi adapter, I couldn’t get it to work at 160MHz with my ASUS AX6000 router. Works fine at 802.11ac levels, though. That said, it runs at 380-500 Mbps on my LAN.
4. With only two usable USB-C ports and no USB-A ports, users will have to carry a hub or use a dock if they want to attach more than 1 or 2 devices.

All in all, it’s a pretty nifty machine. I look forward to putting it through its paces and seeing what more (and what else) it can do. Stay tuned.

Facebooklinkedin
Facebooklinkedin

Power Options Get Missing Plans

I was just reading a Ghacks story about enabling the Ultimate Performance plan in Power Options. But when I fired up Control Panel > Power Options, I saw that Lenovo had endowed its killer ThinkPad P16 Gen 1 Mobile workstation with exactly one power plan — namely, Balanced. To make sure Power Options gets missing plans, I had to do a little research and some simple PowerShell command magic. Here goes…

Here’s How Power Options Get Missing Plans

The syntax for adding a Power Plan requires a specific powercfg command to add it to a system — namely

powercfg -duplicatescheme GUID

That makes knowing those GUID (globally unique identifiers) important, so you’ll find those values in the table in the lead-in graphic for all the well-known Windows 10 and 11 Power Plans.

Another handy powercfg command lets you choose the Power Plan you wish to run

powercfg -setactive GUID

To save you any contortions you might otherwise need to get those GUIDs from the lead-in screencap, here’s a list of text values. Cut’n’paste them with my blessing…

Balanced 381b4222-f694-41f0-9685-ff5bb260df2e
High Performance 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
Power Saver a1841308-3541-4fab-bc81-f71556f20b4a
Ultimate Performance 15c9c4f6-8a2b-4a3f-bfcd-6b8d6b8f7e5c

P16 Shows Two — and Only Two — Plans in Power Options

For some odd reason, the P16 Mobile Workstation only shows two Power Plans in Power Options (see screencap below). Of course given that it’s a MOBILE WORKSTATION I simply must run “Ultimate Peformance.” You see the results from that PC next with that peerless Power Plan selected. Basta!

A Mobile Workstation needs Ultimate Performance. Here ’tis!

If I add any plan other than Balanced, it knocks the other one (e.g. High Performance, Power Saver or Ultimate Performance) out of the collection. Indeed powercfg /list only shows the same two that appear in the Power Options screen (like the preceding screencap). Copilot says that’s probably owing to manufacturer overrides (likely), WU items (possible), registry settings (possible), or the presence of modern standby mode (possible).

I now know how to fire up any specific power plan I might want to use, so I’m not inclined to hare off after that range of possibilities. I’ll ask the reviews engineering team at Lenovo about this the next time we chat. If I learn anything useful, I’ll add it to this post. Stay tuned!

Facebooklinkedin
Facebooklinkedin

Persistent Revo Requires Disabling Task

Drat! After returning from vakay, I noticed Revo Uninstaller still popping up after Startup. My November 21 post mentioned disabling some settings. Autoruns (see lead-in graphic) also tells me there’s a scheduled task that must be disabled to prevent its “helper” (and the app) from launching after startup.  Indeed, this persistent Revo requires disabling task for its helper.exe. Go figure!

It Irks Me That Persistent Revo Requires Disabling Task

When software makers offer free versions of their applications, they seem to feel entitled to let that version do various things to Windows PCs — not all of them desirable or well-behaved. I take umbrage with Revo, and other publishers who do likewise. That goes double, especially when they offer no opt-out in their installers, nor warnings for users. It seems they’re resolved that their software is going to make itself run at startup whether you like it or not.

Methinks it’s because such vendors seek added upsell opportunities. Alas, it only proves irksome and bothersome instead. This time, I had to call out the heavy artillery — namely, SysInternals Autoruns, capable of showing and stopping anything and everything that touches startup behavior on a Windows PC.

This isn’t the first time I’ve found myself saying “Thank you, Mark Russinovich and the rest of the SysInternals team.” It won’t be the last, either. In fact, that litany will no doubt continue until I stop running Windows (unlikely) or you pry it out of my cold, dead hands (inevitable, but hopefully not for some time yet).

Facebooklinkedin
Facebooklinkedin

Latest Canary Lacks Spurious Reclaimables

An interesting Windows wart has gone missing in the latest Canary release (Build 27754, installed November 21). This is where you run DISM /online /cleanup-image /StartComponentCleanup in some Windows version and get a non-zero count when you follow that up with DISM /online /cleanup-image /AnalyzeComponentStore. This makes it impossible to get to zero for the “Number of reclaimable packages” line in that latter command’s output. When, I assert that the latest Canary lacks spurious reclaimables, I mean it shows a zero count as you’d expect it to after a successful cleanup.

Showing That Latest Canary Lacks Spurious Reclaimables

Take a look at the lead-in graphic. The “Number of reclaimable…” line clearly shows 0. Something about earlier updates in Windows 11 (including at least the GA and Beta releases — I just checked) causes the OS to show anywhere from 2 to 13 spurious packages. I define that to mean “non-zero number of reclaimable packages showing after a DISM … /Startcomponentcleanup operation completes successfully.”

Interestingly, the latest Windows 10 release (Build 19045.5198) also shows a zero value when I go through those same manuevers. So it lacks the spurious reclaimables now, too. It’s been showing those, on and off, for at least the past 18 months (see this post for an early report from yours truly). This revelation is simultaneously interesting, odd and mostly meaningless. Why that last adjective? Because this “issue” has no obvious or adverse affects on Windows operations, as far as I can still. Still: it’s NOT TRUE when it shows up.

For Incurably OCD Readers Only…

You can indeed fix this in other Windows 11 versions (e.g. Beta, Developer, Release Preview and GA) if you must. But if history is any guide that fix will last only until you install the next CU (cumulative update). Simply use the “Reinstall now” button under Settings > System > Recovery to perform in inplace repair install on your PC. That will temporarily get DISM … /AnalyzeComponentStore to report zero reclaimables. But again, that changes as soon as you install any CU. Go figure!

Facebooklinkedin
Facebooklinkedin