• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!

[Thor][Apollo] Unlocking bootloader with any firmware

Search This thread

BennyXCross

Member
Dec 26, 2014
7
1
Hey @DB126 So, I have a little problem. I was following a tutorial by @draxie :
"3. Click on unlock.bat in the extracted folder (default: platform-tools)
--- this replaces step 3 of the OP ---"
But I already went ahead to step 3 of OP and rebooted my device.
I mean I can get into TWRP recovery while holding the + button on my Kindle.
But how do I get my unlock code now?
Should I just wipe everything except the storage and that removes the fastboot loop?
 

DB126

Senior Member
Oct 15, 2013
15,270
10,046
Hey @DB126 So, I have a little problem. I was following a tutorial by @draxie :
"3. Click on unlock.bat in the extracted folder (default: platform-tools)
--- this replaces step 3 of the OP ---"
But I already went ahead to step 3 of OP and rebooted my device.
I mean I can get into TWRP recovery while holding the + button on my Kindle.
But how do I get my unlock code now?
Should I just wipe everything except the storage and that removes the fastboot loop?
You can install an older (discontinued) ROM such as Fire Nexus on a locked bootloader which will allow you to obtain the unlock code. Just don't attempt to gain root access as that usually doesn't work on locked bootloaders.

If that fails there is another method (start from scratch) but you're almost there. Give Nexus a shot first. :)
 

BennyXCross

Member
Dec 26, 2014
7
1
You can install an older (discontinued) ROM such as Fire Nexus on a locked bootloader which will allow you to obtain the unlock code. Just don't attempt to gain root access as that usually doesn't work on locked bootloaders.

If that fails there is another method (start from scratch) but you're almost there. Give Nexus a shot first. :)
Thank you very much DB :)
Just to clarify, because I'm pretty new to this scene, if If I reboot after I install this rom won't I get back into the fastboot loop? Could I not also just reset the bootloader (is that the name for the fastboot screen?) back to its original state with TWRP somehow?
 

DB126

Senior Member
Oct 15, 2013
15,270
10,046
Thank you very much DB :)
Just to clarify, because I'm pretty new to this scene, if If I reboot after I install this rom won't I get back into the fastboot loop? Could I not also just reset the bootloader (is that the name for the fastboot screen?) back to its original state with TWRP somehow?
You can't "reset" what you have already done (which is by no means bad). After flashing the ROM your HDX should boot into Nexus the next time the device restarts. Once you go through the normal Android initialization you should be able to obtain the unlock code and continue with the procedure as described.
 
Last edited:

BennyXCross

Member
Dec 26, 2014
7
1
You can't "reset" what you have already done (which is by no means bad). After flashing the ROM your HDX should boot into Nexus the next time the device restarts. Once you go through the normal Android initialization you should be able to obtain the unlock code and continue with the procedure as described.

Hmm I've tried it and I have a little problem. The installer failed. "Can't install this package (17 Oct 2016) over newer build (Aug 24 2018). Updater process ended with ERROR: 7".
Should I wipe anything first or will this also remove the TWRP?

EDIT: So, I've tried it with lineage-11-20181130-UNOFFICIAL-thor because it's newer than the "newer build" and it worked! No bootloader loop. It got straight to the Lineage animation screen and now I'm in my device again. I'll try to get the unlock process going, thank you so much DB. I'll keep you posted if I manage to unlock the bootloader.

---------- Post added at 02:29 PM ---------- Previous post was at 02:06 PM ----------

EDIT: So, I've tried it with lineage-11-20181130-UNOFFICIAL-thor because it's newer than the "newer build" and it worked! No bootloader loop. It got straight to the Lineage animation screen and now I'm in my device again. I'll try to get the unlock process going, thank you so much DB. I'll keep you posted if I manage to unlock the bootloader.

Oh god, I'm so stupid. I could have solved the problem from the fastboot loop, because the last step of Draxie's tutorial is to use unlock.bat which is literally only "fastboot flash unlock unlock.code"...
Now I've installed Lineage 14.1 and GApps and it seems to work. Thanks again DB :)
 
Last edited:
  • Like
Reactions: DB126

DB126

Senior Member
Oct 15, 2013
15,270
10,046
Hmm I've tried it and I have a little problem. The installer failed. "Can't install this package (17 Oct 2016) over newer build (Aug 24 2018). Updater process ended with ERROR: 7".
Should I wipe anything first or will this also remove the TWRP?

