Overhaul of the sky130 I/O pads.  With a few fixes to the magic tech file and
a few non-physical-mask changes to the vendor I/O cells, the I/O cells will
now read into magic in a way that they can be extracted from either GDS or
.mag views, and will pass LVS against the provided SPICE netlists, and will
be simulatable.  Important note:  Swapped the GDS purpose of "text" vs. "pin"
in the magic tech file so that it now matches the foundry use (previously it
was defined to match the foundry documentation, which was in conflict with
the foundry usage).
diff --git a/VERSION b/VERSION
index 514ec94..e7dc85f 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.352
+1.0.353
diff --git a/sky130/custom/scripts/fix_text_pin_gds.py b/sky130/custom/scripts/fix_text_pin_gds.py
new file mode 100755
index 0000000..9830150
--- /dev/null
+++ b/sky130/custom/scripts/fix_text_pin_gds.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python3
+#
+# fix_text_pin_gds.py ---
+#
+# Reverses the text and pin purposes in a file;  corrects older files
+# built from magic based on the documented purposes.  Changes files to
+# the actual usage, which is purpose 5 for pin, and purpose 16 for text.
+#
+
+import sys
+
+if len(sys.argv) != 2:
+    print('Usage:  fix_vssio_overlay_gds.py <filename>')
+    sys.exit(1)
+else:
+    file_name = sys.argv[1]
+
+# rendered text:
+#------------------------------------------------------------------------------
+#   0x0006     # RECORD_LENGTH              Bytes of data in this record
+#   0x16       # RECORD_TYPE:  TEXTTYPE     Texttype specification
+#   0x02       # DATA_TYPE:    INTEGER_2    Two byte signed integer
+#   0x0010     # DATA: 16
+#
+#   0x0006     # RECORD_LENGTH              Bytes of data in this record
+#   0x17       # RECORD_TYPE:  PRESENTATION Text origin and font specification
+#------------------------------------------------------------------------------
+# and standard text:
+#------------------------------------------------------------------------------
+#   0x0006     # RECORD_LENGTH              Bytes of data in this record
+#   0x16       # RECORD_TYPE:  TEXTTYPE     Texttype specification
+#   0x02       # DATA_TYPE:    INTEGER_2    Two byte signed integer
+#   0x0010     # DATA: 16
+
+#   0x000c     # RECORD_LENGTH              Bytes of data in this record
+#   0x10       # RECORD_TYPE:  XY           An array of XY coordinates
+#   0x03       # DATA_TYPE:    INTEGER_4    Four byte signed integer
+#------------------------------------------------------------------------------
+
+
+# Convert this data
+orig_data_0 = b'\x00\x06\x16\x02\x00\x10\x00\x06\x17\x01'
+
+# To this data (change purpose type 16 to type 5)
+new_data_0 = b'\x00\x06\x16\x02\x00\x05\x00\x06\x17\x01'
+
+# Convert this data
+orig_data_1 = b'\x00\x06\x16\x02\x00\x10\x00\x0c\x10\x03'
+
+# To this data (change purpose type 16 to type 5)
+new_data_1 = b'\x00\x06\x16\x02\x00\x05\x00\x0c\x10\x03'
+
+# This is not efficient, but only needs to be done once.
+
+with open(file_name, 'rb') as ifile:
+    data = ifile.read()
+    data = data.replace(orig_data_0, new_data_0)
+    data = data.replace(orig_data_1, new_data_1)
+
+# Write back into the same file
+with open(file_name, 'wb') as ofile:
+    ofile.write(data)
+
+print("Done!")
diff --git a/sky130/custom/scripts/fix_vddio_pad_gds.py b/sky130/custom/scripts/fix_vddio_pad_gds.py
index 3720225..be038a7 100755
--- a/sky130/custom/scripts/fix_vddio_pad_gds.py
+++ b/sky130/custom/scripts/fix_vddio_pad_gds.py
@@ -47,10 +47,10 @@
 add_data_8 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x01\x22\x1e\x00\x00\xf8\x48\x00\x01\x22\x28\x00\x00\xf8\x48\x00\x01\x22\x28\x00\x01\x0d\xce\x00\x01\x22\x1e\x00\x01\x0d\xce\x00\x01\x22\x1e\x00\x00\xf8\x48\x00\x04\x11\x00'
 
 # PADISOR label at (67.45um 66.22um) size 0.3um on MET3PIN
-add_data_9 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x10\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x01\x07\x7a\x00\x01\x02\xac\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x52\x00\x00\x04\x11\x00'
+add_data_9 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x05\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x01\x07\x7a\x00\x01\x02\xac\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x52\x00\x00\x04\x11\x00'
 
 # PADISOL label at (5.05um 66.22um) size 0.3um on MET3PIN
-add_data_10 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x10\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x00\x13\xba\x00\x01\x02\xac\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x4c\x00\x00\x04\x11\x00'
+add_data_10 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x05\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x00\x13\xba\x00\x01\x02\xac\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x4c\x00\x00\x04\x11\x00'
 
 # Append metal resistors after this data
 orig_data_1 = b'\x00\x02\x9d\x33\x00\x00\x2b\x1b\x00\x02\x9d\xfb\x00\x00\x2a\x53\x00\x02\x9d\xfb\x00\x00\x2a\x53\x00\x02\x9d\x33\x00\x04\x11\x00'
diff --git a/sky130/custom/scripts/fix_vssio_pad_gds.py b/sky130/custom/scripts/fix_vssio_pad_gds.py
index d1b2ea3..a80c56d 100755
--- a/sky130/custom/scripts/fix_vssio_pad_gds.py
+++ b/sky130/custom/scripts/fix_vssio_pad_gds.py
@@ -46,10 +46,10 @@
 add_data_8 = b'\x00\x04\x08\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x0e\x02\x00\x0d\x00\x2c\x10\x03\x00\x01\x22\x1e\x00\x00\xe1\xa0\x00\x01\x22\x28\x00\x00\xe1\xa0\x00\x01\x22\x28\x00\x00\xf6\x90\x00\x01\x22\x1e\x00\x00\xf6\x90\x00\x01\x22\x1e\x00\x00\xe1\xa0\x00\x04\x11\x00'
 
 # PADISOR label at (67.45um 60.34um) size 0.3um on MET3PIN
-add_data_9 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x10\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x01\x07\x7a\x00\x00\xeb\xb4\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x52\x00\x00\x04\x11\x00'
+add_data_9 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x05\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x01\x07\x7a\x00\x00\xeb\xb4\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x52\x00\x00\x04\x11\x00'
 
 # PADISOL label at (5.05um 60.34um) size 0.3um on MET3PIN
-add_data_10 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x10\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x00\x13\xba\x00\x00\xeb\xb4\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x4c\x00\x00\x04\x11\x00'
+add_data_10 = b'\x00\x04\x0c\x00\x00\x06\x0d\x02\x00\x46\x00\x06\x16\x02\x00\x05\x00\x06\x17\x01\x00\x05\x00\x06\x1a\x01\x00\x00\x00\x0c\x1b\x05\x40\x4c\x66\x66\x66\x66\x66\x66\x00\x0c\x10\x03\x00\x00\x13\xba\x00\x00\xeb\xb4\x00\x0c\x19\x06\x50\x41\x44\x49\x53\x4f\x4c\x00\x00\x04\x11\x00'
 
 # Append after this data
 orig_data = b'\x00\x02\x7d\xd0\x00\x01\x11\xb1\x00\x02\x7e\x98\x00\x01\x10\xe9\x00\x02\x7e\x98\x00\x01\x10\xe9\x00\x02\x7d\xd0\x00\x04\x11\x00'
diff --git a/sky130/custom/scripts/gds_import_io.tcl b/sky130/custom/scripts/gds_import_io.tcl
index 22546c6..d698908 100644
--- a/sky130/custom/scripts/gds_import_io.tcl
+++ b/sky130/custom/scripts/gds_import_io.tcl
@@ -1,16 +1,11 @@
-# Set the GDS input style to sky130(vendor).  This treats labels on the
-# TXT purpose (5) as pins, which is unfortunately done in a lot of the
-# vendor GDS files.
-cif istyle sky130(vendor)
+cif istyle sky130()
 #
 gds flatten true
 gds flatglob *_cdns_*
 gds flatglob *sky130_fd_pr__*_example_*
 
-# ! flatten within the 120x2 ESD device
-gds flatglob *sky130_fd_io__gnd2gnd_s*
-gds flatglob *sky130_fd_io__gnd2gnd_d*
-gds flatglob *sky130_fd_io__gnd2gnd_t*
+# ! flatten the 120x2 ESD device
+gds flatglob *sky130_fd_io__gnd2gnd_*
 
 # The following cells have to be flattened for the gpiov2 pad to read in
 # correctly, and produce a layout that can be extracted and generate an
diff --git a/sky130/custom/scripts/gds_import_setup.tcl b/sky130/custom/scripts/gds_import_setup.tcl
index f3a8585..ba6a7b3 100644
--- a/sky130/custom/scripts/gds_import_setup.tcl
+++ b/sky130/custom/scripts/gds_import_setup.tcl
@@ -1,4 +1 @@
-# Set the GDS input style to sky130(vendor).  This treats labels on the
-# TXT purpose (5) as pins, which is unfortunately done in a lot of the
-# vendor GDS files.
-cif istyle sky130(vendor)
+cif istyle sky130()
diff --git a/sky130/custom/scripts/gds_import_sram.tcl b/sky130/custom/scripts/gds_import_sram.tcl
index f4c3ace..af00660 100644
--- a/sky130/custom/scripts/gds_import_sram.tcl
+++ b/sky130/custom/scripts/gds_import_sram.tcl
@@ -1,6 +1,3 @@
-# Set the GDS input style to sky130(vendor).  This treats labels on the
-# TXT purpose (5) as pins, which is unfortunately done in a lot of the
-# vendor GDS files.
-cif istyle sky130(vendor)
+cif istyle sky130()
 # Ensure unique cell names when reading multiple GDS files
 calma unique true
