assert(!less_than_int(1330142438, getprop("ro.build.date.utc")));
assert(getprop("ro.product.device") == "cdma_solana" ||
       getprop("ro.build.product") == "cdma_solana");
show_progress(0.200000,0);
format("ext3", "MTD", "system");
mount("ext3", "MTD", "system", "/system");
package_extract_dir("recovery", "/system");
package_extract_dir("system", "/system");
symlink("/preinstall", "/system/preinstall");
symlink("motobox", "/system/bin/[", "/system/bin/cp",
        "/system/bin/format", "/system/bin/getconfig",
        "/system/bin/masterclear", "/system/bin/md5sum", "/system/bin/ptf",
        "/system/bin/setconfig",
        "/system/bin/test");
symlink("toolbox", "/system/bin/cat", "/system/bin/chmod",
        "/system/bin/chown", "/system/bin/cmp", "/system/bin/date",
        "/system/bin/dd", "/system/bin/df", "/system/bin/dmesg",
        "/system/bin/getevent", "/system/bin/getprop", "/system/bin/hd",
        "/system/bin/id", "/system/bin/ifconfig", "/system/bin/iftop",
        "/system/bin/insmod", "/system/bin/ioctl", "/system/bin/ionice",
        "/system/bin/kill", "/system/bin/ln", "/system/bin/log",
        "/system/bin/ls", "/system/bin/lsmod", "/system/bin/lsof",
        "/system/bin/mkdir", "/system/bin/mount", "/system/bin/mv",
        "/system/bin/nandread", "/system/bin/netstat",
        "/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",
        "/system/bin/ps", "/system/bin/reboot", "/system/bin/renice",
        "/system/bin/rm", "/system/bin/rmdir", "/system/bin/rmmod",
        "/system/bin/route", "/system/bin/schedtop", "/system/bin/sendevent",
        "/system/bin/sendevent2", "/system/bin/setconsole",
        "/system/bin/setprop", "/system/bin/sleep", "/system/bin/smd",
        "/system/bin/start", "/system/bin/stop", "/system/bin/sync",
        "/system/bin/top", "/system/bin/umount", "/system/bin/uptime",
        "/system/bin/vmstat", "/system/bin/watchprops",
        "/system/bin/wipe");
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 1000, 0740, "/system/bin/encryption_test");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 1001, 04770, "/system/bin/pppd-ril");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");
set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
show_progress(0.100000,0);
show_progress(0.100000,0);
ifelse(motorola.omapdevtype() == "HS", ui_print("updating HS mbmloader..."));
ifelse(motorola.omapdevtype() == "HS", assert(package_extract_file("mbmloader_hs.bin", "/tmp/mbmloader.img"),
write_raw_image("/tmp/mbmloader.img", "mbmloader"),
delete("/tmp/mbmloader.img")));
ifelse(motorola.omapdevtype() == "NS", ui_print("updating NS mbmloader..."));
ifelse(motorola.omapdevtype() == "NS", assert(package_extract_file("mbmloader_ns.bin", "/tmp/mbmloader.img"),
write_raw_image("/tmp/mbmloader.img", "mbmloader"),
delete("/tmp/mbmloader.img")));
ui_print("updating mbm ...");
assert(package_extract_file("mbm.bin", "/tmp/mbm.bin"),
write_raw_image("/tmp/mbm.bin","mbm"),
delete("/tmp/mbm.bin"));
assert(package_extract_file("boot.img", "/tmp/boot.img"),
       write_raw_image("/tmp/boot.img", "boot"),
       delete("/tmp/boot.img"));
show_progress(0.066667,0);
ui_print("updating lbl ...");
assert(package_extract_file("lbl", "/tmp/lbl"),
       write_raw_image("/tmp/lbl","lbl"),
       delete("/tmp/lbl"));
show_progress(0.066667,0);
ui_print("updating devtree ...");
assert(package_extract_file("device_tree.bin", "/tmp/device_tree.bin"),
       write_raw_image("/tmp/device_tree.bin","devtree"),
       delete("/tmp/device_tree.bin"));
show_progress(0.066667,0);
ui_print("updating cdrom ...");
assert(package_extract_file("cdrom", "/tmp/cdrom"),
       write_raw_image("/tmp/cdrom","cdrom"),
       delete("/tmp/cdrom"));
show_progress(0.066667,0);
ui_print("updating logo.bin ...");
assert(package_extract_file("logo.bin", "/tmp/logo.bin"),
       write_raw_image("/tmp/logo.bin","logo.bin"),
       delete("/tmp/logo.bin"));