EDIT: So, I've tried it with lineage-11-20181130-UNOFFICIAL-thor because it's newer than the "newer build" and it worked! No bootloader loop. It got straight to the Lineage animation screen and now I'm in my device again. I'll try to get the unlock process going, thank you so much DB. I'll keep you posted if I manage to unlock the bootloader.

---------- Post added at 02:29 PM ---------- Previous post was at 02:06 PM ----------



Oh god, I'm so stupid. I could have solved the problem from the fastboot loop, because the last step of Draxie's tutorial is to use unlock.bat which is literally only "fastboot flash unlock unlock.code"...
Now I've installed Lineage 14.1 and GApps and it seems to work. Thanks again DB :)
Not "stupid", just inexperienced in the wacky world of HDX modding. Glad you got it working. :)
 

soil111

Member
Aug 18, 2020
6
1
Hi,
I bought a good condition HDX 7. I tried to follow here to unlock it. But I never to get to "Ready". I installed both the fire driver and motorola device manager. After "ADB reboot bootloader" command, "other devices _Andriod" show up, so I did the update driver, following the steps here. but what ever I choose, either fire device "composite ADB interface" or "Mot composite ADB interface" or all the others. The "other devices" never change. and of cause the "Ready" never show up. I cannot continue to anything. what's wrong?
Please help!
the OS version is 4.5.5.4, if that matter? should I try to get it back to old version?
Thanks!
 

DB126

Senior Member
Oct 15, 2013
15,270
10,046
Hi,
I bought a good condition HDX 7. I tried to follow here to unlock it. But I never to get to "Ready". I installed both the fire driver and motorola device manager. After "ADB reboot bootloader" command, "other devices _Andriod" show up, so I did the update driver, following the steps here. but what ever I choose, either fire device "composite ADB interface" or "Mot composite ADB interface" or all the others. The "other devices" never change. and of cause the "Ready" never show up. I cannot continue to anything. what's wrong?
Please help!
the OS version is 4.5.5.4, if that matter? should I try to get it back to old version?
Thanks!
FireOS build is irrelevant. Try a different cable (bad cables are responsible for 80% of "not ready" issues on HDX devices) and/or different USB ports. Avoid USB hubs and 3rd party USB 3 add-on ports. Moto drivers work best IME.
 

soil111

Member
Aug 18, 2020
6
1
Thanks for the help!

I already tried two computers and two cables. And the first ADB command "adb devices" worked every case. Which I assume should mean the cables are good. ( may be bad for the "Ready" part?). But I'll try as many cables as I can find.
 

DB126

Senior Member
Oct 15, 2013
15,270
10,046
Thanks for the help!

I already tried two computers and two cables. And the first ADB command "adb devices" worked every case. Which I assume should mean the cables are good. ( may be bad for the "Ready" part?). But I'll try as many cables as I can find.
ADB and 'fastboot' utilize different communication/handshake mechanisms. Being able to communicate over one has little correlation to the other when problems are encountered. If different cables yield similar results you'll need to look at different USB ports or possibly try a different host (computer). Your situation is far from unique and almost always has the same solution. Good luck.
 

soil111

Member
Aug 18, 2020
6
1
ADB and 'fastboot' utilize different communication/handshake mechanisms. Being able to communicate over one has little correlation to the other when problems are encountered. If different cables yield similar results you'll need to look at different USB ports or possibly try a different host (computer). Your situation is far from unique and almost always has the same solution. Good luck.

Thanks!
Unfortunately Last night I tried 2 other cables and 3 others USB ports. Now I doubt probably the USB port on the Fire HDX is faulty for fastboot. I tried the king-root (on the HDX, no PC), it worked. Now I have root. but the fastboot still not work. Is there any method that completely work on the fire HDX tablet only without PC that can flash TWRP, custom ROM like lineage OS?
 

DB126