diff --git a/sky130/custom/sky130_fd_io/gds/sky130_ef_io.gds b/sky130/custom/sky130_fd_io/gds/sky130_ef_io.gds
index a8da398..024c773 100644
--- a/sky130/custom/sky130_fd_io/gds/sky130_ef_io.gds
+++ b/sky130/custom/sky130_fd_io/gds/sky130_ef_io.gds
Binary files differ
diff --git a/sky130/custom/sky130_fd_io/gds/sky130_ef_io__analog.gds b/sky130/custom/sky130_fd_io/gds/sky130_ef_io__analog.gds
index 40b248e..6e2a043 100644
--- a/sky130/custom/sky130_fd_io/gds/sky130_ef_io__analog.gds
+++ b/sky130/custom/sky130_fd_io/gds/sky130_ef_io__analog.gds
Binary files differ
diff --git a/sky130/custom/sky130_fd_io/gds/sky130_ef_io__gpiov2_pad_wrapped.gds b/sky130/custom/sky130_fd_io/gds/sky130_ef_io__gpiov2_pad_wrapped.gds
index c695d84..a88b83c 100644
--- a/sky130/custom/sky130_fd_io/gds/sky130_ef_io__gpiov2_pad_wrapped.gds
+++ b/sky130/custom/sky130_fd_io/gds/sky130_ef_io__gpiov2_pad_wrapped.gds
Binary files differ
diff --git a/sky130/custom/sky130_fd_io/mag/README b/sky130/custom/sky130_fd_io/mag/README
new file mode 100644
index 0000000..04593bd
--- /dev/null
+++ b/sky130/custom/sky130_fd_io/mag/README
@@ -0,0 +1,80 @@
+This directory contains standard format files for "sky130_ef_io",
+which is an efabless addendum to the SkyWater I/O library "sky130_fd_io".
+
+sky130_ef_io does the following:
+
+(1) Changes the orientation of the corner pad from upper-right to
+    lower-left with a wrapper cell called "sky130_fd_io__corner_pad".  Also
+    extends the power buses to make the dimensions of the corner pad
+    multiples of 1um.
+
+(2) Adds a 1um-wide spacer cell to complement the existing 5um-wide
+    spacer cell.
+
+(3) Adds wrappers for all the combinations of power pad base cell +
+    power pad overlay, to create all 12 combinations, for pads with
+    either high- or low-voltage clamps, connecting to one of the six
+    power domains vddio, vdda, vccd, vssio, vssa, or vssd.
+
+(4) Adds overlay cells that connect the clamps to the different domains,
+    in four commonly-used configurations.
+
+(5) Adds wrappers for specfic combinations of power pad base cells +
+    power pad overlay + clamp connection overlay, to create 8 common
+    combinations.
+
+(6) (5/28/2021) Added a separate wrapper cell for the top_power_hvc_wpadv2
+    cell for the "caravan" project to triple up metal to the pad for
+    high current supply applications.  The clamp and the pad remain
+    unconnected.
+
+"sky130_ef_io" is open source copyright 2020 efabless, Inc.
+Released under Apache 2.0 license
+
+NOTES:
+-------------------
+Copy these .mag sources to open_pdks/sky130/custom/sky130_fd_io/mag/
+Generate GDS:
+	load sky130_ef_io
+	cif *hier write disable		;# there are no interactions
+	gds library true		;# don't write top-level cell
+	gds addendum true		;# don't write readonly cells
+	gds write sky130_ef_io
+
+and copy sky130_fd_io.gds to open_pdks/sky130/custom/sky130_fd_io/gds/.
+
+For LEF views, use
+	lef write -hide
+and copy the resulting file to open_pdks/sky130/custom/sky130_fd_io/lef/.
+***BUT*** Some of the views need editing:
+(1) Move m4 obstruction in com_slice_Xum from 93.365 to 173.75 so that
+    the area is empty for placing subcells in this area.
+(2) Fix non-manhattan geometry in the corner of the corner cell.
+(3) Erase labels on non-Manhattan shapes in sky130_fd_io__top_xres4v2
+    before running "lef write -hide".
+
+These two actions have been codified into the following scripts:
+	generate_gds_lib.sh
+	generate_lef_views.sh
+
+
+MODIFICATIONS:
+-------------------
+3/30/2021:  Corrected the power pad layouts to differentiate between
+	    the pad and the core (which are different nets).  Text
+	    "_PAD" added to the net on the pad, and port numbers
+	    modified to match the corrected CDL netlists in open_pdks.
+	    Rewriting GDS with the most recent magic techfile also
+	    corrects the port/text layer:purpose pairs.
+
+5/28/2021:  Added power cell with extra-wide metal3 for the "caravan"
+	    project.
+
+6/16/2021:  Fixed the mix-up between the "clamped" and "clamped2" pads.
+	    To be consistent with the verilog and SPICE, the .mag, .lef,
+	    and .gds views all need to have the names "clamped" and
+	    "clamped2" swapped.
+
+6/24/2021:  Fixed cell top_power_hvc, which had a Y offset of -47um.
+
+10/28/2021: Corrected an offset overlay on sky130_ef_io__vdda_hvc_pad.
diff --git a/sky130/custom/sky130_fd_io/mag/generate_gds_lib.sh b/sky130/custom/sky130_fd_io/mag/generate_gds_lib.sh
new file mode 100755
index 0000000..0a40435
--- /dev/null
+++ b/sky130/custom/sky130_fd_io/mag/generate_gds_lib.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# generate_gds_lib.sh ---
+#
+# Generate the GDS according to the instructions in README.
+#
+
+magic -dnull -noconsole -rcfile /usr/share/pdk/sky130A/libs.tech/magic/sky130A.magicrc << EOF
+drc off
+crashbackups stop
+load sky130_ef_io
+cif *hier write disable
+gds library true
+gds addendum true
+gds write sky130_ef_io
+EOF
+
+exit 0
diff --git a/sky130/custom/sky130_fd_io/mag/generate_lef_views.sh b/sky130/custom/sky130_fd_io/mag/generate_lef_views.sh
new file mode 100755
index 0000000..fccb0a8
--- /dev/null
+++ b/sky130/custom/sky130_fd_io/mag/generate_lef_views.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+#
+# generate_lef_views.sh ---
+#
+# Read all of the cell names from "topcells.txt" and generate LEF views
+# from them.  Then write those files to the ../lef directory.
+#
+allcells=`cat topcells.txt`
+
+magic -dnull -noconsole -rcfile /usr/share/pdk/sky130A/libs.tech/magic/sky130A.magicrc << EOF
+drc off
+crashbackups stop
+set cells $allcells
+foreach cell \$cells {
+   load \$cell
+   lef write -hide
+}
+quit -noprompt
+EOF
+
+mv *.lef ../lef/
+
+exit 0
diff --git a/sky130/custom/sky130_fd_io/mag/sky130_ef_io.mag b/sky130/custom/sky130_fd_io/mag/sky130_ef_io.mag
index e3e762d..34f8aa5 100644
--- a/sky130/custom/sky130_fd_io/mag/sky130_ef_io.mag
+++ b/sky130/custom/sky130_fd_io/mag/sky130_ef_io.mag
@@ -1,69 +1,77 @@
 magic
 tech sky130A
 magscale 1 2
-timestamp 1624544534
+timestamp 1636574685
+use sky130_ef_io__vccd_lvc_clamped3_pad  sky130_ef_io__vccd_lvc_clamped3_pad_0
+timestamp 1636574685
+transform 1 0 -2456 0 1 -60530
+box 0 -2177 17187 39593
+use sky130_ef_io__vssd_lvc_clamped3_pad  sky130_ef_io__vssd_lvc_clamped3_pad_0
+timestamp 1636574685
+transform 1 0 25051 0 1 -59702
+box 0 -2184 17187 39593
 use sky130_ef_io__vddio_hvc_clamped_pad  sky130_ef_io__vddio_hvc_clamped_pad_0
-timestamp 1624544022
+timestamp 1617120349
 transform 1 0 -778 0 1 -5714
 box 0 -434 15000 39593
-use sky130_ef_io__vdda_hvc_clamped_pad  sky130_ef_io__vdda_hvc_clamped_pad_0
-timestamp 1622214725
-transform 1 0 39000 0 1 -5606
-box 0 -434 15000 39593
 use sky130_ef_io__vssio_hvc_clamped_pad  sky130_ef_io__vssio_hvc_clamped_pad_0
-timestamp 1622214725
+timestamp 1617120349
 transform 1 0 19004 0 1 -5606
 box 0 -434 15000 39593
-use sky130_ef_io__vccd_lvc_clamped_pad  sky130_ef_io__vccd_lvc_clamped_pad_0
-timestamp 1622214725
-transform 1 0 77366 0 1 -5822
-box -2195 -2184 17228 39593
+use sky130_ef_io__vdda_hvc_clamped_pad  sky130_ef_io__vdda_hvc_clamped_pad_0
+timestamp 1617120349
+transform 1 0 39000 0 1 -5606
+box 0 -434 15000 39593
 use sky130_ef_io__vssa_hvc_clamped_pad  sky130_ef_io__vssa_hvc_clamped_pad_0
-timestamp 1622214725
+timestamp 1617120349
 transform 1 0 58346 0 1 -5496
 box 0 -434 15000 39593
-use sky130_ef_io__vssd_lvc_clamped_pad  sky130_ef_io__vssd_lvc_clamped_pad_0
-timestamp 1622214725
-transform 1 0 98450 0 1 -6148
-box -2195 -2184 17228 39593
-use sky130_ef_io__vccd_lvc_clamped2_pad  sky130_ef_io__vccd_lvc_clamped2_pad_0
-timestamp 1622214725
-transform 1 0 118340 0 1 -5714
+use sky130_ef_io__vccd_lvc_clamped_pad  sky130_ef_io__vccd_lvc_clamped_pad_0
+timestamp 1617120349
+transform 1 0 77366 0 1 -5822
 box 0 -2107 17239 39593
+use sky130_ef_io__vssd_lvc_clamped_pad  sky130_ef_io__vssd_lvc_clamped_pad_0
+timestamp 1617120349
+transform 1 0 98450 0 1 -6148
+box 0 -2107 17239 39593
+use sky130_ef_io__vccd_lvc_clamped2_pad  sky130_ef_io__vccd_lvc_clamped2_pad_0
+timestamp 1617120349
+transform 1 0 118340 0 1 -5714
+box -2195 -2184 17228 39593
 use sky130_ef_io__vssd_lvc_clamped2_pad  sky130_ef_io__vssd_lvc_clamped2_pad_0
 timestamp 1617120349
 transform 1 0 141083 0 1 -5048
-box -2195 -2184 17228 39593
+box 0 -46 15000 39593
 use sky130_ef_io__top_power_hvc  sky130_ef_io__top_power_hvc_0
 timestamp 1624544534
 transform 1 0 163508 0 1 -6325
-box 0 -407 33800 39593
+box 0 -434 33800 39593
 use sky130_ef_io__vssd_lvc_pad  sky130_ef_io__vssd_lvc_pad_0
-timestamp 1622214725
+timestamp 1617120349
 transform 1 0 -480 0 1 46173
 box 0 -46 15000 39593
-use sky130_ef_io__vssa_hvc_pad  sky130_ef_io__vssa_hvc_pad_0
-timestamp 1622214725
-transform 1 0 37912 0 1 46935
-box 0 -434 15000 39593
 use sky130_ef_io__vssd_hvc_pad  sky130_ef_io__vssd_hvc_pad_0
-timestamp 1622214725
+timestamp 1617120349
 transform 1 0 18134 0 1 46741
 box 0 -434 15000 39593
-use sky130_ef_io__vssio_lvc_pad  sky130_ef_io__vssio_lvc_pad_0
-timestamp 1622214725
-transform 1 0 79018 0 1 44233
-box 0 -46 15000 39593
+use sky130_ef_io__vssa_hvc_pad  sky130_ef_io__vssa_hvc_pad_0
+timestamp 1617120349
+transform 1 0 37912 0 1 46935
+box 0 -434 15000 39593
 use sky130_ef_io__vssa_lvc_pad  sky130_ef_io__vssa_lvc_pad_0
-timestamp 1622214725
+timestamp 1617120349
 transform 1 0 60016 0 1 44427
+box 0 -46 15000 39593
+use sky130_ef_io__vssio_lvc_pad  sky130_ef_io__vssio_lvc_pad_0
+timestamp 1617120349
+transform 1 0 79018 0 1 44233
 box 0 -7 15000 39593
 use sky130_ef_io__vssio_hvc_pad  sky130_ef_io__vssio_hvc_pad_0
-timestamp 1622214725
+timestamp 1617120349
 transform 1 0 100540 0 1 44967
-box 0 -434 15000 39593
+box 0 -407 15000 39593
 use sky130_ef_io__corner_pad  sky130_ef_io__corner_pad_0
-timestamp 1622214725
+timestamp 1609343739
 transform 1 0 123795 0 1 46420
 box -271 -204 40000 40800
 use sky130_ef_io__com_bus_slice_20um  sky130_ef_io__com_bus_slice_20um_0
@@ -83,39 +91,39 @@
 transform 1 0 167600 0 1 45744
 box 0 0 200 39593
 use sky130_ef_io__vdda_hvc_pad  sky130_ef_io__vdda_hvc_pad_0
-timestamp 1622214725
+timestamp 1617120349
 transform 1 0 19686 0 1 92471