show_progress(0.066667,0);
ui_print("updating BP ...");
assert(package_extract_file("bp.img", "/tmp/bp.img"));
assert(motorola.motoflash("/tmp/bp.img"));
delete("/tmp/bp.img");
ui_print("updating NV item 7 - NV_MOB_FIRM_REV_I");
assert(motorola.update_nv("0001002F000000000000000A0007000100000002A502"));
ui_print("updating NV item 8 - NV_MOB_MODEL_I");
assert(motorola.update_nv("0003002F0000000000000009000800010000000147"));
ui_print("updating NV item 374 - NV_SMS_BC_CONFIG_I");
assert(motorola.update_nv("0005002F0000000000000009017600010000000102"));
ui_print("updating NV item 372 - NV_SMS_BC_SERVICE_TABLE_SIZE_I");
assert(motorola.update_nv("0007002F000000000000000A01740001000000020500"));
ui_print("updating NV item 375 - NV_SMS_BC_USER_PREF_I");
assert(motorola.update_nv("0009002F0000000000000009017700010000000101"));
ui_print("updating NV item 5153 - NV_UE_IMEISV_SVN_I");
assert(motorola.update_nv("000B002F0000000000000009142100010000000106"));
ui_print("updating NV item 373-1 - NV_SMS_BC_SERVICE_TABLE_I");
assert(motorola.update_nv("000D002F000000000000002D017500010000002500010010010103505245534944454E54414C20414C45525400000000000000000000000000"));
ui_print("updating NV item 373-2 - NV_SMS_BC_SERVICE_TABLE_I");
assert(motorola.update_nv("000F002F000000000000002D017500020000002501010110010103414D42455220414C45525400000000000000000000000000000000000000"));
ui_print("updating NV item 373-3 - NV_SMS_BC_SERVICE_TABLE_I");
assert(motorola.update_nv("0011002F000000000000002D01750003000000250201021001010345585452454D4520414C4552540000000000000000000000000000000000"));
ui_print("updating NV item 373-4 - NV_SMS_BC_SERVICE_TABLE_I");
assert(motorola.update_nv("0015002F000000000000002D01750004000000250301031001010353455645524520414C455254000000000000000000000000000000000000"));
ui_print("updating NV item 373-5 - NV_SMS_BC_SERVICE_TABLE_I");
assert(motorola.update_nv("0017002F000000000000002D0175000500000025040104100101035445535420414C4552540000000000000000000000000000000000000000"));
ui_print("updating NV item 8013 - MOT_NV_FLEX_TIMESTAMP_I");
assert(motorola.update_nv("0019002F00000000000000481F4D000100000040547565204A616E2032342031353A30373A3534204353542032303132000000000000000000000000000000000000000000000000000000000000000000000000"));
ui_print("updating NV item 8010 - MOT_NV_FLEX_VERSION_I");
assert(motorola.update_nv("001B002F00000000000000481F4A0001000000403031432E305200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"));
ui_print("updating NV item 8011 - MOT_NV_FLEX_MODEL_I");
assert(motorola.update_nv("001D002F00000000000000481F4B000100000040585341534F4C414E5745303156525A4E413031432E30520000000000000000000000000000000000000000000000000000000000000000000000000000000000"));
ui_print("updating NV item 8148 - MOT_NV_PCS_TX_LIM_VS_FREQ_CB_OFFSET_DATA_FCL_DN_I");
assert(motorola.update_nv("0002002F00000000000000181FD40001000000105858585858584747474747474A4A4A4A"));
ui_print("updating NV item 8149 - MOT_NV_PCS_TX_LIM_VS_FREQ_CB_OFFSET_DATA_FCL_UP_I");
assert(motorola.update_nv("0004002F00000000000000181FD50001000000105858585858584747474747474A4A4A4A"));
ui_print("updating NV item 8218 - MOT_NV_GSM_1800_TX_LIM_VS_FREQ_CB_OFFSET_DN_I");
assert(motorola.update_nv("0006002F0000000000000018201A000100000010F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5"));
ui_print("updating NV item 8219 - MOT_NV_GSM_1800_TX_LIM_VS_FREQ_CB_OFFSET_UP_I");
assert(motorola.update_nv("0008002F0000000000000018201B000100000010F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5"));
ui_print("updating NV item 8226 - MOT_NV_GSM_1800_TX_LIM_VS_FREQ_CB_OFFSET_FCL_DN_I");
assert(motorola.update_nv("000A002F00000000000000182022000100000010F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5"));
ui_print("updating NV item 8227 - MOT_NV_GSM_1800_TX_LIM_VS_FREQ_CB_OFFSET_FCL_UP_I");
assert(motorola.update_nv("000C002F00000000000000182023000100000010F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5"));
ui_print("updating NV item 8234 - MOT_NV_GSM_1800_TX_LIM_VS_FREQ_CB_OFFSET_DATA_FOP_DN_I");
assert(motorola.update_nv("000E002F0000000000000018202A000100000010F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5"));
ui_print("updating NV item 8235 - MOT_NV_GSM_1800_TX_LIM_VS_FREQ_CB_OFFSET_DATA_FOP_UP_I");
assert(motorola.update_nv("0010002F0000000000000018202B000100000010F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5"));
show_progress(0.100000,0);
ui_print("updating cdt.bin ...");
assert(package_extract_file("cdt.bin", "/tmp/cdt.bin"),
       write_raw_image("/tmp/cdt.bin","cdt.bin"),
       delete("/tmp/cdt.bin"));
show_progress(0.100000,0);
show_progress(0.066667,0);
unmount("/system");