Senior Member
Oct 15, 2013
15,270
10,046
Thanks!
Unfortunately Last night I tried 2 other cables and 3 others USB ports. Now I doubt probably the USB port on the Fire HDX is faulty for fastboot. I tried the king-root (on the HDX, no PC), it worked. Now I have root. but the fastboot still not work. Is there any method that completely work on the fire HDX tablet only without PC that can flash TWRP, custom ROM like lineage OS?
Probably not a faulty port. Issue you are experiencing is somewhat common and usually (almost always) correctable via means already discussed. HDX devices are exceptionally fussy with fastboot communications. Everything has to be 'just so' to receive a ready prompt.

As for other options, you can try 'one click' which is a quirky little utility that receives high praise from users.

https://forum.xda-developers.com/kindle-fire-hdx/general/multi-platform-1-click-bootloader-t3241014
 
Last edited:

soil111

Member
Aug 18, 2020
6
1
Probably not a faulty port. Issue you are experiencing is somewhat common and usually (almost always) correctable via means already discussed. HDX devices are exceptionally fussy with fastboot communications. Everything has to be 'just so' to receive a ready prompt.

As for other options, you can try 'one click' which is a quirky little utility that receives high praise from users.

https://forum.xda-developers.com/kindle-fire-hdx/general/multi-platform-1-click-bootloader-t3241014

Thanks!
Unfortunately, I have only Window computer. While I may try when I have access to mac or linux. Or I’ll keep try other cable and computer.
 
  • Like
Reactions: sol-invictus

mygica009

New member
Sep 14, 2020
1
0
Success

After a two weeks of trawling through this thread (late at night when everyone is asleep :)) I have successfully:
1. Rooted my Kindle.
2. Unlocked the bootloader.
3. Installed TWRP.
4. Installed Lineage OS.

Great thread! And thanks to those who contribute to it!

My advise to others who are experiencing issues - the imformation needed is in this thread. Just have some patience and read carefully.
 
Last edited:

marekh_

Member
Feb 14, 2013
12
1
Hey guys,

I've stucked after these two commands:

fastboot -i 0x1949 erase aboot
fastboot -i 0x1949 reboot

device is tarting with black screen and I have access to about 8 partitions.
No adb or fastboot can see device on list.

Is there anything I can try to back it to working state?

thanks!
 
Last edited:
Last edited:

sarib

Member
Nov 16, 2016
28
3
20
Pakistan
this is the details step for unlocking bootloader for the 2013 Kindle HDX 7 (Thor) and HDX 8.9 (Apollo). Becarefull the 2014 HDX 8.9 (Saturn) doesn't work! These steps are done in Windows 10, successfully checked by myselft!
i don't take any credits, just collect all the steps in one post of the whole process.

Download the needed files are in the attachment, just download them all + the TWRP for your device from this thread: TWRP 3.1.1-1
You do NOT need root for these steps!

1. Install the adb-setup-1.4.3 into a folder (for example: C:/adb), extract dd-0.5.zip + unlock.zip + aboot-xxx.zip, put dd.exe + get_code.bat + unlock.bat + twrp image (for your device) + aboot_vuln.mbn (for your device) into that folder. After that install the kindle_fire_usb_driver.
2. Turn on ADB-Debuging Mode in Developer Mod by tapping 7 times the build numbers in settings and connect to your computer + trust your device.
3. Excecute "get_code.bat" in the folder above, you will get a new file: unlock.code in the folder.
4. Open CMD in the folder and run "adb reboot bootloader", the Kindle will reboot to bootloader with "[ fastboot ]" on the display
5. On the Computer go to Device-Manager and change driver in "Other Android" to "Fire Devices - Android Adb Composite Driver" . It should say "Ready" on the Kindle.
6. Now we need to enter Bulk-Mode like the instruction in this thread: Bulk Mode
Type:






7. When done, hold down the power button until it reboots. Now you will be at Bootloader with [Fastboot] sign on the screen. Change the drive in Device-Manager again if needed.
8. Run the "unlock.bat" in the folder and you should get a green line: "unlock code is correct". Congrats your Kindle now has an unlocked bootloader.
9. Now hold power button again to shut down the device, then hold both "power button + Volume UP" and keep them for 3-5 seconds after you see the "kindle fire" logo. Then you will get into the TWRP and flash your desire things.

i hope this post will help others new member to free our beautifull devices!

Cheers and happy flashing :D

[Solved]Hi, I was started with this guide, at a point I forget command's order and my device is stuked at (fastboot "Ready") state, now even device is in ready state my pc's fastoot application is not showing my device in fastboot (earlier which used for braking my device) but my Pc recognize this device in device manager as it is showing "fire devices" "adb composite drivers", how I can get rid of?
 