-box 0 -434 15000 39993
-use sky130_ef_io__vccd_lvc_pad  sky130_ef_io__vccd_lvc_pad_0
-timestamp 1622214725
-transform 1 0 38106 0 1 91155
-box 0 -46 15000 39593
+box 0 -434 15000 39593
 use sky130_ef_io__vdda_lvc_pad  sky130_ef_io__vdda_lvc_pad_0
-timestamp 1622214725
+timestamp 1617120349
 transform 1 0 -868 0 1 91931
 box 0 -46 15000 39593
+use sky130_ef_io__vccd_lvc_pad  sky130_ef_io__vccd_lvc_pad_0
+timestamp 1617120349
+transform 1 0 38106 0 1 91155
+box 0 -46 15000 39593
 use sky130_ef_io__vccd_hvc_pad  sky130_ef_io__vccd_hvc_pad_0
-timestamp 1622214725
+timestamp 1617120349
 transform 1 0 56526 0 1 91335
 box 0 -434 15000 39593
 use sky130_ef_io__vddio_hvc_pad  sky130_ef_io__vddio_hvc_pad_0
-timestamp 1622214725
+timestamp 1617120349
 transform 1 0 77078 0 1 92305
 box 0 -407 15000 39593
 use sky130_ef_io__vddio_lvc_pad  sky130_ef_io__vddio_lvc_pad_0
-timestamp 1622214725
+timestamp 1617120349
 transform 1 0 97048 0 1 92319
-box 0 -46 15000 39593
+box 0 -7 15000 39593
 use sky130_ef_io__gpiov2_pad  sky130_ef_io__gpiov2_pad_0
-timestamp 1622214725
+timestamp 1602597384
 transform 1 0 119295 0 1 92724
 box -143 -543 16134 39593
 use sky130_fd_io__top_xres4v2  sky130_fd_io__top_xres4v2_0 $PDKPATH/libs.ref/sky130_fd_io/mag
-timestamp 1622147639
+timestamp 1636165381
 transform 1 0 140197 0 1 92452
 box -103 0 15124 40000
 use sky130_fd_io__top_gpio_ovtv2  sky130_ef_fd__top_gpio_ovtv2_0 $PDKPATH/libs.ref/sky130_fd_io/mag
-timestamp 1622147639
+timestamp 1636165381
 transform 1 0 160920 0 1 92540
 box -80 -147 28211 40151
 << end >>
diff --git a/sky130/custom/sky130_fd_io/mag/sky130_ef_io__gpiov2_pad.mag.orig b/sky130/custom/sky130_fd_io/mag/sky130_ef_io__gpiov2_pad.mag.orig
new file mode 100644
index 0000000..31b3aff
--- /dev/null
+++ b/sky130/custom/sky130_fd_io/mag/sky130_ef_io__gpiov2_pad.mag.orig
@@ -0,0 +1,286 @@
+magic
+tech sky130A
+magscale 1 2
+timestamp 1602597384
+<< metal1 >>
+rect 12486 -407 12538 -351
+<< metal2 >>
+rect 7956 15977 8019 15991
+rect 7956 15927 7969 15977
+tri 7969 15927 8019 15977 nw
+rect 675 -407 721 -361
+rect 1084 -407 1130 -328
+rect 1226 -407 1278 -355
+rect 2551 -407 2603 -363
+rect 3262 -407 3314 -306
+rect 4471 -407 4523 -340
+rect 5320 -407 5372 -379
+rect 5698 -407 5750 -355
+rect 6150 -407 6202 -351
+rect 6363 -407 6415 -363
+rect 7092 -407 7144 -351
+rect 7678 -407 7730 -318
+rect 9049 -407 9101 -355
+rect 9971 -407 10023 -355
+rect 13367 -407 13419 -355
+rect 13655 -407 13785 -363
+rect 15256 -407 15384 -363
+rect 15522 -407 15574 -363
+rect 15741 -407 15781 -363
+rect 15943 -407 15983 -215
+<< metal3 >>
+rect 80 -407 204 -244
+rect 9173 -407 9239 -355
+rect 12564 -407 12778 -260
+rect 15716 -407 15782 -254
+rect 15848 -407 15914 -244
+<< metal4 >>
+rect 0 34750 254 39593
+rect 15746 34750 16000 39593
+rect 0 13600 254 18593
+rect 15746 13600 16000 18593
+rect 0 12410 254 13300
+rect 15746 12410 16000 13300
+rect 0 11240 254 12130
+rect 15746 11240 16000 12130
+rect 0 10874 254 10940
+rect 15746 10874 16000 10940
+rect 0 10218 100 10814
+rect 15746 10218 15846 10814
+rect 0 9922 254 10158
+rect 15746 9922 16000 10158
+rect 0 9266 116 9862
+rect 15746 9266 15862 9862
+rect 0 9140 254 9206
+rect 15746 9140 16000 9206
+rect 0 7910 254 8840
+rect 15746 7910 16000 8840
+rect 0 6940 254 7630
+rect 15746 6940 16000 7630
+rect 0 5970 254 6660
+rect 15746 5970 16000 6660
+rect 0 4760 254 5690
+rect 15746 4760 16000 5690
+rect 0 3550 254 4480
+rect 15746 3550 16000 4480
+rect 0 2580 254 3270
+rect 15746 2580 16000 3270
+rect 0 1370 254 2300
+rect 15746 1370 16000 2300
+rect 0 0 254 1090
+rect 15746 0 16000 1090
+<< metal5 >>
+rect 0 34750 254 39593
+rect 15746 34750 16000 39593
+rect 6423 24687 10731 28996
+rect 0 13600 254 18590
+rect 15746 13600 16000 18590
+rect 0 12430 254 13280
+rect 15746 12430 16000 13280
+rect 0 11260 254 12110
+rect 15746 11260 16000 12110
+rect 0 9140 254 10940
+rect 15746 9140 16000 10940
+rect 0 7930 254 8820
+rect 15746 7930 16000 8820
+rect 0 6960 254 7610
+rect 15746 6960 16000 7610
+rect 0 5990 254 6640
+rect 15746 5990 16000 6640
+rect 0 4780 254 5670
+rect 15746 4780 16000 5670
+rect 0 3570 254 4460
+rect 15746 3570 16000 4460
+rect 0 2600 254 3250
+rect 15746 2600 16000 3250
+rect 0 1390 254 2280
+rect 15746 1390 16000 2280
+rect 0 20 254 1070
+rect 15746 20 16000 1070
+use sky130_fd_io__overlay_gpiov2  sky130_fd_io__overlay_gpiov2_0 $PDKPATH/libs.ref/sky130_fd_io/mag
+timestamp 1617033437
+transform 1 0 0 0 1 -407
+box 0 407 16000 40000
+use sky130_fd_io__top_gpiov2  sky130_fd_io__top_gpiov2_0 $PDKPATH/libs.ref/sky130_fd_io/mag
+timestamp 1617033437
+transform 1 0 0 0 1 -407
+box -143 -136 16134 40000
+<< labels >>
+flabel metal4 s 127 37925 127 37925 3 FreeSans 520 0 0 0 VSSIO
+port 35 nsew ground bidirectional
+flabel metal5 s 0 13600 254 18590 3 FreeSans 520 0 0 0 VDDIO
+port 31 nsew power bidirectional
+flabel metal5 s 0 7930 254 8820 3 FreeSans 520 0 0 0 VSSD
+port 34 nsew ground bidirectional
+flabel metal5 s 0 11260 254 12110 3 FreeSans 520 0 0 0 VSSIO_Q
+port 36 nsew ground bidirectional
+flabel metal5 s 0 5990 254 6640 3 FreeSans 520 0 0 0 VSWITCH
+port 37 nsew power bidirectional
+flabel metal5 s 0 4780 254 5670 3 FreeSans 520 0 0 0 VSSIO
+port 35 nsew ground bidirectional
+flabel metal5 s 0 2600 193 3250 3 FreeSans 520 0 0 0 VDDA
+port 30 nsew power bidirectional
+flabel metal5 s 0 3570 254 4460 3 FreeSans 520 0 0 0 VDDIO
+port 31 nsew power bidirectional
+flabel metal5 s 0 1390 254 2280 3 FreeSans 520 0 0 0 VCCD
+port 28 nsew power bidirectional
+flabel metal5 s 0 12430 254 13280 3 FreeSans 520 0 0 0 VDDIO_Q
+port 32 nsew power bidirectional
+flabel metal5 s 0 9140 254 10940 3 FreeSans 520 0 0 0 VSSA
+port 33 nsew ground bidirectional
+flabel metal5 s 0 6961 254 7610 3 FreeSans 520 0 0 0 VSSA
+port 33 nsew ground bidirectional
+flabel metal5 s 0 20 254 1070 3 FreeSans 520 0 0 0 VCCHIB
+port 29 nsew power bidirectional
+flabel metal4 s 0 34750 254 39593 3 FreeSans 520 0 0 0 VSSIO
+port 35 nsew ground bidirectional
+flabel metal4 s 0 3550 254 4480 3 FreeSans 520 0 0 0 VDDIO
+port 31 nsew power bidirectional
+flabel metal4 s 0 12410 254 13300 3 FreeSans 520 0 0 0 VDDIO_Q
+port 32 nsew power bidirectional
+flabel metal4 s 0 13600 254 18593 3 FreeSans 520 0 0 0 VDDIO
+port 31 nsew power bidirectional
+flabel metal4 s 0 1370 254 2300 3 FreeSans 520 0 0 0 VCCD
+port 28 nsew power bidirectional
+flabel metal4 s 0 9140 254 9206 3 FreeSans 520 0 0 0 VSSA
+port 33 nsew ground bidirectional
+flabel metal4 s 0 5970 254 6660 3 FreeSans 520 0 0 0 VSWITCH
+port 37 nsew power bidirectional
+flabel metal4 s 0 9922 254 10158 3 FreeSans 520 0 0 0 VSSA
+port 33 nsew ground bidirectional
+flabel metal4 s 0 11240 254 12130 3 FreeSans 520 0 0 0 VSSIO_Q
+port 36 nsew ground bidirectional
+flabel metal4 s 0 4760 254 5690 3 FreeSans 520 0 0 0 VSSIO
+port 35 nsew ground bidirectional
+flabel metal4 s 0 2580 193 3270 3 FreeSans 520 0 0 0 VDDA
+port 30 nsew power bidirectional
+flabel metal4 s 0 10218 254 10814 3 FreeSans 520 0 0 0 AMUXBUS_A
+port 0 nsew signal bidirectional
+flabel metal4 s 0 10874 254 10940 3 FreeSans 520 0 0 0 VSSA
+port 33 nsew ground bidirectional
+flabel metal4 s 0 6940 254 7630 3 FreeSans 520 0 0 0 VSSA
+port 33 nsew ground bidirectional
+flabel metal4 s 0 7910 254 8840 3 FreeSans 520 0 0 0 VSSD
+port 34 nsew ground bidirectional
+flabel metal4 s 0 9266 254 9862 3 FreeSans 520 0 0 0 AMUXBUS_B
+port 1 nsew signal bidirectional
+flabel metal4 s 0 0 254 1090 3 FreeSans 520 0 0 0 VCCHIB
+port 29 nsew power bidirectional
+flabel metal4 s 15873 37925 15873 37925 3 FreeSans 520 180 0 0 VSSIO
+port 35 nsew ground bidirectional
+flabel metal5 s 15746 9140 16000 10940 3 FreeSans 520 180 0 0 VSSA
+port 33 nsew ground bidirectional
+flabel metal5 s 15807 2600 16000 3250 3 FreeSans 520 180 0 0 VDDA
+port 30 nsew power bidirectional
+flabel metal5 s 15746 7930 16000 8820 3 FreeSans 520 180 0 0 VSSD
+port 34 nsew ground bidirectional
+flabel metal5 s 15746 11260 16000 12110 3 FreeSans 520 180 0 0 VSSIO_Q
+port 36 nsew ground bidirectional
+flabel metal5 s 15746 4780 16000 5670 3 FreeSans 520 180 0 0 VSSIO
+port 35 nsew ground bidirectional
+flabel metal5 s 15746 5990 16000 6640 3 FreeSans 520 180 0 0 VSWITCH
+port 37 nsew power bidirectional
+flabel metal5 s 15746 6961 16000 7610 3 FreeSans 520 180 0 0 VSSA
+port 33 nsew ground bidirectional
+flabel metal5 s 15746 1390 16000 2280 3 FreeSans 520 180 0 0 VCCD
+port 28 nsew power bidirectional
+flabel metal5 s 15746 12430 16000 13280 3 FreeSans 520 180 0 0 VDDIO_Q
+port 32 nsew power bidirectional
+flabel metal5 s 15746 13600 16000 18590 3 FreeSans 520 180 0 0 VDDIO
+port 31 nsew power bidirectional
+flabel metal5 s 15746 20 16000 1070 3 FreeSans 520 180 0 0 VCCHIB
+port 29 nsew power bidirectional
+flabel metal5 s 15746 3570 16000 4460 3 FreeSans 520 180 0 0 VDDIO
+port 31 nsew power bidirectional
+flabel metal4 s 15746 7910 16000 8840 3 FreeSans 520 180 0 0 VSSD
+port 34 nsew ground bidirectional
+flabel metal4 s 15807 2580 16000 3270 3 FreeSans 520 180 0 0 VDDA
+port 30 nsew power bidirectional
+flabel metal4 s 15746 11240 16000 12130 3 FreeSans 520 180 0 0 VSSIO_Q
+port 36 nsew ground bidirectional
+flabel metal4 s 15746 4760 16000 5690 3 FreeSans 520 180 0 0 VSSIO
+port 35 nsew ground bidirectional
+flabel metal4 s 15746 5970 16000 6660 3 FreeSans 520 180 0 0 VSWITCH
+port 37 nsew power bidirectional
+flabel metal4 s 15746 9922 16000 10158 3 FreeSans 520 180 0 0 VSSA
+port 33 nsew ground bidirectional
+flabel metal4 s 15746 10874 16000 10940 3 FreeSans 520 180 0 0 VSSA
+port 33 nsew ground bidirectional
+flabel metal4 s 15746 3550 16000 4480 3 FreeSans 520 180 0 0 VDDIO
+port 31 nsew power bidirectional
+flabel metal4 s 15746 9140 16000 9206 3 FreeSans 520 180 0 0 VSSA
+port 33 nsew ground bidirectional
+flabel metal4 s 15746 6940 16000 7630 3 FreeSans 520 180 0 0 VSSA
+port 33 nsew ground bidirectional
+flabel metal4 s 15746 12410 16000 13300 3 FreeSans 520 180 0 0 VDDIO_Q
+port 32 nsew power bidirectional
+flabel metal4 s 15746 1370 16000 2300 3 FreeSans 520 180 0 0 VCCD
+port 28 nsew power bidirectional
+flabel metal4 s 15746 9266 16000 9862 3 FreeSans 520 180 0 0 AMUXBUS_B
+port 1 nsew signal bidirectional
+flabel metal4 s 15746 34750 16000 39593 3 FreeSans 520 180 0 0 VSSIO
+port 35 nsew ground bidirectional
+flabel metal4 s 15746 10218 16000 10814 3 FreeSans 520 180 0 0 AMUXBUS_A
+port 0 nse signal bidirectional
+flabel metal4 s 15746 13600 16000 18593 3 FreeSans 520 180 0 0 VDDIO
+port 31 nsew power bidirectional
+flabel metal4 s 15746 0 16000 1090 3 FreeSans 520 180 0 0 VCCHIB
+port 29 nsew power bidirectional
+flabel metal5 s 6423 24687 10731 28996 0 FreeSans 1600 0 0 0 PAD
+port 21 nsew signal bidirectional
+flabel metal3 s 80 -407 204 -244 0 FreeSans 640 0 0 0 IN_H
+port 17 nsew signal output
+flabel metal2 s 675 -407 721 -361 0 FreeSans 400 270 0 0 OE_N
+port 19 nsew signal input
+flabel metal2 s 1084 -407 1130 -328 0 FreeSans 400 270 0 0 IB_MODE_SEL
+port 15 nsew signal input
+flabel metal2 s 1226 -407 1278 -355 0 FreeSans 400 270 0 0 VTRIP_SEL
+port 38 nsew signal input
+flabel metal2 s 2551 -407 2603 -363 0 FreeSans 400 270 0 0 ENABLE_VDDA_H
+port 10 nsew signal input
+flabel metal2 s 3262 -407 3314 -306 0 FreeSans 400 270 0 0 ENABLE_VSWITCH_H
+port 12 nsew signal input
+flabel metal2 s 4471 -407 4523 -340 0 FreeSans 400 0 0 0 OUT
+port 20 nsew signal input
+flabel metal2 s 5320 -407 5372 -379 0 FreeSans 400 270 0 0 HLD_OVR
+port 14 nsew signal input
+flabel metal2 s 5698 -407 5750 -355 0 FreeSans 400 270 0 0 DM[2]
+port 5 nsew signal input
+flabel metal2 s 6150 -407 6202 -351 0 FreeSans 400 270 0 0 ANALOG_SEL
+port 4 nsew signal input
+flabel metal2 s 6363 -407 6415 -363 0 FreeSans 400 270 0 0 HLD_H_N
+port 13 nsew signal input
+flabel metal2 s 7092 -407 7144 -351 0 FreeSans 400 270 0 0 ENABLE_H
+port 8 nsew signal input
+flabel metal2 s 7678 -407 7730 -318 0 FreeSans 400 270 0 0 ENABLE_INP_H
+port 9 nsew signal input
+flabel metal2 s 9049 -407 9101 -355 0 FreeSans 400 270 0 0 INP_DIS
+port 18 nsew signal input
+flabel metal3 s 9173 -407 9239 -355 0 FreeSans 400 270 0 0 ANALOG_POL
+port 3 nsew signal input
+flabel metal2 s 9971 -407 10023 -355 0 FreeSans 400 270 0 0 DM[0]
+port 7 nsew signal input
+flabel metal1 s 12486 -407 12538 -351 0 FreeSans 400 270 0 0 ANALOG_EN
+port 2 nsew signal input
+flabel metal2 s 13367 -407 13419 -355 0 FreeSans 400 270 0 0 DM[1]
+port 6 nsew signal input
+flabel metal2 s 15522 -407 15574 -363 0 FreeSans 400 270 0 0 SLOW
+port 25 nsew signal input
+flabel metal3 s 15848 -407 15914 -244 0 FreeSans 400 270 0 0 IN
+port 16 nsew signal output
+flabel metal3 s 12564 -407 12778 -260 0 FreeSans 400 270 0 0 PAD_A_NOESD_H
+port 24 nsew signal bidirectional
+flabel metal2 s 13655 -407 13785 -363 0 FreeSans 400 270 0 0 PAD_A_ESD_1_H
+port 23 nsew signal bidirectional
+flabel metal2 s 15256 -407 15384 -363 0 FreeSans 400 270 0 0 PAD_A_ESD_0_H
+port 22 nsew signal bidirectional
+flabel metal2 s 15943 -407 15983 -215 0 FreeSans 400 270 0 0 TIE_LO_ESD
+port 27 nsew signal output
+flabel metal2 s 15741 -407 15781 -363 0 FreeSans 400 270 0 0 TIE_HI_ESD
+port 26 nsew signal output
+flabel metal3 s 15716 -407 15782 -254 0 FreeSans 400 270 0 0 ENABLE_VDDIO
+port 11 nsew signal input
+<< properties >>
+string LEFclass PAD INOUT
+string FIXED_BBOX 0 0 16000 39593
+<< end >>
diff --git a/sky130/custom/sky130_fd_io/mag/sky130_ef_io__gpiov2_pad_wrapped.gds b/sky130/custom/sky130_fd_io/mag/sky130_ef_io__gpiov2_pad_wrapped.gds
new file mode 100644
index 0000000..c695d84
--- /dev/null
+++ b/sky130/custom/sky130_fd_io/mag/sky130_ef_io__gpiov2_pad_wrapped.gds
Binary files differ
diff --git a/sky130/custom/sky130_fd_io/mag/sky130_ef_io__lvc_vccdy_overlay.mag b/sky130/custom/sky130_fd_io/mag/sky130_ef_io__lvc_vccdy_overlay.mag
new file mode 100644
index 0000000..a6bd7cf
--- /dev/null
+++ b/sky130/custom/sky130_fd_io/mag/sky130_ef_io__lvc_vccdy_overlay.mag
@@ -0,0 +1,61 @@
+magic
+tech sky130A
+magscale 1 2
+timestamp 1636577591
+<< metal1 >>
+rect 15240 14964 17187 15070
+rect 15240 9668 15318 14964
+rect 17081 9668 17187 14964
+rect 15240 5414 15313 9668
+rect 17115 5414 17187 9668
+rect 5101 -7 5685 83
+rect 4185 -163 11313 -7
+rect 15240 -163 17187 5414
+rect 4185 -1384 17187 -163
+rect 4185 -2184 16387 -1384
+tri 16387 -2184 17187 -1384 nw
+<< via1 >>
+rect 15318 9668 17081 14964
+rect 15313 5414 17115 9668
+<< metal2 >>
+rect 15240 39521 17187 39586
+rect 15240 34813 15294 39521
+rect 17136 34813 17187 39521
+rect 15240 14964 17187 34813
+rect 15240 9668 15318 14964
+rect 17081 9668 17187 14964
+rect 15240 5644 15313 9668
+rect 17115 5644 17187 9668
+rect 15240 4807 15278 5644
+rect 17134 4807 17187 5644
+rect 15240 4678 17187 4807
+<< via2 >>
+rect 15294 34813 17136 39521
+rect 15278 5414 15313 5644
+rect 15313 5414 17115 5644
+rect 17115 5414 17134 5644
+rect 15278 4807 17134 5414
+<< metal3 >>
+rect 15240 39521 17187 39586
+rect 15240 34813 15294 39521
+rect 17136 34813 17187 39521
+rect 15240 34743 17187 34813
+rect 15240 5644 17187 5683
+rect 15240 4807 15278 5644
+rect 17134 4807 17187 5644
+rect 15240 4753 17187 4807
+<< via3 >>
+rect 15294 34813 17136 39521
+rect 15278 4807 17134 5644
+<< metal4 >>
+rect 14957 39521 17187 39586
+rect 14957 34813 15294 39521
+rect 17136 34813 17187 39521
+rect 14957 34743 17187 34813
+rect 14987 5644 17187 5683
+rect 14987 4807 15278 5644
+rect 17134 4807 17187 5644
+rect 14987 4753 17187 4807
+<< properties >>
+string FIXED_BBOX 0 -7 15000 39593
+<< end >>
diff --git a/sky130/custom/sky130_fd_io/mag/sky130_ef_io__vccd_lvc_clamped2_pad.mag b/sky130/custom/sky130_fd_io/mag/sky130_ef_io__vccd_lvc_clamped2_pad.mag
index e2e5f73..626b097 100644
--- a/sky130/custom/sky130_fd_io/mag/sky130_ef_io__vccd_lvc_clamped2_pad.mag
+++ b/sky130/custom/sky130_fd_io/mag/sky130_ef_io__vccd_lvc_clamped2_pad.mag
@@ -1,7 +1,664 @@
 magic
 tech sky130A
 magscale 1 2