Last edited:

soil111

Member
Aug 18, 2020
6
1
You are right Always!

Probably not a faulty port. Issue you are experiencing is somewhat common and usually (almost always) correctable via means already discussed. HDX devices are exceptionally fussy with fastboot communications. Everything has to be 'just so' to receive a ready prompt.

As for other options, you can try 'one click' which is a quirky little utility that receives high praise from users.

https://forum.xda-developers.com/kindle-fire-hdx/general/multi-platform-1-click-bootloader-t3241014

Dear DB126,

you are right always!
I got a another computer (used from ebay) for the kid. Tried again the HDX 7. Voila! everything work! Following you instruction, finally installed the Lineage 14. It's a beautiful HDX.

yes the HDX sure is fussy. I've tried three computers, many cables, every usb ports on these computers. For anybody met similar problem, keep trying.

Dear Sir! Thanks again!
 

pxrave

Senior Member
Apr 7, 2010
1,150
483
root
px-coding.org
Google Nexus 4
OnePlus 3
dear volks,

i have one big problem. i did buy another apollo now. and now i need to unlock. i used the 1-click-tool without success (Unlock code is not correct.)
so i used the manual method (i have root on the tablet)

i but aboot and recovery with root to the right folders.
again unlock code is not correct.

can anybody help me? how to get correct unlock code? seems like cuber get one wrong. any can share the latest 1-click?
 