-timestamp 1617120349
+timestamp 1636578979
+<< error_s >>
+rect 2691 37377 2692 37401
+rect 2772 37377 2773 37401
+rect 3245 37377 3246 37401
+rect 3326 37377 3327 37401
+rect 3799 37377 3800 37401
+rect 3880 37377 3881 37401
+rect 4353 37377 4354 37401
+rect 4434 37377 4435 37401
+rect 4907 37377 4908 37401
+rect 4988 37377 4989 37401
+rect 5461 37377 5462 37401
+rect 5542 37377 5543 37401
+rect 6015 37377 6016 37401
+rect 6096 37377 6097 37401
+rect 6569 37377 6570 37401
+rect 6650 37377 6651 37401
+rect 7123 37377 7124 37401
+rect 7204 37377 7205 37401
+rect 7677 37377 7678 37401
+rect 7758 37377 7759 37401
+rect 8231 37377 8232 37401
+rect 8312 37377 8313 37401
+rect 8785 37377 8786 37401
+rect 8866 37377 8867 37401
+rect 9339 37377 9340 37401
+rect 9420 37377 9421 37401
+rect 9893 37377 9894 37401
+rect 9974 37377 9975 37401
+rect 10447 37377 10448 37401
+rect 10528 37377 10529 37401
+rect 11001 37377 11002 37401
+rect 11082 37377 11083 37401
+rect 11555 37377 11556 37401
+rect 11636 37377 11637 37401
+rect 12109 37377 12110 37401
+rect 12190 37377 12191 37401
+rect 12663 37377 12664 37401
+rect 12744 37377 12745 37401
+rect 13217 37377 13218 37401
+rect 13298 37377 13299 37401
+rect 2715 37353 2749 37365
+rect 3269 37353 3303 37365
+rect 3823 37353 3857 37365
+rect 4377 37353 4411 37365
+rect 4931 37353 4965 37365
+rect 5485 37353 5519 37365
+rect 6039 37353 6073 37365
+rect 6593 37353 6627 37365
+rect 7147 37353 7181 37365
+rect 7701 37353 7735 37365
+rect 8255 37353 8289 37365
+rect 8809 37353 8843 37365
+rect 9363 37353 9397 37365
+rect 9917 37353 9951 37365
+rect 10471 37353 10505 37365
+rect 11025 37353 11059 37365
+rect 11579 37353 11613 37365
+rect 12133 37353 12167 37365
+rect 12687 37353 12721 37365
+rect 13241 37353 13275 37365
+rect 3245 35377 3246 35401
+rect 3326 35377 3327 35401
+rect 3799 35377 3800 35401
+rect 3880 35377 3881 35401
+rect 4353 35377 4354 35401
+rect 4434 35377 4435 35401
+rect 4907 35377 4908 35401
+rect 4988 35377 4989 35401
+rect 5461 35377 5462 35401
+rect 5542 35377 5543 35401
+rect 6015 35377 6016 35401
+rect 6096 35377 6097 35401
+rect 6569 35377 6570 35401
+rect 6650 35377 6651 35401
+rect 7123 35377 7124 35401
+rect 7204 35377 7205 35401
+rect 7677 35377 7678 35401
+rect 7758 35377 7759 35401
+rect 8231 35377 8232 35401
+rect 8312 35377 8313 35401
+rect 8785 35377 8786 35401
+rect 8866 35377 8867 35401
+rect 9339 35377 9340 35401
+rect 9420 35377 9421 35401
+rect 9893 35377 9894 35401
+rect 9974 35377 9975 35401
+rect 10447 35377 10448 35401
+rect 10528 35377 10529 35401
+rect 11001 35377 11002 35401
+rect 11082 35377 11083 35401
+rect 11555 35377 11556 35401
+rect 11636 35377 11637 35401
+rect 12109 35377 12110 35401
+rect 12190 35377 12191 35401
+rect 12663 35377 12664 35401
+rect 12744 35377 12745 35401
+rect 13217 35377 13218 35401
+rect 13298 35377 13299 35401
+rect 3269 35353 3303 35365
+rect 3823 35353 3857 35365
+rect 4377 35353 4411 35365
+rect 4931 35353 4965 35365
+rect 5485 35353 5519 35365
+rect 6039 35353 6073 35365
+rect 6593 35353 6627 35365
+rect 7147 35353 7181 35365
+rect 7701 35353 7735 35365
+rect 8255 35353 8289 35365
+rect 8809 35353 8843 35365
+rect 9363 35353 9397 35365
+rect 9917 35353 9951 35365
+rect 10471 35353 10505 35365
+rect 11025 35353 11059 35365
+rect 11579 35353 11613 35365
+rect 12133 35353 12167 35365
+rect 12687 35353 12721 35365
+rect 13241 35353 13275 35365
+rect 2269 33953 2282 34189
+rect 12718 34173 12742 34189
+rect 12742 33953 12745 34173
+rect 1950 33865 2183 33881
+rect 1947 33662 1950 33865
+rect 12871 33811 13104 33827
+rect 13104 33591 13107 33811
+rect 1630 33545 1747 33561
+rect 1627 33401 1630 33545
+rect 13191 33491 13424 33507
+rect 3185 33377 3186 33401
+rect 3266 33377 3267 33401
+rect 4021 33377 4022 33401
+rect 4102 33377 4103 33401
+rect 4857 33377 4858 33401
+rect 4938 33377 4939 33401
+rect 5693 33377 5694 33401
+rect 5774 33377 5775 33401
+rect 6529 33377 6530 33401
+rect 6610 33377 6611 33401
+rect 7365 33377 7366 33401
+rect 7446 33377 7447 33401
+rect 8201 33377 8202 33401
+rect 8282 33377 8283 33401
+rect 9037 33377 9038 33401
+rect 9118 33377 9119 33401
+rect 9873 33377 9874 33401
+rect 9954 33377 9955 33401
+rect 10709 33377 10710 33401
+rect 10790 33377 10791 33401
+rect 11545 33377 11546 33401
+rect 11626 33377 11627 33401
+rect 12381 33377 12382 33401
+rect 12462 33377 12463 33401
+rect 13217 33377 13218 33401
+rect 13298 33377 13299 33401
+rect 3209 33353 3243 33365
+rect 4045 33353 4079 33365
+rect 4881 33353 4915 33365
+rect 5717 33353 5751 33365
+rect 6553 33353 6587 33365
+rect 7389 33353 7423 33365
+rect 8225 33353 8259 33365
+rect 9061 33353 9095 33365
+rect 9897 33353 9931 33365
+rect 10733 33353 10767 33365
+rect 11569 33353 11603 33365
+rect 12405 33353 12439 33365
+rect 13241 33353 13275 33365
+rect 13424 33271 13427 33491
+rect 1310 33225 1486 33241
+rect 1307 33130 1310 33225
+rect 13511 33171 13744 33187
+rect 13744 32951 13747 33171
+rect 987 32902 1215 32918
+rect 984 32891 987 32902
+rect 3185 31377 3186 31401
+rect 3266 31377 3267 31401
+rect 4021 31377 4022 31401
+rect 4102 31377 4103 31401
+rect 4857 31377 4858 31401
+rect 4938 31377 4939 31401
+rect 5693 31377 5694 31401
+rect 5774 31377 5775 31401
+rect 6529 31377 6530 31401
+rect 6610 31377 6611 31401
+rect 7365 31377 7366 31401
+rect 7446 31377 7447 31401
+rect 8201 31377 8202 31401
+rect 8282 31377 8283 31401
+rect 9037 31377 9038 31401
+rect 9118 31377 9119 31401
+rect 9873 31377 9874 31401
+rect 9954 31377 9955 31401
+rect 10709 31377 10710 31401
+rect 10790 31377 10791 31401
+rect 11545 31377 11546 31401
+rect 11626 31377 11627 31401
+rect 12381 31377 12382 31401
+rect 12462 31377 12463 31401
+rect 13217 31377 13218 31401
+rect 13298 31377 13299 31401
+rect 3209 31353 3243 31365
+rect 4045 31353 4079 31365
+rect 4881 31353 4915 31365
+rect 5717 31353 5751 31365
+rect 6553 31353 6587 31365
+rect 7389 31353 7423 31365
+rect 8225 31353 8259 31365
+rect 9061 31353 9095 31365
+rect 9897 31353 9931 31365
+rect 10733 31353 10767 31365
+rect 11569 31353 11603 31365
+rect 12405 31353 12439 31365
+rect 13241 31353 13275 31365
+rect 3185 29377 3186 29401
+rect 3266 29377 3267 29401
+rect 4021 29377 4022 29401
+rect 4102 29377 4103 29401
+rect 4857 29377 4858 29401
+rect 4938 29377 4939 29401
+rect 5693 29377 5694 29401
+rect 5774 29377 5775 29401
+rect 6529 29377 6530 29401
+rect 6610 29377 6611 29401
+rect 7365 29377 7366 29401
+rect 7446 29377 7447 29401
+rect 8201 29377 8202 29401
+rect 8282 29377 8283 29401
+rect 9037 29377 9038 29401
+rect 9118 29377 9119 29401
+rect 9873 29377 9874 29401
+rect 9954 29377 9955 29401
+rect 10709 29377 10710 29401
+rect 10790 29377 10791 29401
+rect 11545 29377 11546 29401
+rect 11626 29377 11627 29401
+rect 12381 29377 12382 29401
+rect 12462 29377 12463 29401
+rect 13217 29377 13218 29401
+rect 13298 29377 13299 29401
+rect 3209 29353 3243 29365
+rect 4045 29353 4079 29365
+rect 4881 29353 4915 29365
+rect 5717 29353 5751 29365
+rect 6553 29353 6587 29365
+rect 7389 29353 7423 29365
+rect 8225 29353 8259 29365
+rect 9061 29353 9095 29365
+rect 9897 29353 9931 29365
+rect 10733 29353 10767 29365
+rect 11569 29353 11603 29365
+rect 12405 29353 12439 29365
+rect 13241 29353 13275 29365
+rect 4857 27377 4858 27401
+rect 4938 27377 4939 27401
+rect 5693 27377 5694 27401
+rect 5774 27377 5775 27401
+rect 6529 27377 6530 27401
+rect 6610 27377 6611 27401
+rect 7365 27377 7366 27401
+rect 7446 27377 7447 27401
+rect 8201 27377 8202 27401
+rect 8282 27377 8283 27401
+rect 9037 27377 9038 27401
+rect 9118 27377 9119 27401
+rect 9873 27377 9874 27401
+rect 9954 27377 9955 27401
+rect 10709 27377 10710 27401
+rect 10790 27377 10791 27401
+rect 11545 27377 11546 27401
+rect 11626 27377 11627 27401
+rect 12381 27377 12382 27401
+rect 12462 27377 12463 27401
+rect 13217 27377 13218 27401
+rect 13298 27377 13299 27401
+rect 4881 27353 4915 27365
+rect 5717 27353 5751 27365
+rect 6553 27353 6587 27365
+rect 7389 27353 7423 27365
+rect 8225 27353 8259 27365
+rect 9061 27353 9095 27365
+rect 9897 27353 9931 27365
+rect 10733 27353 10767 27365
+rect 11569 27353 11603 27365
+rect 12405 27353 12439 27365
+rect 13241 27353 13275 27365
+rect 4857 25756 4858 25780
+rect 4938 25756 4939 25780
+rect 5693 25756 5694 25780
+rect 5774 25756 5775 25780
+rect 6529 25756 6530 25780
+rect 6610 25756 6611 25780
+rect 7365 25756 7366 25780
+rect 7446 25756 7447 25780
+rect 8201 25756 8202 25780
+rect 8282 25756 8283 25780
+rect 9037 25756 9038 25780
+rect 9118 25756 9119 25780
+rect 9873 25756 9874 25780
+rect 9954 25756 9955 25780
+rect 10709 25756 10710 25780
+rect 10790 25756 10791 25780
+rect 11545 25756 11546 25780
+rect 11626 25756 11627 25780
+rect 12381 25756 12382 25780
+rect 12462 25756 12463 25780
+rect 13217 25756 13218 25780
+rect 13298 25756 13299 25780
+rect 4881 25732 4915 25744
+rect 5717 25732 5751 25744
+rect 6553 25732 6587 25744
+rect 7389 25732 7423 25744
+rect 8225 25732 8259 25744
+rect 9061 25732 9095 25744
+rect 9897 25732 9931 25744
+rect 10733 25732 10767 25744
+rect 11569 25732 11603 25744
+rect 12405 25732 12439 25744
+rect 13241 25732 13275 25744
+rect 14004 20435 14016 20455
+rect 13780 20428 14004 20435
+rect 1253 20175 1256 20395
+rect 1256 20159 1489 20175
+rect 13690 20121 13693 20341
+rect 13457 20105 13690 20121
+rect 1573 19849 1582 20075
+rect 1582 19839 1809 19849
+rect 13360 19791 13373 20021
+rect 13137 19785 13360 19791
+rect 1893 19535 1896 19755
+rect 1896 19519 2129 19535
+rect 13050 19481 13053 19701
+rect 12817 19465 13050 19481
+rect 2255 19173 2258 19393
+rect 2258 19157 2282 19173
+rect 12718 19157 12731 19393
+rect 2691 13377 2692 13401
+rect 2772 13377 2773 13401
+rect 3245 13377 3246 13401
+rect 3326 13377 3327 13401
+rect 3799 13377 3800 13401
+rect 3880 13377 3881 13401
+rect 4353 13377 4354 13401
+rect 4434 13377 4435 13401
+rect 4907 13377 4908 13401
+rect 4988 13377 4989 13401
+rect 5461 13377 5462 13401
+rect 5542 13377 5543 13401
+rect 6015 13377 6016 13401
+rect 6096 13377 6097 13401
+rect 6569 13377 6570 13401
+rect 6650 13377 6651 13401
+rect 7123 13377 7124 13401
+rect 7204 13377 7205 13401
+rect 7677 13377 7678 13401
+rect 7758 13377 7759 13401
+rect 8231 13377 8232 13401
+rect 8312 13377 8313 13401
+rect 8785 13377 8786 13401
+rect 8866 13377 8867 13401
+rect 9339 13377 9340 13401
+rect 9420 13377 9421 13401
+rect 9893 13377 9894 13401
+rect 9974 13377 9975 13401
+rect 10447 13377 10448 13401
+rect 10528 13377 10529 13401
+rect 11001 13377 11002 13401
+rect 11082 13377 11083 13401
+rect 11555 13377 11556 13401
+rect 11636 13377 11637 13401
+rect 12109 13377 12110 13401
+rect 12190 13377 12191 13401
+rect 12663 13377 12664 13401
+rect 12744 13377 12745 13401
+rect 13217 13377 13218 13401
+rect 13298 13377 13299 13401
+rect 2715 13353 2749 13365
+rect 3269 13353 3303 13365
+rect 3823 13353 3857 13365
+rect 4377 13353 4411 13365
+rect 4931 13353 4965 13365
+rect 5485 13353 5519 13365
+rect 6039 13353 6073 13365
+rect 6593 13353 6627 13365
+rect 7147 13353 7181 13365
+rect 7701 13353 7735 13365
+rect 8255 13353 8289 13365
+rect 8809 13353 8843 13365
+rect 9363 13353 9397 13365
+rect 9917 13353 9951 13365
+rect 10471 13353 10505 13365
+rect 11025 13353 11059 13365
+rect 11579 13353 11613 13365
+rect 12133 13353 12167 13365
+rect 12687 13353 12721 13365
+rect 13241 13353 13275 13365
+rect 2691 11377 2692 11401
+rect 2772 11377 2773 11401
+rect 3245 11377 3246 11401
+rect 3326 11377 3327 11401
+rect 3799 11377 3800 11401
+rect 3880 11377 3881 11401
+rect 4353 11377 4354 11401
+rect 4434 11377 4435 11401
+rect 4907 11377 4908 11401
+rect 4988 11377 4989 11401
+rect 5461 11377 5462 11401
+rect 5542 11377 5543 11401
+rect 6015 11377 6016 11401
+rect 6096 11377 6097 11401
+rect 6569 11377 6570 11401
+rect 6650 11377 6651 11401
+rect 7123 11377 7124 11401
+rect 7204 11377 7205 11401
+rect 7677 11377 7678 11401
+rect 7758 11377 7759 11401
+rect 8231 11377 8232 11401
+rect 8312 11377 8313 11401
+rect 8785 11377 8786 11401
+rect 8866 11377 8867 11401
+rect 9339 11377 9340 11401
+rect 9420 11377 9421 11401
+rect 9893 11377 9894 11401
+rect 9974 11377 9975 11401
+rect 10447 11377 10448 11401
+rect 10528 11377 10529 11401
+rect 11001 11377 11002 11401
+rect 11082 11377 11083 11401
+rect 11555 11377 11556 11401
+rect 11636 11377 11637 11401
+rect 12109 11377 12110 11401
+rect 12190 11377 12191 11401
+rect 12663 11377 12664 11401
+rect 12744 11377 12745 11401
+rect 13217 11377 13218 11401
+rect 13298 11377 13299 11401
+rect 2715 11353 2749 11365
+rect 3269 11353 3303 11365
+rect 3823 11353 3857 11365
+rect 4377 11353 4411 11365
+rect 4931 11353 4965 11365
+rect 5485 11353 5519 11365
+rect 6039 11353 6073 11365
+rect 6593 11353 6627 11365
+rect 7147 11353 7181 11365
+rect 7701 11353 7735 11365
+rect 8255 11353 8289 11365
+rect 8809 11353 8843 11365
+rect 9363 11353 9397 11365
+rect 9917 11353 9951 11365
+rect 10471 11353 10505 11365
+rect 11025 11353 11059 11365
+rect 11579 11353 11613 11365
+rect 12133 11353 12167 11365
+rect 12687 11353 12721 11365
+rect 13241 11353 13275 11365
+rect 2691 9377 2692 9401
+rect 2772 9377 2773 9401
+rect 3245 9377 3246 9401
+rect 3326 9377 3327 9401
+rect 3799 9377 3800 9401
+rect 3880 9377 3881 9401
+rect 4353 9377 4354 9401
+rect 4434 9377 4435 9401
+rect 4907 9377 4908 9401
+rect 4988 9377 4989 9401
+rect 5461 9377 5462 9401
+rect 5542 9377 5543 9401
+rect 6015 9377 6016 9401
+rect 6096 9377 6097 9401
+rect 6569 9377 6570 9401
+rect 6650 9377 6651 9401
+rect 7123 9377 7124 9401
+rect 7204 9377 7205 9401
+rect 7677 9377 7678 9401
+rect 7758 9377 7759 9401
+rect 8231 9377 8232 9401
+rect 8312 9377 8313 9401
+rect 8785 9377 8786 9401
+rect 8866 9377 8867 9401
+rect 9339 9377 9340 9401
+rect 9420 9377 9421 9401
+rect 9893 9377 9894 9401
+rect 9974 9377 9975 9401
+rect 10447 9377 10448 9401
+rect 10528 9377 10529 9401
+rect 11001 9377 11002 9401
+rect 11082 9377 11083 9401
+rect 11555 9377 11556 9401
+rect 11636 9377 11637 9401
+rect 12109 9377 12110 9401
+rect 12190 9377 12191 9401
+rect 12663 9377 12664 9401
+rect 12744 9377 12745 9401
+rect 13217 9377 13218 9401
+rect 13298 9377 13299 9401
+rect 2715 9353 2749 9365
+rect 3269 9353 3303 9365
+rect 3823 9353 3857 9365
+rect 4377 9353 4411 9365
+rect 4931 9353 4965 9365
+rect 5485 9353 5519 9365
+rect 6039 9353 6073 9365
+rect 6593 9353 6627 9365
+rect 7147 9353 7181 9365
+rect 7701 9353 7735 9365
+rect 8255 9353 8289 9365
+rect 8809 9353 8843 9365
+rect 9363 9353 9397 9365
+rect 9917 9353 9951 9365
+rect 10471 9353 10505 9365
+rect 11025 9353 11059 9365
+rect 11579 9353 11613 9365
+rect 12133 9353 12167 9365
+rect 12687 9353 12721 9365
+rect 13241 9353 13275 9365
+rect 2691 7377 2692 7401
+rect 2772 7377 2773 7401
+rect 3245 7377 3246 7401
+rect 3326 7377 3327 7401
+rect 3799 7377 3800 7401
+rect 3880 7377 3881 7401
+rect 4353 7377 4354 7401
+rect 4434 7377 4435 7401
+rect 4907 7377 4908 7401
+rect 4988 7377 4989 7401
+rect 5461 7377 5462 7401
+rect 5542 7377 5543 7401
+rect 6015 7377 6016 7401
+rect 6096 7377 6097 7401
+rect 6569 7377 6570 7401
+rect 6650 7377 6651 7401
+rect 7123 7377 7124 7401
+rect 7204 7377 7205 7401
+rect 7677 7377 7678 7401
+rect 7758 7377 7759 7401
+rect 8231 7377 8232 7401
+rect 8312 7377 8313 7401
+rect 8785 7377 8786 7401
+rect 8866 7377 8867 7401
+rect 9339 7377 9340 7401
+rect 9420 7377 9421 7401
+rect 9893 7377 9894 7401
+rect 9974 7377 9975 7401
+rect 10447 7377 10448 7401
+rect 10528 7377 10529 7401
+rect 11001 7377 11002 7401
+rect 11082 7377 11083 7401
+rect 11555 7377 11556 7401
+rect 11636 7377 11637 7401
+rect 12109 7377 12110 7401
+rect 12190 7377 12191 7401
+rect 12663 7377 12664 7401
+rect 12744 7377 12745 7401
+rect 13217 7377 13218 7401
+rect 13298 7377 13299 7401
+rect 2715 7353 2749 7365
+rect 3269 7353 3303 7365
+rect 3823 7353 3857 7365
+rect 4377 7353 4411 7365
+rect 4931 7353 4965 7365
+rect 5485 7353 5519 7365
+rect 6039 7353 6073 7365
+rect 6593 7353 6627 7365
+rect 7147 7353 7181 7365
+rect 7701 7353 7735 7365
+rect 8255 7353 8289 7365
+rect 8809 7353 8843 7365
+rect 9363 7353 9397 7365
+rect 9917 7353 9951 7365
+rect 10471 7353 10505 7365
+rect 11025 7353 11059 7365
+rect 11579 7353 11613 7365
+rect 12133 7353 12167 7365
+rect 12687 7353 12721 7365
+rect 13241 7353 13275 7365
+rect 2691 5377 2692 5401
+rect 2772 5377 2773 5401
+rect 3245 5377 3246 5401
+rect 3326 5377 3327 5401
+rect 3799 5377 3800 5401
+rect 3880 5377 3881 5401
+rect 4353 5377 4354 5401
+rect 4434 5377 4435 5401
+rect 4907 5377 4908 5401
+rect 4988 5377 4989 5401
+rect 5461 5377 5462 5401
+rect 5542 5377 5543 5401
+rect 6015 5377 6016 5401
+rect 6096 5377 6097 5401
+rect 6569 5377 6570 5401
+rect 6650 5377 6651 5401
+rect 7123 5377 7124 5401
+rect 7204 5377 7205 5401
+rect 7677 5377 7678 5401
+rect 7758 5377 7759 5401
+rect 8231 5377 8232 5401
+rect 8312 5377 8313 5401
+rect 8785 5377 8786 5401
+rect 8866 5377 8867 5401
+rect 9339 5377 9340 5401
+rect 9420 5377 9421 5401
+rect 9893 5377 9894 5401
+rect 9974 5377 9975 5401
+rect 10447 5377 10448 5401
+rect 10528 5377 10529 5401
+rect 11001 5377 11002 5401
+rect 11082 5377 11083 5401
+rect 11555 5377 11556 5401
+rect 11636 5377 11637 5401
+rect 12109 5377 12110 5401
+rect 12190 5377 12191 5401
+rect 12663 5377 12664 5401
+rect 12744 5377 12745 5401
+rect 13217 5377 13218 5401
+rect 13298 5377 13299 5401
+rect 2715 5353 2749 5365
+rect 3269 5353 3303 5365
+rect 3823 5353 3857 5365
+rect 4377 5353 4411 5365
+rect 4931 5353 4965 5365
+rect 5485 5353 5519 5365
+rect 6039 5353 6073 5365
+rect 6593 5353 6627 5365
+rect 7147 5353 7181 5365
+rect 7701 5353 7735 5365
+rect 8255 5353 8289 5365
+rect 8809 5353 8843 5365
+rect 9363 5353 9397 5365
+rect 9917 5353 9951 5365
+rect 10471 5353 10505 5365
+rect 11025 5353 11059 5365
+rect 11579 5353 11613 5365
+rect 12133 5353 12167 5365
+rect 12687 5353 12721 5365
+rect 13241 5353 13275 5365
+rect 7279 3663 7365 3699
+rect 3499 443 3851 3495
+rect 3911 443 4263 3495
+rect 4323 443 4675 3495
+rect 4735 443 5087 3495
+rect 5147 443 5499 3495
+rect 5559 443 5911 3495
+rect 5971 443 6323 3495
+rect 6383 443 6735 3495
+rect 6795 443 7147 3495
+rect 7279 275 7315 3663
+rect 7329 275 7365 3663
+rect 7497 443 7849 3495
+rect 7909 443 8261 3495
+rect 8321 443 8673 3495
+rect 8733 443 9085 3495
+rect 9145 443 9497 3495
+rect 9557 443 9909 3495
+rect 9969 443 10321 3495
+rect 10381 443 10733 3495
+rect 10793 443 11145 3495
+rect 7279 239 7365 275
 << metal1 >>
 rect 6867 95 7067 195
 rect 5242 -7 5540 69