Top Liked Posts

  • There are no posts matching your filters.
  • 53
    Hello. At first, I did not invent anything new, just checked some my guess on a other motherboard. All thanks and credits to our great developers. As always, all at your own risk.
    It does not work on the Fire HDX 8.9 (Saturn)!
    All steps in this manual are not necessary but they are present for maximum safety. So I highly recommend do anything exactly in this way. Sorry my English as always =)
    Update2 - actual method is https://forum.xda-developers.com/showpost.php?p=75284993&postcount=1006
    Update: now you can use updated draxie's utility - http://forum.xda-developers.com/kindle-fire-hdx/general/multi-platform-1-click-bootloader-t3241014

    Prerequisites for Installation
    - Root
    - Installed adb and fastboot drivers - official - https://drive.google.com/open?id=0B2twXJIOgv-UWWdwRl9TQS11b0k (if your system language not English, after fail navigate to "Program Files (x86)\Lab126\drivers" and run dpinst.exe /EL or switch to English =) for x64 need to disable driver signature verification before install ) also you can use pdanet drivers - http://forum.xda-developers.com/showpost.php?p=59268023&postcount=8

    Manual:
    1. Create unlock file following this instruction - https://forum.xda-developers.com/ki...r-firmware-t3463982/post70881555#post70881555

    2. Flash old vulnarable aboot and cubed twrp (just in case). Check that all these commands executed without errors. If you'll get one - read second post below. If your firmware <=13(14)3.2.3.2 skip this step.
    Download aboot and twrp for Thor (Kindle Fire HDX 7) https://drive.google.com/open?id=0B2twXJIOgv-UMGxXMUZPZTlZTUk or for Apollo (Kindle Fire HDX 8.9) - https://drive.google.com/open?id=0B2twXJIOgv-URzJDQkczNzRLaHM - and put this two files (twrp_cubed.img and aboot_vuln.mbn) into root of your kindle internal storage.
    Run:
    Code:
    adb shell
    su
    dd if=/sdcard/twrp_cubed.img of=/dev/block/platform/msm_sdcc.1/by-name/recovery
    dd if=/sdcard/aboot_vuln.mbn of=/dev/block/platform/msm_sdcc.1/by-name/aboot
    Now you have working twrp recovery. It already works even without unlocked bootloader. You could boot into it by holding volUP during grey kindle logo. But no need to flash anything until unlock. At this point this is just emergency tool if something goes wrong =)

    3. Flash unlock file.
    Now, if you reboot, you will go straight into fastboot because of old aboot - newest boot.img can't load with it. If your firmware <13(14).4.1.1 you need run "adb reboot bootloader" to boot into fastboot.
    Time to flash your unlock file.
    Code:
    fastboot -i 0x1949 flash unlock 0xmmssssssss.unlock
    You must obtain "unlock code is correct".
    Grats. You are perfect =)
    You can flash:
    CM13 - http://forum.xda-developers.com/kin...ment/rom-cm-13-kindle-hdx-2015-11-29-t3259732
    CM 12.1 - http://forum.xda-developers.com/kin...ent/rom-cm-12-unofficial-apollo-thor-t3050199
    Or stock repacked latest 4.5.5.2 rom - https://drive.google.com/open?id=0B2twXJIOgv-UVFFtN2RYNXNUZ0k (13.x - thor, 14.x - apollo)
    Do not flash original stock firmwares.

    Regards and thank to all - @dpeddi, @vortox, @draxie, @ggow, @Ralekdev, @jcase, @Hashcode
    And greatest thanks for motherboard for my experiments to @MahmudS !
    28
    Steps unlock bootloader and needed files

    this is the details step for unlocking bootloader for the 2013 Kindle HDX 7 (Thor) and HDX 8.9 (Apollo). Becarefull the 2014 HDX 8.9 (Saturn) doesn't work! These steps are done in Windows 10, successfully checked by myselft!
    i don't take any credits, just collect all the steps in one post of the whole process.

    Download the needed files are in the attachment, just download them all + the TWRP for your device from this thread: TWRP 3.1.1-1
    You do NOT need root for these steps!

    1. Install the adb-setup-1.4.3 into a folder (for example: C:/adb), extract dd-0.5.zip + unlock.zip + aboot-xxx.zip, put dd.exe + get_code.bat + unlock.bat + twrp image (for your device) + aboot_vuln.mbn (for your device) into that folder. After that install the kindle_fire_usb_driver.
    2. Turn on ADB-Debuging Mode in Developer Mod by tapping 7 times the build numbers in settings and connect to your computer + trust your device.
    3. Excecute "get_code.bat" in the folder above, you will get a new file: unlock.code in the folder.
    4. Open CMD in the folder and run "adb reboot bootloader", the Kindle will reboot to bootloader with "[ fastboot ]" on the display
    5. On the Computer go to Device-Manager and change driver in "Other Android" to "Fire Devices - Android Adb Composite Driver" . It should say "Ready" on the Kindle.
    6. Now we need to enter Bulk-Mode like the instruction in this thread: Bulk Mode
    Type:
    Code:
    fastboot -i 0x1949 erase aboot
    fastboot -i 0x1949 reboot

    NB: this will be scary as you'll lose 'fastboot' and only see a black screen.
    Your device should reboot into "bulk mode" resulting in a number of pop-up
    windows asking to format all the partitions that get exposed (at least, on Windows 10).
    DO NOT format anything! Follow the above instructions instead.

    Open a command window (cmd) and run the following commands:

    Code:
    wmic partition where index=22 get diskindex
    wmic partition where (index=17 and numberofblocks=20480) get diskindex
    wmic partition where (index=5 and numberofblocks=4096) get diskindex

    All three of the above commands should return the same DiskIndex. Let's call that index X.

    In the command window, run the following two commands with the right aboot&twrp files for your device
    (you will need to substitute the DiskIndex X from above in place of the X):


    Code:
    dd of=\\?\Device\HarddiskX\Partition6 if=aboot_vuln.mbn
    dd of=\\?\Device\HarddiskX\Partition18 if=twrp_cubed.img

    This error message on the first command seems normal: "Error reading file: 87 The parameter is incorrect"
    NB: make sure you run both commands! Without TWRP, you'll get a brick.

    Wait a few minutes for good measure; then, keep holding Power + VolUp until your device enters TWRP.

    7. When done, hold down the power button until it reboots. Now you will be at Bootloader with [Fastboot] sign on the screen. Change the drive in Device-Manager again if needed.
    8. Run the "unlock.bat" in the folder and you should get a green line: "unlock code is correct". Congrats your Kindle now has an unlocked bootloader.
    9. Now hold power button again to shut down the device, then hold both "power button + Volume UP" and keep them for 3-5 seconds after you see the "kindle fire" logo. Then you will get into the TWRP and flash your desire things.

    i hope this post will help others new member to free our beautifull devices!

    Cheers and happy flashing :D
    13
    Generate the unlock code on your own Kindle (no python required)

    Prerequisites
    • Platform tools (adb + fastboot) from Google
    • Fire drivers from Amazon
      (if you want something that works with *both* adb *and* fastboot, make sure you hand-pick the 'Android Composite ADB Interface' driver under 'Fire Devices' in Device Manager)
      Update Driver Software... >> Browse my computer for driver software >> Let me pick from a list [...] >> Fire Devices
    • Download and extract unlock.zip (SHA256: e5db0b8d82c8fd2a25a22b0a598014d22a2ec33cef27a8d4b65a36acde08f27a)
      to the same directory that holds the adb and fastboot executables (default: platform-tools)
      unless, of course, you have added that directory to your PATH

    Code Generation & Unlock
    1. Click on get_code.bat in the extracted folder (default: platform-tools)
      --- this replaces step 1 (including *both* 1.1 & 1.2) of the OP ---
      Check that two hex-numbers are printed (manfid+serial) and a new file 'unlock.code' appears in that folder
    2. Perform Step 2 of the OP
    3. Click on unlock.bat in the extracted folder (default: platform-tools)
      --- this replaces step 3 of the OP ---
      if you see < waiting for any device > in the Command window, you'll need to manually select a driver

    That's all folks...
    10
    BULK MODE

    it is all my fault.my device is apollo,nexus4.4.4. when unlocking bootloader,i put the wrong file into interstorage,that is thor's aboot vuln and twrp cube.and then my hdx8.9 cannot enter recovery,bootload and system,only display background light.i can still see its storage in computer,but shows do not find device in adb .so what should i do to save my apollo?i am appreciating for you help..

    Here's a set of instructions that _SHOULD_ work to recover your device.
    We had two recent successful cases, and I've only managed to brick
    one of my test devices experimenting with this.

    Nevertheless, the standard disclaimer still applies: your device, your risk.
    If anything goes wrong, I'm not responsible.


    1. Open a command window (cmd, NOT PowerShell!!) and run the following commands:
      Code:
      wmic partition where index=22 get diskindex
      wmic partition where (index=17 and numberofblocks=20480) get diskindex
      wmic partition where (index=5 and numberofblocks=4096) get diskindex
      All three of the above commands should return the same DiskIndex.
      Let's call that index X.
    2. Download and extract http://www.chrysocome.net/downloads/dd-0.5.zip.
    3. In the command window, change to the directory with the extracted dd.exe
      and run the following two commands with the right aboot&twrp files for your device
      (you will need to substitute the DiskIndex X from above in place of the red X):
      Code:
      dd of=\\?\Device\Harddisk[COLOR="Red"]X[/COLOR]\Partition6 if=aboot_vuln.mbn
      dd of=\\?\Device\Harddisk[COLOR="Red"]X[/COLOR]\Partition18 if=twrp_cubed.img
      This error message on the first command seems normal: "Error reading file: 87 The parameter is incorrect"
      NB: make sure you run both commands! Without TWRP, you'll get a brick.
    4. Wait a few minutes for good measure; then, keep holding Power + VolUp until your device enters TWRP.


    @bluecoyote, @Mr McBoatface (or anyone else starting from fastboot)
    I have all the ingredients for a script, but haven't had time to put it all together.
    The above instructions work, once you put your device into "bulk mode".
    To do so, you'll need to run these two fastboot commands:
    Code:
    fastboot -i 0x1949 erase aboot
    fastboot -i 0x1949 reboot
    NB: this will be scary as you'll lose 'fastboot' and only see a black screen.
    Your device should reboot into "bulk mode" resulting in a number of pop-up
    windows asking to format all the partitions that get exposed (at least, on Windows 10).
    DO NOT format anything! Follow the above instructions instead.

    Oh, and YES: this should also work on any unrooted & locked 3rd gen HDX device.
    You need to enable ADB and run the following command to enter fastboot:
    Code:
    adb reboot bootloader

    This is arguably faster (and less malware-ridden) than trying to root with Kingroot,
    but it's easy to make a small mistake and end up with a brick.
    7
    Although I have registered my 'thanks' on various posts it seems hollow to not explicitly recognize @ONYXis and @draxie for their tremendous contributions supporting this device both past and present. The ability to unlock virtually any rooted 3rd gen HDX is a true game changer that will revive interest in this discontinued gem that still competes nicely with contemporary offerings. Well done, gents!