@@ -77,18 +734,18 @@
 rect 14746 1390 15000 2280
 rect 0 20 254 1070
 rect 14746 20 15000 1070
+use sky130_fd_io__overlay_vccd_lvc  sky130_fd_io__overlay_vccd_lvc_0 $PDKPATH/libs.ref/sky130_fd_io/mag
+timestamp 1636578624
+transform 1 0 0 0 1 -7
+box 0 7 15000 39600
+use sky130_fd_io__top_power_lvc_wpad  sky130_fd_io__top_power_lvc_wpad_0 $PDKPATH/libs.ref/sky130_fd_io/mag
+timestamp 1636578624
+transform 1 0 0 0 1 -7
+box 0 0 15000 39600
 use sky130_ef_io__lvc_vccd_overlay  sky130_ef_io__lvc_vccd_overlay_0
 timestamp 1609281021
 transform 1 0 0 0 1 0
 box -2195 -2184 17228 39586
-use sky130_fd_io__overlay_vccd_lvc  sky130_fd_io__overlay_vccd_lvc_0 $PDKPATH/libs.ref/sky130_fd_io/mag
-timestamp 1617033437
-transform 1 0 0 0 1 -7
-box 0 7 15000 39600
-use sky130_fd_io__top_power_lvc_wpad  sky130_fd_io__top_power_lvc_wpad_0 $PDKPATH/libs.ref/sky130_fd_io/mag
-timestamp 1617033437
-transform 1 0 0 0 1 -7
-box 0 0 15000 39600
 << labels >>
 flabel metal4 s 14873 37925 14873 37925 3 FreeSans 520 180 0 0 VSSIO
 port 16 nsew ground bidirectional
diff --git a/sky130/custom/sky130_fd_io/mag/sky130_ef_io__vssd_hvc_pad.mag b/sky130/custom/sky130_fd_io/mag/sky130_ef_io__vssd_hvc_pad.mag
index d3dccc3..27d1fd4 100644
--- a/sky130/custom/sky130_fd_io/mag/sky130_ef_io__vssd_hvc_pad.mag
+++ b/sky130/custom/sky130_fd_io/mag/sky130_ef_io__vssd_hvc_pad.mag
@@ -1,7 +1,42 @@
 magic
 tech sky130A
 magscale 1 2
-timestamp 1617120349
+timestamp 1636578979
+<< error_s >>
+rect 2269 33953 2282 34189
+rect 12718 34173 12742 34189
+rect 12742 33953 12745 34173
+rect 1950 33865 2183 33881
+rect 1947 33662 1950 33865
+rect 12871 33811 13104 33827
+rect 13104 33591 13107 33811
+rect 1630 33545 1747 33561
+rect 1627 33325 1630 33545
+rect 13191 33491 13424 33507
+rect 13424 33271 13427 33491
+rect 1310 33225 1543 33241
+rect 1307 33130 1310 33225
+rect 13511 33171 13744 33187
+rect 13744 32951 13747 33171
+rect 987 32902 1215 32918
+rect 984 32891 987 32902
+rect 14004 20435 14016 20455
+rect 13780 20428 14004 20435
+rect 1253 20175 1256 20395
+rect 1256 20159 1489 20175
+rect 13690 20121 13693 20341
+rect 13457 20105 13690 20121
+rect 1573 19849 1582 20075
+rect 1582 19839 1809 19849
+rect 13360 19791 13373 20021
+rect 13137 19785 13360 19791
+rect 1893 19535 1896 19755
+rect 1896 19519 2129 19535
+rect 13050 19481 13053 19701
+rect 12817 19465 13050 19481
+rect 2255 19173 2258 19393
+rect 2258 19157 2282 19173
+rect 12718 19157 12731 19393
 << metal2 >>
 rect 99 -407 4879 -259
 rect 5179 -407 5579 -182
@@ -75,11 +110,11 @@
 rect 0 20 254 1070
 rect 14746 20 15000 1070
 use sky130_fd_io__overlay_vssd_hvc  sky130_fd_io__overlay_vssd_hvc_0 $PDKPATH/libs.ref/sky130_fd_io/mag
-timestamp 1617033437
+timestamp 1636578624
 transform 1 0 0 0 1 -407
 box 0 407 15000 40000
 use sky130_fd_io__top_ground_hvc_wpad  sky130_fd_io__top_ground_hvc_wpad_1 $PDKPATH/libs.ref/sky130_fd_io/mag
-timestamp 1617033437
+timestamp 1636578624
 transform 1 0 0 0 1 -407
 box 0 0 15000 40000
 << labels >>
diff --git a/sky130/custom/sky130_fd_io/mag/sky130_ef_io__vssd_lvc_clamped2_pad.mag b/sky130/custom/sky130_fd_io/mag/sky130_ef_io__vssd_lvc_clamped2_pad.mag
index e410ac9..9c40f22 100644
--- a/sky130/custom/sky130_fd_io/mag/sky130_ef_io__vssd_lvc_clamped2_pad.mag
+++ b/sky130/custom/sky130_fd_io/mag/sky130_ef_io__vssd_lvc_clamped2_pad.mag
@@ -77,14 +77,6 @@
 rect 14746 1390 15000 2280
 rect 0 20 254 1070
 rect 14746 20 15000 1070
-use sky130_ef_io__lvc_vccd_overlay  sky130_ef_io__lvc_vccd_overlay_0
-timestamp 1609281021
-transform 1 0 0 0 1 0
-box -2195 -2184 17228 39586
-use sky130_fd_io__overlay_vssd_lvc  sky130_fd_io__overlay_vssd_lvc_0 $PDKPATH/libs.ref/sky130_fd_io/mag
-timestamp 1617033437
-transform 1 0 0 0 1 -7
-box 0 7 15000 39600
 use sky130_fd_io__top_ground_lvc_wpad  sky130_fd_io__top_ground_lvc_wpad_1 $PDKPATH/libs.ref/sky130_fd_io/mag
 timestamp 1617033437
 transform 1 0 0 0 1 -7
diff --git a/sky130/custom/sky130_fd_io/mag/topcells.txt b/sky130/custom/sky130_fd_io/mag/topcells.txt
new file mode 100644
index 0000000..2292df9
--- /dev/null
+++ b/sky130/custom/sky130_fd_io/mag/topcells.txt
@@ -0,0 +1 @@
+"sky130_ef_io__com_bus_slice_10um sky130_ef_io__com_bus_slice_1um sky130_ef_io__com_bus_slice_20um sky130_ef_io__com_bus_slice_5um sky130_ef_io__corner_pad sky130_ef_io__gpiov2_pad sky130_ef_io__top_power_hvc sky130_ef_io__vccd_hvc_pad sky130_ef_io__vccd_lvc_clamped2_pad sky130_ef_io__vccd_lvc_clamped3_pad sky130_ef_io__vccd_lvc_clamped_pad sky130_ef_io__vccd_lvc_pad sky130_ef_io__vdda_hvc_clamped_pad sky130_ef_io__vdda_hvc_pad sky130_ef_io__vdda_lvc_pad sky130_ef_io__vddio_hvc_clamped_pad sky130_ef_io__vddio_hvc_pad sky130_ef_io__vddio_lvc_pad sky130_ef_io__vssa_hvc_clamped_pad sky130_ef_io__vssa_hvc_pad sky130_ef_io__vssa_lvc_pad sky130_ef_io__vssd_hvc_pad sky130_ef_io__vssd_lvc_clamped2_pad sky130_ef_io__vssd_lvc_clamped3_pad sky130_ef_io__vssd_lvc_clamped_pad sky130_ef_io__vssd_lvc_pad sky130_ef_io__vssio_hvc_clamped_pad sky130_ef_io__vssio_hvc_pad sky130_ef_io__vssio_lvc_pad sky130_fd_io__top_gpio_ovtv2 sky130_fd_io__top_xres4v2"
diff --git a/sky130/magic/sky130.tech b/sky130/magic/sky130.tech
index a85d1f3..ad18c6f 100644
--- a/sky130/magic/sky130.tech
+++ b/sky130/magic/sky130.tech
@@ -832,11 +832,11 @@
 
  layer WELLTXT
  	labels allnwell noport
-	calma 64 5
+	calma 64 16
 
  layer WELLPIN
  	labels allnwell port
-	calma 64 16
+	calma 64 5
 
 #----------------------------------------------------------------
 # SUB (text/port only)
@@ -844,11 +844,11 @@
 
  layer SUBTXT
  	labels pwell noport
-	calma 64 59
+	calma 122 16
 
  layer SUBPIN
  	labels pwell port
-	calma 122 16
+	calma 64 59
 
 #----------------------------------------------------------------
 # DIFF
@@ -859,23 +859,23 @@
 
  layer DIFFTXT
  	labels allnactivenontap,allpactivenontap noport
-	calma	65 6
+	calma	65 16
 
  layer DIFFPIN
  	labels allnactivenontap,allpactivenontap port
-	calma	65 16
+	calma	65 6
 
 #----------------------------------------------------------------
 # TAP
 #----------------------------------------------------------------
 
  layer TAP 	allnactivetap,allpactivetap
- 	labels 	allnactivetap,allpactivetap port
- 	calma 	65 44
-
- layer TAPTXT
  	labels 	allnactivetap,allpactivetap noport
-	calma	65 5
+	calma	65 44
+
+ layer TAPPIN
+ 	labels 	allnactivetap,allpactivetap port
+ 	calma 	65 5
 
 #----------------------------------------------------------------
 # FOM
@@ -1095,11 +1095,11 @@
 
  layer POLYTXT
 	labels  allpoly noport
-	calma	66 5
+	calma	66 16
 
  layer POLYPIN
 	labels  allpoly port
-	calma	66 16
+	calma	66 5
 
  layer POLYFILL	polyfill
 	labels 	polyfill
@@ -1221,11 +1221,11 @@
 
  layer LITXT
  	labels *locali,coreli noport
-	calma 67 5
+	calma 67 16
 
  layer LIPIN
  	labels *locali,coreli port
-	calma 67 16
+	calma 67 5
 
  layer LIRES rli
 	labels rli
@@ -1250,11 +1250,11 @@
 
  layer MET1TXT
 	labels	allm1 noport
-	calma 	68 5
+	calma 	68 16
 
  layer MET1PIN
 	labels	allm1 port
-	calma 	68 16
+	calma 	68 5
 
  layer MET1RES rm1
 	labels rm1
@@ -1290,11 +1290,11 @@
 
  layer MET2TXT
 	labels	allm2 noport
-	calma	69 5
+	calma	69 16
 
  layer MET2PIN
 	labels	allm2 port
-	calma	69 16
+	calma	69 5
 
  layer MET2RES rm2
 	labels rm2
@@ -1319,11 +1319,11 @@
 
  layer MET3TXT
  	labels 	allm3 noport
-	calma	70 5
+	calma	70 16 
 
  layer MET3PIN
 	labels	allm3 port
-	calma	70 16 
+	calma	70 5
 
  layer MET3RES rm3
 	labels rm3
@@ -1352,11 +1352,11 @@
 
  layer MET4TXT
 	labels	allm4 noport
-	calma	71 5
+	calma	71 16
 
  layer MET4PIN
 	labels	allm4 port
-	calma	71 16
+	calma	71 5
 
  layer MET4RES rm4
 	labels rm4
@@ -1384,11 +1384,11 @@
 
  layer MET5TXT
 	labels	allm5 noport
-	calma	72 5
+	calma	72 16
 
  layer MET5PIN
 	labels	allm5 port
-	calma	72 16
+	calma	72 5
 
  layer MET5RES rm5
 	labels rm5
@@ -1409,11 +1409,11 @@
 
   layer RDLTXT
 	labels	*metrdl noport
-	calma	74 5
+	calma	74 16
 
   layer RDLPIN
 	labels  *metrdl port
-	calma	74 16
+	calma	74 5
 
   layer PI1	*metrdl
 	and	padl,glass
@@ -2414,21 +2414,13 @@
  layer pnp NWELL,WELLTXT,WELLPIN
  and PNPID
  labels NWELL
- variants (vendor)
- labels WELLTXT port
- variants ()
  labels WELLTXT text
- variants *
  labels WELLPIN port
 
  layer nwell NWELL,WELLTXT,WELLPIN
  and-not PNPID
  labels NWELL
- variants (vendor)
- labels WELLTXT port
- variants ()
  labels WELLTXT text
- variants *
  labels WELLPIN port
 
  templayer nwellarea NWELL
@@ -2453,11 +2445,7 @@
  or SUBTXT,SUBPIN
  grow 420
  shrink 420
- variants (vendor)
- labels SUBTXT port
- variants ()
  labels SUBTXT text
- variants *
  labels SUBPIN port
 
  layer dnwell DNWELL
@@ -2488,11 +2476,7 @@
  and-not CORELI
  copyup ndifcheck
  labels DIFF
- variants (vendor)
- labels DIFFTXT port
- variants ()
  labels DIFFTXT text
- variants *
  labels DIFFPIN port
 
  layer ndiff ndiffarea
@@ -2512,11 +2496,6 @@
  copyup ndifcheck
  labels DIFF
  labels DIFFTXT text
- variants (vendor)
- labels DIFFTXT port
- variants ()
- labels DIFFTXT text
- variants *
  labels DIFFPIN port
 
  layer mvndiff mvndiffarea
@@ -2565,11 +2544,7 @@
  and PSDM
  copyup pdifcheck
  labels DIFF 
- variants (vendor)
- labels DIFFTXT port
- variants ()
  labels DIFFTXT text
- variants *
  labels DIFFPIN port
 
  layer pdiff pdiffarea
@@ -2613,11 +2588,7 @@
  and PSDM
  copyup mvpdifcheck
  labels DIFF
- variants (vendor)
- labels DIFFTXT port
- variants ()
  labels DIFFTXT text
- variants *
  labels DIFFPIN port
 
  layer mvpdiff mvpdiffarea
@@ -2759,11 +2730,7 @@
  and-not DIODE
  and-not DIFFRES
  labels DIFF
- variants (vendor)
- labels DIFFTXT port
- variants ()
  labels DIFFTXT text
- variants *
  labels DIFFPIN port
 
  layer pdiffres DIFFRES
@@ -2860,12 +2827,12 @@
  layer nsd nsdarea
  labels TAP
 
- layer nsd TAP,TAPTXT
+ layer nsd TAP,TAPPIN
  and NSDM
  and-not POLY
  and-not HVI,hvcheck
  labels TAP
- labels TAPTXT text
+ labels TAPPIN port
 
  layer corenvar TAP
  and NSDM
@@ -2897,7 +2864,7 @@
  and-not POLY
  and-not HVI,hvcheck
  labels TAP
- labels TAPTXT text
+ labels TAPPIN port
 
  layer corepvar TAP
  and PSDM
@@ -2914,11 +2881,7 @@
  and HVI,hvcheck
  and mvpfetexpand
  labels DIFF
- variants (vendor)
- labels DIFFTXT port
- variants ()
  labels DIFFTXT text
- variants *
  labels DIFFPIN port
 
  layer mvpdiffres DIFFRES
@@ -2985,11 +2948,11 @@
  layer mvnsd mvnsdarea
  labels TAP
 
- layer mvnsd TAP,TAPTXT
+ layer mvnsd TAP,TAPPIN
  and NSDM
  and HVI,hvcheck
  labels TAP
- labels TAPTXT text
+ labels TAPPIN port
 
  templayer mvnsdexpand mvnsdarea
  grow 500
@@ -3010,11 +2973,11 @@
  layer mvpsd mvpsdarea
  labels DIFF
 
- layer mvpsd TAP,TAPTXT
+ layer mvpsd TAP,TAPPIN
  and PSDM
  and HVI,hvcheck
  labels TAP
- labels TAPTXT text
+ labels TAPPIN port
 
  templayer mvpsdexpand mvpsdarea
  grow 500
@@ -3114,11 +3077,7 @@
 
  layer poly polyarea
  labels POLY
- variants (vendor)
- labels POLYTXT port
- variants ()
  labels POLYTXT text
- variants *
  labels POLYPIN port
 
  # Copy (non-resistor) poly areas up for contact checks
@@ -3515,22 +3474,14 @@
  and-not LIRES,LISHORT
  and COREID
  labels LI
- variants (vendor)
- labels LITXT port
- variants ()
  labels LITXT text
- variants *
  labels LIPIN port
 
  layer locali LI,LITXT,LIPIN
  and-not LIRES,LISHORT
  and-not COREID
  labels LI
- variants (vendor)
- labels LITXT port
- variants ()
  labels LITXT text
- variants *
  labels LIPIN port
 
  layer rli LI
@@ -3551,11 +3502,7 @@
  layer m1 MET1,MET1TXT,MET1PIN
  and-not MET1RES,MET1SHORT
  labels MET1
- variants (vendor)
- labels MET1TXT port
- variants ()
  labels MET1TXT text
- variants *
  labels MET1PIN port
 
  layer rm1 MET1
@@ -3623,11 +3570,7 @@
  layer m2 MET2,MET2TXT,MET2PIN
  and-not MET2RES,MET2SHORT
  labels MET2
- variants (vendor)
- labels MET2TXT port
- variants ()
  labels MET2TXT text
- variants *
  labels MET2PIN port
 
  layer rm2 MET2
@@ -3650,11 +3593,7 @@
  layer m3 MET3,MET3TXT,MET3PIN
  and-not MET3RES,MET3SHORT
  labels MET3
- variants (vendor)
- labels MET3TXT port
- variants ()
  labels MET3TXT text
- variants *
  labels MET3PIN port
 
  layer rm3 MET3
@@ -3682,11 +3621,7 @@
  layer m4 MET4,MET4TXT,MET4PIN
  and-not MET4RES,MET4SHORT
  labels MET4
- variants (vendor)
- labels MET4TXT port
- variants ()
  labels MET4TXT text
- variants *
  labels MET4PIN port
 
  layer rm4 MET4
@@ -3699,11 +3634,7 @@
  layer m5 MET5,MET5TXT,MET5PIN
  and-not MET5RES,MET5SHORT
  labels MET5
- variants (vendor)
- labels MET5TXT port
- variants ()
  labels MET5TXT text
- variants *
  labels MET5PIN port
 
  layer rm5 MET5
@@ -3730,11 +3661,7 @@
 #ifdef REDISTRIBUTION
  layer metrdl RDL,RDLTXT,RDLPIN
  labels RDL
- variants (vendor)
- labels RDLTXT port
- variants ()
  labels RDLTXT text
- variants *
  labels RDLPIN port
 #endif
 
@@ -3943,11 +3870,7 @@
 
  layer glass GLASS,PADTXT,PADPIN
  labels GLASS
- variants (vendor)
- labels PADTXT port
- variants ()
  labels PADTXT text
- variants *
  labels PADPIN port
 
  templayer boundary BOUND,STDCELL,PADCELL
@@ -3993,10 +3916,10 @@
 
  calma NWELL 64 20
  calma DIFF 65 20
+ calma TAP  65 44
  calma DNWELL 64 18
  calma SUBCUT 81 53
  calma PWRES 64 13
- calma TAP  65 44
  # LVTN
  calma LVTN 125 44
  # HVTR
@@ -4085,22 +4008,22 @@
 #endif
  calma GLASS 76 20
 
- calma SUBTXT  64 59
- calma PADTXT  76 5
- calma DIFFTXT 65 6
- calma TAPTXT  65 5
- calma WELLTXT  64 5
- calma LITXT 67 5
- calma POLYTXT 66 5
- calma MET1TXT 68 5
- calma MET2TXT 69 5
- calma MET3TXT 70 5
+ calma SUBPIN  64 59
+ calma PADPIN  76 5
+ calma DIFFPIN 65 6
+ calma TAPPIN  65 5
+ calma WELLPIN  64 5
+ calma LIPIN 67 5
+ calma POLYPIN 66 5
+ calma MET1PIN 68 5
+ calma MET2PIN 69 5
+ calma MET3PIN 70 5
 #ifdef METAL5
- calma MET4TXT 71 5
- calma MET5TXT 72 5
+ calma MET4PIN 71 5
+ calma MET5PIN 72 5
 #endif
 #ifdef REDISTRIBUTION
- calma RDLTXT 74 5
+ calma RDLPIN 74 5
 #endif
 
  calma LIRES 67 13
@@ -4131,21 +4054,21 @@
  calma MET5SHORT 72 15
 #endif
 
- calma SUBPIN 122 16
- calma PADPIN 76 16
- calma DIFFPIN 65 16
- calma POLYPIN 66 16
- calma WELLPIN 64 16
- calma LIPIN 67 16
- calma MET1PIN 68 16
- calma MET2PIN 69 16
- calma MET3PIN 70 16
+ calma SUBTXT 122 16
+ calma PADTXT 76 16
+ calma DIFFTXT 65 16
+ calma POLYTXT 66 16
+ calma WELLTXT 64 16
+ calma LITXT 67 16
+ calma MET1TXT 68 16
+ calma MET2TXT 69 16
+ calma MET3TXT 70 16
 #ifdef METAL5
- calma MET4PIN 71 16
- calma MET5PIN 72 16
+ calma MET4TXT 71 16
+ calma MET5TXT 72 16
 #endif
 #ifdef REDISTRIBUTION
- calma RDLPIN 74 16
+ calma RDLTXT 74 16
 #endif
 
  calma BOUND 235 4